14
votes
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
I took a day or two away from studying to build a minimal Python script which fetches the entire game files for different Minecraft versions using the manifest- so that I don't have to fuss around with Microsoft's add-laden launcher, and then I experimented until I got game launching working with an even simpler script.
Now I'm experimenting with Drasl, a Yggdrasil (the Minecraft auth stack) compatible third-party authentication backend for Minecraft- which works fine with builds of Paper (the server).
I've owned a Minecraft account since early beta- at this point, roughly half my life ago- and I'm really not certain I enjoy Microsoft as a corporation. Now I have a solution which excises Microsoft from the equation- to an extent. They still develop the game, of course.
Very interesting. I had been doing similar work for a Valheim server. However, that uses the PlayFab/built in Steam system.
It works, but it would be nice to not be reliant on Steam (even though I like them as a company more than most).
Do you know if your solution is agnostic enough to front a Valheim server?
Unfortunately, I don't think it is agnostic enough.
Drasl is very much designed around the authentication protocol that Mojang developed, and the scripts I'm writing for fetching game files utilise the manifests provided by Mojang over the web,
and the resource endpoints, which don't require any form of authentication.
It does look like Valheim has dedicated server software, though as you've mentioned, the files are distributed through Steam. You can actually automate fetching of such files, especially in the case of dedicated server tools, using SteamCMD or similar (for assets which don't require purchase, you can even fetch them anonymously). It might be worth looking into how projects like the Valheim server docker image fetch the server files?
Edit: My bad- I apologise- I did not realise that Valheim also appears to authenticate through Steam too. In that case, you'd likely need a mod which injects a new authorisation URL into the game. For Minecraft, I use authinjector, but the server itself also needs to be pointed at the third-party authorisation service. Luckily, for recent versions of Minecraft, cmdline arguments can do that, but I doubt the same can be said for Valheim?
I have dedicated image downloaded off steam and copied to a separate device. It is clear the image is just a plain old docker image nothing special there. The machine I'm running it on doesn't even have steam installed, but I can see the docker image is using my steam identifier.
This is all to say I haven't dug into it very deeply, but I wonder if the steam stuff and PlayFab is actually necessary. I don't know.
Been working on crabroll, my rust-based esp32 powered home-assistant compatible window blind controller. Been working on the stepper motor kinimatics for almsost 2 weeks. Ive been working on adapting the algoritm described in this paper to use integers rather than floating point numbers (the esp32c3 does not have an FPU), and its been kicking my butt. I managed to regain most of my precision by rejiggering the order of operations and storing divison remainders between iterations, but im still overshooting my target by a couple of steps, leading to sharp deceleration. Also, for some reason, I randomly go above my target acceleration. My acceleration graph is very... spikey.
Ive been writing down all the modifications ive been making, and at this point, I have half a paper out of it.
Its been pretty cool being able to run simulations of this motion planner all in rusts unit test system.
I realized that microsoft teams doesn't have a straightforward way to export chats. So I wrote my own browser plugin/script and published sth in the Chrome web store for the first time.
It's such a weird feeling.
It's also super weird because I basically said in the description that installing a plugin and letting it access teams is a stupid idea, and I added a button to show the source code (which I am not sure will work in the published app anyways)
If anyone wants to check it out, it's here: https://github.com/AliKarpuzoglu/chat-exporter/tree/main
Doubleposting- but I have found something pretty cool!
Yesterday morning I had to fix the boot process of my primary computing device (long story- basically, mkinitcpio v40 has disabled the default fallback initrd generation, which would stop my systemd-boot entries working because they expected two initrd stubs), but I didn't want to create yet another external boot media which I would lose (where is the latest USB stick I bought, you ask- good question).
It turns out, with a rooted Android device, you can create sparse images which can be served as mass storage devices using Magisk modules such as MSD for mass storage emulation. This does not interfere with ADB, MTP, or normal USB functionality, and it means I can dd an Arch ISO to a ~4GiB external media that is emulated on my phone, and fix the OS using that! I could even serve a running OS this way- if I can find a solution for mounting directories inside the sparse image locally on the phone, as well.
This does require that the device uses configfs, and also that the mass storage USB gadget is enabled in the kernel- this is yet another win for the Sony team who appear to have enabled most kernel modules that might be useful (this, and the Wireguard module) on the stock kernel of this device!
This is what makes mobile devices so cool, and it's such a damned shame that Google's locked down walled-garden approach to personal devices makes it a non-starter for most Android platforms.
I spent quite a bit of time renaming my fish functions to be a bit more consistent, consolidated similar ones, and deleted any that I don't use often.
I had about 1000 and now only around 850 or so. I used an LLM to write a script to help with this task: fish_functions_rename.py
The funcmv.fish function has improved significantly over the past week but it's still imperfect. I recommend committing your .config/fish folder to a local git repo prior to attempting this so you can see where it is making mistakes.
I should probably do something similar for my ~/bin folder but fewer of those have poor names
edit:
One thing that I'm very happy to discover is that recent versions of tmux support OSC 133: