diff options
Diffstat (limited to 'gemfeed')
19 files changed, 1 insertions, 1204 deletions
diff --git a/gemfeed/2022-02-04-computer-operating-systems-i-use.md b/gemfeed/2022-02-04-computer-operating-systems-i-use.md index bf905307..ea88b859 100644 --- a/gemfeed/2022-02-04-computer-operating-systems-i-use.md +++ b/gemfeed/2022-02-04-computer-operating-systems-i-use.md @@ -153,161 +153,6 @@ So far the experience is not great but good. The main culprits are not having Go There's also the excellent Termux app in the F-Droid store, which transforms the phone into a small Linux handheld device. I am able to run all of my Linux/Unix terminal apps with it. [https://lineageos.org/](https://lineageos.org/) -# Computer operating systems I use(d) - -> Published at 2022-02-04T09:58:22+00:00; Updated at 2022-02-18 - -This is a list of Operating Systems I currently use. This list is in no particular order and also will be updated over time. The very first operating system I used was MS-DOS (mainly for games) and the very first Unix like operating system I used was SuSE Linux 5.3. My first smartphone OS was Symbian on a clunky Sony Ericsson device. - -``` - /( )` - \ \___ / | - /- _ `-/ ' - (/\/ \ \ /\ - / / | ` \ - O O ) / | - `-^--'`< ' - (_.) _ ) / - `.___/` / - `-----' / - <----. __ / __ \ - <----|====O)))==) \) /==== - <----' `--' `.__,' \ - | | - \ / - ______( (_ / \______ - (FL) ,' ,-----' | \ - `--{__________) \/ "Berkeley Unix Daemon" -``` - -## Table of Contents - -* [⇢ Computer operating systems I use(d)](#computer-operating-systems-i-used) -* [⇢ ⇢ Fedora Linux](#fedora-linux) -* [⇢ ⇢ EndeavourOS](#endeavouros) -* [⇢ ⇢ FreeBSD](#freebsd) -* [⇢ ⇢ CentOS 7](#centos-7) -* [⇢ ⇢ OpenBSD](#openbsd) -* [⇢ ⇢ macOS (proprietary)](#macos-proprietary) -* [⇢ ⇢ LineageOS (mobile)](#lineageos-mobile) -* [⇢ ⇢ Samsung's Stock Android (mobile proprietary)](#samsung-s-stock-android-mobile-proprietary) -* [⇢ ⇢ iOS (mobile proprietary)](#ios-mobile-proprietary) -* [⇢ ⇢ Other OSes](#other-oses) -* [⇢ ⇢ ⇢ InfinyTime (smartwatch)](#infinytime-smartwatch) -* [⇢ ⇢ ⇢ motionEyeOS](#motioneyeos) -* [⇢ ⇢ ⇢ Kobo OS (proprietary)](#kobo-os-proprietary) -* [⇢ ⇢ ⇢ Android TV (proprietary)](#android-tv-proprietary) -* [⇢ ⇢ Other OSes..](#other-oses) -* [⇢ ⇢ ⇢ NetBSD](#netbsd) -* [⇢ ⇢ ⇢ Other OSes in use...](#other-oses-in-use) -* [⇢ ⇢ ⇢ Other OSes not used any more...](#other-oses-not-used-any-more) -* [⇢ ⇢ ⇢ Other OSes I only had a glance at...](#other-oses-i-only-had-a-glance-at) -* [⇢ ⇢ ⇢ Other OSes which seem interesting...](#other-oses-which-seem-interesting) - -## Fedora Linux - -Fedora Linux is the operating system I use on my primary (personal) laptop. It's a ThinkPad X1 Carbon Gen. 9. Lenovo which comes along with official Lenovo Linux support. I already noticed hardware firmware updates being installed directly through Fedora from Lenovo. Fedora is a real powerhouse, cutting-edge and reasonably stable at the same time. It's baked by Red Hat. - -I also use Fedora on my Microsoft Surface Go 2 convertible tablet. Fedora works quite OK (and much better than Windows) on this device. It's also the perfect travel companion. - -I use the GNOME Desktop on my Fedora boxes. I have memorized and customized a bunch of keyboard shortcuts. But the fact that I mostly work in the terminal (with tmux) makes the Desktop environment I use only secondary. - -## EndeavourOS - -I installed EndeavourOS on my (older) ThinkPad X240 to try out an Arch based Linux distribution. I also could have installed plain Arch, but I don't see the point when there is EndeavourOS. EndeavourOS is as close as you can get to the plain Arch experience but with an easy installer. I am not saying that it's difficult to install plain Arch but it's, unless you are new to Linux and want to learn about the installation procedure, just waste of time in my humble opinion. Give Linux From Scratch a shot instead if you really want to learn about Linux. - -[https://www.linuxfromscratch.org/](https://www.linuxfromscratch.org/) - -On EndeavourOS, I use the Xfce desktop environment which feels very snappy and fast on the X240 (which I purchased back in 2014). Usually, I have my X240 standing right next to my work laptop and use it for playing music (mainly online radio streams), for personal note taking and occasional emailing and instant messaging. - -As this is a rolling Linux distribution there are a lot of software updates coming through every day. Sometimes, it only takes a minute until the next version of a package is available. Honestly, I find that a bit annoying to constantly catch up with all the updates. As for now I will live with it and/or automate it a bit more. It'll be OK if it breaks occasionally, as this is not my primary laptop anyway. - -Arch Linux and EndeavourOS are community distributions. This means, that there is no big corporation in the backyard lurking around. They won't give you the firmware updates for cutting edge hardware out of the box, though, but they are still a very good choice for hobbyist and also for older hardware where future firmware updates are less likely to happen. - -I am very happy with the package availability through the official repository and AUR. - -[https://endeavouros.com/](https://endeavouros.com/) - -## FreeBSD - -I have run FreeBSD in many occasions. Right after SuSE Linux, FreeBSD (around 4.x) was the second open source system I used in my life on regular basis. I didn't even go to university yet then I started using it :-). Also, a former employer of mine even allowed me to install FreeBSD on my main workstation (which I actually did and used it for a couple of years). - -I remember it used to be a pain bootstrapping Java for FreeBSD due to the lack of pre-compiled binary packages. You had first to enable the Linux compatibility layer, then install Linux Java, and then compile FreeBSD Java with the bootstrapped Linux Java (yes, Java is mainly programmed in C++, but for some reason compiling Java for FreeBSD also required an installation of Java). Nowadays, there are ready OpenJDK binary packages you could install. So things have improved a lot since. - -FreeBSD always had a place somewhere in my life: - -* On a Desktop PC (personal and work) -* On a Laptop -* On a webserver, FTP server, DNS server, mail server -* On a server offering FreeBSD jails to customers for rent -* As an experiment running Debian GNU/kFreeBSD inside of jails - -Debian GNU/kFreeBSD is now dead (same is my experiment)... - -[https://www.debian.org/ports/kfreebsd-gnu/](https://www.debian.org/ports/kfreebsd-gnu/) - -...but I still have saved and old uname output :-): - -``` -[root@saturn /usr/jail/serv14/etc] # jexec 21 bash -root@rhea:/ # uname -a -GNU/kFreeBSD rhea.buetow.org 8.0-RELEASE-p5 FreeBSD 8.0-RELEASE-p5 #2: Sat Nov 27 13:10:09 CET - 2010 root@saturn.buetow.org:/usr/obj/usr/srcs/freebsd.src8/src/sys/SERV10 x86 64 amd64 Intel(R) - Core(TM) i7 CPU 920 @ 2.67GHz GNU/kFreeBSD -``` - -Currently, I use FreeBSD on my personal NAS server. The server is a regular PC with a bunch of hard drives and a ZFS RAIDZ (with 4x2TB drives) + a couple of external backup drives. - -[https://www.FreeBSD.org](https://www.FreeBSD.org) - -## CentOS 7 - -While CentOS 8 is already out of support, I still use CentOS 7 (which will receive security updates until 2024). CentOS 7 runs in a cloud VM and is the home to my personal NextCloud and Wallabag installations. You probably know already NextCloud. About Wallabag: It is a great free and open source alternative to Pocket (for reading articles from the web offline later). Yes, you can pay for a Wallabag subscription, but you can also host it for free on your own server. - -[NextCloud](https://nextcloud.com) -[Wallabag](https://www.wallabag.it/en) - -The reason I use Linux and not *BSD at the moment for these services is Docker. With Docker, it's so easy-peasy to get these up and running. I will have to switch to another OS before CentOS 7 runs out of support, though. It might be CentOS Stream, Rocky Linux, or, more likely, I will use FreeBSD. On FreeBSD there isn't Docker, but what can be done is to create a self-contained Jail for each of the web-apps. - -I have been using FreeBSD Jails for LAMP stacks before I started using CentOS. The reason why I switched to CentOS (it was still CentOS 6 at that time) in the first place was, that I wanted to try out something new. - -[https://www.centos.org](https://www.centos.org) - -## OpenBSD - -I use two small OpenBSD "cloud" boxes for my "public facing internet front-ends". The services I run here are: - -* HTTP server (serving this site via https://foo.zone) -* Gemini server (serving this site via gemini://foo.zone) -* MTA server (for receiving E-Mails to my hosts) -* Authorative DNS server (for all of my "domains") -* Some personal/private git repositories (accessible only via SSH) - -OpenBSD is a complete operating system. I love it due to it's "simplicity" and "correctness" and the good documentation (I love the manual pages in particular). OpenBSD is also known for its innovations in security. I must admin, though, that most Unix like operating system would be secure enough for my personal needs and that I don't really need to use OpenBSD here. But nevertheless, I think it's the ideal operating system for what I am using it for. - -The only softwares which were not part of the base system and I had to install additionally were the Gemini server (vger) and Git, which both were available as pre-compiled OpenBSD binary packages. So, besides of these two packages, it is indeed a pretty complete operating system for my use case. - -[https://www.openbsd.org](https://www.openbsd.org) - -## macOS (proprietary) - -I have to use a MacBook Pro with macOS for work. What else can I say but that this would have never been my personal choice. At least macOS is a UNIX under the hood and comes with a decent terminal and there are plenty of terminal apps available via Brew. Some of the inner workings of macOS were actually forked from the FreeBSD project. - -[developer.apple.com: BSD in macOS/Darwin](https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/BSD/BSD.html) - -I find the macOS UI rather confusing. - -## LineageOS (mobile) - -At some point I got fed up with big tech, like Google and Samsung (or Apple, but personally I don't use Apple), spying on me. So I purchased a Google phone (a midrange Pixel phone) and installed LineageOS, a free and open source distribution of Android, on it. I don't have anything from Google installed on it (not even the play store, I install my apps from F-Droid). It's my daily driver since mid 2021 now. - -So far the experience is not great but good. The main culprits are not having Google Maps, Google Gboard and the camera app. The latter lacks some features on LineageOS (e.g. No wide angle lens support). Also, I can't use my banking apps anymore. Sometimes apps crash for no apparent reason(s) but I get around it so far. I shouldn't spend so much time on my smartphone anyway! And the whole point of switching to LineageOS was to get away of big tech and therefore I should not complain :-). What I do like is that 95% the things I used to do on a proprietary mobile phone also can be done with LineageOS. - -[Read also "The Midle Way" section of this blog post regarding smartphones.](./2021-08-01-on-being-pedantic-about-open-source.md) - -There's also the excellent Termux app in the F-Droid store, which transforms the phone into a small Linux handheld device. I am able to run all of my Linux/Unix terminal apps with it. - -[https://lineageos.org/](https://lineageos.org/) [https://termux.com/](https://termux.com/) ## Samsung's Stock Android (mobile proprietary) diff --git a/gemfeed/2022-05-27-perl-is-still-a-great-choice.md b/gemfeed/2022-05-27-perl-is-still-a-great-choice.md index 04d88016..aa856001 100644 --- a/gemfeed/2022-05-27-perl-is-still-a-great-choice.md +++ b/gemfeed/2022-05-27-perl-is-still-a-great-choice.md @@ -117,125 +117,6 @@ Here are some reasons why not to chose Perl and look for "better" alternatives: * It's possible to write large programs in Perl (make difficult things possible), but it might not be the best choice here. This also leads back to the clunky object system Perl has. You could write your projects in a procedural or functional style (Perl perfectly fits here), but OOP seems to be the gold standard for large projects nowadays. Functional programming requires a different mindset, and pure procedural programming lacks abstractions. * Apply common sense. What is the skill set your team has? What's already widely used and supported at work? Which languages comes with the best modules for the things you want to work on? Maybe Python is the answer (better machine learning modules). Maybe Perl is the better choice (better Bioinformatic modules). Perhaps Ruby is already the de-facto standard at work and everyone knows at least a little Ruby (as it happened to be at my workplace) and Ruby is "good enough" for all the tasks already. But that's not a hindrance to throw in a Perl one-liner once in a while :P. -# Perl is still a great choice - -> Published at 2022-05-27T07:50:12+01:00; Updated at 2023-01-28 - -Perl (the Practical Extraction and Report Language) is a battle-tested, mature, multi-paradigm dynamic programming language. Note that it's not called PERL, neither P.E.R.L. nor Pearl. "Perl" is the name of the language and `perl` the name of the interpreter or the interpreter command. - -Unfortunately (it makes me sad), Perl's popularity has been declining over the last years as Google trends shows: - -[](./perl-is-still-a-great-choice/googletrendsperl.jpg) - -So why is that? Once the de-facto standard super-glue language for the web nowadays seems to have a bad reputation. Often, people state: - -* Perl is a write-only language. Nobody can read Perl code. -* Perl? Isn't it abandoned? It's still at version 5! -* Why use Perl as there are better alternatives? -* Why all the sigils? It looks like an exploding ASCII factory!! - -[](./perl-is-still-a-great-choice/regular_expressions.png) - -## Table of Contents - -* [⇢ Perl is still a great choice](#perl-is-still-a-great-choice) -* [⇢ ⇢ Write-only language](#write-only-language) -* [⇢ ⇢ Is Perl abandoned?](#is-perl-abandoned) -* [⇢ ⇢ Why use Perl as there are better alternatives?](#why-use-perl-as-there-are-better-alternatives) -* [⇢ ⇢ Why all the sigils? It looks like an exploding ASCII factory!!](#why-all-the-sigils-it-looks-like-an-exploding-ascii-factory) -* [⇢ ⇢ Where do I personally still use perl?](#where-do-i-personally-still-use-perl) - -## Write-only language - -Is Perl really a write-only language? You have to understand that Perl 5 was released in 1994 (28 years ago as of this writing) and when we refer to Perl we usually mean Perl 5. That's many years, and there are many old scripts not following the modern Perl best practices (as they didn't exist yet). So yes, legacy scripts may be difficult to read. Japanese may be difficult to read too if you don't know Japanese, though. - -To come back to the question: Is Perl a write-only language? I don't think so. Like in any other language, you have to apply best practices in order to keep your code maintainable. Some other programming languages enforce best practices, but that makes these languages less expressive. Perl follows the principles "there is more than one way to do it" (aka TIMTOWDI) and "making easy things easy and hard things possible". - -Perl gives the programmer more flexibility in how to do things, and this results in a stronger learning curve than for lesser expressive languages like for example Go or Python. But, like in everything in life, common sense has to be applied. You should not take TIMTOWDI to the extreme in a production piece of code. In my personal opinion, it is also more satisfying to program in an expressive language. - -Some good books on "good" Perl I can recommend are: - -[Modern Perl](http://modernperlbooks.com) -[Higher Order Perl](https://hop.perl.plover.com) - -Due to Perl's expressiveness you will find a lot of obscure code in the interweb in form of obfuscation, fancy email signatures (JAPHs), art, polyglots and even poetry in Perl syntax. But that's not what you will find in production code. That's only people having fun with the language which is different to "getting things done". The expressiveness is a bonus. It makes the Perl programmers love Perl. - -[JAPH](https://en.wikipedia.org/wiki/Just_another_Perl_hacker) -[http://www.cpan.org/misc/japh](http://www.cpan.org/misc/japh) -[Perl Poetry](https://www.perlmonks.org/index.pl?next=20;node_id=1590) - -Even I personally have written some poetry in Perl and experimented with a polyglot script: - -[My very own Perl Poetry](./2008-06-26-perl-poetry.md) -[A Perl-Raku-C polyglot generating the Fibonacci sequence](./2014-03-24-the-fibonacci.pl.c-polyglot.md) - -This all doesn't mean that you can't "get things done" with Perl. Quite the opposite is the case. Perl is a very pragmatic programming language and is suitable very well for rapid prototyping and any kind of small to medium-sized scripts and programs. You can write large enterprise scale application in Perl too, but that wasn't the original intend of why Perl was invented (more on that later). - -## Is Perl abandoned? - -As I pointed out in the previous section, Perl 5 is around for quite some time without any new major version released. This can lead to the impression that development is not progressing and that the project is abandoned. Nothing can be further from the truth. Perl 5.000 was released in 1994 and the latest version (as of this writing) Perl 5.34.1 was released two months ago in 2022. You can check the version history on Wikipedia. You will notice releases being made regularly: - -[Perl 5 version history](https://en.wikipedia.org/wiki/Perl_5_version_history) - -As you can see, Perl 5 is under active development. I can also recommend to have a look at the following book, it summarizes all new Perl features which showed up after Perl v5.10: - -[Perl New Features by Joshua McAdams and brian d foy](https://perlschool.com/books/perl-new-features/) - -Actually, Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was officially changed to Raku in October 2019 as the differences between Perl 5 and Perl 6 were too groundbreaking. Raku would be a different topic (mostly out of scope of this blog article) but I at least wanted it to mention here. In my opinion, Raku is the "most powerful" programming language out there (I recently started learning it and intend to use it for some of my future personal programming projects): - -[The Raku Programming Language](https://raku.org) - -So it means that Perl and Raku now exist in parallel. They influence each other, but are different programming languages now. So why not just all use Raku instead of Perl? There are still a couple of reasons of why to choose Perl over Raku: - -* Many programmers already know Perl and many scripts are already written in Perl. It's possible to call Perl code from Raku (either inline or as a library) and it is also possible to auto-convert Perl code into Raku code, but that's either a workaround or involves some kind of additional work. -* Perl 5 comes with a great backwards compatibility. Perl scripts from 5.000 will generally still work on a recent version of Perl. New features usually have to be enabled via a so-called "use pragmas". For example, in order to enable sub signatures, `use signatures;` has to be specified. -* Perl is pre-installed almost everywhere. Fancy running a quick one-off script? In almost all cases, there's no need to install Perl first - it's already there on almost any Linux or *BSD or Unix or other Unix like operating system! -* Perl has been ported to "zillions" of platforms. One day I found myself on a VMS box. Perl doesn't come installed by default on VMS, but the admin installed Perl there already. The whole operating system was very strange to me, but I was able to write "shell scripts" in Perl and became productive pretty quickly on VMS without knowing almost anything about VMS :-). -* Perl is reliable. It has been proven itself "millions" of times, over and over again. Large enterprises, such as booking.com, heavily rely on Perl. Did you know that the package manager of the OpenBSD operating system is programmed in Perl, too? -* Perl is a great language to program in (given that you follow the modern best practices). Don't get confused when Perl is doing some things differently than other programming languages. - -[Perl feature pragmas](https://perldoc.perl.org/feature) -[The OpenBSD Operating System](https://www.OpenBSD.org) -[Why does OpenBSD still include Perl in its base installation?](https://news.ycombinator.com/item?id=23360338) - -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! - -[Announcing Perl 7](https://www.perl.com/article/announcing-perl-7/) -[What happened to Perl 7? (maybe have to use `use v7;`)](http://blogs.perl.org/users/psc/2022/05/what-happened-to-perl-7.html) - -> Update 2022-12-10: A reader pointed out, that Perl 7 needs to provide a big improvement to earn and keep the attention for a major version bump. - -> Update 2023-01-28: Meanwhile, I was also reading brian d foy's Perl New Feature book. It nicely presents all new features added to Perl since `v5.10`. - -[Perl New Features](https://www.leanpub.com/perl_new_features) - -## Why use Perl as there are better alternatives? - -Here, common sense must be applied. I don't believe there is anything like "the perfect" programming language. Everyone has got his preferred (or a set of preferred) programming language to chose from. All programming languages come with their own set of strengths and weaknesses. These are the strengths making Perl shine, and you (technically) don't need to bother to look for "better" alternatives: - -* Perl is better than Shell/AWK/SED scripts. There's a point where shell scripts become fairly complex. The next step-up is to switch to Perl. There are many different versions of shells and AWK and SED interpreters. Do you always know which versions (`mawk`, `nawk`, `gawk`, `sed`, `gsed`, `grep`, `ggrep`...) are currently installed? These commands aren't fully compatible to each other. However, there is only one Perl 5. Simply: Perl is faster, more powerful, more expressive than any shell script can ever be, and it is also extendible through CPAN. Perl can directly talk to databases, which shell scripts can't. -* Perl code tends to be compact so that it's much better suitable for "shell scripting" and quick "one-liners" than other languages. In my own experience: Ruby and Python code tends to blow up quickly. It doesn't mean that Ruby and Python are not suitable for this task, but I think Perl does much better. -* Perl 5 has proven itself for decades and is a very stable/robust language. It is a battle-tested and mature as something can ever become. -* Perl is the reference standard for regular expressions. Even so much that there is a PCRE library (Perl Compatible Regular Expressions) used by many other languages now. Perl fully integrates regular expression syntax into the language, which doesn't feel like an odd add-on like in most other languages. -* Perl 5 is the master of text processing (well, maybe after Raku now. But you might not have the latest Raku available everywhere). The chief objective of developing the language was for text processing, and this is where Perl (Practical extraction and report language) really shines. -* Perl is a "deep" language. That means Perl got a lot of features and syntactic sugar and magic. Depending on the perspective, this could be interpreted as a downside too. But IMHO mastery of a "deep" language brings big rewards. The code can be very compact, and it is fun to code in it. -* Perl is the only language I know which can do "taint checking". Running a script in taint mode makes Perl sanitize all external input and that's a great security feature. Ruby used to have this feature too, but it got removed (as I understand there were some problems with the implementation not completely safe and it was easier just to remove it from the language than to fix it). - -About the first point, using Perl for better "shell" scripts was actually the original intend of why Perl was invented in the first place. - -[Perl one-liners](https://nostarch.com/perloneliners) -[Mastering Regular Expressions](http://regex.info/book.html) -[Taint checking](https://en.wikipedia.org/wiki/Taint_checking) - -Here are some reasons why not to chose Perl and look for "better" alternatives: - -* If performance is your main objectives, then Perl might not be the language to use. Perl is a dynamic interpreted language, and it will generally never be as fast as statically typed languages compiled to native binaries (e.g. C/C++/Rust/Haskell) or statically typed languages run in a VM with JIT (e.g. Java) or languages like Golang (statically typed, compiled to a binary but still with a runtime in the binary). Perl might be still faster than the other language listed here in certain circumstances (e.g. faster startup time than Java or faster regular expressions engine), but usually it's not. It's not a problem of Perl, it's a problem of all dynamic scripting languages including Python, Ruby, .... -* Don't use Perl (just yet) if you want to code object-oriented. Perl supports OOP, but it feels clunky and odd to use (blessed references to any data types are objects) and doesn't support real encapsulation out of the box. There are many (many) extensions available on CPAN to make OOP better, but that's totally fragmented. The most popular extension, Moose, comes with a huge dependency tree. But wait for Perl 7. It will maybe come with a new object system (an object system inspired by Raku). -* It's possible to write large programs in Perl (make difficult things possible), but it might not be the best choice here. This also leads back to the clunky object system Perl has. You could write your projects in a procedural or functional style (Perl perfectly fits here), but OOP seems to be the gold standard for large projects nowadays. Functional programming requires a different mindset, and pure procedural programming lacks abstractions. -* Apply common sense. What is the skill set your team has? What's already widely used and supported at work? Which languages comes with the best modules for the things you want to work on? Maybe Python is the answer (better machine learning modules). Maybe Perl is the better choice (better Bioinformatic modules). Perhaps Ruby is already the de-facto standard at work and everyone knows at least a little Ruby (as it happened to be at my workplace) and Ruby is "good enough" for all the tasks already. But that's not a hindrance to throw in a Perl one-liner once in a while :P. - [Cor - Bringing modern OOP to the Perl Core](https://github.com/Ovid/Cor) ## Why all the sigils? It looks like an exploding ASCII factory!! diff --git a/gemfeed/2022-06-15-sweating-the-small-stuff.md b/gemfeed/2022-06-15-sweating-the-small-stuff.md index 7ebd4e51..43807184 100644 --- a/gemfeed/2022-06-15-sweating-the-small-stuff.md +++ b/gemfeed/2022-06-15-sweating-the-small-stuff.md @@ -56,64 +56,6 @@ Retrospectively, these have been the most popular blog posts of mine over the la [Keep it simple and stupid](./2021-09-12-keep-it-simple-and-stupid.md) [Creative universe](./2022-04-10-creative-universe.md) -# Sweating the small stuff - Tiny projects of mine - -> Published at 2022-06-15T08:47:44+01:00; Updated at 2022-06-18 - -This blog post is a bit different from the others. It consists of multiple but smaller projects worth mentioning. I got inspired by Julia Evan's "Tiny programs" blog post and the side projects of The Sephist, so I thought I would also write a blog posts listing a couple of small projects of mine: - -[Tiny programs](https://jvns.ca/blog/2022/03/08/tiny-programs/) -[The Sephist's project list](https://thesephist.com/projects/) - -Working on tiny projects is a lot of fun as you don't need to worry about any standards or code reviews and you decide how and when you work on it. There aren't restrictions regarding technologies used. You are likely the only person working on these tiny projects and that means that there is no conflict with any other developers. This is complete freedom :-). - -But before going through the tiny projects let's take a paragraph for the `1y` anniversary retrospective. - -``` - _ - /_/_ .'''. - =O(_)))) ...' `. - jgs \_\ `. .''' - `..' -``` - -## Table of Contents - -* [⇢ Sweating the small stuff - Tiny projects of mine](#sweating-the-small-stuff---tiny-projects-of-mine) -* [⇢ ⇢ `1y` anniversary](#1y-anniversary) -* [⇢ ⇢ Static photo album generator](#static-photo-album-generator) -* [⇢ ⇢ ⇢ The Irregular Ninja](#the-irregular-ninja) -* [⇢ ⇢ Random journal page extractor](#random-journal-page-extractor) -* [⇢ ⇢ Global uptime records statistic generator](#global-uptime-records-statistic-generator) -* [⇢ ⇢ Server configuration management](#server-configuration-management) -* [⇢ ⇢ Fancy SSH execution loop](#fancy-ssh-execution-loop) -* [⇢ ⇢ A KISS dynamic DNS solution](#a-kiss-dynamic-dns-solution) -* [⇢ ⇢ CPU information gatherer for Linux](#cpu-information-gatherer-for-linux) -* [⇢ ⇢ Show differences of two files over the network](#show-differences-of-two-files-over-the-network) -* [⇢ ⇢ Delay sending out E-Mails with Mutt](#delay-sending-out-e-mails-with-mutt) -* [⇢ ⇢ Graphical UI for sending text messages](#graphical-ui-for-sending-text-messages) -* [⇢ ⇢ IPv6 and IPv4 connectivity testing site](#ipv6-and-ipv4-connectivity-testing-site) -* [⇢ ⇢ List open Jira tickets in the terminal](#list-open-jira-tickets-in-the-terminal) -* [⇢ ⇢ Debian running on "your" Android phone](#debian-running-on-your-android-phone) -* [⇢ ⇢ Perl service framework](#perl-service-framework) -* [⇢ ⇢ More](#more) -* [⇢ ⇢ ⇢ Work time tracker](#work-time-tracker) -* [⇢ ⇢ ⇢ Password and document store](#password-and-document-store) -* [⇢ ⇢ ⇢ Backup procedure](#backup-procedure) -* [⇢ ⇢ konpeito.media](#konpeitomedia) - -## `1y` anniversary - -It has been one year since I started posting regularly (at least once monthly) on this blog again. It has been a lot of fun (and work) doing so for various reasons: - -* I practice English writing (I am not a native speaker). I am far from being a novelist, but this blog helps improves my writing skills. I also tried out tools like Grammarly.com and Languagetool.org and also worked with `:spell` in Vim or the LibreOffice checker. This post was checked with the `write-better` Node application. -* I force myself to "finish" some kind of project worth writing about every month. If its not a project, then its still a topic which requires research and deep thinking. Producing 2k words of text can actually be challenging. -* It's fun to rely on KISS (keep it simple & stupid) tools. E.g. use of Gemtexter and not WordPress, use of Vim instead of an office suite or a rich web editor. - -Retrospectively, these have been the most popular blog posts of mine over the last year: - -[Keep it simple and stupid](./2021-09-12-keep-it-simple-and-stupid.md) -[Creative universe](./2022-04-10-creative-universe.md) [Bash Golf series](./2021-11-29-bash-golf-part-1.md) [How to stay sane as a DevOps person](./2021-12-26-how-to-stay-sane-as-a-devops-person.md) [Perl is still a great choice](./2022-05-27-perl-is-still-a-great-choice.md) diff --git a/gemfeed/2023-04-01-never-split-the-difference-book-notes.md b/gemfeed/2023-04-01-never-split-the-difference-book-notes.md index af330d45..72a18bf9 100644 --- a/gemfeed/2023-04-01-never-split-the-difference-book-notes.md +++ b/gemfeed/2023-04-01-never-split-the-difference-book-notes.md @@ -144,152 +144,6 @@ Other book notes of mine are: [2024-07-07 "The Stoic Challenge" book notes](./2024-07-07-the-stoic-challenge-book-notes.md) [2024-05-01 "Slow Productivity" book notes](./2024-05-01-slow-productivity-book-notes.md) [2023-11-11 "Mind Management" book notes](./2023-11-11-mind-management-book-notes.md) -# "Never split the difference" book notes - -> Published at 2023-04-01T20:00:17+03:00 - -These are my personal takeaways after reading "Never split the difference" by Chris Voss. Note that the book contains much more knowledge wisdom and that these notes only contain points I personally found worth writing down. This is mainly for my own use, but you might find it helpful too. - -``` - ,.......... .........., - ,..,' '.' ',.., - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,'............., : ,.............', ', -,' '............ '.' ............' ', - '''''''''''''''''';''';'''''''''''''''''' - ''' -``` - -## Table of Contents - -* [⇢ "Never split the difference" book notes](#never-split-the-difference-book-notes) -* [⇢ ⇢ Tactical listening, spreading empathy](#tactical-listening-spreading-empathy) -* [⇢ ⇢ Mindset of discovery](#mindset-of-discovery) -* [⇢ ⇢ ⇢ More tips ](#more-tips-) -* [⇢ ⇢ "No" starts the conversation](#no-starts-the-conversation) -* [⇢ ⇢ Win-win](#win-win) -* [⇢ ⇢ On Deadlines](#on-deadlines) -* [⇢ ⇢ Analyse the opponent](#analyse-the-opponent) -* [⇢ ⇢ Use different ways of saying "no."](#use-different-ways-of-saying-no) -* [⇢ ⇢ Calibrated question](#calibrated-question) -* [⇢ ⇢ The black swan ](#the-black-swan-) -* [⇢ ⇢ More](#more) - -## Tactical listening, spreading empathy - -Be a mirror, copy each other to be comfy with each other to build up trust. Mirroring is mainly body language. A mirror is to repeat the words the other just said. Simple but effective. - -* A mirror needs space and silence between the words. At least 4 seconds. -* A mirror might be awkward to be used at first, especially with a question coupled to it. -* We fear what's different and are drawn to what is similar. - -Mirror training is like Jedi training. Simple but effective. A mirror needs space. Be silent after "you want this?" - -## Mindset of discovery - -Try to have multiple realities in your mind and use facts to distinguish between real and false. - -* Focus on what the counterpart has to say and what he needs and wants. Understanding him makes him vulnerable. -* Empathy understanding the other person from his perspective, but it does not mean agreeing with him. -* Detect and label the emotions of others for your powers. -* To be understood seems to solve all problems magically. - -Try: to put a label on someone's emotion and then be silent. Wait for the other to reveal himself. "You seem unhappy about this?" - -### More tips - -* Put on a poker face and don't show emotions. -* Slow things down. Don't be a problem solver. -* Smile while you are talking, even on the phone. Be easy and encouraging. -* Being right is not the key to successful negotiation; being mindful is. -* Be in the safe zone of empathy and acknowledge bad news. - -## "No" starts the conversation - -When the opponent starts with a "no", he feels in control and comfortable. That's why he has to start with "no". - -* "Yes" and "maybe" might be worthless, but "no" starts the conversation. -* If someone is saying "no" to you, he will be open to what you have to say next. -* "No" is not stopping the negotiation but will open up opportunities you were not thinking about before. -* Start with "no". Great negotiators seek "no" because that's when the great discussions begin. -* A "no" can be scary if you are not used to it. If your biggest fear is "no", then you can't negotiate. - -Get a "That's right" when negotiating. Don't get a "you're right". You can summarise the opponent to get a "that's right". - -## Win-win - -Win-win is a naive approach when encountering the win-lose counterpart, but always cooperate. Don't compromise, and don't split the difference. We don't compromise because it's right; we do it because it is easy. You must embrace the hard stuff; that's where the great deals are. - -## On Deadlines - -* All deadlines are imaginary. -* Most of the time, deadlines unsettle us without a good reason. -* They push a deal to a conclusion. -* They rush the counterpart to cause pressure and anxiety. - -## Analyse the opponent - -* Understand the motivation of people behind the table as well. -* Ask how affected they will be. -* Determine your and the opposite negotiation style. Accommodation, analyst, assertive. -* Treat them how they need to be treated. - -The person on the other side is never the issue; the problem is the issue. Keep this in mind to avoid emotional issues with the person and focus on the problem, not the person. The bond is essential; never create an enemy. - -## Use different ways of saying "no." - -> I had paid my rent always in time. I had positive experiences with the building and would be sad for the landlord to lose a good tenant. I am looking for a win-win agreement between us. Pulling out the research, other neighbours offer much lower prices even if your building is a better location and services. How can I effort 200 more.... - -...then put an extreme anker. - -You always have to embrace thoughtful confrontation for good negotiation and life. Don't avoid honest, clear conflict. It will give you the best deals. Compromises are mostly bad deals for both sides. Most people don't negotiate a win-win but a win-lose. Know the best and worst outcomes and what is acceptable for you. - -## Calibrated question - -Calibrated questions. Give the opponent a sense of power. Ask open-how questions to get the opponent to solve your problem and move him in your direction. Calibrated questions are the best tools. Summarise everything, and then ask, "how I am supposed to do that?". Asking for help this way with a calibrated question is a powerful tool for joint problem solving - -Being calm and respectful is essential. Without control of your emotions, it won't work. The counterpart will have no idea how constrained they are with your question. Avoid questions which get a yes or short answers. Use "why?". - -Counterparts are more involved if these are their solutions. The counterpart must answer with "that's right", not "you are right". He has to own the problem. If not, then add more why questions. - -* Tone and body language need to align with what people are saying. -* Deal with it via a labelled question. -* Liers tend to talk with "them" and "their" and not with "I". -* Also, liars tend to talk in complex sentences. - -Prepare 3 to 5 calibrated questions for your counterpart. Be curious what is really motivating the other side. You can get out the "Black Swan". - -## The black swan - -What we don't know can break our deal. Uncovering it can bring us unexpected success. You get what you ask for in this world, but you must learn to ask correctly. Reveal the black swan by asking questions. - -## More - -Establish a range at top places like corp. I get... (e.g. remote London on a project basis). Set a high salary range and not a number. Also, check on LinkedIn premium for the salaries. - -* Give an unexpected gift, e.g. show them my pet project and publicity for engineering. -* Use an odd number, which makes you seem to have thought a lot about the sum and calculated it. -* Define success and metrics for your next raise. -* What does it take to be successful here? Ask the question, and they will tell you and guide you. -* Set an extreme anker. Make the counterpart the illusion of losing something. -* Hope-based deals. Hope is not a strategy. -* Tactical empathy, listening as a martial art. It is emotional intelligence on steroids. -* Being right isn't the key to a successful negotiation, but having the correct mindset is. -* Don't shop the groceries when you are hungry. - -Slow.... it.... down.... - -E-Mail your comments to `paul@nospam.buetow.org` :-) - -Other book notes of mine are: - -[2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes](./2025-04-19-when-book-notes.md) -[2024-10-24 "Staff Engineer" book notes](./2024-10-24-staff-engineer-book-notes.md) -[2024-07-07 "The Stoic Challenge" book notes](./2024-07-07-the-stoic-challenge-book-notes.md) -[2024-05-01 "Slow Productivity" book notes](./2024-05-01-slow-productivity-book-notes.md) -[2023-11-11 "Mind Management" book notes](./2023-11-11-mind-management-book-notes.md) [2023-07-17 "Software Developmers Career Guide and Soft Skills" book notes](./2023-07-17-career-guide-and-soft-skills-book-notes.md) [2023-05-06 "The Obstacle is the Way" book notes](./2023-05-06-the-obstacle-is-the-way-book-notes.md) [2023-04-01 "Never split the difference" book notes (You are currently reading this)](./2023-04-01-never-split-the-difference-book-notes.md) diff --git a/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.md b/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.md index 0a562d1d..1b21560c 100644 --- a/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.md +++ b/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.md @@ -101,109 +101,6 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: [2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes](./2025-04-19-when-book-notes.md) -# "The Obstacle is the Way" book notes - -> Published at 2023-05-06T17:23:16+03:00 - -These are my personal takeaways after reading "The Obstacle Is the Way" by Ryan Holiday. This is mainly for my own use, but you might find it helpful too. - -``` - ,.......... .........., - ,..,' '.' ',.., - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,'............., : ,.............', ', -,' '............ '.' ............' ', - '''''''''''''''''';''';'''''''''''''''''' - ''' -``` - -## Table of Contents - -* [⇢ "The Obstacle is the Way" book notes](#the-obstacle-is-the-way-book-notes) -* [⇢ ⇢ Reframe your perspective](#reframe-your-perspective) -* [⇢ ⇢ Embrace rationality](#embrace-rationality) -* [⇢ ⇢ Control your response](#control-your-response) -* [⇢ ⇢ Practice emotional and physical resilience](#practice-emotional-and-physical-resilience) -* [⇢ ⇢ Persistence and patience](#persistence-and-patience) -* [⇢ ⇢ Embrace failure](#embrace-failure) -* [⇢ ⇢ Be adaptable](#be-adaptable) -* [⇢ ⇢ Embrace non-action](#embrace-non-action) -* [⇢ ⇢ Leverage crisis](#leverage-crisis) -* [⇢ ⇢ Build your inner citadel](#build-your-inner-citadel) -* [⇢ ⇢ Love everything that happens](#love-everything-that-happens) -* [⇢ ⇢ Conclusion](#conclusion) - -"The obstacle is the way" is a powerful statement that encapsulates the wisdom of turning challenges into opportunities for growth and success. We will explore using obstacles as fuel, transforming weaknesses into strengths, and adopting a mindset that allows us to be creative and persistent in the face of adversity. - -## Reframe your perspective - -The obstacle in your path can become your path to success. Instead of being paralyzed by challenges, see them as opportunities to learn and grow. Remember, the things that hurt us often instruct us. - -We spend a lot of time trying to get things perfect and look at the rules, but what matters is that it works; it doesn't need to be after the book. Focus on results rather than on beautiful methods. In Jujitsu, it does matter that you bring your opponent down, but not how. There are many ways from point A to point B; it doesn't need to be a straight line. So many try to find the best solution but need to catch up on what is in Infront of them. Think progress and not perfection. - -Don't always try to use the front door; a backdoor could open. It's nonsense. Don't fight the judo master with judo. Non-action can be action, exposing the weaknesses of others. - -## Embrace rationality - -It is a superpower to see things rationally when others are fearful. Focus on the reality of the situation without letting emotions, such as anger, cloud your judgment. This ability will enable you to make better decisions in adversity. Ability to see things what they really are. E.g. wine is old fermented grapes, or other people behaving like animals during a fight. Show the middle finger if someone persists on the stupid rules occasionally. - -## Control your response - -You can choose how you respond to obstacles. Focus on what you can control, and don't let yourself feel harmed by external circumstances. Remember, you decide how things affect you; nobody else does. Choose to feel good in response to any situation. Embrace the challenges and obstacles that come your way, as they are opportunities for growth and learning. - -## Practice emotional and physical resilience - -Martial artists know the importance of developing physical and emotional strength. Cultivate the art of not panicking; it will help you avoid making mistakes during high-pressure situations. - -Focus on what you can control. Don't choose to feel harmed, and then you won't be harmed. I decide things that affect me; nobody else does. E.g., in prison, your mind stays your own. Don't ignore fear but explain it away, have a different view. - -## Persistence and patience - -Practice persistence and patience in your pursuits. Focus on the process rather than the prize and take one step at a time. Remember, the journey is about finishing tasks, projects, or workouts to the best of your ability. Never be in a hurry and never be desperate. There is no reason to be rushed; there are all in the long haul. Follow the process and not the price. Take it one step at a time. The process is about finishing (workout, task, project, etc.). - -## Embrace failure - -Failure is a natural part of life and can make us stronger. Treat defeat as a stepping stone to success and education. What is defeat? The first step to education. Failure makes you stronger. If we do our best, we can be proud of it, regardless of the result. Do your job, but do it right. Only an asshole thinks he is too good at the things he does. Also, asking for forgiveness is easier than asking for permission. - -## Be adaptable - -There are many ways to achieve your goals; sometimes, unconventional methods are necessary. Feel free to break the rules or go off the beaten path if it will lead to better results. Transform weaknesses into strengths. We have a choice of how to respond to things. It's not about being positive but to be creative. Aim high, but stuff will happen; E.g., surprises will always happen. - -## Embrace non-action - -We constantly push to the next thing. Sometimes the best course of action is standing still or even going backwards. Obstacles might resolve by themselves. Or going sideways. Sometimes, the best action is to stand still, go sideways, or even go backwards. Obstacles may resolve themselves or present new opportunities if you're patient and observant. People always want your input before you have all the facts. They want you to play after their rules. The question is, do you let them? The English call it the cool head. Being in control of Stress; requires practice. Appear, the absence of fear (Greek). When all others do it one way, it does not mean it is the correct or best practice. - -## Leverage crisis - -In times of crisis, seize the chance to do things never done before. Great people use negative situations to their advantage and become the most effective in challenging circumstances. - -The art of not panicking; otherwise, you will make mistakes. When overs are shocked, you know which way to take due to your thinking of the problem at Hand. A crisis gives you a chance to do things which never done before. Ordinary people shy from negative situations; great people use these for their benefit and are the most effective. The obstacle is not just turned upside down but used as a catapult. - -Be prepared for nothing to work. Problems are an opportunity to do your best, not to do miracles. Always manage your expectations. It will suck, but it will be ok. Be prepared to begin from the beginning. Be cheerful and eagerly work on the next obstacle. Each time you become better. Life is not a sprint but a marathon. After each obstacle lies another obstacle, there won't be anything without obstacles. Passing one means you are ready for the next. - -## Build your inner citadel - -Develop your inner strength during good times so you can rely on it in bad times. Always prepare for adversity and face it with calmness and resilience. Be humble enough that things which happen will happen. Build your inner citadel. In good times strengthen it. In bad times rely on it. - -We should always prepare for things to get tough. Your house burns down: no worries, we eliminated much rubbish. Imagine what can go wrong before things go wrong. We are prepared for adversity; it's other people who aren't. Phil Jackson's hip problem example. To receive unexpected benefits, you must first accept the unexpected obstacles. Meditate on death. It's a universal obstacle. Use it as a reminder to do your best. - -## Love everything that happens - -Turn an obstacle the other way around for your benefit. Use it at fuel. It's simple but challenging. Most are paralyzed instead. The obstacle in the path becomes the path. Obstacles are neither good nor bad. The things which hurt, instruct. - -Should I hate people who hate me? That's their problem and not mine. Be always calm and relaxed during the fight. The story of the battle is the story of the smile. Cheerfulness in all situations, especially the bad ones. Love for everything that happens; if it happens, it was meant to happen. We can choose how we react to things, so why not choose to feel good? I love everything that happens. You must never lower yourself to the person you don't like. - -## Conclusion - -Life is a marathon, not a sprint. Each obstacle we overcome prepares us for the next one. Remember, the obstacle is not just a barrier to be turned upside down; it can also be used as a catapult to propel us forward. By embracing challenges and using them as opportunities for growth, we become stronger, more adaptable, and, ultimately, more successful. - -E-Mail your comments to `paul@nospam.buetow.org` :-) - -Other book notes of mine are: - -[2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes](./2025-04-19-when-book-notes.md) [2024-10-24 "Staff Engineer" book notes](./2024-10-24-staff-engineer-book-notes.md) [2024-07-07 "The Stoic Challenge" book notes](./2024-07-07-the-stoic-challenge-book-notes.md) [2024-05-01 "Slow Productivity" book notes](./2024-05-01-slow-productivity-book-notes.md) diff --git a/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.md b/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.md index 335f5f9b..3ebc3eae 100644 --- a/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.md +++ b/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.md @@ -24,32 +24,6 @@ With compatibility with the Nagios Check API, Gogios offers a simple yet effecti * [⇢ ⇢ ⇢ MTA](#mta) * [⇢ ⇢ ⇢ Configuring Gogios](#configuring-gogios) * [⇢ ⇢ Running Gogios](#running-gogios) -* # KISS server monitoring with Gogios - -> Published at 2023-06-01T21:10:17+03:00 - -Gogios is a minimalistic and easy-to-use monitoring tool I programmed in Google Go designed specifically for small-scale self-hosted servers and virtual machines. The primary purpose of Gogios is to monitor my personal server infrastructure for `foo.zone`, my MTAs, my authoritative DNS servers, my NextCloud, Wallabag and Anki sync server installations, etc. - -With compatibility with the Nagios Check API, Gogios offers a simple yet effective solution to monitor a limited number of resources. In theory, Gogios scales to a couple of thousand checks, though. You can clone it from Codeberg here: - -[https://codeberg.org/snonux/gogios](https://codeberg.org/snonux/gogios) - -[](./kiss-server-monitoring-with-gogios/gogios-small.png) - -## Table of Contents - -* [⇢ KISS server monitoring with Gogios](#kiss-server-monitoring-with-gogios) -* [⇢ ⇢ Motivation](#motivation) -* [⇢ ⇢ Features](#features) -* [⇢ ⇢ Example alert](#example-alert) -* [⇢ ⇢ Installation](#installation) -* [⇢ ⇢ ⇢ Compiling and installing Gogios](#compiling-and-installing-gogios) -* [⇢ ⇢ ⇢ Setting up user, group and directories](#setting-up-user-group-and-directories) -* [⇢ ⇢ ⇢ Installing monitoring plugins](#installing-monitoring-plugins) -* [⇢ ⇢ Configuration](#configuration) -* [⇢ ⇢ ⇢ MTA](#mta) -* [⇢ ⇢ ⇢ Configuring Gogios](#configuring-gogios) -* [⇢ ⇢ Running Gogios](#running-gogios) * [⇢ ⇢ ⇢ High-availability](#high-availability) * [⇢ ⇢ Conclusion:](#conclusion) diff --git a/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.md b/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.md index 3a8806a6..0d6827b8 100644 --- a/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.md +++ b/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.md @@ -34,42 +34,6 @@ These notes are of two books by "John Sommez" I found helpful. I also added some * [⇢ ⇢ Mental health](#mental-health) * [⇢ ⇢ Physical health](#physical-health) * [⇢ ⇢ No drama](#no-drama) -* # "Software Developmers Career Guide and Soft Skills" book notes - -> Published at 2023-07-17T04:56:20+03:00 - -These notes are of two books by "John Sommez" I found helpful. I also added some of my own keypoints to it. These notes are mainly for my own use, but you might find them helpful, too. - -``` - ,.......... .........., - ,..,' '.' ',.., - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,'............., : ,.............', ', -,' '............ '.' ............' ', - '''''''''''''''''';''';'''''''''''''''''' - ''' -``` - -## Table of Contents - -* [⇢ "Software Developmers Career Guide and Soft Skills" book notes](#software-developmers-career-guide-and-soft-skills-book-notes) -* [⇢ ⇢ Improve](#improve) -* [⇢ ⇢ ⇢ Always learn new things](#always-learn-new-things) -* [⇢ ⇢ ⇢ Set goals](#set-goals) -* [⇢ ⇢ ⇢ Ratings](#ratings) -* [⇢ ⇢ ⇢ Promotions](#promotions) -* [⇢ ⇢ ⇢ Finish things](#finish-things) -* [⇢ ⇢ Expand the empire](#expand-the-empire) -* [⇢ ⇢ Be pragmatic and also manage your time](#be-pragmatic-and-also-manage-your-time) -* [⇢ ⇢ ⇢ The quota system](#the-quota-system) -* [⇢ ⇢ ⇢ Don't waste time](#don-t-waste-time) -* [⇢ ⇢ ⇢ Habits](#habits) -* [⇢ Work-life balance](#work-life-balance) -* [⇢ ⇢ Mental health](#mental-health) -* [⇢ ⇢ Physical health](#physical-health) -* [⇢ ⇢ No drama](#no-drama) * [⇢ Personal brand](#personal-brand) * [⇢ ⇢ Market yourself](#market-yourself) * [⇢ ⇢ Networking](#networking) diff --git a/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.md b/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.md index 6c266d03..a7c8bfae 100644 --- a/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.md +++ b/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.md @@ -109,117 +109,6 @@ Other related posts are: [2024-10-02 Gemtexter 3.0.0 - Let's Gemtext again⁴](./2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.md) [2023-07-21 Gemtexter 2.1.0 - Let's Gemtext again³ (You are currently reading this)](./2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.md) [2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again²](./2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.md) -# Gemtexter 2.1.0 - Let's Gemtext again³ - -> Published at 2023-07-21T10:19:31+03:00 - -I proudly announce that I've released Gemtexter version `2.1.0`. What is Gemtexter? It's my minimalist static site generator for Gemini Gemtext, HTML and Markdown, written in GNU Bash. - -[https://codeberg.org/snonux/gemtexter](https://codeberg.org/snonux/gemtexter) - -``` --=[ typewriters ]=- 1/98 - .-------. - .-------. _|~~ ~~ |_ - _|~~ ~~ |_ .-------. =(_|_______|_) - =(_|_______|_)= _|~~ ~~ |_ |:::::::::| - |:::::::::| =(_|_______|_) |:::::::[]| - |:::::::[]| |:::::::::| |o=======.| - |o=======.| |:::::::[]| `"""""""""` - jgs `"""""""""` |o=======.| - mod. by Paul Buetow `"""""""""` -``` - -## Table of Contents - -* [⇢ Gemtexter 2.1.0 - Let's Gemtext again³](#gemtexter-210---let-s-gemtext-again) -* [⇢ ⇢ Why Bash?](#why-bash) -* [⇢ ⇢ Switch to GPL3 license](#switch-to-gpl3-license) -* [⇢ ⇢ Source code highlighting support](#source-code-highlighting-support) -* [⇢ ⇢ HTML exact variant](#html-exact-variant) -* [⇢ ⇢ Use of Hack webfont by default](#use-of-hack-webfont-by-default) -* [⇢ ⇢ HTML Mastodon verification support](#html-mastodon-verification-support) -* [⇢ ⇢ More](#more) - -## Why Bash? - -This project is too complex for a Bash script. Writing it in Bash was to try out how maintainable a "larger" Bash script could be. It's still pretty maintainable and helps me try new Bash tricks here and then! - -Let's list what's new! - -## Switch to GPL3 license - -Many (almost all) of the tools and commands (GNU Bash, GMU Sed, GNU Date, GNU Grep, GNU Source Highlight) used by `Gemtexter` are licensed under the GPL anyway. So why not use the same? This was an easy switch, as I was the only code contributor so far! - -## Source code highlighting support - -The HTML output now supports source code highlighting, which is pretty neat if your site is about programming. The requirement is to have the `source-highlight` command, which is GNU Source Highlight, to be installed. Once done, you can annotate a bare block with the language to be highlighted. E.g.: - -``` - ```bash - if [ -n "$foo" ]; then - echo "$foo" - fi - ``` -``` - -The result will look like this (you can see the code highlighting only in the Web version, not in the Geminispace version of this site): - -```bash -if [ -n "$foo" ]; then - echo "$foo" -fi -``` - -Please run `source-highlight --lang-list` for a list of all supported languages. - -## HTML exact variant - -Gemtexter is there to convert your Gemini Capsule into other formats, such as HTML and Markdown. An HTML exact variant can now be enabled in the `gemtexter.conf` by adding the line `declare -rx HTML_VARIANT=exact`. The HTML/CSS output changed to reflect a more exact Gemtext appearance and to respect the same spacing as you would see in the Geminispace. - -## Use of Hack webfont by default - -The Hack web font is a typeface designed explicitly for source code. It's a derivative of the Bitstream Vera and DejaVu Mono lineage, but it features many improvements and refinements that make it better suited to reading and writing code. - -The font has distinctive glyphs for every character, which helps to reduce confusion between similar-looking characters. For example, the characters "0" (zero), "O" (capital o), and "o" (lowercase o), or "1" (one), "l" (lowercase L), and "I" (capital i) all have distinct looks in Hack, making it easier to read and understand code at a glance. - -Hack is open-source and freely available for use and modification under the MIT License. - -## HTML Mastodon verification support - -The following link explains how URL verification works in Mastodon: - -[https://joinmastodon.org/verification](https://joinmastodon.org/verification) - -So we have to hyperlink to the Mastodon profile to be verified and also to include a `rel='me'` into the tag. In order to do that add this to the `gemtexter.conf` (replace the URI to your Mastodon profile accordingly): - -```bash -declare -xr MASTODON_URI='https://fosstodon.org/@snonux' -``` - -and add the following into your `index.gmi`: - -``` -[Me at Mastodon](https://fosstodon.org/@snonux) -``` - -The resulting line in the HTML output will be something as follows: - -```html -<a href='https://fosstodon.org/@snonux' rel='me'>Me at Mastodon</a> -``` - -## More - -Additionally, there were a couple of bug fixes, refactorings and overall improvements in the documentation made. - -E-Mail your comments to `paul@nospam.buetow.org` :-) - -Other related posts are: - -[2024-10-02 Gemtexter 3.0.0 - Let's Gemtext again⁴](./2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.md) -[2023-07-21 Gemtexter 2.1.0 - Let's Gemtext again³ (You are currently reading this)](./2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.md) -[2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again²](./2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.md) [2022-08-27 Gemtexter 1.1.0 - Let's Gemtext again](./2022-08-27-gemtexter-1.1.0-lets-gemtext-again.md) [2021-06-05 Gemtexter - One Bash script to rule it all](./2021-06-05-gemtexter-one-bash-script-to-rule-it-all.md) [2021-04-24 Welcome to the Geminispace](./2021-04-24-welcome-to-the-geminispace.md) diff --git a/gemfeed/2023-09-25-dtail-usage-examples.md b/gemfeed/2023-09-25-dtail-usage-examples.md index 0b289eed..8df87a93 100644 --- a/gemfeed/2023-09-25-dtail-usage-examples.md +++ b/gemfeed/2023-09-25-dtail-usage-examples.md @@ -80,88 +80,6 @@ To run ad-hoc map-reduce aggregations on newly written log lines you must add a Beware: For map-reduce queries to work, you have to ensure that DTail supports your log format. Check out the documentaiton of the DTail query language and the DTail log formats on the DTail homepage for more information. -# DTail usage examples - -> Published at 2023-09-25T14:57:42+03:00 - -Hey there. As I am pretty busy this month personally (I am now on Paternity Leave) and as I still want to post once monthly, the blog post of this month will only be some DTail usage examples. They're from the DTail documentation, but not all readers of my blog may be aware of those! - -DTail is a distributed DevOps tool for tailing, grepping, catting logs and other text files on many remote machines at once which I programmed in Go. - -[https://dtail.dev](https://dtail.dev) - -``` - ,_---~~~~~----._ - _,,_,*^____ _____``*g*\"*, - ____ _____ _ _ / __/ /' ^. / \ ^@q f - | _ \_ _|_ _(_) | @f | ((@| |@)) l 0 _/ - | | | || |/ _` | | | \`/ \~____ / __ \_____/ \ - | |_| || | (_| | | | | _l__l_ I - |____/ |_|\__,_|_|_| } [______] I - ] | | | | - ] ~ ~ | - | Let's tail those logs! | - | | -``` - -## Table of Contents - -* [⇢ DTail usage examples](#dtail-usage-examples) -* [⇢ ⇢ Commands](#commands) -* [⇢ ⇢ Following logs](#following-logs) -* [⇢ ⇢ Aggregating logs](#aggregating-logs) -* [⇢ ⇢ How to use `dcat`](#how-to-use-dcat) -* [⇢ ⇢ How to use `dgrep`](#how-to-use-dgrep) -* [⇢ ⇢ How to use `dmap`](#how-to-use-dmap) -* [⇢ ⇢ How to use the DTail serverless mode](#how-to-use-the-dtail-serverless-mode) -* [⇢ ⇢ ⇢ Serverless map-reduce query](#serverless-map-reduce-query) -* [⇢ ⇢ ⇢ Aggregating CSV files](#aggregating-csv-files) -* [⇢ ⇢ ⇢ Other serverless commands](#other-serverless-commands) - -## Commands - -DTail consists out of a server and several client binaries. In this post, I am showcasing their use! - -* Use `dtail` to follow logs -* Use `dtail` to aggregate logs while they are followed -* Use `dcat` to display logs and other text files already written -* Use `dgrep` to grep (search) logs and other text files already written -* Use `dmap` to aggregate logs and other text files already written -* `dserver` is the DTail server, where all the clients can connect to - -## Following logs - -The following example demonstrates how to follow logs of several servers at once. The server list is provided as a flat text file. The example filters all records containing the string `INFO`. Any other Go compatible regular expression can also be used instead of `INFO`. - -```shell -% dtail --servers serverlist.txt --grep INFO --files "/var/log/dserver/*.log" -``` - -Hint: you can also provide a comma separated server list, e.g.: `servers server1.example.org,server2.example.org:PORT,...` - -[](./dtail-usage-examples/dtail.gif) - -> Hint: You can also use the shorthand version (omitting the `--files`) - -```shell -% dtail --servers serverlist.txt --grep INFO "/var/log/dserver/*.log" -``` - -## Aggregating logs - -To run ad-hoc map-reduce aggregations on newly written log lines you must add a query. The following example follows all remote log lines and prints out every few seconds the result to standard output. - -> Hint: To run a map-reduce query across log lines written in the past, please use the `dmap` command instead. - -```shell -% dtail --servers serverlist.txt \ - --files '/var/log/dserver/*.log' \ - --query 'from STATS select sum($goroutines),sum($cgocalls), - last($time),max(lifetimeConnections)' -``` - -Beware: For map-reduce queries to work, you have to ensure that DTail supports your log format. Check out the documentaiton of the DTail query language and the DTail log formats on the DTail homepage for more information. - [](./dtail-usage-examples/dtail-map.gif) > Hint: You can also use the shorthand version: diff --git a/gemfeed/2023-11-11-mind-management-book-notes.md b/gemfeed/2023-11-11-mind-management-book-notes.md index a1624cb2..821a1efc 100644 --- a/gemfeed/2023-11-11-mind-management-book-notes.md +++ b/gemfeed/2023-11-11-mind-management-book-notes.md @@ -110,118 +110,6 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -# "Mind Management" book notes - -> Published at 2023-11-11T22:21:47+02:00 - -These are my personal takeaways after reading "Mind Management" by David Kadavy. Note that the book contains much more knowledge wisdom and that these notes only contain points I personally found worth writing down. This is mainly for my own use, but you might find it helpful too. - -``` - ,.......... .........., - ,..,' '.' ',.., - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,'............., : ,.............', ', -,' '............ '.' ............' ', - '''''''''''''''''';''';'''''''''''''''''' - ''' -``` - -## Table of Contents - -* [⇢ "Mind Management" book notes](#mind-management-book-notes) -* [⇢ ⇢ It's not about time management](#it-s-not-about-time-management) -* [⇢ ⇢ Empty slots in the calendar](#empty-slots-in-the-calendar) -* [⇢ ⇢ When you safe time...](#when-you-safe-time) -* [⇢ ⇢ Follow your mood](#follow-your-mood) -* [⇢ ⇢ Boosting creativity](#boosting-creativity) -* [⇢ ⇢ The right mood for the task at hand](#the-right-mood-for-the-task-at-hand) -* [⇢ ⇢ Creativity hacks](#creativity-hacks) -* [⇢ ⇢ Planning and strategizing](#planning-and-strategizing) -* [⇢ ⇢ Fake it until you make it. ](#fake-it-until-you-make-it-) - -## It's not about time management - -Productivity isn't about time management - it's about mind management. When you put a lot of effort into something, there are: - -* The point of diminishing returns -* The point of negative return - -## Empty slots in the calendar - -If we do more things in less time and use all possible slots, speed read, etc., we are more productive. But in reality, that's not the entire truth. You also exchange one thing against everything else.... You cut out too much from your actual life. - -## When you safe time... - -...keep it. - -* stare out of the window; that's good for you. -* Creative thinking needs space. It will pay dividends tomorrow. -* You will be rewarded with the "Eureka effect" - a sudden new insight. - -## Follow your mood - -Ask yourself: what is my mood now? We never have the energy to do anything, so the better strategy is to follow your current mode and energy. E.g.: - -* Didn't sleep enough today? Then, do simple, non-demanding tasks at work -* Had a great sleep, and there is even time before work starts? Pull in a workout... - -## Boosting creativity - -The morning without coffee is a gift for creativity, but you often get distracted. Minimize distractions, too. I have no window to stare out but a plain blank wall. - -* The busier you are, the less creative you will be. -* Event time (divergent thinking) vs clock time (convergent thinking) -* Don't race with time but walk alongside it as rough time lines. -* Don't judge every day after the harvest, but the seed you lay - -## The right mood for the task at hand - -We need to try many different combinations. Limiting ourselves and trying too hard makes us frustrated and burn out. Creativity requires many iterations. - -I can only work according to my available brain power. - -I can also change my mood according to what needs improvement. Just imagine the last time you were in that mood and then try to get into it. It can take several tries to hit a working mood. Try to replicate that mental state. This can also be by location or by another habit, e.g. by a beer. - -Once you are in a mental state, don't try to change it. It will take a while for your brain to switch to a completely different state. - -Week of want. For a week, only do what you want and not what you must do. Your ideas will get much more expansive. - -It gives you pleasure and is in a good mood. This increases creativity if you do what you want to do. - -## Creativity hacks - -* Coffee can cause anxiety. -* Take phentermine with coffee to take off the edge and have a relaxed focus -* Green tea, which tastes sweet plus supplement boost. -* Also wine. But be careful with alcohol. Don't drink a whole bottle. -* Have a machine without distractions and internet access for writing. -* Go to open spaces for creativity. -* Go to closed spaces for polishing. - -## Planning and strategizing - -Minds work better in sprints and not in marathons. Have a weekly plan, not a daily one. - -* Alternating incubation to avoid blocks. -* Build on systems that use chaos for growth, e.g. unplanned disasters. -* Things don't go after the plan is the plan. Be anti-fragile. - -Organize by mental state. In the time management context, the mental state doesn't exist. You schedule as many things as possible by project. In the mind management context, mental state is everything. You could prepare by mental state and not by assignment. - -You could schedule exploratory tasks when you are under grief. Sound systems should create slack for creativity. Plan only for a few minutes. - -## Fake it until you make it. - -* E.g. act calm if you want to be calm. -* Talk slowly and deepen your voice a bit to appear more confident. You will also become more confident. -* Also, use power positions for better confidence. - -E-Mail your comments to `paul@nospam.buetow.org` :-) - -Other book notes of mine are: - [2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes](./2025-04-19-when-book-notes.md) [2024-10-24 "Staff Engineer" book notes](./2024-10-24-staff-engineer-book-notes.md) [2024-07-07 "The Stoic Challenge" book notes](./2024-07-07-the-stoic-challenge-book-notes.md) diff --git a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.md b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.md index c9366467..c5cc74ca 100644 --- a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.md +++ b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.md @@ -55,63 +55,6 @@ Other *BSD related posts are: [2025-02-01 f3s: Kubernetes with FreeBSD - Part 3: Protecting from power cuts](./2025-02-01-f3s-kubernetes-with-freebsd-part-3.md) [2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation](./2024-12-03-f3s-kubernetes-with-freebsd-part-2.md) [2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage](./2024-11-17-f3s-kubernetes-with-freebsd-part-1.md) -# One reason why I love OpenBSD - -> Published at 2024-01-13T22:55:33+02:00 - -``` - FISHKISSFISHKIS - SFISHKISSFISHKISSFISH F - ISHK ISSFISHKISSFISHKISS FI - SHKISS FISHKISSFISHKISSFISS FIS -HKISSFISHKISSFISHKISSFISHKISSFISH KISS - FISHKISSFISHKISSFISHKISSFISHKISS FISHK - SSFISHKISSFISHKISSFISHKISSFISHKISSF - ISHKISSFISHKISSFISHKISSFISHKISSF ISHKI -SSFISHKISSFISHKISSFISHKISSFISHKIS SFIS - HKISSFISHKISSFISHKISSFISHKISS FIS - HKISSFISHKISSFISHKISSFISHK IS - SFISHKISSFISHKISSFISH K - ISSFISHKISSFISHK -``` - -I just upgraded my OpenBSD's from `7.3` to `7.4` by following the unattended upgrade guide: - -[https://www.openbsd.org/faq/upgrade74.html](https://www.openbsd.org/faq/upgrade74.html) - -```shell -$ doas installboot sd0 # Update the bootloader (not for every upgrade required) -$ doas sysupgrade # Update all binaries (including Kernel) -``` - -`sysupgrade` downloaded and upgraded to the next release and rebooted the system. After the reboot, I run: - -```shell -$ doas sysmerge # Update system configuration files -$ doas pkg_add -u # Update all packages -$ doas reboot # Just in case, reboot one more time -``` - -That's it! Took me around 5 minutes in total! No issues, only these few comands, only 5 minutes! It just works! No problems, no conflicts, no tons (actually none) config file merge conflicts. - -I followed the same procedure the previous times and never encountered any difficulties with any OpenBSD upgrades. - -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! - -[The OpenBSD Project](https://www.openbsd.org) - -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)! - -[https://openbsd.amsterdam](https://openbsd.amsterdam) - -E-Mail your comments to `paul@nospam.buetow.org` :-) - -Other *BSD related posts are: - -[2025-04-05 f3s: Kubernetes with FreeBSD - Part 4: Rocky Linux Bhyve VMs](./2025-04-05-f3s-kubernetes-with-freebsd-part-4.md) -[2025-02-01 f3s: Kubernetes with FreeBSD - Part 3: Protecting from power cuts](./2025-02-01-f3s-kubernetes-with-freebsd-part-3.md) -[2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation](./2024-12-03-f3s-kubernetes-with-freebsd-part-2.md) -[2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage](./2024-11-17-f3s-kubernetes-with-freebsd-part-1.md) [2024-04-01 KISS high-availability with OpenBSD](./2024-04-01-KISS-high-availability-with-OpenBSD.md) [2024-01-13 One reason why I love OpenBSD (You are currently reading this)](./2024-01-13-one-reason-why-i-love-openbsd.md) [2022-10-30 Installing DTail on OpenBSD](./2022-10-30-installing-dtail-on-openbsd.md) diff --git a/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.md b/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.md index 8ae7f41b..f78a7d51 100644 --- a/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.md +++ b/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.md @@ -16,24 +16,6 @@ So, I migrated all of my Docker-based self-hosted services to AWS. Usually, I am * [⇢ ⇢ The new `*.buetow.cloud` way](#the-new-buetowcloud-way) * [⇢ ⇢ The container apps](#the-container-apps) * [⇢ ⇢ ⇢ `flux.buetow.cloud`](#fluxbuetowcloud) -* # From `babylon5.buetow.org` to `*.buetow.cloud` - -> Published at 2024-02-04T00:50:50+02:00 - -Recently, my employer sent me to a week-long AWS course. After the course, there wasn't any hands-on project I could dive into immediately, so I moved parts of my personal infrastructure to AWS to level up a bit through practical hands-on. - -So, I migrated all of my Docker-based self-hosted services to AWS. Usually, I am not a big fan of big cloud providers and instead use smaller hosters or indie providers and self-made solutions. However, I also must go with the times and try out technologies currently hot on the job market. I don't want to become the old man who yells at cloud :D - -[](./from-.org-to-.cloud/old-man-yells-at-cloud.jpg) - -## Table of Contents - -* [⇢ From `babylon5.buetow.org` to `*.buetow.cloud`](#from-babylon5buetoworg-to-buetowcloud) -* [⇢ ⇢ The old `*.buetow.org` way](#the-old-buetoworg-way) -* [⇢ ⇢ I kept my `buetow.org` OpenBSD boxes alive](#i-kept-my-buetoworg-openbsd-boxes-alive) -* [⇢ ⇢ The new `*.buetow.cloud` way](#the-new-buetowcloud-way) -* [⇢ ⇢ The container apps](#the-container-apps) -* [⇢ ⇢ ⇢ `flux.buetow.cloud`](#fluxbuetowcloud) * [⇢ ⇢ ⇢ `audiobookshelf.buetow.cloud`](#audiobookshelfbuetowcloud) * [⇢ ⇢ ⇢ `syncthing.buetow.cloud`](#syncthingbuetowcloud) * [⇢ ⇢ ⇢ `radicale.buetow.cloud`](#radicalebuetowcloud) diff --git a/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.md b/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.md index 78e01e17..1f660405 100644 --- a/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.md +++ b/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.md @@ -27,35 +27,6 @@ There's no need to navigate complex menus or deal with sync issues. I jot down m With Syncthing, the note files are then synchronised to my home computer to my `~/Notes` directory. From there, a small glue Raku script adds them to my Taskwarrior DB so that I can process them later (e.g. take action on that one Idea I had). That then will delete the original note files from my computer and also (through Syncthing) from my phone. [https://syncthing.net](https://syncthing.net) -# A fine Fyne Android app for quickly logging ideas programmed in Go - -> Published at 2024-03-03T00:07:21+02:00 - -I am an ideas person. I find myself frequently somewhere on the streets with an idea in my head but no paper journal noting it down. - -I have tried many note apps for my Android (I use GrapheneOS) phone. Most of them either don't do what I want, are proprietary software, require Google Play services (I have the main profile on my phone de-googled) or are too bloated. I was never into mobile app development, as I'm not too fond of the complexity of the developer toolchains. I don't want to use Android Studio (as a NeoVim user), and I don't want to use Java or Kotlin. I want to use a language I know (and like) for mobile app development. Go would be one of those languages. - -[](a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang/logo-small.png) - -## Table of Contents - -* [⇢ A fine Fyne Android app for quickly logging ideas programmed in Go](#a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-go) -* [⇢ ⇢ Enter Quick logger](#enter-quick-logger) -* [⇢ ⇢ All easy-peasy?](#all-easy-peasy) - -## Enter Quick logger - -Enter Quick logger – a compact GUI Android (well, cross-platform due to Fyne) app I've crafted using Go and the nifty Fyne framework. With Fyne, the app can be compiled easily into an Android APK. As of this writing, this app's whole Go source code is only 75 lines short!! This little tool is designed for spontaneous moments, allowing me to quickly log my thoughts as plain text files on my Android phone. There are no fancy file formats. Just plain text! - -[https://codeberg.org/snonux/quicklogger](https://codeberg.org/snonux/quicklogger) -[https://fyne.io](https://fyne.io) -[https://go.dev](https://go.dev) - -There's no need to navigate complex menus or deal with sync issues. I jot down my Idea, and Quick logger saves it to a plain text file in a designated local folder on my phone. There is one text file per note (timestamp in the file name). Once logged, the file can't be edited anymore (it keeps it simple). If I want to correct or change a note, I simply write a new one. My notes are always small (usually one short sentence each), so there isn't the need for an edit functionality. I can edit them later on my actual computer if I want to. - -With Syncthing, the note files are then synchronised to my home computer to my `~/Notes` directory. From there, a small glue Raku script adds them to my Taskwarrior DB so that I can process them later (e.g. take action on that one Idea I had). That then will delete the original note files from my computer and also (through Syncthing) from my phone. - -[https://syncthing.net](https://syncthing.net) [https://raku.org](https://raku.org) [https://taskwarrior.org](https://taskwarrior.org) diff --git a/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.md b/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.md index 9b60f12b..880b4ab5 100644 --- a/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.md +++ b/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.md @@ -44,52 +44,6 @@ _____|_:_:_| (o)-(o) |_:_:_|--'`-. ,--. ksh under-water (((\'/ * [⇢ ⇢ ⇢ Fairly cheap and geo-redundant](#fairly-cheap-and-geo-redundant) * [⇢ ⇢ ⇢ Failover time and split-brain](#failover-time-and-split-brain) * [⇢ ⇢ ⇢ Failover support for multiple protocols](#failover-support-for-multiple-protocols) -* # KISS high-availability with OpenBSD - -> Published at 2024-03-30T22:12:56+02:00 - -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. - -But still, my personal sites were never highly available. All those technologies are great for professional use, but I was looking for something much more straightforward for my personal space - something as KISS (keep it simple and stupid) as possible. - -It would be fine if my personal website wasn't highly available, but the geek in me wants it anyway. - -> PS: ASCII-art below reflects an OpenBSD under-water world with all the tools available in the base system. - -``` -Art by Michael J. Penick (mod. by Paul B.) - ACME-sky - __________ - / nsd tower\ ( - /____________\ (\) awk-ward - |:_:_:_:_:_| )) plant - |_:_,--.:_:| dig-bubble (\// ) - |:_:|__|_:_| relayd-castle _ ) )) (( - _ |_ _ :_:| _ _ _ (_) (((( /)\` - | |_| |_| | _| | |_| |_| | o \\)) (( ( - \_:_:_:_:/|_|_|_|\:_:_:_:_/ . (( )))) - |_,-._:_:_:_:_:_:_:_.-,_| )) ((// - |:|_|:_:_:,---,:_:_:|_|:| ,-. )/ - |_:_:_:_,'puffy `,_:_:_:_| _ o ,;'))(( - |:_:_:_/ _ | _ \_:_:_:| (_O (( )) -_____|_:_:_| (o)-(o) |_:_:_|--'`-. ,--. ksh under-water (((\'/ - ', ;|:_:_:| -( .-. )- |:_:_:| ', ; `--._\ /,---.~ goat \`)) -. ` |_:_:_| \`-'/ |_:_:_|. ` . ` /()\.__( ) .,-----'`-\(( sed-root - ', ;|:_:_:| `-' |:_:_:| ', ; ', ; `--'| \ ', ; ', ; ',')).,-- -. ` MJP ` . ` . ` . ` . httpd-soil ` . . ` . ` . ` . ` . ` - ', ; ', ; ', ; ', ; ', ; ', ; ', ; ', ; ', ; ', ; ', ; ', ; ', ; ', ; - -``` - -## Table of Contents - -* [⇢ KISS high-availability with OpenBSD](#kiss-high-availability-with-openbsd) -* [⇢ ⇢ My auto-failover requirements](#my-auto-failover-requirements) -* [⇢ ⇢ My HA solution](#my-ha-solution) -* [⇢ ⇢ ⇢ Only OpenBSD base installation required](#only-openbsd-base-installation-required) -* [⇢ ⇢ ⇢ Fairly cheap and geo-redundant](#fairly-cheap-and-geo-redundant) -* [⇢ ⇢ ⇢ Failover time and split-brain](#failover-time-and-split-brain) -* [⇢ ⇢ ⇢ Failover support for multiple protocols](#failover-support-for-multiple-protocols) * [⇢ ⇢ ⇢ Let's encrypt TLS certificates](#let-s-encrypt-tls-certificates) * [⇢ ⇢ ⇢ Monitoring](#monitoring) * [⇢ ⇢ ⇢ Rex automation](#rex-automation) diff --git a/gemfeed/2024-05-01-slow-productivity-book-notes.md b/gemfeed/2024-05-01-slow-productivity-book-notes.md index 7dca0919..d9cc4e00 100644 --- a/gemfeed/2024-05-01-slow-productivity-book-notes.md +++ b/gemfeed/2024-05-01-slow-productivity-book-notes.md @@ -28,36 +28,6 @@ These notes are mainly for my own use, but you may find them helpful. * [⇢ ⇢ Accomplishments without burnout](#accomplishments-without-burnout) * [⇢ ⇢ Do fewer things](#do-fewer-things) * [⇢ ⇢ Work at a natural pace](#work-at-a-natural-pace) -* # "Slow Productivity" book notes - -> Published at 2024-04-27T14:18:51+03:00 - -These are my personal takeaways after reading "Slow Productivity - The lost Art of Accomplishment Without Burnout" by Cal Newport. - -The case studies in this book were a bit long, but they appeared to be well-researched. I will only highlight the interesting, actionable items in the book notes. - -These notes are mainly for my own use, but you may find them helpful. - -``` - ,.......... .........., - ,..,' '.' ',.., - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,'............., : ,.............', ', -,' '............ '.' ............' ', - '''''''''''''''''';''';'''''''''''''''''' - ''' -``` - -## Table of Contents - -* [⇢ "Slow Productivity" book notes](#slow-productivity-book-notes) -* [⇢ ⇢ It's not "slow productivity"](#it-s-not-slow-productivity) -* [⇢ ⇢ Pseudo-productivity and Shallow work](#pseudo-productivity-and-shallow-work) -* [⇢ ⇢ Accomplishments without burnout](#accomplishments-without-burnout) -* [⇢ ⇢ Do fewer things](#do-fewer-things) -* [⇢ ⇢ Work at a natural pace](#work-at-a-natural-pace) * [⇢ ⇢ Obsess over quality ](#obsess-over-quality-) ## It's not "slow productivity" diff --git a/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.md b/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.md index 4469d7ff..8badb762 100644 --- a/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.md +++ b/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.md @@ -23,31 +23,6 @@ Art by Laura Brown * [⇢ ⇢ Hardware projects I don't have time for](#hardware-projects-i-don-t-have-time-for) * [⇢ ⇢ ⇢ I use Arch, btw!](#i-use-arch-btw) * [⇢ ⇢ ⇢ OpenBSD home router](#openbsd-home-router) -* # Projects I currently don't have time for - -> Published at 2024-05-03T16:23:03+03:00 - -Over the years, I have collected many ideas for my personal projects and noted them down. I am currently in the process of cleaning up all my notes and reviewing those ideas. I don’t have time for the ones listed here and won’t have any soon due to other commitments and personal projects. So, in order to "get rid of them" from my notes folder, I decided to simply put them in this blog post so that those ideas don't get lost. Maybe I will pick up one or another idea someday in the future, but for now, they are all put on ice in favor of other personal projects or family time. - -``` -Art by Laura Brown - -.'`~~~~~~~~~~~`'. -( .'11 12 1'. ) -| :10 \ 2: | -| :9 @-> 3: | -| :8 4; | -'. '..7 6 5..' .' - ~-------------~ ldb - -``` - -## Table of Contents - -* [⇢ Projects I currently don't have time for](#projects-i-currently-don-t-have-time-for) -* [⇢ ⇢ Hardware projects I don't have time for](#hardware-projects-i-don-t-have-time-for) -* [⇢ ⇢ ⇢ I use Arch, btw!](#i-use-arch-btw) -* [⇢ ⇢ ⇢ OpenBSD home router](#openbsd-home-router) * [⇢ ⇢ ⇢ Pi-Hole server](#pi-hole-server) * [⇢ ⇢ ⇢ Infodash](#infodash) * [⇢ ⇢ ⇢ Reading station](#reading-station) diff --git a/gemfeed/2024-07-07-the-stoic-challenge-book-notes.md b/gemfeed/2024-07-07-the-stoic-challenge-book-notes.md index ddbe1fcd..4a8db81b 100644 --- a/gemfeed/2024-07-07-the-stoic-challenge-book-notes.md +++ b/gemfeed/2024-07-07-the-stoic-challenge-book-notes.md @@ -20,28 +20,6 @@ These are my personal takeaways after reading "The Stoic Challenge: A Philosoph * [⇢ "The Stoic Challenge" book notes](#the-stoic-challenge-book-notes) * [⇢ ⇢ God sets you up for a challenge](#god-sets-you-up-for-a-challenge) -* # "The Stoic Challenge" book notes - -> 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. - -``` - ,.......... .........., - ,..,' '.' ',.., - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,' : ', ', - ,' ,'............., : ,.............', ', -,' '............ '.' ............' ', - '''''''''''''''''';''';'''''''''''''''''' - ''' -``` - -## Table of Contents - -* [⇢ "The Stoic Challenge" book notes](#the-stoic-challenge-book-notes) -* [⇢ ⇢ God sets you up for a challenge](#god-sets-you-up-for-a-challenge) * [⇢ ⇢ Negative visualization](#negative-visualization) * [⇢ ⇢ Oh, nice trick, you stoic "god"! ;-)](#oh-nice-trick-you-stoic-god--) diff --git a/gemfeed/2024-09-07-projects-i-support.md b/gemfeed/2024-09-07-projects-i-support.md index bfc5c89c..1ed5c2e4 100644 --- a/gemfeed/2024-09-07-projects-i-support.md +++ b/gemfeed/2024-09-07-projects-i-support.md @@ -26,34 +26,6 @@ This is the list of projects and initiatives I support/sponsor. ## Table of Contents * [⇢ Projects I financially support](#projects-i-financially-support) -* # Projects I financially support - -> Published at 2024-09-07T16:04:19+03:00 - -This is the list of projects and initiatives I support/sponsor. - -``` -||====================================================================|| -||//$\\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\//$\\|| -||(100)==================| FEDERAL SPONSOR NOTE |================(100)|| -||\\$// ~ '------========--------' \\$//|| -||<< / /$\ // ____ \\ \ >>|| -||>>| 12 //L\\ // ///..) \\ L38036133B 12 |<<|| -||<<| \\ // || <|| >\ || |>>|| -||>>| \$/ || $$ --/ || One Hundred |<<|| -||<<| L38036133B *\\ |\_/ //* series |>>|| -||>>| 12 *\\/___\_//* 1989 |<<|| -||<<\ Open Source ______/Franklin\________ Supporting />>|| -||//$\ ~| SPONSORING AND FUNDING |~ /$\\|| -||(100)=================== AWESOME OPEN SOURCE =================(100)|| -||\\$//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\$//|| -||====================================================================|| - -``` - -## Table of Contents - -* [⇢ Projects I financially support](#projects-i-financially-support) * [⇢ ⇢ Motivation](#motivation) * [⇢ ⇢ OSnews](#osnews) * [⇢ ⇢ Cup o' Go Podcast](#cup-o--go-podcast) diff --git a/gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.md b/gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.md index ab1fe403..8c90078c 100644 --- a/gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.md +++ b/gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.md @@ -65,7 +65,7 @@ Tmux is highly configurable, and I think I am only scratching the surface of wha ## Shell aliases -Since last week, I switched to the Fish shell. As a result, I also had to convert all my tmux helper scripts (mentioned in this blog post) to Fish. +Since last week, I am playing a bit with the Fish shell. As a result, I also converted all my tmux helper scripts (mentioned in this blog post) from Z-Shell to Fish. [https://fishshell.com](https://fishshell.com) |
