The little one (7) saved for a new toy camera. After doodling around with the camera she mentioned wanting to make “movies” so I gave her a little tripod and suggested to go for a Stop Motion one. She listened to the overall idea and vanished in her room. A day later I was presented with a SD card full with over 300 pictures of one scene each carefully adjusted over the course of three hours.

I’ve to say I am really impressed with what she achieved here on her own just by listening to some ramblings of mine and fiddling with that toy camera, that sadly is not even able to write legit JPG images so they couldn’t be used as input for ffmpeg to make a movie out of the sequence. ImageMagick had my back though converting the faulty images to PNG and with two lines of console commands we managed to produce a movie she can proudly show her friends now:

mogrify -format png *.jpg
ffmpeg -framerate 5 -pattern_type glob -i 'PICT0*.png'  output.mp4

Of course she asked for an audio / voice-over next. Should have seen that one coming xD

Interesting. https://free-software-logo.codeberg.page/ by @mray@social.tchncs.de suggests a logo for Free Software. It’s licensed as CC0 (No copyright) for free use. This can be used to indicate / instead of using a company logo like e.g. from GitHub Inc., that may be used to _host_ free or open software but has a distinct logo of it’s own (the Octocat logo is a registered trademark).

It reminds me a lof of the Open Share and Open Source icon e.g. of the OpenWeb Icons set https://pfefferle.dev/openwebicons/ by @pfefferle@mastodon.social and may even be a nice addition.

I was eager for the second expansion set of “Cradle Of Humanity” since I enjoyed the Split Vendetta expansion a lot. Sunk many nights into this sandbox so I pre-ordered the DLC on GOG (Good Old Games) and watched that countdown to release ticking down. Oh boy, was I disappointed when the timer reached zero and I got nothing while people who bought on Steam already enjoyed the DLC. As usual GOG leaves Linux players standing in the rain so I called it a day and checked again on the next day when I was presented with this:

X4: Foundations patched, Split Vendetta was not, Cradle Of Humanity nowhere to be seen.

So apparently they finally managed to roll out version 4.0 of the main game but missed the first DLC Split Vendetta. What could possibly go wrong. Cradle Of Humanity is still nowhere to be seen. This didn’t change until now, one day after release and the time of writing of this article. Oh GOG, I am so done with this. And I even expected this, joking around weeks before the release date that this will be two weeks later for GOG users. Again.

Curiously I checked the Downloads for Windows next and guess what: The DLCs were all there and also on version 4.0!

So I did what every Linux tinkerer would do. I checked out what is really in the DLC files by extracting the contents using innoextract. To my delight I could not find anything operating system related in there so I threw all the Windows DLCs into my version 4.0 base game folder and extracted both DLCs.

The required files are:

  • setup_x4_cradle_of_humanity_4.00_(64bit)(45636)-1.bin
  • setup_x4_cradle_of_humanity_4.00(64bit)(45636).exe
  • setup_x4_split_vendetta_4.00(64bit)(45636)-1.bin
  • setup_x4_split_vendetta_4.00(64bit)_(45636).exe
cd /games/linux/X4_Foundations/game
innoextract --exclude-temp --extract setup_x4_split_vendetta_4.00_\(64bit\)_\(45636\).exe 
innoextract --exclude-temp --extract setup_x4_cradle_of_humanity_4.00_\(64bit\)_\(45636\).exe

When I run the game now I found both DLCs registered in the Extensions menu and could start a new game as Terrain fraction. Whop whop, here we go.

No, I will never buy a recent game on GOG again. Especially not as pre-order. I wish I could migrate this to my Steam account. This is the DRM free revolution. As usual, the joke is on the paying customer.

tl;dr: Add PATH="${PATH}:/bin:/usr/bin:/sbin:/usr/sbin" to /etc/default/firehol when using backported version 3 of firehol on Ubuntu.

firehol – an easy to use but powerful iptables stateful firewall

man firehol

With this out of the way: When installing firehol on aging Xenial (Ubuntu 16.04) you want the backported packages by Andrey Galkin to get version 3 of firehol over version 2 in universe – especially when working with IPv6: https://launchpad.net/~andvgal

When done setting up your rules you may find out after a reboot that the systemd job involved will claim to have started firehol but eventually discover that your iptables are empty despite systemd claiming otherwhise and having set START_FIREHOL=YES in /etc/default/firehol:

● firehol.service - LSB: firehol firewall configuration
   Loaded: loaded (/etc/init.d/firehol; bad; vendor preset: enabled)
   Active: active (exited) since Fr 2020-11-27 15:43:51 CET; 2h 8min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 31555 ExecStop=/etc/init.d/firehol stop (code=exited, status=0/SUCCESS)
  Process: 31574 ExecStart=/etc/init.d/firehol start (code=exited, status=0/SUCCESS)

This is especially weird when you run the startup /sbin/firehol start command manually and it succeeds just fine.

I had to dig deep to find out where the script is in fact falling flat. This was mostly because of old init script /etc/init.d/firehol redirecting the output of the starting process to /dev/null not showing the errors at all:

do_start () {
        # return
        #  0 000 if firewall has been handled
        #  1 001 if firewall could not be activated
        #  4 100 if FireHOL is disabled via /etc/default/firehol
        [ "$START_FIREHOL" = "NO"  ] && return 4
        /sbin/firehol start "$@" > /dev/null 2>&1 || return 1

Now we finally get a result and with INIT_VERBOSE=yes set we do indeed get some useful output:

Nov 27 17:59:38 firehol[27095]: /sbin/firehol: line 33: dirname: command not found
Nov 27 17:59:38 firehol[27095]: /sbin/firehol: line 33: cd: HOME not set
Nov 27 17:59:38 firehol[27095]: /sbin/firehol: line 33: basename: command not found
Nov 27 17:59:38 firehol[27095]: /sbin/firehol: line 36: dirname: command not found
Nov 27 17:59:38 firehol[27095]: Cannot access /install.config
Nov 27 17:59:38 firehol[27095]:    ...fail!

And this is basically yelling at us that the PATH variable is not set because the script can not find and execute required commands. Sadly this fail is not catched or logged without verbose information and thanks to the /dev/null redirect at all.

At first glance I was going to blame systemd isolating the script from environment variables but that was too fast because setting it explicit changed nothing. To blame is the old set-up logic of the init script /etc/init.d/firehol right at the top not allowing /usr/bin where dirname or basename and others are found.

PATH=/bin:/sbin
NAME=firehol
DESC="firewall"
SCRIPTNAME=/etc/init.d/$NAME

test -x /sbin/firehol || exit 0

[ -r /etc/default/firehol ] && set -a && . /etc/default/firehol

I compared the /sbin/firehol script of version 2 with version 3 and there is a subtle difference at the start in version 2 that is missing in version 3:

# EXTERNAL/SYSTEM COMMANDS MANAGEMENT
#
# ------------------------------------------------------------------------------
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# ------------------------------------------------------------------------------

export PATH="${PATH}:/bin:/usr/bin:/sbin:/usr/sbin"

I’d argue that version 3 missing this is more correct because setting up the PATH is really the job of the system that is running the script. So basically SysVinit or systemd. Sadly that doesn’t help us here and fiddling with a maintainer provided file is a no go because this will be erased on the next update (if any). Luckily we can see from the init script /etc/init.d/firehol that it also sources the file /etc/default/firehol. This means we can set any additional environment variable here:

# FireHOL application default file
# sourced by the initscript `/etc/init.d/firehol'.

PATH="${PATH}:/bin:/usr/bin:/sbin:/usr/sbin"

# To enable firehol at startup set START_FIREHOL=YES (init script variable)
START_FIREHOL=YES

After editing this file we finally get some more information and our iptables are piling up with rules again.

● firehol.service - LSB: firehol firewall configuration
   Loaded: loaded (/etc/init.d/firehol; bad; vendor preset: enabled)
  Drop-In: /etc/systemd/system/firehol.service.d
   Active: active (exited) since Fr 2020-11-27 18:17:41 CET; 1s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 14337 ExecStop=/etc/init.d/firehol stop (code=exited, status=0/SUCCESS)
  Process: 14511 ExecStart=/etc/init.d/firehol start (code=exited, status=0/SUCCESS)

Nov 27 18:17:39 systemd[1]: Starting LSB: firehol firewall configuration...
Nov 27 18:17:39 firehol[14511]: Params
Nov 27 18:17:39 firehol[14511]: FireHOL: Saving active firewall to a temporary file...  OK
Nov 27 18:17:40 firehol[14511]: FireHOL: Processing file '//etc/firehol/firehol.conf'...  OK  (470 iptables rules)
Nov 27 18:17:41 firehol[14511]: FireHOL: Activating ipsets...  OK
Nov 27 18:17:41 firehol[14511]: FireHOL: Fast activating new firewall...  OK
Nov 27 18:17:41 firehol[14511]: FireHOL: Saving activated firewall to '//var/spool/firehol'...  OK
Nov 27 18:17:41 systemd[1]: Started LSB: firehol firewall configuration.

Personally I can’t wait for all init scripts to sink into oblivion because debugging this sort of errors is hard and a waste of time and usually revolves about problems solved already in many different ways before – each falling flat in some corner case.

I seldom dabble in the corporate hell of Windows devices but sometimes I have to “use” a laptop to access some VPN to do my magic job and I have no idea how anyone can work like this.

I’m talking about the full set here starting with BitLocker, Cisco AnyConnect (yuk), virus protection and gods know what else.

Every time I start this I get to wait for 2-4 hours until all the updates are done while I’m getting swamped with pop-ups from all kinds of pre installed software each in their individual fashion and style asking me to click, tap, accept, proceed or acknowledge something I’ve no idea about.

Speaking of I usually even have a hard time reading anything on this excuse of a display. For unknown reasons someone thought it’s a good idea to design a default theme with probably fifty shades of grey (I know about high contrast mode but that makes it worse).

I am only a user on such a device without any admin permissions. Why am I even bothered with all this? And while I wiggle my way through all the pop-ups overlapping each other stealing input focus again and again trying to get anything done… Reboot required. Now. Reboot and… repeat! There are more updates we didn’t know of before!

In between an occasional error pops up about something not being able to install something because of some error. The amount of provided information is killing me.

And it’s slow. So gorram slow. What is this thing doing with an i5 processor all the time? And why do I have to babysit it for updates at all?

Eventually I may be able to use the device only to be prompted to change my password due to reasons. And bite me, every time I have to figure out what new password may be fine because the prompt won’t suggest the password rules or anything.

At the end of the day I’m happy that I can use a system again that, as odd as it may seem, provides a much better user experience [to me]: A Fedora Workstation. It just works.

Today I scratched an itch I had with and . Every time I run it on my PC I have to drag around the window until it fills my 3 displays setup. It’s tricky because it’s a grown installation and the displays have different resolutions.

Gnome has smart borders auto-sizing windows when you come close to a border. Usually that’s awesome but in this case it’s not. wmctrl to my rescue!

Find out about current window position when satisfied: wmctrl -G -l -x

Use that information for a one liner script: wmctrl -x -r code.Code -e 0,0,109,5276,1136

This will do until I get a 4k display or learn how to auto-run this snippet on the launch of vscode (like I do this with RisingWorld to force semi borderless fullscreen) 🤣

This isn’t strictly based on sources. The goal was a church for a walled city center ~14C in England. There’s a lot of free interpretation here since I don’t know all the details and I’m somewhat limited by the engine, of course. I mean creating arches and getting the geometry right in Rising World is a pain in the neck. I’m still very happy with the outcome especially considering that this is on a survival server.

This build will now go to another person to add the final details and textures.

Visited the theme park at Cleebronn 74389 / Germany. Since we made almost no trips this year we finally gave in for a day of entertainment and roller coasters before the off-season would end for the winter break.

It’s a very old theme park and I remember many of it’s attractions from my own childhood. It’s really weird (in a good way) how memories came up at almost every ride. Nowadays I also appreciate the timber framed constructions – even the ones that are obviously fake but made to look like the real thing – or are in parts 😀 Some of the roots of this place go really far back.

Our preparations were warm clothes, a handcart full of replacement clothes, towels, food, water and candy. That worked well. The children had a lot of fun, could eat whenever they felt hungry and naturally fell asleep in the car on our journey back home. I was surprised that they really tried everything they were allowed to try (by age and size) including all the roller coasters. I felt sick after various rides but the children wouldn’t stop begging for more.

We had pre purchased a slot for the family (the park has limited entry due to Corona virus), kept our distance to other people as good as others let us (*sigh) and we kept our masks on most of the time – even outdoors. The only exceptions were quiet places when nobody else was around. A good effect of the policies were next to zero waiting times for the rides – but I bet the park managers would argue otherwise on this topic 😅

The uneasy feeling especially with infections on the raise again never left me though and came back full force when the park closed in the evening and all people flocked to the departure gate. This was when we went in the opposite direction to visit a way less frequented public toilet one last time before we left the park as some of the very last visitors eventually.

…and I got a new sticker for the back of our Renault Zoe 😉

https://tripsdrill.de/en/

There’s a weird issue with (snap) on that starts when using voice chat causing really bad lag and short freezes (input, rendering, everything) that became worse over time. My journal filled up with looping messages from appindicator causing this.

appindicatorsupport(at)rgcjonas.gmail.com[2514]: discord1, Impossible to lookup icon for 'discord1_12-panel'

Followed by a JS exception and trace:

JS ERROR: Exception in callback for signal: icon: Error: Argument 'filename' (type filename) may not be null

When I finally found the cause of this I went on looking for a solution and it seems like the unsung hero @3v1n0 fixed this long standing bug like 8 days ago: https://github.com/ubuntu/gnome-shell-extension-appindicator/commit/745c66a73e0a15a870e92e5aa461e2e9e646b899

Here is a more coherent report on this: https://bugs.launchpad.net/ubuntu/+source/gnome-shell-extension-appindicator/+bug/1849142

Fun thing is: I only have that indicator because Discord would eventually crash without trying to access this.

Now it’s patched and gone – back to 😁