05:35 < bridge> suggestion: add more emotes like the once from twitch.tv to the discord group? like widepeepoHappy, Pogu , monkaW etc etc...? - https://betterttv.com/emotes/top 06:21 < bridge> who did this 06:21 < bridge> gitg blam 11:31 < bridge> Readability is a significantly more relevant concern than having the most compact/abstract code. The original code is easy to read. Using several macros is not. 11:31 < bridge> 11:31 < bridge> This also makes it complicated to change the code later, because it confines everything to strict component and sub-component classes, which breaks down if you try to do anything else. 11:35 < bridge> hello fellow devs 11:36 < bridge> hello php devs and others 11:37 < bridge> anything else is rare and still can be done otherwise 11:37 < bridge> using cpp wizardry the initalization of the componentinterface is also done 11:37 < bridge> uhmmm, i disagree with the "most compact abstratc code" bit, i would call it reducing repetition, its not very abstract and i think reducing repetition is important cuz its annoying to keep 4 things updated (which would have to be the case without the macro), however youre a maintainer so .---. 11:38 < bridge> > Readability is a significantly more relevant concern than having the most compact/abstract code. The original code is easy to read. Using several macros is not. 11:38 < bridge> agree fully 11:38 < bridge> (same thing in rust, avoid macros if possible) 11:39 < bridge> (and avoid relying too much on traits if possible, i guess in c++ it would be interfaces or abstract classes xd but idk if the same applies) 11:40 < bridge> That's already a lot of abstraction. The repetion is just adding like 5 lines of code in specific places when you add a new component, which should only happen rarely. Whereas this code is read all the time. If it takes 1 second longer to read and understand this code, it becomes a net loss of time quickly. 11:41 < bridge> i add components quite frequently 👀 11:41 < bridge> https://ntietz.com/blog/the-most-important-goal-in-designing-software-is-understandability/ 11:41 < bridge> Not nearly as often as you read the code, unless you deliver entirely untested code 11:41 < bridge> idk wym by that 11:42 < bridge> i add the component in the 3 places and never need to look back 11:42 < bridge> yeah, that's a simple change, so saving you a few seconds to make this faster is not worth making it less understandable 11:42 < bridge> unless i forgot to add it in 1 of the three places 11:43 < bridge> it becomes 4 if you want to move the constructor to the cpp file, and you have to write std::make_unique(...) 11:43 < bridge> it becomes 4 if you want to move the constructor to the cpp file, and you have to write 11:43 < bridge> ```cpp 11:43 < bridge> m_pA = std::make_unique(...) 11:43 < bridge> m_A = *m_pA 11:43 < bridge> ``` 11:43 < bridge> When I read that code, I know that it does immediately 11:44 < bridge> (not this snippet) 11:44 < bridge> If I have to understand several macros, I don't 11:44 < bridge> (if we have to keep using . instead of ->) 11:44 < bridge> it becomes 4 if you want to move the constructor to the cpp file, and you have to write 11:44 < bridge> ```cpp 11:44 < bridge> m_pA = std::make_unique(...) 11:44 < bridge> m_A = *m_pA 11:44 < bridge> ``` 11:44 < bridge> (if we have to keep using . instead of ->) 11:44 < bridge> (you also have to have te types in the gameclient) 11:44 < bridge> i deleted this msg idk why its still there 11:45 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1388455128549429298/image.png?ex=68610b1a&is=685fb99a&hm=b0c47b9154a210dc30e4c04ef385929df2b9b2e9ef0cc79bf8c0b7866351842e& 11:45 < bridge> This feels like the XY problem. We have a good solution for this. If you don't want to use it, then we shouldn't change. 11:45 < bridge> i dont think the current solution is good 11:46 < bridge> due to forcing large recompiles all the time 11:46 < bridge> Replacing it with something worse is not better 11:46 < bridge> due to forcing large recompiles all the time when editing compoennt headers 11:46 < bridge> as i said before i think the worse caused in readability is not outweighed by the better from incremental recompile speedup 11:46 < bridge> *but* youre the maintainer 11:47 < bridge> as i said before i think the worse caused in readability is not outweighed by the better from incremental recompile speedup 11:47 < bridge> *but* youre the maintainer, so my opinion doesn matter 😓 11:47 < bridge> comments could be added explaining it faster than you would take to figure it out, but i doubt thats enough 11:47 < bridge> What I'm saying is, you are trying to solve the problem with the wrong solution because you don't want the good solution. That would be, using pointers and adding component getter functions. 11:47 < bridge> https://thedecisionlab.com/biases/the-sunk-cost-fallacy 11:48 < bridge> personally i never had problems with ddnet compile times 11:48 < bridge> that just adds more repettion which is what im trying to avoid aswell 11:48 < bridge> on release i compile in 20 seconds 11:48 < bridge> good for you, i dont 11:48 < bridge> ): 11:48 < bridge> debug should be way faster 11:49 < bridge> It solves the problem of faster recompiles. The repetion is negligible compared to the cost to understandability by using macros. 11:49 < bridge> one of the macros disapears if you use pointes, i dont see the point of having getters 11:49 < bridge> im against macros too if possible 11:50 < bridge> why not do this 11:50 < bridge> Because if you are already changing everything you might as well do it properly. Getters allow for easier change in the future, if we decide to revert to component members or do something entirely different. 11:50 < bridge> Would be a very large diff, so forks wouldn't like it 11:50 < bridge> why do we need to care about forks 11:50 < bridge> i dont agree with that argument 11:51 < bridge> grr 11:51 < bridge> youre a fork 11:51 < bridge> :justatest: 11:51 < bridge> 🍴 11:51 < bridge> i dislike limitingo urselves more by "forks" we already are limited by backwards compat and old protocols 11:52 < bridge> i dislike limiting ourselves more by "forks" we already are limited by backwards compat and old protocols 11:52 < bridge> and getters also make refactoring easier 11:52 < bridge> avoiding bigger diffs in the future 11:52 < bridge> forks are activley maintained, the things which backwards compat supports isnt 11:52 < bridge> yeah but we dont need to cater to forks 11:53 < bridge> specially when it would bring compile time improvements and probably cleaner code 11:53 < bridge> How long does it take for you? 11:53 < bridge> a couple of minutes 11:53 < bridge> (yes im impatient) 11:53 < bridge> o ndebug? 11:53 < bridge> debug* 11:54 < bridge> release 11:54 < bridge> debug is unplayable for testing 11:54 < bridge> why do u code in release 11:54 < bridge> Then buy better hardware xD 11:54 < bridge> no! 11:54 < bridge> Ofc 11:54 < bridge> add ur own -O1 mode 11:54 < bridge> it shoudl be playable 11:54 < bridge> Let the computer work for you, not other way around 11:54 < bridge> 2 mins is insane tho 11:54 < bridge> do u have a pentium 11:55 < bridge> 8virtual cores x 2ghz on a vps 11:55 < bridge> and im on a laptop with 2 cores 4 threads 11:55 < bridge> why u code on a vps 11:55 < bridge> because my pc is 3 hours away 11:55 < bridge> and broken 11:55 < bridge> rip 11:56 < bridge> yeah but theres going to be so much pushback for that 11:56 < bridge> (including from me) 11:57 < bridge> both because large diff (which i dont want to deal with) and extra repetiton (which i dont like) 11:58 < bridge> @jupeyy_keks do u agree bein limited by forks on large refactors 11:58 < bridge> i hate it 11:58 < bridge> if the iwyu changes from my pr are merged i would hapilly merge the rest downstream x-x 11:59 < bridge> i wont merge the macro one 11:59 < bridge> (im afraid to say you already tried) 11:59 < bridge> I don't really agree about being limited by forks, I simply raised the point. I'll break all editor forks when adding multiple map support eventually maybe. 12:00 < bridge> We should focus on us. 12:00 < bridge> 12:00 < bridge> If we'd design a good & modular software base, then forks profit from that too in the long run. 12:00 < bridge> 12:00 < bridge> You always make someone unhappy, that's the nature of change 12:00 < bridge> ~~ (im afraid to say you already tried)~~ (different pr) 12:00 < bridge> i like clang tidy, hope u finish it xd 12:00 < bridge> yeah thats my point 12:00 < bridge> `make 147,61s user 22,22s system 100% cpu 2:48,59 total` 12:00 < bridge> 12:00 < bridge> On a single CPU it takes 2m 48s for me. 12:00 < bridge> 12:01 < bridge> Maybe you could switch to a root server (dedicated CPU cores) 12:01 < bridge> `make 147,61s user 22,22s system 100% cpu 2:48,59 total` 12:01 < bridge> 12:01 < bridge> On a single CPU thread it takes 2m 48s for me. 12:01 < bridge> 12:01 < bridge> Maybe you could switch to a root server (dedicated CPU cores) 12:02 < bridge> @sollybunny i can give u access to my dedicated server 12:02 < bridge> if u promise to not do bad stuff 12:02 < bridge> its the one that hosts the wiki 12:02 < bridge> wouldnt compiling ddos it :--; 12:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1388459612252016732/image.png?ex=68610f47&is=685fbdc7&hm=fd553ac622ed3184d359176ca1d061550b2ce6e8387c3f369bc345ae69a8301e& 12:02 < bridge> no its powerfull af 12:03 < bridge> 64gb ram and a ryzen 3600 12:03 < bridge> u can limit ur make to half the cores 12:03 < bridge> and u wont give problem 12:03 < bridge> why you willing to give me free hardware 12:03 < bridge> because u are coding for ddnet 12:03 < bridge> what did i do to desrve this x-x 12:03 < bridge> im all for it 12:03 < bridge> brp 12:03 < bridge> i mean 12:03 < bridge> i wont like say no 12:03 < bridge> ok just give me ur ssh key 12:03 < bridge> and never share the ip 12:04 < bridge> or u will ddos the wiki :p 12:04 < bridge> oke 12:04 < bridge> you could do it via cloudflare tunnel 12:04 < bridge> then i dont get the ip 12:04 < bridge> so the ip is that of the wiki? xddd 12:04 < bridge> i host the wiki on that monster 12:04 < bridge> along other side projects 12:04 < bridge> xd 12:04 < bridge> like ddstats 12:05 < bridge> nah i can change ip if smth happens xd 12:05 < bridge> I would like the component compliation fix thing to be merged in some capacity, idc if it means changing all the files 12:06 < bridge> is there a way we can do no reperition without macros 12:06 < bridge> constexpr map? 12:06 < bridge> Template? 12:06 < bridge> no.. 12:06 < bridge> thats a bit icky 12:06 < bridge> so is veerything 12:06 < bridge> No, just https://en.wikipedia.org/wiki/KISS_principle 12:07 < bridge> I think pointers without getters is fine 12:08 < bridge> im not sure what the getters would ever do 12:08 < bridge> Getters are better, as we already change every line and it allows easier future change 12:08 < bridge> What change? 12:08 < bridge> Changing to a different representation of components 12:08 < bridge> Like what? 12:09 < bridge> If I knew the perfect solution of the future, I would suggest it right now 12:09 < bridge> Making future change easier is a virtue in itself 12:09 < bridge> But it adds a maintainbility cost of creating the getters for no stated reason 12:10 < bridge> We have getters for everything else 12:10 < bridge> have they been useful in some way that would apply here 12:11 < bridge> Yes, the offer the same benefit of easier future change 12:11 < bridge> That's not very specific 12:12 < bridge> Then check git blame if this benefit has been actualized for any interface so far 12:12 < bridge> Consistency is also important 12:12 < bridge> This seems like premature abstraction, if we come up with a new component representation you can add them then 12:13 < bridge> I'm not merging it without getters, that's just wasted review effort 12:15 < bridge> Minimizing boilerplate isn't a worthless task, if someone has to figure out the 5 places you change to make a new component they will be less likely to make it in the first place and just cram their code somewhere worse, we already have this issue 12:18 < bridge> Easy of future change and consistency are more important to me. @sollybunny Do you want to work on using pointers and getters? Otherwise we can close the PR. 12:19 < bridge> i dont want that to be merged really 12:19 < bridge> can i keep the iwyu changes 12:19 < bridge> even though they should be enforced and autoamted with some tool 12:21 < bridge> @sollybunny btw 12:21 < bridge> u can use mold 12:21 < bridge> idk if ddnet uses it by default if installed 12:22 < bridge> but its on the server 12:22 < bridge> (way faster link time) 12:22 < bridge> that is useful to me 12:22 < bridge> probably 12:22 < bridge> was 12:22 < bridge> ```cmake 12:22 < bridge> * **-DFUSE_LD=[OFF|LINKER]**
12:22 < bridge> Linker to use. Default value is OFF to try mold, lld, gold. 12:22 < bridge> ``` 12:27 < bridge> playing 1 minute on linear https://share.firefox.dev/4ewuEMw 12:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1388465833633906799/image.png?ex=68611513&is=685fc393&hm=d2459713d128b458bf7adc5cd6a1e6207b6965c2c702b8b73b28750e4426bb4a& 12:27 < bridge> The includes would probably change again when using component pointers, so I don't think it's worth it 12:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1388466813767254088/image.png?ex=686115fc&is=685fc47c&hm=4e3d19a023a69ccf88e741539c69b1c0ca039376dce670d029c0ee9b4663206c& 12:31 < bridge> curios skins take a lot 12:31 < bridge> https://share.firefox.dev/4kWGW2W 12:32 < bridge> ah its teerender infos 12:32 < bridge> Latest master or release? 12:32 < bridge> not skins xd 12:32 < bridge> last master 12:33 < bridge> im just profiling a bit 12:33 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1388467288004366510/image.png?ex=6861166d&is=685fc4ed&hm=bb6e146893c02938b04ac000015455b32eceddf9c66ed2be2ac1947e6a1bbd9e& 12:34 < bridge> I tried to optimize skin container performance after latest release. Looks like we still validate the skin name each time when retrieving a container though. Maybe that could still be avoided somehow. 12:39 < bridge> You need the headers for components you use regardless of how you access them 12:49 < bridge> What do you use for profiling 12:50 < bridge> samply, a nice wrapper for perf that auto matically opens firefox profiler viewer (the best) but maybe u dont want to use it since its made in Rust 12:52 < bridge> :kek: 13:14 < bridge> @jupeyy_keks https://github.com/ddnet/ddnet/pull/7169 13:14 < bridge> is this relevant 13:14 < bridge> 2023 13:15 < bridge> format and tidy are different 13:16 < bridge> oh true, well still would close it since its there for years 13:16 < bridge> better to keep open maybe someone revives 13:16 < bridge> if closed it just gets lost if theres no issue 13:17 < bridge> ill open a issue 13:25 < bridge> If we are ok with the binary diff this will create, we can rebase & merge xd 13:31 < bridge> The question is whether we could apply it only to changed files 13:33 < bridge> I dunno, I won't do that xD 13:33 < bridge> Way too complicated 13:33 < bridge> data should simply be a submodule 13:34 < bridge> `shallow = true` 14:10 < bridge> https://www.reddit.com/r/ProgrammerHumor/comments/1lmeq0f/useridvsuserid/ 14:10 < bridge> #7750 14:10 < bridge> https://github.com/ddnet/ddnet/issues/7750 14:11 < bridge> Ddnet 14:11 < bridge> Ddrace 14:12 < bridge> But yeah it's funny bcs it's defs a divisive topic xD 14:24 < bridge> @tsfreddie is master4 not chinese master server list anymore? Or generally do we not have chinese master server list anymore? 14:24 < bridge> We never had any Chinese master list 14:24 < bridge> Http hosting in china need registration 14:26 < bridge> Mh okee 14:59 < bridge> chillerdragon when antiping for ZillyWods 15:00 < bridge> turki players get high ping on eu servers 15:03 < ChillerDragon> not planned i tried it once was too hard xd 15:03 < ChillerDragon> just use ddnet :shrug: 15:28 < bridge> Is this just GitHub on phone or is formatting broken 15:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1388511342935408751/Screenshot_20250628-152459.png?ex=68613f75&is=685fedf5&hm=4759ab702e59027804c93a33a2f6ef887658770bf0e2161380b3dba8e4cd49c4& 15:29 < ws-client> @melon buy new phone 15:30 < bridge> 15:35 < bridge> your phone too small :/ 15:35 < bridge> open in desktop view 15:50 < bridge> @blaiszephyr yes /practice 0 is a real thing to vote against it 15:50 < bridge> 😂 15:51 < bridge> But why does this exist :dTeuMonkaW: 15:51 < bridge> if you want to change your vote 15:51 < bridge> There was a practice bug to have dummy maps allow more than 2 people in a team, that's where my concern comes from 15:51 < bridge> but is very useles 15:51 < bridge> Ye that's why I thought you added it 15:52 < bridge> yea ik bcs practice didnt have a way to disable it 15:52 < bridge> so it was new 15:52 < bridge> :justatest: 15:52 < bridge> for team0mode i just added voting 15:52 < bridge> 👍 15:52 < bridge> disabling and other stuff i didnt touch 15:52 < bridge> so everything is same 16:02 < bridge> Didn't we host just a read only master in china? 18:51 < ws-client> @robyt3 my diff in server.cpp and network.cpp is basically insignificant. Yet my fork has a few asan errors and they seem to be introduced around the time i merged a commit of urs 18:52 < ws-client> this is not a confirmed ddnet bug might be a fork issue but any chance you could have a quick look at https://github.com/ddnet-insta/ddnet-insta/issues/367 18:55 < bridge> We also had this in the past, but no idea how to reproduce it: #3346 18:55 < bridge> Maybe you send longer messages and you run into #9126 18:55 < bridge> https://github.com/ddnet/ddnet/issues/3346 18:55 < bridge> https://github.com/ddnet/ddnet/issues/9126 19:13 < ws-client> issue from 2020 o.O 19:13 < ws-client> mine seems new and frequent <:tee_thinking:478629518358085653> 19:13 < ws-client> i had it like 10 times this month 19:17 < bridge> If it happens frequently enough, try to add some debug messages in `CNetRecvUnpacker::FetchChunk` to log information of the `CNetChunk` 19:18 < ws-client> i rather not touch network.cpp or server.cpp 20:00 < bridge> https://worksonmymachine.substack.com/p/mcp-an-accidentally-universal-plugin 21:05 < bridge> l 22:18 < bridge> Hello i had been banned today from DDNET and i don't know why ??? I didn't do bad things so why i had been banned ?? PLease help me! 22:19 < bridge> please open a ticket at https://discord.com/channels/252358080522747904/1124657351442579486 22:20 < bridge> ok thank you for the help 22:20 < bridge> Does anybody know a good VS-Code extension for clang format? I installed one but it seems not to work anymore, I guess it's a different version? 22:26 < bridge> We have a vscode workspace that suggests everything 22:31 < bridge> 🤔 23:31 < bridge> i just use ./scripts/fix-style.py, its fast and i only have to run it on push 23:31 < bridge> i just use ./scripts/fix-style.py, its pretty fast and i only have to run it on push 23:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1388634827519033557/image.png?ex=6861b276&is=686060f6&hm=03957e5eaaa4f111d7b3895b917196eefb8ba99f50e92851116233e9ab7f22be& 23:39 < bridge> thats a jank description 23:40 < bridge> 💀 23:42 < bridge> "Token limit has been reached"