Jekyll2025-09-12T23:49:57+02:00https://jurf.github.io/feed.xmlFunction Over FormOn things things I hope someone else will find useful too.Juraj FialaOne year with Brain.fm2024-08-17T00:00:00+02:002025-09-12T00:00:00+02:00https://jurf.github.io/2024/08/17/one-year-with-brain-fmRepetitive and overpromising; don't you ever dare take it away from me.

I have been using Brain.fm for 531 consecutive weeks, as it likes to remind me every time I open it. I have wanted to write this review since the first week, but I first wanted to be sure I arrived at something truly sustainable. I now feel I have enough experience.

Context

Brain.fm has been on my radar for several years, but its previews on YouTube did not interest me too much, and the price turned me away if I ever returned.

However, I frequently struggle with motivation. Sitting down to a daunting task and getting started feels like climbing a mountain if I am under a significant mental load.

Another thing is that I am susceptible to noise. Any talking around me completely throws me off balance and cripples my performance.

What I’ve tried

One thing that I found really helped was music. It needs a particular type – no vocals, not too lively but also not white noise, slightly rhythmic, and very long. The right music can change the mountain climb into a stroll, sometimes even pleasurable.

Over time, I developed a small collection of music. Here are some of my favourites:

  • Lo-fi whatever, I’ve heard it all
  • LotR, Narnia, and Harry Potter study playlists
  • Coding Mode on Spotify
  • This playlist by randy2
  • Minecraft, WoW, Civilization VI soundtracks
  • ADHD relief/study music
  • Random jazz/piano/instrumental

Also, f*ck Ambient Worlds. They saturated the market, but all of their playlists have five songs on repeat.

However, this well of media eventually ran dry, and after several months, I heard everything I had to hear and did not find much more. That’s when I stumbled on Brain.fm and decided to give it a go.

The variability issue

At first, I was over the moon. The music seemed endless, had configurable intensity, different playlists for different tasks, and was play-and-forget – just… perfect.

But after a few weeks, you start recognising tracks. Then you start recognising more. Then you know them by heart.

One year later, do I mind? Yes and no. There is definitely repetitiveness involved. But few tracks are recognisable enough to get appropriately annoying. Some things that also help:

  • Switching around Activities. This takes some getting used to, as at first, everything sounds like “Deep Work”, but that gets old fast. Getting more intentional with what you are doing and your pick helps immensely
  • Changing around Neural Effect levels. I mostly settled on “Low”, but changing it around, especially during different times of day and the number of stimuli in the environment – I like increasing it when it’s dark outside – unlocks some completely new tracks
  • Embracing all genres. I do not like piano tracks too much. I got used to them and now enjoy the variety.
  • Enjoying updates. One thing I have to give to the team behind Brain.fm is that they are constantly adding new tracks. They tend to come in batches every so often, which I did not realise at first when I first started to get fed up. But not too long after that, they dropped a tonne of new tracks, and that kept me stimulated for a sizeable amount of time, and it’s been like that ever since.
  • Working less. The problem is most pronounced when I am overworked. There have been times when I came home from work and started grading homework, and that’s when the repetitiveness became unbearable. However, the bigger problem is a lifestyle like that is entirely unsustainable. I would say that for an 8-hour workday, it is good enough, anything above that starts becoming a problem.
  • Work hygiene. Another thing I noticed is that once, thanks to Brain.fm, I developed strong work morale, I relied on it much less. Currently, I only fire it up at work if I am under high mental strain or there is noise about, but more often than not, I work in quiet and enjoy it. Over time, Brain.fm became less life support and more a lifesaver. I use it more for a boost to help me overcome tasks that I hate or when I need more creativity.

So, overall, do I wish the variability was higher? Yes, but it’s far from a dealbreaker.

Regarding “neural effects”

Speaking of creativity, a lot of marketing on Brain.fm focuses on improving focus and productivity by hacking the brain with music.

This is my personal experience with my own rather weird brain, and it will probably be different for you. But, overall, after a year of use, I cannot report any mental gains. I tend to hyper-focus quickly and get into a flow state. Brain.fm did not really change the quality of that. What it does help me with is broadening the environments I can operate in and making focus on-demand, making me less of a slave of my current mental state.

However, the one thing it does help is creativity. I love listening on Creativity mode if I am doing graphic design, photo editing, writing, or struggling with a hard coding problem. I am listening to it now on a train and vibing hard, having turned it on after struggling to find sentences in the kerfuffle and overall not enjoying the experience at all. That has been my consistent experience with Brain.fm and creative tasks. Also, the creative tracks are pure bangers.

Note that this experience is not restricted to Brain.fm for me. Any kind of music helped. Brain.fm is just much more consistent.

Not for everyone

Another thing that I noticed is that, despite my very enthusiastic and ambassador-prone personality, I am still the only one of my friends who uses it after a year. Some have tried it and did not find it helped them. Some, when they listen to it, say, “Wow, that is the most generic-sounding music I have ever heard”. But I have not yet found anyone whom it helped quite like me.

What I miss

From the more technical side, the mobile app is very sluggish, being almost unusable on my older phone. It also seems to get features quicker than the web version, i.e., for a long time, it had a Light Work mode that was missing from the web version, which I sorely missed. Even now, it has a Meditation mode that’s not available on the website. If you plan to use the web version primarily, this is a consideration.

Another thing I miss is an offline mode. It buffers quite far ahead, but if you open it on a train with no phone signal, you are pretty much screwed until you manage to load at least something.

But the biggest gripe I have that troubles me deeply is that this tool that greatly increases my quality of life, ability to focus, and makes me a more capable person overall is… subscription-based. The fact that this company could go under tomorrow and leave me with nothing is something I have to solve.

I have no interest in aiding piracy and will gladly pay money for this service for as long as it is available, but if I find a way to backup the whole site I will do so in a heartbeat. If anyone has tried to do this successfully, please email me.

I won’t share the code or the results, but one day, Brain.fm, as all online services, will disappear. After that, who knows, you might find an archive here.

Should you get this

For me, the bottom line is that if you already listen to a lot of study/work playlists, buying Brain.fm will streamline your experience and readily pay for itself.

If you are short on money, did you know they offer a 20% student discount? They do not advertise it much, but it helped me pull the trigger when I had little money to spare.

If you are looking for a way to hack your way to better productivity, your mileage may vary. I say, try it for 30 days (here’s a link3 for an extended 30-day free trial) and see.

  1. I have since broken the streak, but it has been over two years and my opinion has not changed

  2. Who inevitably persuaded me to switch to Brain.fm, fun fact

  3. Disclaimer: This is a referral link and gives me one free month if you decide to buy it. This option did not exist when I originally wrote this review, and it did not influence it in any way. You can also use the old non-referral link if this does not suit you

]]>
Juraj Fiala
How to implement a bilingual QMK layout for programming (with EurKEY)2024-01-22T00:00:00+01:002024-01-22T00:00:00+01:00https://jurf.github.io/2024/01/22/bilingual-qmk-layout-for-programmingI frequently write in two different languages – Slovak and English. The Slovak layout is fine for day-to-day use, but for programming, the English (US) layout is much more ergonomic.

Another problem is that you have to use Shift to access numbers in the number row, which tends to break the design of smaller layouts, while also requiring you to build up twice as much muscle memory, which is very confusing.

Not long after writing my first blog post on my layout, I concluded that I had had enough and decided to make a hybrid EN/SK layout.

I use the base Miryoku layout and use the outer keys for the accented versions. This guide summarises how to make them work while keeping the core Miryoku intact.

reference

Architecture

There are three options I considered:

  1. Use the Slovak layout and add overrides for the symbols
  2. Type all the Slovak keys with Unicode input methods
  3. Use an international layout to implement the Slovak letters

All three have their pros and cons. Using the Slovak layout meant that I could use QMK’s existing language-specific keycodes, but I would have to override all of the 21 shifted symbols.

I also wanted to implement Shift making capital versions of the Slovak keys, which would add another 12 overrides.

That sounded tedious and a waste of firmware space.

Using the Unicode input option would be just slightly annoying when typing (due to the delay and flash of characters) but much simpler (just 12 overrides). However, I wanted it to be cross-platform without having to install any programs.

So I explored using international layouts. My first thought was the US International layout, but the version in Linux did not have the dead keys I needed.

I then stumbled upon the EurKEY layout. It was cross-platform, pre-installed in Linux and supported many of the keys I needed. It also supported adding Shift to make capital versions of the characters, unlike the Slovak layout! That meant no need for overrides.

However, about half of the characters needed to be typed with a dead key. It has a smaller delay and flash than the Unicode option, but it turned out a bit tricky to implement correctly.

Implementation

If your language only uses keys already present in the layout, the implementation is dead simple. Create macros for all the keys you need.

#define EU_YACU ALGR(KC_R)   // ý
#define EU_AACU ALGR(KC_X)   // á
#define EU_IACU ALGR(KC_B)   // í
#define EU_EACU ALGR(KC_G)   // é
#define EU_UACU ALGR(KC_J)   // ú
#define EU_OACU ALGR(KC_DOT) // ó
#define EU_ADIA ALGR(KC_A)   // ä

You can immediately start using these in your keymap.

For full functionality, you only need to deal with some nuances, like configuring Caps Work to not consider them word breaking, or adding them to the Auto Shift configuration1 if you use it.

The dead keys are a bit more involved. For each one, you need to define a custom keycode. Then, during handling, you need to:

  1. Remove any Shift modifiers2
  2. Type out the sequence needed to type the dead key (e.g. using macros)
  3. Add back the modifiers
  4. Check if Caps Word is on and manually add a weak Shift if yes
  5. Type out the base character

Check my QMK fork for a reference implementation.

Mod-Taps

An unfortunate reality is that Mod-Taps do not support 16-bit keycodes. This affects both regular (as they are accessed with modifiers) and dead key characters.

I recommend refactoring the functionality into three functions.

  1. Dead key implementation
  2. Override of the tap functionality of regular keys
    • Note that this will also need manual application of Caps Word
  3. Override of the tap functionality of dead keys

Then your process_record_user can look like this:

switch (keycode) {
    case EU_OCIR ... EU_ZCAR:
        return process_deadkey(keycode, record);

    // Mod-taps do not support 16-bit keys; manually set the keycode
    case SFT_T(EU_OACU):
        return process_modtap(EU_OACU, record);
    case GUI_T(EU_OCIR):
        return process_modtap_deadkey(EU_OCIR, record);
    case SFT_T(EU_NCAR):
        return process_modtap_deadkey(EU_NCAR, record);

    default:
        return true;
}
  1. Unfortunately I did not manage to implement it for the dead key characters. It is not a big deal to me but if you figure it out, send me an email and I’ll add it here

  2. This is only necessary if you want Shift to make a capital letter

]]>
Juraj Fiala
Naivná analýza Colemak-DH v slovenčine (vs. Qwertz/y, Dvorak, Colemak a Workman)2023-07-16T00:00:00+02:002023-07-16T00:00:00+02:00https://jurf.github.io/2023/07/16/colemak-dh-slovakUž dlhšie sa zaujímam o alternatívne rozloženia klávesnice.

Prácou na počítači sa živím a už dlhšie ma sprevádza bolesť v rukách. Pri týchto rozloženiach ide o minimalizáciu úsilia (nie maximalizáciu rýchlosti, čo je častá miskoncepcia), vďaka čomu vedia s touto do dlhodoba bolesťou pomôcť.

Avšak žiadne z dostupných analýz sa nevyužíva slovenčinu, takže je ťažké povedať, ako veľmi a či vôbec sa dá profitovať z nejakého rozloženia v slovenčine. Preto som sa rozhodol spraviť vlastnú analýzu.

Výsledky

Rozloženie1 Námaha (EN)2 Námaha (SK)2 Zlepšenie (EN) Zlepšenie (SK)
Qwerty 2,383 2,389
Qwertz3 2,363 2.392 0,8 % 0 %
Dvorak 1,931 2,055 19,0 % 14,0 %
Colemak 1,836 1,981 23,0 % 17,1 %
Workman 1,806 2,087 24,2 % 12,6 %
Colemak-DH 1,735 1,937 27,2 % 18,9 %

Ako vidno, čim špecializovanejšie sú rozloženia na špecifiká angličtiny, tým menej sa prenášajú zlepšenia na slovenčinu.

Pozorovania

  • Z rozložení, čo som skúšal, mal Colemak-DH najlepšie výsledky
  • Najčastejšie písmeno v slovenčine je o, ale v angličtine (a vo veľkom množstve západných jazykov) je to e, čo je smola, lebo e má častokrát jedno z najlepších miest
  • Medzi Colemak-om a Colemak-DH nie je v slovenčine prakticky žiaden rozdiel, pokiaľ sa aplikuje na oba angle mod (Colemak táto zmena zníži na 1,936)
  • Aj keď oba majú pomerne dobré výsledky, majú značné využitie vnútorného stĺpca, čo sa prejavuje hlavne na ortogonálnych a stĺpcových klávesniciach

Obmedzenia

  • Táto analýza využíva model použitý na analýzu Colemak-DH, takže ho (samozrejme) preferuje
  • Využíva iba uni- a bi-gramy; nebeží na skutočnom texte
  • Tieto dáta sú vytvorené z textov Wikipédie (z 2012), nie z korpusu
  • Iba top sto n-gramov bolo použitých (chýba archív dvojgramov, tak sú iba scrapenuté zo stránky)
  • Chýbajú štatistiky interpunkcie, hlavne di-gramov s písmenami, ktoré nechýbajú v originálnom datasete

Tepelné mapy

Generované pomocou interaktívneho nástroja. Ak chcete skúsiť iné rozhrania alebo nastavenia, nájdete ho nižšie.

Qwerty (angličtina) Qwerty (slovenčina)

Qwerty (angličtina vs. slovenčina)

Dvorak (angličtina) Dvorak (slovenčina)

Dvorak (angličtina vs. slovenčina)

Workman (angličtina) Workman (slovenčina)

Workman (angličtina vs. slovenčina)

Colemak (angličtina) Colemak (slovenčina)

Colemak (angličtina vs. slovenčina)

Colemak-DH (angličtina) Colemak-DH (slovenčina)

Colemak-DH (angličtina vs. slovenčina)

Čo ďalej

Pre mňa asi nič, ale pre záujemcov je viacero možností:

  • SAV má k dispozícii korpus slovenského jazyka, ktorý by sa dal použiť na vytvorenie lepšej analýzy. Na jeho použitie ale treba ale poslať podpísaný list
  • Podobne by sa dal spraviť lepší korpus z Wikipédie, ktorý by obsahoval aj interpunkciu a nový obsah za posledných 11 rokov
  • bclnr/kb-layout-evaluation a engram obsahujú mnohojazyčné analýzy, do ktorých by bolo zaujímavé napojiť slovenčinu

Záver

Túto analýzu som začal, lebo som sa naučil Colemak-DH kvôli angličtine, a chcel som zistiť, či mi to nezhoršilo písanie po slovensky. Myslím, že aj takáto jednoduchá analýza stačí, aby sa dalo povedať, že nie – možno dokonca až to, že to stojí za to.

Budem ešte písať o tom, prečo práve Colemak-DH, ale v skratke:

  • Hociaké optimalizované rozloženie je lepšie ako Qwerty
  • Colemak-DH je dostatočne dobrý; má veľmi slušné výsledky vo väčšine analýz, čo som videl
  • Netreba podceniť námahu potrebná na prechod. Tu má Colemak-DH veľkú výhodu vďaka množstvu zdieľaných kláves (a ich prideleniu k rukám) s Qwerty
  • Vďaka prechodovým rozhraniam Tarmak sa dá naučiť aj popri práci
  • Má širokú komunitu

Nástroj

Výsledky môžete porovnať s originálnou verziou.

  1. Z môjho výskumu sa mi nezdá, že by na Slovensku boli alterntatívne rozloženia nejak populárne, tak tu uvádzam iba zopár najznámejších. Ďalšie sú k dispozícii v interaktívnom nástroji.

  2. Použil som alternatívne rozloženie prstov (viď nástroj), lebo neverím, že niekto skutočne píše s tradičným, ktoré má beztak horšie výsledky.

  3. Qwertz je optimalizované pre nemčinu. Nechal som ho tu len aby som ukázal, aké zbytočné je používať ho v slovenčine.

]]>
Juraj Fiala
Installing KMonad on Fedora Silverblue2023-07-13T00:00:00+02:002024-01-22T00:00:00+01:00https://jurf.github.io/2023/07/13/silverblue-kmonadSince KMonad does not have a Fedora package, I was reluctant to try it out. However, it is much simpler than I thought, although it does have a few quirks, so I decided to write a short guide.

Installation

Binary

The easiest1 way is to download the binary from the releases page, mark it as executable and put it into ~/.local/bin.

From source

I used stack for this, but you might prefer to use Docker instead.

git clone git@github.com:kmonad/kmonad.git
cd kmonad
toolbox create kmonad
toolbox enter kmonad
sudo dnf install stack
stack install

This will install KMonad into ~/.local/bin. It does not need to be installed system-wide.

Permissions

To run KMonad, you will also need to configure some necessary permissions.

First, add the udev rule for UInput, e.g. in /etc/udev/rules.d/90-kmonad.rules:

KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"

A Silverblue-specific workaround is needed to be able to add the user to the required groups.

grep -E '^uinput:' /usr/lib/group >> /etc/group
grep -E '^input:' /usr/lib/group >> /etc/group
systemctl reboot

Then, add the user to the uinput and input groups:

sudo usermod -aG uinput $USER
sudo usermod -aG input $USER

Log out and log back in, and you should be able to run kmonad.

Autostarting

There is a systemd service available in the repo.

If you want an easier way to control it, I wrote an extension for integrating it into GNOME Shell.

Get it on GNOME Extensions

  1. When first writing this guide, I somehow completely missed this option. Sorry for that!

]]>
Juraj Fiala
My split keyboard layout: A 60% Miryoku2023-07-11T00:00:00+02:002024-01-22T00:00:00+01:00https://jurf.github.io/2023/07/11/60-percent-miryokuI have a soft spot for 40% keyboard layouts. However, Slovak uses 461 letters, compared to English’s 26, so having them only on layers quite drastically reduces your typing speed. Thus I am stuck with a 60% board… but why not have the best of both worlds?

The layout

I did quite a lot of experimenting with my own layouts, and when I encountered Miryoku, a 36-key layout, I was really impressed with its thought-through design. Its principles were very similar to the things I derived from my own experiences, and it implemented them meticulously.

This is my 56-key version of Miryoku on the Sofle keyboard.

The layout

The core

The inside is a basically unmodified Miryoku (do not these tiny layouts look cute?).

Miryoku on the inside

Overall, I really like the layout. Here are my condensed thoughts on it.

Pros

  • Home row mods are awesome. They take some getting used to, but it is worth it. *Chef’s kiss* so comfy
  • The thumb cluster is great, I never realised how much I use these keys (especially backspace). They also play well with alt- and ctrl-tabbing, even though it takes a week or two to start tapping them in the correct order
    • Also, their dual layer-switching function is really neat; it makes them very powerful
  • Colemak-DH will probably need a separate blog post, but any optimised layout is better than QWERTY, so worth it (but not mandatory)
  • The pinky button layer makes copy-pasting independent from the layout, which is great
  • Easy to learn gradually
  • Manages to pack in all the keys, except for the numpad

Cons

  • The 200ms mod-tap delay is there. You stop feeling it a bit after a while but it still feels better without it
    • Currently I use 240ms on the pinky keys and 160ms on all others.
    • PERMISSIVE_HOLD helps a lot to reduce the increased strain
  • It’s especially annoying to use with mouse-heavy programs, like graphic design or 3D modelling
    • QMK cannot react to mouse presses, so many times you will click before the modifier kicks in
    • Because of that PERMISSIVE_HOLD will not work either, so you always have to hold them for the full delay, which is quite taxing on the fingers
    • The tap layer helps, but there is not enough space on a 40% board for the modifiers. I will probably design a custom full-60% layer for that
  • Also see the bonus keys section for some workarounds I had to implement

Double-edged swords

  • It is heavily based on the American layout
    • Pro: Easy to learn
    • Cons: Very noticeable on the number and symbol layers, which are not optimised at all. For example, layer-locking the number layer cannot be used with a calculator app or for data input (missing /, Enter, Backspace etc.), and the symbol layer does not have all sympols, and they are oddly spaced (like the parantheses, or the common curly brackets)
  • It is very space efficient
    • Pro: Great for small boards and minimising hand movement
    • Cons: There is no space for custom characters, (e.g. I would really like typographic unicode symbols somewhere. I currently use the outer rows and columns on layers but that breaks their semantics a bit). Also uncommon keys like Insert or Pause are a bit too easy to hit
  • It is for two-handed usage
    • Pro: Very comfortable to use
    • Con: Can be awkward to use with a mouse if you need more than just copy-paste

But overall, the best layout I tried so far. I do recommend reading the whole reference manual to learn it more quickly.

Number row

The number row

I left it as-is, except for the outermost keys, which are too far away to be useful, and do not contain interesting keys for me anyway. If I need them, I can use them in the Miryoku layers.

I also included the Slovak legends here to give an idea just how important these keys are to me.

Outer pinky columns

The outer pinky columns

These were the interesting ones. Miryoku already includes an elegant and easy-to-remember solution on the number layer. The left and right columns contain all the leftover keys. The keys that already existed on the three main rows ([, ; and ]2) have their positions unchanged. The three remaining keys are placed arbitrarily, but I found them comfortable to use.

I returned the left column to its original place. The right column then went on the opposite side; this took some getting used to, but I quickly adapted and found it comfortable.

The only change I made was to swap the backtick (a semicolon on the Slovak layout) for a caron dead key (ˇ), which is needed for some of the letters that do not fit, such as ď, or capital letters.

Bonus keys

This leaves us with 4 remaining keys (discounting the two top corner keys, which I only include in my tap/gaming layer) and two encoders.

I just flung whatever I found personally useful there.

The bonus keys

  • The bottom left key is for returning from the tap/gaming layer, as Miryoku does not include a key for that. This one is just hard to hit by accident
  • The next key is the backtick, as GNOME uses it for the Alt+` same-app window switching shortcut. This is the single most annoying downside of switching to Miryoku, as I cannot figure out an elegant one-handed solution to it; this is my best workaround I found it’s much better to remap Alt+Space to switching application windows
  • I use the analogous keys on the right side for arrows, as I am often lazy to use both hands for rewinding a video
  • The encoders are my favourite part.
    • The left one is PageUp and PageDown by default, for quickly scrolling long documents. When pressed, it switches to edit mode, where it scrubs edit history instead (which is a bit awkward in Miryoku with one hand). Both of these are incredibly useful, especially one-handed
    • The right one is volume control, with play/pause on press. Along with the bottom arrow keys, this covers most of the media controls I need with just one half of the keyboard

I hope you found some of this information useful for designing your own layout.

Sample implementation

You can find the newest version of my keymap on my QMK fork. Since the time of writing, I had made several changes. The core design principle is the same but it has many quality-of-life improvements. You can find the newest visualisation on my Figma!

  1. …of which 3 are digraphs (ch, dz, dž), so I guess actually only 43, but how would you call them then? Grapheme clusters?

  2. Note that Miryoku swaps the apostrophe and the semicolon

]]>
Juraj Fiala
How to get the most out of your monitor without a colourimeter2023-01-26T00:00:00+01:002023-03-03T00:00:00+01:00https://jurf.github.io/2023/01/26/monitor-calibrationFor years I have been trying to get a truly neutral image out of my monitors, which is rather difficult due to the sheer amount of desirable nonsense monitor firmware tends to include. I also do not own a colourimeter, without which objective improvements were hard to obtain.

So here is my current boiled-down ritual I go through with any monitor I have to work with, in roughly the order of importance.

  1. Get a monitor stand or at least a stack of books if the top of the screen is not level with your eyes. There is no use in tweaking the monitor if you can’t use it like a human.

  2. Get a digital cable. With old monitors and an abundance of VGA cables (like I had), one can be tempted to just use analogue. However, analogue cables suffer from signal degradation1. Digital cables also do not need image adjustment to work.

    If you can, use DisplayPort (preferred – open standard, desktop-focused), HDMI or DVI‑D. If your monitor does not have a digital port, prefer thicker and shorter cables.

    If you use HDMI, use the full range of RGB. I was once working on a monitor that should have been good but had absolutely no detail in the blacks. I found out that it was set to limited RGB, which is a mode used mainly by televisions that limits the detail in shadows and highlights. If your input and output settings are mismatched, you will drastically reduce your image quality. For desktop, you always want full.

  3. Switch the picture mode to ‘user’ (or at least ‘standard’). A mode that lets you set up as much as possible is preferred, as ‘standard’ modes sometimes tend to have unadjustable settings, such as tint compensations. Disable any dynamic contrast or colour enhancements. Sometimes it’s good to start with a reset, depending on the previous owner.

  4. Remove software sharpening. The Lagom LCD test pages have a great test image for this. On analogue, you will probably never get a truly neutral image (the setting is actually there for compensating sharpness loss). On digital, you should be able to get a completely flat grey image that you do not have to squint hard at for it to be completely uniform. Neutral typically means ‘50’2.

  5. Set gamma to sRGB (and neutralise contrast changes). The contrast setting affects the gamma, but AFAIK, there is no clear test for it. Try the Lagom contrast test page for a quick adjustment. Keep in mind that some monitors are just plain bad and are not capable of differentiating colours at the extremities. If the numerical middle does not yield a neutral image, go for neutral-ish.

    Gamma is better, however. There is a separate test on Lagom, but I prefer the sharpness test; it just seems a little easier to see. To properly reproduce sRGB images (i.e. images on the web), the gamma should be set to roughly 2.2. If your monitor has an sRGB setting, use that, otherwise, use whatever produces the best results.

    Some monitors do not have a setting equivalent to sRGB. If that is the case, you can emulate it in the OS. You can either use the Windows display calibration tool (you can leave the rest of the settings at default) or your drivers.3 However, I did not have good experience with this.

  6. Remove colour casts. Most monitors I have come across have some sort of colour tint when completely neutral. Manufacturers compensate for this with default settings. However, unfortunately, these default settings are not necessarily neutral. They can be either warmer or colder by default, moreover, LCDs tend to yellow over time, so if your monitor is not new, these default settings (and also any sRGB profiles if present) are basically useless.

    Fortunately, you can calibrate this pretty well yourself with just a sheet of white paper. Since we are trying to recreate the D65 white point which was created to best represent average midday light, let some sunlight in (just not directly on your screen and paper), open a completely white screen (i.e. the Eizo defective pixel test) and try to match the paper colour by lowering the individual RGB channels4.

  7. Tweak overdrive. Overdrive (or response time compensation) is a technique for improving the speed at which LCD pixels change colour by initially increasing voltage, which improves the response times of screens (sometimes by quite a bit). You’ll see it under many different names, as manufacturers tried to avoid paying royalty fees to the patent holder in the past.

    It works similarly to how you would put a pan on high heat at the start to make it reach the target temperature more quickly. If you are not careful, you will miss the target temperature and go higher than you want. Similarly, in screens this creates artifacts (‘coronas’), so you may want to tweak the parameters to reach a balance. You can use the ghosting test on Blur Busters.

    Some monitors include a light strobing mode (or they insert black frames) which lowers blurs down to a minimum, but I would probably recommend against this unless you do competitive gaming, as flickering lights (commonly experienced as PWM for controlling brightness on screens) have been linked to eye strain and headaches. If you have a flicker-free backlight, this negates its advantages.

  8. Bonus: Turn on the night light feature and auto-dark mode in your OS. You need good eyes to see your properly-setup monitor! Night filters are standard nowadays. For auto dark modes, there is Windows Auto Dark Mode or the Night Theme Switcher extension for GNOME.

I hope you found this guide useful.

Of course, if you are a professional and need truly accurate colour reproduction, then you will need to do a calibration with a colourimeter.

And now that you have an accurate, neutral image, why not try accurate, neutral sound as well?

  1. I was really surprised at how big the difference in sharpness was when I switched.

  2. If you are lucky. Sometimes neutral is ‘5’ or ‘0’, but in the end, you will have to use your own judgment. On my old Samsung monitor, the neutral for contrast and sharpness is somewhere around 60.

  3. I am not aware of any simple way of doing this in Linux; if you do, please contact me.

  4. Some argue that this should only be done if you need this for your work (i.e. you do photography, graphic design or video editing), but for casual use cases, you should use the full range of colours, so that movies and games are more vibrant.

    I do not necessarily agree. I think colour casts generally do not look good and degrade your experience, especially if you have a dual monitor setup or you use the screen during the day. Even manufacturers prefer compensation (and thus limiting the colour vibrancy) to a colour cast. Do you want every movie you watch to be yellow or green?

    However, if you have a really bad (or old) monitor, doing this calibration will leave you with very bland colours. In that case, I would only compensate slightly (i.e. not going below 40 if 50 is neutral), or just simply roll with it. Might as well see at least some colours!

]]>
Juraj Fiala
Improving your workspace ergonomics on a budget2022-11-02T00:00:00+01:002024-01-22T00:00:00+01:00https://jurf.github.io/2022/11/02/budget-ergonomics-workspace-lifeIn part 1, I gave my reviews for different ergonomic mice I tried to alleviate my forearm pain. However, ergonomics is a much broader topic than just mice, even though they caused the most pain for me.

Keyboard

My first ‘split’ keyboard was the C-Tech Ergo KB-113E, also known as the Nulea Ergonomic Keyboard. I bought it for 20€; it was by far the cheapest ergonomic keyboard I could find. It is also by far the ugliest keyboard I have ever seen. It looks fine in the photos, but it is just a big black dust-prone slab that covers most of your desk when you use it.

C-Tech Ergo KB-113E top view

C-Tech Ergo KB-113E tenting close-up

C-Tech Ergo KB-113E desk view

C-Tech Ergo KB-113E tenting

It functions exactly as you would think a cheap membrane keyboard would. The experience is standard at best. It gets the job done, but after 6 months, the palm rests have now been permanently molded into the shape of my hands, the ABS keycaps are shiny, and the apostrophe key either does not work or produces two apostrophes. The tenting is quite low, and the keyboard itself is very large, so it is uncomfortable to use a mouse with it.

The actuation force is also quite high, around 65g from my (amateur) measurements. My pinkies tend to hurt from prolonged use.

However, it was a good introduction to split keyboards. It took me a week or two to get used to it, and I will probably never return to a traditional keyboard.

Desk mat

Cold made my pain worse, and my desk was not exactly the best sliding surface for my mice, so I decided to get a desk mat.

Got the grey Logitech Studio Mat. Incredibly cheap (around 8€ at the time of writing, but has got up in price since then), surprisingly small but big enough for work (which I think I prefer, sometimes the desk needs to tend to non-soft matters). My only complaint is the 2mm is a bit hard; I wish they had a 3.5mm1 version.

Office chair

The Ikea Flintan was the only one that fit my budget. Recently sky-rocketed in price (from 80 to 120€), but I managed to get it almost new for 50€. Extremely happy. The armrests completely changed how I sit at the desk, but they do not get in the way of sitting cross-legged. Also, the seat is big enough to sit cross-legged. The back support helps me sit better for longer. I thought I would miss the option to lock the back tilt, but so far, I do not mind; the resistance is just enough to keep my position without strain. However, YMMV, as the resistance is not adjustable.

Update 01/2024: I have been sitting on this chair for a year, and while I am still happy with the purchase, I need to add a few things.

  • I wish it had the option to lock different tilts. Having it unlocked makes my back hurt after a while
  • I wish the armrests were cushioned – they tend to bite into the elbows in certain positions. I have not figured out a way to make them softer straightforwardly.
  • The cushion slips if you sit back
  • I can already feel the plywood through the cushion

Monitor stand

Get a monitor stand, any monitor stand (and a monitor). I got a simple Stell SOS 1010. You do not need a fancy adjustable one – a fixed one will do if your screen is of any useful size. I got this one for 20€, am very happy.

I had an adjustable one before, but the problem with the classic approach is that it varies two axes when changing height; it either goes sideways or changes your distance to it.

Habits

Changing my devices was only a factor. Changing my habits was an equally large one. E.g., I was influenced a lot by Cal Newport’s Digital Minimalism, which helped me cut down my smartphone habits, which in turn reduced stress on my wrists. I started rigorously applying the Pomodoro technique to enable my muscles (and eyes) to rest between work sessions. I started exercising, which helped my wrist pain as well.

Workouts

Exercise. It makes all the difference. I currently do the minroutine from r/bodyweightfitness and it does what it promises – helps me move more without complicated schedules, apps or timers.

I also started bouldering. It is much more expensive than exercising at home, but turned out worth every penny, as the fun and complexity of the exercise made it easily sustainable if you can spare the money.

Eye drops

Long screen sessions got me a slight dry eye syndrome that started to temporarily worsen my eyesight. Eye drops are good for relief; regular pauses (for prevention) are better. I currently have Artelac TripleAction on hand. If you get some, choose the ones with the special air-proof design, which are more expensive but do not have any preservatives (but still last for ages). Ones with oil provide much longer relief. However, I recommend you read the instructions carefully, as I have been applying them incorrectly for a year.

Death to touchpads

In my opinion, in terms of ergonomics, laptop touchpads are the worst input device available. I am careful to always carry a mouse with me nowadays.

Other keyboard options

I have considered the Microsoft Sculpt Ergonomic keyboard, but it cost almost twice as much as the C-Tech, even second-hand, which seemed too much for an experiment.

I reconsidered it since the C-Tech is really wide, and I would prefer my mouse closer, but I have seen reviews, and it seems the keyboard has its quirks – like the large dongle and the Fn switch – and I was unpersuaded it was worth the money.

I am not aware of any other commercial budget split keyboards in my market. But that is not the only option (stick around for part 3)…

Bottom line

If you are starting to experience pain, I strongly suggest you start working on mitigating it as soon as possible. I am aware the products in this series can quickly add up; it is not the only thing you can do.

If you are reading this, chances are you are also experiencing pain. I hope the insights in this series will prove helpful to you and that you manage the pain better than I did. To the rest of you – may this be a cautionary tale. Take care!

  1. Which LTT claims is the perfect compromise and seems as just enough addition for more comfort.

]]>
Juraj Fiala
A collection of reviews of ergonomic mice2022-03-29T00:00:00+02:002022-11-02T00:00:00+01:00https://jurf.github.io/2022/03/29/budget-ergonomics-miceFor the last 3½ years, I have been experiencing various chronic arm pain.

My body has been giving me hints that it was not taking the load of work at the computer I threw at it well for about two years before then, but I did not listen.

The first pain that became so severe that it prevented me from working was from the carpal tunnel1 after intensive graphic design sessions, programming, guitar playing, and working with digital devices in general.

After unsuccessful naïve attempts (wrist rests2, wrist wraps), I was forced into a more direct approach.

In this series, I aim to give a rundown of what I tried and what ultimately stuck, hopefully helping you spend your time and money more effectively battling your pain.

Disclaimer:

  • I have been to an orthopedist. Advice – reduce load, vary positions. Overall, not too helpful.
  • I have big hands
  • I live in central Europe (Slovakia/Czechia), which limits my product choices.

Connect IT era

The first products I tried were from Connect IT, which had a long-term marketing campaign focusing on ergonomics.

Verti ErgoMax top view

Verti ErgoMax side view

Verti ErgoMax front view

I bought the Verti ErgoMax – since it looked like it would fit my large hands well – and a mouse pad with a wrist wrest, which they marketed for use with their vertical mice for heightened ergonomics.

You cannot use a mouse pad with ergonomic mice; it does not work. Try laying your hand on the table as if you were holding one. There is no space.

The mouse was okay, but nothing stellar. The shape was mostly good at looking weird. After several months of use, the mouse broke down, and I returned it. After several experiences, I would recommend avoiding this company.

Trust Verto

Trust Verto top view

Trust Verto side view

Trust Verto front view

I have heard good things about the Anker Vertical mouse. It’s almost impossible to get it in Europe, but I later found out that the Trust Verto was the exact same mouse, down to the renders they used to market it.

It was my daily driver for six months and eliminated my wrist pain. I became a big advocate of vertical mice – this article was initially supposed to be about them.

After six months, the honeymoon ended. The mouse wheel started malfunctioning to the point of being unusable, and more importantly, health issues started arising.

While the vertical mouse model works wonders on the carpal tunnel, it introduces excessive stress on the forearm muscles, which are used to press the buttons, as you have to squeeze your hand slightly to prevent your mouse from moving when clicking.

After almost a year of usage, I could no longer use a vertical mouse. Around the same time, the mouse broke down. After a year, I returned it and got a replacement, which I occasionally use.

Logitech MX Ergo

Logitech MX Ergo top view

Logitech MX Ergo back view

Logitech MX Ergo front view

Due to this fact, I got interested in trackballs. I considered the Logitech M575 and the Logitech MX Ergo, the only sub-100€ options I could find.

I slightly impulsed-bought the MX Ergo when I found a listing for around 60€ on a local second-hand market.

It was the better choice, albeit more expensive, in the long term. I semi-regularly use the customisable tilting, but usually on the higher setting. But since the higher tilt is basically vital for me, I am glad for this feature (I even 3D-printed the ‘Plus’ version stand to additionally increase the tilt).

I became a huge proponent of trackballs.

After around five months, I landed with a repetitive strain injury on my right thumb. A thumb-operated trackball is inherently imprecise – do not let the marketing fool you. On high-precision operations, you have to strain your thumb a lot to achieve the desired accuracy, or you have to use the high-precision mode button, which slows down the mouse speed but also slows down your speed.

This started around the time I signed up for two courses in graphic design after a lengthy break. I realised very soon that you just cannot do graphic design with a thumb-operated trackball unless you want to risk losing your hair and your thumb.

Logitech MX Master 3

Logitech MX Master 3 top view

Logitech MX Master 3 side view

Logitech MX Master 3 back view

Around this time, I also started experiencing pain in my index finger due to the high amount of scrolling I had to do while working on web design.

Since I needed high precision and a better way to scroll, I started looking at Logitech’s hyper-scroll. I also realised that my past issues with mice were partly caused by their size, which was too small to support my palms, which further incentivised me to try full-size standard mice.

My first choice was the M720 Triathlon, which had the functionality I needed but at half the price. I called off the buy at the last moment as I found out the mouse was too small for my large hands. My girlfriend currently owns one, and she is very happy with it. To my dismay, however, I found that it does not have SmartShift, which would have been a dealbreaker for me, but she doesn’t mind.

I borrowed an MX Master 2S from a friend, and I liked it a lot – it just about fit my hands, but it was lower than I had hoped. I got my hands on an MX Master 3, which seemed much higher, so when I found a listing for it for 45€, I bought it right away.

M720 Triathlon, MX Master 2S & 3 back view comparison

Left to right – M720 Triathlon, MX Master 2S & 3. While the difference between the 2S and 3 is barely noticeable, the top of the 3 is sharper, which pushes the whole hand up, decreasing pronation and providing better palm support

It has been a part of my daily driver set for 4 months now. I am not entirely satisfied with the scroll wheel, which is too heavy for me and has a muddy feel due to the magnets. However, while I like the mechanical qualities of the scroll wheel on the 2S, it is too light to be practically used in free-scroll mode, and I do prefer the silence of the 3.

Wacom Intuos CTL-480

I got this pen tablet as a gift from a good friend when she upgraded to a higher model.

I tried several times to use it as a supplement for a mouse. My experience is mixed.

Using the pen is relatively slow, especially while typing, and can be inaccurate. The driver support on Linux is fine, but not much more. There is no scrolling support, and I did not have time to try to file a bug report for it. I have mainly used this option during transitional phases.

Another big disadvantage is that a pen tablet is not very portable, so I usually only use it at my desk.

Kensington Orbit with Scroll Ring

Currently in the mail. Am very excited, as a whole-hand operated trackball is something I wanted to try for a long time now.

Other options

Of course, I have considered the Logitech MX Vertical, but the price is so high and its features so standard that unless I get it at most at a third of its price, I will never buy it. I would really like a thumb rest, however.

I have considered the Microsoft Sculpt Ergonomic mouse, but I do not want to support Microsoft I am worried that the mouse would be too small for my hands.

Conclusion

The single biggest takeaway is that no mouse is a panacea. I currently mostly use the MX Ergo and the MX Master 3; I have even created a travelling case so that they would not get damaged on the frequent hauls to the campus and back. I switch between them as often as every two hours, depending on the signals they send me.

An unforeseen consequence of thumb-operated trackballs is that they are perfect for travelling, especially on trains. You do need a little extra space to get the advantages of a mouse workflow – unless you mind the rather bulky weight of the metal plate.

I rarely supplement them with the Trust Verto, which sits on my desk.

MX Master 3, MX Ergo and Trust Verto tilt comparison

MX Master 3, MX Ergo, Trust Verto. While the first two are quite high, they do not reduce the stress on the carpal tunnel enough for me

MX Master 3, MX Ergo (with plus version stand) and Trust Verto tilt comparison

Same as above, but with a 3D-printed stand for the Ergo, which helps the situation a bit

My pain has stabilised, but it is not perfect. If I am not careful, it quickly comes back. I was recently stuck with a regular mouse, and within 30 minutes, the pain became paralysing.

  1. Probably? I am still learning how to categorise the pain. E.g. I only just learned that a lot of my pain comes from ulnar deviation, which mice don’t cause.

  2. At the time, I did not yet know palm rest good, wrist rest bad.

]]>
Juraj Fiala
Using Grammarly with TeX2021-05-13T00:00:00+02:002021-05-13T00:00:00+02:00https://jurf.github.io/2021/05/13/tex-grammarlyCurrently, there is no easy way to utilise Grammarly with TeX. I encountered this problem while writing my bachelor’s thesis, but luckily, there is a way to work this around. I got several requests to document it, hence the blog post.

Several attempts integrate Grammarly into Overleaf, but they all deviate from how the platform is meant to be used and are slightly cumbersome.

If you can settle for an offline setup – which I can wholly recommend – there is a more ergonomic solution. It involves a combination of three tools:

Since VSCode is very extensible, the exact details of your workflow may differ. I can recommend the Markdown All in One extension, which eases working with Markdown files quite a bit. I use its preview to check for Markdown errors before having to deal with TeX. I’ve also had varying levels of success with the markdownlint extension to help keep my Markdown files clean.

You can stop here and already get several good use-cases – for example, the way this workflow clicked into the way I write blog posts was an unexpected but welcome bonus.

I cannot comment on the usage with LaTeX, but I have heard good things about the LaTeX Workshop extension (the numbers speak for themselves).

ConTeXt support in VSCode is finicky, but so is ConTeXt support everywhere else, so it is good enough. I use the ConTeXt Syntax extension with custom build tasks and problem matchers, but that is the subject of a future blog post.

To integrate the markdown you produced into your TeX document, you will have to dive into the documentation of the TeX markdown package, as its feature set is quite extensive. It has support for probably everything you will need, like citations, footnotes, figures, and you can also enable hybrid mode to mix in TeX syntax, such as math. Big shoutout to (our very own) Vít Novotný, as his work does most of the heavy lifting in this setup.

Although few rough edges need honing – e.g. the support for alt-text in images (used in the markdown package to display figures with annotations) triggers a Grammarly error if you use it to check curly quotation marks – but the overall functionality is highly usable.

A final thing to note is how the Grammarly editing process perfectly fits into the VSCode user experience – Ctrl+. to apply and F8/Shift+F8 to jump arround issues is such a nicer way to edit documents than the default Grammarly clicky experience.

]]>
Juraj Fiala
Speed up a LUKS-encrypted Fedora Silverblue by enabling TRIM2020-10-22T00:00:00+02:002022-05-02T00:00:00+02:00https://jurf.github.io/2020/10/22/quick-tip-silverblue-trimMy system has been going sluggish lately. After getting suspicious, I decided to check if TRIM was working.

It wasn’t.

How to check and enable

This only applies if you have a LUKS-encrypted root partition. To see if it is correctly set up, run

$ sudo dmsetup table
…
luks-123abcdef-etc: 0 1234567 crypt aes-xts-plain64 000etc000 0 8:2 4096 1 allow_discards
…

If you see allow_discards on every relevant entry (like above), you’re all set. If not, run

$ rpm-ostree kargs --append=rd.luks.options=discard

This applies the ‘discards’ flag1 at boot time, enabling it for all partitions on the root drive. (If you only want this for some, use rd.luks.options=<LUKS partition ID>=discard). Restart and run fstrim.service. On my machine, it was a difference between light and day.

  1. This has some security implications. For me, security is not paramount, so I do not mind this – you might.

]]>
Juraj Fiala