09:47 <+bridge> [ddnet] meh.. please NO account system, its not tw anymore with registration ! :< 12:38 <+bridge> [ddnet] Anyone online want to give their thoughts on this PR: 12:38 <+bridge> [ddnet] https://github.com/ddnet/ddnet/pull/3654 12:38 <+bridge> [ddnet] 12:38 <+bridge> [ddnet] I'm hoping to code/complete the feature layer today. I think the suggestion by kamillentee might be the right approach. 12:42 <+bridge> [ddnet] Anyone online want to give their thoughts on this PR: 12:42 <+bridge> [ddnet] https://github.com/ddnet/ddnet/pull/3654 12:42 <+bridge> [ddnet] 12:42 <+bridge> [ddnet] I'm hoping to code/complete the feature later today. I think the suggestion by kamillentee might be the right approach. 16:33 <+bridge> [ddnet] https://kornel.ski/rust-c-speed something that resonates with me, as I'm currently writing almost-C for https master servers 16:57 <+bridge> [ddnet] Why not rust? 16:57 <+bridge> [ddnet] eh, client part 16:57 <+bridge> [ddnet] server part is rust 16:57 <+bridge> [ddnet] Ah, I see πŸ˜› 16:57 <+bridge> [ddnet] I would have went with python to prototype and c++ to implement 16:57 <+bridge> [ddnet] hm. server part is rust + nginx right now 16:58 <+bridge> [ddnet] i see lot of rust posts ppl saying x program in rust is slower than xi n java, and it was what to_lowercase does lot of unicode stuff, they just had to change it to make_ascii_lowercase 16:58 <+bridge> [ddnet] Most of these kinds of benchmarks suffer from the same silliness 16:58 <+bridge> [ddnet] I saw one where they were sorting vectors and the C++ one was creating a copy of the vector after every swap... 16:59 <+bridge> [ddnet] oh and also the writer thing 16:59 <+bridge> [ddnet] if they dont wrap the writer in a bufwriter it flushes byte by byte 16:59 <+bridge> [ddnet] so they made the program slower than the python one 16:59 <+bridge> [ddnet] it can be said that this is unexpected and can lead to programs being slower in rust than in C/Python/Java 17:00 <+bridge> [ddnet] rusts likes things being explicit than implicit 17:00 <+bridge> [ddnet] actually in java u have to wrap the filewriter in a buffered writer too 17:00 <+bridge> [ddnet] Well I have one piece of advice, don’t use languages that you are not familiar with 17:00 <+bridge> [ddnet] so its not something uncommon 17:00 <+bridge> [ddnet] libc automatically switches between line buffering/block buffering depending on output redirection 17:00 <+bridge> [ddnet] that can be nice for performance πŸ™‚ 17:00 <+bridge> [ddnet] Not like the languages are made for kindergartners 17:01 <+bridge> [ddnet] ```java 17:01 <+bridge> [ddnet] PrintWriter out 17:01 <+bridge> [ddnet] = new PrintWriter(new BufferedWriter(new FileWriter("foo.out"))); 17:01 <+bridge> [ddnet] ``` 17:01 <+bridge> [ddnet] xd 17:01 <+bridge> [ddnet] fcking java 17:01 <+bridge> [ddnet] yeah 17:01 <+bridge> [ddnet] but they always come to the reddit rust 17:01 <+bridge> [ddnet] crying 17:01 <+bridge> [ddnet] "gottem!!!" 17:01 <+bridge> [ddnet] like they rly try hard to prove rust is nto perfomant 17:02 <+bridge> [ddnet] are you maybe talking about "children"? kindergarteners are people who oversee children (at least in german) 17:02 <+bridge> [ddnet] kinder 17:02 <+bridge> [ddnet] Well they are looking in the wrong place. Rusts shortcomings sre very well documented 17:02 <+bridge> [ddnet] they come to the rust subreddit for advice, nothing wrong with that IMO 17:02 <+bridge> [ddnet] i know kinder is kid due to the chocalte egg 17:02 <+bridge> [ddnet] chocolate egg 17:02 <+bridge> [ddnet] iirc 17:02 <+bridge> [ddnet] Hm, in english a kindergartner would be someone attending as a child. I think 17:02 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/820326071475109908/640x640.png 17:03 <+bridge> [ddnet] xdddd 17:03 <+bridge> [ddnet] the rust subreddit explicitly encourages asking questions 17:03 <+bridge> [ddnet] hm interesting 17:03 <+bridge> [ddnet] false friends and all 17:03 <+bridge> [ddnet] i guess a kindergartener would be the one taking care 17:03 <+bridge> [ddnet] String formatting is a great place to poke at rust or the binary size 17:03 <+bridge> [ddnet] kinder-garten means "garden for children" 17:03 <+bridge> [ddnet] the blog also says something, c programs have 30mb of std lib already in the system 17:03 <+bridge> [ddnet] so they tend to be smaller 17:03 <+bridge> [ddnet] but its a bit misleading 17:04 <+bridge> [ddnet] ``` 17:04 <+bridge> [ddnet] > ls -lh /usr/lib/libc-2.32.so 17:04 <+bridge> [ddnet] -rwxr-xr-x 1 root root 2.1M Oct 14 19:00 /usr/lib/libc-2.32.so* 17:04 <+bridge> [ddnet] ``` 17:04 <+bridge> [ddnet] I never checked in rust but with C you can pretty much not link to libc at all if you prefer 17:04 <+bridge> [ddnet] no 30MB 17:04 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/820326508572704768/unknown.png 17:04 <+bridge> [ddnet] Or link statically with an already tiny one like ulibc or musl and let LTO rip 17:05 <+bridge> [ddnet] yes, works for rust, too, but formatting is hard to avoid 17:05 <+bridge> [ddnet] one thing i found useful is the include_bytes! macro 17:05 <+bridge> [ddnet] so useful to test stuff 17:05 <+bridge> [ddnet] I remember reading a blog post with someone doing rust on embedded. He had to get rid of error handling in most places to not pull in fmt 17:05 <+bridge> [ddnet] 17:06 <+bridge> [ddnet] error handling or panics? 17:06 <+bridge> [ddnet] Aah panics it was, yes 17:06 <+bridge> [ddnet] I think he managed to get it to print out a static string at the end tho 17:06 <+bridge> [ddnet] @Ryozuki use permalinks. press y before copying the link πŸ™‚ 17:06 <+bridge> [ddnet] https://github.com/edg-l/teestatus/blob/bf009dcc65a95ebaf057ab9800275d63bea043d5/src/server_v2.rs#L189 17:07 <+bridge> [ddnet] 🧐 17:08 <+bridge> [ddnet] ` fn parse_main>(data: &'a S)` :monkalaugh: 17:09 <+bridge> [ddnet] AsRef magic 17:09 <+bridge> [ddnet] that leads to monomorphisation costs unless you immediately call another function without the type parameter 17:10 <+bridge> [ddnet] `fn parse_main_inner(data: &'a [u8]) -> …` 17:10 <+bridge> [ddnet] (the function will be duplicated for each type you call it with in the final executable) 17:10 <+bridge> [ddnet] πŸ‘€ 17:10 <+bridge> [ddnet] Did you see the new function syntax for C++? I never saw it in the wild even tho it’s been in since C++11 17:11 <+bridge> [ddnet] I wonder why the return type at the end took off so much 17:11 <+bridge> [ddnet] you mean the auto -> ? 17:11 <+bridge> [ddnet] Yep 17:11 <+bridge> [ddnet] Every new language has that syntax now 17:11 <+bridge> [ddnet] it's easier to parse and easier to grep for, I like it 17:11 <+bridge> [ddnet] and it's also the syntax in maths 17:12 <+bridge> [ddnet] easier to parse as in that you need a less complex automaton to recognize it 17:12 <+bridge> [ddnet] It’s easier for the compiler but I’m so used to spotting it at the start of the line 17:12 <+bridge> [ddnet] it's really nice I can grep for functions in rust via 'fn function_name' 17:13 <+bridge> [ddnet] in C I have to hope that they follow the "return type on separate line" coding convention 17:13 <+bridge> [ddnet] wireshark follows it 17:14 <+bridge> [ddnet] That looks weird to me, I usually just grep for / function_name\(.*\)$/ 17:14 <+bridge> [ddnet] that also gets calls 17:14 <+bridge> [ddnet] Discord ate my backslashes πŸ˜› 17:14 <+bridge> [ddnet] @heinrich5991 17:14 <+bridge> [ddnet] i always keep in mind what you said about accepting [u8] instead of vecs, you think that recommendation is applicable here still? i need to modify the contents of those buffers btw 17:14 <+bridge> [ddnet] I personally don’t mind 17:14 <+bridge> [ddnet] But I can see it being an issue in a massive codebase 17:15 <+bridge> [ddnet] well 17:15 <+bridge> [ddnet] the buffers should already have the size needed 17:15 <+bridge> [ddnet] so maybe using u8 is better 17:15 <+bridge> [ddnet] take `&mut [Vec]` ? 17:16 <+bridge> [ddnet] what about the inner vec 17:16 <+bridge> [ddnet] the Vec -> &[] conversion only applies unconditionally for the outermost layer 17:16 <+bridge> [ddnet] okay, even there, unconditionally is wrong. if you need to call functions like push or reserve, take a vec there 17:17 <+bridge> [ddnet] no i dont need 17:17 <+bridge> [ddnet] hm 17:17 <+bridge> [ddnet] you could take a single buffer πŸ™‚ 17:17 <+bridge> [ddnet] and split off as much as you need each time 17:17 <+bridge> [ddnet] i made this a zero copy parser, it saves the recv content in the buffer and returns a view of that content as a ServerInfo struct 17:17 <+bridge> [ddnet] i needed 2 buffers due to the more packet 17:17 <+bridge> [ddnet] maybe a single buffer is better 17:17 <+bridge> [ddnet] take a &mut [u8] 17:18 <+bridge> [ddnet] you can split it with split_mut_at (or similar) after receiving the first packet 17:19 <+bridge> [ddnet] Hm, being zero-copy means it can’t work on architectures that can’t do unaligned access, right? 17:19 <+bridge> [ddnet] zero copy probably means "copy the ints"? 17:19 <+bridge> [ddnet] here 17:19 <+bridge> [ddnet] ah yea 17:19 <+bridge> [ddnet] the ints are copied i guess 17:19 <+bridge> [ddnet] its not fully zero copy 17:19 <+bridge> [ddnet] Makes sense 17:19 <+bridge> [ddnet] the strings are not copied tho 17:20 <+bridge> [ddnet] which theorically is most of the content? 17:20 <+bridge> [ddnet] maybe it doesnt make sense to make this 0 copy 17:20 <+bridge> [ddnet] What if a string is unaligned? Does that fail at compilation even? 17:21 <+bridge> [ddnet] "no unaligned access" on platforms means "the standard method of getting integers only works on aligned addresses" 17:21 <+bridge> [ddnet] (this always refers to "all platforms that I know") 17:21 <+bridge> [ddnet] strings (as character arrays) can still be unaligned 17:21 <+bridge> [ddnet] > A string slice (&str) is made of bytes (u8), and a byte slice (&[u8]) is made of bytes, so this function converts between the two. Not all byte slices are valid string slices, however: &str requires that it is valid UTF-8. from_utf8() checks to ensure that the bytes are valid UTF-8, and then does the conversion. 17:21 <+bridge> [ddnet] idk im not rly informed about this align stuff 17:21 <+bridge> [ddnet] you can still have unaligned ints, but need different methos of accessing them 17:22 <+bridge> [ddnet] in rust you'd probably make a new type "unaligned int" that as a value function 17:22 <+bridge> [ddnet] Well ofc there is a way, I bet LLVM can even do the shift for you on such platforms 17:22 <+bridge> [ddnet] in rust you'd probably make a new type "unaligned int" that has a value function 17:23 <+bridge> [ddnet] oh i get it now 17:23 <+bridge> [ddnet] But accessing an int should be no different to accessing a char 17:23 <+bridge> [ddnet] right now i do a little hack in the parser tho 17:23 <+bridge> [ddnet] i check if its the end by checking if there are 17:23 <+bridge> [ddnet] consecutive \0 17:23 <+bridge> [ddnet] 2* 17:23 <+bridge> [ddnet] ouch πŸ˜„ 17:23 <+bridge> [ddnet] can't you pass a slice? 17:24 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/820331370676355092/unknown.png 17:24 <+bridge> [ddnet] its cuz i found it rly simple with nom 17:24 <+bridge> [ddnet] xd 17:24 <+bridge> [ddnet] nom probably supports "many_until_eof" or similar 17:24 <+bridge> [ddnet] its a bit sad the packet doesnt tell u how many players are there 17:24 <+bridge> [ddnet] in the current packet 17:24 <+bridge> [ddnet] but the buffer is filled with lot of \0 17:24 <+bridge> [ddnet] because i use a bigger packet than what its filled 17:24 <+bridge> [ddnet] no, because you ignore the recv return value 17:25 <+bridge> [ddnet] true 17:25 <+bridge> [ddnet] xd 17:25 <+bridge> [ddnet] @Learath2 @heinrich5991 need your input here πŸ™‚ https://github.com/ddnet/ddnet/issues/3411 17:25 <+bridge> [ddnet] ok ill check that 17:25 <+bridge> [ddnet] @Zodiac such a rush πŸ˜› I saw it, can I take a day or so to form my opinion? ^^ 17:25 <+bridge> [ddnet] I like the idea 17:26 <+bridge> [ddnet] i got a new theme for my neovim, this time is the ayu dark theme :poggers: 17:26 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/820332023310843914/unknown.png 17:26 <+bridge> [ddnet] haha I am bored and want to be productive. Blocked on /swap and accounts. 17:27 <+bridge> [ddnet] I'll look at my feature list and see if there is something else I can do 17:27 <+bridge> [ddnet] sorry. this is such a "we're doing a change and will be stuck with it forever" PR, so I don't want to do stupid mistakes 17:29 <+bridge> [ddnet] definitly dont call it /otp 17:29 <+bridge> [ddnet] Yeah fair enough and if we did rush it we wouldn't have gotten the latest idea. I'll look at something different 17:30 <+bridge> [ddnet] @heinrich5991 do you want the verification to be a code or a clickable link? 17:30 <+bridge> [ddnet] in the email 17:30 <+bridge> [ddnet] I have not thought about this 17:30 <+bridge> [ddnet] clickable link is less friction 17:31 <+bridge> [ddnet] i have yet to hear what deen thinks about all of this too 17:31 <+bridge> [ddnet] code might be less susceptible to phishing 17:31 <+bridge> [ddnet] I have it some thought but couldn't think of a simple way to feed back to the client 17:31 <+bridge> [ddnet] I have given it some thought but couldn't think of a simple way to feed back to the client 17:32 <+bridge> [ddnet] Email -> website -> master server -> client 17:32 <+bridge> [ddnet] but will need a way to know which client to send to 17:32 <+bridge> [ddnet] @heinrich5991 have you thought about putting all this auth commands behind https? 17:32 <+bridge> [ddnet] emails are sensitive data afterall 17:32 <+bridge> [ddnet] a command is not encrypted 17:33 <+bridge> [ddnet] I'm in favor of not doing this until we get an encrypted connection, but I hadn't publicly said so yet because I thought you rather want accounts than more delays ^^ 17:33 <+bridge> [ddnet] Thought you were working on the HTTPS part? 17:33 <+bridge> [ddnet] Team effort πŸ˜„ 17:33 <+bridge> [ddnet] i wonder why u meantion master servers in the accounts issue 17:33 <+bridge> [ddnet] I'm working on the https server list, this isn't quite related to accounts, I think 17:34 <+bridge> [ddnet] the client can already speak HTTPS, that's no problem 17:34 <+bridge> [ddnet] @heinrich5991 should the auth server-side stuff be on its own "microservice" too? 17:34 <+bridge> [ddnet] and then servers talk to it or something? 17:35 <+bridge> [ddnet] I don't know much about that, it's probably better if others design that part 17:35 <+bridge> [ddnet] I think it could be 17:35 <+bridge> [ddnet] ^ 17:35 <+bridge> [ddnet] an HTTPS endpoint would be nice, idc how it's implemented 17:36 <+bridge> [ddnet] :monkalaugh: 17:36 <+bridge> [ddnet] time to push rust into ddnet :monkalaugh: 17:36 <+bridge> [ddnet] From the server side, it is rather straight forward. Never connected via a CPP client before 17:36 <+bridge> [ddnet] I can help you with that, for me the server side isn't as straightforward 17:36 <+bridge> [ddnet] I was going to suggest creating the backend accounts API in C# 17:36 <+bridge> [ddnet] ew 17:36 <+bridge> [ddnet] never 17:36 <+bridge> [ddnet] only did that in python so far, and only small projects πŸ˜„ 17:36 <+bridge> [ddnet] ** waits for uproar πŸ˜„ 17:37 <+bridge> [ddnet] languages we already use in ddnet: C, C++, Python (and nim) 17:37 <+bridge> [ddnet] it would be best if it was one of those πŸ˜‰ 17:37 <+bridge> [ddnet] :feelsbadman: 17:37 <+bridge> [ddnet] it would be best, it's not a strict requirement 17:38 <+bridge> [ddnet] There is so much hate for C# due the legacy. NET Core is open-source and has so much built-in functionality. Could create the BE accounts system in a day 17:38 <+bridge> [ddnet] it's just that every dependency makes it harder to deploy πŸ˜‰ 17:38 <+bridge> [ddnet] Python isn't a bad alternative 17:38 <+bridge> [ddnet] c# reminds me of M$$ and u can just use java if u go that way 17:38 <+bridge> [ddnet] python being dynamic doesnt appeal to me 17:38 <+bridge> [ddnet] C# isn't a bad language. I don't know how friction less it runs on linux. do you *use* it on linux @Zodiac? 17:39 <+bridge> [ddnet] Also has a lot of support and could allow for a quick solid implementation 17:39 <+bridge> [ddnet] @heinrich5991 to use c# on linux u have to install 300mb software called mono 17:39 <+bridge> [ddnet] @heinrich5991 it is multi-platform 17:39 <+bridge> [ddnet] "multi platform" 17:39 <+bridge> [ddnet] I know it's multiplatform 17:39 <+bridge> [ddnet] using C on windows is also a PITA 17:39 <+bridge> [ddnet] We host our C# apps on linus 17:39 <+bridge> [ddnet] We host our C# apps on linux 17:39 <+bridge> [ddnet] ah 17:40 <+bridge> [ddnet] Cheaper πŸ˜„ 17:40 <+bridge> [ddnet] Anyway, just a thought. The solution needs to be decided first. 17:40 <+bridge> [ddnet] I knew it wouldn't be a popular one. 17:40 <+bridge> [ddnet] I think python is also a strong option. Been meaning to learn the ins-outs of it as well 17:41 <+bridge> [ddnet] thats so boring 17:41 <+bridge> [ddnet] Telemetry is enabled by default but can be disabled by setting environment variable DOTNET_CLI_TELEMETRY_OPTOUT=1. 17:42 <+bridge> [ddnet] :monkalaugh: 17:42 <+bridge> [ddnet] my rust/c++/c/python compiler/interpreter doesn't come with telemetry 17:42 <+bridge> [ddnet] Boring often means easier πŸ™‚ 17:42 <+bridge> [ddnet] not rly 17:42 <+bridge> [ddnet] i dont like how python scales due to it being dynamic typed 17:42 <+bridge> [ddnet] @Learath2 know how I can get a std::shared_ptr of my own class? 17:43 <+bridge> [ddnet] and nobody rly uses type hints 17:43 <+bridge> [ddnet] I basically want to define a method on std::shared_ptr so I can pass myself to antoher thread 17:43 <+bridge> [ddnet] Yeah I can't speak much about Python. 17:43 <+bridge> [ddnet] we can use the fearless concurrency of rust instead of the nobo python GIL :monkalaugh: 17:43 <+bridge> [ddnet] python would probably scale by using multiple processes there 17:44 <+bridge> [ddnet] if u want something easy i would use golang before python 17:44 <+bridge> [ddnet] u can learn go in 1 day 17:44 <+bridge> [ddnet] but rust is the best 17:44 <+bridge> [ddnet] C# has Tasks which pretty much gives concurrency out of the box 17:44 <+bridge> [ddnet] \\(T)/ 17:44 <+bridge> [ddnet] Issue free 17:44 <+bridge> [ddnet] You can just make_shared no? 17:45 <+bridge> [ddnet] @Zodiac u can get data races in c# right? 17:45 <+bridge> [ddnet] :greenthing: 17:45 <+bridge> [ddnet] I have a function ::SpawnTask() 17:45 <+bridge> [ddnet] that wants to pass itself to a thread 17:45 <+bridge> [ddnet] so I kind of want to ensure that my own class lives as long as the thread 17:46 <+bridge> [ddnet] the easiest way would be to already be behind a std::shared_ptr, so I could just clone that 17:46 <+bridge> [ddnet] I don't know if I can formulate that in C++ though 17:46 <+bridge> [ddnet] (or rust, for that matter) 17:47 <+bridge> [ddnet] hm, then again I'm accessing engine, and I can't guarantee that lives long enough 17:47 <+bridge> [ddnet] The framework handles most of the complexity and protects against most of that. Can't remember the last time I had a race condition. 17:47 <+bridge> [ddnet] 17:47 <+bridge> [ddnet] But anyways, I am not meaning to come out as C# is the best language. Just that it gets some unnecessary hate due to the pre .NET Core days. 17:47 <+bridge> [ddnet] ouch, bolting on concurrency on top of our code works badly 17:47 <+bridge> [ddnet] I have also heard good things about RUST - just haven't used it myself 17:49 <+bridge> [ddnet] well i talk about it here nearly every other day :monkalaugh: 17:50 <+bridge> [ddnet] I'm going to put ```// Just pretend `this` and its `m_pEngine` live longer than the thread.``` there and call it a day 17:50 <+bridge> [ddnet] :monkaS: 17:53 <+bridge> [ddnet] have fun with it 17:53 <+bridge> [ddnet] @Zodiac u mentioned dota 2 in the github right? 17:53 <+bridge> [ddnet] actually dota 2 community resembles this one a lot 17:53 <+bridge> [ddnet] its all made up of old players 17:53 <+bridge> [ddnet] we have a lot of new players 17:53 <+bridge> [ddnet] maybe not on discord 17:54 <+bridge> [ddnet] btw the strong vote got more than 80 votes iirc 17:54 <+bridge> [ddnet] thats way more than the usual ppl chatting here 17:54 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/820339164008546324/unknown.png 17:55 <+bridge> [ddnet] same here 17:55 <+bridge> [ddnet] there is definitly looking here and they dont talk 17:55 <+bridge> [ddnet] ppl* 17:55 <+bridge> [ddnet] Yeah, there definitely are parallels. The same issues/danger could be had if Valve used /r/dota2 is its guide on decisions 17:55 <+bridge> [ddnet] Yeah, there definitely are parallels. The same issues/danger could be had if Valve used /r/dota2 is its decision maker 17:56 <+bridge> [ddnet] actually valve does a lot of things r/dota2 mentions 17:56 <+bridge> [ddnet] They do use it as a source but not as the deciding vote 17:57 <+bridge> [ddnet] There are a number of times the subreddit was heavily against a decision made by Valve 17:57 <+bridge> [ddnet] They just represent a portion of a larger community 17:57 <+bridge> [ddnet] Like @heinrich5991 said there are lots of new players. Just not on discord 17:58 <+bridge> [ddnet] #join-leave 17:58 <+bridge> [ddnet] there is quite lot of ppl joining everyday 17:58 <+bridge> [ddnet] they just dont talk 17:58 <+bridge> [ddnet] which is quite normal 17:58 <+bridge> [ddnet] blending in a discord is not easy 17:58 <+bridge> [ddnet] Joining and being active participant are two different things 17:58 <+bridge> [ddnet] we had 2000 players yesterday. this discord has a member count of 5000 17:59 <+bridge> [ddnet] I don't think more than 1000 of these had a discord account joined in this server 17:59 <+bridge> [ddnet] if they are interested they would 17:59 <+bridge> [ddnet] Especially the asian countries 17:59 <+bridge> [ddnet] Discord is banned in China 17:59 <+bridge> [ddnet] well china is a different matter 17:59 <+bridge> [ddnet] Which actually is our largest community 17:59 <+bridge> [ddnet] i rly dislike the barrier 17:59 <+bridge> [ddnet] There is also a language barrier 17:59 <+bridge> [ddnet] i literally know nothing of whats happening there 17:59 <+bridge> [ddnet] ye 17:59 <+bridge> [ddnet] sad 18:00 <+bridge> [ddnet] All I am saying is that there is a likelihood that the feedback we rely on is bias towards skilled players and certain demographics 18:00 <+bridge> [ddnet] It is something to be aware of. Doesn't mean to disregard the input 18:01 <+bridge> [ddnet] its ppl who played this game for years, they rly like this game, disregarding the input would be rly bad imho 18:02 <+bridge> [ddnet] Completely agreed πŸ™‚ It is very important to listen to the feedback. The difference is to not make it the only channel/decider. 18:02 <+bridge> [ddnet] there are lot of games that have this type of "hidden mechanic" (strong weak hook) in this case, and learning those mechanics makes you a better player 18:02 <+bridge> [ddnet] its also a sense of effort 18:02 <+bridge> [ddnet] i rly dont want it removed 18:03 <+bridge> [ddnet] also the strong weak hook on novice you wont care most of the time 18:03 <+bridge> [ddnet] unless you optimize for top ranks 18:03 <+bridge> [ddnet] it matters most on edgehook maps and other brutal maps 18:04 <+bridge> [ddnet] There are parts that are a lot easier if you so happen to have strong. /spec and /unspecing isn't a skill but rather a knowledge barrier. 18:04 <+bridge> [ddnet] and nothing wrong with a knowledge barrier 18:04 <+bridge> [ddnet] hm 18:04 <+bridge> [ddnet] you can do that novice part 18:04 <+bridge> [ddnet] knowledge barrier doesn't seem useful to me 18:04 <+bridge> [ddnet] its only normal to expect players to be more invested the more they go into harder maps 18:05 <+bridge> [ddnet] yes, removing things you have to know sounds good to me though 18:05 <+bridge> [ddnet] all else being equal 18:05 <+bridge> [ddnet] i dont like removing things you have to know 18:05 <+bridge> [ddnet] it removes depth 18:05 <+bridge> [ddnet] a depth that lot of players love 18:05 <+bridge> [ddnet] It is a knowledge barrier for the sake of it and creates a bad user experience 18:06 <+bridge> [ddnet] The alternative would be to have a very obvious indicator of who has strong/weak, then a clear method to /spec. 18:06 <+bridge> [ddnet] if you create hints that tell you that /spec exists and that it can be used for changing weak/strong, then that removes a knowledge barrier 18:06 <+bridge> [ddnet] I see absolutely nothing wrong with that 18:06 <+bridge> [ddnet] well i wasnt talking about spec tbh 18:06 <+bridge> [ddnet] there are maps without it 18:06 <+bridge> [ddnet] https://media.discordapp.net/attachments/342454474117218334/820094495634358287/unknown.png 18:06 <+bridge> [ddnet] and u have to plan the strong weak partsa beforehand if u want to optimize it 18:06 <+bridge> [ddnet] BROKEN @Zodiac 18:07 <+bridge> [ddnet] hmm. UNK? 18:07 <+bridge> [ddnet] UNK means unknown 18:07 <+bridge> [ddnet] country 18:07 <+bridge> [ddnet] @Kenzoo thanks Kenzoo - will look into it. What server and map is this? 18:07 <+bridge> [ddnet] its block chilean srv 18:07 <+bridge> [ddnet] idk why its unk 18:08 <+bridge> [ddnet] maybe block servers don't have server location configured 18:12 <+bridge> [ddnet] But can you see how this might be an example of favouring advanced players at the expense of new players? 18:13 <+bridge> [ddnet] 18:13 <+bridge> [ddnet] The situation that it benefits advanced players is minimal where most of the time it is an unnecessary extra. Where the avg player/new players unknowingly have a worse experience or find parts harder. 18:13 <+bridge> [ddnet] 18:13 <+bridge> [ddnet] What I am trying to get at is that we have a natural bias to older players, which we need to be aware of. To give an hypothetical. What if there a "Newbies Encouraged! " WhatsApp group and we used that to make decision on strong/weak. Do you think the same decision would have been made? 18:13 <+bridge> [ddnet] they dont find parts harder in novice 18:13 <+bridge> [ddnet] Or moderate 18:13 <+bridge> [ddnet] I played teeworlds for 2 years and didn't know about strong 18:13 <+bridge> [ddnet] i dont think it matters much in moderato too 18:13 <+bridge> [ddnet] moderate 18:14 <+bridge> [ddnet] until the high end 18:14 <+bridge> [ddnet] and there is when u should already know about this 18:14 <+bridge> [ddnet] Hammer flying is easier if the person on the top has strong 18:14 <+bridge> [ddnet] It allows you to fall down slower 18:14 <+bridge> [ddnet] As long as a class that lives long enough holds a shared ptr to your class it'll live long enough. Idk which part you are having trouble with 18:14 <+bridge> [ddnet] hammer flying with weak in novices doesnt matter 18:14 <+bridge> [ddnet] its more useful to control the going down 18:14 <+bridge> [ddnet] which i never seen was needed in novice 18:15 <+bridge> [ddnet] I am not trying to make this about strong πŸ™‚ 18:15 <+bridge> [ddnet] I am using that as an example 18:15 <+bridge> [ddnet] In this hypothetical can we assume Strong creates a worse experience for new players 18:15 <+bridge> [ddnet] no 18:15 <+bridge> [ddnet] πŸ˜… 18:17 <+bridge> [ddnet] weak sucks remove it 18:19 <+bridge> [ddnet] remove strong 18:24 <+bridge> [ddnet] @heinrich5991 is the mysqlcpp connector removed already on 15.3.2? 18:24 <+bridge> [ddnet] gotta know so i can update the arch aur 18:34 <+bridge> [ddnet] no 20:30 <+bridge> [ddnet] so 20:31 <+bridge> [ddnet] i want a command that bind a key so it emote at a certain frequence a certain emote (smthing like 1time/s 20:31 <+bridge> [ddnet] i want a command that bind a key so it emote at a certain frequence a certain emote (smthing like 1time/s) 20:31 <+bridge> [ddnet] not possible 20:33 <+bridge> [ddnet] D: sadness is huge 20:56 <+bridge> [ddnet] @Astramast `just do bind key emote [number 1-16]` 20:56 <+bridge> [ddnet] the emotes will be spammed depending on what setting the server uses 20:56 <+bridge> [ddnet] @Astramast just do `bind key emote [number 1-16]` 20:56 <+bridge> [ddnet] the emotes will be spammed depending on what setting the server uses 21:36 <+bridge> [ddnet] no but i dont want to spam like 300 emotes/s 21:36 <+bridge> [ddnet] i want like 1/s or smthing 22:21 <+bridge> [ddnet] Would be amazing, Teeworlds is open source, so u can code it if u want πŸ™‚ 22:22 <+bridge> [ddnet] we need dota's high five in teeworlds. id love that xD 22:40 <+bridge> [ddnet] @Learath2 for ping calculation, should a server be able (with a fallback provided by the master server) to select a country? or should the master server have sole control over this? 22:52 <+bridge> [ddnet] Idk how you intend to do ping 22:59 <+bridge> [ddnet] wanted to do ping estimates based on geolocation 23:29 <+bridge> [ddnet] Hm, I think the master controls that 23:31 <+bridge> [ddnet] Nim made it into a major tech news website, but maybe not with the best topic πŸ˜„ https://www.zdnet.com/article/this-malware-was-written-in-an-unusual-programming-language-to-stop-it-from-being-detected/ 23:33 <+bridge> [ddnet] "unusual" 23:33 <+bridge> [ddnet] :monkalaugh: 23:34 <+bridge> [ddnet] https://roy.marples.name/archives/dhcpcd-discuss/0003457.html 23:34 <+bridge> [ddnet] :feelsbadman: 23:36 <+bridge> [ddnet] https://news.ycombinator.com/item?id=26449179 23:36 <+bridge> [ddnet] actually true comments 23:36 <+bridge> [ddnet] im sure this software runs in millions of servers yet no one knows this guy who is about to be gone.. 23:36 <+bridge> [ddnet] ppl only care about tv ppl :feelsbadman: 23:45 <+bridge> [ddnet] deen helps make malware programming language :monkalaugh: 23:47 <+bridge> [ddnet] I haven't helped with Nim for years now 23:48 <+bridge> [ddnet] i find it funny that most ppl dont know where the test sv password "nimrocks" comes from :monkalaugh: