00:25 < bridge> Did you know US customs can manually search any electronic device at a border crossing? No warrant, no probable cause, no suspicion. If after the manual search they suspect anything they can copy your entire device and retain it for an undisclosed amount of time with no duty to delete it. 00:27 < bridge> If you refuse to give them your password and that makes them suspect something they can seize the device and hack into it or copy it encrypted. If you are foreign national they can just flat out deny you entry just for that 00:28 < bridge> They can also store and utilize any keys you give them, wild stuff. A truly tyrannical level of violation of privacy that I haven’t heard of before 00:51 < bridge> no 00:52 < bridge> welcome to united states 01:45 < bridge> Surely this doesn't apply if you're a citizen, with the first amendment 01:45 < bridge> Not that it makes it acceptable, 01:45 < bridge> Not that it makes it acceptable, it's still bad to be doing that to foreigners 01:45 < bridge> You are in for a surprise. It does 01:45 < bridge> Surely this doesn't apply if you're a citizen, with the fourth amendment 01:47 < bridge> First Amendment arguments against this insanity were outright rejected by all courts. Fourth Amendment does indeed help a bit, some courts have ruled that while they can seize and clone your devices (by exception granted to borders and upheld by the supreme court iirc), they can not compel you to reveal the password without warrant 01:47 < bridge> I meant to say fourth amendment 01:51 < bridge> Remember during the BLM protests there were talks of federal agents straight up abducting people in vans? 01:52 < bridge> That’s the rule they were invoking when sending in CBP agents, 100 miles from any border including the ocean is very “technically” fair game 01:52 < bridge> I guess if you want more horrible US actions: 01:52 < bridge> https://en.wikipedia.org/wiki/Murat_Kurnaz 01:52 < bridge> This guy got tortured for 5 years in Guantanamo 01:52 < bridge> They will treat you even worse if you aren't a citizen 01:52 < bridge> Obama said he'd shut down the "facilities" there but never did 01:53 < bridge> There are many horror stories from how the CIA operated in Afghanistan, but this search and seizure thing could be such a normal part of your normal travel 01:55 < bridge> E.g. all my whatsapp messages and discord messages can become a part of the US intelligence db next time I come along 01:56 < bridge> It just takes me looking a little too disheveled or anxious, bam manual search, then the dude sees some sus anime pic that one weirdo keeps posting in #off-topic, bam all my phone dumped into the system, forever 01:56 < bridge> ~~they probably already are~~ 01:57 < bridge> Discord at least definitely 01:57 < bridge> There is of course the CIA and the NSA doing their "nefarious" things 01:57 < bridge> I can’t believe I did not know of this one, I’m a bit of an enthusiast of US crimes against humanity 01:58 < bridge> I bet I’ll get flagged next time because they monitor discord and think that me talking about this is sus 02:02 < bridge> And you'll still see the classic propaganda against the socialism, like "look at the stasi, no freedom" 02:02 < bridge> The NSA has spying power and capabilities totally surpassing anything the stasi could possibly do 02:02 < bridge> 02:03 < bridge> Though this is surely off topic now 02:39 < bridge> lmao 02:39 < bridge> How to quit discord xd 02:40 < bridge> Compiling and connecting a tee should do. Then edit bots/sample.cpp and compile again. Let’s talk live when you are awake :) 03:41 <+ws-client> @heinrich5991 i have somewhat of an proof for a theory i forgot to test yesterday evening 03:42 <+ws-client> dlopen never works. Not even the first time. But its hard to catch. Because dlopen passes without error and dlsym passes without error and calling the function works as expected. 03:42 <+ws-client> But it never loads the function from the shared object when compiled with -rdynamic it just calls the function within the server 03:44 <+ws-client> So when i hold back the dlopen/dlsym calls until i recompiled the shared object it changes nothing. It only ever prints the message that is statically compiled into the server executable not the one from the shared object. 03:45 <+ws-client> And yes the function i am calling in the shared object is also compiled directly into the ddnet server. But thats a feature. I want it all. Static/dynamic/hotreload/standalone. 03:46 <+ws-client> I thought i ruled out that theory by comparing the function points which did not match. The one found by dlsym and the function that was defined within the server code. 04:11 <+ws-client> https://zillyhuhn.com/cs/.1716343886.png 04:14 <+ws-client> But the function pointer i load with dlsym and then also call is `0x7fb34456fc2d` and the native function is `0x561b3c52a51b` given that you can print the functions location with `"%p", funname` 04:24 <+ws-client> ah right and thats why i tried `RTLD_DEEPBIND` which should place the symbols before global scope. And that now even breaks the error if i delete the shared object. 04:27 <+ws-client> `Symbol references in the shared object are resolved using (in order): symbols in the link map of objects loaded for the main program and its dependencies; symbols in shared objects (and their depen‐ dencies) that were previously opened with dlopen() using the RTLD_GLOBAL flag; and definitions in the shared object itself (and any dependencies that were loaded for that object).` 04:28 <+ws-client> from dlopen man page hmm 04:35 <+ws-client> but dlsym should be able to find the symbol i want it to find even when compiled with -rdynamic it works without so it has to work 04:35 <+ws-client> i guess with -rdynamic the server exposes its own symbols so when it calls dsym to search something it finds it in it self first lol .. so annoying 04:36 <+ws-client> especially on windows and releases it should just be compiled into the server. Not being external at all. But then i want the ability to hot reload overwrite it by loading a shared object. That has to be possible. 04:37 <+ws-client> why do i pass dlsym a handle to a shared object file when it decides to search in an entirely different file anyways!? 05:27 <+ws-client> Interesting it seems like i have the same problem without dlsym. Just a regular function call within the shared object. It is not calling the function defined in the shared object but in the process it was loaded in from?? Shouln't that be a hardcodet address somehow? 05:45 <+ws-client> https://zillyhuhn.com/cs/.1716349473.png 05:45 <+ws-client> https://zillyhuhn.com/cs/.1716349497.png 05:48 <+ws-client> `Bus error` xd never seen that one before 05:53 <+ws-client> https://zillyhuhn.com/cs/.1716349997.png 06:12 <+ws-client> https://zillyhuhn.com/cs/.1716351093.png 07:33 < bridge> morning 07:33 < bridge> gm 07:58 < bridge> good afternoon 08:21 < bridge> morning 08:38 <+ws-client> good morning european time zone enjoyers 08:40 < bridge> morning tea enjoyers and others 08:57 < bridge> Koffee 08:57 < bridge> Coffee 09:11 < bridge> norming 09:11 <+ws-client> i have the feeling using a macro to copy code would work 09:11 <+ws-client> ffs i want this to work 09:12 < bridge> hard working chiller working hard to make hard thing works 09:29 < bridge> Welp, here we go again 09:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242741153581891595/image.png?ex=664ef064&is=664d9ee4&hm=b445218020e374094ebf9deb28618f05db46b71cd50f9fd4b6ae33db09199975& 09:30 < bridge> This time I can confidently say that I can finish the main menu without giving up on the spot lmao 09:37 < bridge> ChillerDragon: morning 09:38 < bridge> I guess you could rename the function that you statically compile into the server 09:38 < bridge> moin :owo: 09:44 <+ws-client> good morning epyc irc discord chat enjoyers and others 09:45 <+ws-client> @chillerdragon, will you create epyc fng server side bots? 09:46 <+ws-client> then please write in rust, thanks <:heartw:395753947396046850> 10:04 < bridge> epic menu moment 10:04 < bridge> yeah, now Imma have to manually insert every single flag data 10:04 < bridge> :justatest: 10:04 < bridge> :greenthing: 10:05 < bridge> and yeah, no other way around it, have to do it 10:05 < bridge> the fact that we include almost every language in the world is nuts to me 10:26 < bridge> you're recreating ddnet in godot? xd 10:39 < bridge> Im trying to recreate the client part 10:39 < bridge> well communicating with the servers with gdextension aint gonna work 10:39 < bridge> So that needs also an overhaul 10:39 < bridge> So yeah, gonna implement single player lol 10:40 < bridge> why is communicating with the servers not going to work? 10:40 < bridge> matching all of the incoming datas will be very difficult to optimize 10:41 < bridge> any wrong data or exploit will lead to chaos 10:42 < bridge> It should work after a quick look in godot docs 10:42 < bridge> They offer low-mid and high level abstractions 10:48 < bridge> can you use external libraries in godot? 10:48 < bridge> Yes 10:49 < bridge> then it shouldn't be too hard™ 10:49 < bridge> ah i see cool stuff 10:49 < bridge> i don't think you should try to 1:1 recreate the client though 😅 10:49 < bridge> if you're going to start from the bottom up why not give it its own flavor 10:49 < bridge> I have to learn that tho 10:50 < bridge> https://docs.godotengine.org/en/stable/contributing/development/core_and_modules/binding_to_external_libraries.html 10:50 < bridge> 10:50 < bridge> never used godot but it doesnt seem "too hard™️" 10:50 < bridge> https://docs.godotengine.org/en/stable/contributing/development/core_and_modules/binding_to_external_libraries.html 10:50 < bridge> 10:50 < bridge> never used godot but it doesnt seem "too hard™️ " 10:50 < bridge> https://docs.godotengine.org/en/stable/contributing/development/core_and_modules/binding_to_external_libraries.html 10:50 < bridge> 10:50 < bridge> never used godot but it doesnt seem too hard™️ 10:50 < bridge> I should, good practice 10:50 < bridge> I guess it could be hard if you've not dealt with native libraries before 10:51 < bridge> I mean, if the data I get from the servers are readable as JSON, I can easily read it 11:00 < bridge> I mean, if the data I get from the servers are readable as JSON, I can easily read it (inside GDScript) 11:02 < bridge> please dont use json for gamedata 🤢 11:02 < bridge> xd 11:02 < bridge> this would be terribly slow 11:03 < bridge> I'll handle it differently dont worry 11:03 < bridge> yaml ftw 11:03 < bridge> I can use compressed packages as well, which is cpp 11:04 < bridge> toml 🙂 11:07 < bridge> ChillerDragon https://amber-lang.com/ 11:07 < bridge> note that parsing json isn't as slow as you make it out to be 11:08 < bridge> yeah 11:08 < bridge> the json web claims to be a middle ground 11:08 < bridge> "It is easy for humans to read and write. It is easy for machines to parse and generate. " 11:09 < bridge> compared to binary, it is slow. There is no human interaction inbetween, so json is the wrong format at all 11:10 < bridge> If you really need to depend on key value patterns in data serialization use msgpack instead 11:10 < bridge> If you really need to depend on key value patterns in data (de)serialization use msgpack instead 11:10 < bridge> the human interaction in this case is the developer who prefers JSON 11:11 < bridge> but the tradeoff is not worth it 11:11 < bridge> :pepeW: I'll figure something out 11:12 < bridge> for save / load data handling, I prefer JSON cuz the IDE provides you options 11:12 < bridge> for constant data handling, idk 11:13 < bridge> For static data like maps I can imagine of storing it in json & images as blobs inside json 11:13 < bridge> that is for the developer to decide, I'd sy 11:13 < bridge> If you can afford it, sure 11:13 < bridge> As long as I can decompress the map files, yeah 11:13 < bridge> You can convert them 11:13 < bridge> from the current format to json 11:13 < bridge> oh, so it's encrypted json? 11:14 < bridge> no 11:14 < bridge> sadge 11:14 < bridge> its currently binary, but there are tools able to parse this file & then you could write it to json 11:14 < bridge> twgpu is capable afaik 11:14 < bridge> I'm not sure if I'd use msgpack over json. json is ubiquitous, msgpack is not. I wouldn't even know if the fastest JSON parsers are slower or faster than the fastest msgpack parsers. due to the popularity, JSON might be faster 11:15 < bridge> In JS JSON is faster because of the native integration into V8 11:15 < bridge> So yeah, probably json is faster due to popularity and optimized parsers 11:15 < bridge> but bandwidth doesnt grow on trees 😄 11:15 < bridge> its expensive 11:15 < bridge> https://gitlab.com/Patiga/twmap can convert teeworlds/ddnet maps into JSON 11:16 < bridge> compressed JSON is about as long as compressed msgpack in my experiments with the serverbrowser 11:16 < bridge> wouldn't it be funny to convert toml into GDScript cuz of it's similarity? lmao 11:16 < bridge> now we are adding more cpu time 11:18 < bridge> Oh, python script manages the map unpacking. then ez 11:18 < bridge> we have a python api inside Godot's native tunnel 11:18 < bridge> yes, its actually pretty neat 11:19 < bridge> Or I could just rewrite it myself inside Godot and deal with it that way 11:19 < bridge> https://gitlab.com/Patiga/twmap/-/blob/4d9d3e45507abe8f4870e9d0e4b89555d26ef408/twmap-tools/src/bin/twmap-edit.rs this tool can take a teeworlds/ddnet map and convert it to pngs, json and opus files 11:19 < bridge> rust :gigachad: 11:20 < bridge> imma stick to that python code imo, as long as I can recreate the code onto the IDE's native language, it will be faster imo 11:21 < bridge> which python code? 11:22 <+ws-client> parsing text is defs less efficient than parsing binary tho (if the binary format doesnt suck), even if the json parsers are super optimized for effective runtime 11:23 < bridge> JStar: I'm interested in benchmarks of this. I agree with this theoretical point of view, but I don't know if it holds up with parsers in the real world 11:23 <+ws-client> i dunno i only tested bincode it was faster 11:23 <+ws-client> for msgpack i cant tell 11:23 < bridge> msgpack emulates JSON structure 11:24 < bridge> it's not really optimized 11:24 <+ws-client> https://github.com/djkoloski/rust_serialization_benchmark 11:24 <+ws-client> considering json is text, it's still impressive that it can almost hold up 11:24 < bridge> @cellegenrih the twmap-edit tool can be compiled and then you can execute `./twmap-edit --mapdir input.map output-directory` to obtain the JSONs, PNGs, and OPUS files 11:25 <+ws-client> but anyway it also depends on the use case 11:25 <+ws-client> server browser stores lot of text 11:25 <+ws-client> map files are really more binary like 11:25 <+ws-client> floats, ints whatever 11:25 < bridge> twmap/scripts/generate_external_constants.py 11:26 <+ws-client> i wish json would allow comments 11:26 < bridge> I doubt that this will be easier to use than the program 11:26 <+ws-client> i use them for config files and i think here readability is nice 11:27 < bridge> both depend the rust library 11:27 < bridge> toml is quite nice for config files in my experience 11:27 < bridge> then I can just run a loop for each map file in the directory and get their data in different folders, neat 11:27 < bridge> But then, how about doing it at runtime? 11:27 < bridge> JSON isn't really a human-writable format, it's more like a machine interchange format 11:27 <+ws-client> there is json5 or smth that allows comments 11:28 <+ws-client> but dunno, i want it to work with rust doc comments to generate comments inside the json file :D 11:28 < bridge> can you execute external programs at runtime? 11:28 < bridge> I can modify files at runtime 11:29 < bridge> read it's data, maybe save it's data as well 11:29 <+ws-client> btw cellegen, patiga also has a godot tw map implementation :D 11:29 < bridge> similar to how it handles JSON 11:29 <+ws-client> i dunno if u aware of that 11:29 < bridge> OH YEAH THE FNG ONE 11:29 < bridge> he has that 11:29 <+ws-client> i think it's simply a map viewer 11:29 < bridge> fuck, what was the project where 3d teeworlds was presented inside a 2d map? 11:29 < bridge> I could just joink that code and it's ez clap 11:30 < bridge> But per design its human readable 11:30 < bridge> yea. but it's also quite strict, which makes it nice for machine interchange 11:31 < bridge> Which interchange format is non-strict? 😮 Just curious now 11:37 < bridge> I'd consider yaml, toml, json5, etc. unsuitable for machine interchange for that reason 11:37 < bridge> because there are so many ways to write the same thing 11:38 < bridge> well, yaml is indeed a bit of a weird language 11:38 <+ws-client> okay now i actually made it work. Everything. Hot reload/collision access/and static linking at the same time. 11:38 <+ws-client> but i had to use a macro to duplicate code xd 11:40 <+ws-client> https://zillyhuhn.com/cs/.1716370768.png 11:41 <+ws-client> i mean i could use a #else and then the code is not duplicated in the resulting shared object. I had to use some #define hacks to not make the IDE trip but all in all this seems hackier than it should be 11:42 < bridge> :justatest: 11:42 <+ws-client> `#if`s are evil, better be careful with them. especially if they contain a struct definition :D 11:46 <+ws-client> man it's so sad that most epyc rust binary serialization frameworks don't work with serde... most libs only derive serde and not they custom traits 11:47 <+ws-client> i'd like to have more alternatives to bincode 11:48 <+ws-client> https://docs.rs/bitcode/0.6.0/bitcode/ looks promising 11:48 < bridge> there's https://github.com/rust-lang/rfcs/pull/3634 which would solve the problem 11:49 < bridge> unfortunately 11:49 < bridge> > This makes it even more disheartening to shut this down without providing any technical feedback. 11:49 <+ws-client> omg that would be so epyc 11:50 <+ws-client> xd 11:50 <+ws-client> > This makes it even more disheartening to shut this down without providing any technical feedback. 11:50 <+ws-client> what does that mean? 11:50 < bridge> this is a comment on the RFC. some team member said that it's unlikely that it's even considered by the team 11:50 <+ws-client> mhh too bad 11:56 <+ws-client> we also need a pure rust encoder for zstd xdd. if someone has nothing better to do ;) 11:58 < bridge> for easier cross-compilation? ^^ 11:58 < bridge> I generally think time rewriting working code from language A to language B isn't that well-spent 11:58 <+ws-client> now that rustcrypto offers rustls, the only things left are: 1. opus en-/decoder, 2. vorbis encoder, 3. easier to use .webm (or .mp4) encoder 4. zstd 11:59 <+ws-client> >I generally think time rewriting working code from language A to language B isn't that well-spent 11:59 <+ws-client> true 11:59 <+ws-client> but i like if u dont need a c compiler 11:59 <+ws-client> i kinda dislike having to install 2 compilers to work 12:01 <+ws-client> 1. & 2. could be put behind a feature since it's only required for converting map files, 3. i failed with the mkv repo that exists, and video encoding ofc also needs audio encoding anyway, so vorbis might still be required 12:01 <+ws-client> and for zstd the only alternative is brotli, where the rust crate seems to not allow passing custom dictionaries 12:01 <+ws-client> (the only good alternative xd) 12:07 < bridge> Oh btw, during the flag selection, I noticed that the flag of Mauritania has a different flag now 12:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242780994730459176/image.png?ex=664f157e&is=664dc3fe&hm=141fa497d5a13625489e8213c8e73dfa3bf1677348f7fb0cd980388b01b89139& 12:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242780994910818354/MR.png?ex=664f157e&is=664dc3fe&hm=07677c26f65e4762cf9de6cae4df8ac7e67316de0840d1091b3d80ae668d4108& 12:10 < bridge> "flags in video games are a bad idea. vol. 201" 12:12 < bridge> "Just read the name bro, you don't need flags to see which country it is" 12:22 < bridge> https://www.flagsarenotlanguages.com/blog/ 12:40 <+ws-client> flags are cool, it's just that ppl directly take it political and are mad. 12:41 <+ws-client> if ppl from same clan all have same flag it gives the clan a bit more charm 12:42 < bridge> At last 12:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242789585293938729/image.png?ex=664f1d7f&is=664dcbff&hm=3114dd830722921aeb608daba595483805016e0586ed75758e71b47d53760c4c& 12:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242789641493545020/image.png?ex=664f1d8c&is=664dcc0c&hm=491ffb9ee0ee7e8be6c3d5c08a04e7df9b89e9d38ee239b9c43e14ce88f2aa4e& 12:42 <+ws-client> maybe cusom flags (with limitated amount of possibilities) would be cool :D 12:42 < bridge> It can be easily done, just replacing the flag texture and name does it 12:43 < bridge> as long as I could make a localization file to make it possible 12:43 < bridge> csv sounds better 12:54 < bridge> Imagine being a conlang 12:54 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242792682539974746/d8a1af3de7e0f631.png?ex=664f2061&is=664dcee1&hm=5fd1b68d20308faf2a11071f7c6fd87423fc36637ea391ee5d27506c20563e3e& 12:55 < bridge> hmmm 12:55 < bridge> Well, I only add flags which have a valid flag texture and name in it 12:57 < bridge> Imagine being a language spoken by people that don't have own country (yet) 12:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242793499699449886/460902743baea0c5.png?ex=664f2124&is=664dcfa4&hm=18e3da374dd624fa1a7acd74910133d7a9db90d6ed44de7d93f2be3e0318e923& 12:57 < bridge> Imagine being a language spoken by people that don't have their own country (yet) 12:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242793499699449886/460902743baea0c5.png?ex=664f2124&is=664dcfa4&hm=18e3da374dd624fa1a7acd74910133d7a9db90d6ed44de7d93f2be3e0318e923& 13:00 < bridge> Imagine being a language spoken by people that don't have their own country ||(yet)|| 13:03 < bridge> Imagine being a language spoken by people that don't have their own country ||(yet)||, let alone a flag 13:03 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242793499699449886/460902743baea0c5.png?ex=664f2124&is=664dcfa4&hm=18e3da374dd624fa1a7acd74910133d7a9db90d6ed44de7d93f2be3e0318e923& 13:04 < bridge> Imagine having two flags (+two alphabets and two orthographies) 13:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242794659592278056/4c74af65dd719673.png?ex=664f2238&is=664dd0b8&hm=5f9f4878cc35026370a1ca2a2abf2e4cb00eda4716714642f3e4430b6b38add4& 13:04 < bridge> https://github.com/rust-lang/rust/issues/99571 13:09 < bridge> I won't even comment on Traditional Chinese 13:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242796510450548816/2a61fc731158084a.png?ex=664f23f2&is=664dd272&hm=3307aad12b6bc40c41afeb7539708b4ee2956046a10f6e2db22b6d3e32c8242f& 13:09 < bridge> I won't even comment on Traditional Chinese, so I'll stop there 13:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242796510450548816/2a61fc731158084a.png?ex=664f23f2&is=664dd272&hm=3307aad12b6bc40c41afeb7539708b4ee2956046a10f6e2db22b6d3e32c8242f& 13:31 < bridge> Heading there 13:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242801964585058415/2024-05-22_13-30-41.mp4?ex=664f2906&is=664dd786&hm=f3f86af9315c5b72c04c28eb89143c8ee97fc7214922e97b1b5de911774433f3& 14:09 <+ws-client> still no intel mac devs here huh? 14:09 <+ws-client> i feel like its 2016 again and i struggle to compile ddnet 14:12 < bridge> error message? 14:14 <+ws-client> jopsti i may have to increase the search history xd maybe you have a point 14:14 <+ws-client> idk what is a reasonable amount of messages to keep in the ram on my server side for it to be useful for search 14:15 <+ws-client> the last message i sent that contained SDL is the error message -.- 14:15 <+ws-client> got it 14:15 <+ws-client> `Undefined symbols for architecture x86_64:` 14:15 <+ws-client> ` "_SDL_FlashWindow", referenced from:` 14:15 <+ws-client> ` CGraphicsBackend_SDL_GL::NotifyWindow() in backend_sdl.cpp.o` 14:15 <+ws-client> `ld: symbol(s) not found for architecture x86_64` 14:16 <+ws-client> macOS Monterey 12.7.4 14:16 < bridge> I guess the SDL doesn't contain the x86_64 variant 14:16 < bridge> where is it from? ddnet-libs? 14:16 <+ws-client> idk 14:17 <+ws-client> im currently undusting my sdlvm tool 14:17 <+ws-client> then i should be able to use selfcompiled 14:17 <+ws-client> but i dont see how any version of sdl should not support x86_64 anymore -.- 14:18 < bridge> libraries supporting multiple architectures at the same time are actually the odd ones ^^ 14:18 <+ws-client> no thats pog 14:18 < bridge> but on macos they sometimes do ("fat binaries") https://en.wikipedia.org/wiki/Fat_binary 14:18 <+ws-client> yes 14:18 <+ws-client> macos is known for that epic feature 14:19 < bridge> macOS has some really solid engineering at random points 14:19 < bridge> that feature doubles your download size, it's kinda meh 14:19 < bridge> it's nice for development though 14:19 < bridge> the framework stuff is also quite nice 14:19 < bridge> I love machO in general 14:19 <+ws-client> i tried -DPREFER_BUNDLED_LIBS=ON 14:20 <+ws-client> `/Users/chillerdragon/Desktop/git/ddnet/src/engine/client/sound.cpp:506:3: error: use of undeclared identifier 'WavpackCloseFile'` 14:20 < bridge> and deleted the build directory? 14:20 <+ws-client> aaa 14:20 <+ws-client> told you its 2016 again xd 14:22 < bridge> The amount of work they put into keeping things properly compatible backwards/forwards is also very nice, this is something linux is severely lacking in 14:23 <+ws-client> idk 14:23 < bridge> windows is better at it 14:23 <+ws-client> i wish my mac could send screenshots xd 14:23 <+ws-client> yes agree 14:23 <+ws-client> windows is better 14:23 < bridge> 32-bit support was just completely dropped by apple 14:23 < bridge> making many games unplayable, likely forever 14:24 <+ws-client> and apparently someone dropped my 64 bit support too -.- 14:24 < bridge> this is something that can usually be made to work on linux, but on macos it's just completely gone 14:24 < bridge> windows has a fatal flaw, they won't let you use future functionality in a sane manner on a binary built targeting old windows 14:25 <+ws-client> https://github.com/ddnet/ddnet/assets/20344300/493f8688-28e6-47db-a234-781bec6ac608 14:25 < bridge> example please 14:28 <+ws-client> i forgot where i saw that i think it was some primagen video where they talked about how windows pads and versions their structs for future compability 14:28 <+ws-client> ah ye wasn't it the C is not a language but api article lerato shared like a few years ago already 14:29 <+ws-client> old stuff has to be emulated, no need to stay compatible directly 14:32 <+ws-client> ok -DPREFER_BUNDLED_LIBS and new build dir compiles yay 14:33 < bridge> then I question your build environment 14:33 < bridge> why do you have an architecture-incompatible SDL2 lying around? ^^ 14:33 <+ws-client> dude i did things to this mac 14:33 <+ws-client> but it is indeed a bit odd xd 14:34 <+ws-client> maybe brew stopped supporting x86? 14:35 <+ws-client> how i imagine chillerdragon installing sdl2: "where can i download sdl.dll on macos?" - some scam link xddd 14:35 <+ws-client> -.- 14:35 <+ws-client> i use sdlvm 14:36 <+ws-client> the sdlvm version manager written in bash 14:36 <+ws-client> it compiles it from source 14:36 <+ws-client> yeah tbf, i blame the cpp ecosystem 14:36 <+ws-client> dependencies always suck there lmao 14:37 <+ws-client> https://github.com/microsoft/vcpkg 14:37 <+ws-client> even if you target linux only xd 14:37 <+ws-client> microsoft to the rescue 14:37 <+ws-client> nice 14:37 <+ws-client> thanks microsoft 14:38 <+ws-client> thanks for inventing windows just to have a reason to invent vcpkg xD 14:38 < bridge> dependencies in C++ really are a pain 😦 14:39 < bridge> On macOS you have `__builtin_available` (and `@available` for obj-c), and the entire "library" is built with availability annotations, if you build an executable targetting old macOS, any function that isn't available on that old version will be weakly linked. It's quite ergonomic 14:39 < bridge> On Windows to achieve a similar effect you'll need to just resort to `LoadLibrary` and hand resolving those symbols that might not exist and checking by hand on MSDN when they are available or not 14:39 < bridge> inb4 someone saying "it's a feature" 14:39 < bridge> is there no weak linking on windows? 14:40 < bridge> but the annotations are nice, I guess 14:40 < bridge> There is an undocumented compiler feature that can perform weak linking 14:40 < bridge> eh 14:41 < bridge> It's a far cry from the very simple `if(__builtin_available(macOS 13.0.1))` 14:41 < bridge> There is an undocumented linker feature that can perform weak linking 14:44 <+ws-client> dude i hate brew 14:44 < bridge> @heinrich5991 why do you think windows is better at it? Is it only the fact that apple dropped 32bit support and microsoft still keeps it? 14:44 <+ws-client> i wanted to check my sdl version and fakin brew is using my bamboo island internet connection to update LIBASS 14:44 <+ws-client> fakin lib ASS 14:45 < bridge> the fact that I can generally run old windows binaries 14:45 < bridge> I've not heard the same for macos, and especially that with the 32-bit thing 14:46 < bridge> They did drop support for 16 bit binaries somewhere along the way, so you can't run those anymore e.g. 14:46 < bridge> where they dropped tons of still-used applications and games 14:46 < bridge> the time frame is vastly different 14:47 < bridge> Hm, I' 14:47 < bridge> I'm unsure 14:47 < bridge> (and you can actually still run them using wine, I think. although not supported by microsoft) 14:48 < bridge> (you can) 14:49 < bridge> apparently the feature was only dropped in win11? 14:49 < bridge> Could you elaborate? Was the transition period longer? 14:49 < bridge> yes 14:49 < bridge> also, there *was* a transition period 14:50 < bridge> apple didn't announce they will drop support for 32-bit applications ahead of time 14:50 < bridge> the feature you could manually enable to run 16-bit windows applications. searching for it right now 14:50 < bridge> Did Microsoft? I don't remember one really 14:51 < bridge> they made the feature optional in some version of windows, apparently 14:51 < bridge> so in 1995, microsoft started supporting 32-bit applications 14:52 < bridge> in 2021, they stopped supporting 16-bit applications 14:52 < bridge> (assuming the release date of windows 11 is the one where the feature got dropped completely) 14:52 < bridge> that's 26 years of keeping old binaries running. even now, there's a way to run them using winedvm, apparently 14:53 <+ws-client> never seen a 16 bit binary 14:53 < bridge> when did apple move to intel 64-bit architecture? 14:53 <+ws-client> or a 16 bit download button on a website xd 14:54 < bridge> 2003 for apples first 64 bit binaries, 2019 for macOS that dropped 32 bit 14:54 < bridge> 16 years vs 26 is indeed drastic 14:55 < bridge> Ah I guess PowerPC era doesn't count, so 2006 for intel 64 bit 14:55 < bridge> apparently in 2006, they released the first intel 64-bit macbook. they adopted arm in 2020, so it's like 14 years 14:56 < bridge> Arm didn't drop intel 64bit binary support though 14:56 <+ws-client> well 14:56 < bridge> You want the release date of macOS catalina where they dropped 32b support 14:56 <+ws-client> something broke on my machine xd 14:56 < bridge> ah, they dropped it for intel macs as well? 14:56 <+ws-client> i can not update to a new macos 14:56 < bridge> If you want to upgrade your OS, yes 14:56 < bridge> I guess to lower the competition for their arm macs. classic 14:57 <+ws-client> sometimes i really wonder how old heinrich is XDD he talks like he casually used 16-bit apps the whole day 14:57 <+ws-client> but that might be classic apple pls buy new hardware thing xd 14:57 <+ws-client> is heinrich age secret? 14:57 <+ws-client> dunno, i'd say 05.09.1991 14:57 <+ws-client> he was born in 1959 its in the name 14:57 <+ws-client> xdd 14:57 < bridge> I actually don't follow this line of logic (I do agree that it probably has a business motivation) 14:59 < bridge> How does not supporting 32bit binaries on their intel macs push people to the arm macs? Those don't support 32b either 14:59 < bridge> it's one fewer argument for staying on intel 64bit macs 14:59 < bridge> If you have to have 32bit binaries working, you are forced to stick to High Sierra on an intel mac anyway 14:59 < bridge> otherwise people might stay on intel 64bit macs to retain 32bit compatibility. but if they do that now, they also don't get OS updates 14:59 < bridge> but yea. microsoft dropped 16-bit support when apparently ChillerDragon hasn't even seen one in his life 15:00 < bridge> wheras I'm sure ChillerDragon used plenty of 32-bit macos apps 15:00 < bridge> (I would not be very surprised if it's not to just lower engineering costs, keeping 2 different arches and 2 different bus widths all stable is not exactly cheap when you are building and maintaining your own bootloader to kernel to entire OS sdk) 15:01 < bridge> (I would not be very surprised if it's to just lower engineering costs, keeping 2 different arches and 2 different bus widths all stable is not exactly cheap when you are building and maintaining your own bootloader to kernel to entire OS sdk) 15:01 < bridge> that's fair, too 15:03 < bridge> (comparing windows's support for 16b to how 32b binaries were supported under 64b windows for 2decades is pretty wrong anyway, 16b was always a very unwelcome stranger that worked very roughly) 15:03 * anxton slaps anxton around a bit with a large fishbot 15:03 < bridge> If we were born just a decade earlier we probably might have been pissed that our DOS era accounting software no longer works on windows xp and damn those nerds with their bits 15:04 <+ws-client> wowow learath so progressive today. make sure to not drop your love for c 15:05 < bridge> Anyway, If anything I feel apple and microsoft have very similar levels of care about compatibility, I feel forwards compatibility is more ergonomic on macOS and backwards compatibility is more comprehensive on windows 15:06 < bridge> and then there is linux where both are extremely annoying 😄 15:07 < bridge> linux kernel backcompat is at least ergonomic 15:07 < bridge> unfortunately all the UI stuff is veeery unstable 15:36 < bridge> I remember reading about how apple was actively sabotaging backward compatibility. I'll see if I can remember where 15:37 < bridge> I would not be surprised at all 😄 15:39 < bridge> but you feel differently 15:39 < bridge> (currently) 15:41 < bridge> I feel as if it's not much worse than microsoft if you don't have a need for 32 bit legacy applications. I don't have a need for using old versions of apps. That's perhaps what contributes to my (possibly) erroneous understanding of the situation 15:43 < bridge> I also don't ever play games on my mac, so that's another part of this. I only ever use creative applications, test and debug, and browse the web on my mac 15:51 <+ws-client> on linux i can play more games than on any other platform, thanks to wine, emulators etc. 15:52 < bridge> Mh, I think windows probably still has the widest library. Any emulator available on linux is also available on windows 15:53 < bridge> + you get games with chinese rootkit available there too 15:53 <+ws-client> but does wine run on windows? 15:53 <+ws-client> i can use wine to play old games 15:57 < bridge> <0xdeen> I think you can use Wine to run old Windows games on Windows? But maybe I misremember 😄 15:57 < bridge> There are better alternatives on windows. For old games targetting down to XP, you can just run them natively thanks to the impressive backwards compatibility. 15:57 < bridge> For DOS era games you have DOSbox 15:58 <+ws-client> anyway, with such compability addiction (has to run natively) we don't give new tech a chance. 15:59 < bridge> Actually on win 11 perhaps it's no longer down to xp but down to win 7 now 15:59 <+ws-client> i think emulators are fine, most games released 10 years today can run on my CPU lmao 15:59 <+ws-client> 10 years ago* 16:00 < bridge> As long as there is no significant architecture difference. Yes emulators are fine 16:00 < bridge> The ps3 released in 2006 still is emulated in a way that requires a beastly computer and JIT 16:01 < bridge> Thankfully it's getting rarer, recent consoles are just x86-64 or aarch64 16:02 < bridge> I wonder if one could isolate all the backwards compatibility now that I think about it. That might be a cute idea for an OS 16:02 < bridge> got some more details about that? 16:04 < bridge> https://rpcs3.net/ 16:04 < bridge> They just ship llvm, they lift the powerpc assembly to LLVM IR and then let it compile it back down 16:05 < bridge> It is very good now, but it took a decade to get it running this nice 😄 16:06 < bridge> https://youtu.be/19ae5Mq2lJE 16:06 < bridge> I guess I'm gonna have to watch that vidoe 16:07 < bridge> This is where I learned about SHUFB 😄 16:08 < bridge> Oh and vgf2p8affineqb 16:08 < bridge> gesundheit! 16:16 < bridge> Yuzu alsp does jit, aarch64 to x64 only though and they use some very specific hand coded translator 16:17 < bridge> Well did, before nintendo nuked yuzu off of planet earth 16:18 < bridge> it was open-source though, wasn't it? 16:18 < bridge> Mostly 16:18 < bridge> They had a beta branch that was paywalled iirc 16:19 < bridge> which was probably their downfall 16:19 < bridge> It got features like native code execution when on aarch64 hosts 16:19 < bridge> but sounds like the project could survive the takedown then 16:19 < bridge> I would guess so yeah. Charging money for these things is a big no no 16:19 < bridge> There are mirrors that keep popping up only to be nuked again 16:20 < bridge> Nintendo took down like 90 of them recently 16:21 < bridge> have they tried not hosting on github yet? 16:22 < bridge> Winevdm is for 16 bit stuff that windows doesn't support now 16:23 < bridge> I think wine used to support this but eventually dropped it and started using dosbox instead 16:24 < bridge> Anyway, wine might even run 32 bit stuff on Mac now that the pe conversion is almost done 16:24 < bridge> That's the current thinking yeah, but none of these are a continuation fork yet. They all are just people trying to mirror it 16:25 < bridge> @learath2 in x86_64 u can only pass 6 arguments by register right? and if a argument takes more than 1 register and surpases those do you need some kind of padding right? 16:25 < bridge> to put the whole argument on the stack 16:25 < bridge> and not partially on a reg and stack 16:25 < bridge> Iirc wines win16 support was based on what windows used to support. Which wasn't all that great to begin with. The apis still being there isn't enough to do much 16:26 < bridge> This is correct. You don't get half a 128b value in register and half on stack 16:26 < bridge> In what way is it insufficient? 16:26 < bridge> got a link to that? sounds interesting 16:27 < bridge> It's in the wine 8 change notes I think 16:27 < bridge> The point is to allow running 32 bit stuff without 32 bit userspace libs 16:28 < bridge> aah 16:28 < bridge> yes, that is amazing 16:28 < bridge> Wine is basically one of the few things keeping them around in distros 16:28 < bridge> I really liked reading about that change 16:28 < bridge> Dos programs expect a dos environment, windows made no attempt at emulating one 16:28 < bridge> Along with steam... Valve pls fix 16:28 < bridge> Ah okay, I think wine currently just starts dosbox for this 16:29 < bridge> Yeah, dosbox does handle that kind of stuff. I did not know wine used dosbox that's cool 16:30 < bridge> nice, ancient coding discussion again 16:31 < bridge> this is a bug i had to fix today xd 16:31 < bridge> This is rather modern 😄 16:31 < bridge> Also of note is that the abi requires int128s passed on the stack to be 16byte aligned 16:32 < bridge> wanna see some nice assembly? 16:32 < bridge> (Amd64 sysv abi that is) 16:32 < bridge> ```x86asm 16:32 < bridge> _invoke_trampoline: 16:32 < bridge> # rdi <- fn_ptr: extern "C" fn() 16:32 < bridge> # rsi <- args_ptr: *const u64 16:32 < bridge> # rdx <- args_len: usize 16:32 < bridge> # rcx <- ret_ptr: &mut [u64; 2] 16:32 < bridge> 16:32 < bridge> push rbp # Push rbp (callee-saved). 16:32 < bridge> push rcx # Push rcx (ret_ptr). 16:32 < bridge> mov rbp, rsp # Store the current stack pointer. 16:32 < bridge> sub rsp, 8 # Align the stack. 16:32 < bridge> 16:32 < bridge> mov r10, rdi # We'll need rdi. 16:32 < bridge> mov r11, rsi # We'll need rsi. 16:32 < bridge> 16:33 < bridge> cmp rdx, 6 # Check if there are more than 6 arguments. 16:33 < bridge> jbe 2f # If there are less than 6, skip to register arguments. 16:33 < bridge> 16:33 < bridge> # 16:33 < bridge> # Process stack arguments. 16:33 < bridge> # 16:33 < bridge> 16:33 < bridge> # Add padding to support an odd number of stack parameters. 16:33 < bridge> mov rax, rdx 16:33 < bridge> and rax, 1 16:33 < bridge> lea rsp, [rsp + 8 * rax] 16:33 < bridge> 16:33 < bridge> 1: 16:33 < bridge> dec rdx # Decrement length. 16:33 < bridge> mov rax, [r11 + 8 * rdx] # Load the value. 16:33 < bridge> push rax # Push it into the stack. 16:33 < bridge> and 16:34 < bridge> we have the same for aarch 16:34 < bridge> Can't read that well on a phone, I'll take a look later 16:34 < bridge> how to highlight aarch assembly 16:34 < bridge> xd 16:34 < bridge> ```asm 16:34 < bridge> _invoke_trampoline: 16:34 < bridge> // x0 <- fn_ptr: extern "C" fn() 16:34 < bridge> // x1 <- args_ptr: *const u64 16:34 < bridge> // x2 <- args_len: usize 16:34 < bridge> // x3 <- ret_ptr: &mut [u64; 4] 16:34 < bridge> 16:34 < bridge> stp x29, x30, [sp, #-16]! 16:34 < bridge> stp x19, x3, [sp, #-16]! // Necessary to restore the stack after the call. 16:34 < bridge> mov x19, sp 16:34 < bridge> 16:34 < bridge> mov x9, x0 // We'll need x0. 16:34 < bridge> add x10, x1, x2, lsl 3 // Move the pointer to the end (past last element). 16:34 < bridge> 16:34 < bridge> cmp x2, 8 // Check if there are more than 8 arguments. 16:34 < bridge> ble 2f // If there are less than 8, skip to register arguments. 16:34 < bridge> 16:34 < bridge> // 16:34 < bridge> // Process stack arguments. 16:34 < bridge> // 16:34 < bridge> 16:34 < bridge> // Add padding to support an odd number of stack parameters. 16:34 < bridge> and x0, x2, 1 16:34 < bridge> sub x4, sp, x0, lsl 3 // ARM doesn't like `str reg, [sp]` instructions when 16:34 < bridge> // the stack isn't 16-byte aligned (not just on `bl`). 16:34 < bridge> 16:34 < bridge> 1: 16:34 < bridge> sub x2, x2, 1 // Decrement length. 16:34 < bridge> ldr x3, [x10, #-8]! // Decrement pointer, then load the value. 16:34 < bridge> str x3, [x4, #-8]! // Reserve stack memory, then write the value. 16:34 < bridge> 16:34 < bridge> anyway here it is 16:34 < bridge> arm asm is clean 16:34 < bridge> MSVC might disagree with some of these btw. I do remember there being atleast a minor difference in 128bit int passing. Though the difference escapes me rn 16:35 < bridge> well we only care about linux 64 bit and apple silicon 16:35 < bridge> we dont do windows here 16:35 < bridge> Ah, then it's fine. Msvc also only passes 4 args in registers e.g. 16:37 < bridge> 16:37 < bridge> im so happy a bug is fixed 16:37 < bridge> updating to llvm 18 and rust 1.78 has been pain 16:37 < bridge> xd 16:38 < bridge> the bliss of programming 16:38 < bridge> why was updating to rust 1.78 pain? 16:38 < bridge> well we were on 1.76 before 16:38 < bridge> so they changed the u128 layout to be correct 16:38 < bridge> 16byte align instead of 8 16:39 < bridge> and we used llvm 17 before 16:40 < bridge> which also had the old u128 layout 16:40 < bridge> im a hackerman cuz i used 0xdeadbeef to debug 16:40 < bridge> :gigachad: 16:41 < bridge> Idk who is right tbf. Llvm wasn't technically wrong to have 8 as alignment for u128 16:41 <+ws-client> Aimazing 16:41 < bridge> https://en.wikipedia.org/wiki/Hexspeak 16:41 < bridge> It was most certainly not the optimal alignment for it, but it is the true minimum alignment 16:41 < bridge> its about adapting to C 16:41 < bridge> as always 16:42 < bridge> Well it's not C that decides this. C couldn't care less how you align anything 16:43 < bridge> The abi people did make a decision there, perhaps because all the optimization guides for processors I could get my hands on suggest using the natural alignment for 128 bit types 16:43 < bridge> But I don't know if it's LLVMs job to care about ABI. Isn't that part of clangs job? 16:46 < bridge> also LLVM 16:58 < bridge> with llvm u can use any data layout u want, but the one u get if u request the default for the host platform suggests now a 16 byte alignment 16:58 < bridge> whereas before had 8 16:58 < bridge> but u can define ur own data layout 16:59 < bridge> https://llvm.org/docs/LangRef.html#data-layout 16:59 < bridge> > When constructing the data layout for a given target, LLVM starts with a default set of specifications which are then (possibly) overridden by the specifications in the datalayout keyword. The default specifications are given in this list: 16:59 < bridge> > 16:59 < bridge> > e - little endian 16:59 < bridge> > 16:59 < bridge> > p:64:64:64 - 64-bit pointers with 64-bit alignment. 16:59 < bridge> > 16:59 < bridge> > p[n]:64:64:64 - Other address spaces are assumed to be the same as the default address space. 16:59 < bridge> > 16:59 < bridge> > S0 - natural stack alignment is unspecified 16:59 < bridge> > 16:59 < bridge> > i1:8:8 - i1 is 8-bit (byte) aligned 16:59 < bridge> > 16:59 < bridge> > i8:8:8 - i8 is 8-bit (byte) aligned as mandated 16:59 < bridge> > 16:59 < bridge> > i16:16:16 - i16 is 16-bit aligned 16:59 < bridge> > 16:59 < bridge> > i32:32:32 - i32 is 32-bit aligned 16:59 < bridge> > 16:59 < bridge> > i64:32:64 - i64 has ABI alignment of 32-bits but preferred alignment of 64-bits 17:00 < bridge> > 17:00 < bridge> > f16:16:16 - half is 16-bit aligned 17:00 < bridge> > 17:00 < bridge> > f32:32:32 - float is 32-bit aligned 17:00 < bridge> > 17:00 < bridge> > f64:64:64 - double is 64-bit aligned 17:00 < bridge> > 17:00 < bridge> > f128:128:128 - quad is 128-bit aligned 17:00 < bridge> > 17:00 < bridge> > v64:64:64 - 64-bit vector is 64-bit aligned 17:00 < bridge> > 17:00 < bridge> > v128:128:128 - 128-bit vector is 128-bit aligned 18:09 < bridge> @heinrich5991 https://devblogs.microsoft.com/oldnewthing/20210816-00/?p=105562 there is a devblog about the discussion you were having on github 18:09 < bridge> https://github.com/rust-lang/rust/issues/37984#issuecomment-284935308 (also posted to the thread) 18:11 < bridge> yea, I think the docs are misleading 18:11 < bridge> trying to say a thing but not saying it 18:12 < bridge> Just used the wrong words for it perhaps 18:12 < bridge> it's free from data races, but be careful when mixing setcurrentdirectory with getcurrentdirectory/relative paths 18:12 < bridge> it's free from data races, but be careful when mixing setcurrentdirectory with getcurrentdirectory/relative paths while having multiple threads 18:16 < bridge> holy shit: https://github.com/rust-lang/rust/issues/37984#issuecomment-1004353754 18:16 < bridge> raymond chen commented on the rust issue 😮 19:00 < bridge> @heinrich5991 Is it a requirement to have multiple servers running in order to gain community status? 19:00 < bridge> I'd really like to put BlmapChill into one of those categories, since it's also open source now I thought I'd ask again for specific requirements 19:11 < bridge> it's actually not possible to make ddnet grub theme the way i wanted to make it :feelsbadman: 20:40 < bridge> <ƤØŢĀŤ0Co> How to change map in code? 20:40 < bridge> <ƤØŢĀŤ0Co> How to change map in server code? 20:42 < bridge> `IServer::ChangeMap` 20:45 < bridge> You can also console exec a sv_map just to spice it up 😛 20:46 < bridge> <ƤØŢĀŤ0Co> ty 21:37 < bridge> @fokkonaut I guess you want the community only for the symbol next to the name, right? 21:39 < bridge> and filterable, probably 21:39 < bridge> ah, also filterable 21:39 < bridge> I feel like it doesn't really make sense to have a tab for just one server… but I can't really think of anything else 21:40 < bridge> I'll ask about it 21:41 < bridge> hmm. it seems you're currently in the kog community 21:41 < bridge> (ask about the community status for the fokkonaut server) 22:20 < bridge> Hey I was wondering if anyone made a chat translator for ddnet? 22:21 < bridge> it was discussed a few times already 22:22 < bridge> ddnet will not provide it simply bcs translator APIs are rate limited and often cost money 22:22 < bridge> if u want it for a custom client search in this discord, maybe u find the person that wanted it before u 22:23 < bridge> yeah, I figured but it could be a feature for custom clients not official ddnet 22:24 < bridge> or embed a small llm in ddnet they are only a few gigs 🙂 22:24 < bridge> ez xd 22:27 < bridge> it has been done in the past (AllTheHaxx for example) 22:32 < bridge> cool stuff 22:59 < bridge> llm's Like LLaMA that Run locally are really Bad at actual Translation (Trust me i tried it 😋) Apis Like deepl are rate Limited sadly. @reitw do you remember what ATH Used ? Did they Just Use a free Translation api? 23:01 < bridge> it was a free translation api yes 23:02 < bridge> While free api's are bad i might actually try to properly implement it as an external Tool someday, good way to learn go :gigachad: 23:02 < bridge> While free api's are bad i might actually try to properly implement it as an external Tool someday, good way to learn golang :gigachad: 23:04 < bridge> I ran mixtral 8x7b with okay-ish results on simple translation tasks, but I think it doesn't know that many languages well. 23:04 < bridge> but llm is way overkill for this anyway 23:04 < bridge> True 23:06 < bridge> I Used this: https://ollama.com/library/llama3 23:06 < bridge> 23:06 < bridge> Its great for quick questions about certain Things, it takes less than 1.5 Seconds to answer 23:06 < bridge> And it Runs locally on docker, pretty neat 23:06 < bridge> I guess good gpu is a requirement also 23:07 < bridge> but ddnet runs on potato so that should be fine 23:07 < bridge> Lmao 23:07 < bridge> If Doom can Run on a pregnancy Test so can ddnet 23:07 < bridge> lmao 23:08 < bridge> I wonder if doom runs on potato 23:12 < bridge> Connect all potatoes in China and See If it works 23:13 < bridge> How to get the time that goes in the map? 23:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242948531699056691/image.png?ex=664fb186&is=664e6006&hm=d908b4f3049b86656cfbe28192175c11db9282719dd37db4871a8e52849017bd& 23:14 < bridge> How to get the time that goes in the map to server code? 23:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1242948531699056691/image.png?ex=664fb186&is=664e6006&hm=d908b4f3049b86656cfbe28192175c11db9282719dd37db4871a8e52849017bd& 23:14 < bridge> /time? 23:14 < bridge> "/time" ? 23:14 < bridge> yeah 23:59 < bridge> some people rendered frames of doom piecemeal in a gut microbiome 23:59 < bridge> arguably more impressive even if also not real doom 23:59 < bridge> or something like that