01:10 <+bridge> hey, considering the forum is now read-only I think this should be updated no? @0xdeen 01:10 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412312786003955743/image.png?ex=6a46a407&is=6a455287&hm=10a12c240331942f5c197963afbe10d295effd3566264622c730bfa4e97b4388& 01:28 <+bridge> 5.6 sol waiting room 01:35 <+bridge> we making accounts with this one ๐Ÿ”ฅ 02:08 <+bridge> ya sol is gonna be interesting to test 02:08 <+bridge> it will get security filtered bro 07:26 <+bridge> Yes that is what I removed agai 07:26 <+bridge> N 09:25 <+bridge> f*ck vodafone. this is the third RPI in 3 months. I call them and they casually tell me it can take up to two weeks, i tell them i'm reliant on Internet for work. They tell me they can give me unlimited data within the duration of the RPI. 09:25 <+bridge> Cool, 200kb/s upload is exactly how i sustain a proper vpn connection to work. 09:27 <+bridge> got no problems with dsl 50mbit with them. you got cable? 09:28 <+bridge> i'm afraid so, old house. 09:28 <+bridge> however i have even worse experiences with DSL :kek: 09:31 <+bridge> i'm afraid so, old house. 09:31 <+bridge> 09:31 <+bridge> -# TIL DSL is supposed to be worse than cable 10:47 <+bridge> > use claude to generate an AI prompt for a project structure 10:47 <+bridge> > use local qwen3.6-27b to create the project structure, the files and make sure it works for now. 10:47 <+bridge> > use gemini to write documentation while qwen is working 10:47 <+bridge> > write pseudofunctions in a new textdocument, copy-paste the content into the LLM for it to integrate it into the project 10:47 <+bridge> 10:47 <+bridge> i have ascended to be an AI developer now, wheres my 120K annually 10:48 <+bridge> here 10:49 <+bridge> we gotta pay for your tokens first :cammo: 10:49 <+bridge> i'm pushing my local LLM to heaven 10:49 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1522162317272289461/image.png?ex=6a4777a0&is=6a462620&hm=9cc5e57d680631ea043ccfb997b86ff0a0490b1d0c8f75d9a07b1962b2a4ef91& 10:51 <+bridge> lmao 10:51 <+bridge> :ohNooo: 10:51 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1522162794831679631/image.png?ex=6a477812&is=6a462692&hm=3e532a7b43285b914adde6a98000d688ffaddbbee0640f0003deb9dedee98d39& 10:51 <+bridge> time to buy a mac studio for 200K context 10:55 <+bridge> ah okay the more i exceed the loaded context it just gets delulu 10:55 <+bridge> 10:55 <+bridge> "i would like to execute `touch my_file.txt`" 10:55 <+bridge> "wait.. the file exists, why? `ls -al`" 10:55 <+bridge> "ooh.. okay. nevermind then, i'll continue with.. >>internal server error<<" 11:26 <+bridge> 120K annually is for the people that build AI not the ones that use it to generate slop xd 11:31 <+bridge> just use kumruv2 11:32 <+bridge> https://huggingface.co/vngrs-ai/Kumru-2B 11:32 <+bridge> its better than qwen3.6 11:35 <+bridge> > It excels at tasks related to the nuances of the Turkish language, such as grammatical error correction and text summarization. 11:35 <+bridge> 11:35 <+bridge> doesnt sound like my usecase 11:37 <+bridge> is this gonna be the @kebscs comeback= 11:37 <+bridge> is this gonna be the @kebscs comeback? 11:37 <+bridge> r/FoundTheTurkishUser๐Ÿฅ€ 11:39 <+bridge> its better than qwen3.6 27b 11:39 <+bridge> believe me 11:40 <+bridge> just try 11:42 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1522175524250587207/image.png?ex=6a4783ed&is=6a46326d&hm=9bae4b61bfb93f5004a59b8fe8d9f6df16b299379cbbe5c940d772ebde800a2c& 11:42 <+bridge> it is 11:43 <+bridge> that benchmark is.. unrelated to my usecase 11:43 <+bridge> just 11:43 <+bridge> try 11:44 <+bridge> its 11:44 <+bridge> for 11:44 <+bridge> ur 11:44 <+bridge> please form full sentences 11:44 <+bridge> usecase 11:44 <+bridge> Kumru 7B is essentially just a bird-brained autocomplete engine drowning in Turkish tokenization overhead while trying to run an English logic system on pocket lint 11:44 <+bridge> just try 11:44 <+bridge> enter โ‰  space 11:44 <+bridge> ๐Ÿค 11:45 <+bridge> yk how hard to say ts as a Turk ? 11:47 <+bridge> its better than qwen3.5-9b 11:47 <+bridge> kumru-2b > qwen3.5-9b 11:47 <+bridge> just try it on local 11:47 <+bridge> just dont make us look like fools 11:47 <+bridge> we got it. please stop spamming that now, @zavzagali 11:47 <+bridge> im not spamming 11:48 <+bridge> im just trying to teach u 11:54 <+bridge> Does anyone here know, how the client handles incoming snaps and how/if it extrapolates them until it receives the next snap, either when connected to a server, or when reading a demo? 11:54 <+bridge> I am aware of three possible methods of extrapolating snaps to create a simulated, future snap. 11:54 <+bridge> 11:54 <+bridge> 1. Gameworld prediction: I believe this is what antiping is about, but could also be in effect without antiping, at least for our own tee. This is simply the client thinking that it can simulate the entire server physics, and using it to extrapolate a past game state. 11:54 <+bridge> 2. Dead reckoning: This system is in place to allow the server to not update the charactercores too frequently. It *could* (but is probably unsuited to) extrapolate the tees into the future. 11:54 <+bridge> 3. Using the velocity in the CharacterCore. It is a simple way to extrapolate tees into the future. Remember the last time a server crashed and suddenly all tees move linearily into the direction they last moved, also through walls. I assume this is simply because the client extrapolates using the velocity 11:54 <+bridge> 11:54 <+bridge> I would greatly appreciate it if someone could share that knowledge: When is each extrapolation used? 11:54 <+bridge> 11:54 <+bridge> Bonus question: During rendering, we extrapolate tee positions inbetween two ticks. Are those two ticks always extrapolated from the same original snapshot, or are those also sometimes from two different snapshots send by the server? 11:54 <+bridge> 11:54 <+bridge> Related: https://github.com/heinrich5991/libtw2/pull/139#discussion_r3507600542 11:58 <+bridge> whole snaps aren't simulated AFAIK 11:59 <+bridge> Then I think I wrote most of my rendering based on a wrong assumption ๐Ÿ˜… 12:00 <+bridge> what do you mean by "simulating a snap"? 12:00 <+bridge> we don't create a snapshot object AFAIK 12:00 <+bridge> but we do update our local variables like we think the server would have updated them 12:00 <+bridge> https://github.com/ddnet/ddnet/blob/bb354b04580fe6e9de433035dc627c97368f4261/src/game/client/gameclient.cpp#L748 12:00 <+bridge> wait true, I'm not doing that. The assumption I'm talking about is that I need two snaps to interpolate inbetween in order to render stuff 12:01 <+bridge> this seems to be the linear interpolation/extrapolation 12:01 <+bridge> it's not based on speed, but on the last two character positions apparently ^^ 12:01 <+bridge> I thought that was only used when we predict tees more than 1 s into the future, but I can't find that right now 12:02 <+bridge> ah, that one: https://github.com/ddnet/ddnet/blob/bb354b04580fe6e9de433035dc627c97368f4261/src/engine/client/client.cpp#L2918-L2923 12:03 <+bridge> dead reckoning is unrelated to prediction AFAIK 12:03 <+bridge> only to get updated characters for snaps 12:06 <+bridge> This interpolates either between "predicted" players, or "local" players. "Predicted" would suggest to me that both prev and non-prev players originate from the snap. With "local", it would first sound to me like both players could be from different snaps 12:08 <+bridge> that same snippet also suggests that the predictedgameworld, which probably relates to simulating most of the physics, only happens if this isn't a demo and antiping is enabled 12:15 <+bridge> omg is this spaghetti ^^ 12:17 <+bridge> apparently `m_PredictedPrevChar` is our prediction for the tick before `PredGameTick` (https://github.com/ddnet/ddnet/blob/bb354b04580fe6e9de433035dc627c97368f4261/src/engine/client.h#L160-L162) and `m_PredictedChar` is our prediction for the tick returned by `PredGameTick` 12:18 <+bridge> (I got that from reading the source code) 12:18 <+bridge> (anyone wanna PR the explanation to the member variables? ^^) 12:19 <+bridge> here: https://github.com/ddnet/ddnet/blob/bb354b04580fe6e9de433035dc627c97368f4261/src/game/client/gameclient.h#L335-L337 12:22 <+bridge> You pr I merge :p 12:22 <+bridge> is the "PR's vanishing" and not being able to find them via searching still an active topic? i thought thats fixed :o 12:22 <+bridge> ChillerDragon: i swear i looked through existing issues with a bunch of keywords and couldnt find #10047 :D 12:22 <+bridge> https://github.com/ddnet/ddnet/issues/10047 12:22 <+bridge> is the "PR's/issues vanishing" and not being able to find them via searching still an active topic? i thought thats fixed :o 12:25 <+bridge> Heinrich renamed my issue he removed โ€žaliasโ€œ from the title which broke the search 12:25 <+bridge> Or maybe itโ€™s GitHub idk 12:25 <+bridge> Usually finding based on title words works well 12:27 <+bridge> I plan to address \#10047 after my rcon roles pr got merged! I also canโ€™t give my mods access to all of antibot but I need more than just the dump command 12:27 <+bridge> me ๐Ÿค chillerdragon after all?!?!?! 12:27 <+bridge> Always have been 12:27 <+bridge> denied 12:28 <+bridge> i simply want a way to pipe what a single server knows to a truthful source that i can use to sync all other 700 gameservers with 12:28 <+bridge> Isnโ€™t that the case already? 12:28 <+bridge> maybe its time to implement gRPC 12:28 <+bridge> I usually get banned on all ddnet servers at once 12:28 <+bridge> :shook: sumimasen 12:29 <+bridge> yes, but its a hacked in way, doesnt work for everything we need and is reliant on discord atm. 12:29 <+bridge> I see 12:29 <+bridge> I donโ€™t mind it not working tbh 12:29 <+bridge> Being banned sucks 12:29 <+bridge> ๐Ÿ˜† 12:30 <+bridge> ima hit the store and think about what you said again - thanks for input 12:35 <+bridge> I mean if you need it you need it idk 12:36 <+bridge> Itโ€™s just I couldnโ€™t even get an client id argument merged so all these specific hooks seem a bit intense 12:36 <+bridge> iirc it doesnโ€™t even cover vote mutes just chat mutes and the ABI will have to change for every new moderation command 12:36 <+bridge> A more flexible interface that is generic enough to require less changes is better imo 13:00 <+bridge> Yo, what can I do about the rustc version (requires 1.85.0) while on Linux Mint my rustc version is 1.75.0 stable? 13:01 <+bridge> Do I need cargo experimental to get the version or what's going on 13:01 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1522195618770980864/image.png?ex=6a4796a4&is=6a464524&hm=2fcd9e55f7e379ea07f4c62c1d17d95f2a352bf292d49e3b29d4ebdcaaacd431& 13:02 <+bridge> use rustup 13:02 <+bridge> lemme see 13:03 <+bridge> so it's just straight up replaces rustc with rustup 13:03 <+bridge> The error is very misleading then xd 13:04 <+bridge> https://rustup.rs/ 13:04 <+bridge> > An *installer* for the systems programming language Rust 13:05 <+bridge> Should I add extra info about how to resolve this problem in the cmake file, or should this info be on the README? 13:06 <+bridge> ... oh, just updating the README to replace 'rustc' with 'rustup' fixes it 13:12 <+bridge> You mean.. the one I proposed where you made it sound like it's a modding API so it got verbally declined? :kek: 13:18 <+bridge> which linux mint version do you have? 13:21 <+bridge> potentially, you could just install `rustc-1.85`. could you try that? `apt install rustc-1.85` 13:26 <+bridge> @blaiszephyr yes modding api is declined by heinrich, but in my superior opinion that would actually be good! 13:30 <+bridge> modding apis and plugin systems fix feature creep in the main code base 13:30 <+bridge> and create flexible systems for users to quickly click together something that they need 13:35 <+bridge> latest stable version 13:36 <+bridge> I don't think older kernel versions affect the result in terms of installing rustc or rustup. I genuinely think that rustc is outdated on the current Main branch 13:37 <+bridge> yeah moment 13:40 <+bridge> Yes it works, rustc-1.85 is a dev version. I'm not sure if you want to use nightly versions of the Rust compiler to avoid unexpected crashes and errors, so I proposed the 'rustup' fix 13:41 <+bridge> At least rustup stable version works, maybe it uses the dev version? 13:41 <+bridge> At least rustup stable version works, maybe it uses the dev version of rustc? 13:42 <+bridge> Eh. I think it's just the convenience that rustup provides, including the capability to upgrade itself to the latest version. Any objections or suggestions? 13:44 <+bridge> Next pr will be \#12345 13:46 <+bridge> https://tenor.com/view/tf2heavy-cry-scouts-caps-heavy-rage-heavy-gif-20678232 13:46 <+bridge> I missed the opportunity 13:51 <+bridge> next target is #69420 ig 13:52 <+bridge> 54321 13:52 <+bridge> It's less funny 13:53 <+bridge> next funny pr would be #80085 13:53 <+bridge> Next is \#22222 13:53 <+bridge> :troll: 13:53 <+bridge> boobs 13:54 <+bridge> @milkeeycat: ban them 13:55 <+bridge> *bans them* 13:55 <+bridge> W discord moderator 13:55 <+bridge> @milkeeycat: you looking for side quest? 13:56 <+bridge> I'm looking for a typo to make a #12345 PR xd 13:56 <+bridge> Ah okay never mind I let you lock in 13:56 <+bridge> I don't think I should make 2 PRs in a row so I'm out ;-; 13:56 <+bridge> But some idiot did add typo checker to CI so it will be tricky 13:56 <+bridge> make account system 13:57 <+bridge> I was kidding 13:57 <+bridge> chillerdragon: what's the side quest? 13:57 <+bridge> for 12345 pr 13:57 <+bridge> lol 13:57 <+bridge> I need idle proxy for Minecraft 13:57 <+bridge> I can write one in 4 lines of python without dependencies for Teeworlds 13:57 <+bridge> But idk Minecraft 13:58 <+bridge> https://tenor.com/view/dawid-jasper-pszczu%C5%82ka-smiech-kekw-gif-15768523 13:58 <+bridge> I need this for new 2b2t version which is 1.24.4 I think https://github.com/themoonisacheese/2bored2wait 13:58 <+bridge> lol, lmao even 13:58 <+bridge> 2bored2teelib 13:59 <+bridge> hyper optimized, blazinly fast tokenized quantum multimacro GPU based rewrite 13:59 <+bridge> hyper optimized, blazingly fast tokenized quantum multimacro GPU based rewrite 13:59 <+bridge> me neither, I never did anything for Minecraft, I only play it once a year thinking I'll finally finish the game(didn't finish it once) 14:00 <+bridge> Xd 14:00 <+bridge> But you are 10x engineer 14:00 <+bridge> are *you* looking for a side quest? ๐Ÿ˜ฌ 14:01 <+bridge> Never :p 14:01 <+bridge> I am a problems guy not a solutions guy 14:01 <+bridge> if you say yes, then can you implement a CTFE in my compiler pls? 14:01 <+bridge> maintainer btw 14:02 <+bridge> who needs permanent solutions when you can spit out problems more efficiently? 14:02 <+bridge> - Rust Engineer, probably 14:04 <+bridge> I only know CTF 14:04 <+bridge> capture the fatigue 14:04 <+bridge> compile time function evaluation btw 14:05 <+bridge> hmmmm 14:19 <+bridge> what do you mean by "dev" version? can you give its `rustc --version --verbose` output? 14:23 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1522216161947816117/image.png?ex=6a47a9c6&is=6a465846&hm=f71b4737d1da318209389b42e903339d9eb390b60ed404414bf1d8f7163c8c2e& 14:24 <+bridge> interesting, it is a stable release however not published as "rustc", but it's own "rustc-1.85" 14:25 <+bridge> That just convinced me to use rustup instead 14:26 <+bridge> rustup manages rustc/cargo symlinks under ~/.cargo/bin for you, so you dont have to deal with that yourself 14:26 <+bridge> Checked the rustup, what version of rustc it uses 14:26 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1522216806780240066/image.png?ex=6a47aa60&is=6a4658e0&hm=47be1a2c2d624547df94967f52f9f98fba76fac1d83f5fee9a828dee8bc9b08d& 14:26 <+bridge> I see, yea, that won't get autodetected by the `CMakeLists.txt` 14:26 <+bridge> 1.96 14:26 <+bridge> makes sense to recommend rustup, but I'd only recommend it to the user if `rustc` is too old 14:27 <+bridge> well, older branches would still have the old README no? 14:27 <+bridge> And... for the most convenience, it shouldn't really matter as long as we understand what rustup actually provides, which is a better way to upgrade rustc I guess 14:28 <+bridge> installing `rustc` works on some distributions โ€” and it's generally better to use distribution packages rather than installing other stuff 14:28 <+bridge> other stuff doesn't get updated automatically 14:28 <+bridge> What do you prefer? 14:29 <+bridge> I'd keep the command as it is right now, and add a note below it that the user can try installing `rustup` if the `rustc` package of the distribution is too old 14:34 <+bridge> And about the cmake command providing extra info about this issue? 14:35 <+bridge> I looked into that and multiple other issues (the build simply failing with no proper output when you use the wrong toolchain, for example) but i couldnt find a way to properly do that in CMake 14:35 <+bridge> could maybe use a shell script wrapper :D - unsure 14:38 <+bridge> you could say something like "You can use `rustup` to obtain newer versions of `rustc` if your distribution only ships too old versions." 14:41 <+bridge> I'll leave that to you, since you know better what versions of rustc is being used for what purpose 14:42 <+bridge> you can use the text as the second line. I think your suggestion of adding a hint to the user would be helpful there 14:42 <+bridge> Sure, well that should be it I guess 14:43 <+bridge> Managed to compile the workspace after all and didn't have any weird issues with the executables 14:43 <+bridge> So maybe I should experiment with Rustup just to see what could break potentially? 14:44 <+bridge> no, it's fine. I know rustup, it should be good in most cases 14:44 <+bridge> alr 14:44 <+bridge> I guess you could add a line that you need to `rustup update stable` to get the newest rustc version? 14:45 <+bridge> well, how do we know we have rustup? 14:45 <+bridge> I mean in the README 14:45 <+bridge> Oh xd 14:45 <+bridge> for the user, not automatically execute it 14:45 <+bridge> yeah 14:46 <+bridge> rustup stable provides rustc 1.96 anyway, so it's fine to just` rustup update`, it *should* default to their stable release 14:46 <+bridge> if not, then it's fckin stupid idk 14:48 <+bridge> `rustup update` only updates already installed toolchains 14:48 <+bridge> so if the user doesn't have `stable` installed โ€” well I guess in that case the user already knows what to do? 14:48 <+bridge> not sure 14:48 <+bridge> I have no clue how to replicate this cuz idk what toolchain I could remove even 14:49 <+bridge> you could add it as a safety measure, idc 14:49 <+bridge> I'll remove clippy and see what happens :troll: 14:50 <+bridge> nooo it doesn't let me 14:52 <+bridge> `rustup component remove clippy` 14:52 <+bridge> that's unfortunate, I already did `rustup toolchain remove stable` xd 14:52 <+bridge> I'll try both 14:53 <+bridge> that works to remove the toolchain `stable` 14:53 <+bridge> Ok, so that one needs `rustup update stable` 14:54 <+bridge> oh, removing clippy is kinda weird 14:55 <+bridge> it doesn't get missing components 14:55 <+bridge> it doesn't get missing components using `rustup update stable` 14:55 <+bridge> :justatest: 14:55 <+bridge> ... we could add them with `toolchain add` tho 14:56 <+bridge> you can install a more minimal `stable` toolchain using `rustup toolchain install stable --profile=minimal` 14:56 <+bridge> still won't get clippy installed, it only cares about rustc 14:57 <+bridge> bruh 14:57 <+bridge> I'm not sure what you want ^^ `rustup toolchain install stable --profile=minimal` doesn't install clippy (by design) 14:57 <+bridge> if you want to install clippy where it's not already installed, use `rustup component add clippy` 14:58 <+bridge> I'm just messing around with rustup, imagine I forget to reinstall clippy xd 14:58 <+bridge> Ngl rustup is more fun to mess around than with only rustc 15:01 <+bridge> ... we could add them with `component add` tho 15:06 <+bridge> ๐Ÿ˜„ 15:12 <+bridge> I slightly improved the look of the dep install command to separate installing rustup or rustc 15:12 <+bridge> maybe this way it's less cluttered with info and directly addresses the possibility for a version mismatch or outdate 15:13 <+bridge> ofc this means running two commands separately, so inefficient omg 4+ clicks? 15:57 <+bridge> clippy should come with ur usual rustup install 15:58 <+bridge> btw if u hae a project with 10 crates as source and u do multiple profiles, debug,release, etc ur target folder goes xcrazy 15:59 <+bridge> i easily cleared 300gb in target/ 16:15 <+bridge> cargo should really grow some cache clearing logic 16:20 <+bridge> i use https://github.com/dnlmlr/cargo-clean-all 16:41 <+bridge> I cleaned our build cache, 11.8TB freed 16:41 <+bridge> We are using https://github.com/mozilla/sccache 16:42 <+bridge> i dont use it cuz i fear the grow 16:42 <+bridge> i dont have tbs to spare 16:42 <+bridge> xd 16:42 <+bridge> We are using a GCS bucket ๐Ÿ˜„ They scale pretty good, also money-wise :lol: 16:43 <+bridge> rust is also extremely more verbose outputing debug info 16:43 <+bridge> like easily 10x more 16:43 <+bridge> and it also affects "perf" parse time 16:43 <+bridge> xd 16:43 <+bridge> btw debian "perf" sucks 16:43 <+bridge> my perf report doesnt work 16:43 <+bridge> cuz a addr2line issue 16:43 <+bridge> i cant seem to find how to fix 16:43 <+bridge> but perf script works 16:44 <+bridge> https://hotpath.rs/ 16:44 <+bridge> requires code changes 16:56 <+bridge> :pepeW: 16:56 <+bridge> i mean the cli tool 17:20 <+bridge> omg I have color now 17:20 <+bridge> https://tenor.com/view/dancing-dancing-dragon-meme-dancing-dragon-how-to-train-your-dragon-gif-8073539544582318207 17:21 <+bridge> btw why ain't clangd properly detect the include paths, wtf 17:40 <+bridge> but how can you revert rust when it was done to fix some unspoken of gamebreaking bug 17:51 <+ChillerDragon> @cellegenrih u have compile_commands.json? 17:52 <+bridge> No it's not there 17:52 <+bridge> can you send the config here? 17:53 <+bridge> Idk if in your case, I'm asking too much ๐Ÿ˜„ 17:54 <+bridge> I think the `compile_commands.json` has absolute paths, so chillerdragon's won't work for you 17:55 <+bridge> this file is generated by `cmake` 17:57 <+bridge> hm, or maybe not by cmake itself, but you have to pass `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` flag to `cmake` xd 18:00 <+bridge> are you sure this is the right flag? 18:02 <+bridge> https://cmake.org/cmake/help/v4.4/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html 18:03 <+bridge> seems so 18:03 <+ChillerDragon> ye it good stuff i have `export CMAKE_EXPORT_COMPILE_COMMANDS=ON` in my bashrc 18:04 <+bridge> oh, it's also an env var ๐Ÿ˜ฎ 18:04 <+ChillerDragon> i think any cmake flag can be env var 18:04 <+bridge> but the env var probably only works on first build 18:04 <+bridge> no: https://cmake.org/cmake/help/latest/variable/PROJECT_BINARY_DIR.html 18:04 <+ChillerDragon> hmk 18:05 <+bridge> just a random one I looked at 18:05 <+ChillerDragon> well this one can be and its super useful because i need it for all my projects 18:06 <+bridge> idk why this isn't simply on by default 18:06 <+ChillerDragon> yea its not that bloated 18:06 <+ChillerDragon> but i assume if every tiny thing not everyone needs is on by default that might pile up 18:07 <+bridge> seems not, otherwise I wouldn't have this issue 18:10 <+bridge> alr, now I can truly mess with the entire workspace 18:12 <+bridge> https://github.com/ddnet/ddnet/actions/runs/28600782681/job/84808228965?pr=12344 Do I have to fix the linting or why does it fail on one singular README file change 18:14 <+bridge> LIke, I'm sure the ubuntu-latest-fancy should pass without issue, but it's not somehow 18:14 <+bridge> LIke, I'm sure the ubuntu-latest-fancy should pass without issue, but it's not somehow (is it supposed to fail??) 18:19 <+bridge> not due to your PR 18:20 <+bridge> idk why I had to push literally nothing but ok 18:20 <+bridge> I love github desktop 18:20 <+bridge> wait, don't push merge commits into the PR ^^ 18:20 <+bridge> idk, my shit is buggy ;-; 18:21 <+bridge> I'm going to remove the merge commit again, you don't have to do anything 18:21 <+bridge> oh btw, what would happen if I just remove my branch on my fork? 18:21 <+bridge> the whole pr would disappear? 18:21 <+bridge> maybe 18:21 <+bridge> I don't know 18:21 <+bridge> wait until it's merged 18:22 <+bridge> then you can remove the branch (and it won't close the PR anymore) 18:22 <+bridge> I could test that out on my own repos 18:22 <+bridge> I know that much, just wondered what would happen during a PR xd 18:29 <+bridge> i think auto closes 18:30 <+bridge> So if I decide that my changes were absolute dogshit, I could just nuke my PR? lmao 18:30 <+bridge> ye? ur pr is always in ur control kinda 18:30 <+bridge> but why make a pr in first place 18:30 <+bridge> unless someone (ahem heinrich or deen) force push it 18:30 <+bridge> a pr is just u requesting git merge against the target 18:31 <+bridge> I don't like any other way than requesting merge via PR 18:31 <+bridge> let's say I fckin hate github for force push and stuff 18:31 <+bridge> linux works via email patch diffs 18:31 <+bridge> u just send a patch file 18:32 <+bridge> I could do that xd 18:32 <+bridge> but why tho 18:32 <+bridge> unless it's like a thirdparty lib in the repo, I wouldn't use patches 18:32 <+bridge> git diff main > blabla.patch 18:32 <+bridge> its the original way to use git 18:32 <+bridge> github is a facade 18:33 <+bridge> u should look up how git works 18:33 <+bridge> Even if I just experienced the weirdest bug in github desktop, I still prefer that 18:34 <+bridge> I don't think the interface has an option to generate patch diffs 18:34 <+bridge> so only via terminal 18:36 <+bridge> git is just a content-addressable merkle directed acylic graph 18:36 <+bridge> https://git-scm.com/book/en/v2/Git-Internals-Git-Objects 18:36 <+bridge> ok, "merkle" and "acylic" is equal to fck-all in my brain 18:38 <+bridge> all are interesting concepts to learn 18:38 <+bridge> https://en.wikipedia.org/wiki/Merkle_tree 18:38 <+bridge> so merkle is a data block and acylic... is plastic? 18:39 <+bridge> sounds interesting, what scenario is actually useful for? like multithreading processes? 18:40 <+bridge> this is used everywhere 18:40 <+bridge> ok not everywhere but its like core part of torrent, git, internet 18:41 <+bridge> the more you know 18:41 <+bridge> also what most blockchains use 18:41 <+bridge> any decentralized protocol also probs uses merkle trees 18:43 <+bridge> I wonder where the word "merkle" came from originally 18:43 <+bridge> https://en.wikipedia.org/wiki/Ralph_Merkle 18:43 <+bridge> its always a person 18:43 <+bridge> aha 18:44 <+bridge> " invented cryptographic hashing" 18:44 <+bridge> well I found a company called Merkle GmbH 18:44 <+bridge> basically this person invented literally one of the most important things 18:48 <+bridge> So to summarize, all content from git which relates to transfers go through a merkle tree, which can be presented in a "acylic" graph? 18:48 <+bridge> as part of hash verification? 18:49 <+bridge> for me, hashes are still outside my capabilities so I have no idea if I got it right 19:03 <+bridge> um akshually it's `git format-patch` 19:10 <+bridge> @heinrich5991 about #12335 - i had a quick chat with Avolicious: 19:10 <+bridge> 19:10 <+bridge> > ำŽฤ›ล‚ลฦž [Tee], Role icon, confirmed โ€” 6:47 PM 19:10 <+bridge> > @avolicious Are you currently/still "only" the Hoster of KoG? - or are you still doing moderative/administrative tasks 19:10 <+bridge> > 19:10 <+bridge> > i'd like to ask you about how you're currently syncing bans across all of your servers 19:11 <+bridge> > regarding this pr: #12335 19:11 <+bridge> > Heinrich mentioned ban-synchronization could be useful for others too, and i agree, however i have no idea whats a proper "suits all" solution is, and if you'd even want that at all 19:11 <+bridge> > 19:11 <+bridge> > I figured asking our biggest partner-community makes the most sense ๐Ÿ˜† 19:11 <+bridge> > my idea was utilizing the antibot interface for it to keep it closed-source, but i thought asking wouldnt hurt :p 19:11 <+bridge> > [Tee], 19:11 <+bridge> > AvoliciousRole icon, |*KoG*| Member โ€” 7:02 PM 19:11 <+bridge> > I guess our rules are too different for a shared database, maybe in terms of syncing cheaters somehow might make sense, but this is hard as we also have different anticheats & we would need to exchange .teehistorian probably to verify the cheat? 19:11 <+bridge> > Ah, just our servers. 19:11 <+bridge> > ำŽฤ›ล‚ลฦž [Tee], Role icon, confirmed โ€” 7:05 PM 19:11 <+bridge> > i was more thinking generally implementing an upstream solution all parties could utilize 19:11 <+bridge> > 19:11 <+bridge> > i.e a Sink that generalizes these events one could plug into their existing infra - not a shared database, i missworded that - my bad ^^ 19:11 <+bridge> > AvoliciousRole icon, |*KoG*| Member โ€” 7:05 PM 19:11 <+bridge> > Well, we use a entirely different approach ๐Ÿ˜„ 19:11 <+bridge> > ำŽฤ›ล‚ลฦž [Tee], Role icon, confirmed โ€” 7:05 PM 19:11 <+bridge> > i assumed so :D 19:11 <+bridge> > AvoliciousRole icon, |*KoG*| Member โ€” 7:06 PM 19:11 <+bridge> > Our current production implementation abuses the dnsbl implementation, but the next gen uses gRPC to communicate with some microservices 19:11 <+bridge> > ำŽฤ›ล‚ลฦž [Tee], Role icon, confirmed โ€” 7:06 PM 19:11 <+bridge> > i also want gRPC but it feels super bloaty.. maybe i can somehow with enough prayer convince heinrich to do the same :D 19:11 <+bridge> > [Tee], 19:11 <+bridge> > AvoliciousRole icon, |*KoG*| Member โ€” 7:06 PM 19:11 <+bridge> > gRPC is bloaty, but we need this for microservices & I dont want to maintain wire protocol ๐Ÿ˜„ 19:11 <+bridge> > neither I want to maintain the connection pool, connection nor multiple frameworks for different programming languages 19:11 <+bridge> https://github.com/ddnet/ddnet/pull/12335 19:12 <+bridge> https://github.com/ddnet/ddnet/pull/12335 19:20 <+bridge> @learath2 you mentioned the thought of using gRPC before too iirc? - whats your stance on that currently 19:21 <+bridge> Mh, it is a little annoying that you need to bring in a nasty extra compiler for protobuf 19:26 <+bridge> from what i can see grpc has quite a lot of dependencies 19:26 <+bridge> 19:26 <+bridge> Protobuf, Abseil, c-ares, re2, and BoringSSL 19:27 <+bridge> espacially BoringSSL would proof quite painful with our existing openSSL dep 19:29 <+bridge> JSON posts to a webhook endpoint? :justatest: 19:34 <+bridge> why are my messages getting deleted? 19:34 <+bridge> i asked why revert rust if it was supposed to fix a gamebreaking bug 19:35 <+bridge> uh, what gamebreaking bug was it supposed to fix? it was security vulnerabilities 19:36 <+bridge> yea then security vuln same thing 19:36 <+bridge> and the reasoning was stated in the PR description ๐Ÿ˜† 19:36 <+bridge> thanks ill reread it then 19:36 <+bridge> no need to delete my messages 19:36 <+bridge> > It had too many unfixed problems for too long. See e.g. #12075. I plan to fix these before re-introducing the refactor. Revert the refactor so that our releases are no longer blocked. 19:36 <+bridge> 19:36 <+bridge> ^^ 19:36 <+bridge> https://github.com/ddnet/ddnet/issues/12075 19:37 <+bridge> some minor things were fixed in minor PR's after that, AFAIR 19:37 <+bridge> That's fine too, the nice part of gRPC is that it supports streaming and bidirectional communication. If you've read my initial ideas on a more generic backend communication network, you might see why those might be desirable 19:38 <+bridge> (technically grpc just uses http/2 as its transport layer, so it is possible to do these things with json too) 19:39 <+bridge> i think the biggest issue a JSON-webhook approach would have is the typical fire-and-forget approach of it 19:39 <+bridge> its either a 200, a 402 or a 404 :justatest: 19:40 <+bridge> its either a 200, a 401 or a 404 :justatest: 19:40 <+bridge> What are you making again? 19:40 <+bridge> replacing #bans 19:41 <+bridge> which results in either every gameserver being vary of one another, or a source of truth approach. 19:41 <+bridge> I'd suggest just replacing @DDNet and doing nothing more 19:42 <+bridge> Unless you are looking to do it properly once and forall 19:43 <+bridge> the most permanent things are temporary solutions ._. 19:43 <+bridge> i'd like something i can build stuff on top off, instead of next to each other 19:43 <+bridge> replace all with grpc 19:43 <+bridge> strong contract 19:43 <+bridge> forward & backwards comp 19:44 <+bridge> thanks for volunteering Avo, i'll await your PR within the next 2 workdays 19:44 <+bridge> :pepecry: 19:44 <+bridge> Contributing my ugly code upstream, too much work to be honest 19:44 <+bridge> but then questions like "what do you envision building in the future that can build off the top of this work?" comes up 19:45 <+bridge> Because if you want to design for future things, you need to first think about what you are designing for. What sorts of things you might want to implement, what they require 19:47 <+bridge> If you just want to do bans properly the requirements are relatively concrete and straightforward, we need a database-ish solution, we replicate it read only on all nodes, the database needs to expose a streaming changes api so all gameservers can listen to it 19:48 <+bridge> At startup gameservers subscribe to changes, then do a `SELECT * FROM bans`, then it just works, if at any point for whatever reason we lose connection, we just bootstrap the connection again by getting a full list. As long as we have a local replica on all nodes that should pretty much never happen barring some bizarre issue 19:51 <+bridge> It should(tm) be enough, but we can also overengineer it too, we could use a custom "database" whose data can just be mmap'd into all the gameservers 19:53 <+bridge> @blaiszephyr bans stored in ScyllaDB, streamed via Kafka, materialized into Redis, then memory mapped into the game servers, and debugged using 14 microservices and a dedicated observability team 19:53 <+bridge> 19:53 <+bridge> gg ez 19:54 <+bridge> @claude implement this, make no mistakes 19:54 <+bridge> Probably the kind of thing it would be good at, it has lots of buzzwords in there 19:54 <+bridge> this 19:55 <+bridge> or just do it like discord: https://discord.com/blog/how-discord-stores-trillions-of-messages 19:57 <+bridge> though thats just the database part 19:57 <+bridge> should replace mariadb with this :greenthing: 19:57 <+bridge> https://en.wikipedia.org/wiki/Read-copy-update here is a keyword to start with if you want to go down the turboearlyoptimization path 19:57 <+bridge> should replace mariadb with postgres. 19:57 <+bridge> ^^^^^^^^^^^^^^^^^^^^^^^^^ 19:57 <+bridge> ๐Ÿ‘€ based 19:58 <+bridge> based opinion, I've actually been thinking about this one 20:03 <+bridge> but we dont have trillions of users ๐Ÿ™ so we dont scale this much 20:03 <+bridge> i'll propose a v0.0.0.0.0.1: 20:03 <+bridge> 20:03 <+bridge> * Postgres as source of truth with logical replication 20:03 <+bridge> * snapshot on gameserver startup 20:03 <+bridge> 20:03 <+bridge> if not 20:03 <+bridge> rawdog http webhooks 20:04 <+bridge> Discord doesn't have trillion of users either 20:04 <+bridge> This is about storing messages, not users 20:05 <+bridge> Messages are equivalent to ranks in DDNet here :P 20:05 <+bridge> But the have atleast million of users 20:05 <+bridge> But they have atleast million of users 20:05 <+ChillerDragon> who even uses discord in big 2026 20:07 <+bridge> A couple more generations: 20:07 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1522302687834804445/image.png?ex=6a47fa5b&is=6a46a8db&hm=199fb38b2e6c9067dccd1659ca8627b50a2f5059b18c4cab00f306ff0767b340& 20:11 <+bridge> @0xdeen I've read your post "Finding Bugs using LLMs", I'm curious how posts writing work at your workplace. Do you come up with the ideas for posts yourself or do you get told to write on requested topics, or both? 20:44 <+bridge> > * IMPORTANT: 137 config files in '/etc' need updating. 20:44 <+bridge> um gentoowhat 20:45 <+bridge> its better than silently doing nothing or .pacnew 20:45 <+bridge> it doesnt write them incase you have config 20:45 <+bridge> it could try to be smart, but it would break ur config 20:46 <+bridge> is probably why it doesnt 20:47 <+bridge> 20:47 <+bridge> 20:47 <+bridge> cool shi 20:48 <+bridge> I like the system, 137 is just randomly alot, I was wondering why 21:12 <+bridge> solly rename 22:02 <+bridge> ahm, turns out making a simple property present on map groups kinda sucks xd 22:03 <+bridge> But managed to do this without any help from an llm 22:05 <+bridge> Now I just need to somehow get all valid layers in the group that has an m_animation (or idk the property name) property and just toggle between nulltpr and the last selected animation 22:05 <+bridge> Now I just need to somehow get all valid layers in the group that has an m_animation (or idk the property name) property and just toggle between nulltpr and the last selected animation... how hard could it be 22:05 <+bridge> :thonk: