00:34 <+bridge> [ddnet] <.Jules.> hello, i'm coming here because i have a request (if it's possible ) about a ban. 00:34 <+bridge> [ddnet] <.Jules.> My friend have 100 hours on the game and yesterday (or somethings likes that) he got banned because he blocked a player. 00:34 <+bridge> [ddnet] <.Jules.> the problem is we spend so much time to play together and wee want to replay together but i'ts not possible. 00:34 <+bridge> [ddnet] <.Jules.> he knows what he have done and i want to know if it's possible to deban or minimalize his ban 00:34 <+bridge> [ddnet] <.Jules.> (oh and he is banned only on the map multiplayer, for the map solo he's not banned, it's weird ?) 00:54 <+bridge> [ddnet] @heinrich5991 what's the problem exactly? 00:54 <+bridge> [ddnet] i noticed that some files are indeed useless 00:56 <+bridge> [ddnet] src/base/unicode/confusables_data.h and src/base/unicode/tolower_data.h were generated files 00:56 <+bridge> [ddnet] oh 00:57 <+bridge> [ddnet] now they were manually edited/moved without changing the generating scripts 00:57 <+bridge> [ddnet] i thought all generated files were in builddir/CMakeFiles/generated 00:57 <+bridge> [ddnet] we have some generated files that are checked into source control 00:58 <+bridge> [ddnet] a CI job verifying that they're up-to-date would probably be useful, as noted in the issue ^^ 00:58 <+bridge> [ddnet] ill try to fix that within the week, im on my windows right now 00:58 <+bridge> [ddnet] oh, cool ๐Ÿ™‚ 00:59 <+bridge> [ddnet] im trying to find the file that i know is not included anywhere 00:59 <+bridge> [ddnet] yet, it's object file is used, i think it was about checksum 01:06 <+bridge> [ddnet] can't find it ๐Ÿ˜ฆ 09:45 <+bridge> [ddnet] Jupstar whenever someone enjoys their frames untorn 09:45 <+bridge> [ddnet] :monkaS: 09:47 <+bridge> [ddnet] learath when C is badmouthed 09:49 <+bridge> [ddnet] https://tenor.com/view/he-is-speaking-guy-explaining-with-a-whiteboard-some-guy-explaining-gif-19593300 09:49 <+bridge> [ddnet] Me trying to justify the existence of UB ^^ 09:50 <+ChillerDragon> @heinrich5991 nah i had an ``continue`` before the recv code :D so it just was never run. It works now. Thanks for checking in with me <3 10:10 <+ChillerDragon> Any opinions on having some branch patterns ignored from CI? Like tmp_* or test-* so one can test and still push commits without getting email spammed 10:11 <+bridge> [ddnet] why do u even get emails from ci 10:29 <+ChillerDragon> If one of my pipelines fails i get a email from github. Which is actually nice imo. 10:41 <+bridge> [ddnet] i dont get why u always push all ur personal config onto upstream 10:41 <+bridge> [ddnet] it feels weird to me xd 10:41 <+bridge> [ddnet] e.g gitignore, u can just use git/info/exclude 10:42 <+bridge> [ddnet] ChillerDragon: You could set up email rules to instantly move them into trash folder. 10:43 <+bridge> [ddnet] Or maybe branches-ignore: works with * 10:44 <+bridge> [ddnet] btw the + thing exists on emails 10:44 <+bridge> [ddnet] youremail+something@domain.com 10:44 <+bridge> [ddnet] Yes, works: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore 10:44 <+bridge> [ddnet] @Ryozuki that's not standard, I think gmail started it and some other providers copied it 10:45 <+bridge> [ddnet] rly? 10:45 <+bridge> [ddnet] sounds like a good feature 10:45 <+bridge> [ddnet] https://en.wikipedia.org/wiki/Email_address#Address_tags 10:45 <+bridge> [ddnet] > RFC 5233,[13] refers to this convention as sub-addressing, but it is also known as plus addressing, tagged addressing or mail extensions. 10:46 <+bridge> [ddnet] well looks like most email providers implement it 10:47 <+bridge> [ddnet] postfix too 11:12 <+ChillerDragon> yes deen it works thats why i am wondering if we should add it 11:14 <+bridge> [ddnet] Do we have any temporary branches like that? I think we shouldn't use them. Such experiments should be done in private forks, not on the main ddnet/ddnet 12:29 <+ChillerDragon> Yes i would use it in a private fork. But i do not want to edit the workflow in my fork for that. 12:29 <+ChillerDragon> But its not too dramatic just wondering if we could do it 12:38 <+bridge> [ddnet] If you find a second person that would use that, ok 12:38 <+bridge> [ddnet] Or use a very speaking name, for example *_noci 12:43 <+ChillerDragon> https://github.com/ddnet/ddnet/pull/4986#issuecomment-1099951400 @Jupstar no idea what that means. Where to put the comment? what even is OpenGL is that OpenGL1 ? 12:44 <+ChillerDragon> i can not reproduce additional memory leaks when switching to opengl1 13:43 <+bridge> [ddnet] since no one ever noticed this bug: https://discord.com/channels/252358080522747904/757720336274948198/967069481279045633 13:43 <+bridge> [ddnet] should we just remove cl_predict_ddrace or should I fix the bug? 13:44 <+bridge> [ddnet] since no one has ever noticed this bug: https://discord.com/channels/252358080522747904/757720336274948198/967069481279045633 13:44 <+bridge> [ddnet] should we just remove cl_predict_ddrace or should I fix the bug? 13:45 <+bridge> [ddnet] I vote for remove 13:45 <+bridge> [ddnet] there are too many options for prediction/antiping 13:48 <+bridge> [ddnet] since no one has ever noticed this bug: https://discord.com/channels/252358080522747904/757720336274948198/967069481279045633 13:48 <+bridge> [ddnet] should we just remove cl_predict_ddrace or should I fix the bug? (bug was added in May 2020 see ) 13:50 <+bridge> [ddnet] I would also prefer to remove cl_predict_ddrace. 14:16 <+ChillerDragon> @Jupstar I can not reproduce https://github.com/libsdl-org/SDL/issues/5572 on debian 11 with vulkan or opengl i tried all fullscreen settings and tabbing in and out it all worked fine 14:16 <+ChillerDragon> I tried latest SDL https://github.com/libsdl-org/SDL/commit/981e1e3c4489add5bf6d4df5415af3cf1ef2773d 17:01 <+bridge> [ddnet] just put it in shutdown function 17:01 <+bridge> [ddnet] who moved #bugs over #questions 17:02 <+bridge> [ddnet] FBI! 17:03 <+bridge> [ddnet] gnome doesnt seem to be affected as ryan said 17:04 <+bridge> [ddnet] " but I can reproduce the alt-tab issue with Gnome, too." 17:04 <+bridge> [ddnet] 17:04 <+bridge> [ddnet] so at least one of the issues is reproducable on gnome 17:04 <+bridge> [ddnet] for him 17:22 <+bridge> [ddnet] Fixed. This happens super easily, I wish we could lock the channels somehow 17:29 <+bridge> [ddnet] moving a channel triggers the OCD of everyone 17:29 <+bridge> [ddnet] :monkalaugh: 17:31 <+bridge> [ddnet] @Not Keks ^^ 17:31 <+bridge> [ddnet] lol 17:33 <+bridge> [ddnet] lol 17:33 <+bridge> [ddnet] how did he do that 17:42 <+bridge> [ddnet] true xd 17:44 <+bridge> [ddnet] decltype(m_ThreadCount) returns the type of the variable? 17:44 <+bridge> [ddnet] nice to know 17:44 <+bridge> [ddnet] rust has this thing, where it can infer the type without u needed to type all this 17:44 <+bridge> [ddnet] u just need to use _ 17:44 <+bridge> [ddnet] or nothing at all 17:46 <+bridge> [ddnet] I wonder if Rust can do this one where the types don't match 17:46 <+bridge> [ddnet] cant u rly not use clamp(m_ThreadCount) 17:46 <+bridge> [ddnet] without having to type the type? 17:46 <+bridge> [ddnet] `m_ThreadCount = clamp(m_ThreadCount, 3, std::max(3, std:๐Ÿงต:hardware_concurrency()));` 17:46 <+bridge> [ddnet] so verbose 17:48 <+bridge> [ddnet] Hm, I don't see why the type is needed in clamp 17:48 <+bridge> [ddnet] `m_ThreadCount = m_ThreadCount.clamp(3, m_ThreadCount.max(hardware_concurrency()));` 17:48 <+bridge> [ddnet] this would be 17:48 <+bridge> [ddnet] the rust equivalent 17:48 <+bridge> [ddnet] quickly typed 17:49 <+bridge> [ddnet] oh wait 17:49 <+bridge> [ddnet] the max is wrong probs 17:49 <+bridge> [ddnet] xd 17:49 <+bridge> [ddnet] i excplicity added it to make clear that the cast from int to size_t is correct 17:49 <+bridge> [ddnet] we have pretty low compiler warnings 17:49 <+bridge> [ddnet] but with stronger ones it would fail 17:50 <+bridge> [ddnet] also template deduction between int and size_t might fail to compile at all 17:50 <+bridge> [ddnet] 3 is int 17:50 <+bridge> [ddnet] we have low compiler warnings? 17:51 <+bridge> [ddnet] while the other is size-t 17:51 <+bridge> [ddnet] we have pretty weak warnings yeah 17:51 <+bridge> [ddnet] we cant cast around as we want basically 17:51 <+bridge> [ddnet] one might thing -Wall means all warnings but c++ is special 17:51 <+bridge> [ddnet] :monkalaugh: 17:51 <+bridge> [ddnet] Weverything is best 17:51 <+bridge> [ddnet] just disable the few warnings u dont need 17:52 <+bridge> [ddnet] ``` 17:52 <+bridge> [ddnet] 17:52 <+bridge> [ddnet] set(S "${S} -Weverything -stdlib=libc++") 17:52 <+bridge> [ddnet] set(S "${S} -Wno-c++20-compat -Wno-unused-command-line-argument") 17:52 <+bridge> [ddnet] set(S "${S} -Wno-cast-align -Wno-reserved-id-macro -Wno-weak-vtables -Wno-padded -Wno-format-nonliteral -Wno-documentation-unknown-command -Wno-extra-semi-stmt -Wno-switch-enum -Wno-missing-prototypes -Wno-covered-switch-default") 17:52 <+bridge> [ddnet] set(S "${S} -Wc++98-compat-extra-semi -Wnewline-eof -Wdouble-promotion -pedantic -pedantic-errors -Wmissing-variable-declarations -Wextra-semi -Wundef -Wunreachable-code-break") 17:52 <+bridge> [ddnet] set(S "${S} -Wno-gnu-anonymous-struct -Wno-nested-anon-types -Wno-old-style-cast -Wno-c++98-compat-pedantic") 17:52 <+bridge> [ddnet] set(S "${S} -Wno-reserved-identifier") 17:52 <+bridge> [ddnet] ``` 17:52 <+bridge> [ddnet] this is what i usually use 17:52 <+bridge> [ddnet] I actually am not sure about the rules when it comes to template subs here. I've never really looked into the technicalities of metaprogramming-magic 17:53 <+bridge> [ddnet] yeah if u dont add a template arg it has to deduct it based on the params 17:53 <+bridge> [ddnet] so the mismatch can create errors 17:54 <+bridge> [ddnet] ```cmake 17:54 <+bridge> [ddnet] set(S "${S} -Weverything -stdlib=libc++") 17:54 <+bridge> [ddnet] set(S "${S} -Wno-c++20-compat -Wno-unused-command-line-argument") 17:54 <+bridge> [ddnet] set(S "${S} -Wno-cast-align -Wno-reserved-id-macro -Wno-weak-vtables -Wno-padded -Wno-format-nonliteral -Wno-documentation-unknown-command -Wno-extra-semi-stmt -Wno-switch-enum -Wno-missing-prototypes -Wno-covered-switch-default") 17:54 <+bridge> [ddnet] set(S "${S} -Wc++98-compat-extra-semi -Wnewline-eof -Wdouble-promotion -pedantic -pedantic-errors -Wmissing-variable-declarations -Wextra-semi -Wundef -Wunreachable-code-break") 17:54 <+bridge> [ddnet] set(S "${S} -Wno-gnu-anonymous-struct -Wno-nested-anon-types -Wno-old-style-cast -Wno-c++98-compat-pedantic") 17:54 <+bridge> [ddnet] set(S "${S} -Wno-reserved-identifier") 17:54 <+bridge> [ddnet] ``` 17:55 <+bridge> [ddnet] i bet in c++20 u can do like auto(3) xd 17:55 <+bridge> [ddnet] just spam auto everywhere until it breaks xdd 18:02 <+ChillerDragon> awesome i didnt know Weverything is a thing! sounds cool! 18:03 <+ChillerDragon> i thought ddnet warnings are as strict as it gets :D 18:03 <+bridge> [ddnet] yeah u need clang tho 18:03 <+bridge> [ddnet] clang even has wdocument 18:03 <+ChillerDragon> clang masterrace 18:03 <+bridge> [ddnet] perfect for @Ryozuki 18:04 <+ChillerDragon> wats document 18:04 <+ChillerDragon> oh for docs? 18:04 <+bridge> [ddnet] it can parse doxygen 18:04 <+ChillerDragon> or format? 18:04 <+bridge> [ddnet] yes 18:04 <+ChillerDragon> a 18:04 <+ChillerDragon> col 18:04 <+ChillerDragon> but who needs docs when u got sourcecode? 18:04 <+bridge> [ddnet] who needs games if u have brain 18:05 <+ChillerDragon> who needs brain if you have drugs 18:05 <+ChillerDragon> wat? 18:05 <+bridge> [ddnet] fix ur pr 18:05 <+bridge> [ddnet] u added a space 18:05 <+ChillerDragon> oh 18:05 <+ChillerDragon> wetefek 18:06 <+bridge> [ddnet] copy & paste magician chillerdragon 18:06 <+ChillerDragon> fakof 18:06 <+ChillerDragon> fixxored 18:06 <+bridge> [ddnet] rust has 18:06 <+bridge> [ddnet] `#![deny(missing_docs)]` 18:07 <+ChillerDragon> Ouu i love ``cargo fmt`` btw xd 18:07 <+ChillerDragon> its so hot 18:07 <+bridge> [ddnet] xd 18:08 <+ChillerDragon> any daytraders from europe here? 18:09 <+ChillerDragon> i need financial advice 18:09 <+bridge> [ddnet] invest in amd 18:09 <+ChillerDragon> thanks 18:10 <+bridge> [ddnet] if nvidia really launches gtx 4090 with 700 watts, then its bcs amd does smth similar xd 18:10 <+bridge> [ddnet] rtx 18:10 <+bridge> [ddnet] don't invest in anything, refuse to take part in this corrupt neolib market structure 18:10 <+bridge> [ddnet] xd 18:10 <+bridge> [ddnet] tru story 18:11 <+ChillerDragon> wetefek learath 18:11 <+ChillerDragon> how to get piss rich then? 18:11 <+bridge> [ddnet] and lose money to inflation 18:11 <+bridge> [ddnet] just stop caring about money and enjoy your life 18:11 <+bridge> [ddnet] "you gotta play the system to beat it" 18:11 <+bridge> [ddnet] is that a saying? 18:11 <+bridge> [ddnet] xd 18:11 <+bridge> [ddnet] don't get piss rich, money is not important 18:12 <+bridge> [ddnet] yeah 18:12 <+ChillerDragon> but i need shelter and food 18:12 <+bridge> [ddnet] i enjoy rust lang 18:12 <+bridge> [ddnet] i enjoy ryo os 18:12 <+bridge> [ddnet] :BASEDHALT: 18:12 <+bridge> [ddnet] as long as you have enough to enjoy the things you like then you don't need more 18:12 <+ChillerDragon> i do not have enought to buy shelter and food when i quit my job 18:13 <+bridge> [ddnet] I didn't say quit your job, did I? ๐Ÿ˜„ 18:13 <+ChillerDragon> you sayid enjoy life 18:13 <+ChillerDragon> i dont see how working everyday of my life is enjoying life 18:13 <+bridge> [ddnet] xd 18:13 <+bridge> [ddnet] then quit it if u got the money 18:13 <+bridge> [ddnet] u rich we all know that 18:13 <+ChillerDragon> yes 18:13 <+bridge> [ddnet] open secret 18:13 <+ChillerDragon> so i need stoks 18:14 <+ChillerDragon> to get rich 18:14 <+ChillerDragon> then quit job 18:14 <+ChillerDragon> -> amd 18:14 <+bridge> [ddnet] u cant fool me 18:14 <+bridge> [ddnet] im detective 18:14 <+ChillerDragon> ? 18:14 <+bridge> [ddnet] rich af boi 18:14 <+ChillerDragon> i swear im not 18:14 <+bridge> [ddnet] don't get rich, find work you enjoy, work gives your life meaning 18:14 <+ChillerDragon> ok sure 18:14 <+bridge> [ddnet] xd 18:14 <+ChillerDragon> where? 18:15 <+bridge> [ddnet] preferably on earth 18:15 <+bridge> [ddnet] freeze ur body and wait 100 years 18:15 <+ChillerDragon> i feel like losing money on the stonks market is more fun than applying for jobs 18:15 <+bridge> [ddnet] then u dont need to work anymore xd 18:15 <+ChillerDragon> i feel like tw wont survive 100 yrs 18:15 <+bridge> [ddnet] wat? 18:15 <+ChillerDragon> no point in having free time if there is no tw 18:16 <+bridge> [ddnet] what u talkn bout broi 18:16 <+bridge> [ddnet] what u talkn bout bro 18:16 <+ChillerDragon> taiwan 18:16 <+ChillerDragon> clima crisis will swallow taiwan 18:16 <+ChillerDragon> wat u dont get 18:17 <+bridge> [ddnet] ppl still play all these weird commendore 64 games 18:17 <+bridge> [ddnet] and u tell me tw wont survive 100 years 18:17 <+ChillerDragon> oh ur optemistic 18:17 <+bridge> [ddnet] ofc 18:17 <+ChillerDragon> nice 18:17 <+bridge> [ddnet] i will live around 60 years from now on 18:17 <+bridge> [ddnet] so 60 years new backends 18:17 <+bridge> [ddnet] xd 18:17 <+ChillerDragon> nah 18:17 <+ChillerDragon> u rq next year 18:18 <+ChillerDragon> when clubpenguin source code gets leaked 18:18 <+bridge> [ddnet] quite possible xd 18:18 <+ChillerDragon> oy will stay for another 20 yrs 18:18 <+bridge> [ddnet] yes, but will only join 20 times in these 20 years 18:18 <+ChillerDragon> deen gets pregnant this fall 18:18 <+ChillerDragon> and china will delete the internet 18:18 <+bridge> [ddnet] well the chance deen gets a child soon is quite huge actually 18:18 <+ChillerDragon> europa gets stuck in 0.6 for 10 yrs 18:19 <+ChillerDragon> and then around year 2080 we have 100 players max 18:19 <+ChillerDragon> and those players all use VR gear to play tw 18:19 <+bridge> [ddnet] do u bet your amd stocks against it? 18:19 <+ChillerDragon> but playing 2d games in VR will be very retro 18:20 <+ChillerDragon> yes i would short teeworlds 18:20 <+ChillerDragon> eventho it hurts me 18:21 <+ChillerDragon> @Learath2 wat if trading stoks is the job i enjoy? 18:27 <+bridge> [ddnet] Ew 18:27 <+ChillerDragon> xd 19:38 <+Konsti> @moderator Absolwit blocking on ger2 8308 20:13 <+bridge> [ddnet] Hey I am learning C++ so that I can stop writing C code in a C++ codebase cause apparently that's bad (and the more I learn the more it seems true). Question is why does the client code use C-style strings? Aren't C++ strings 'better'? Is it just that no one has gotten around to converting C-style strings to C++ strings or is there some other reason? It seems weird to me because C's strings are probably its worst feature 20:14 <+bridge> [ddnet] Cuz c strings are used everywhere 20:14 <+bridge> [ddnet] So its a lot of effort to port it all 20:14 <+bridge> [ddnet] Not worty, or is it? 20:14 <+bridge> [ddnet] Worth* 20:15 <+bridge> [ddnet] If its for me i would use string and string views 20:15 <+bridge> [ddnet] I don't think I'm qualified yet to know how worth it is xd 20:16 <+bridge> [ddnet] So there's no problem other than the volume of C-style strings? 20:16 <+bridge> [ddnet] No other catch? 20:16 <+bridge> [ddnet] For me? No 20:16 <+bridge> [ddnet] c++ has no flat strings 20:16 <+bridge> [ddnet] so they are heap strings 20:16 <+bridge> [ddnet] I would even make it utf8 only like rust 20:17 <+bridge> [ddnet] Don't desktop programs relly heavily on the heap anyway? 20:17 <+bridge> [ddnet] use boost static string xd 20:17 <+bridge> [ddnet] @Not Keks is it possible to make a buffer and string view it? 20:17 <+bridge> [ddnet] stack is still faster tho 20:17 <+bridge> [ddnet] Idk i never tried c++ 20:17 <+bridge> [ddnet] string views are just for viewing ๐Ÿ˜„ 20:17 <+bridge> [ddnet] Xd 20:18 <+bridge> [ddnet] its simply bcs c++ standard is slow af 20:18 <+bridge> [ddnet] we need boost 20:18 <+bridge> [ddnet] just accept it everyone xd 20:18 <+bridge> [ddnet] what's boost xdd 20:19 <+bridge> [ddnet] an alternative std 20:20 <+bridge> [ddnet] well 20:20 <+bridge> [ddnet] probs more like a patch over std 20:20 <+bridge> [ddnet] xd 20:21 <+bridge> [ddnet] So is Bjarne lying to me or what? He talks about std like it's crack cocaine xd 20:24 <+bridge> [ddnet] well the standard also adds language features 20:25 <+bridge> [ddnet] while boost is basically just advanced STL 20:25 <+bridge> [ddnet] so its not 100% comparable 20:25 <+bridge> [ddnet] but boost adds nice to haves 20:32 <+bridge> [ddnet] If only it's niceties didn't come at insane compilation times 20:33 <+bridge> [ddnet] @Cipy29 what do you think is bad about C strings that isn't shared by C++? 20:34 <+bridge> [ddnet] where does this information even come from, heinrich said the same 20:34 <+bridge> [ddnet] boost is relativly modular 20:35 <+bridge> [ddnet] It's what everyone has been saying for the last 2 decades. I haven't verified it myself in almost a decade but it shouldn't be too difficult to find sources on the claim 20:35 <+bridge> [ddnet] mh ok but pretty much all STL is slow compared to c code 20:35 <+bridge> [ddnet] its simply bcs templates arent the fastest 20:36 <+bridge> [ddnet] all TL* 20:36 <+bridge> [ddnet] when i see how fast SDL2 compiles with 400 files xD 20:37 <+bridge> [ddnet] but templates are best 20:37 <+bridge> [ddnet] xd 20:37 <+bridge> [ddnet] For now I really like how strings play with vectors, how I can iterate over words in a string easily, or split the string into words more easily (instead of the C way of using the 'not-good way' of strtok), how I can do str1 == str2 instead of strcmp 20:37 <+bridge> [ddnet] I guess we could look into it if we want a concrete answer, but heinrich mentioned factorio ripped it out aswell and for the same reason. I really doubt anything changed since I last researched a decade ago 20:38 <+bridge> [ddnet] I'm reading a big C++ book tho and I'm just 100 pages in or so, so I expect I'll discover more good things about std::string 20:38 <+bridge> [ddnet] Ah, the convenience stuff. C++ strings indeed are much more ergonomic than C style strings 20:39 <+bridge> [ddnet] However, they pretty much share all the performance downsides, which is why I was a bit confused 20:39 <+bridge> [ddnet] And I didn't even mention the null termination of C-style strings xd 20:39 <+bridge> [ddnet] C++ strings are also null terminated 20:40 <+bridge> [ddnet] Why? Is it so they fit better to legacy C code? 20:40 <+bridge> [ddnet] they have .size() so I don't see other reason 20:42 <+bridge> [ddnet] Yep, and they were always like that, C++ almost never breaks backwards compatibility 20:42 <+bridge> [ddnet] good guy C++ :poggers: 20:45 <+bridge> [ddnet] Fwiw I find null terminated strings much easier to work with on the lower level. I'd guess that and the extra space needed to store the length is the reason C ended up with null terminated strings 20:46 <+bridge> [ddnet] strings on low level? like what kind of application? 20:47 <+bridge> [ddnet] I think I also read that ritchie was concerned about the size of the length variable limiting future systems ability to handle larger strings 20:48 <+bridge> [ddnet] Like actually implementing algorithms that operate on them rather than using primitives made by other people. E.g. writing your own append, or working with unicode without a library 20:49 <+bridge> [ddnet] well yea but who does that xd 20:49 <+bridge> [ddnet] those things are already written 20:49 <+bridge> [ddnet] you only do them if you want to know how they work 20:51 <+bridge> [ddnet] They didn't write themselves lol. If everyone thought like that we'd never have new algorithms 20:52 <+bridge> [ddnet] Dragon4 already solved float to string conversion. If everyone just decided that was good enough we'd never have Ryu 20:52 <+bridge> [ddnet] null termination itself is nothing bad, that one byte extra wont make an insane diff, std::string still saves the string size other than c strings 20:54 <+bridge> [ddnet] well those algorithms such as append or working with unicode aren't new 20:54 <+bridge> [ddnet] and coming up with new ideas doesn't depend on re-creating all old ideas 20:55 <+bridge> [ddnet] saving the size together with the string 'feels' better 20:55 <+bridge> [ddnet] New ideas are built on top of old ones. There is immense value in doing these things yourself, especially if you are interested in things like embedded programming 20:55 <+bridge> [ddnet] so you don't need smth like strlen() to run when u need a string 20:55 <+bridge> [ddnet] i know haha, i work in embedded C programming actually xd 20:56 <+bridge> [ddnet] all im saying is that C strings are inferior to C++ strings 20:56 <+bridge> [ddnet] (just started learning C++ tho) 20:57 <+bridge> [ddnet] Literally any languages strings are probably better equipped than C strings. But heap allocation for every string is very awful for performance 20:58 <+bridge> [ddnet] So awful that even with modern arena allocators, every C++ compiler does small string optimization to keep them in stack 20:59 <+bridge> [ddnet] so for example switching from C strings to C++ strings in the whole client codebase would have impact performance? 20:59 <+bridge> [ddnet] like noticeably? 20:59 <+bridge> [ddnet] yes 20:59 <+bridge> [ddnet] heaps 21:00 <+bridge> [ddnet] like how bad could it be? xd (im asking cause i actually don't know) 21:00 <+bridge> [ddnet] but static strings are probs faster 21:01 <+bridge> [ddnet] and streaming is faster than printf 21:11 <+bridge> [ddnet] @Cipy29 learn c++ and then learn rust 21:12 <+bridge> [ddnet] the best way to know rust greatness 21:12 <+bridge> [ddnet] its like eating the least food u like first 21:12 <+bridge> [ddnet] to enjoy some good shit at the end 21:12 <+bridge> [ddnet] :BASED: 21:12 <+bridge> [ddnet] :BASEDDEPT: 21:13 <+bridge> [ddnet] xd so why's Rust better than cpp 21:13 <+bridge> [ddnet] learn cpp first 21:13 <+bridge> [ddnet] Bjarne seems to know his shit xd 21:13 <+bridge> [ddnet] haha 21:14 <+bridge> [ddnet] @Cipy29 did u learn about pointers yet 21:14 <+bridge> [ddnet] well u should use references 21:14 <+bridge> [ddnet] most of the time 21:14 <+bridge> [ddnet] in c++ 21:14 <+bridge> [ddnet] safe rust has potential 21:15 <+bridge> [ddnet] I know about pointers yea 21:15 <+bridge> [ddnet] do you know about allocating memory on the heap 21:15 <+bridge> [ddnet] ye 21:15 <+bridge> [ddnet] in c its malloc in c++ its new 21:15 <+bridge> [ddnet] where are u at 21:15 <+bridge> [ddnet] whats ur progress 21:16 <+bridge> [ddnet] i know c pretty well, in cpp im reading this huge freaking book Programming Principles and Practice using C++ 21:16 <+bridge> [ddnet] and im on page 120/1k+ 21:16 <+bridge> [ddnet] chapter 4.smth 21:16 <+bridge> [ddnet] oh reading a book 21:16 <+bridge> [ddnet] well have fun 21:16 <+bridge> [ddnet] u have better way? 21:16 <+bridge> [ddnet] xd 21:16 <+bridge> [ddnet] Do you think its good? I am considering picking up a cpp book 21:16 <+bridge> [ddnet] i like this book yea 21:17 <+bridge> [ddnet] i find most books boring, i enjoy programming by doing stuff 21:17 <+bridge> [ddnet] i picked it up for free from google tho 21:17 <+bridge> [ddnet] ddnet is such stuff 21:17 <+bridge> [ddnet] but each has their own way to learn 21:17 <+bridge> [ddnet] Oh lol, you're just reading it from the pdf? 21:17 <+bridge> [ddnet] yea 21:18 <+bridge> [ddnet] i wanna see what's the "most principled cpp" way first before xd 21:18 <+bridge> [ddnet] i also listened to Bjarne's talks on yt and he seemed to know what's up xdd 21:18 <+bridge> [ddnet] only sane way tbh 21:18 <+bridge> [ddnet] u read books and forget 99% 21:19 <+bridge> [ddnet] well i'm not only reading 21:19 <+bridge> [ddnet] also doing stuff ofc, only did small programs tho in c++ for now 21:19 <+bridge> [ddnet] like printing out the frequency of each word from stdin 21:20 <+bridge> [ddnet] @Not Keks i would only read books for truly complicated stuff 21:20 <+bridge> [ddnet] like cryptography 21:20 <+bridge> [ddnet] https://joyofcryptography.com/ 21:21 <+bridge> [ddnet] i also have another 21:21 <+bridge> [ddnet] about perfomance 21:21 <+bridge> [ddnet] if only i could find it 21:21 <+bridge> [ddnet] https://en.algorithmica.org/hpc/ 21:21 <+bridge> [ddnet] this 21:21 <+bridge> [ddnet] this one is a really good source 21:21 <+bridge> [ddnet] for high perfomance computing 21:22 <+bridge> [ddnet] ok thats more math than coding imo 21:22 <+bridge> [ddnet] i mean when do u implement a crypto lib yourself xD 21:22 <+bridge> [ddnet] https://www.codewars.com/ 21:22 <+bridge> [ddnet] do problems from here 21:22 <+bridge> [ddnet] good website 21:23 <+bridge> [ddnet] user driven 21:23 <+bridge> [ddnet] :monkalaugh: 21:23 <+bridge> [ddnet] feel free to add me as friend 21:24 <+bridge> [ddnet] Are those different from just leetcode algorithm memorization tests? 21:24 <+bridge> [ddnet] i guess 21:24 <+bridge> [ddnet] they are made by users 21:24 <+bridge> [ddnet] from that website 21:24 <+bridge> [ddnet] is this kinda like hackerrank.com idk if you heard of it 21:24 <+bridge> [ddnet] u can also make problems 21:25 <+bridge> [ddnet] codewars is better than those imho 21:25 <+bridge> [ddnet] more friendly 21:25 <+bridge> [ddnet] ah nice 21:25 <+bridge> [ddnet] also i love the japanese aethetic 21:25 <+bridge> [ddnet] i love battles 21:25 <+bridge> [ddnet] i liked doing stuff from hackerrank and https://projecteuler.net/ 21:25 <+bridge> [ddnet] but not today i have headache 21:26 <+bridge> [ddnet] I find books to be the only way to learn something in-depth. Mostly because other resources are usually very lacking. Especially the case with C and C++ 21:26 <+bridge> [ddnet] projecteuler is more math-y but it's nice 21:26 <+bridge> [ddnet] yeah u probs can only find the obscure things of c++ in books 21:26 <+bridge> [ddnet] High quality modern learning resources just don't exist for these dinasaur languages 21:26 <+bridge> [ddnet] Dinosaur* 21:26 <+bridge> [ddnet] specially c++ 21:26 <+bridge> [ddnet] c++ is so complicated 21:27 <+bridge> [ddnet] its insane 21:27 <+bridge> [ddnet] c is simple 21:27 <+bridge> [ddnet] well 21:27 <+bridge> [ddnet] ub makes it not so simple 21:27 <+bridge> [ddnet] C has few quirks. C++ is just one big quirk 21:30 <+bridge> [ddnet] tbh i find all languages kinda hard, depends really what u do 21:31 <+bridge> [ddnet] yeah 21:31 <+bridge> [ddnet] when i use bind in javascript and have no template placeholders its hard 21:31 <+bridge> [ddnet] because in programming, simplicity makes things complicated 21:31 <+bridge> [ddnet] nice 21:31 <+bridge> [ddnet] i invented a quote 21:31 <+bridge> [ddnet] ill save it 21:31 <+bridge> [ddnet] nice 21:31 <+bridge> [ddnet] now get fame 21:31 <+bridge> [ddnet] and ppl will quote u in 200 years 21:31 <+bridge> [ddnet] 21:32 <+bridge> [ddnet] but srsly sometimes i find simple library so insanly hard xD 21:32 <+bridge> [ddnet] 21:32 <+bridge> [ddnet] bcs they are not always very intuitive even for simple problems 21:32 <+bridge> [ddnet] sometimes u cant have simple stuff 21:32 <+bridge> [ddnet] because technology is complicated 21:32 <+bridge> [ddnet] xd 21:33 <+bridge> [ddnet] xd 21:33 <+bridge> [ddnet] thats probs why x86 sucks 21:33 <+bridge> [ddnet] bcs its so bloated and complicated xD 21:33 <+bridge> [ddnet] true 21:33 <+bridge> [ddnet] invent new arch pls 21:34 <+bridge> [ddnet] yes pls 21:34 <+bridge> [ddnet] https://xkcd.com/927/ 21:35 <+bridge> [ddnet] https://doc.rust-lang.org/book/ 21:35 <+bridge> [ddnet] this is a pretty neat book 21:35 <+bridge> [ddnet] :BASED: 21:36 <+bridge> [ddnet] ctrl+T -> ctrl+F "rust" 'no matches' -> ctrl+W 21:37 <+bridge> [ddnet] or u have java with 10000000000000000000000000000 ways to solve the same problem xd 21:37 <+bridge> [ddnet] just that every new version is 0.0001% faster than the one before 21:37 <+bridge> [ddnet] and gets hyped xD 21:37 <+bridge> [ddnet] xd 21:37 <+bridge> [ddnet] @Not Keks there are some perf improvements 21:38 <+bridge> [ddnet] with new gc research 21:38 <+bridge> [ddnet] better paralelization 21:38 <+bridge> [ddnet] yeah java is decent 21:38 <+bridge> [ddnet] python or some other stuff is slower, and what do they do to fix it? 21:38 <+bridge> [ddnet] write c libraries 21:38 <+bridge> [ddnet] https://javamana.com/2021/01/20210115131703791G.html 21:38 <+bridge> [ddnet] and bind them into the langauge xD 21:39 <+bridge> [ddnet] > The Z Garbage Collector (ZGC) is a scalable low latency garbage collector. ZGC performs all expensive work concurrently, without stopping the execution of application threads for more than 10ms, which makes is suitable for applications which require low latency and/or use a very large heap (multi-terabytes). 21:39 <+bridge> [ddnet] 10ms tho 21:39 <+bridge> [ddnet] xd 21:39 <+bridge> [ddnet] just use rust 4head 21:40 <+bridge> [ddnet] technology actually so complicated 21:40 <+bridge> [ddnet] i wanna be in a world without computers :feelsbadman: 21:40 <+bridge> [ddnet] @Not Keks do u think its true cpus are developed with C in mind 21:40 <+bridge> [ddnet] ofc 21:40 <+bridge> [ddnet] sad 21:41 <+bridge> [ddnet] i mean what purpose would rings have if software is 100% proven 21:41 <+bridge> [ddnet] there is no security issue if there is no untrusty software ๐Ÿ˜„ 21:41 <+bridge> [ddnet] :monkalaugh: 21:42 <+bridge> [ddnet] but tbf i cannot say when the time will come where quality stands over quantity again 21:42 <+bridge> [ddnet] and developing in higher lvl languages is simply often faster 21:42 <+bridge> [ddnet] and making everything a string xdddd 21:42 <+bridge> [ddnet] 21:42 <+bridge> [ddnet] i swear when i am in javascript everything suddenly a string 21:44 <+bridge> [ddnet] xd 21:44 <+bridge> [ddnet] https://wtfjs.com/ 21:45 <+bridge> [ddnet] ```js 21:45 <+bridge> [ddnet] typeof NaN === 'number' // true 21:45 <+bridge> [ddnet] Infinity === 1/0 // true 21:45 <+bridge> [ddnet] 0.1 + 0.2 === 0.3 // false 21:45 <+bridge> [ddnet] ``` 23:43 <+bridge> [ddnet] the last one is a classic about floating point 23:48 <+bridge> [ddnet] the 2nd one is completly logic & true