Home network improvements
Migrated all of my containers a dedicated server, so the NAS can just be a NAS. This has significantly sped up my Jellyfin server. The Celeron the QNAP was barely holding it together.
Digitizing my filing cabinet
It’s time to finally digitize the filing cabinet. I’ve been wanting to setup a tagged document store that I can scan documents into, and recently found paperless-ngx1, which seems to be the perfect solution.
I want to be able to scan the documents quickly and easily - even if writing the automations takes more time than they save.2 I spent an entire evening just getting network scanning and printing to work on Archlinux.
In particular, it was difficult to get the Scan-To-PC functionality working. On
Windows, they provide a graphical driver, which lets you register your PC as a
target for the printer. I eventually found the pacakge brscan-skey
3, which
allows me to run a Systemd service which registers my system as a target. It
required some modification of the provided shell scripts, as out of the box they
silently failed, but eventually it came together. Ultimately, despite the
effort, I dropped this solution, because the Scan-to-PC functionality requires
naviating 3 menus, and a 15 second delay between each scan.
paperless-ngx looks pretty nice though. Its OCR does a pretty good job of scraping scanned documents. I also discovered papermerge, which has more features like document merging. But it stores documents in a tree structure, which I specifically did not want. Tags are much more maintainable - does a medical bill go in the Bills folder or the Medical folder?
I hope to return to this project soon. But for now it’s another case of many hours of setup and automation with no payoff.
Working on Squid Jam
Local private game jam themed around digital board and card games. I spent the first three days not working on a game, but rather working on my ideal framework for implementing a board game, inspired by Boardgame.io.
The state for a multiplayer lobby is stored server-side as a single object. The game state is updated using pure transition functions. And state sync is done through server-sent events.
Each user’s id is stored as a session cookie. This id is used to determine which subset of state to send to the user (so that users do not receive hidden information intended for other users, such as their cards. This also allows the user to return after a refresh or browser crash without losing progress.
Watched
- K-On! (S2E13)
- Frieren: Beyond the Journey’s End (S17)4
Todo
Look into pihole, or other options for hairpin NAT so I can resolve local services through the domain pointed at my public ip.
Footnotes
-
The manga has been sold out everywhere since before Christmas. Restock when? ↩