Hi! My name is Michał Góral, I am software developer (currently at Nokia) and
this is my personal website. You can read more about me on a separate
page if you’re curious.
You can contact me by e-mail: dev@goral.net.pl. My PGP key
fingerprint is: 0423 DE59 98D1 2C33 E599 CDCF E3DD DA4D C45F 58CB.
Today, after at least 4 years of using
yaxo, when fixing MIME types for
directories, it occurred to me that having application/octet-stream for all
files (and directories) without extensions might be actually a bug of yaxo
rather than deficiency of QMimeDatabase, a Qt’s interface for MIME types.
Turns out, I understood what a local file is differently than Qt maintainers.
QMimeDatabase::mimeTypeForUrl turns on deep file inspection only for local
files, i.e. files which have a “file” scheme as per QUrl documentation.
QUrl("foo.txt") doesn’t have a “file” scheme, but QUrl("file:foo.txt") does.
The meaning of relative/absolute URLs for QUrl with absolute file paths is as
well different than my common sense, but this is another story.
It took me way too long to figure out why {"PrivateKey": "abcde"} and
{"PrivateKey", "abcde"} aren’t equal (hint: the latter one is set, not
dictionary and their string representations differ with only one character).
Today I discovered that my ISP, Netia, switched my dynamic public IPv4 address
to CGNAT. They did it a week ago or so without any prior notification and today
was the first time since then that I tried to connect to the Wireguard server on
my router.
Good thing I have Tailscale account and Tailscale doesn’t give a damn about
CGNAT or firewall rules which ISP might implement. I like Wireguard more though,
because it is simpler, fully self-hosted(sidenote: I’m aware about
Headscale)
and has nicer logo.
I wish more operators in Poland finally implemented IPv6 and be done with this
IPv4 nonsense.
Neovim 0.11 disabled building translations
by default which means that they’re no longer available in published artifacts
as well. This caught me by a surprise when I tried to update my neovim-mg DEB
package which I build for myself. To me this is accessibility issue for
non-English speakers which I resolved by switching to manual building of Neovim:
make \
CMAKE_BUILD_TYPE=Release \
CMAKE_EXTRA_FLAGS='-DENABLE_TRANSLATIONS=ON'
Neovim team says that building translations was too time-consuming, but to be
honest, I didn’t notice a big slowdown. Maybe it’s different when you build it
many times a day on CI.
Formatting is one of these parts of TWC which I disliked the most. This has
finally changed with release of TWC 0.9 and complete rewrite of formatting
strings syntax.
With markorapp, a script which I wrote, it's easy to create "singletons" in i3. Singletons are applications which should have only one instance, like a particular terminal.
Xsession is a default way of starting X sessions in Debian, but for some
reason it remains a mystery for many people. Here I try to shed some light on
it.
Structured Bindings is a new way to decompose values returned from functions. It's similar to some other programming languages and greatly simplifies the code.