diff options
| author | Paul Buetow <paul@buetow.org> | 2021-12-28 21:17:57 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2021-12-28 21:17:57 +0000 |
| commit | 805a516f18222504612a90ff5e4b5630d1047fb1 (patch) | |
| tree | 664fcf726611fef5357717a17df45f0e5921b1c8 | |
| parent | b2009191699a2a31b38fd2baea9ff2cabc38efdc (diff) | |
Publishing new version
31 files changed, 112 insertions, 82 deletions
diff --git a/contact-information.html b/contact-information.html index d28cbc33..493fa5d8 100644 --- a/contact-information.html +++ b/contact-information.html @@ -34,5 +34,6 @@ <p>Xerl, my own CMS, powers it:</p> <a class="textlink" href="http://xerl.buetow.org">http://xerl.buetow.org</a><br /> <a class="textlink" href="./">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2008-06-26-perl-poetry.html b/gemfeed/2008-06-26-perl-poetry.html index 799faa18..ff4b1d2f 100644 --- a/gemfeed/2008-06-26-perl-poetry.html +++ b/gemfeed/2008-06-26-perl-poetry.html @@ -157,5 +157,6 @@ This is perl, v5.8.8 built for i386-freebsd-64int <a class="textlink" href="https://codeberg.org/snonux/perl-poetry">https://codeberg.org/snonux/perl-poetry</a><br /> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html b/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html index c05ca583..e541b267 100644 --- a/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html +++ b/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html @@ -39,5 +39,6 @@ _jgs_\|//_\\|///_\V/_\|//__ <p>At the moment I am in Sofia, Bulgaria. Here I can use at least an unprotected WLAN hotspot which belongs to one of the neighbours which I don’t know in person, and it is not blocking any port at all :)</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2010-04-09-standard-ml-and-haskell.html b/gemfeed/2010-04-09-standard-ml-and-haskell.html index bde49643..d829373c 100644 --- a/gemfeed/2010-04-09-standard-ml-and-haskell.html +++ b/gemfeed/2010-04-09-standard-ml-and-haskell.html @@ -147,5 +147,6 @@ my_filter f l = foldr (make_filter_fn f) [] l </pre> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html b/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html index a91c7c44..cab6d7b9 100644 --- a/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html +++ b/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html @@ -93,5 +93,6 @@ first 10 nat_pairs_not_null <a class="textlink" href="http://www.haskell.org/">http://www.haskell.org/</a><br /> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2010-05-09-the-fype-programming-language.html b/gemfeed/2010-05-09-the-fype-programming-language.html index 97125059..f4b416f1 100644 --- a/gemfeed/2010-05-09-the-fype-programming-language.html +++ b/gemfeed/2010-05-09-the-fype-programming-language.html @@ -408,5 +408,6 @@ BB <a class="textlink" href="https://codeberg.org/snonux/fype">https://codeberg.org/snonux/fype</a><br /> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2011-05-07-perl-daemon-service-framework.html b/gemfeed/2011-05-07-perl-daemon-service-framework.html index d11bb9e8..83bba4da 100644 --- a/gemfeed/2011-05-07-perl-daemon-service-framework.html +++ b/gemfeed/2011-05-07-perl-daemon-service-framework.html @@ -139,5 +139,6 @@ sub do ($) { <a class="textlink" href="https://codeberg.org/snonux/perldaemon">https://codeberg.org/snonux/perldaemon</a><br /> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html b/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html index 50d3cecf..a1feebe2 100644 --- a/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html +++ b/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html @@ -101,5 +101,6 @@ fib(10) = 55 <p>It's entertaining to play with :-).</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html index 3248a2b1..46315065 100644 --- a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html +++ b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html @@ -157,5 +157,6 @@ exit <p>Reboot & test! Enjoy!</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2016-04-03-offsite-backup-with-zfs.html b/gemfeed/2016-04-03-offsite-backup-with-zfs.html index c292a4c3..3e7cd123 100644 --- a/gemfeed/2016-04-03-offsite-backup-with-zfs.html +++ b/gemfeed/2016-04-03-offsite-backup-with-zfs.html @@ -34,5 +34,6 @@ <p>I am thinking of buying a second 2TB USB drive and setting it up the same way as the first one. So I could alternate the backups. One drive would be at the secret location, and the other drive would be at home. And these drives would swap place after each cycle. This would give some security about the failure of that drive, and I would have to go to the secret location only once (swapping the drives) instead of twice (picking that drive up to update the data + bringing it back to the remote location).</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html index eb63bf37..c2826afd 100644 --- a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html +++ b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html @@ -372,5 +372,6 @@ Notice: Finished catalog run in 206.09 seconds <p>All done in a pretty automated manor. </p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html b/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html index ec1183a9..8d50d627 100644 --- a/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html +++ b/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html @@ -29,5 +29,6 @@ <p>Furthermore, I added scrubbing ("zpool scrub...") to the script. It ensures that the file system is consistent and that there are no bad blocks on the disk and the file system. To increase the reliability, I also run a "zfs set copies=2 zroot". That setting is also synchronized to the offsite ZFS pool. ZFS stores every data block to disk twice now. Yes, it consumes twice as much disk space, making it better fault-tolerant against hardware errors (e.g. only individual disk sectors going bad). </p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html b/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html index 220428f0..7126c75d 100644 --- a/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html +++ b/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html @@ -218,5 +218,6 @@ apply Service "dig6" { <p>That's much more comfortable now than manually clicking at some web UIs at Schlund Technologies.</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2016-11-20-methods-in-c.html b/gemfeed/2016-11-20-methods-in-c.html index 58684be9..58ee9bb9 100644 --- a/gemfeed/2016-11-20-methods-in-c.html +++ b/gemfeed/2016-11-20-methods-in-c.html @@ -73,5 +73,6 @@ mult.calculate(mult,a,b)); <p>If you want to take it further, type "Object-Oriented Programming with ANSI-C" into your favourite internet search engine, you will find some crazy stuff. Some go as far as writing a C preprocessor in AWK, which takes some object-oriented pseudo-C and transforms it to plain C so that the C compiler can compile it to machine code. This is similar to how the C++ language had its origins.</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html b/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html index 5afba28c..94a86430 100644 --- a/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html +++ b/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html @@ -132,5 +132,6 @@ Total time: 1213.00s <a class="textlink" href="https://en.wikipedia.org/wiki/Memory-mapped_I/O">Memory mapped I/O</a><br /> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html index 8544e16d..214adf26 100644 --- a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html +++ b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html @@ -74,5 +74,6 @@ dtail –servers serverlist.txt –files ‘/var/log/*.log’ –regex ‘(?i:er <a class="textlink" href="https://dtail.dev">https://dtail.dev</a><br /> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-04-24-welcome-to-the-geminispace.html b/gemfeed/2021-04-24-welcome-to-the-geminispace.html index 54020b4c..67f02ea7 100644 --- a/gemfeed/2021-04-24-welcome-to-the-geminispace.html +++ b/gemfeed/2021-04-24-welcome-to-the-geminispace.html @@ -63,5 +63,6 @@ <a class="textlink" href="https://gemini.circumlunar.space">https://gemini.circumlunar.space</a><br /> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-05-16-personal-bash-coding-style-guide.html b/gemfeed/2021-05-16-personal-bash-coding-style-guide.html index 2f184b70..7bfd2cc8 100644 --- a/gemfeed/2021-05-16-personal-bash-coding-style-guide.html +++ b/gemfeed/2021-05-16-personal-bash-coding-style-guide.html @@ -301,5 +301,6 @@ fi <a class="textlink" href="https://tldp.org/LDP/abs/html/">Advanced Bash-Scripting Guide</a><br /> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html index 2c0d8a1d..41537f3c 100644 --- a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html +++ b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html @@ -132,5 +132,6 @@ assert::equals "$(generate::make_link md "$gemtext")" \ <p>I finally revamped my personal internet site and started to blog again. I wanted the result to be exactly how it is now: A slightly retro-inspired internet site built for fun with unconventional tools. </p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-07-04-the-well-grounded-rubyist.html b/gemfeed/2021-07-04-the-well-grounded-rubyist.html index 95bf87e0..e0306396 100644 --- a/gemfeed/2021-07-04-the-well-grounded-rubyist.html +++ b/gemfeed/2021-07-04-the-well-grounded-rubyist.html @@ -74,5 +74,6 @@ Hello World <p>Will I abandon my beloved Perl? Probably not. There are also some Perl scripts I use at work. But unfortunately I only have a limited amount of time and I have to use it wisely. I might look into Raku (formerly known as Perl 6) next year and use it for a personal pet project, who knows. :-). I also highly recommend reading the two Perl books "Modern Perl" and "Higher-Order Perl".</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html index e17f1a3d..19467c04 100644 --- a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html +++ b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html @@ -72,5 +72,6 @@ <p>You have better chances when you know how to manage your own server and install and manage alternatives to the big cloud providers by yourself. I have the advantage that I have work experience as a Linux Systems Administrator here. I mentioned NextCloud already. I use NextCloud for online photo and file storage, contact and calendar sync and as an RSS news feed server. You could do the same with your own E-Mail server, you can also host your own website and blog. I also mentioned Matrix as a Skype alternative (which could also be an alternative to WhatsApp, Skype, Telegram, Viber, ...). I don't know a lot about Matrix yet, but it seems to be a very neat alternative. I am ready to invest time in it as one of my future personal pet projects. Not only because I think it's better, but also because for fun and as a hobby. But this doesn't mean that I invest *all* of my personal free time in it.</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-09-12-keep-it-simple-and-stupid.html b/gemfeed/2021-09-12-keep-it-simple-and-stupid.html index 666e0acd..3dd32b31 100644 --- a/gemfeed/2021-09-12-keep-it-simple-and-stupid.html +++ b/gemfeed/2021-09-12-keep-it-simple-and-stupid.html @@ -60,5 +60,6 @@ <p>There is, however, a trap. The more you spend time with things, the more these things feel natural to you and you become an expert. The more you become an expert, the more you introduce more abstractions and other clever ways of doing things. For you, things seem to be KISS still, but another person may not be an expert and might not understand what you do. One of the fundamental challenges is to keep things really KISS. You might add abstraction upon abstraction to a system and don't even notice it until it is too late.</p> <p>Enough ranted for now :-). E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-10-22-defensive-devops.html b/gemfeed/2021-10-22-defensive-devops.html index 65a5b580..3100b7f5 100644 --- a/gemfeed/2021-10-22-defensive-devops.html +++ b/gemfeed/2021-10-22-defensive-devops.html @@ -72,5 +72,6 @@ <p>This usually means creating one or more tickets, which will be dealt with soon. Once the permanent fix is deployed, you can remove your ad-hoc automation and monitoring around it and focus on your regular work again.</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-11-28-bash-golf-part-2.draft.html b/gemfeed/2021-11-28-bash-golf-part-2.draft.html index 8e8a5090..c1f8b542 100644 --- a/gemfeed/2021-11-28-bash-golf-part-2.draft.html +++ b/gemfeed/2021-11-28-bash-golf-part-2.draft.html @@ -410,5 +410,6 @@ PAUL:X:1000:1000:PAUL BUETOW:/HOME/PAUL:/BIN/BASH </pre> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-11-29-bash-golf-part-1.html b/gemfeed/2021-11-29-bash-golf-part-1.html index d1d91598..46fbe5ec 100644 --- a/gemfeed/2021-11-29-bash-golf-part-1.html +++ b/gemfeed/2021-11-29-bash-golf-part-1.html @@ -347,5 +347,6 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is </pre> <p>See you later for the next post of this series. E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html index 799674a4..e24bc4b5 100644 --- a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html +++ b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html @@ -77,5 +77,6 @@ <p>If you are too busy at work and just can't block time, then maybe it's time to think about alternatives. But before you do that, probably there is something else you can do. Perhaps you just think you can't block time, but you would be surprised to hear from your manager that he will fully support you. Of course, he won't agree to you working full-time on your pet projects. But a certain portion of your time should be allocated for personal advance. After all, your employer also want's you to stay happy so that you don't look for alternatives. It's of everyone's interest that you like your job and stay motivated. The more you are motivated, the more productive you will be. The more productive you are, the more valuable you are for the company.</p> <p>E-Mail me your thoughts at comments@mx.buetow.org!</p> <a class="textlink" href="../">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index 66de0c80..c0cfe1f9 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> - <updated>2021-12-28T17:55:46+00:00</updated> - <title>buetow.org feed</title> + <updated>2021-12-28T21:04:04+00:00</updated> + <title>snonux.de feed</title> <subtitle>Having fun with computers!</subtitle> - <link href="https://buetow.org/gemfeed/atom.xml" rel="self" /> - <link href="https://buetow.org/" /> - <id>https://buetow.org/</id> + <link href="https://snonux.de/gemfeed/atom.xml" rel="self" /> + <link href="https://snonux.de/" /> + <id>https://snonux.de/</id> <entry> <title>How to stay sane as a DevOps person </title> - <link href="https://buetow.org/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html" /> - <id>https://buetow.org/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html</id> + <link href="https://snonux.de/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html" /> + <id>https://snonux.de/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html</id> <updated>2021-12-26T12:02:02+00:00</updated> <author> <name>Paul Buetow</name> @@ -68,7 +68,7 @@ <p>(PS: When I mean DevOps, I also mean Site Reliability Engineers and Sysadmins. I believe SRE and DevOps are just new words for Sysadmins, in most cases).</p> <h3>Don't rush to prevent errors</h3> <p>Slowing down also helps to avoid errors. Don't rush it, even if the task you are working on is urgent. Try to be quick, but don't rush it. Maybe you are writing a script to mitigate a production issue. You could others peer review that script, for example. Their primary programming language may not be the same (e.g. Java vs Ruby), but they would understand the logic. Or ask another DevOps person from your company with good scripting skills review your mitigation, but he then may lack the domain knowledge of the software you are patching.</p> -<a class="textlink" href="https://buetow.org/gemfeed/2021-10-22-defensive-devops.html">Read also "Defensive DevOps" about deploying mitigation scripts.</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2021-10-22-defensive-devops.html">Read also "Defensive DevOps" about deploying mitigation scripts.</a><br /> <p>So relax, don't always expect immediate results right away. Set clear and reasonable expectations to the management about the mitigations. You are not a superhero who has to do everything by yourself. Sometimes, you will miss a deadline. But that will have a good reason. Don't rush to complete just to meet a deadline. </p> <h2>You are not a superhero</h2> <p>Always keep that in mind. You can't solve all problems by your own. Maybe you could, but that would be a lot of additional pressure and stress (and this will reflect to your personal life). Also, Superman and Wonder Woman receive probably much higher salaries than you do ;-).</p> @@ -92,8 +92,8 @@ </entry> <entry> <title>Bash Golf Part 1</title> - <link href="https://buetow.org/gemfeed/2021-11-29-bash-golf-part-1.html" /> - <id>https://buetow.org/gemfeed/2021-11-29-bash-golf-part-1.html</id> + <link href="https://snonux.de/gemfeed/2021-11-29-bash-golf-part-1.html" /> + <id>https://snonux.de/gemfeed/2021-11-29-bash-golf-part-1.html</id> <updated>2021-11-29T14:06:14+00:00</updated> <author> <name>Paul Buetow</name> @@ -446,8 +446,8 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is </entry> <entry> <title>Defensive DevOps</title> - <link href="https://buetow.org/gemfeed/2021-10-22-defensive-devops.html" /> - <id>https://buetow.org/gemfeed/2021-10-22-defensive-devops.html</id> + <link href="https://snonux.de/gemfeed/2021-10-22-defensive-devops.html" /> + <id>https://snonux.de/gemfeed/2021-10-22-defensive-devops.html</id> <updated>2021-10-22T10:02:46+03:00</updated> <author> <name>Paul Buetow</name> @@ -510,7 +510,7 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is <p>At one point, you will be tired of manually running your script and also confident enough to automate it. You could deploy it with a configuration management system such as puppet Puppet and schedule a periodic execution via cron, a systemd timer or even a separate background daemon process. You have to be extremely careful here. The more you automate, the more damage you can cause. You don't want to automate it on all servers involved at once, but you want to slowly ramp up the automation. </p> <p>First, automate it only on one single server and monitor the result closely. At first, only automate running the script in dry mode. Also, don't forget that you still should log everything that the script is doing. Once everything looks fine, you can automate the script on the canary server for real. It shouldn't be a disaster if something goes wrong as usually systems are designed in a HA fashion, where the same data is still at least on another server available. In the worst-case scenario, you could recover data from there or from the local backup files your script created.</p> <p>Now, you can add a handful more canary servers to the automation. You should keep close attention to what the automation is doing. You could use a tool like DTail for distributed log file following. At this point, you could also think of deploying a monitoring check (e.g. Icinga) to see whether your script is not terminating abnormally or logging warnings or errors.</p> -<a class="textlink" href="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html">DTail - The distributed log tail program</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html">DTail - The distributed log tail program</a><br /> <p>From there, you could automate the solution on more and more servers. Best, ramp up the automation to a handful of systems, and later to a whole line of servers (e.g. all secondary servers of a given cluster). And afterwards, automate it on all servers.</p> <p>Remember, whenever something goes wrong, you will have plenty of logs and backup files available. The disaster recovery would involve extending your script to take care of that too or writing a new script for rolling back the backups. </p> <h2>Out of office hours</h2> @@ -525,8 +525,8 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is </entry> <entry> <title>Keep it simple and stupid</title> - <link href="https://buetow.org/gemfeed/2021-09-12-keep-it-simple-and-stupid.html" /> - <id>https://buetow.org/gemfeed/2021-09-12-keep-it-simple-and-stupid.html</id> + <link href="https://snonux.de/gemfeed/2021-09-12-keep-it-simple-and-stupid.html" /> + <id>https://snonux.de/gemfeed/2021-09-12-keep-it-simple-and-stupid.html</id> <updated>2021-09-12T09:39:20+03:00</updated> <author> <name>Paul Buetow</name> @@ -592,8 +592,8 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is </entry> <entry> <title>On being Pedantic about Open-Source</title> - <link href="https://buetow.org/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html" /> - <id>https://buetow.org/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html</id> + <link href="https://snonux.de/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html" /> + <id>https://snonux.de/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html</id> <updated>2021-08-01T10:37:58+03:00</updated> <author> <name>Paul Buetow</name> @@ -671,8 +671,8 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is </entry> <entry> <title>The Well-Grounded Rubyist</title> - <link href="https://buetow.org/gemfeed/2021-07-04-the-well-grounded-rubyist.html" /> - <id>https://buetow.org/gemfeed/2021-07-04-the-well-grounded-rubyist.html</id> + <link href="https://snonux.de/gemfeed/2021-07-04-the-well-grounded-rubyist.html" /> + <id>https://snonux.de/gemfeed/2021-07-04-the-well-grounded-rubyist.html</id> <updated>2021-07-04T10:51:23+01:00</updated> <author> <name>Paul Buetow</name> @@ -685,9 +685,9 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is <p class="quote"><i>Published by Paul Buetow 2021-07-04</i></p> <p>When I was a Linux System Administrator, I have been programming in Perl for years. I still maintain some personal Perl programming projects (e.g. Xerl, guprecords, Loadbars). After switching jobs a couple of years ago (becoming a Site Reliability Engineer), I found Ruby (and some Python) widely used there. As I wanted to do something new, I decided to give Ruby a go.</p> <p>You should learn or try out one new programming language once yearly anyway. If you end up not using the new language, that's not a problem. You will learn new techniques with each new programming language and this also helps you to improve your overall programming skills even for other languages. Also, having some background in a similar programming language makes it reasonably easy to get started. Besides that, learning a new programming language is kick-a** fun!</p> -<a href="https://buetow.org/gemfeed/2021-07-04-the-well-grounded-rubyist/book-cover.jpg"><img src="https://buetow.org/gemfeed/2021-07-04-the-well-grounded-rubyist/book-cover.jpg" /></a><br /> +<a href="https://snonux.de/gemfeed/2021-07-04-the-well-grounded-rubyist/book-cover.jpg"><img src="https://snonux.de/gemfeed/2021-07-04-the-well-grounded-rubyist/book-cover.jpg" /></a><br /> <p>Superficially, Perl seems to have many similarities to Ruby (but, of course, it is entirely different to Perl when you look closer), which pushed me towards Ruby instead of Python. I have tried Python a couple of times before, and I managed to write good code, but I never felt satisfied with the language. I didn't love the syntax, especially the indentations used; they always confused me. I don't dislike Python, but I don't prefer to program in it if I have a choice, especially when there are more propelling alternatives available. Personally, it's so much more fun to program in Ruby than in Python.</p> -<a href="https://buetow.org/gemfeed/2021-07-04-the-well-grounded-rubyist/book-backside.jpg"><img src="https://buetow.org/gemfeed/2021-07-04-the-well-grounded-rubyist/book-backside.jpg" /></a><br /> +<a href="https://snonux.de/gemfeed/2021-07-04-the-well-grounded-rubyist/book-backside.jpg"><img src="https://snonux.de/gemfeed/2021-07-04-the-well-grounded-rubyist/book-backside.jpg" /></a><br /> <p>Yukihiro Matsumoto, the inventor of Ruby, said: "I wanted a scripting language that was more powerful than Perl and more object-oriented than Python" - So I can see where some of the similarities come from. I personally don't believe that Ruby is more powerful than Perl, though, especially when you take CPAN and/or Perl 6 (now known as Raku) into the equation. Well, it all depends on what you mean with "more powerful". But I want to stay pragmatic and use what's already used at my workplace.</p> <h2>My Ruby problem domain</h2> <p>I wrote a lot of Ruby code over the last couple of years. There were many small to medium-sized tools and other projects such as Nagios monitoring checks, even an internal monitoring & reporting site based on Sinatra. All Ruby scripts I wrote do their work well; I didn't encounter any significant problems using Ruby for any of these tasks. Of course, there's nothing that couldn't be written in Perl (or Python), though, after all, these languages are all Turing-complete and all these languages also come with a huge set of 3rd party libraries :-).</p> @@ -698,9 +698,9 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is <li>Occasionally, I write some lines of Java code for minor feature enhancements and fixes to improve the reliability of some the services.</li> <li>Sometimes, I still program in good old C. This is for special projects (e.g. I/O Riot) or low-level PoCs or SystemTap guru mode scripts.</li> </ul> -<a class="textlink" href="https://buetow.org/gemfeed/2021-05-16-personal-bash-coding-style-guide.html">Also have a look at my personal Bash coding style.</a><br /> -<a class="textlink" href="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html">Read here about DTail - the distributed log tail program.</a><br /> -<a class="textlink" href="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html">This is a magazine article about I/O Riot I wrote.</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2021-05-16-personal-bash-coding-style-guide.html">Also have a look at my personal Bash coding style.</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html">Read here about DTail - the distributed log tail program.</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html">This is a magazine article about I/O Riot I wrote.</a><br /> <p>For all other in-between tasks I mainly use the Ruby programming language (unless I decide to give something new a shot once in a while).</p> <h2>Being stuck in Ruby-mediocrity</h2> <p>As a Site Reliability Engineer there were many tasks and problems to be solved as efficiently and quickly as possible and, of course, without bugs. So I learned Ruby relatively fast by doing and the occasional web search for "how to do thing X". I always was eager to get the problem at hand solved and as long as the code solved the problem I usually was happy.</p> @@ -752,8 +752,8 @@ Hello World </entry> <entry> <title>Gemtexter - One Bash script to rule it all</title> - <link href="https://buetow.org/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html" /> - <id>https://buetow.org/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html</id> + <link href="https://snonux.de/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html" /> + <id>https://snonux.de/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html</id> <updated>2021-06-05T19:03:32+01:00</updated> <author> <name>Paul Buetow</name> @@ -805,11 +805,11 @@ Hello World </pre> <p class="quote"><i>Published by Paul Buetow 2021-06-05</i></p> <p>You might have read my previous blog post about entering the Geminispace, where I pointed out the benefits of having and maintaining an internet presence there. This whole site (the blog and all other pages) is composed in the Gemtext markup language. </p> -<a class="textlink" href="https://buetow.org/gemfeed/2021-04-24-welcome-to-the-geminispace.html">Welcome to the Geminispace</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2021-04-24-welcome-to-the-geminispace.html">Welcome to the Geminispace</a><br /> <p>This comes with the benefit that I can write content in my favourite text editor (Vim). </p> <h2>Motivation</h2> <p>Another benefit of using Gemini is that the Gemtext markup language is easy to parse. As my site is dual-hosted (Gemini+HTTP), I could, in theory, just write a shell script to deal with the conversion from Gemtext to HTML; there is no need for a full-featured programming language here. I have done a lot of Bash in the past, but I am also often revisiting old tools and techniques for refreshing and keeping the knowledge up to date here.</p> -<a href="https://buetow.org/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all/blog-engine.jpg"><img alt="Motivational comic strip" title="Motivational comic strip" src="https://buetow.org/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all/blog-engine.jpg" /></a><br /> +<a href="https://snonux.de/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all/blog-engine.jpg"><img alt="Motivational comic strip" title="Motivational comic strip" src="https://snonux.de/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all/blog-engine.jpg" /></a><br /> <p>I have exactly done that - I wrote a Bash script, named Gemtexter, for that:</p> <a class="textlink" href="https://codeberg.org/snonux/gemtexter">https://codeberg.org/snonux/gemtexter</a><br /> <p>In short, Gemtexter is a static site generator and blogging engine that uses Gemtext as its input format.</p> @@ -844,7 +844,7 @@ paul in uranus in gemtexter on 🌱 main <p>This way, the script could grow far beyond 1000 lines of code and still be maintainable. With more features, execution speed may slowly become a problem, though. I already notice that Gemtexter doesn't produce results instantly but requires few seconds of runtime already. That's not a problem yet, though. </p> <h3>Bash best practises and ShellCheck</h3> <p>While working on Gemtexter, I also had a look at the Google Shell Style Guide and wrote a blog post on that:</p> -<a class="textlink" href="https://buetow.org/gemfeed/2021-05-16-personal-bash-coding-style-guide.html">Personal bash coding style guide</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2021-05-16-personal-bash-coding-style-guide.html">Personal bash coding style guide</a><br /> <p>I followed all these best practices, and in my opinion, the result is a pretty maintainable Bash script (given that you are fluent with all the sed and grep commands I used).</p> <p>ShellCheck, a shell script analysis tool written in Haskell, is run on Gemtexter ensuring that all code is acceptable. I am pretty impressed with what ShellCheck found. </p> <p>It, for example, detected "some_command | while read var; do ...; done" loops and hinted that these create a new subprocess for the while part. The result is that all variable modifications taking place in the while-subprocess won't reflect the primary Bash process. ShellSheck then recommended rewriting the loop so that no subprocess is spawned as "while read -r var; do ...; done < <(some_command)". ShellCheck also pointed out to add a "-r" to "read"; otherwise, there could be an issue with backspaces in the loop data.</p> @@ -891,8 +891,8 @@ assert::equals "$(generate::make_link md "$gemtext")" \ </entry> <entry> <title>Personal Bash coding style guide</title> - <link href="https://buetow.org/gemfeed/2021-05-16-personal-bash-coding-style-guide.html" /> - <id>https://buetow.org/gemfeed/2021-05-16-personal-bash-coding-style-guide.html</id> + <link href="https://snonux.de/gemfeed/2021-05-16-personal-bash-coding-style-guide.html" /> + <id>https://snonux.de/gemfeed/2021-05-16-personal-bash-coding-style-guide.html</id> <updated>2021-05-16T14:51:57+01:00</updated> <author> <name>Paul Buetow</name> @@ -1199,8 +1199,8 @@ fi </entry> <entry> <title>Welcome to the Geminispace</title> - <link href="https://buetow.org/gemfeed/2021-04-24-welcome-to-the-geminispace.html" /> - <id>https://buetow.org/gemfeed/2021-04-24-welcome-to-the-geminispace.html</id> + <link href="https://snonux.de/gemfeed/2021-04-24-welcome-to-the-geminispace.html" /> + <id>https://snonux.de/gemfeed/2021-04-24-welcome-to-the-geminispace.html</id> <updated>2021-04-24T19:28:41+01:00</updated> <author> <name>Paul Buetow</name> @@ -1242,13 +1242,13 @@ fi <h2>Discovering the Gemini internet protocol</h2> <p>Around the same time, I discovered a relatively new, more lightweight protocol named Gemini, which does not support all these CPU-intensive features like HTML, JavaScript, and CSS. Also, tracking and ads are unsupported by the Gemini protocol.</p> <p>The "downside" is that due to the limited capabilities of the Gemini protocol, all sites look very old and spartan. But that is not a downside; that is, in fact, a design choice people made. It is up to the client software how your capsule looks. For example, you could use a graphical client, such as Lagrange, with nice font renderings and colours to improve the appearance. Or you could use a very minimalistic command line black-and-white Gemini client. It's your (the user's) choice.</p> -<a href="https://buetow.org/gemfeed/2021-04-24-welcome-to-the-geminispace/amfora-screenshot.png"><img alt="Screenshot Amfora Gemini terminal client surfing this site" title="Screenshot Amfora Gemini terminal client surfing this site" src="https://buetow.org/gemfeed/2021-04-24-welcome-to-the-geminispace/amfora-screenshot.png" /></a><br /> -<a href="https://buetow.org/gemfeed/2021-04-24-welcome-to-the-geminispace/lagrange-screenshot.png"><img alt="Screenshot graphical Lagrange Gemini client surfing this site" title="Screenshot graphical Lagrange Gemini client surfing this site" src="https://buetow.org/gemfeed/2021-04-24-welcome-to-the-geminispace/lagrange-screenshot.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2021-04-24-welcome-to-the-geminispace/amfora-screenshot.png"><img alt="Screenshot Amfora Gemini terminal client surfing this site" title="Screenshot Amfora Gemini terminal client surfing this site" src="https://snonux.de/gemfeed/2021-04-24-welcome-to-the-geminispace/amfora-screenshot.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2021-04-24-welcome-to-the-geminispace/lagrange-screenshot.png"><img alt="Screenshot graphical Lagrange Gemini client surfing this site" title="Screenshot graphical Lagrange Gemini client surfing this site" src="https://snonux.de/gemfeed/2021-04-24-welcome-to-the-geminispace/lagrange-screenshot.png" /></a><br /> <p>Why is there a need for a new protocol? As the modern web is a superset of Gemini, can't we use simple HTML 1.0 instead? That's a good and valid question. It is not a technical problem but a human problem. We tend to abuse the features once they are available. You can ensure that things stay efficient and straightforward as long as you are using the Gemini protocol. On the other hand, you can't force every website on the modern web to only create plain and straightforward-looking HTML pages.</p> <h2>My own Gemini capsule</h2> <p>As it is effortless to set up and maintain your own Gemini capsule (Gemini server + content composed via the Gemtext markup language), I decided to create my own. What I like about Gemini is that I can use my favourite text editor and get typing. I don't need to worry about the style and design of the presence, and I also don't have to test anything in ten different web browsers. I can only focus on the content! As a matter of fact, I am using the Vim editor + its spellchecker + auto word completion functionality to write this. </p> <p>This site was generated with Gemtexter. You can read more about it here:</p> -<a class="textlink" href="https://buetow.org/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html">Gemtexter - One Bash script to rule it all</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html">Gemtexter - One Bash script to rule it all</a><br /> <h2>Gemini advantages summarised</h2> <ul> <li>Supports an alternative to the modern bloated web</li> @@ -1269,8 +1269,8 @@ fi </entry> <entry> <title>DTail - The distributed log tail program</title> - <link href="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html" /> - <id>https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html</id> + <link href="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html" /> + <id>https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html</id> <updated>2021-04-22T19:28:41+01:00</updated> <author> <name>Paul Buetow</name> @@ -1281,7 +1281,7 @@ fi <div xmlns="http://www.w3.org/1999/xhtml"> <h1>DTail - The distributed log tail program</h1> <p class="quote"><i>Published by Paul Buetow 2021-04-22, last updated 2021-04-26</i></p> -<a href="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/title.png"><img alt="DTail logo image" title="DTail logo image" src="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/title.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/title.png"><img alt="DTail logo image" title="DTail logo image" src="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/title.png" /></a><br /> <p>This article first appeared at the Mimecast Engineering Blog but I made it available here in my personal internet site too.</p> <a class="textlink" href="https://medium.com/mimecast-engineering/dtail-the-distributed-log-tail-program-79b8087904bb">Original Mimecast Engineering Blog post at Medium</a><br /> <p>Running a large cloud-based service requires monitoring the state of huge numbers of machines, a task for which many standard UNIX tools were not really designed. In this post, I will describe a simple program, DTail, that Mimecast has built and released as Open-Source, which enables us to monitor log files of many servers at once without the costly overhead of a full-blown log management system.</p> @@ -1295,7 +1295,7 @@ fi <h2>Differentiating from log management systems</h2> <p>Why not just use a full-blown log management system? There are various Open-Source and commercial log management solutions available on the market you could choose from (e.g. the ELK stack). Most of them store the logs in a centralized location and are fairly complex to set up and operate. Possibly they are also pretty expensive to operate if you have to buy dedicated hardware (or pay fees to your cloud provider) and have to hire support staff for it.</p> <p>DTail does not aim to replace any of the log management tools already available but is rather an additional tool crafted especially for ad-hoc debugging and troubleshooting purposes. DTail is cheap to operate as it does not require any dedicated hardware for log storage as it operates directly on the source of the logs. It means that there is a DTail server installed on all server boxes producing logs. This decentralized comes with the direct advantages that there is no introduced delay because the logs are not shipped to a central log storage device. The reduced complexity also makes it more robust against outages. You won’t be able to troubleshoot your distributed application very well if the log management infrastructure isn’t working either.</p> -<a href="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/dtail.gif"><img alt="DTail sample session animated gif" title="DTail sample session animated gif" src="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/dtail.gif" /></a><br /> +<a href="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/dtail.gif"><img alt="DTail sample session animated gif" title="DTail sample session animated gif" src="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/dtail.gif" /></a><br /> <p>As a downside, you won’t be able to access any logs with DTail when the server is down. Furthermore, a server can store logs only up to a certain capacity as disks will fill up. For the purpose of ad-hoc debugging, these are not typically issues. Usually, it’s the application you want to debug and not the server. And disk space is rarely an issue for bare metal and VM-based systems these days, with sufficient space for several weeks’ worth of log storage being available. DTail also supports reading compressed logs. The currently supported compression algorithms are gzip and zstd.</p> <h2>Combining simplicity, security and efficiency</h2> <p>DTail also has a client component that connects to multiple servers concurrently for log files (or any other text files).</p> @@ -1311,7 +1311,7 @@ fi <li>dgrep: The distributed grep client for searching text files for a regular expression pattern.</li> <li>dmap: The distributed map-reduce client for aggregating stats from log files.</li> </ul> -<a href="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/dgrep.gif"><img alt="DGrep sample session animated gif" title="DGrep sample session animated gif" src="https://buetow.org/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/dgrep.gif" /></a><br /> +<a href="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/dgrep.gif"><img alt="DGrep sample session animated gif" title="DGrep sample session animated gif" src="https://snonux.de/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program/dgrep.gif" /></a><br /> <h2>Usage example</h2> <p>The use of these commands is almost self-explanatory for a person already used to the standard command line in Unix systems. One of the main goals is to make DTail easy to use. A tool that is too complicated to use under high-pressure scenarios (e.g., during an incident) can be quite detrimental.</p> <p>The basic idea is to start one of the clients from the command line and provide a list of servers to connect to with –servers. You also must provide a path of remote (log) files via –files. If you want to process multiple files per server, you could either provide a comma-separated list of file paths or make use of file system globbing (or a combination of both).</p> @@ -1350,8 +1350,8 @@ dtail –servers serverlist.txt –files ‘/var/log/*.log’ –regex ‘(?i:er </entry> <entry> <title>Realistic load testing with I/O Riot for Linux</title> - <link href="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html" /> - <id>https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html</id> + <link href="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html" /> + <id>https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html</id> <updated>2018-06-01T14:50:29+01:00</updated> <author> <name>Paul Buetow</name> @@ -1412,7 +1412,7 @@ jgs\__/'---'\__/ <pre> % sudo ioriot -c io.capture </pre> -<a href="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure1-ioriot-io-recording.png"><img alt="Screenshot I/O recording" title="Screenshot I/O recording" src="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure1-ioriot-io-recording.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure1-ioriot-io-recording.png"><img alt="Screenshot I/O recording" title="Screenshot I/O recording" src="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure1-ioriot-io-recording.png" /></a><br /> <p>A Ctrl-C (SIGINT) stops recording prematurely. Otherwise, ioriot terminates itself automatically after 1 hour. Depending on the system load, the output file can grow to several gigabytes. Only metadata is logged, not the read and written data itself. When replaying later, only random data is used. Under certain circumstances, Systemtap may omit some system calls and issue warnings. This is to ensure that Systemtap does not consume too many resources.</p> <h3>Test preparation</h3> <p>Then copy io.capture to a test system. The log also contains all accesses to the pseudo file systems devfs, sysfs and procfs. This makes little sense, which is why you must first generate a cleaned and playable version io.replay from io.capture as follows:</p> @@ -1426,12 +1426,12 @@ jgs\__/'---'\__/ % sudo ioriot -i io.replay </pre> <p>To avoid any damage to the running system, ioreplay only works in special directories. The tool creates a separate subdirectory for each file system mount point (e.g. /, /usr/local, /store/00,...) (here: /.ioriot/TESTNAME, /usr/local/.ioriot/TESTNAME, /store/00/.ioriot/TESTNAME,...). By default, the working directory of ioriot is /usr/local/ioriot/TESTNAME.</p> -<a href="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure2-ioriot-test-preparation.png"><img alt="Screenshot test preparation" title="Screenshot test preparation" src="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure2-ioriot-test-preparation.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure2-ioriot-test-preparation.png"><img alt="Screenshot test preparation" title="Screenshot test preparation" src="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure2-ioriot-test-preparation.png" /></a><br /> <p>You must re-initialize the environment before each run. Data from previous tests will be moved to a trash directory automatically, which can be finally deleted with "sudo ioriot -P".</p> <h3>Replay</h3> <p>After initialization, you can replay the log with -r. You can use -R to initiate both test initialization and replay in a single command and -S can be used to specify a file in which statistics are written after the test run.</p> <p>You can also influence the playback speed: "-s 0" is interpreted as "Playback as fast as possible" and is the default setting. With "-s 1" all operations are performed at original speed. "-s 2" would double the playback speed and "-s 0.5" would halve it.</p> -<a href="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure3-ioriot-replay.png"><img alt="Screenshot replaying I/O" title="Screenshot replaying I/O" src="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure3-ioriot-replay.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure3-ioriot-replay.png"><img alt="Screenshot replaying I/O" title="Screenshot replaying I/O" src="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure3-ioriot-replay.png" /></a><br /> <p>As an initial test, for example, you could compare the two Linux I/O schedulers CFQ and Deadline and check which scheduler the test runs the fastest. They run the test separately for each scheduler. The following shell loop iterates through all attached block devices of the system and changes their I/O scheduler to the one specified in variable $new_scheduler (in this case either cfq or deadline). Subsequently, all I/O events from the io.replay protocol are played back. At the end, an output file with statistics is generated:</p> <pre> % new_scheduler=cfq @@ -1467,10 +1467,10 @@ Time ahead: 2392s Total time: 1213.00s </pre> <p>In any case, you should also set up a time series database, such as Graphite, where the I/O throughput can be plotted. Figures 4 and 5 show the read and write access times of both tests. The break-in makes it clear when the CFQ test ended and the deadline test was started. The reading latency of both tests is similar. Write latency is dramatically improved using the Deadline Scheduler.</p> -<a href="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure4-ioriot-read-latency.png"><img alt="Graphite visualization of the mean read access times in ms with CFQ and Deadline Scheduler." title="Graphite visualization of the mean read access times in ms with CFQ and Deadline Scheduler." src="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure4-ioriot-read-latency.png" /></a><br /> -<a href="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure5-ioriot-write-latency.png"><img alt="Graphite visualization of the average write access times in ms with CFQ and Deadline Scheduler." title="Graphite visualization of the average write access times in ms with CFQ and Deadline Scheduler." src="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure5-ioriot-write-latency.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure4-ioriot-read-latency.png"><img alt="Graphite visualization of the mean read access times in ms with CFQ and Deadline Scheduler." title="Graphite visualization of the mean read access times in ms with CFQ and Deadline Scheduler." src="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure4-ioriot-read-latency.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure5-ioriot-write-latency.png"><img alt="Graphite visualization of the average write access times in ms with CFQ and Deadline Scheduler." title="Graphite visualization of the average write access times in ms with CFQ and Deadline Scheduler." src="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure5-ioriot-write-latency.png" /></a><br /> <p>You should also take a look at the iostat tool. The iostat screenshot shows the output of iostat -x 10 during a test run. As you can see, a block device is fully loaded with 99% utilization, while all other block devices still have sufficient buffer. This could be an indication of poor data distribution in the storage system and is worth pursuing. It is not uncommon for I/O Riot to reveal software problems.</p> -<a href="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure6-iostat.png"><img alt="Output of iostat. The block device sdy seems to be almost fully utilized by 99%." title="Output of iostat. The block device sdy seems to be almost fully utilized by 99%." src="https://buetow.org/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure6-iostat.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure6-iostat.png"><img alt="Output of iostat. The block device sdy seems to be almost fully utilized by 99%." title="Output of iostat. The block device sdy seems to be almost fully utilized by 99%." src="https://snonux.de/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure6-iostat.png" /></a><br /> <h2>I/O Riot is Open Source</h2> <p>The tool has already proven to be very useful and will continue to be actively developed as time and priority permits. Mimecast intends to be an ongoing contributor to Open Source. You can find I/O Riot at:</p> <a class="textlink" href="https://github.com/mimecast/ioriot">https://github.com/mimecast/ioriot</a><br /> @@ -1489,8 +1489,8 @@ Total time: 1213.00s </entry> <entry> <title>Methods in C</title> - <link href="https://buetow.org/gemfeed/2016-11-20-methods-in-c.html" /> - <id>https://buetow.org/gemfeed/2016-11-20-methods-in-c.html</id> + <link href="https://snonux.de/gemfeed/2016-11-20-methods-in-c.html" /> + <id>https://snonux.de/gemfeed/2016-11-20-methods-in-c.html</id> <updated>2016-11-20T18:36:51+01:00</updated> <author> <name>Paul Buetow</name> @@ -1569,8 +1569,8 @@ mult.calculate(mult,a,b)); </entry> <entry> <title>Spinning up my own authoritative DNS servers</title> - <link href="https://buetow.org/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html" /> - <id>https://buetow.org/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html</id> + <link href="https://snonux.de/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html" /> + <id>https://snonux.de/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html</id> <updated>2016-05-22T18:59:01+01:00</updated> <author> <name>Paul Buetow</name> @@ -1794,8 +1794,8 @@ apply Service "dig6" { </entry> <entry> <title>Offsite backup with ZFS (Part 2)</title> - <link href="https://buetow.org/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html" /> - <id>https://buetow.org/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html</id> + <link href="https://snonux.de/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html" /> + <id>https://snonux.de/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html</id> <updated>2016-04-16T22:43:42+01:00</updated> <author> <name>Paul Buetow</name> @@ -1820,7 +1820,7 @@ apply Service "dig6" { \____||__|_____|__| </pre> <p class="quote"><i>Published by Paul Buetow 2016-04-16</i></p> -<a class="textlink" href="https://buetow.org/gemfeed/2016-04-03-offsite-backup-with-zfs.html">Read the first part before reading any furter here...</a><br /> +<a class="textlink" href="https://snonux.de/gemfeed/2016-04-03-offsite-backup-with-zfs.html">Read the first part before reading any furter here...</a><br /> <p>I enhanced the procedure a bit. From now on, I have two external 2TB USB hard drives. Both are set up precisely the same way. To decrease the probability that both drives will not fail simultaneously, they are of different brands. One drive is kept at a secret location. The other one is held at home, right next to my HP MicroServer.</p> <p>Whenever I update the offsite backup, I am doing it to the drive, which is kept locally. Afterwards, I bring it to the secret location, swap the drives, and bring the other back home. This ensures that I will always have an offsite backup available at a different location than my home - even while updating one copy of it.</p> <p>Furthermore, I added scrubbing ("zpool scrub...") to the script. It ensures that the file system is consistent and that there are no bad blocks on the disk and the file system. To increase the reliability, I also run a "zfs set copies=2 zroot". That setting is also synchronized to the offsite ZFS pool. ZFS stores every data block to disk twice now. Yes, it consumes twice as much disk space, making it better fault-tolerant against hardware errors (e.g. only individual disk sectors going bad). </p> @@ -1830,8 +1830,8 @@ apply Service "dig6" { </entry> <entry> <title>Jails and ZFS with Puppet on FreeBSD</title> - <link href="https://buetow.org/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html" /> - <id>https://buetow.org/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html</id> + <link href="https://snonux.de/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html" /> + <id>https://snonux.de/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html</id> <updated>2016-04-09T18:29:47+01:00</updated> <author> <name>Paul Buetow</name> @@ -2209,8 +2209,8 @@ Notice: Finished catalog run in 206.09 seconds </entry> <entry> <title>Offsite backup with ZFS</title> - <link href="https://buetow.org/gemfeed/2016-04-03-offsite-backup-with-zfs.html" /> - <id>https://buetow.org/gemfeed/2016-04-03-offsite-backup-with-zfs.html</id> + <link href="https://snonux.de/gemfeed/2016-04-03-offsite-backup-with-zfs.html" /> + <id>https://snonux.de/gemfeed/2016-04-03-offsite-backup-with-zfs.html</id> <updated>2016-04-03T22:43:42+01:00</updated> <author> <name>Paul Buetow</name> @@ -2250,8 +2250,8 @@ Notice: Finished catalog run in 206.09 seconds </entry> <entry> <title>Run Debian on your phone with Debroid</title> - <link href="https://buetow.org/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html" /> - <id>https://buetow.org/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html</id> + <link href="https://snonux.de/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html" /> + <id>https://snonux.de/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html</id> <updated>2015-12-05T16:12:57+00:00</updated> <author> <name>Paul Buetow</name> @@ -2271,7 +2271,7 @@ Notice: Finished catalog run in 206.09 seconds </pre> <p class="quote"><i>Published by Paul Buetow 2015-12-05, last updated 2021-05-16</i></p> <p>You can use the following tutorial to install a full-blown Debian GNU/Linux Chroot on an LG G3 D855 CyanogenMod 13 (Android 6). First of all, you need to have root permissions on your phone, and you also need to have the developer mode activated. The following steps have been tested on Linux (Fedora 23).</p> -<a href="https://buetow.org/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid/Deboroid.png"><img src="https://buetow.org/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid/Deboroid.png" /></a><br /> +<a href="https://snonux.de/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid/Deboroid.png"><img src="https://snonux.de/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid/Deboroid.png" /></a><br /> <h2>Foreword</h2> <p>A couple of years have passed since I last worked on Debroid. Currently, I am using the Termux app on Android, which is less sophisticated than a fully blown Debian installation but sufficient for my current requirements. The content of this site may be still relevant, and it would also work with more recent versions of Debian and Android. I would expect that some minor modifications need to be made, though. </p> <h2>Step by step guide</h2> @@ -2414,8 +2414,8 @@ exit </entry> <entry> <title>The fibonacci.pl.c Polyglot</title> - <link href="https://buetow.org/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html" /> - <id>https://buetow.org/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html</id> + <link href="https://snonux.de/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html" /> + <id>https://snonux.de/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html</id> <updated>2014-03-24T21:32:53+00:00</updated> <author> <name>Paul Buetow</name> @@ -2522,8 +2522,8 @@ fib(10) = 55 </entry> <entry> <title>Perl Daemon (Service Framework)</title> - <link href="https://buetow.org/gemfeed/2011-05-07-perl-daemon-service-framework.html" /> - <id>https://buetow.org/gemfeed/2011-05-07-perl-daemon-service-framework.html</id> + <link href="https://snonux.de/gemfeed/2011-05-07-perl-daemon-service-framework.html" /> + <id>https://snonux.de/gemfeed/2011-05-07-perl-daemon-service-framework.html</id> <updated>2011-05-07T22:26:02+01:00</updated> <author> <name>Paul Buetow</name> @@ -2668,8 +2668,8 @@ sub do ($) { </entry> <entry> <title>The Fype Programming Language</title> - <link href="https://buetow.org/gemfeed/2010-05-09-the-fype-programming-language.html" /> - <id>https://buetow.org/gemfeed/2010-05-09-the-fype-programming-language.html</id> + <link href="https://snonux.de/gemfeed/2010-05-09-the-fype-programming-language.html" /> + <id>https://snonux.de/gemfeed/2010-05-09-the-fype-programming-language.html</id> <updated>2010-05-09T12:48:29+01:00</updated> <author> <name>Paul Buetow</name> @@ -3083,8 +3083,8 @@ BB </entry> <entry> <title>Lazy Evaluation with Standard ML</title> - <link href="https://buetow.org/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html" /> - <id>https://buetow.org/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html</id> + <link href="https://snonux.de/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html" /> + <id>https://snonux.de/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html</id> <updated>2010-05-07T08:17:59+01:00</updated> <author> <name>Paul Buetow</name> @@ -3183,8 +3183,8 @@ first 10 nat_pairs_not_null </entry> <entry> <title>Standard ML and Haskell</title> - <link href="https://buetow.org/gemfeed/2010-04-09-standard-ml-and-haskell.html" /> - <id>https://buetow.org/gemfeed/2010-04-09-standard-ml-and-haskell.html</id> + <link href="https://snonux.de/gemfeed/2010-04-09-standard-ml-and-haskell.html" /> + <id>https://snonux.de/gemfeed/2010-04-09-standard-ml-and-haskell.html</id> <updated>2010-04-09T22:57:36+01:00</updated> <author> <name>Paul Buetow</name> @@ -3337,8 +3337,8 @@ my_filter f l = foldr (make_filter_fn f) [] l </entry> <entry> <title>Using my Nokia N95 for fixing my MTA</title> - <link href="https://buetow.org/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html" /> - <id>https://buetow.org/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html</id> + <link href="https://snonux.de/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html" /> + <id>https://snonux.de/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html</id> <updated>2008-12-29T09:10:41+00:00</updated> <author> <name>Paul Buetow</name> @@ -3367,7 +3367,7 @@ _jgs_\|//_\\|///_\V/_\|//__ <p class="quote"><i>Published by Paul Buetow 2008-12-29, last updated 2021-12-01</i></p> <p>The last week I was in Vidin, Bulgaria with no internet access and I had to fix my MTA (Postfix) at host.0.buetow.org which serves E-Mail for all my customers at P. B. Labs. Good, that I do not guarantee high availability on my web services (I've to do a full time job somewhere else too). </p> <p>My first attempt to find an internet café, which was working during Christmastime, failed. However, I found with my N95 phone lots of free WLAN hotspots. The hotspots refused me logging into my server using SSH as I have configured a non-standard port for SSH for security reasons. Without knowing the costs, I used the GPRS internet access of my German phone provider (yes, I had to pay roaming fees). </p> -<a href="https://buetow.org/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta/nokia-n95.jpg"><img alt="Picture of a Nokia N95" title="Picture of a Nokia N95" src="https://buetow.org/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta/nokia-n95.jpg" /></a><br /> +<a href="https://snonux.de/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta/nokia-n95.jpg"><img alt="Picture of a Nokia N95" title="Picture of a Nokia N95" src="https://snonux.de/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta/nokia-n95.jpg" /></a><br /> <p>With Putty for N95 and configuring Postfix with Vim and the T9 input mechanism, I managed to fix the problem. But it took half of an hour:</p> <ul> <li>First, getting a shell prompt</li> @@ -3383,8 +3383,8 @@ _jgs_\|//_\\|///_\V/_\|//__ </entry> <entry> <title>Perl Poetry</title> - <link href="https://buetow.org/gemfeed/2008-06-26-perl-poetry.html" /> - <id>https://buetow.org/gemfeed/2008-06-26-perl-poetry.html</id> + <link href="https://snonux.de/gemfeed/2008-06-26-perl-poetry.html" /> + <id>https://snonux.de/gemfeed/2008-06-26-perl-poetry.html</id> <updated>2008-06-26T21:43:51+01:00</updated> <author> <name>Paul Buetow</name> diff --git a/gemfeed/index.html b/gemfeed/index.html index 3292c868..0c62f15e 100644 --- a/gemfeed/index.html +++ b/gemfeed/index.html @@ -2,12 +2,12 @@ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>buetow.org's Gemfeed</title> +<title>snonux.de's Gemfeed</title> <link rel="shortcut icon" type="image/gif" href="/favicon.ico" /> <link rel="stylesheet" href="style.css" /> </head> <body> -<h1>buetow.org's Gemfeed</h1> +<h1>snonux.de's Gemfeed</h1> <h2>Having fun with computers!</h2> <a class="textlink" href="./2021-12-26-how-to-stay-sane-as-a-devops-person.html">2021-12-26 (1975 words) - How to stay sane as a DevOps person </a><br /> <a class="textlink" href="./2021-11-29-bash-golf-part-1.html">2021-11-29 (1182 words) - Bash Golf Part 1</a><br /> @@ -33,5 +33,6 @@ <a class="textlink" href="./2010-04-09-standard-ml-and-haskell.html">2010-04-09 (0266 words) - Standard ML and Haskell</a><br /> <a class="textlink" href="./2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html">2008-12-29 (0294 words) - Using my Nokia N95 for fixing my MTA</a><br /> <a class="textlink" href="./2008-06-26-perl-poetry.html">2008-06-26 (0147 words) - Perl Poetry</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> @@ -21,9 +21,9 @@ ,---\_____ [] _______/------, / /______________\ /| /___________________________________ / | ___ - | Proudly powered by OpenBSD | | ) + | | | ) | _ _ _ [-------] | | ( - | o o o TURBO [-------] | / _)_ + | o o o OpenBSD inside [-------] | / _)_ |__________________________________ |/ / / /-------------------------------------/| ( )/ /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ / @@ -69,5 +69,6 @@ <a class="textlink" href="./gemfeed/2010-04-09-standard-ml-and-haskell.html">2010-04-09 - Standard ML and Haskell</a><br /> <a class="textlink" href="./gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html">2008-12-29 - Using my Nokia N95 for fixing my MTA</a><br /> <a class="textlink" href="./gemfeed/2008-06-26-perl-poetry.html">2008-06-26 - Perl Poetry</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/other-resources.html b/other-resources.html index 07435683..e0a7f2ab 100644 --- a/other-resources.html +++ b/other-resources.html @@ -82,5 +82,6 @@ _-" . ' + . . ,//////0\ | /00HHHHHHHMMMMM </ul> <p>Do you recommend a good Science Fiction Novel? E-Mail at comments@mx.buetow.org! :-)</p> <a class="textlink" href="./">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> diff --git a/resources.html b/resources.html index f0f6681e..6e998e83 100644 --- a/resources.html +++ b/resources.html @@ -119,5 +119,6 @@ <p>I was one of the last students handed out an "old fashioned" German Diploma degree before the University switched to the international Bachelor and Master versions. To give you an idea: The "Diplom-Inform. (FH)" means translated "Diploma in Informatics from a University of Applied Sciences (FH: Fachhochschule)". Going after the international student credit score, it settles between a Bachelor of Computer Science and a Master of Computer Science degree. </p> <p>Colleges and Universities are costly in many countries. Come to Germany, the first college degree is for free (if you finish within a certain deadline!)</p> <a class="textlink" href="./">Go back to the main site</a><br /> +<p class="quote"><i>Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter</a>, served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/httpd.8">httpd(8)</a></i></p> </body> </html> |
