Daniel Power

2024 Weeks 4-6

Published on 2024-00-12

Long overdue on this one. I’ve had a few work in progress posts, but haven’t gotten around to finishing them.

Learning Japanese

I’ve been putting extra effort into my daily Renshuu studies, trying to get over the initial competence hurdle so I can start to immerse with games and manga. I discovered Game Gengo on Youtube, and have been binging his content.

I don’t think I’m quite ready yet, but I’m going to jump into Ni No Kuni in Japanese and see how it goes.

Game2Text on Linux

Game2Text is recommended for learning Japanese with games, as it allows you to extract text from games, and look up the words you don’t know. It claims to work on Linux, but it hasn’t been updated in over 2 years, and doesn’t seem to work on Wayland.

It should be easy enough to write a script to do screen capture using Pipewire. Then either integrate it into Game2Text, or write a new tool. I’d be more inclined to contribute to the existing project, but it appears to be abandoned.

New laptop, Thinkpad T14s AMD Gen 4 (tragic)

My Thinkpad arrived two weeks ago. On paper it checked all the boxes, but in practice it’s been a struggle. It has the works: graphical artifacting, crashing, sleep issues, wifi failures. And to top it all off, it isn’t compatible with my USB4 dock.

I’ve submitted a bug report to amd’s linux kernel team about the dock not working, but no response yet.

Bug report

I started a thread on the Lenovo forums about the rest of the issues. There have been a few replies, most recently from MarkRHPearson, who referred me to some potentially related issues on the kernel bug tracker.

Forum thread

I have a feeling they’ll eventually get it all sorted out, but it’s been a bit of a headache. I’m tempted to return it, but their return policy is kind of awful. They have a 15% restocking fee, and I’d have to pay for return shipping. Plus they start the return period from the day they shipped it, so I’d only have a week to return it.

In hindsight, I probably should have stuck with Framework. But I’ll stick it out at this point and put my faith in the kernel team.

Bambu Labs P1S

This is where I’d talk about my new 3D printer, if UPS had delivered it.

UPS delay

SwiftSpider MetaJot

I came to the realization that the way I was building SwiftSpider was a bit of a dead end. I was leveraging SvelteKit’s SSR with the end goal of having all note data be end to end encrypted. But I realized that SSR requires the server to access the data. I also wasn’t happy with sending queries and mutations directly to the server, since it makes it difficult to have a truly offline first experience.

With that in mind, I’m pivoting to client-side SQLite. The entire database is store in LocalStorage, and all queries and mutations are done client-side. The server still exists, but is only used for syncing data between devices.

The database schema of the server is a single nodes table with only the following data:

  • id
    • This will be a UUID, since I need to guarantee uniqueness across devices
  • date
    • The date the node was pushed to the server
    • A client will only pull nodes pushed since their last sync
    • Note that nodes are immutable, so the date will never change
  • data
    • An encrypted json blob containing all other information about the node
    • Will be decrypted client-side and stored in LocalStorage

The user’s password will be hashed with two salts, one for authentication with the server for the purpose of syncing, and one for encrypting/decrypting the data. The server will never have access to the decryption key.

If anyone with crypto experience is reading this, I’d love to hear your thoughts on the security of this setup. I’d like to ensure that the data is secure even if the server is compromised.