Skip to content

September 2023#

Friday, 29#


I do like how particles in Japanese sentences not only separate words, but also explicitly state their purpose. Verb conjugation seems to be the hardest part of the grammar so far.


Updated some of my pull requests to Nixpkgs.

Thursday, 28#


Replicated Tatsumoto’s workflow in my setup.


Implemented the reviewers’ requests on my pull requests for adding Python packages to Nixpkgs.

Wednesday, 27#


Started doing the routine, finally! This includes doing Anki reps (JP1K deck, later will add from my own sentence mining), then grammar study, then immersion (free-flow with English subtitles, then intensive immersion).

Watching Is the Order a Rabbit? for the first time, and it’s pretty fun!

Tuesday, 26#


Ironically, after packaging vocabsieve, found out a better workflow for sentence mining: mpv + mpvacious + Rikaitan + AJT Japanese. Here‘s a pretty cool demo.


Created a pull request to add vocabsieve to Nixpkgs. And also 8 additional pull requests for adding Python modules that are the dependencies of vocabsieve.

Created a pull request to enable mecab‘s support for the UTF-8 charset. This tool is necessary to create Furigana automatically in Anki via the AJT Japanese add-on.

Monday, 25#


Learned more about the Refold method. Started packaging vocabsieve for Nixpkgs. This tool would allow me to very easily mine 1T sentences from pretty much anything.


Fixed a couple of issues with my pull request that updates mold in Nixpkgs. Had to fire up my MacOS VM to debug an issue with the std::alloc_aligned function missing. Turns out it comes from the cstdlib header in later versions of the Apple’s Clang.

Friday, 22#


Learned more about the Refold method.

Thursday, 21#


Found out that I can use nixseparatedebuginfod to make GDB automatically pick up debug info (which includes information about where to find source code). This allows me to step into functions from shared libraries, which is very useful for debugging (and general exploration of the code). There is a small caveat, though: it only works for Nix packages that have a separate debug output, which can be enabled via the separateDebugInfo variable in the derivation. It already is set to true in many packages in Nixpkgs that I care about, and I’ve created several pull requests to enable it in others.

Wednesday, 20#


Learned more about the Refold method. Probably will ditch GENKI completely in favor of The Refold Japanese Grammar Primer and Tae Kim’s Grammar Guide. Or, perhaps, use GENKI only for the grammar explanations.

Planning to use substudy for sentence mining. Here‘s a good example of a person using subs2srs to understand their favorite TV show in 30 days.


Created a pull request to add substudy to Nixpkgs.

Tuesday, 19#


Switched to using the Authorization: Bearer <token> HTTP header instead of passing the Qobuz token in the query part of the URL. Also, found out by experimentation (with some help from ChatALL) that Qobuz accepts the app ID as the X-App-ID: <app_id> header. Thus, I no longer need to have the query part in the call to the /user/login endpoint, which is pretty sweet. Switched to HTTP/2 over TLS by a simple change of the scheme from http:// to https://, Soup did the rest! Also, GnuTLS (which is Soup’s default TLS backend) supports the SSLKEYLOGFILE environment variable, and I used the resulting keylog file to decrypt the TLS traffic captured by Wireshark, as described here.

Started learning GDB and rr for proper debugging skills (always used poor man’s printing of variables).


Created a pull request to update GR Framework in Nixpkgs. Got an issue on update and had to dive into CMake again. Found out that (in the case of packages in Nixpkgs) one should use the module mode when searching for packages.

Monday, 18#


Read through a lot of Refold resources. Gotta find some material for immersion now!


Went through all pages on NixOS Wiki. Found out that there is an experimental feature for content-addressed derivations, and that NixOS has an option to enable BTRFs scrubbing.

Friday, 15#


Filled an issue to Mesa about experiencing full desktop graphical glitches when interacting with certain applications, just to found out a half an hour later that I was missing the amdgpu device driver, and instead was using fbdev. Set it up as explained in the NixOS Wiki.

Learned (in a very basic way) how to use apitrace to create traces of graphics API calls. Built a 32-bit version of it (turns out Nixpkgs have pkgs.multiStdenv and pkgs.pkgsi686Linux for such a case) to run with Steam. However, that didn’t give me proper results, as described here, but the 64-bit version from Nixpkgs did (somewhat).

UPD: never mind, the issue occurred again on a high load.

Thursday, 14#


Updated the dependencies and disabled Nixpkgs hardening for debug builds. Switched to Soup for handling HTTP conversations (and so that I can easily switch to HTTP/2 over TLS in the future). Found out that I can pass the Qobuz token as the Authorization: Bearer <token> header instead of appending it to the query. Also, apparently, the user_id isn’t required.


Opened a merge request to fix the memory leak on a graceful TCP disconnect in GLib.

Wednesday, 13#


I think my Anki setup is ready for new vocabulary now. Discovered that the Refold community has a lot of resources for Japanese. Refreshed my knowledge of Kana.


Here are two things I did to prevent my network speed from getting slower on idle on a wireless connection via NetworkManager:

  1. Disable power saving globally:

    # /etc/NetworkManager/conf.d
    # Values are:
    # 0 (use the default value)
    # 1 (don't touch the existing setting)
    # 2 (disable powersave)
    # 3 (enable powersave)
    wifi.powersave = 2

    Can be accomplished on NixOS with

    networking.networkmanager.wifi.powersave = false;
  2. Disable power saving on the currently active network interface directly:

    nmcli connection modify "$SSID" 802-11-wireless.powersave 2

    Check with

    nmcli -f 802-11-wireless.powersave connection show "$SSID"

    Reconnect to the network afterward.

Still unsure if it’s enough, though.

Tuesday, 12#


Created a pull request to update Picard and a pull request to add ChatALL in Nixpkgs. Learned how to package Electron apps.

Monday, 11#


Read the Effective learning: Twenty rules of formulating knowledge article, learned about the Incremental reading method as a side effect. Read the Low-key Anki series of articles and modified my Anki setup as suggested.


Created a pull request for adding Fopnu to Nixpkgs.

Tuesday, 5#


Read more of the Anki manual.


Set up Samba on my NixOS machine, so that I can copy files to and from my iOS device (via the standard Files app). Turns out it can be done with just 3 lines of smb.conf:

path = %H/Public/Samba
vfs objects = fruit streams_xattr
writeable = yes

Don’t forget to create the password for the user with smbpasswd -a $USER, though!

Sunday, 3#


Got into figuring out the nitty-gritty of how Anki‘s algorithm works. Worked on my GENKI I deck.

Saturday, 2#


Watched some of the VoxelRifts‘ videos. Finally, some C positivity and DIY mentality!


Created a pull request to update Anki in Nixpkgs. The latest version has a fix for crashes caused by copying the contents of fields in the Browser. That said, they have the most horrendous build process I’ve ever seen.

Friday, 1#


Was learning how to use Anki today. Already got into thinking about whether to use subdecks, tags, or fields for organization. I got a deck for GENKI I, but will have to remake it.