Recent posts

#51
General Chat / Re: The NVIDIA GeForce Experie...
Last post by lifning - Apr 16, 2025, 07:34 PM
wow, making akmod be a background task that keeps going after the update transaction seems like a huge mistake on their part... i could swear it wasn't like that in the late aughts but i haven't used proprietary gpu drivers and fedora at the same time since back then
#52
General Chat / Re: The NVIDIA GeForce Experie...
Last post by viviridian - Apr 16, 2025, 08:31 AM
on fedora, `akmod` builds the nvidia kernel model in the background *after* the rpm transaction finishes.

so on this page there are a bunch of warnings to wait for that to happen: https://rpmfusion.org/Howto/NVIDIA#Current_GeForce.2FQuadro.2FTesla

however, a really easy way to end up not waiting is if you use the Discover gui to update packages and click the checkbox to automatically reboot after. then you won't be able to boot because you won't have a nvidia kernel module.

edit 2025/05/03: i was wrong about that! see this reply instead of reading the rest of this post (◕ˉ◕✿)

to recover from that state you have to boot an old kernel, build the module for the kernel that is missing it, and then boot the new kernel.

the way to check if the module has been built for a kernel:
# in this case, it is present so the version number is printed
$ modinfo -F version nvidia -k 6.13.9-200.fc41.x86_64
570.133.07

# in this case it's missing so an error is printed
$ modinfo -F version nvidia -k 6.13.10-200.fc41.x86_64
modinfo: ERROR: Module nvidia not found.

to find which kernel versions are installed,
$ dnf list kernel
Updating and loading repositories:
Repositories loaded.
Installed packages
kernel.x86_64 6.11.4-301.fc41  anaconda
kernel.x86_64 6.13.9-200.fc41  <unknown>
kernel.x86_64 6.13.10-200.fc41 <unknown>

Available packages
kernel.x86_64 6.13.11-200.fc41 updates

note that the version numbers shown by dnf do not include the machine architecture (x86_64) - modinfo needs the architecture to be specified or it will just report the module as missing

# this doesn't work, .x86_64 is missing at the end
$ modinfo -F version nvidia -k 6.13.9-200.fc41
modinfo: ERROR: Module nvidia not found.

# this works
$ modinfo -F version nvidia -k 6.13.9-200.fc41.x86_64
570.133.07

if you want to manually request building the nvidia module for a specific kernel:
$ sudo akmods --kernels 6.13.10-200.fc41.x86_64
Checking kmods exist for 6.13.10-200.fc41.x86_64           [  OK  ]
Building and installing nvidia-kmod                        [  OK  ]
it might take a little while. (on my intel core ultra 7 155h, it took 1 minute and 9 seconds)

afterward i confirmed that it built:
modinfo -F version nvidia -k 6.13.10-200.fc41.x86_64
570.133.07
#53
Completed / Re: [BBCode] Member-only text ...
Last post by lifning - Apr 15, 2025, 05:21 PM
it might be good for logged-in users to have some sort of style on the text indicating that it's got logged-in-only visibility

Quotelua-based MUD
is there enough water on the moon for that?
#54
Completed / Re: [BBCode] Member-only text ...
Last post by viviridian - Apr 15, 2025, 08:13 AM
lua-based MUD is calling to me. I haven't actually played any 👀
#55
Completed / Re: [BBCode] Member-only text ...
Last post by Skirmisher - Apr 15, 2025, 07:54 AM
I vote for OpenTTD :3
#56
General Chat / Re: Porting SDL3
Last post by lifning - Apr 14, 2025, 08:41 AM
the "Woodeneye 008" example from SDL3's codebase running decently on real N64 hardware! dug into SDL's render subsystem and worked out that unless i do a funny SDL_SetHint(SDL_HINT_RENDER_LINE_METHOD, "2"); in my CreateRenderer, SDL will happily automatically render lines as individual pixels - now that it's actually calling my accelerated QueueDrawLines it's totally playable!


also here's an example of RenderReadPixels,


the aforementioned color combiner in action,


and scaling/rotating textures with RenderCopyEx (check out the classic N64 3-point texture filtering on the edges of that smiley face!)


oh and i added a haptic driver for rumble pak support too
#57
I had a better idea: write a "smart" reverse proxy to mitm the server -- that way I would definitely have access to an authenticated session and be able to issue requests from that server *or* the client.

I could also inject stuff into the page, like a script tag or button(s), allowing smf to be extended without having to actually fiddle with the codebase.
#58
General Chat / Re: tailscale-protonmail-bridg...
Last post by viviridian - Apr 14, 2025, 12:50 AM
Quote from: me when i was setting this upit'll be great to have this container exposing its own tailscale host, that way I can move it to any machine and it'll be exactly the same

Quote from: me nowi have no fucking clue which vm this is running on.
#59
so perhaps for development i could stand up a sidecar web server that publishes the built packages, and add some client-side javascript that polls that and swaps out new packages as they become available
#60
for reference, I captured the steps involved in removing and uploading a package as fetch() calls (TIL firefox dev tools let you copy web requests as fetch calls!)


// Click package uninstall button
await fetch("http://localhost:8000/smf/index.php?action=admin;area=packages;sa=uninstall;package=yt_nocookie.tar.gz;pid=6", {
    "credentials": "include",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Sec-GPC": "1",
        "Upgrade-Insecure-Requests": "1",
        "Sec-Fetch-Dest": "document",
        "Sec-Fetch-Mode": "navigate",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-User": "?1",
        "Priority": "u=0, i"
    },
    "referrer": "http://localhost:8000/smf/index.php?action=admin;area=packages;b351fce7=26041204f38b96a8c3b881969eccb5e0",
    "method": "GET",
    "mode": "cors"
});

// Click uninstall now button on that page
await fetch("http://localhost:8000/smf/index.php?action=admin;area=packages;sa=uninstall2;package=yt_nocookie.tar.gz;pid=6", {
    "credentials": "include",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Content-Type": "application/x-www-form-urlencoded",
        "Sec-GPC": "1",
        "Upgrade-Insecure-Requests": "1",
        "Sec-Fetch-Dest": "document",
        "Sec-Fetch-Mode": "navigate",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-User": "?1",
        "Priority": "u=0, i"
    },
    "referrer": "http://localhost:8000/smf/index.php?action=admin;area=packages;sa=uninstall;package=yt_nocookie.tar.gz;pid=6",
    "body": "b351fce7=26041204f38b96a8c3b881969eccb5e0&seqnum=771751",
    "method": "POST",
    "mode": "cors"
});

// Delete the package's file so it can be replaced
await fetch("http://localhost:8000/smf/index.php?action=admin;area=packages;sa=remove;package=yt_nocookie.tar.gz;b351fce7=26041204f38b96a8c3b881969eccb5e0", {
    "credentials": "include",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Sec-GPC": "1",
        "Upgrade-Insecure-Requests": "1",
        "Sec-Fetch-Dest": "document",
        "Sec-Fetch-Mode": "navigate",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-User": "?1",
        "Priority": "u=0, i"
    },
    "referrer": "http://localhost:8000/smf/index.php?action=admin;area=packages;sa=browse;b351fce7=26041204f38b96a8c3b881969eccb5e0",
    "method": "GET",
    "mode": "cors"
});

// Upload a new version of the package
await fetch("http://localhost:8000/smf/index.php?action=admin;area=packages;get;sa=upload", {
    "credentials": "include",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Content-Type": "multipart/form-data; boundary=----geckoformboundarye29a7e416a08ac88515f9800cf9a065b",
        "Sec-GPC": "1",
        "Upgrade-Insecure-Requests": "1",
        "Sec-Fetch-Dest": "document",
        "Sec-Fetch-Mode": "navigate",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-User": "?1",
        "Priority": "u=0, i"
    },
    "referrer": "http://localhost:8000/smf/index.php?action=admin;area=packages;sa=packageget;get;b351fce7=26041204f38b96a8c3b881969eccb5e0",
    "body": "------geckoformboundarye29a7e416a08ac88515f9800cf9a065b\r\nContent-Disposition: form-data; name=\"package\"; filename=\"yt_nocookie.tar.gz\"\r\nContent-Type: application/gzip\r\n\r\n\u001f�\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003íW[oÛ6\u0014ö³�Å�`ÔÝ:�R|C3É)°åqí�d\u000f�a\u0018´DÙ�%Ñ%)_:ô¿÷P�\u0013ÛHà\u000eHR\fã÷`I¼|ç�<üαK\u001a/\u000e\u000f1ì÷ÍÓ\u001fö½Ãç\u001e\r¿7\u001c\u000e\u0006ÃAÏë6<ß\u001btû\r迼k�F¡4�\u0000�5_§<{zܹþÿ(\\rSÌTçN�\u0014�$�óÜ]-VÏlÃ\u001cð ×{êü}¯wqrþ½®?h�÷Ì~<�ÿùù\u0007WxÞÍfRä�æ\"�
\u0010ËéNOs!Êpxû¦\u0015��©_áM+\u0017SZh�ò|9Õt®~����h%¢Èc\b!¡©b¿Um<Þb�W}%B2\u001a-àmE\u0006TAù¶g0àIÝ=n#y{\u0002a\bí�(t1cíÃ�G&µ,j�{ÌÐÔò¡éëý�qéÝ»ª§j-M�L�ü�Àõ�É�^ð|\u000el\u001b±��«j;Â\u0007¶r%cC:\u0019·#�k�kã5´��¯!J©R¡³æ1\u0013¦�ò�IgdúF\u0001O$Í\u0018�¿3!c&CÇs@É(t\u0016Z¯Ô%!�ÍÆ��ßÉ�B,9s#�\u0011�ÍXLZþÕ&C\u0017B±¢�\u000bæ@L5íì'ð8tZ¾\u00034MÅ&)ÒTE�±\u001cRAc\\Uè¤ôË\u000e½!�'øRúUþ¶÷[ôµÙ¼\u001a5�t�Z¼$\\²¢Ñ�Î1dòD¸Û,}~\u001bçô�à\rOô¿;Ä&«ÿ¯�à\n�\u001cPî\u0014ª�èø®çà�\u000f~úãÓï·w�]ÃatÀÍÝÍíõ�PJT�P�g«�e(î¨oÊ\u0015rN�ð(¨\u001cä;¢Á\u0001¹\nÿ-K5íReɹ©hÐ\bXÀãÑ�$-¤Ü]�\u0019�ÒPÔ¼¸\u001e�\u001béû[18ÕY�°àN\u0014·Ø\u0018�rX5£Þ¨\u0011îS@ö\u001fU�Þ�Ø\b\u0015�'<¢&�\u0006¤ljÖÎä\u0018hij�CçÂõÝ_ \u0003æùþ}ío9\f�W��aE¥b³\u0019¦\u0003�à�QÕìê�\u000eHõ~4çsÁ%ë$<e`�\r�G�:Ì\u0010Li��¾avP¢�\u0011�¹t�\u001c��\u0002 ¬\u0002B�cN�KªÙ\u0014=��ùÎ�}¥��pR*`\u001f:pÈüXmyo\rÏ¡Ú�ý\u000e\u0015ùwïQ&ÖGËýN�¯´@ÉLd°úì\u001eÖ{¿@¼\u0010G±ý\u0003�¬K\u001eBë¥l�Ñ�ïbè�èÿÅ Ûµúÿ\u001a\u0018+þ

ÛNJå�MƳÉ99\u001c�ÙdL̬I³y»à\nªë¨@/\u0018 A](�q�
©Ü\u00191Ã[ª�Ä�Wd{\"(ëXücA±�/\u0014\u0012�«|K7ªY®-K-,,,,,,,,,,,,,,,,,,,,,�Æ7¹|·`\u0000(\u0000\u0000\r\n------geckoformboundarye29a7e416a08ac88515f9800cf9a065b\r\nContent-Disposition: form-data; name=\"b351fce7\"\r\n\r\n26041204f38b96a8c3b881969eccb5e0\r\n------geckoformboundarye29a7e416a08ac88515f9800cf9a065b--\r\n",
    "method": "POST",
    "mode": "cors"
});

// Click install mod for the new package
await fetch("http://localhost:8000/smf/index.php?action=admin;area=packages;sa=install;package=yt_nocookie.tar.gz", {
    "credentials": "include",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Sec-GPC": "1",
        "Upgrade-Insecure-Requests": "1",
        "Sec-Fetch-Dest": "document",
        "Sec-Fetch-Mode": "navigate",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-User": "?1",
        "If-Modified-Since": "Sun, 13 Apr 2025 09:05:11 GMT",
        "Priority": "u=0, i"
    },
    "referrer": "http://localhost:8000/smf/index.php?action=admin;area=packages;get;sa=upload",
    "method": "GET",
    "mode": "cors"
});

// Click install now for the new package
await fetch("http://localhost:8000/smf/index.php?action=admin;area=packages;sa=install2;package=yt_nocookie.tar.gz;pid=0", {
    "credentials": "include",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Content-Type": "application/x-www-form-urlencoded",
        "Sec-GPC": "1",
        "Upgrade-Insecure-Requests": "1",
        "Sec-Fetch-Dest": "document",
        "Sec-Fetch-Mode": "navigate",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-User": "?1",
        "Priority": "u=0, i"
    },
    "referrer": "http://localhost:8000/smf/index.php?action=admin;area=packages;sa=install;package=yt_nocookie.tar.gz",
    "body": "b351fce7=26041204f38b96a8c3b881969eccb5e0&seqnum=8868160",
    "method": "POST",
    "mode": "cors"
});