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.
Reading hurts because people (me included) don’t know how to write. We don’t
cross out the wrong words.(sidenote: Mark Twain reference, at least
according to Civilization 6.)
If you don’t know how to keep
attention of your readers, do everyone a favor, yourself included, and be
concise. Go straight to the point and write 3-4 sentences instead of 3-4
paragraphs, because this is the most that people bear before losing interest.(sidenote: Too bad that schools teach the exact opposite of this idea.)
Yesterday I installed paperless-ngx for
management of my family documents. It is very good. It took me some time to
re-categorize everything, because I had hoped that its neural network would do
most of the grunt work, but it didn’t. After some learning it tagged some of the
documents (incorrectly) and didn’t touch most of them, so I had to resort to the
ordinary word- and regex-based rules. I actually had fun writing these and they
now do 90% of work for new documents.
I don’t have a scanner which can output to the network share, but I added the
consume directory(sidenote: Paperless-ngx automatically fetches all
new documents from it.)
to Syncthing and it’s great!
It’s refreshing to use completion system in fish. Instead of gazillion scattered
completion functions (like in Bash or ZSH), obscure manuals and unsearchable
documents that only lead you to reverse engineering some online examples, fish
has one command: complete. Just call it repeatedly for all possible
arguments and you’re done. complete -h gives all the necessary details and online
tutorial has many useful examples on top of it.
On one laptop I encountered a strange slowdown in zsh: loading any completion
script from a custom fpath, even an empty file, adds ~500 ms to the
startup time. I’ve heard many good things about fish, so I decided that this
might be good opportunity to give it a proper testing.(sidenote: I had
tried it few times in the past, but not for long.)
After few days,
and this is incredibly fast for me, I think that I’ll stick with it. Few minor
annoyances for me are:
I have some scripts which do something like ssh $SHELL -c ..., which fails
if there’s no fish on remote system (there usually isn’t). I had to switch to
SHELL=sh ssh $SHELL -c ...
I can’t get used to replacing oldschool backticks (for invoking subshell) with
parentheses
ctrl-c doesn’t produce an empty prompt - this makes sense, but I have a muscle
memory of doing it to produce a few empty lines of visual separation between
commands.
I kinda love everything else (including startup speed), so it’s a win I guess.
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.