New Apple Magic Keyboard with Numeric Keypad is surprisingly good, even excellent!

Recently, I’ve managed to render my beloved old Apple Keyboard (full-size, with numeric keypad) useless – accidentally pouring half a glass of tap water over it was sufficient, unfortunately (due to the mineral ions in the tap water; distilled water wouldn’t have conducted electricity and thus wouldn’t have shorted circuits; on the other hand, drinking distilled water would probably shorten your life, so please don’t consider doing this).

Luckily, I could temporarily use a similarly old, compact Apple Bluetooth keyboard instead. As I really wouldn’t recommend that keyboard for everyday work though (poor, bubbly typing experience, odd placement of keys requiring weird function key combinations, no numeric keypad), I had to order a full-size keyboard as a replacement again, so I ordered one of the new Apple Magic Keyboards with a Numeric Keypad (in Space Gray and I really like that, but the colour doesn’t matter in regard to the typing experience):

(above is the Swiss German version, US version:

I first thought that the even smaller lift of the keys (luckily with scissor and not butterfly switches) of this new keyboard would be very disturbing and that I’d have a hard time getting accustomed to it.

To my big surprise however I got accustomed to this new typing experience within a couple of hours already and now, after about 3 weeks of using it, I can confidently say: I love this new Apple Magic Keyboard with Numeric Keypad even much more than my previous, old Apple Keyboard with Numeric Keypad and wouldn’t want to switch back anymore.

Typing with it feels so immediate, so quick and so “raw” and “crunchy”, it’s literally almost addictive. I can type considerably faster with it than with the previous keyboard, let alone any regular IBM-type keyboards (although I like those too, for their build-quality, for the interesting history and stories behind them, for their customizability and standardization, for the bustling keyboard enthusiast scene around it). Further, typing for a prolonged time feels much less tiring for the fingers, hands and forearms.

It feels as if you had to work with a wobbly tool for quite some time, then all of a sudden, get a very precise and exact instrument, like e.g. skiing with racing skis vs. with allround skis. It’s pure joy!

The difference is difficult to describe, so I would recommend you rather go experience it yourself and judge for yourself. For me, it’s my most favourite keyboard so far.

I’m even thinking of getting one for the Windows workstation at work too, it’s that good.

FreeNAS 11.2/FreeBSD BTX boot loader 1.0: Very slow booting if “Legacy USB 3.0 Support” is enabled

Starting with version 11.2-RELEASE-U1, FreeNAS uses the FreeBSD BTX 1.0 boot loader instead of Grub (reason: The FreeBSD boot loader finally started supporting ZFS – years after Grub supported it, BTW).

Unlike Grub, the FreeBSD boot loader seems to have rather “suboptimal” support for storage devices (like USB sticks, USB drives) that are accessed using the legacy USB 3.0 mode at boot time. So, when I upgraded FreeNAS from 11.1-U7 to 11.2-RELEASE-U2 on my home-built ASRock FreeNAS E3C226D2I NAS appliance, booting FreeNAS from an internal 16 GB USB 3 stick took all of a sudden almost 30 minutes(!) instead of the usual 1-2 minutes.

As I found out by “trial & error” (or educated guessing, as some would say), the only reason for this huge slowdown was that “Legacy USB 3.0 Support” was enabled in the AMI BIOS (the effect is reproducible). So, just disable “Legacy USB 3.0 Support”[1] in the BIOS and FreeNAS >= 11.2 will boot quickly again.

[1] Note: There’s no need to disable “Legacy USB Support”, so you’ll still be able to use your USB 2 keyboard or mouse at boot time.

Windows 10 backups using Duplicati

“File History”, the built-in backup functionality of Windows 10, leaves a lot to be desired. It starts with a totally non-intuitive, “dumbed-down” user interface (displaying a backup size of 0 bytes, “backing up your data…” and an enabled “Back up now” button at the same time) and ends with lacking transparency (no information about progress and speed at all) and checkability in general.

Luckily, there’s a better open source alternative: Duplicati

Duplicati might not be the fastest backup solution either, but it has a good, intuitive GUI and wizard. And it’s fully transparent and highly adjustable.

Paragon CampTune – a handy tool to resize the Boot Camp partition

Recently I ran out of space on a Boot Camp partition with Windows 10 Pro. So I looked around for ways to make more space for Windows by shrinking the macOS partition and enlarging the Windows partition. Apple doesn’t officially support this in Boot Camp without reinstalling Windows, and doing these operations by hand, e.g. with the help of GNU Parted, is time consuming and tedious.

Luckily, I stumbled over Paragon CampTune, a commercial macOS utility (ready for 10.14 Mojave) that automates these tedious tasks and allows to resize the macOS and Boot Camp partitions on the fly, without having to reinstall Windows or macOS.

It finally worked wonderfully, the only irritating thing was that the tool showed a bland error at the first start of the repartitioning process: “Object not found”. After restarting the process with slightly different partition sizes, it could be successfully completed.

I can thus recommend this handy utility as it can save hours of work for a few bucks (ca. 22 USD).

GitLab 10.5 and later: Solution for error “Validation failed for domain” with Let’s Encrypt

GitLab 10.5 introduced built-in support for Let’s Encrypt.

Unfortunately, if you follow the official GitLab instructions how to enable Let’s Encrypt support, you may encounter the following error when rebuilding GitLab:

Running handlers:
There was an error running gitlab-ctl reconfigure:

letsencrypt_certificate[] (letsencrypt::http_authorization line 3) had an error: RuntimeError: acme_certificate[staging] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/letsencrypt/resources/certificate.rb line 20) had an error: RuntimeError: [] Validation failed for domain

Running handlers complete
Chef Client failed. 11 resources updated in 11 seconds


Let’s Encrypt is enabled, but external_url is using http

The last line is rather misleading, as the domain validation can apparently also fail if one sets  external_url = “”

As a workaround, add the following two additional lines to /etc/gitlab/gitlab.rb (hat tip to Kai Mindermann and Thomas Jost for the hints):

nginx['redirect_http_to_https_port'] = 80
nginx['redirect_http_to_https'] = true


So, all in all, you need to set in /etc/gitlab/gitlab.rb:

external_url ''

and add the following lines (adjust the notification e-mail address):

letsencrypt['enable'] = true
letsencrypt['contact_emails'] = [''] # optional
nginx['redirect_http_to_https_port'] = 80
nginx['redirect_http_to_https'] = true

Make sure that your firewall doesn’t block access to ports 22 (SSH), 80 (HTTP), 443 (HTTPS).

After that, reconfigure GitLab (in a shell):

# gitlab-ctl reconfigure

That’s it! You can now register/login at

The ‘All-in-One WP Migration’ plugin is all you need to migrate your WordPress blog

This blog has just been migrated to a newer and (much) faster host node running Proxmox 5 with ZFS.

Therefore, I was looking for the best method to migrate a WordPress blog to another server (and/or database and/or directory and/or URL).

Do you remember the times when migrating a WordPress blog was rather tedious, involving many manual steps, despite (other) handy tools like WP-CLI? Apparently, this is no longer needed, as all you need is the following plugin:

All-in-One WP Migration

This plugin’s export and import functionality takes care of all the required configuration and path adjustments, allowing you to easily migrate a blog with up to 512 MB data. The steps are thus:

  1. Install the All-in-One WP Migration plugin on your current WordPress site
  2. Use the plugin to export all your data, plugins, themes, configuration etc., e.g. as a downloadable file.
    Note: In particularly tricky cases you can also manually replace certain strings in the db or exclude specific data and files.
  3. Setup a new vanilla WordPress installation at another location (server, directory). You’ll need a database and the WP installation files for this.
  4. Install the All-in-One WP Migration plugin on your new WordPress site
  5. Use the plugin on your new site to import the previously exported data from your old site

It’s hard to believe, but that’s really it!