00:05 < bridge> lmfao 00:06 < bridge> wait sry what is ddnet-rs :justatest: 00:06 < bridge> a different ddnet rust project 00:06 < bridge> or renamed & moved 00:08 < bridge> it's ddpg 00:36 < bridge> That sounds like you are shooting at deen the full time database engineer 00:40 < bridge> There are code bases that people complain about. And there are code bases nobody uses. 00:55 < bridge> i wish i wasnt so stupid so i could actually make the updates i want 00:56 < bridge> you can only make updates you dont want? 01:05 < bridge> not what i meant :nouis: 02:29 < bridge> there is a toggle in a PR. but that might take longer, we can remove the spec cursor and spec cam feature for 18.9 upon release for now. 02:30 < bridge> it's either removed or there will be a toggle before release 03:09 < bridge> what do you think of subprocess in binds 03:10 < bridge> so we don't have to create many files for toggles 04:58 < bridge> rip 05:12 < bridge> are there any good .HLSL tutorials around? i want to write something for a project i'm doing but have no single clue what anything means 05:13 < bridge> what are you writing the shader for 05:14 < bridge> https://learn.microsoft.com/en-us/windows/win32/direct3dgetstarted/work-with-shaders-and-shader-resources 05:15 < bridge> wait that sucks 05:15 < bridge> https://learn.microsoft.com/en-us/windows/win32/direct3d11/d3d11-graphics-reference-d3d11-shader 05:15 < bridge> https://learn.microsoft.com/en-us/windows/win32/direct3d11/d3d11-graphics-reference-d3d11-shader 05:16 < bridge> There's a cool program, called Tooll3, which is sort of like TouchDesigner, but free and open source. 05:16 < bridge> You can literally create your own functions and connect them to make cool visuals. Though what I plan on doing is to try and make a certain type. 05:16 < bridge> To make what I want optimally it involves multi-thread computing, and hlsl is the best bet for it 05:16 < bridge> I don't even know if I'm saying any of this right, or if this is the answer. 05:16 < bridge> hlsl is a shader language so you first need to figure out what kind of interface this hlsl is even giving you 05:18 < bridge> and multi threading is not necessarily made more optimal by hlsl it's just that it's your way of leveraging the gpu so you have hella parallelization 05:18 < bridge> but if it's i/o bound at all or anything like that then idk 05:48 < bridge> https://github.com/tooll3/t3/wiki/help.ShaderDevelopmentExample 05:49 < bridge> Tooll3 supports hsls compute shaders which I'm assuming is what you want 05:49 < bridge> Tooll3 supports hlsl compute shaders which I'm assuming is what you want 05:49 < bridge> yeah thats what i want 05:50 < bridge> hold on lemme send the uh, video of what im doing 05:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325687851433857024/2025-01-03_01-33-49.mp4?ex=677cb285&is=677b6105&hm=3f4c6cd096f61389afc63c56543dbcd92a779a0da98dfeeaec742fbefdb060bc& 05:50 < bridge> mmm that's nice node spaghetti 05:51 < bridge> its all math too! but its math that has to like, store a list and constantly look back and forth 05:52 < bridge> the main thing you do with compute shaders is turn GPU memory into other kinds of GPU memory 05:52 < bridge> and you can write to buffers 05:52 < bridge> so you'd probably want to start backwards and figure out how to do what you want under the contrains of the compute shader 05:52 < bridge> so you'd probably want to start backwards and figure out how to do what you want under the contraints of the compute shader 05:52 < bridge> so you'd probably want to start backwards and figure out how to do what you want under the constraints of the compute shader 05:54 < bridge> it feels like the completely wrong way to do it, but for context: 05:54 < bridge> I'm writing a tool to visualize rounded logos, using circles and lines. I first have to go through all the points, figuring out which tangent line between both circles should be rendered (which is a lot of math), and then I have to draw arcs, connecting one end of one line, to the other end of the previous line, so it looks seamless. The problem with THAT is that right now, I have to do the tangent calculation 3 TIMES in order to get the output, 05:57 < bridge> why do you need more performance 05:59 < bridge> Because I plan on using it for real-time motion graphics, which will use, presumably around 15 unique shapes. 05:59 < bridge> are the shapes also procedural 06:00 < bridge> Well, yeah. Each and every point has its own movement, as shown in this video 06:00 < bridge> but the shape before the movement 06:00 < bridge> is that procedural 06:00 < bridge> you can apply the movement effect for super cheap with a vertex shader 06:01 < bridge> Oh, let me look that up- 06:05 < bridge> Ohhhh I was looking at COMPUTE shaders before...! 06:05 < bridge> Yeah, I should DEFINTELY look into vertex shaders, then. 06:06 < bridge> I mean compute shaders are kinda like the swiss army knife of shaders, they can do the job of most of the other kinds 06:07 < bridge> but in this case you only need a vertex shader if you just want to procedurally animate the vertecies 06:07 < bridge> but in this case you only need a vertex shader if you just want to procedurally animate the vertices 06:09 < bridge> ohhh my head hurts LOL 06:17 < bridge> they have a discord btw you can ask in there 06:17 < bridge> i AM in there 06:17 < bridge> o ok 06:18 < bridge> for now i just added a debug mode thats like 3x faster somehow (it barely does any calculations) 06:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325695024331231242/image.png?ex=677cb934&is=677b67b4&hm=337c4855b24cccba53c071fc667f0bb49aadf657eb69a0ea85874cf5c8b51af0& 06:29 < bridge> GPU bottleneck, too much data is being fed to the GPU, causing freeziness 06:30 < bridge> I know it's GPU problem, cuz the calculations are pre-done after the next frame, however data to the GPU are sometimes discarded cuz it cannot be rendered in time 06:30 < bridge> otherwise, it would look really slow, while also going at 10 fps 06:31 < bridge> it's probably not a gpu bottleneck 06:31 < bridge> Well, care to reiterate? 06:31 < bridge> My first thought was that 06:32 < bridge> he already explained the reason it's slow is because of the procedural shape generation that needs to be done every frame. 06:32 < bridge> the calculations are done every frame tho 06:32 < bridge> the gpu can render about 1000x more triangles than he is showing in the window without issue 06:33 < bridge> There is one exception where the GPU cannot handle that many 06:33 < bridge> computers can generate realistic scenes in realtime 06:33 < bridge> im just a dumbass :nouis: 06:34 < bridge> Yeah through optimized data caching and optimized compressed data sizes 06:35 < bridge> it all comes down to how much work the CPU should do and how much data the GPU should have 06:35 < bridge> the less, the better 06:36 < bridge> he is using a fully procedural framework to make the graphics, it's not the same as regular scenes that get loaded into memory and renders static triangles 06:37 < bridge> Does that kind of framework rely on SIMD? 06:38 < bridge> I did not write it 06:38 < bridge> but likely not 06:38 < bridge> @hectavoxel I haven't asked yet, but what have it caused bottleneck? 06:39 < bridge> if you may have any idea on where went wrong 06:40 < bridge> the CPU shouldn't be it, cuz the positioning for all of the generative triangles are in place, based on the amount of skipping steps from the next frame rendered 06:40 < bridge> either the Shader used are insanely unoptimized, or the GPU data feed is larger, than expected 06:42 < bridge> that's not true at all 06:43 < bridge> just because the framerate is low does not mean the gpu is bottlenecking 06:50 < bridge> i dont know 09:16 < bridge> Why close @tsfreddie 09:18 < bridge> got other things to do, just bite more than i can chew, it just need some limit and some testing probably. someone can pick it up. 09:19 < bridge> Mh OK. I think that was actually a useful PR. Saner than our byte limit approach right now 09:21 < bridge> heinrich had a rather good point that you can fit kind of an entire sentence in 16 chinese codepoints 09:21 < bridge> ye, that is fair but I already spent way too much time on this so maybe someone can figure out the design. code should still stand if someone wants to takeover. 09:21 < bridge> But does that matter? As long as it's not longer visually 09:22 < bridge> kinda yeah? 09:22 < bridge> Why 09:22 < bridge> it's not longer than "WWWWWWWWWWWWWWWW" but only to that one. 09:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325741286585532537/image.png?ex=677ce449&is=677b92c9&hm=745b3be55888384629c1a4b1f3c7a7986e5dd4a8dd2e2c6ad703a11a55eec721& 09:22 < bridge> it's not longer than "WWWWWWWWWWWWWWWW" but only not to that one. 09:22 < bridge> this fits 09:23 < bridge> And so? You can name yourself a sentence 09:23 < bridge> I can also make a Latin language that could do that 09:24 < bridge> If I name myself MF, then you know what I mean 09:24 < bridge> usually chinese games does have a 2:1 character weighting, chinese are 2, latins are 1 09:25 < bridge> it sorta bypasses the mute feature because we cannot mute usernames 09:25 < bridge> and you can add clan 09:25 < bridge> actually that's already a problem anyway 09:25 < bridge> in chinese 09:25 < bridge> Yeah but other languages like Russian would profit too 09:25 < bridge> yeah but it's mitigated by the low charecter count 09:25 < bridge> not really. you can just use letters and it reads 09:26 < bridge> I think caring for sentences is over thinning 09:26 < bridge> Thinking 09:26 < bridge> GLYWCNMGDSB is a full sentence 09:26 < bridge> in chinese 09:26 < bridge> in english I can't think of anything that someone could say to me in 16 charecters that would insult me personally enough to care 09:28 < bridge> and in chinese you can already do that 09:28 < bridge> without chinese characters 09:29 < bridge> and if someone wants to insult you with a full sentence but they can't do it in english. if they do it in chinese you probably can't even tell it is happening. 09:29 < bridge> anyway, i think heinrich is more worried about infomation density than only insults 09:30 < bridge> He wants graphemes, but that's not realistic 09:30 < bridge> isn't chinese graphemes still only one character? 09:30 < bridge> I was thinking that 09:31 < bridge> i also doubt heinrich would want english graphemes to reach 16 too 09:31 < bridge> idk how graphemes fixes anything 09:31 < bridge> Is it? Are there no like variants in different parts of China or smth? Xd 09:32 < bridge> chinese is always one character per character. there is no words in chinese. i mean there is but it is not defined 09:32 < bridge> https://www.reddit.com/r/ChineseLanguage/comments/1e4ji8i/what_is_a_grapheme_in_the_context_of_character/ 09:33 < bridge> anyway, chinese is pretty solvable just by using the 2:1 weighting 09:33 < bridge> so if anyone wants to do that they can just add it. 09:33 < bridge> Well they are the Unicode standard for characters 09:33 < bridge> but we display unicode 09:33 < bridge> But many of these letters still have a single Unicode codepoint anyway 09:34 < bridge> Yes but we could not display emojis 09:34 < bridge> Not without a custom format 09:34 < bridge> idk the weighting thing seems fine 09:34 < bridge> isn't the problem too long? instead of too short? fit 16 unicode graphemes can be longer than 16 codepoints 09:35 < bridge> ye but utf8 is already similar to the weighting thing for chinese 09:35 < bridge> Yeah but that sounds like u want to parse the content 09:35 < bridge> going from 5 to 7 is not really anything and i think chinese people can cope with 5 09:35 < bridge> isn't it 4:1 instead of 2:1? 09:35 < bridge> Ofc it is 09:35 < bridge> or no? 09:35 < bridge> 3:1 mostly 09:35 < bridge> some can go up to 4 09:35 < bridge> but mostly 3 09:35 < bridge> It's a annoying design imo 09:35 < bridge> but other languages are hurt more than chinese right? 09:35 < bridge> like russian? 09:36 < bridge> yes 09:36 < bridge> but i'm not even russian how am i gonna assess how useful my implementation is 09:36 < bridge> 😬 09:37 < bridge> Fwiw I vaguely remember the unicode consortium actually suggesting a byte limit 09:37 < bridge> if cryllics or linguistic people wants to pick up that PR they can do that. 09:37 < bridge> i don't even remember why i wanted to implement this. it was like 8 years ago when i first complained about it 09:37 < bridge> With which reasoning? 09:37 < bridge> i just remembered i wanted it but it seems like a wrong motive 09:38 < bridge> so i dropped it 09:38 < bridge> I’ll try to dig it back up 09:39 < bridge> одааа колобки одаааа 09:40 < bridge> I mean if traffic is important or similar OK. Utf8 hides this information. But considering a code point is only Max four bytes rn.I dunno 09:40 < bridge> i made this lol 09:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325745837392793660/image.png?ex=677ce886&is=677b9706&hm=31fded501d14febebc162db2b3badd141418c750744e1356cf3082f34d303315& 09:40 < bridge> Or six bytes 09:41 < bridge> What is that 09:41 < bridge> In game? 09:41 < bridge> just a website 09:42 < bridge> I guess heinrich never provided a source for it 09:42 < bridge> He was about graphemes 09:43 < bridge> 0.7 has a codepoint limit, not a grapheme limit 09:43 < bridge> But again graphemes are a completely different complexity 09:43 < bridge> That is what he dislikes 09:44 < bridge> You think the consortium suggests grapheme limits instead? 09:44 < bridge> Yes 09:44 < bridge> I don't see why graphemes are significantly better than codepoints 09:44 < bridge> anyone knows what the white styling is in a html element :justatest: 09:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325746855518273596/image.png?ex=677ce979&is=677b97f9&hm=8bc529938a35ef79f1ddcae2996eac9ef7d7e28ab0442a0b5ed159818113cdeb& 09:44 < bridge> I doubt that, on the grounds that you and the consortium almost always disagree 09:45 < bridge> Well he wants both 09:45 < bridge> what is the motivation for using graphemes? 09:45 < bridge> hello text encoding wizards 09:45 < bridge> Codepoints are not “characters” 09:45 < bridge> but in which cases does that matter 09:46 < bridge> There is no intuitive meaning to a “codepoint” especially when combining characters are involved 09:46 < bridge> i mean graphemes are not "characters" either 09:46 < bridge> But then again many characters also additionally exist as code point 09:46 < bridge> Like é 09:46 < bridge> Single point 09:46 < bridge> They are atleast closer to what a naive person might call a “character” 09:47 < bridge> maybe it's the outline on focus? 09:47 < bridge> codepoints seem very close to me, a naive person 09:47 < bridge> The problem is simply the complexity of this 09:47 < bridge> still i think heinrich is more worried about sane limited than graphemes vs codepoints at the end of the PR comments 09:47 < bridge> You know have literally slices of strings as characters 09:48 < bridge> I first want to see an actual issue. Rendering is none 09:48 < bridge> but i do agree if we are sticking to 15 instead of 16, might as well get an additional limit 09:48 < bridge> cuz it is already complex in that regard 09:49 < bridge> But here you want complexity again 09:49 < bridge> i don't 09:49 < bridge> cuz i ain't making it 09:49 < bridge> lol 09:49 < bridge> :lol: 09:49 < bridge> or if heinrich could tell me exactly what to do i can probably do it. 09:49 < bridge> The actual issue is that cyrillic and chinese gets less visible graphemes, right? 09:50 < bridge> So effectively shorter names 09:50 < bridge> chinese is 1 charecter per grapheme so they get tons afaik 09:50 < bridge> the pr solves that, the current issue is chinese has too much infomation density to be allowed for 16 chinese characters 09:50 < bridge> It’s many bytes per chinese character, so currently the bytelimit disfavors them 09:50 < bridge> like the current issue of that PR 09:50 < bridge> I mean with grapheme limit 09:51 < bridge> unless you suggest also a byte limit between 16 and 64? 09:51 < bridge> Hm, is that really that big an issue? 09:52 < bridge> i don't really know, but heinrich want me to think about it and i can't 09:52 < bridge> too tired 09:52 < bridge> I’d be more concerned about adding 48 entire bytes to make it work 😄 09:53 < bridge> What about Turkish btw 09:53 < ChillerDragon> what does the word flock mean in the ddrace team context? 09:53 < bridge> in networking traffics or something else 09:53 < bridge> Shouldn't you know 09:53 < bridge> t0? 09:53 < bridge> Our alphabet is just Latin1, so no issue 09:53 < bridge> Oh k 09:53 < ChillerDragon> whats the reasoning behind naming t0 flock? 09:53 < bridge> Troll 09:53 < bridge> you can make only 1 t0 09:54 < bridge> I guess perhaps `ğ` may be made up of 2 bytes 09:54 < bridge> seems reasonable to me 09:54 < ChillerDragon> i dont understand the word 09:54 < bridge> ~~we can't call it team because there is no teamwork~~ 09:54 < ChillerDragon> is it force lock? 09:54 < bridge> it's just flock 09:54 < bridge> a english word 09:54 < bridge> flock of birds 09:54 < bridge> yes 09:54 < ChillerDragon> a 09:54 < bridge> just like a random group 09:54 < bridge> of things 09:54 < ChillerDragon> language skill issues 09:54 < ChillerDragon> noun 09:54 < bridge> Yeah ğ is from Latin Extended-A 09:54 < ChillerDragon> A tuft, as of fiber or hair. 09:55 < ChillerDragon> Waste wool or cotton used for stuffing furniture and mattresses. 09:55 < bridge> if you say flock without context I think most english speakers thing of birds 09:55 < bridge> if you say flock without context I think most english speakers think of birds 09:55 < ChillerDragon> i see 09:55 < ChillerDragon> i dont speak english 09:55 < ChillerDragon> so its regular t0 or some t0 mode? 09:56 < ChillerDragon> imo that variable/method could use a comment 09:56 < bridge> i think in kingdom come deliverance i've heard the character saying flock for people 09:56 < bridge> just regular t0 09:56 < bridge> I thought it was for t0 mode 09:56 < bridge> really? 09:56 < ChillerDragon> yea totally not confusing 09:56 < bridge> i remember seeing the flock word in source code and we didn't have t0mode yet 09:56 < bridge> maybe they adopted it 09:57 < bridge> might be both in that case 09:57 < bridge> ``` Console()->Register("team0mode", "?i['0'|'1']", CFGFLAG_CHAT | CFGFLAG_SERVER, ConTeam0Mode, this, "Toggle team between team 0 and team mode. This mode will make your team behave like team 0."); 09:57 < bridge> ``` 09:58 < bridge> i mean if you are purely coding the enum is just 0 09:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325750263776022538/image.png?ex=677ceca6&is=677b9b26&hm=b25a4c9b31ae01a11ef708bfd852eb1888bca489cf6a09ab4dad8c8f9ee7f0b9& 09:58 < ChillerDragon> https://github.com/ddnet/ddnet/blob/e55cf2967faffa9ab79fc95fa53b870dd4fbc764/src/game/server/teams.h#L104 09:58 < ChillerDragon> careful why? 09:59 < bridge> no idea 09:59 < bridge> https://github.com/ddnet/ddnet/commit/5db7748af461e6b414a98438aab63936eaa997d8 09:59 < ChillerDragon> i am proper scared now 10:00 < ChillerDragon> warning from 2010 10:00 < bridge> it got upgraded here 10:00 < bridge> https://github.com/ddnet/ddnet/commit/88b65b6def620a2f5cf576fb16d024113caa4459 10:00 < ChillerDragon> @btd why careful 10:01 < bridge> ```cpp 10:01 < bridge> // Important to only set a new team here, don't remove from an existing 10:01 < bridge> // team since a newly joined player does by definition not have an old team 10:01 < bridge> // to remove from. Doing so would destroy the count in m_MembersCount. 10:01 < bridge> ``` 10:01 < ChillerDragon> nice find 10:01 < bridge> it's in that second commit I linked 10:07 < bridge> btw why is W so wide in our font 10:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325752607737774192/image.png?ex=677ceed4&is=677b9d54&hm=8c0714b9d62f75ae87a12fe3384458ff520365986dae852f0a9ec42cb4697e5a& 10:08 < bridge> we do use a ultra compressed font for japanese just to make buttons fit lol 10:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325752871916146768/image.png?ex=677cef13&is=677b9d93&hm=fc642cb7656f5604946e21980a16447b0a808377df398e04e85d0ab8a9d49700& 10:13 < bridge> old but still very funny 10:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325754010048794697/unknown.png?ex=677cf023&is=677b9ea3&hm=0505175875816bcfeac5eeefeef584380219d85a56c47fe305c67dfeb8e295cc& 10:13 < bridge> the biggest nameplate you can make 10:15 < bridge> I did think if english can be that big it wouldn't be a problem as long as the nameplate can't get bigger than english when i made that PR. 10:20 < bridge> if u ever test ui, use W 10:20 < bridge> the ultimate weapon 10:25 < bridge> There are much wider characters that would also cause names to be very long if we support many unicode codepoints, e.g. `⸻` 10:25 < bridge> does anyone understand how adding this ``if`` causes makes the assert stop falsely flagging? 10:25 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325757074650566678/image.png?ex=677cf2fd&is=677ba17d&hm=c632492976d39a344abbcd61544366d6aacb23fe51c6729fa57d64cc1b49dcec& 10:25 < bridge> does anyone understand how adding this ``if`` causes makes the assert to stop falsely flagging? 10:25 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325757074650566678/image.png?ex=677cf2fd&is=677ba17d&hm=c632492976d39a344abbcd61544366d6aacb23fe51c6729fa57d64cc1b49dcec& 10:25 < bridge> does anyone understand how adding this ``if`` causes the assert to stop falsely flagging? 10:25 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325757074650566678/image.png?ex=677cf2fd&is=677ba17d&hm=c632492976d39a344abbcd61544366d6aacb23fe51c6729fa57d64cc1b49dcec& 10:26 < bridge> The assert fails when the check is false. You excluded the case where the check can be false 10:26 < bridge> oh it fails on false? 10:26 < bridge> yeah, that's why you see `dbg_assert(false, "message")` in cases that always fail 10:27 < bridge> that is very true 10:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325757522144919574/image.png?ex=677cf368&is=677ba1e8&hm=1845121332cc422ec1250f28ed203e625add2d32afa053591e56aa0b21917e88& 10:27 < bridge> xd 10:27 < bridge> that's so confusing 10:29 < bridge> this assert doesn't make any sense 10:31 < bridge> all of the path types are https://cdn.discordapp.com/attachments/293493549758939136/1325758526227873792/image.png?ex=677cf458&is=677ba2d8&hm=3bd8a207f4db4862f28428601e236709eb9749b48e1eaa6e8f69b70b8eacebd8& 10:31 < bridge> it doesnt, except whoever did that feared that the text is evaluated directly 10:31 < bridge> no, paths 0 and above are the user-defined paths 10:31 < bridge> negative paths are special values 10:32 < bridge> I guess it would be more correct to only allow creating folders in `TYPE_SAVE` though 10:33 < bridge> ok but CreateFolder calls GetPath after doing an assert which makes it impossible to pass TYPE_ABSOLUTE to it 10:33 < bridge> ```cpp 10:33 < bridge> bool CreateFolder(const char *pFoldername, int Type) override 10:33 < bridge> { 10:33 < bridge> if(Type >= TYPE_SAVE && Type < m_NumPaths) // How does this do anything 10:33 < bridge> dbg_assert(Type >= TYPE_SAVE && Type < m_NumPaths, "Type invalid"); 10:33 < bridge> 10:33 < bridge> char aBuffer[IO_MAX_PATH_LENGTH]; 10:33 < bridge> GetPath(Type, pFoldername, aBuffer, sizeof(aBuffer)); 10:33 < bridge> 10:33 < bridge> bool Success = !fs_makedir(aBuffer); 10:33 < bridge> if(!Success) 10:33 < bridge> dbg_msg("storage", "failed to create folder: %s", aBuffer); 10:33 < bridge> return Success; 10:33 < bridge> } 10:33 < bridge> 10:33 < bridge> ``` 10:33 < bridge> 10:33 < bridge> ```cpp 10:33 < bridge> const char *GetPath(int Type, const char *pDir, char *pBuffer, unsigned BufferSize) 10:33 < bridge> { 10:33 < bridge> if(Type == TYPE_ABSOLUTE) 10:33 < bridge> { 10:34 < bridge> str_copy(pBuffer, pDir, BufferSize); 10:34 < bridge> } 10:34 < bridge> else 10:34 < bridge> { 10:34 < bridge> str_format(pBuffer, BufferSize, "%s%s%s", m_aaStoragePaths[Type], !m_aaStoragePaths[Type][0] ? "" : "/", pDir); 10:34 < bridge> } 10:34 < bridge> return pBuffer; 10:34 < bridge> } 10:34 < bridge> it works fine without the assert 10:34 < bridge> wont the assert just never return false if it is reached 10:34 < bridge> or did you add that in 10:34 < bridge> yeah I figured that already 10:34 < bridge> The assert should also allow `TYPE_ABSOLUTE` maybe, since creating folders in absolute locations might be wanted 10:35 < bridge> The asserts are there to ensure the functions are not used in an unintended way 10:35 < bridge> But any other storage type is not supported by the `GetPath` function 10:35 < bridge> that's true 10:35 < bridge> If you passed `TYPE_ALL` is would result in an out-of-bounds access 10:44 < bridge> what did you mean by this? what text 10:48 < bridge> the assert text 10:48 < bridge> you mean "dbg_assert"? 10:49 < bridge> i guess your question was, what could be reasons a if was added? 10:49 < bridge> I added the if 10:49 < bridge> it was me 10:49 < bridge> 😮 10:49 < bridge> 60 seconds before I posted the image lol 10:50 < bridge> ah yeah 10:50 < bridge> it never occured to me that the assert fails on false because that seems insane 10:50 < bridge> i think i missread your initial sentence lol 10:52 < bridge> ah I guess it's called assert because you assert a truth 10:52 < bridge> ok nvm 10:54 < bridge> honestly I probably knew that but I was so confused by the fact that TYPE_ABSOLUTE should work that I convinced myself it should fail on true lol 11:56 < bridge> I'm curious who is that 11:56 < bridge> I'm curious about who is that 12:11 < bridge> @tsfreddie Btw without discussing it again, I am really just curious about your opinion. 12:11 < bridge> 12:11 < bridge> Do you think instead of using the zoom level you could also simply use the viewport width & height to calculate the zoom. 12:11 < bridge> 12:11 < bridge> e.g. let's say you have a viewport of 800x600 12:11 < bridge> 12:11 < bridge> and the other player has 1920x1080. 12:11 < bridge> 12:11 < bridge> Then the client itself can guess based on this info how a zoom level would look like so that you, locally, see _at least_ what the other person sees. 12:11 < bridge> 12:11 < bridge> 800x600 by default sees more in height, and the local client could adjust for that on 1920x1080 12:11 < bridge> i hope you understand what i mean 12:12 < bridge> i don't know really 12:13 < bridge> there is info available in the server, then i may decide to use that info. that's usually how i do things. probably not a great way to approach making features. 12:14 < bridge> if you want to implement a viewport based one i don't think i would have a problem with it 12:14 < bridge> yeah i am just wondering about, if i'd port that feature if i'd use the w&h which is already sent to server rn. 12:14 < bridge> 12:14 < bridge> And since skeith was about he wants to see what the other sees it would directly also _really_ respect what the other person sees 😄 12:14 < bridge> nah nah, i don't interfer with that feature 12:14 < bridge> yours works 12:14 < bridge> it's just a different approach 12:15 < bridge> i don't know how to calculate that too. that's also a problem 12:17 < bridge> ye i'm just saying if anyone decide to do it some other way, i'm willing to work together or just hand it to them. although at this point it is probably too late for me to care about it. 12:18 < bridge> whaat, you sound so depressed. I think at least for demos this feature is quite cool 😄 12:19 < bridge> i mean i already poured too much effort into it and i'm a bit tired. if it is early on i could still adapt, but for now i just want to fix bugs 12:19 < bridge> not like i don't care about the features anymore 12:19 < bridge> 🫠 12:20 < bridge> but again, if anyone want to nuke it and start over i'm fine with it, it might be hard to get me motivated enough to figure out all the calculations and stuff all over again. 12:20 < bridge> if anyone want to nuke it and start over i'm fine with it, it just might be hard to get me motivated enough to figure out all the calculations and stuff all over again. 12:20 < bridge> simply put if you have a problem with it like three weeks ago. it can totally be done in respect to viewports 12:21 < bridge> 12:22 < bridge> 3 weeks ago i was tryharding to fix ddnet-rs shit so the release on github is not a total catastrohpy xD 12:22 < bridge> 3 weeks ago i was tryharding to fix ddnet-rs shit so the release on github is not a total catastrophe xD 12:22 < bridge> I can help you do the calculations if those are tiring you out 12:22 < bridge> It is pretty simple geometry... 12:23 < bridge> It seriously shouldn't sound like bitching around. I wanted your opinion since you worked on it and maybe have some ideas I cannot come up with in 5 seconds 12:23 < bridge> just pr it 12:24 < bridge> i already switched to working on my websites now. unless it is a bug i probably won't touch it much. 12:25 < bridge> no, i think that is a pretty solid idea. 12:25 < bridge> Love ya Fred :deen_star: 12:26 < bridge> plus we got more time i think. i can redo the feature in 19.0 if we removed it from 18.9 12:26 < bridge> which is a plan, but i'm not exactly sure how we are doing it yet 12:26 < bridge> which is the current plan, but i'm not exactly sure how we are doing it yet 12:26 < bridge> but maybe not this week 12:49 < bridge> can you do that in ddnet's code btw? i do want to try it. 12:50 < bridge> is it like unscale the scale factor, fit a rect in another rect then rescale the scale factor? 12:51 < bridge> I'm not aware of the scales you're using to begin with, but I'd simply approach it with pen and paper, make a drawing 12:52 < bridge> I'm not aware of the scale factors you're using to begin with, but I'd simply approach it with pen and paper, make a drawing 12:52 < bridge> i mean ddnet has a resolution scaling that does pretty weird things 12:52 < bridge> i think 12:55 < bridge> also show distance is a sent little bit delayed than zoom when zooming in. might be negligible but when people is zooming in with smooth zoom on the spectator will just see a super quick zoom from the furthest to the closest in one step instead of multiple steps. 12:55 < bridge> we could adjust the send rate on client side for show distance. should be pretty simple 12:57 < bridge> that's currently the two point i would specifically check if i were to try to implement it that way. 12:57 < bridge> that's currently the two points i would specifically check if i were to try to implement it that way. 12:58 < bridge> dnycam settings should be universal regardless zoom i think? not entirely sure. i could double check that next week. 12:59 < bridge> Why is it being sent at a fixed rate in the first place? Shouldn't it get sent on change? 13:00 < bridge> it is sent on chnage 13:00 < bridge> but smooth zoom 13:00 < bridge> prevented it from senting the instant it changes 13:00 < bridge> ah 13:00 < bridge> client need time to fully zoom in to target so it just tell the server that it zoomed a bit later 13:00 < bridge> the zoom info for telecursor is sent as soon as it changes 13:01 < bridge> we can just make client send it a bit more frequent rather than when the smoothing completely stops, which can take quite a while if you zoom multiple steps in 13:01 < bridge> I just learned about `cl_limit_max_zoom_level` hehe 13:02 < bridge> wait what I've been lied to 13:02 < bridge> setting it to 0 I'm still limited 13:03 < bridge> I guess it's about zooming out instead of in? 13:03 < bridge> there is a min one 13:03 < bridge> i think 13:03 < bridge> ah apparently not 13:04 < bridge> why do you want to zoom all the way in tho 13:08 < bridge> funny 13:11 < bridge> this is a no funny zone 13:13 < bridge> @murpi 13:13 < bridge> how to apeal 13:13 < bridge> #✉-create-a-ticket 14:46 < bridge> wtf xD 14:46 < bridge> 14:46 < bridge> for whatever reason i upstreamed a ultra hd version of dm1 on ddnet-rs. 14:46 < bridge> 14:46 < bridge> Where do I even have that from lol 14:46 < bridge> :justatest: 15:38 < bridge> btw whoever owns the gh tool can also disable the log if thats too spammy 15:53 < bridge> does every ddnet feature have to have backwards compatibility? is there a day i can look forward to where updates are forced 15:55 < bridge> you could contribute to twgame, so ddnet-rs has ddnet physics support 😏 15:55 < bridge> yeah yeah i stop xD 15:56 < bridge> idk rust 15:57 < bridge> I also didn't know 2 years ago 15:57 < bridge> Jupstar imo if you start to use repository prefixes what you probably want is a Organisation 15:57 < bridge> I asked admin whether I should contribute it to ddnet org 15:58 < bridge> also these prefixes are invisible to the main repo, since you can name submodules as u want 15:59 < bridge> Yea I also liked ddnet-rs in ddnet but if you need multiple repos it will be harder for the user to browse the org if some are c++ and some are rust 15:59 < bridge> i think that is kinda a non issue tbh 15:59 < bridge> most ppl land on github.com/ddnet/ddnet 15:59 < bridge> or github.com/ddnet/ddnet-rs 16:00 < bridge> or do you often casually drop on ddnet-scripts 16:00 < bridge> xD 16:00 < bridge> i mean you 16:00 < bridge> OFC 16:00 < bridge> xD 16:03 < bridge> hehe 16:55 < bridge> 🖐️ 16:58 < bridge> Hi, there has probably been a question like this before, but will there ever be a translation of the website itself? I'm not talking about the wiki or the client, but DDNet website. 17:00 < bridge> nothing like that is planned 17:01 < bridge> the website would require quite a bit of rewrite 17:01 < bridge> you can usually also translate websites using a translator 17:01 < bridge> <99505> Why there is no translation for ddnet in-game chat? 17:02 < bridge> Because using translation apis costs money 17:02 < bridge> what question is that lol 17:02 < bridge> how many games u have seen with such a feature 17:03 < bridge> No no, I understand English and have no problem with it. But I'm just translating the wiki into Polish at the moment, and I was wondering that it would be interesting to translate the website as well. 17:03 < bridge> I see, the website is pretty old and not really designed for multi languages ^^ 17:04 < bridge> Alright cool, thanks for the answer 17:04 < bridge> roblox heh 17:04 < bridge> I can't think of any other game 17:06 < bridge> well its really useless 17:06 < bridge> just learn a language 17:06 < bridge> way easier 17:41 < bridge> <0xdeen> you might be able to use an open llm and include it in the client to do translations on device 17:56 < bridge> @0xdeen Can you give @jupeyy_keks or me access to the ddnet-rs* repos so we can change the settings? 19:30 < ChillerDragon> freddie you did the whole cursor thing right? 19:31 < ChillerDragon> its crazy seeing ppl use dyn cam 19:31 < ChillerDragon> dude ctf/ictf pros kept talking about seeing dyn cam in spec and demos in 2017 i remember they finally got what they asked for 19:33 < ChillerDragon> feels like having your pc remote controlled i keep thinking i am in game right now 19:50 < bridge> @jupeyy_keks increase merge queue :kekw: 19:51 < bridge> @jupeyy_keks increase merge queue timer or something :kekw: - damn spammer 19:51 < bridge> if there would be a merge queue i could stop hving to look at github all the time 19:51 < bridge> and would spam even more 19:51 < bridge> :lol: 19:51 < bridge> by the way - for modding 19:51 < bridge> 19:51 < bridge> upstream changes to vanilla code (exposing things to functions and whatnot) are generally accepted, but not the modding code itself - did i get that right? 19:52 < bridge> by the way - for modding 19:52 < bridge> 19:52 < bridge> upstream changes to vanilla code (exposing things to/as functions and whatnot) are generally accepted, but not the modding code itself - did i get that right? 19:52 < bridge> yes that would be the idea of the patching approach 19:52 < bridge> well depends on how much it bloats the code ig 19:52 < bridge> but tbh, i don't find my vanilla code that good xD 19:52 < bridge> it's kinda hacked in whenever i was _not_ demotivated 19:52 < bridge> :kek: - i brainstormed about both zombies and battlefield, and atleast for battlefield i think i would need to change quite a bit 19:53 < bridge> you can also mix patch changes with vanilla crate changes.. that's what i did too kind 19:53 < bridge> then u can see how far u get 19:54 < bridge> yee - for now i'll do my changes upstream and decide on the get go then i guess 19:54 < bridge> then i'll see if ddnet-rs is worthy of my rust code (it's worse than gerdoes) 19:54 < bridge> then i'll see if ddnet-rs is worthy of my rust code (it's worse than gerdoes in terms of readability) 19:54 < bridge> but arcti smth also made a fair point. rebasing is probs not _lot_ harder anyway 19:57 < bridge> i like the moddability aspect, if one person exposes type X for mod X 19:57 < bridge> a second person can use type X for mod Y 19:57 < bridge> i like the moddability aspect, if one person exposes type X for mod X properly upstream 19:57 < bridge> a second person can use type X for mod Y 19:57 < bridge> i like the moddability aspect, if one person exposes type X for mod X properly upstream 19:57 < bridge> a second person can use type X for mod Y more easily 19:57 < bridge> can't wait for the first p2w city mod in ddnet-rs :kekw: 19:58 < bridge> 😬 20:22 < bridge> dude makes PR, immediatly adds it to queue, queue pops and adds it, makes PR again 20:22 < bridge> :KEKhands: 20:28 < bridge> whole pr for a single commit 20:28 < bridge> poor github actions 20:53 < bridge> yes but now i am sad, bcs i found yet another bug in a dep xd 20:53 < bridge> i hate bug reporting 20:53 < bridge> so many oss maintainers don't even try when i tell them how to 100% reproduce the issue xD 21:19 < bridge> dude this is so fun 21:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325921714504466522/2025-01-06_15-17-30.mp4?ex=677d8c53&is=677c3ad3&hm=187b120627295801b2dd4c64b3bb26c993bc94ee554ac77a9bd22ce538c22da6& 21:19 < bridge> its so broken and barren 21:22 < bridge> vanilla has no freeze 21:24 < bridge> the cry 😂 21:24 < bridge> that's indeed funniest 21:24 < bridge> such a noby feature 21:25 < bridge> i am 100% sure its because theres no cooldown 21:26 < bridge> oh yea you still cant bind wheel_up and wheel_down to anything yet 21:33 < bridge> give an example 21:33 < bridge> weapon swtich is bound to it 21:34 < bridge> <99505> Yeah I know, it wouldn't be a problem to add 21:34 < bridge> <99505> But why it is not there yet? 21:34 < bridge> <99505> Is there any reason? 21:35 < bridge> when i try to change it it just doesnt recognise my scroll wheel 21:35 < bridge> change what 21:35 < bridge> ^ 21:35 < bridge> ^^ 21:36 < bridge> are you a cop 21:36 < bridge> i was trying to change my weapon switch control 21:36 < bridge> wtf is that dude xD 21:36 < bridge> oh my fucking god 21:37 < bridge> firstly: performance - having to run an LLM to work on all our servers is costly 21:37 < bridge> secondly: money - just using a barebones LLM is not only bad, but unusable for most languages, so we'd need a good model specifically designed for that. 21:37 < bridge> third reason: there are/were clients which had ingame translations, they were bad because they used a free translation API. the good ones (e.g deepl) cost a lot of money and are bound to some restriction (e.g a million tokens a month) - which would fill up within ~5 minutes if ran on all servers 21:37 < bridge> this shit 21:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325926222634684527/image.png?ex=677d9085&is=677c3f05&hm=f2527d1c4eb325aeec4b9a2449f992fd834773339f2069bae214e5013d5c7dd2& 21:37 < bridge> i was trying to change these 21:37 < bridge> firstly: performance - having to run an LLM to work on all our servers is costly in terms of hardware 21:37 < bridge> secondly: money - just using a barebones LLM is not only bad, but unusable for most languages, so we'd need a good model specifically designed for that. 21:37 < bridge> third reason: there are/were clients which had ingame translations, they were bad because they used a free translation API. the good ones (e.g deepl) cost a lot of money and are bound to some restriction (e.g a million tokens a month) - which would fill up within ~5 minutes if ran on all servers 21:37 < bridge> firstly: performance - having to run an LLM to work on all our servers is costly in terms of hardware, storage and bandwidth 21:37 < bridge> secondly: money - just using a barebones LLM is not only bad, but unusable for most languages, so we'd need a good model specifically designed for that. 21:37 < bridge> third reason: there are/were clients which had ingame translations, they were bad because they used a free translation API. the good ones (e.g deepl) cost a lot of money and are bound to some restriction (e.g a million tokens a month) - which would fill up within ~5 minutes if ran on all servers 21:38 < bridge> firstly: performance - having to run an LLM to work on all our servers is costly in terms of hardware, storage and bandwidth 21:38 < bridge> secondly: money - just using a barebones LLM is not only bad, but unusable for most languages, so we'd need a good model specifically designed for that, which are often pricy aswell. 21:38 < bridge> third reason: there are/were clients which had ingame translations, they were bad because they used a free translation API. the good ones (e.g deepl) cost a lot of money and are bound to some restriction (e.g a million tokens a month) - which would fill up within ~5 minutes if ran on all servers 21:42 < bridge> u mean the UI does not regocnize the wheel 21:42 < bridge> that's true 21:42 < bridge> use f1 xd 21:42 < bridge> ok programmer 21:44 < bridge> <99505> I meant more like local, maybe even offline translating lib 21:44 < bridge> solly was working on implementing libretranslate into tclient 21:44 < bridge> <99505> Does not have to be deepl quality, but just to translate so you could figure out what that means 21:44 < bridge> oh yea i cant build ddnet-rs on my pc because "is `cmake` not installed?" (it is but i think its on a different drive so) 21:44 < bridge> i tried libretranslate and almost puked when translating german to english/japanese 21:44 < bridge> japanese is hard 21:45 < bridge> ok but all the real ones use console for every bind 21:45 < bridge> ok but i dont care 21:45 < bridge> like genuinely it has been months since I opened the keybinds panel 21:45 < bridge> i use the keybinds panel often whatahell 21:45 < bridge> but users could pay and provide their own api key 21:45 < bridge> for a better service 21:45 < bridge> if you're gonna have a keybinds panel, rather have it work or just remove it 21:45 < bridge> But why? Aren't all your common normal binds basically the same all the time? 21:45 < bridge> ah well that's good yea - i intended to add that to my dd-launcher project using google/deepl translate 21:46 < bridge> i added to list, but that settings page is not important to me rn 😄 21:46 < bridge> I rarely change anything but somewhat special binds anyways, so F1 is the default for me 21:46 < bridge> zoom in zoom out and normal zoom are mousewheel in out and b - having to do that over f1 is annoying, so i just use the settings tab 21:46 < bridge> well im gonna see what i can do but uighhh 21:47 < bridge> `audiopus_sys v0.2.2` wont workkkkk 21:48 < bridge> u want to self compile? 21:48 < bridge> yeah i forked it 21:48 < bridge> try to add ` --no-default-features` 21:48 < bridge> i can't get this to work on msvc 21:48 < bridge> only mingw 21:48 < bridge> yeah windows do be like that - it works without with GNU, but msvc is finnicky 21:49 < bridge> yeah windows do be like that - it works without on GNU, but msvc is finnicky 21:49 < bridge> the stupid c deps 😬 21:49 < bridge> sadly there is no pure rust opus enc&decoder 21:51 < bridge> <99505> Its some option too, I believe basic tranation is achievable offline though 21:52 < bridge> yeah - but i'd personally dislike some almost unusable translator integrated. someone once wrote a good python script that works via FIFO that just pulls chat messages and pipes them back using echo's 21:52 < bridge> yeah - but i'd personally dislike some almost unusable translator integrated. someone once wrote a good python script that works via FIFO that just pulls chat messages, sends them through an API (e.g it was deepl or google) and pipes them back using echo's 21:52 < bridge> yeah - but i'd personally dislike some almost unusable translator integrated. someone once wrote a good python script that works via FIFO that just pulls chat messages, sends them through an API (iirc it was deepl or google) and pipes them back using echo's 21:55 < bridge> @robyt3 Am I doing something wrong? D: 21:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325930694857457775/skill_issue.mp4?ex=677d94b0&is=677c4330&hm=8e7c750b5cec37b71e5efd068950b6812c91cf7873b5043991b41dd0e7bfa1fb& 21:55 < bridge> The in game chat is super repetitive. You basically only need a hand full of key words to follow most conversations. 21:56 < bridge> Just learn the most used words in the language you need or even let your client do the hardcodet translation of them and you can understand a lot. 21:57 < bridge> Things like: back, help, freeze, block, grenade, rifle, hammer, hammer fly, hook fly and so on 21:58 < bridge> Things like: idiot, you asshole, kill yourself, etc. 21:58 < bridge> Yes lots of insults. But not knowing them you don’t miss much tbh 21:59 < bridge> Nice bg music 21:59 < bridge> fun how instantly recognizable that band is 22:00 < bridge> I learned the Cyrillic alphabet for reading the teeworlds chat and it works surprisingly well. It’s basically all the English gaming words just literally typed out in Cyrillic. 22:01 < bridge> yeah simply knowing cyrillic helps me a lot 22:01 < bridge> oh. oh yeah thats why i hate rust. 22:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325932335790817290/image.png?ex=677d9637&is=677c44b7&hm=9c0353b40953de2a15d13e4fdbc412c8ac5f43042d7ced4d338fb810599b0091& 22:02 < bridge> because of your inline type hints? 22:02 < bridge> I always do a double take when someone *doesn't* understand something simple written in cyrillic 22:02 < bridge> wait those are hints? 22:02 < bridge> ok i need to remember why i wanted to make a branch in the first place 22:03 < bridge> What’s a „double take“ ? 22:03 < bridge> > A delayed reaction to an unusual remark or circumstance, often used as a comic device 22:04 < bridge> im gonna do a troll pr 22:04 < bridge> 🧌 22:05 < bridge> Yeah I actually didn't know the definition so I used it a bit wrong 22:06 < bridge> Definitions are cursed 22:06 < bridge> The first one never fits 22:06 < bridge> but yeah my immediate reaction is "of course you can read that" and it takes my brain a second to process that most people in fact can *not* read that 22:06 < bridge> but yeah my immediate reaction is "of course you can read that" and it takes my brain a second to process that most people in fact can *not* read cyrillic 22:07 < bridge> Im still proud every time I decipher successfully that some 12 tiktok enjoyer accused me of botting in Russian 22:07 < bridge> Im still proud every time I decipher successfully that some 12 yo tiktok enjoyer accused me of botting in Russian 22:07 < bridge> a lot of people around me IRL know how to read cyrillic, hence my delusion 22:08 < bridge> How did that happen? 22:08 < bridge> Where do you live? 22:08 < bridge> Southeast Finland 22:08 < bridge> How is Cyrillic a thing there? 22:08 < bridge> home town is 69km from the Russian border crossing 22:08 < bridge> by road 22:09 < bridge> And the letters leak over the border or what? 22:09 < bridge> I studied Russian it in school, some friends did too, my mother is Russian 22:09 < bridge> Do you have Cyrillic signs or lots of Russian speaking people around? 22:09 < bridge> and yeah we have some Cyrillic signage around there 22:10 < bridge> Nice 22:10 < bridge> I studied Russian in school, some friends did too, my mother is Russian 22:11 < bridge> so my entire immediate family can read cyrillic, as can some of my old school friends 22:11 < bridge> and it's not all *that* uncommon among educated eastern Finnish people in general, since it's such an easy thing to learn 22:11 < bridge> Leak 22:13 < bridge> And you'd expect a lot of math nerds to be able to (slowly) read (ancient) Greek words 22:22 < bridge> @jupeyy_keks ddnet-rs logo 22:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325937636380250264/image.png?ex=677d9b27&is=677c49a7&hm=046c6e22f90c1d14c745e433a468bb37bff35c12b6a804037774aeafa08b29f7& 22:22 < bridge> xD 22:23 < bridge> hot 22:29 < bridge> is that visual studio btw? 22:29 < bridge> 22:29 < bridge> didnt know they have rust support lol 22:29 < bridge> almost looks like vscode nowadays xd 22:31 < bridge> how to trun on render open gl 3 from console? 22:32 < bridge> how to turn on render open gl 3 from console? 22:32 < bridge> vscode 22:33 < bridge> so why did you clone with visual studio xd 22:33 < bridge> gfx_gl_major 3 22:33 < bridge> 22:33 < bridge> then restart 22:33 < bridge> IKR XD 22:33 < bridge> such a troll 22:34 < bridge> Maybe because it's an unused tile? I just copy a random selection of game tiles 22:36 < bridge> I opened a random map and selected game tiles there, still nothing :\ 22:36 < bridge> Did you confirm that ASAN/UBSAN actually work? 22:45 < bridge> Idk how to check that but I entered commands from https://github.com/ddnet/ddnet?tab=readme-ov-file#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck and still nothing 23:19 < bridge> Obvious solution: crab tee 23:21 < bridge> i'd prefer nothing with rust xD 23:21 < bridge> the rust logos aren't really the yellow from the egg 23:22 < bridge> 😏 23:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1325952540986314892/crab.png?ex=677da908&is=677c5788&hm=1d3addd709c5e82c0c38a4ee6fc474f92e1c4e651dec79712e963e966239aded&