Performance Comparison C vs. Java vs. Javascript vs. LuaJIT vs. PyPy vs. PHP vs. Python vs. Perl

, 10 min read

1. Introduction. I always wanted to benchmark PHP, to confirm myself that choosing PHP as a static site generator is not a dead-end, compared, for example, against node.js. PHP 7 has already made huge performance advancements. See PHP 7: Features and Performance Comparison: Drupal - Compared to…

Calling MD4C from PHP via FFI

, 6 min read

1. Problem statement. When using one of the static site generators an important part of all of them is to convert Markdown to HTML. In my case I use Saaze, and I measured roughly 60% of the overall runtime is used for converting Markdown to HTML. I have written on Saaze here and here. When…

Brave Browser SIGSEGV Crash

, 1 min read

Today I saw a SIGSEGV error when fetching data from Twitter: After reloading the page the error was gone. I hadn't seen this kind of error before. Version used: Brave 1.25.73, Chromium: 91.0.4472.106 (Official Build) (64-bit). Revision…

Deletion Troublesome in Hashnode.com

, 2 min read

Before I moved away my blog from WordPress.com to this place, I checked whether another provider would fit my needs. See for example surge.sh, vercel.app, or netlify.app. I also looked at Hashnode.com. I liked Hashnode as it provides Markdown as input. I later learned that Hashnode also provided…

WordPress.com Bulk Update

, 2 min read

I wanted to redirect Google search results from WordPress.com to this blog. Ideally, one would add a "canonical link" in the head-tag of the HTML code. See for example stitcher.io: 07 — Be Searchable: <head> . . . <link rel="canonical"…

Ampersands in Markdown URLs

, 2 min read

In this blog I reference web-page- or image-URLs, which contain ampersands ("&"). For example, https://www.amazon.com/s?k=Richard+Stevens&ref=nb_sb_noss. Unfortunately, Markdown as specified by John Gruber does not allow this. This can be checked with John Gruber's…

Using NUC as WLAN Router

, 4 min read

I had already written about setting up an Odroid as IP router: Using Odroid as IP router. Today I powered down my second Odroid, which I had previously used as WLAN router. There was nothing wrong with the Odroid. It just drew 7W and the NUC was already running next to the Odroid. So there was no…

Matomo with Hiawatha

, 1 min read

For this blog I use the Hiawatha web-server. I wanted to employ a web-analysis tool. For this I chose Matomo. Matomo was called Piwik previously. I already use GoAccess on which I have written in Using GoAccess with Hiawatha Web-Server. To use Matomo with Hiawatha I had to do the following: Unzip…

Generate RSS from Markdown

, 3 min read

For this blog I wanted an RSS feed. Saaze does not provide this functionality. Saaze is supposed to be "stupidly simple" by design, which I consider a plus. Since 15-Aug-2022 Simplified Saaze can generate a RSS XML feed. Simplified Saaze, so to speak, is the successor of Saaze. This post…

Configure Lighttpd With PHP and HTTPS

, 1 min read

I use the Hiawatha web-server on my servers. For example, this blog runs on Hiawatha. Recently I needed a web-server on Red Hat Enterprise. Unfortunately, Red Hat does not provide Hiawatha directly on its Satellite program, but Lighttpd was there. I also wanted to use PHP and the connection should…

Speed-Tests With Pingdom.com

, 2 min read

As I have moved my blog from WordPress to eklausmeier.goip.de, I wanted to know if I am really getting better response times across the globe. WordPress always felt slow. Below measurements will confirm this. Pingdom.com is a monitoring and performance measurement website. See Wiki article. The…

Using GoAccess with Hiawatha Web-Server

, 3 min read

GoAccess is a remarkable analyzer for your log-files written by the web-server. For example, GoAccess can read and analyze the log-files from Apache web-server. In the same vein, after some configuration, it can also read and analyze the log-files from Hiawatha web-server. The Hiawatha web-server…

Moved Blog To eklausmeier.goip.de

, 3 min read

The blog eklausmeier.wordpress.com is no longer maintained. I moved to eklausmeier.goip.de, i.e., this one. During migration I corrected a couple of minor typos and dead links. Main reasons for the move: This new WordPress editor put the last nail in the coffin, existing content is garbled once…

PHP extension seg-faulting

, 5 min read

Task at hand: Call Cobol (=GnuCOBOL) from PHP. I used FFI for this: <?php $cbl = FFI::cdef("int phpsqrt(void); void cob_init_nomain(int,char**); int cob_tidy(void);", "/srv/http/phpsqrt.so"); $ffj0 = FFI::cdef("double j0(double);",…

Add Disjoint IP Addresses To SSHGuard Blacklist

, 1 min read

Problem at hand: There are multiple machines running SSHGuard. Each of these machines accumulates different sets of blacklists. Task: Add disjoint IP addresses from one machine to another machine's blacklist. 1. Copy from "master" machine: scp -p master:/var/db/sshguard/blacklist.db…

Lesser Known Static Site Generators

, 3 min read

Well known static site generators are Hugo (written in Go), Pelican (written in Python), Grav (written in PHP), or Eleventy (written in JavaScript). For a list of static site generators see Jamstack (322 generators listed) or Static Site Generators (460 generators listed). The following three…

Testing J-Pilot feature-gtk3 branch

, 3 min read

J-Pilot 1.8 still relies on GTK+ 2, which is heading towards planned deprecation. The entire work to migrate to GTK+ 3 is done by volunteers, Judd Montgomery and David Malia. This post is about testing this new experimental branch feature-gtk3 from GitHub. Installing this branch is…

Analysis And Usage of SSHGuard

, 5 min read

To ban annoying ssh access to your Linux box you can use fail2ban. Or, alternatively, you can use SSHGuard. SSHGuard's installed size is 1.3 MB on Arch Linux. Its source code, including all C-files, headers, manuals, configuration, and makefiles is 8 KLines. In contrast, for fail2ban just the…

ssh as SOCKS server

, 1 min read

Assume three computers A, B, and C. A can connect to B via ssh, but A cannot connect to C, but B can connect to C. A -> B -> C On A open ssh as SOCKS-server with ssh -N -D 9020 user@B Now on A one can use brave --proxy-server="socks5://localhost:9020" The browser will then show…

Poisson Log-Normal Distributed Random Numbers

, 1 min read

Task at hand: Generate random numbers which follow a lognormal distribution, but this drawing is governed by a Poisson distribution. I.e., the Poisson distribution governs how many lognormal random values are drawn. Input to the program are $\lambda$ of the Poisson distribution, modal value and…