02:09 < bridge> @heinrich5991 when you have some time, would you like to go through all the PRs together and close/merge them? 02:15 < bridge> The amount of PRs is rather large, but still a manageable amount. We should get to it before it gets worse and while I'm still very much unemployed 02:37 < bridge> wait I can help 02:39 < bridge> :monkalaugh: 02:41 < bridge> What happened with that PR anyway, was supposed to be pretty simple :/ 02:41 < bridge> It even worked fine iirc 02:41 < bridge> it had some issues 02:42 < bridge> getting the entity ids was not as consistent as I expected 02:42 < bridge> so if two entities entered a teleport on the same tick and both of them didn't get an m_Id they would go to the same spot 02:43 < bridge> also seeding the prng with a small integer is probably not very good for it 08:50 < bridge> Start from the oldest 08:52 < bridge> The two oldest open prs are by this Heinrich and learath guy. Go tell them to get their pr fixed up and merge it 09:27 < bridge> morning C enjoyers and others 09:28 < bridge> morn 10:16 < bridge> im still a certified c++ dev(tm) 10:16 < bridge> :justatest: 10:19 < bridge> Is there some leetcode algorithm to do this without n^2 10:20 < bridge> well messages are max 256 chars 10:20 < bridge> I'm just wondering 10:20 < bridge> oh if u find tell me 10:20 < bridge> i just wanted to get this working(tm) 10:21 < bridge> maybe instead of a vec i could use a set 10:21 < bridge> are there hashsets in c++ 10:21 < bridge> std 10:22 < bridge> maybe iterating the message word by word and doing a set.contains is faster 10:22 < bridge> Yeah but you still pay the hashing price 10:22 < bridge> that would be just n iirc 10:22 < bridge> true 10:22 < bridge> is hashing that expensive tho 10:22 < bridge> what alg does std::set use 10:25 < bridge> @heinrich5991 is using a set better? 10:25 < bridge> saw ur comments 10:27 < bridge> I think you want a tree for the best complexity 10:28 < bridge> If you hash all the banned words you still need to check against the hash of all possible sub strings in the message that are shorter than the longest banned word 10:29 < bridge> which is kinda still n^2 I guess 10:29 < bridge> Maybe that makes the current solution n^3 10:29 < bridge> Well 10:30 < bridge> m*n^2 10:30 < bridge> according to docs std::set is a binary search tree 10:31 < bridge> i guess i need to figure how the json parsing works in ddnet now 10:37 < bridge> it's in general a red-black tree i think 10:37 < bridge> (which is a kind of binary tree) 10:42 < bridge> making it json makes it actually easier xd 11:07 < bridge> @totar actually i forgot a loop there lmao 11:09 < bridge> fixed and now uses json 11:09 < bridge> hot 11:10 < bridge> (without the loop it only censored the first matching same word) 12:03 < bridge> ``` 12:03 < bridge> [build] /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/ColorSyncDeprecated.h:1000:41: note: 'CMProfileRef' has been explicitly marked deprecated here 12:03 < bridge> [build] 1000 | typedef struct OpaqueCMProfileRef* CMProfileRef DEPRECATED_IN_MAC_OS_X_VERSION_10_6_AND_LATER; 12:03 < bridge> [build] | 12:03 < bridge> ``` 12:03 < bridge> there is lot of msg like this when compiling in macos 12:04 < bridge> What even is the n here? I'd expect it to be something like m * n * k where n is the message length, m is the amount of words in the blacklist, and k is the average length of a blackliated word 12:04 < bridge> due to [build] In file included from /Users/edgarluque/Documents/misc/ddnet/src/macos/notifications.mm:1: 12:04 < bridge> xD 12:07 < bridge> Though there are more efficient ways to do it indeed. You can employ the Rabin-Karp search algorithm 12:08 < bridge> Or build an Aho-Corasick state machine 12:31 < bridge> i leave that for the future 12:37 < bridge> there is also https://en.wikipedia.org/wiki/Commentz-Walter_algorithm 12:55 < bridge> the pr is ready now btw 12:56 < bridge> well there is a log i can remove 12:57 < bridge> done 14:00 < bridge> what is it, just hash pattern matching? 14:03 < bridge> nerdy ass developer channel 14:03 < bridge> i dont think it should have both local and global 14:04 < bridge> why not just have online lists that have varying lebels of censor if ur able to change the online lists url anyways 14:04 < bridge> like censor_slurs, censor_all 14:16 < bridge> no 14:16 < bridge> i prefer to give control to the user 14:16 < bridge> and levels is subjective 14:18 < bridge> ye, then they can host their own censorlist if they really want that much control 14:19 < bridge> seems like an unnecessary additional setting 14:20 < bridge> u could also have a local json that has online: field updated by the online url and a local: that won't get overwritten 14:20 < bridge> @ryozuki does the censorlist support replacing the words? nerdy ass programming language 14:20 < bridge> so ppl who really care to have a local can edit it manually and those who dont care dont have to be exposed to multiple settings in the gui 14:24 < bridge> no users who dont want this just click 1 checkbox 14:24 < bridge> im not gonna change it 14:24 < bridge> u can make a pr, i think my way is the best 14:25 < bridge> it just replaces to * 14:27 < bridge> nerdy *** programming language 14:27 < bridge> ***** 14:27 < bridge> uh ok 14:27 < always> helo 14:27 < bridge> will that feature be enabled on the official servers? 14:27 < always> gg's @everyone 14:27 < always> WTF 14:27 < bridge> dont use spyware 14:28 < always> it removed my @ 14:28 < bridge> *\*\*\*\*\* 14:28 < bridge> its client sided 14:28 < bridge> oh 14:28 < bridge> im a dumbass 14:28 < bridge> xD 14:28 < bridge> then its cool 14:28 < bridge> if u want chat censor u can always go to chn servers 14:29 < bridge> server sided chat censor* 14:29 < bridge> is it enforced by the government? 14:29 < bridge> ye 14:29 < bridge> is there actually a censor?? 14:29 < bridge> classic china moment 14:29 < bridge> on chn there is server side censor 14:29 < bridge> gg 14:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331979131998699623/DDNet_Vgju4GrwFp.png?ex=679395bc&is=6792443c&hm=a30c925d8f7d41c087563dbadf3a2746ea000da5151c2d8c37c54f4832ad7c61& 14:29 < bridge> u cant say taiwan number one 14:29 < bridge> i will test it when i get home 14:29 < bridge> theres no way 14:30 < bridge> i just lost so much social credit 14:41 < bridge> i am the chosen one 14:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331982253810520126/image.png?ex=679398a4&is=67924724&hm=f7ff5aa5fcb880fe59f6f4cb752b5bbbecf4902968de0ab37bab73e20d5cf041& 14:42 < bridge> or am i supposed to say it in chinese 14:42 < bridge> xD 14:42 < bridge> will try again 14:42 < bridge> still works 14:42 < bridge> in chinese 14:44 < bridge> but the external male organ is being censored 14:49 < bridge> xd 14:49 < bridge> idk 15:05 < bridge> dream setup complere 15:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331988176017031268/IMG_3730.jpg?ex=67939e28&is=67924ca8&hm=6c0270e1b6a05215b576e03ae5c7b9fe11f8fbb1f22883ad8c7be915eb0273e6& 15:05 < bridge> dream setup complete 15:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1331988176017031268/IMG_3730.jpg?ex=67939e28&is=67924ca8&hm=6c0270e1b6a05215b576e03ae5c7b9fe11f8fbb1f22883ad8c7be915eb0273e6& 15:05 < bridge> now i just need m4 mac mini 15:17 < bridge> well the censorship actually doesn't help lot tho 15:17 < bridge> since names are not censored 15:19 < bridge> and also censor word list is not enough 15:19 < bridge> it is enough for now 15:19 < bridge> so i'd rather not having it at all 15:19 < bridge> we can make it better always 15:19 < bridge> u can disable it so that works for you 15:19 < bridge> I mean the current chn ones 15:19 < bridge> oh ok 15:19 < bridge> idc about china xD 15:20 < bridge> ofc i should care being in china TT 15:20 < bridge> Give team viewer access pls. Need to git bisect smth on Apple silicon 15:22 < bridge> @jupeyy_keks send repro instructions 15:22 < bridge> if usend a git bisect script i can run it 15:23 < bridge> u know u can script it to automatically compile and test and check if its good or bad 15:28 < bridge> lmao i am not even sure yet how i'd reproduce it, it's just that newer moltenvk create some weird pink framebuffer: 15:28 < bridge> https://github.com/KhronosGroup/MoltenVK/issues/2220 15:28 < bridge> 15:28 < bridge> they know all commits where it happened but apparently nobody fixes it xd 15:28 < bridge> I'd maybe simply revert some commits: 15:28 < bridge> https://github.com/KhronosGroup/MoltenVK/compare/v1.2.6...v1.2.7 15:29 < bridge> i just hate apple, these mfs that refuse anything good and let randoms have to fix their shit. 15:29 < bridge> 15:29 < bridge> free slaves for apple 15:30 < bridge> Same should apply to many 15:30 < bridge> apple is defs the worst xd 15:30 < bridge> :nouis: 15:45 < bridge> US dream setup frfr 16:12 < bridge> @learath2 good read https://github.com/bminor/glibc/commit/7a61e7f557a97ab597d6fca5e2d1f13f65685c61 16:13 < bridge> * Do not deallocate the environment array. Instead, keep older 16:13 < bridge> versions around and adopt an exponential resizing policy. This 16:13 < bridge> results in an amortized constant space leak per active environment 16:13 < bridge> variable, but there already is such a leak for the variable itself 16:13 < bridge> (and that is even length-dependent, and includes no-longer used 16:13 < bridge> values). 16:13 < bridge> xd 16:13 < bridge> extern char** environ; 16:13 < bridge> this legacy thing is crazy 17:56 < bridge> Hot 18:03 < bridge> That's only the data repo tho 😂 18:03 < bridge> But yeah commit is in unmerged pr 18:04 < bridge> Idc, hot 18:04 < bridge> 18:04 < bridge> Btw are you planning on doing the freeze timer? I saw the .PNG but no impl 18:04 < bridge> Wanted to do it but I cba learning how to handle external pngs for now :justatest: 18:05 < bridge> you have to use the freeze container. 18:05 < bridge> game/client-containers/src/freezes.rs 18:06 < bridge> almost every asset is build around the container stuff 18:06 < bridge> Yeah I looked at how you did the hook but it's impl looked like a lot of boilerplate 18:06 < bridge> Not saying it's bad! But I was just to tired to do it 18:06 < bridge> :justatest: 18:08 < bridge> besides the texture or exactly the texture? 18:09 < bridge> Besides 18:10 < bridge> Can't reread it so I'm also not sure anymore :justatest: 18:10 < bridge> In bed rn 18:10 < bridge> sure 18:10 < bridge> but i think it should not be _much_ harder than the old ddnet. 18:10 < bridge> xddd 18:10 < bridge> 18:10 < bridge> he said 18:11 < bridge> GG you jinxed it! 18:23 < bridge> @milkeeycat u implemented generics in ur lang? 18:24 < bridge> not yet, i'm still not sure if I need to add one more ir xd 18:24 < bridge> ```rust 18:24 < bridge> struct A { 18:24 < bridge> a: i32, 18:24 < bridge> b: i32, 18:24 < bridge> } 18:24 < bridge> 18:24 < bridge> impl A { 18:24 < bridge> pub fn hello(&self, other: i32) -> i32 { 18:24 < bridge> return self.a * other; 18:24 < bridge> } 18:24 < bridge> 18:24 < bridge> pub fn set_a(&mut self, value: i32) { 18:24 < bridge> self.a = value; 18:24 < bridge> return; 18:24 < bridge> } 18:24 < bridge> } 18:24 < bridge> 18:25 < bridge> pub fn main() -> i32 { 18:25 < bridge> let mut x: A = A { 18:25 < bridge> a: 2, 18:25 < bridge> b: 3, 18:25 < bridge> }; 18:25 < bridge> 18:25 < bridge> x.set_a(4); 18:25 < bridge> 18:25 < bridge> return x.a; 18:25 < bridge> } 18:25 < bridge> ``` 18:25 < bridge> this compiles in the lang im making at work 18:25 < bridge> now i need to do generics 18:25 < bridge> epyc 18:25 < bridge> @milkeeycat how many irs u have rn 18:25 < bridge> i have AST -> ir -> llvm ir -> machine code 18:25 < bridge> ast and 1 ir 18:25 < bridge> the IR will be fully monomorphized already, this means that the ir itself has no generics, so i need to do the work on the ast 18:26 < bridge> can you guys stop being so smart 18:26 < bridge> god damn it. 18:26 < bridge> do you have type inference? 😬 18:26 < bridge> only a tiny bit 18:26 < bridge> its not the priority right now xd 18:27 < bridge> do you do it on ir or ast? 18:27 < bridge> ast, the IR is fully typed and has all the info needed 18:27 < bridge> to make codegen as easy as possible 18:27 < bridge> but for example, i think rust has 3 irs 18:27 < bridge> AST THIR MIR LIR 18:28 < bridge> and i think it does type checking on THIR 18:28 < bridge> where's hir? 🤨 18:28 < bridge> oh THIR and hir are probs same 18:28 < bridge> actually THIR may be something like type higher ir or smth 18:28 < bridge> hm, i remember it being a separate thing 18:28 < bridge> https://rustc-dev-guide.rust-lang.org/thir.html 18:28 < bridge> The THIR ("Typed High-Level Intermediate Representation"), previously called HAIR for "High-Level Abstract IR", is another IR used by rustc that is generated after type checking. It is (as of January 2024) used for MIR construction, exhaustiveness checking, and unsafety checking. 18:29 < bridge> 18:29 < bridge> As the name might suggest, the THIR is a lowered version of the HIR where all the types have been filled in, which is possible after type checking has completed. But it has some other interesting features that distinguish it from the HIR: 18:29 < bridge> isnt this rust 18:29 < bridge> ok so i guess it does type checking on the ast 18:29 < bridge> looks nearly same ye xd 18:29 < bridge> so whats the goal 18:29 < bridge> but this lang will have an embedded async runtime, like erlang 18:29 < bridge> i'm confused, is this still edlang? or something new 18:29 < bridge> the goal is a mix of erlang and rust 18:29 < bridge> @blaiszephyr im also making a language at work 18:30 < bridge> oh right embedded async runtime 18:30 < bridge> lmao 18:30 < bridge> cool 18:30 < bridge> in rust u have to choose 18:30 < bridge> tokio for example 18:30 < bridge> it divides a bit the community 18:30 < bridge> async rust is hell 18:30 < bridge> also tokio needs to be cooperstive, it cant be preemptive 18:31 < bridge> the coop part is the .await points 18:31 < bridge> is where u yield 18:31 < bridge> to be preemptive u need compiler control 18:32 < bridge> u smart af 18:32 < bridge> i dont understand anything u said 18:32 < bridge> xd 18:32 < bridge> :cammo: 18:33 < bridge> @kollpotato you know what a thread is right 18:33 < bridge> you know green threads? 18:34 < bridge> no 18:34 < bridge> a thread that is scheduled by a runtime library or virtual machine (VM) instead of natively by the underlying operating system (OS). 18:36 < bridge> I love your funny words magic man 18:36 < bridge> xD 18:36 < bridge> u are writing a compiler yourself 18:36 < bridge> well processes execute in a thread, and in a cpu core, only one thread at a time can actually run (simplified for explanation), but the kernel needs to manage how much cpu time each process uses, otherwise one program would run always while the others wait forever, for this, when you are in a preemptive runtime, the kernel forcefully yields your thread, giving control back to kernel and it can decide to give run time to another process 18:36 < bridge> u are the magic man too 18:36 < bridge> I'm a cave man magic man 18:36 < bridge> in a cooperative runtime u yield as a user 18:37 < bridge> in rust those are .await points 18:37 < bridge> i probs explained this wrong but idk xd 18:37 < bridge> @kollpotato read this https://en.wikipedia.org/wiki/Preemption_(computing) 18:37 < bridge> read lot of wiki articles 18:37 < bridge> i do this all the time 18:37 < bridge> now i understand 50% instead of 0% 18:37 < bridge> thanks smart man 18:38 < bridge> ive been reading a lot of them recently 18:38 < bridge> mostly about networking 18:38 < bridge> networking is fun 18:38 < bridge> one thread at a time per cpu or per cpu core? 18:38 < bridge> ah right 18:38 < bridge> cpu core 18:39 < bridge> so if i have 4 cores i can only run 4 threads at a time 18:39 < bridge> then i dont understand what i achieved with python 3 years ago when i tried running 1000 threads in parallel 18:39 < bridge> well there are weird stuff like hyperthreading which idk what does but ye 18:39 < bridge> > Intel® Hyper-Threading Technology is a hardware innovation that allows more than one thread to run on each core. More threads means more work can be done in parallel. How does Hyper-Threading work? When Intel® Hyper-Threading Technology is active, the CPU exposes two execution contexts per physical core. 18:40 < bridge> you have to know the difference between parallel and concurrent 18:40 < bridge> is it like fetching and executing instruction of one thread 18:40 < bridge> and then going to another one 18:40 < bridge> yes 18:40 < bridge> to me these words are the same 18:40 < bridge> > A system is said to be concurrent if it can support two or more actions in progress at the same time. A system is said to be parallel if it can support two or more actions executing simultaneously. The key concept and difference between these definitions is the phrase “in progress.” 18:41 < bridge> got it 18:42 < bridge> tokio can be concurrent using a single thread 18:44 < bridge> @kollpotato btw threading is one of the hardest and most interesting stuff in computing, its why u need locks, mutexes, atomics, and need to know well the memory model 18:44 < bridge> i find most of the things in computer science interesting 18:45 < bridge> but i will still avoid async rust for a while 18:45 < bridge> https://doc.rust-lang.org/nomicon/atomics.html 18:45 < bridge> well thats just because i dont need it 18:45 < bridge> ive read that btw 18:45 < bridge> oh yeah u dont need async for threading xd 18:45 < bridge> there was a post learath sent me years ago 18:45 < bridge> but i forgot 18:46 < bridge> @kollpotato implement this https://en.wikipedia.org/wiki/Work_stealing 18:46 < bridge> good for learning 18:47 < bridge> :justatest: 18:47 < bridge> do they teach this in uni 18:47 < bridge> this is what tokio does 18:47 < bridge> idk i didnt go to uni 18:48 < bridge> i will 18:48 < bridge> probably 18:49 < bridge> do it if u can 18:49 < bridge> how old r u 18:49 < bridge> 16 18:49 < bridge> just 3 more years in school 18:49 < bridge> u got lot of.time ahead 18:51 < bridge> i gotta write my own compiler 18:51 < bridge> before uni 18:51 < bridge> thats has been my dream 18:51 < bridge> for 3 years already 18:51 < bridge> @ryozuki what do you do with ir before it's lowered to llvm ir? 18:51 < bridge> that has been my dream 19:00 < bridge> @ryozuki btw this is kinda cool https://edgl.dev/blog/rust-fn-size-trick/ 19:00 < bridge> but why cant the compiler optimize that? 19:01 < bridge> nothing 19:02 < bridge> :thonk: 19:02 < bridge> the ir is block based and kinda like ssa 19:02 < bridge> so it makes it rly ez to translate to llvm ir 19:03 < bridge> it doesnt have if else it has (cond) jumps s between blocks 19:03 < bridge> and blocks have no control flow within 19:03 < bridge> like llvm ir 19:04 < bridge> maybe one day I'll make a generator which will spit out llvm ir in the end 19:15 < bridge> Then what do you generate now 19:15 < bridge> assembly 19:15 < bridge> :poggers2: 19:15 < bridge> when machine code 19:15 < bridge> assembly too high levle 19:15 < bridge> assembly too high level 19:18 < bridge> I got modulo in automap working! 19:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332051778413265006/2025-01-23_13-17-32.mp4?ex=6793d964&is=679287e4&hm=1b69e94cdb4dd32f7f091178bbe3d6507bd76e9cf20b4826f4dd11b43cacb8c9& 19:23 < bridge> Well, kind of. Let me explain: 19:23 < bridge> The logic is inverted. It's supposed to place tile 49 when the modulo is equal to 0, not the opposite. 19:23 < bridge> However, when trying to set it that way, it only places down tile 49 (meaning it's always true). 19:23 < bridge> 19:23 < bridge> Here's what I put down for the code. In reference to auto_map.cpp 19:23 < bridge> ```cpp 19:23 < bridge> void CAutoMapper::Proceed(CLayerTiles *pLayer, CLayerTiles *pGameLayer, int ReferenceId, int ConfigId, int Seed, int SeedOffsetX, int SeedOffsetY) 19:23 < bridge> // [ ... ] 19:23 < bridge> for(size_t k = 0; k < pIndexRule->m_vModuloRules.size() && RespectRules; ++k) 19:23 < bridge> { 19:23 < bridge> CModuloRule *pModuloRule = &pIndexRule->m_vModuloRules[k]; 19:23 < bridge> if((x + pModuloRule->m_OffsetX) % pModuloRule->m_ModX == 0 && (y + pModuloRule->m_OffsetY) % pModuloRule->m_ModY == 0) 19:23 < bridge> { 19:23 < bridge> RespectRules = false; 19:23 < bridge> } 19:23 < bridge> } 19:23 < bridge> 19:23 < bridge> // already defined code below, just for context 19:23 < bridge> if(RespectRules && 19:23 < bridge> (pIndexRule->m_RandomProbability >= 1.0f || HashLocation(Seed, h, i, x + SeedOffsetX, y + SeedOffsetY) < HASH_MAX * pIndexRule->m_RandomProbability)) 19:24 < bridge> { 19:24 < bridge> CTile Previous = *pTile; 19:24 < bridge> pTile->m_Index = pIndexRule->m_Id; 19:24 < bridge> pTile->m_Flags = pIndexRule->m_Flag; 19:24 < bridge> pLayer->RecordStateChange(x, y, Previous, *pTile); 19:24 < bridge> }``` 19:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332053089334595604/image.png?ex=6793da9c&is=6792891c&hm=ba792bd5fc7a4a58b3a6060d3f276b8dfc2bcb870781a293162f3a9514c3f055& 19:25 < bridge> Like, I KNOW it's in this bit of code: 19:25 < bridge> ```(x + pModuloRule->m_OffsetX) % pModuloRule->m_ModX == 0 && (y + pModuloRule->m_OffsetY) % pModuloRule->m_ModY == 0)``` 19:25 < bridge> But if I set the == to != it doesn't set RespectRules to false anywhere. 19:30 < bridge> Well, setting it to !=, and then changing the && to a || works, kind of, but it doesn't accept more than 1 modulo factor that doesn't overlap. 19:31 < bridge> sweet 19:42 < bridge> oh i have an idea actually 19:49 < bridge> nvm 19:54 < bridge> u could probably do it if that's the only goal 19:55 < bridge> it would be really cool to see 20:04 < bridge> am getting 20:04 < bridge> ``` 20:04 < bridge> Error running link command: no such file or directorymake[2]: *** [CMakeFiles/steam_api.dir/build.make:101: libsteam_api.a] Error 2 20:04 < bridge> make[1]: *** [CMakeFiles/Makefile2:399: CMakeFiles/steam_api.dir/all] Error 2 20:04 < bridge> make[1]: *** Waiting for unfinished jobs.... 20:04 < bridge> ``` 20:04 < bridge> when compiling ): 20:04 < bridge> needs make 20:04 < bridge> but also wtf 20:04 < bridge> what command invoked this 20:04 < bridge> never seen that 20:05 < bridge> lmfao pkg broken and im unable to fix it myself so i go to google 20:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332063581419733106/image.png?ex=6793e462&is=679292e2&hm=0049460077e8c2876fe5db0ebba8b45b23f6ee37ba6aa8bf328d073c134956c9& 20:05 < bridge> 1 minute ago 20:05 < bridge> i did cmake ..; make -j24 20:05 < bridge> try not make 20:05 < bridge> okay.... 20:05 < bridge> do u have ninja or something 20:06 < bridge> -GNinja 20:06 < bridge> i do now 20:06 < bridge> and i will try 20:07 < bridge> 👀 20:07 < bridge> works 20:10 < bridge> prob beats make anyway 20:10 < bridge> u know instead of doing like `cmake; ` u can do `cmake; cmake --build` and it will do it intelligently 20:11 < bridge> u basically dont even have to care about the generator as long as u have it installed then 20:11 < bridge> i somehow always forget the cmake --build 20:14 < bridge> 376k issues :justatest: 20:14 < bridge> probably nix 20:14 < bridge> or some other huge monorepo 20:19 < bridge> yea 20:19 < bridge> it's nixpkgs 20:19 < bridge> which is all packages 20:28 < bridge> why doesnt heinrich chat here anymore 20:29 < bridge> no messages since the last year 20:32 < bridge> i can only speculate 20:32 < bridge> true weird 20:33 < bridge> but he online so he reads us 20:33 < bridge> i think ppl may just be more mad at him overall lately 20:33 < bridge> well thats a bit trol since last year is not a month ago 20:33 < bridge> did smth happen 20:33 < bridge> for what? 20:33 < bridge> eh 20:33 < bridge> yes xD 20:33 < bridge> not really 20:34 < bridge> no message since october though 20:34 < bridge> he active on gh 20:34 < bridge> so we cant sneak prs kel 20:34 < bridge> sometimes devs ask him something here 20:34 < bridge> so we cant sneak prs kek 20:34 < bridge> are dms on github a thing 20:34 < bridge> no 20:35 < bridge> oh gh he can ghost people if he doesn't like their perspective lol 20:35 < bridge> @kollpotato when pr to ddnet 20:35 < bridge> hmmm 20:35 < bridge> a good question 20:35 < bridge> leaves a comment, author resolves it and refuses to collaborate further 20:35 < bridge> i need to open an issue first 20:35 < bridge> yea 20:35 < bridge> saw at least 10 prs like that that just are abandoned 20:35 < bridge> basically 20:35 < bridge> i havent got much issues with ddnet 20:35 < bridge> tell me prs and i can look into then if its about merging 20:36 < bridge> altho if its 0.7 stuff i prefer to not be involved 20:36 < bridge> xd 20:36 < bridge> this https://github.com/ddnet/ddnet/pull/6961 :justatest: 20:37 < bridge> i dont have them saved last 2 pages of prs have few like that 20:37 < bridge> i think past a certain point the conflicts will outweigh the cost of just remaking the change or w/e 20:37 < bridge> so it really is insulting when he just leaves your code to sit like that 20:37 < bridge> but whats the issue, author solved the issue and is waiting for merge? 20:38 < bridge> or more feedback 20:38 < bridge> ive seen many PRs which have died because he can't be bothered to come up with a response 20:38 < bridge> well if that happens ask another dev 20:38 < bridge> yea well i think whenever that's been tried it seems like going behind him or w/e 20:38 < bridge> he's heinrich 20:39 < bridge> he's just more involved than most devs so they usually defer to him 20:39 < bridge> if he is against smth he will come after we merge it so 20:39 < bridge> what about this pr #8988? 20:39 < bridge> https://github.com/ddnet/ddnet/pull/8988 20:39 < bridge> just a simple command 20:39 < bridge> not much 20:39 < bridge> we merge first ask questions later if the pr looks good 20:39 < bridge> yea right 20:39 < bridge> did u see how he reviewed chiller's more recent PRs 20:39 < bridge> also why you've probably seen fewer PRs from him 20:40 < bridge> then the whole ddnet is down because of a null pointer 20:40 < bridge> sometimes he's relentless and idk his criteria 20:40 < bridge> 6 files changed wtf 20:41 < bridge> 2 of them are header files 20:42 < bridge> one file is just for registering the command 20:42 < bridge> 20:43 < bridge> ok i changed to heinrich review and now what 20:46 < bridge> that one actually does seem kinda prone to weird things, just another reason we need truly unique identifiers for players lol 20:48 < bridge> its good to have someone like heinrich that heavily vets everything though 20:48 < bridge> 45 degree bind pr? 20:48 < bridge> its just he's not as active as some ppl would like 20:48 < bridge> also simple feature and finished and abandoned 20:48 < bridge> most maintainers aren't as active as ppl would like i guess 20:52 < bridge> not paid 20:52 < bridge> i guess so but would be nice to have it in pr 20:53 < bridge> or review with a way to make it less bug prone 20:54 < bridge> even if they were paid i doubt they'd work 20:54 < bridge> unless it was pretty good rates 20:54 < bridge> ill check some prs 20:54 < bridge> btw i recommend u are pushy about ur own prs to get them merged 20:54 < bridge> ppl simply forget 20:54 < bridge> i am pushy 20:54 < bridge> #3411 20:54 < bridge> https://github.com/ddnet/ddnet/issues/3411 20:55 < bridge> XD 20:55 < bridge> no pr yet bcs nobody has done it 20:55 < bridge> i dont rly care too much about getting my specific stuff merged, it'd just be nice to have things merged quicker in general 20:55 < bridge> be pushy about it 20:55 < bridge> but send the pr links xd 20:56 < bridge> https://github.com/ddnet/ddnet/pull/9057 20:56 < bridge> 20:56 < bridge> when merge this #7697 20:56 < bridge> https://github.com/ddnet/ddnet/pull/7697 20:56 < bridge> this is already implemented in "new" teeworlds editor 20:58 < bridge> I'd like #9097 in 19.0 20:58 < bridge> https://github.com/ddnet/ddnet/pull/9097 20:58 < bridge> i think laser doors and stuff would be more useful then pickups 20:58 < bridge> i think laser doors and stuff would be more useful than pickups 20:59 < bridge> https://github.com/ddnet/ddnet/pull/9469 :justatest: 20:59 < bridge> i mean ok there are probs few maps that use moving switch pickups 21:00 < bridge> that is quite a massive hack xD 21:00 < bridge> it doesnt render moving pickups on speeder 21:00 < bridge> just normal ones in palce 21:00 < bridge> just normal ones in place 21:00 < bridge> why would this pr even exist 21:00 < bridge> it probably affected physics a lot 21:00 < bridge> speeders are tied to server tick so cant rly accurately in editor 21:01 < bridge> added a comment on https://github.com/ddnet/ddnet/pull/8988#pullrequestreview-2570892935 21:01 < bridge> @maslowian lets goooo 21:02 < bridge> why exactly snake case? 21:02 < bridge> pleasecancelthisswapthankyouverymuch 21:02 < bridge> all other ddnet commands are just words without any separator 21:02 < bridge> yeah i don't think it's gonna happen xd 21:02 < bridge> i mean its cool though 21:02 < bridge> maybe with good prediction it can be nice 21:02 < bridge> readable for me and if u type /cancel it fills it 21:03 < bridge> yea 21:03 < bridge> agree 21:03 < bridge> i'd say /rocketman should give jetpack 21:04 < bridge> /shootgun 21:04 < bridge> btw 21:04 < bridge> idea for an admin only command 21:04 < bridge> /seg - causes the server to do a segmentation fault 21:04 < bridge> oh yeah 21:05 < bridge> /cpp 21:05 < bridge> https://github.com/ddnet/ddnet/pull/9083 added to merge queue 21:05 < bridge> hell yeah 21:05 < bridge> i wonderh ow many ppl used /c ever 21:05 < bridge> i wonder how many ppl used /c ever 21:05 < bridge> i never did xD 21:05 < bridge> ^ 21:05 < bridge> i always use it 21:05 < bridge> anyway u shouldnt be doing naughty stuff on ddnet chat 21:05 < bridge> its transparent 21:05 < bridge> i just /w 21:06 < bridge> :justatest: 21:06 < bridge> and sometimes arrow key up 21:07 < bridge> @jupeyy_keks ur graphics guy, does it look ok? https://github.com/ddnet/ddnet/pull/9057 21:07 < bridge> is there a view screenshots directory button in ddnet 21:08 < bridge> how would that work 21:08 < bridge> ddnet doesnt take screenshots 21:08 < bridge> i dunno xd 21:08 < bridge> u can do it thru steam but anything else is super platform specific 21:08 < bridge> bruv 21:08 < bridge> F10 21:09 < bridge> u can take screenshot ind dnet 21:09 < bridge> u can make ur own folder in xdg photos but 99% of ppl wont want that 21:09 < bridge> WTF 21:09 < bridge> news to me 21:09 < bridge> xddd 21:09 < bridge> xD 21:09 < bridge> lterally never used this feature 21:09 < bridge> and ye there should be screenshot carosel xd 21:09 < bridge> would be cute 21:09 < bridge> so where does it put them :justatest: 21:09 < bridge> I'll review it 21:09 < bridge> ah i think i found an alternative 21:09 < bridge> i can copy the dir from the console 21:09 < bridge> so many features in ddnet, there's at least one nobody knows xd 21:09 < bridge> not perfect but it works 21:09 < bridge> thanks! 21:09 < bridge> just the ddnet data dir? 21:09 < bridge> ddnet/screenshots 21:10 < bridge> any other pr 21:10 < bridge> now is the time 21:10 < bridge> https://github.com/ddnet/ddnet-scripts/pull/38 21:11 < bridge> troll 21:11 < bridge> xd 21:11 < bridge> i closed it 21:11 < bridge> lmao 21:11 < bridge> why 21:11 < bridge> it had lot of conflicts 21:11 < bridge> (im edg-l btw) 21:11 < bridge> edger 21:11 < bridge> ikr 21:12 < bridge> 21:12 < bridge> imo not sure if necessary, or moved to ddnet tab 21:12 < bridge> what about adding view screenshots dir there too 21:12 < bridge> :poggers2: 21:12 < bridge> view screenshot in that tab ok 21:13 < bridge> looks ok, i found a typo that triggers me so i commentet it 21:13 < bridge> looks ok, i found a typo that triggers me so i commented it 21:14 < bridge> do a lot of ppl view their saves files? 21:14 < bridge> ``` 21:14 < bridge> ewan@machine ~/ddnet-rs (main)> cargo run 21:14 < bridge> warning: /home/ewan/ddnet-rs/Cargo.toml: file `/home/ewan/ddnet-rs/src/lib.rs` found to be present in multiple build targets: 21:14 < bridge> * `lib` target `ddnet_rs` 21:14 < bridge> * `bin` target `ddnet-rs` 21:14 < bridge> Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.31s 21:14 < bridge> Running `target/debug/ddnet-rs` 21:14 < bridge> [2025-01-23T20:12:08Z INFO fs] Found config dir in "/home/ewan/.config/ddnet-rs-alpha" 21:14 < bridge> [2025-01-23T20:12:08Z WARN thread_priority] Couldn't set the priority for the thread with Rust Thread ID ThreadId(7) named Some("backend-thread"): OS(13) 21:14 < bridge> [2025-01-23T20:12:08Z INFO graphics_backend::backend_thread] graphics backend thread exited: libvulkan.so.1: cannot open shared object file: No such file or directory 21:14 < bridge> [2025-01-23T20:12:08Z INFO xkbcommon_dl] Failed loading `libxkbcommon.so.0`. Error: CantOpen(DlOpen { desc: "libxkbcommon.so.0: cannot open shared object file: No such file or directory" }) 21:14 < bridge> [2025-01-23T20:12:08Z INFO xkbcommon_dl] Failed loading `libxkbcommon.so`. Error: CantOpen(DlOpen { desc: "libxkbcommon.so: cannot open shared object file: No such file or directory" }) 21:14 < bridge> thread 'main' panicked at /home/ewan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.30.8/src/platform_impl/linux/wayland/seat/keyboard/mod.rs:300:41: 21:14 < bridge> called `Result::unwrap()` on an `Err` value: XKBNotFound 21:14 < bridge> note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 21:14 < bridge> ``` 21:14 < bridge> it's installed 😭 21:14 < bridge> wat is this runtime lib detection 21:14 < bridge> i do once a few months 21:14 < bridge> weird shit 21:14 < bridge> that should be ld.so's job 21:14 < bridge> i do 21:14 < bridge> wayland skill issue? 21:14 < bridge> save map that gets boring, then come back to it after while with save code 21:15 < bridge> hyprland uses xkb 21:15 < bridge> u on hyprland? 21:15 < bridge> and libxkbcommon is installed here 21:15 < bridge> yea 21:15 < bridge> omg 21:15 < bridge> me too 21:15 < bridge> hi frien 21:15 < bridge> hi 21:15 < bridge> i still havent finished configuring it 21:15 < bridge> maybe ddnet-rs needs a fhs env :pepeW: 21:16 < bridge> what is that xd 21:16 < bridge> 21:17 < bridge> The client from that branch has good prediction, the problem is with old clients xd 21:17 < bridge> would have been useful when i was testing hot reload 21:17 < bridge> @robyt3 if u can review https://github.com/ddnet/ddnet/pull/9572 too :3 21:17 < bridge> :owo: 21:17 < bridge> uwu please review 21:17 < bridge> why not add it in a new file 21:18 < bridge> chat msg in new msg out 21:19 < bridge> what if it was word per line instead of json 21:19 < bridge> i think we should give up on the cmake list explicit files, if we don't stop bloating existing components more 21:19 < bridge> a chat filter sounds like smth that could be split completely 21:19 < bridge> 🦑 21:19 < bridge> wdym 21:19 < bridge> less configuration 21:19 < bridge> non tech people dont know json, it would be easier to edit it for them 21:20 < bridge> json is better, more easily extensible 21:20 < bridge> also json is easier to handle since we got the json parser already 21:20 < bridge> move the censoring functions to a different file for faster parallel compilation 21:20 < bridge> for getting it from web yes 21:20 < bridge> is it worth it? 21:20 < bridge> xD 21:20 < bridge> lel 21:21 < bridge> json for configs is the worst IMO 21:21 < bridge> for parsing too since we effectively need 0 parsing code 21:21 < bridge> but i mean if some streamer wants to add a bannable word 21:21 < bridge> did you miss serde? 21:21 < bridge> be honest 21:21 < bridge> json is confusing 21:21 < bridge> i can't go back 21:21 < bridge> nah 21:21 < bridge> i do 21:21 < bridge> also because we might want to reuse it for other strings 21:21 < bridge> serde is the best invention in rust 21:21 < bridge> use rust bridge and implement word censoring in rust! 21:21 < bridge> ye 21:21 < bridge> go back to what xd 21:21 < bridge> non serde ser/de 21:21 < bridge> can u add a comment with this? i cant code rn so i may forget 21:21 < bridge> yea but you dont need to parse text file 21:21 < bridge> ah xdd 21:21 < bridge> u need to parse newlines xd 21:21 < bridge> yeah, I'll add some comments 21:21 < bridge> they could port it to cpp tho it would just be somewhat messy 21:23 < bridge> they did wow 21:23 < bridge> they are using real attributes 21:23 < bridge> i was expecting macro mess 21:24 < bridge> another dependency to ddnet? :poggers2: 21:24 < bridge> they have json parser it's fine 21:24 < bridge> this only has yaml anyway rn 21:24 < bridge> but it's about the usability 21:24 < bridge> yaml is good 21:24 < bridge> but 21:24 < bridge> having .cfg .json .yaml 21:24 < bridge> also i dont think most ppl want to depend on a repo with so few stars and such 21:24 < bridge> serde has shitload of options 21:24 < bridge> not good 21:25 < bridge> yeah just copy the source straight to your project 21:25 < bridge> i think json and cfg do serve pretty different roles 21:25 < bridge> but having json for client configs just sucks 21:25 < bridge> make a toml parser 21:25 < bridge> i will rewrite my teeworlds protocol in serde 21:25 < bridge> i have no idea why i didnt do it in the first place 21:26 < bridge> or do old fashioned .ini which is basically toml compatible anyway 21:26 < bridge> i will rewrite my teeworlds protocol packer in serde 21:26 < bridge> not hard to parse either tho 21:26 < bridge> json is like the second worst way to store configs imo 21:27 < bridge> who knows about toml besides rust devs 21:27 < bridge> lots of ppl 21:27 < bridge> it was around before that 21:27 < bridge> its relatively new 21:27 < bridge> json> 21:27 < bridge> no 😠 21:27 < bridge> just let the user write in binary 21:27 < bridge> cbor or jsonb 21:27 < bridge> who cares about silly abstractions yk 21:28 < bridge> bson* 21:28 < bridge> msgpack 21:28 < bridge> but i think those are mostly good for web 21:28 < bridge> network transfer 21:28 < bridge> or even like protobuf 21:28 < bridge> msgpack good 21:28 < bridge> ddnet uses it 21:28 < bridge> there was a modern protobuf alternative that looked good 21:28 < bridge> for caching 21:28 < bridge> i think user configs are totally different bcs they need to be readable still 21:28 < bridge> huh 21:28 < bridge> what is it 21:28 < bridge> and easy to fix if u break them 21:28 < bridge> i cant remember what it's called 21:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332084808901333062/image.png?ex=6793f827&is=6792a6a7&hm=f1ae4d76dd55926ef3f2b932059ac237d3a5d23d17e8d8e2ac69db838a790181& 21:29 < bridge> :15Socialcredit: 21:29 < bridge> taiwan number one 21:31 < bridge> prob this 21:32 < bridge> btw, cbor is based on msgpack 21:32 < bridge> so fast??? 21:32 < bridge> crazy 21:32 < bridge> it's assuming you need the whole payload at once 21:32 < bridge> other formats perform better if you're doing chunked reads for example 21:33 < bridge> but it's good for what it is 21:33 < bridge> https://github.com/ddnet/ddnet/pull/9542 looks good to me, if another can check 21:33 < bridge> otherwise ill check again next week and merge 21:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332089477069406209/image.png?ex=6793fc80&is=6792ab00&hm=1a94a1e3fb3e70776bace5a8527467556d9532a18e30a220bf1407f08158bd4e& 21:49 < bridge> 21:49 < bridge> 🙂 21:49 < bridge> @kebscs its true that u should open a issue first before implementing a feature, specially if it is a bit polemic 21:50 < bridge> if i feel like coding ill just quick code 21:50 < bridge> There are still unresolved comments. I'm working on the one about debug dummies 21:51 < bridge> ok but then dont complain if feature is rejected, just have it in mind 21:51 < bridge> cant the 128p pr be split into 2 21:51 < bridge> client and server 21:51 < bridge> unresolved comments are about server 21:52 < bridge> Of course, because this only contains server-side changes except setting `MAX_CLIENTS = 128` 21:53 < bridge> what is this save name '/load panty fit carry' to continue 21:54 < bridge> does it use the whole english dictionary 21:54 < bridge> yea, but most of the server changes are to support old clients from what i see 21:54 < bridge> It uses `wordlist.txt`, no idea where that comes from though 21:54 < bridge> so if the max_clients gets changed to 128 now on client itll support more client versions in future 👍 21:54 < bridge> @ryozuki less than 100 prs open now 21:54 < bridge> so if the max_clients gets changed to 128 now on client, the patch will support more client versions in future 👍 21:55 < bridge> u can rest now rust pro 21:56 < bridge> @ryozuki 21:57 < bridge> why does it end with 6666 xD 21:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332091816631074996/image.png?ex=6793feae&is=6792ad2e&hm=f9299dadbdaeb4504115915170dc9a48fadb06f08abc598462984116df894b49& 21:57 < bridge> cursed file 21:57 < bridge> yeah, I also noticed :monkaS: 21:59 < bridge> the features was added by zwelf 5 years ago 21:59 < bridge> comes from here https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases 21:59 < bridge> there is another file available 21:59 < bridge> also 66666 lines 21:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332092408153899029/image.png?ex=6793ff3b&is=6792adbb&hm=a745e90a142259de9f960cbb1be00fac1cccac629070f718f3f9445e66717671& 21:59 < bridge> `called `Result::unwrap()` on an `Err` value: failed to load default files for "skins/": requested sound file for default not found: ground_jump_001` 21:59 < bridge> 😕 21:59 < bridge> ``called `Result::unwrap()` on an `Err` value: failed to load default files for "skins/": requested sound file for default not found: ground_jump_001`` 21:59 < bridge> 😕 21:59 < bridge> and another one 21:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332092477779345441/image.png?ex=6793ff4b&is=6792adcb&hm=5e072f214ae5605365bd44b0c15615657ee56f6d3abe9242b0169c9c4980059f& 21:59 < bridge> bruh 22:00 < bridge> ah 22:00 < bridge> u need ddnet-rs-data 22:00 < bridge> or something 22:00 < bridge> its another repo 22:00 < bridge> ah 22:00 < bridge> i updated submodules 22:00 < bridge> yeah 22:01 < bridge> now u can enjoy blazingly fast compile times 22:01 < bridge> can i use ddnet configs 22:02 < bridge> commit introducing it has link to source: https://github.com/ddnet/ddnet/commit/ea31171873a324772e7b89942dea6badb0b39864 22:02 < bridge> files are cursed 22:03 < bridge> i wonder too 22:03 < bridge> the repo still not indexed 22:03 < bridge> any idea why my libpng on my macos build seems to completely fail? 22:03 < bridge> 22:03 < bridge> all images are unable to load due to "png_create_read_struct failed" which I assume means the library is just broken 22:03 < bridge> ``` 22:03 < bridge> 2025-01-23 12:55:48 E png: libpng internal failure: png_create_read_struct failed. 22:03 < bridge> 2025-01-23 12:55:48 E png: failed to load image from file. filename='editor/checker.png' 22:03 < bridge> 2025-01-23 12:55:48 E png: libpng internal failure: png_create_read_struct failed. 22:03 < bridge> 2025-01-23 12:55:48 E png: failed to load image from file. filename='editor/cursor.png' 22:03 < bridge> 2025-01-23 12:55:48 E png: libpng internal failure: png_create_read_struct failed. 22:03 < bridge> ``` 22:03 < bridge> any idea why my libpng on my macos build seems to completely fail? 22:03 < bridge> 22:04 < bridge> all images are unable to load due to "png_create_read_struct failed" which I assume means the library is just broken since this isn't even related to the filesystem 22:04 < bridge> ``` 22:04 < bridge> 2025-01-23 12:55:48 E png: libpng internal failure: png_create_read_struct failed. 22:04 < bridge> 2025-01-23 12:55:48 E png: failed to load image from file. filename='editor/checker.png' 22:04 < bridge> 2025-01-23 12:55:48 E png: libpng internal failure: png_create_read_struct failed. 22:04 < bridge> 2025-01-23 12:55:48 E png: failed to load image from file. filename='editor/cursor.png' 22:04 < bridge> 2025-01-23 12:55:48 E png: libpng internal failure: png_create_read_struct failed. 22:04 < bridge> ``` 22:05 < bridge> rip 22:05 < bridge> Try to pass arguments for the other arguments to `png_create_read_struct` which are `nullptr` right now: https://refspecs.linuxbase.org/LSB_3.1.1/LSB-Desktop-generic/LSB-Desktop-generic/libpng12.png.create.read.struct.1.html 22:05 < bridge> That should give you details error messages hopefully 22:05 < bridge> That should give you detailed error messages hopefully 22:06 < bridge> wouldnt have such issues in rust btw 22:06 < bridge> sorry for propaganda 22:06 < bridge> how is the thread priority stuff supposed to work? 22:06 < bridge> for ddnet rs 22:06 < bridge> unless you're running as superuser which doesn't generally work 22:34 < bridge> well its not monday so i cant say its merge monday 22:35 < bridge> merge thursday doesnt sound cool 22:37 < bridge> merge friday :justatest: 22:39 < bridge> this was useful thanks. yielded the warning: 22:39 < bridge> ``Application built with libpng-1.4.12 but running with 1.6.43`` 22:40 < bridge> which version is the one it's supposed to be 22:41 < bridge> 1.6.43 is in ddnet-libs, so you somehow built an old version it seems 22:41 < bridge> ok 22:42 < bridge> Or you are using the ddnet-libs header files but linking with a different library version 22:42 < bridge> idk I can atleast start investigating now 22:43 < bridge> I do have ``-DPREFER_BUNDLED_LIBS=ON`` which I thought is what you want 22:45 < bridge> The version probably comes from `#define PNG_LIBPNG_VER_STRING "1.6.43"` in `png.h`, so while this file is up-to-date the compiled library is not 22:45 < bridge> was 1.4.12 ever a version included with ddnet 22:46 < bridge> I'm assuming it's using a version on the system incorrectly 22:47 < bridge> Probably not, those versions look rather old 22:47 < bridge> Probably not, this version look rather old 22:47 < bridge> Probably not, this version looks rather old 22:51 < ChillerDragon> irclog fun fact 22:51 < ChillerDragon> heinrich has been pinged 10 times this year and wrote 0 messages this year 22:52 < ChillerDragon> this year being 2025 not the last 356 days 22:52 < bridge> I can confirm he isn't dead 22:53 < bridge> hi chiller 22:53 < ChillerDragon> ryowo 22:55 < ChillerDragon> another fun fact is that both 0xdeen and ChillerDragon wrote exactly 84 messages this year (since my last log dump) 22:56 < ChillerDragon> and kollpotato wrote 620? i think my stats are flawed 22:58 < bridge> when do servers restart with nightly build 22:58 < ChillerDragon> there is no system 22:58 < ChillerDragon> if you need it faster ping some admin 23:07 < bridge> we deploy servers on demand 23:15 < bridge> isn't UniqueId not enough? i thought it persists on map change 23:16 < bridge> is* 23:16 < bridge> @learath2 can u deploy today 23:16 < bridge> tomorrow its friday so its forbidden 23:17 < bridge> What needs to be deployed? 23:17 < bridge> there is pr merged that adds a new flag 23:17 < bridge> bumping version to 10 23:17 < bridge> idk the exact name 23:18 < bridge> Maybe a PR number? 23:18 < bridge> https://github.com/ddnet/ddnet/pull/9542 23:18 < bridge> this 23:19 < bridge> Doesn't this need client support too? I can deploy it probably but is there any point to it until we also release a client? 23:19 < bridge> it does but i play on latest commit always 23:20 < bridge> u dont want to support me? 23:20 < bridge> :owo: 23:20 < bridge> I was already planning to merge #9096 tomorrow along with a new antibot, if it's not urgent I'd rather deploy all 3 together 23:20 < bridge> https://github.com/ddnet/ddnet/pull/9096 23:21 < bridge> nah its not urgent 23:21 < bridge> @learath2 i like how first pr pfp is a anime girl and second is a guy smoking 23:21 < bridge> internet at its best 23:22 < bridge> The duality of developers 23:23 < bridge> @learath2 so ur not hitting the merge button for a reason or? 23:24 < bridge> It's because I don't want to merge it, forget about the antibot bump, then a deploy happens and everything breaks 23:24 < bridge> so i shouldnt merge it right 23:24 < bridge> noted 23:24 < bridge> the antibot deploy and the server deploy needs to happen in a certain order in lockstep with an api bump 23:24 < bridge> can u put it in a comment 23:24 < bridge> @robyt3 it seems weird that it's building with a system version of libpng because the build log says 23:24 < bridge> 23:24 < bridge> ``-- Found PNG: /Users/runner/work/TaterClient-ddnet/TaterClient-ddnet/ddnet-libs/png/mac/libfat/libpng16.16.dylib`` 23:24 < bridge> 23:24 < bridge> and 23:24 < bridge> 23:24 < bridge> ``-- * PNG not found (using bundled version)`` 23:25 < bridge> 23:25 < bridge> so how is it getting libpng-1.4.12. I confirmed the libpng16.16.dylib version is 1.6.43 23:25 < bridge> also ppl would say this is a devops skill issue 23:25 < bridge> ngmi 23:26 < bridge> i wanna know if im the only one down bad 23:26 < bridge> does anybody here know what TPOT is 23:26 < bridge> the power of two (bfdi) 23:27 < bridge> no xd 23:27 < bridge> :deen_star: 23:27 < bridge> :deen_star: 23:27 < bridge> i tried 23:27 < bridge> it means "this place of twitter" and its a bunch of 19y old or smth like that blabbering like they know about tech 23:27 < bridge> and usually bad takes 23:27 < bridge> like zig best 23:27 < bridge> eh, there is a world in which we'd have put the api version of the antibot within the filename so the deployment could be smoother 23:28 < bridge> skill issue 23:28 < bridge> currently there is a timeframe within which some servers don't have server executables new enough to run the new antibot, so if a restart happens during that it's an immediate crash 23:29 < bridge> brainrot slop for children 23:30 < bridge> oh thats not what you meant 23:30 < bridge> https://x.com/d0unbug/status/1882217892554682509 23:30 < bridge> this is an example 23:30 < bridge> of stupid tpot 23:31 < bridge> sounds like a great take, smart people 23:31 < bridge> https://x.com/kennethnym/status/1882444875133755745 23:31 < bridge> its about this pic 23:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1332115603883950201/Gh-uOc0W4AALIqM.png?ex=679414d5&is=6792c355&hm=49d22434a51b3bdfc0d74861ae5323958ba5b075385a27ffa1c8f80fb7be0cf6& 23:31 < bridge> for ppl that dont wanna open it 23:32 < bridge> I also reject llm for the love of the game. Chat am I one of these twitter yappers? :FrierenShook: 23:32 < bridge> xd 23:33 < bridge> i also dont use any ai for coding 23:33 < bridge> programming is something i enjoy 23:33 < bridge> and it probs sucks at rust 23:33 < bridge> There is only one single exception I make. I make chatgpt convert shitty documentation screenshots to golang structs 23:34 < bridge> They make it so annoying with an html table so I can't properly copy it, they add a stupid description to the side, add a billion fields. Literal waste of my time manually transcribing down all the api fields and their types 23:34 < bridge> rest api dev hurdles 23:35 < bridge> https://documentation.unicommerce.com/docs/waybill-generation.html#request-payload-details look at this, so many fields an absolute waste of time 23:39 < bridge> xd 23:40 < bridge> we use openapi and i just generate bindings from the json 23:42 < bridge> With my recent experience, I have learned that "developers" put out some absolute horseshit apis out there. This api I linked sends a field that has "flag" in the name, says boolean in the docs, but is actually sending the string `true` and `false` 23:42 < bridge> Especially in the logistics industry they create absolute messes. Number fields that are sent as string with unknown precision 23:43 < bridge> Fields that have different meaning when sent as null vs not sent at all 23:45 < bridge> Yes, mine too 23:45 < bridge> endpoints return BooleanDto with 1 field, “success” 23:45 < bridge> endpoints return an object BooleanDto with 1 field, “success” 23:46 < bridge> The openapi way is pretty good 23:46 < bridge> The progenitor crate can do some cool stuff and even generate http mock extensions for you 23:47 < bridge> takes all the boilerplate out of writing a mock basically 23:52 < bridge> has anyone successfully compiled macos from a github runner or gotten one of the build artifacts to launch correctly? 23:52 < bridge> I have a feeling I'm the first one to actually care 23:57 < bridge> ask mister a: buse 23:58 < bridge> who?