summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuetow.org.sh16
-rw-r--r--content/md/contact-information.md18
-rw-r--r--content/md/gemfeed/2008-06-26-perl-poetry.md6
-rw-r--r--content/md/gemfeed/2010-05-09-the-fype-programming-language.md4
-rw-r--r--content/md/gemfeed/2011-05-07-perl-daemon-service-framework.md4
-rw-r--r--content/md/gemfeed/2016-04-03-offsite-backup-with-zfs.md2
-rw-r--r--content/md/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.md4
-rw-r--r--content/md/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.md4
-rw-r--r--content/md/gemfeed/2016-11-20-methods-in-c.md2
-rw-r--r--content/md/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.draft.md28
-rw-r--r--content/md/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.md14
-rw-r--r--content/md/gemfeed/2021-04-24-welcome-to-the-geminispace.md10
-rw-r--r--content/md/gemfeed/2021-05-15-buetow.org.sh-One-Bash-script-to-rule-it-all.draft.md14
-rw-r--r--content/md/gemfeed/index.md18
-rw-r--r--content/md/index.md28
-rw-r--r--content/md/resources.md4
16 files changed, 88 insertions, 88 deletions
diff --git a/buetow.org.sh b/buetow.org.sh
index 356c39a5..a77da7bf 100755
--- a/buetow.org.sh
+++ b/buetow.org.sh
@@ -430,9 +430,9 @@ md::img () {
local descr="$1"; shift
if [ -z "$descr" ]; then
- echo "[![$link]($link)]($link)"
+ echo "[![$link]($link)]($link) "
else
- echo "[![$descr]($link \"$descr\")]($link)"
+ echo "[![$descr]($link \"$descr\")]($link) "
fi
}
@@ -443,29 +443,29 @@ md::link () {
grep -F -q '://' <<< "$link" || link=${link/.gmi/.md}
test -z "$descr" && descr="$link"
- echo "[$descr]($link)"
+ echo "[$descr]($link) "
}
md::test () {
local line='=> https://example.org'
assert::equals "$(generate::link md "$line")" \
- '[https://example.org](https://example.org)'
+ '[https://example.org](https://example.org) '
line='=> index.md'
assert::equals "$(generate::link md "$line")" \
- '[index.md](index.md)'
+ '[index.md](index.md) '
line='=> http://example.org Description of the link'
assert::equals "$(generate::link md "$line")" \
- '[Description of the link](http://example.org)'
+ '[Description of the link](http://example.org) '
line='=> http://example.org/image.png'
assert::equals "$(generate::link md "$line")" \
- '[![http://example.org/image.png](http://example.org/image.png)](http://example.org/image.png)'
+ '[![http://example.org/image.png](http://example.org/image.png)](http://example.org/image.png) '
line='=> http://example.org/image.png Image description'
assert::equals "$(generate::link md "$line")" \
- '[![Image description](http://example.org/image.png "Image description")](http://example.org/image.png)'
+ '[![Image description](http://example.org/image.png "Image description")](http://example.org/image.png) '
}
md::fromgmi () {
diff --git a/content/md/contact-information.md b/content/md/contact-information.md
index 935f698e..58c31287 100644
--- a/content/md/contact-information.md
+++ b/content/md/contact-information.md
@@ -1,4 +1,4 @@
-[Go back to the main site](./)
+[Go back to the main site](./)
# Contact information
@@ -17,22 +17,22 @@ Use the ProtonMail address if you care about security for now. The address stays
I am sharing articles which I found interesting regularly on all the social media channels. To get you navigated quickly, here are the links:
-[My LinkedIn profile](https://www.linkedin.com/in/paul-buetow-b4857270/)
-[My Twitter profile](https://twitter.com/snonux)
-[My Telegram channel](https://t.me/snonux)
+[My LinkedIn profile](https://www.linkedin.com/in/paul-buetow-b4857270/)
+[My Twitter profile](https://twitter.com/snonux)
+[My Telegram channel](https://t.me/snonux)
### My Open Source code repositories
-[My personal GitHub page](https://github.com/snonux)
-[DTail at Mimecast](https://github.com/mimecast/dtail)
-[I/O Riot at Mimecast](https://github.com/mimecast/ioriot)
+[My personal GitHub page](https://github.com/snonux)
+[DTail at Mimecast](https://github.com/mimecast/dtail)
+[I/O Riot at Mimecast](https://github.com/mimecast/ioriot)
### My old personal website
It's still there for fun + profit.
-[http://paul.buetow.org](http://paul.buetow.org)
+[http://paul.buetow.org](http://paul.buetow.org)
It's powered by Xerl, my own CMS:
-[http://xerl.buetow.org](http://xerl.buetow.org)
+[http://xerl.buetow.org](http://xerl.buetow.org)
diff --git a/content/md/gemfeed/2008-06-26-perl-poetry.md b/content/md/gemfeed/2008-06-26-perl-poetry.md
index d53faef3..3bd22ece 100644
--- a/content/md/gemfeed/2008-06-26-perl-poetry.md
+++ b/content/md/gemfeed/2008-06-26-perl-poetry.md
@@ -1,6 +1,6 @@
> Written by Paul Buetow 2008-06-26, last updated 2021-05-04
-[Go back to the main site](../)
+[Go back to the main site](../)
# Perl Poetry
@@ -31,7 +31,7 @@ Here are some Perl Poems I wrote. They don't do anything useful when you run the
Wikipedia: "Perl poetry is the practice of writing poems that can be compiled as legal Perl code, for example the piece known as Black Perl. Perl poetry is made possible by the large number of English words that are used in the Perl language. New poems are regularly submitted to the community at PerlMonks."
-[https://en.wikipedia.org/wiki/Perl](https://en.wikipedia.org/wiki/Perl)
+[https://en.wikipedia.org/wiki/Perl](https://en.wikipedia.org/wiki/Perl)
## math.pl
@@ -161,6 +161,6 @@ This is perl, v5.8.8 built for i386-freebsd-64int
Did you like what you saw? Have a look at Github to see my other poems too:
-[https://github.com/snonux/perl-poetry](https://github.com/snonux/perl-poetry)
+[https://github.com/snonux/perl-poetry](https://github.com/snonux/perl-poetry)
E-Mail me your thoughts at comments@mx.buetow.org!
diff --git a/content/md/gemfeed/2010-05-09-the-fype-programming-language.md b/content/md/gemfeed/2010-05-09-the-fype-programming-language.md
index 6a0be90d..e7ff7c5c 100644
--- a/content/md/gemfeed/2010-05-09-the-fype-programming-language.md
+++ b/content/md/gemfeed/2010-05-09-the-fype-programming-language.md
@@ -1,6 +1,6 @@
> Written by Paul Buetow 2010-05-09, last updated 2021-05-05
-[Go back to the main site](../)
+[Go back to the main site](../)
```
____ _ __
@@ -506,6 +506,6 @@ Fancy stuff like OOP or Unicode or threading is not planed. But fancy stuff like
You can find all of this on the GitHub page. There is also an "examples" folders containing some Fype scripts!
-[https://github.com/snonux/fype](https://github.com/snonux/fype)
+[https://github.com/snonux/fype](https://github.com/snonux/fype)
E-Mail me your thoughts at comments@mx.buetow.org!
diff --git a/content/md/gemfeed/2011-05-07-perl-daemon-service-framework.md b/content/md/gemfeed/2011-05-07-perl-daemon-service-framework.md
index 4341a99d..285c8ec2 100644
--- a/content/md/gemfeed/2011-05-07-perl-daemon-service-framework.md
+++ b/content/md/gemfeed/2011-05-07-perl-daemon-service-framework.md
@@ -1,6 +1,6 @@
> Written by Paul Buetow 2011-05-07, last updated 2021-05-07
-[Go back to the main site](../)
+[Go back to the main site](../)
# Perl Daemon (Service Framework)
@@ -158,6 +158,6 @@ BTW: You can install as many modules within the same instance as desired. But th
You can find PerlDaemon (including the examples) at:
-[https://github.com/snonux/perldaemon](https://github.com/snonux/perldaemon)
+[https://github.com/snonux/perldaemon](https://github.com/snonux/perldaemon)
E-Mail me your thoughts at comments@mx.buetow.org!
diff --git a/content/md/gemfeed/2016-04-03-offsite-backup-with-zfs.md b/content/md/gemfeed/2016-04-03-offsite-backup-with-zfs.md
index d044f319..dc22a41b 100644
--- a/content/md/gemfeed/2016-04-03-offsite-backup-with-zfs.md
+++ b/content/md/gemfeed/2016-04-03-offsite-backup-with-zfs.md
@@ -1,6 +1,6 @@
> Written by Paul Buetow 2016-04-03
-[Go back to the main site](../)
+[Go back to the main site](../)
# Offsite backup with ZFS
diff --git a/content/md/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.md b/content/md/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.md
index 4cd82274..bac8680c 100644
--- a/content/md/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.md
+++ b/content/md/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.md
@@ -1,6 +1,6 @@
> Written by Paul Buetow 2016-04-16
-[Go back to the main site](../)
+[Go back to the main site](../)
# Offsite backup with ZFS (Part 2)
@@ -19,7 +19,7 @@
\____||__|_____|__|
```
-[Read the first part before reading any furter here...](./2016-04-03-offsite-backup-with-zfs.md)
+[Read the first part before reading any furter here...](./2016-04-03-offsite-backup-with-zfs.md)
I enhanced the procedure a bit. From now on I am having two external 2TB USB hard drives. Both are setup exactly the same way. To decrease the probability that they will not fail at about the same time both drives are of different brands. One drive is kept at the secret location. The other one is kept at home right next to my HP MicroServer.
diff --git a/content/md/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.md b/content/md/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.md
index 0e5c4769..04c85fe5 100644
--- a/content/md/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.md
+++ b/content/md/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.md
@@ -1,6 +1,6 @@
> Written by Paul Buetow 2016-05-22
-[Go back to the main site](../)
+[Go back to the main site](../)
# Spinning up my own authoritative DNS servers
@@ -8,7 +8,7 @@
Finally, I had time to deploy my own authoritative DNS servers (master and slave) for my domains "buetow.org" and "buetow.zone". My domain name provider is Schlund Technologies. They allow their customers to manually edit the DNS records (BIND files). And they also give you the opportunity to set your own authoritative DNS servers for your domains. From now, I am making use of that option.
-[Schlund Technologies](http://www.schlundtech.de)
+[Schlund Technologies](http://www.schlundtech.de)
## All FreeBSD Jails
diff --git a/content/md/gemfeed/2016-11-20-methods-in-c.md b/content/md/gemfeed/2016-11-20-methods-in-c.md
index cd0528a5..45ee2bc4 100644
--- a/content/md/gemfeed/2016-11-20-methods-in-c.md
+++ b/content/md/gemfeed/2016-11-20-methods-in-c.md
@@ -1,6 +1,6 @@
> Written by Paul Buetow 2016-11-20
-[Go back to the main site](../)
+[Go back to the main site](../)
# Methods in C
diff --git a/content/md/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.draft.md b/content/md/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.draft.md
index a7492f09..83412e92 100644
--- a/content/md/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.draft.md
+++ b/content/md/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.draft.md
@@ -1,6 +1,6 @@
 Written by Paul Buetow 2018-06-01, last updated 2021-05-08
-[Go back to the main site](../)
+[Go back to the main site](../)
# Realistic load testing with I/O Riot for Linux
@@ -19,7 +19,7 @@ jgs\__/'---'\__/
This text first was published in the german IT-Administrator computer Magazine. 3 years have passed since and I decided to publish it on my blog too.
-[https://www.admin-magazin.de/Das-Heft/2018/06/Realistische-Lasttests-mit-I-O-Riot](https://www.admin-magazin.de/Das-Heft/2018/06/Realistische-Lasttests-mit-I-O-Riot)
+[https://www.admin-magazin.de/Das-Heft/2018/06/Realistische-Lasttests-mit-I-O-Riot](https://www.admin-magazin.de/Das-Heft/2018/06/Realistische-Lasttests-mit-I-O-Riot)
I havn't worked on I/O Riot for some time now, but all what is written here is still valid. I am still using I/O Riot to debug I/O issues and pattern once in a while, so by all means the tool is not obsolete yet. The tool even helped to resolve a major production incident at work involving I/O.
@@ -83,7 +83,7 @@ During recording, ioriot acts as a wrapper and executes all relevant Systemtap c
% sudo ioriot -c io.capture
```
-[![Screenshot I/O recording](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure1-ioriot-io-recording.png "Screenshot I/O recording")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure1-ioriot-io-recording.png)
+[![Screenshot I/O recording](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure1-ioriot-io-recording.png "Screenshot I/O recording")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure1-ioriot-io-recording.png)
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.
@@ -107,7 +107,7 @@ The test will most likely want to access existing files. These are files the tes
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.
-[![Screenshot test preparation](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure2-ioriot-test-preparation.png "Screenshot test preparation")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure2-ioriot-test-preparation.png)
+[![Screenshot test preparation](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure2-ioriot-test-preparation.png "Screenshot test preparation")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure2-ioriot-test-preparation.png)
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".
@@ -117,7 +117,7 @@ After initialization, you can replay the log with -r. You can use -R to initiate
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.
-[![Screenshot replaying I/O](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure3-ioriot-replay.png "Screenshot replaying I/O")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure3-ioriot-replay.png)
+[![Screenshot replaying I/O](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure3-ioriot-replay.png "Screenshot replaying I/O")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure3-ioriot-replay.png)
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:
@@ -159,19 +159,19 @@ Total time: 1213.00s
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.
-[![Graphite visualization of the mean read access times in ms with CFQ and Deadline Scheduler.](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure4-ioriot-read-latency.png "Graphite visualization of the mean read access times in ms with CFQ and Deadline Scheduler.")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure4-ioriot-read-latency.png)
+[![Graphite visualization of the mean read access times in ms with CFQ and Deadline Scheduler.](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure4-ioriot-read-latency.png "Graphite visualization of the mean read access times in ms with CFQ and Deadline Scheduler.")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure4-ioriot-read-latency.png)
-[![Graphite visualization of the average write access times in ms with CFQ and Deadline Scheduler.](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure5-ioriot-write-latency.png "Graphite visualization of the average write access times in ms with CFQ and Deadline Scheduler.")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure5-ioriot-write-latency.png)
+[![Graphite visualization of the average write access times in ms with CFQ and Deadline Scheduler.](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure5-ioriot-write-latency.png "Graphite visualization of the average write access times in ms with CFQ and Deadline Scheduler.")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure5-ioriot-write-latency.png)
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.
-[![Output of iostat. The block device sdy seems to be almost fully utilized by 99%.](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure6-iostat.png "Output of iostat. The block device sdy seems to be almost fully utilized by 99%.")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure6-iostat.png)
+[![Output of iostat. The block device sdy seems to be almost fully utilized by 99%.](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure6-iostat.png "Output of iostat. The block device sdy seems to be almost fully utilized by 99%.")](./2018-06-01-realistic-load-testing-with-ioriot-for-linux/figure6-iostat.png)
## I/O Riot is Open Source
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:
-[https://github.com/mimecast/ioriot](https://github.com/mimecast/ioriot)
+[https://github.com/mimecast/ioriot](https://github.com/mimecast/ioriot)
## Systemtap
@@ -179,13 +179,13 @@ Systemtap is a tool for the instrumentation of the Linux kernel. The tool provid
For example, the open syscall opens a file and returns the responsible file descriptor. The read and write syscalls can operate on a file descriptor and return the number of read or written bytes. The close syscall closes a given file descriptor. I/O Riot comes with a ready-made Systemtap program, which you have already compiled into a kernel module and installed to /opt/ioriot. In addition to open, read and close, it logs many other I/O-relevant calls.
-[https://sourceware.org/systemtap/](https://sourceware.org/systemtap/)
+[https://sourceware.org/systemtap/](https://sourceware.org/systemtap/)
## More refereces
-[IOZone](http://www.iozone.org/)
-[Bonnie++](https://www.coker.com.au/bonnie++/)
-[Graphite](https://graphiteapp.org)
-[Memory mapped I/O](https://en.wikipedia.org/wiki/Memory-mapped_I/O)
+[IOZone](http://www.iozone.org/)
+[Bonnie++](https://www.coker.com.au/bonnie++/)
+[Graphite](https://graphiteapp.org)
+[Memory mapped I/O](https://en.wikipedia.org/wiki/Memory-mapped_I/O)
E-Mail me your thoughts at comments@mx.buetow.org!
diff --git a/content/md/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.md b/content/md/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.md
index d1147e69..5722a047 100644
--- a/content/md/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.md
+++ b/content/md/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.md
@@ -1,14 +1,14 @@
> Written by Paul Buetow 2021-04-22, last updated 2021-04-26
-[Go back to the main site](../)
+[Go back to the main site](../)
# DTail - The distributed log tail program
-[![DTail logo image](./2021-04-22-dtail-the-distributed-log-tail-program/dtail-logo.png "DTail logo image")](./2021-04-22-dtail-the-distributed-log-tail-program/dtail-logo.png)
+[![DTail logo image](./2021-04-22-dtail-the-distributed-log-tail-program/dtail-logo.png "DTail logo image")](./2021-04-22-dtail-the-distributed-log-tail-program/dtail-logo.png)
This article first appeared at the Mimecast Engineering Blog but I made it available here in my personal Gemini capsule too.
-[Original Mimecast Engineering Blog post at Medium](https://medium.com/mimecast-engineering/dtail-the-distributed-log-tail-program-79b8087904bb)
+[Original Mimecast Engineering Blog post at Medium](https://medium.com/mimecast-engineering/dtail-the-distributed-log-tail-program-79b8087904bb)
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.
@@ -22,7 +22,7 @@ Think of DTail as a distributed version of the tail program which is very useful
DTail got its inspiration from public domain tools available already in this area but it is a blue sky from-scratch development which was first presented at Mimecast’s annual internal Pet Project competition (awarded with a Bronze prize). It has gained popularity since and is one of the most widely deployed DevOps tools at Mimecast (reaching nearly 10k server installations) and many engineers use it on a regular basis. The Open-Source version of DTail is available at:
-[https://dtail.dev](https://dtail.dev)
+[https://dtail.dev](https://dtail.dev)
Try it out — We would love any feedback. But first, read on…
@@ -32,7 +32,7 @@ Why not just use a full-blown log management system? There are various Open-Sour
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.
-[![DTail sample session animated gif](./2021-04-22-dtail-the-distributed-log-tail-program/dtail.gif "DTail sample session animated gif")](./2021-04-22-dtail-the-distributed-log-tail-program/dtail.gif)
+[![DTail sample session animated gif](./2021-04-22-dtail-the-distributed-log-tail-program/dtail.gif "DTail sample session animated gif")](./2021-04-22-dtail-the-distributed-log-tail-program/dtail.gif)
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.
@@ -56,7 +56,7 @@ Following the UNIX philosophy, DTail includes multiple command-line commands eac
* dgrep: The distributed grep client for searching text files for a regular expression pattern.
* dmap: The distributed map-reduce client for aggregating stats from log files.
-[![DGrep sample session animated gif](./2021-04-22-dtail-the-distributed-log-tail-program/dgrep.gif "DGrep sample session animated gif")](./2021-04-22-dtail-the-distributed-log-tail-program/dgrep.gif)
+[![DGrep sample session animated gif](./2021-04-22-dtail-the-distributed-log-tail-program/dgrep.gif "DGrep sample session animated gif")](./2021-04-22-dtail-the-distributed-log-tail-program/dgrep.gif)
## Usage example
@@ -103,6 +103,6 @@ There are various features we want to see in the future.
Mimecast highly encourages you to have a look at DTail and submit an issue for any features you would like to see. Have you found a bug? Maybe you just have a question or comment? If you want to go a step further: We would also love to see pull requests for any features or improvements. Either way, if in doubt just contact us via the DTail GitHub page.
-[https://dtail.dev](https://dtail.dev)
+[https://dtail.dev](https://dtail.dev)
E-Mail me your thoughts at comments@mx.buetow.org!
diff --git a/content/md/gemfeed/2021-04-24-welcome-to-the-geminispace.md b/content/md/gemfeed/2021-04-24-welcome-to-the-geminispace.md
index 08703ddf..609f83a3 100644
--- a/content/md/gemfeed/2021-04-24-welcome-to-the-geminispace.md
+++ b/content/md/gemfeed/2021-04-24-welcome-to-the-geminispace.md
@@ -1,13 +1,13 @@
> Written by Paul Buetow 2021-04-24, last updated 2021-04-30
> ASCII Art by Andy Hood
-[Go back to the main site](../)
+[Go back to the main site](../)
# Welcome to the Geminispace
Have you reached this article already via Gemini? You need a special client for that, web browsers such as Firefox, Chrome, Safari etc. don't support the Gemini protocol. The Gemini address of this site (or the address of this capsule as people say in Geminispace) is:
-[gemini://buetow.org](gemini://buetow.org)
+[gemini://buetow.org](gemini://buetow.org)
If you however still use HTTP then you are just surfing the fallback HTML version of this capsule. In that case I suggest reading on what this is all about :-).
@@ -49,7 +49,7 @@ Around the same time I discovered a relatively new more lightweight protocol nam
The "downside" is that due to the limited capabilities of the Gemini protocol all sites look very old and spartan. But that is not really 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 with nice font renderings and colors to improve the appearance. Or you could just use a very minimalistic command line black-and-white Gemini client. It's your (the user's) choice.
-[![Screenshot Amfora Gemini terminal client surfing this site](./2021-04-24-welcome-to-the-geminispace/amfora-screenshot.png "Screenshot Amfora Gemini terminal client surfing this site")](./2021-04-24-welcome-to-the-geminispace/amfora-screenshot.png)
+[![Screenshot Amfora Gemini terminal client surfing this site](./2021-04-24-welcome-to-the-geminispace/amfora-screenshot.png "Screenshot Amfora Gemini terminal client surfing this site")](./2021-04-24-welcome-to-the-geminispace/amfora-screenshot.png)
Why is there a need for a new protocol? As the modern web is a superset of Gemini, can't we just use simple HTML 1.0? 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 be sure that things stay simple and efficient as long as you are using the Gemini protocol. On the other hand you can't force every website in the modern web to only create plain and simple looking HTML pages.
@@ -71,8 +71,8 @@ As it is very easy to set up and maintain your own Gemini capsule (Gemini server
Check out one of the following links for more information about Gemini. For example, you will find a FAQ which explains why the protocol is named "Gemini". Many Gemini capsules are dual hosted via Gemini and HTTP(S), so that people new to Gemini can sneak peek the content with a normal web browser. As a matter of fact, some people go as far as tri-hosting all their content via HTTP(S), Gemini and Gopher.
-[gemini://gemini.circumlunar.space](gemini://gemini.circumlunar.space)
-[https://gemini.circumlunar.space](https://gemini.circumlunar.space)
+[gemini://gemini.circumlunar.space](gemini://gemini.circumlunar.space)
+[https://gemini.circumlunar.space](https://gemini.circumlunar.space)
E-Mail me your thoughts at comments@mx.buetow.org!
diff --git a/content/md/gemfeed/2021-05-15-buetow.org.sh-One-Bash-script-to-rule-it-all.draft.md b/content/md/gemfeed/2021-05-15-buetow.org.sh-One-Bash-script-to-rule-it-all.draft.md
index 32462a58..08ef2cde 100644
--- a/content/md/gemfeed/2021-05-15-buetow.org.sh-One-Bash-script-to-rule-it-all.draft.md
+++ b/content/md/gemfeed/2021-05-15-buetow.org.sh-One-Bash-script-to-rule-it-all.draft.md
@@ -6,7 +6,7 @@ ADD GO BACK LINK
You might have read my previous blog post about entering the Geminispace.
-[Welcome to the Geminispace](./2021-04-24-welcome-to-the-geminispace)
+[Welcome to the Geminispace](./2021-04-24-welcome-to-the-geminispace)
## Motivation
@@ -172,12 +172,12 @@ Specify -r
### Gemtext via Gemini protocol
-[gemini://buetow.org - The original Gemini capsule ](gemini://buetow.org)
-[gemini://buetow.org/gemfeed/ - The Gemfeed](gemini://buetow.org/gemfeed/)
-[gemini://buetow.org/gemfeed/atom.xml - The Atom feed](gemini://buetow.org/gemfeed/atom.xml)
+[gemini://buetow.org - The original Gemini capsule ](gemini://buetow.org)
+[gemini://buetow.org/gemfeed/ - The Gemfeed](gemini://buetow.org/gemfeed/)
+[gemini://buetow.org/gemfeed/atom.xml - The Atom feed](gemini://buetow.org/gemfeed/atom.xml)
### XHTML via HTTP protocol
-[https://buetow.org - The original Gemini capsule ](https://buetow.org)
-[https://buetow.org/gemfeed/ - The Gemfeed](https://buetow.org/gemfeed/)
-[https://buetow.org/gemfeed/atom.xml - The Atom feed](https://buetow.org/gemfeed/atom.xml)
+[https://buetow.org - The original Gemini capsule ](https://buetow.org)
+[https://buetow.org/gemfeed/ - The Gemfeed](https://buetow.org/gemfeed/)
+[https://buetow.org/gemfeed/atom.xml - The Atom feed](https://buetow.org/gemfeed/atom.xml)
diff --git a/content/md/gemfeed/index.md b/content/md/gemfeed/index.md
index fe851064..0f3f15aa 100644
--- a/content/md/gemfeed/index.md
+++ b/content/md/gemfeed/index.md
@@ -2,12 +2,12 @@
## Having fun with computers!
-[2021-04-24 - Welcome to the Geminispace](./2021-04-24-welcome-to-the-geminispace.md)
-[2021-04-22 - DTail - The distributed log tail program](./2021-04-22-dtail-the-distributed-log-tail-program.md)
-[2016-11-20 - Methods in C](./2016-11-20-methods-in-c.md)
-[2016-05-22 - Spinning up my own authoritative DNS servers](./2016-05-22-spinning-up-my-own-authoritative-dns-servers.md)
-[2016-04-16 - Offsite backup with ZFS (Part 2)](./2016-04-16-offsite-backup-with-zfs-part2.md)
-[2016-04-03 - Offsite backup with ZFS](./2016-04-03-offsite-backup-with-zfs.md)
-[2011-05-07 - Perl Daemon (Service Framework)](./2011-05-07-perl-daemon-service-framework.md)
-[2010-05-09 - The Fype Programming Language](./2010-05-09-the-fype-programming-language.md)
-[2008-06-26 - Perl Poetry](./2008-06-26-perl-poetry.md)
+[2021-04-24 - Welcome to the Geminispace](./2021-04-24-welcome-to-the-geminispace.md)
+[2021-04-22 - DTail - The distributed log tail program](./2021-04-22-dtail-the-distributed-log-tail-program.md)
+[2016-11-20 - Methods in C](./2016-11-20-methods-in-c.md)
+[2016-05-22 - Spinning up my own authoritative DNS servers](./2016-05-22-spinning-up-my-own-authoritative-dns-servers.md)
+[2016-04-16 - Offsite backup with ZFS (Part 2)](./2016-04-16-offsite-backup-with-zfs-part2.md)
+[2016-04-03 - Offsite backup with ZFS](./2016-04-03-offsite-backup-with-zfs.md)
+[2011-05-07 - Perl Daemon (Service Framework)](./2011-05-07-perl-daemon-service-framework.md)
+[2010-05-09 - The Fype Programming Language](./2010-05-09-the-fype-programming-language.md)
+[2008-06-26 - Perl Poetry](./2008-06-26-perl-poetry.md)
diff --git a/content/md/index.md b/content/md/index.md
index 6fb2ceb3..17d157bc 100644
--- a/content/md/index.md
+++ b/content/md/index.md
@@ -25,7 +25,7 @@
If you reach this site via the modern web, please read this:
-[Welcome to the Geminispace](./gemfeed/2021-04-24-welcome-to-the-geminispace.md)
+[Welcome to the Geminispace](./gemfeed/2021-04-24-welcome-to-the-geminispace.md)
## Introduction
@@ -33,11 +33,11 @@ My name is Paul Buetow and this is my personal internet site. You can call me a
I have published some Open-Source software, you will find some reference to it on this site or on my GitHub page(s). I also read a lot of tech newsletters and blogs. I re-share the most interesting ones on my social media feeds. You can find links to my GitHub pages and to my social media accounts on my contact information page:
-[Contact information](./contact-information.md)
+[Contact information](./contact-information.md)
I have also compiled a list of resources which made an impact on me:
-[List of resources](./resources.md)
+[List of resources](./resources.md)
## Personal blog
@@ -45,19 +45,19 @@ English is not my mother tongue. So please ignore any errors you might encounter
### Stay updated
-[Subscribe to this blog's Atom feed](./gemfeed/atom.xml)
-[Subscribe to this blog's Gemfeed](./gemfeed/index.md)
+[Subscribe to this blog's Atom feed](./gemfeed/atom.xml)
+[Subscribe to this blog's Gemfeed](./gemfeed/index.md)
### Posts
I have switched blog software multiple times. I might be back filling some of the older articles here. So please don't wonder when suddenly very old posts appear here.
-[2021-04-24 - Welcome to the Geminispace](./gemfeed/2021-04-24-welcome-to-the-geminispace.md)
-[2021-04-22 - DTail - The distributed log tail program](./gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.md)
-[2016-11-20 - Methods in C](./gemfeed/2016-11-20-methods-in-c.md)
-[2016-05-22 - Spinning up my own authoritative DNS servers](./gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.md)
-[2016-04-16 - Offsite backup with ZFS (Part 2)](./gemfeed/2016-04-16-offsite-backup-with-zfs-part2.md)
-[2016-04-03 - Offsite backup with ZFS](./gemfeed/2016-04-03-offsite-backup-with-zfs.md)
-[2011-05-07 - Perl Daemon (Service Framework)](./gemfeed/2011-05-07-perl-daemon-service-framework.md)
-[2010-05-09 - The Fype Programming Language](./gemfeed/2010-05-09-the-fype-programming-language.md)
-[2008-06-26 - Perl Poetry](./gemfeed/2008-06-26-perl-poetry.md)
+[2021-04-24 - Welcome to the Geminispace](./gemfeed/2021-04-24-welcome-to-the-geminispace.md)
+[2021-04-22 - DTail - The distributed log tail program](./gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.md)
+[2016-11-20 - Methods in C](./gemfeed/2016-11-20-methods-in-c.md)
+[2016-05-22 - Spinning up my own authoritative DNS servers](./gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.md)
+[2016-04-16 - Offsite backup with ZFS (Part 2)](./gemfeed/2016-04-16-offsite-backup-with-zfs-part2.md)
+[2016-04-03 - Offsite backup with ZFS](./gemfeed/2016-04-03-offsite-backup-with-zfs.md)
+[2011-05-07 - Perl Daemon (Service Framework)](./gemfeed/2011-05-07-perl-daemon-service-framework.md)
+[2010-05-09 - The Fype Programming Language](./gemfeed/2010-05-09-the-fype-programming-language.md)
+[2008-06-26 - Perl Poetry](./gemfeed/2008-06-26-perl-poetry.md)
diff --git a/content/md/resources.md b/content/md/resources.md
index ad1bf471..11298507 100644
--- a/content/md/resources.md
+++ b/content/md/resources.md
@@ -1,4 +1,4 @@
-[Go back to the main site](./)
+[Go back to the main site](./)
# Resources
@@ -111,7 +111,7 @@ However, I still believe a degree in Computer Science helps to achieve a good un
My diploma thesis "Object oriented development of a GUI based tool for event based simulation of distributed systems" can be found at:
-[https://github.com/snonux/vs-sim](https://github.com/snonux/vs-sim)
+[https://github.com/snonux/vs-sim](https://github.com/snonux/vs-sim)
I was one of the last students to whom was 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 literally translated "Diploma in Informatics from a University of Applied Sciences (FH: Fachhochschule)". Going after the international student credit score it is settled between a Bachelor of Computer Science and a Master of Computer Science degree.