00:13 < bridge_> you can use gold, but its value would be a lot less if we talk about its physical properties. the rest is literally just like bitcoin. it has value because people say it has value 00:16 < bridge_> no 00:16 < bridge_> not really 00:16 < bridge_> encrypted and authenticated connection 00:29 < bridge_> you can't make bitcoin in Jewlery which is the largest demand for gold. 00:29 < bridge_> you can't make bitcoin in Jewelry which is the largest demand for gold. 00:30 < bridge_> you can't make bitcoin into Jewelry which is the largest demand for gold. 00:31 < bridge_> I think if the price was lower there would be significantly more going into electronics 01:01 < bridge_> yes, jewelry is another point of value for gold 01:01 < bridge_> I'm not sure it's valued for its appearance or for its value though 01:01 < bridge_> are metals that look like gold as valuable? 01:12 < bridge_> pyrite? 01:19 < bridge_> I think the value comes from a lot of things, gold never oxidizes so it stays shiny when you find it naturally. I don't think many metals do that. Probably for that same reason it has been used as a form of currency for like 6000 years because it was so easy to identify. 01:22 < bridge_> I think even 6000 years ago it was used in Jewelry because it had value so it kinda sustained a self fulfilling value for most of recorded history, which of course makes people want it now. 01:22 < bridge_> The current price is also basically the same price that costs to produce it 01:23 < bridge_> got a source? probably to obtain it, I don't think producing is feasible 01:24 < bridge_> https://www.americanbullion.com/the-cost-of-producing-an-ounce-of-gold/ 01:24 < bridge_> ah, maybe "produce" is a different word than "produzieren"? 01:24 < bridge_> I wouldn't say "produzieren" in german for gold 01:24 < bridge_> idk 01:24 < bridge_> cost to mine it and purify 01:25 < bridge_> it says $1000-$1200 per ounce 01:25 < bridge_> market price is $1900 01:27 < bridge_> the link says it depends on the region 01:27 < bridge_> but yea, it's within one order of magnitude 01:28 < bridge_> it probably also costs around 1 btc to mine a new btc ^^ 01:29 < bridge_> yeah 01:29 < bridge_> although miners also charge fees to make up the difference 01:30 < bridge_> bitcoin is weird because the price depends on how many other people are trying to mine it 01:30 < bridge_> bitcoin is weird because the price to produce depends on how many other people are trying to mine it 01:31 < bridge_> yea 01:35 < bridge_> Seems to be alot fake lol 02:20 < bridge_> will this help with ddos? 08:03 < bridge_> In future it might help. It allows to use UDP with connections, so the filter can more easily know which traffic is legit. But apparently right now cloud flare has not done it yet 08:39 < ChillerDragon> routing gaming traffic through bloatflare sounds like horrible ping to me 08:41 < bridge_> I guess they also offer protections for real time applications 08:41 < bridge_> Maybe not for free tho xd 08:43 < bridge_> 🦂 08:44 < ChillerDragon> https://zillyhuhn.com/cs/.1691131441.png 08:45 < bridge_> 😬 09:44 < bridge_> yo, how can i transfrom &[u32] to &[u32; 256]? :D 09:54 < bridge_> With or without unsafe? 09:54 < bridge_> whats the easiest to understand? LD 09:54 < bridge_> whats the easiest to understand? :D 09:54 < bridge_> I dunno if rust even allows such big arrays tbh xd 09:54 < ChillerDragon> rust pro does 09:55 < bridge_> Well if u don't care about perf. Create that array. Copy the slice over 09:55 < bridge_> heinrich did this but ive no clue how that works 😦 09:55 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1136930438292709466/image.png 09:55 < bridge_> accounts. secrets not being transferred in plain text. chat not being transferred in plain text 09:55 < ChillerDragon> hows ddnet2 going jopsti 09:56 < bridge_> I'm in holidays chiller, latest source is on github 09:56 < ChillerDragon> where 09:56 < bridge_> reverse-proxying of servers no longer being useful for stealing player secrets 09:56 < bridge_> eh, wrong quote 09:56 < bridge_> would make me more comfortable routing traffic through third-parties, maybe we could try steam's offering then 09:57 < bridge_> https://github.com/Jupeyy/dd-pg/tree/test2 09:57 < ChillerDragon> where is the bus with the people that care 09:57 < ChillerDragon> xd jk 09:57 < ChillerDragon> i meant where you on holidays 09:57 < bridge_> 😬 09:57 < bridge_> Somewhere in the Netherlands 09:57 < ChillerDragon> blazingly netherlands 09:58 < bridge_> you can use `.try_into()` these days, I think 09:58 < bridge_> give coordinates 09:58 < ChillerDragon> lerato you better be quiet you still owe us a selfie in your university 09:58 < bridge_> 1.0, 2.0 09:58 < bridge_> try into 09:59 < bridge_> iirc 09:59 < bridge_> too late :p 09:59 < bridge_> rust allows big arrays, the limit is ur stack iirc 09:59 < bridge_> That's off the coast of ghana, liar 09:59 < ChillerDragon> trol 09:59 < bridge_> ```rs 09:59 < bridge_> let x: Result<[u32; 256], _> = slice.try_into(); 09:59 < bridge_> ``` 09:59 < bridge_> But the default initialization is limited isn't it 10:00 < bridge_> Ghana is Netherlands colony 10:00 < bridge_> only due to backcompat and due to missing specialization 10:00 < bridge_> 🥹 10:00 < bridge_> i dont think so, i think the limit u talk about is initializing a big array in the heap cuz no placement new? 10:00 < bridge_> ah idk 10:00 < bridge_> i think with generics thats not a problem anymore 10:00 < bridge_> idk 10:00 < bridge_> const 10:00 < bridge_> generics* 10:00 < bridge_> This troll 10:01 < bridge_> @milkeeycat good job starting friday rust 10:01 < bridge_> Oh true 10:01 < bridge_> He did my job 10:01 < bridge_> xd 10:01 < bridge_> nah, due to backcompat it's a problem. you can only `Default::default()` arrays of up to size 32 currently 10:01 < bridge_> in last few days ive learnt so much 10:01 < bridge_> about bits, bytes, operations on them 10:02 < bridge_> > Arrays of sizes from 0 to 32 (inclusive) implement the Default trait if the element type allows it. As a stopgap, trait implementations are statically generated up to size 32. 10:02 < bridge_> > 10:02 < bridge_> > Arrays of sizes from 1 to 12 (inclusive) implement From, where Tuple is a homogenous tuple of appropriate length. 10:02 < bridge_> ur right 10:02 < bridge_> but try_into works 10:02 < bridge_> Ok, 600km off the coast of ghana ddnet meetup, lets go 10:02 < bridge_> > Slices have a dynamic size and do not coerce to arrays. Instead, use slice.try_into().unwrap() or ::try_from(slice).unwrap(). 10:02 < bridge_> @milkeeycat https://doc.rust-lang.org/std/primitive.array.html 10:02 < bridge_> all the info is here btw 10:02 < bridge_> I think a ddnet meetup would end up in chaos 10:03 < bridge_> > Array’s try_from(slice) implementations (and the corresponding slice.try_into() array implementations) succeed if the input slice length is the same as the result array length. They optimize especially well when the optimizer can easily determine the slice length, e.g. <[u8; 4]>::try_from(&slice[4..8]).unwrap(). 10:03 < bridge_> C vs rust 10:03 < bridge_> Backcomp vs future humans 10:03 < bridge_> Since I hate irl conflict I'm very much a pushover irl, it'll be fine 10:03 < bridge_> this would have sounded better if u said the classic line "somewhere in nevada..." 10:03 < bridge_> For collect I still have to use an arrayvec 🥹 10:04 < bridge_> https://tenor.com/view/madness-combat-itsa-latiospoon-hank-tricky-gif-21423933 10:04 < bridge_> i watched to much madness combat 10:04 < bridge_> I mean Netherlands is small 10:04 < bridge_> @heinrich5991 do u think rust can achieve a non or semi cooperative preemptive scheduler like go? 10:05 < bridge_> does go have a preemptive scheduler? 10:05 < bridge_> since 1.19 i think 10:05 < bridge_> link? 10:05 < bridge_> tokio is just cooperative 10:05 < bridge_> https://stackoverflow.com/questions/73915144/why-is-go-considered-partially-preemptive 10:05 < bridge_> > 10:05 < bridge_> > 10:05 < bridge_> > My answer is built on top of Andrew and Daniel's answers, and entirely based on this talk. 10:05 < bridge_> > 10:05 < bridge_> > Since go 1.14, the go scheduler is non-cooperative pre-emptive. Each go routine is pre-empted after a certain time slice. It's 10ms in go 1.19.1. 10:05 < bridge_> > 10:05 < bridge_> > In the talk I mentioned earlier, starting 20:35, you can find the history about how the scheduler used purely co-operative pre-emption in 1.0, then compiler baked in pre-emption with go 1.2, and finally the current nature - non-coperative pre-emption. 10:06 < bridge_> i know tokio is cooperative, thats why i ask 10:06 < bridge_> i think with a systems programming lang it might be hard 10:06 < bridge_> What even is this btw? Why the double cast? Why to _ 10:06 < bridge_> ? 10:07 < bridge_> all questions to heinrich 10:07 < bridge_> but it works :p 10:07 < bridge_> btw if u want to make a ptr without making a intermediate reference, https://doc.rust-lang.org/stable/std/ptr/macro.addr_of.html is better 10:07 < bridge_> > Creating a reference with &/&mut is only allowed if the pointer is properly aligned and points to initialized data. For cases where those requirements do not hold, raw pointers should be used instead. However, &expr as *const _ creates a reference before casting it to a raw pointer, and that reference is subject to the same rules as all other references. This macro can create a raw pointer without creating a reference first. 10:07 < bridge_> My guess Double cast bcs pointer of type, pointer of void 10:08 < bridge_> ye the double cast is common 10:08 < bridge_> _ BCS lazy 10:08 < bridge_> https://stackoverflow.com/questions/50384395/why-does-casting-from-a-reference-to-a-c-void-pointer-require-a-double-cast 10:08 < bridge_> ok i think this is unrelated 10:09 < bridge_> The preview looks like what I meant 10:09 < bridge_> @milkeeycat but just use try_into 10:09 < bridge_> Why can't one go to void ptr directly I wonder 10:09 < bridge_> i did 10:09 < bridge_> and its even better if u take a slice of ur slice 10:09 < bridge_> with the length 10:09 < bridge_> i think 10:09 < bridge_> ` They optimize especially well when the optimizer can easily determine the slice length, e.g. <[u8; 4]>::try_from(&slice[4..8]).unwrap().` 10:10 < bridge_> but better check godbolt xd 10:10 < bridge_> Explicitness I guess xd 10:11 < bridge_> Where is this from btw? 10:11 < bridge_> huffman coding in libtw2 10:11 < bridge_> i think first cast is from reference to pointer of typeof freq, then a cast to void 10:12 < bridge_> yes, it's not supported, it'd need compiler support 10:14 < bridge_> It's very meh that I can't read this piece of code without an IDE, type inference was a mistake :pepeW: 10:15 < ChillerDragon> woah we got gui errors now? :D 10:15 < ChillerDragon> fancy 10:15 < ChillerDragon> https://zillyhuhn.com/cs/.1691136896.png 10:15 < bridge_> Then u'd also need to prefix all variables with type prefixes 10:15 < bridge_> https://github.com/heinrich5991/libtw2/blob/2c77f799f0e40ff80c2580c6ff0ed8ad19041c4e/huffman/src/lib.rs#L209 10:16 < bridge_> I'd say it's only missing experience 10:16 < bridge_> ChillerDragon fancy af isn't it? 10:16 < ChillerDragon> yes! 10:16 < ChillerDragon> very windows user friendly 10:16 < ChillerDragon> did you build that? 10:16 < bridge_> Their names? I don't mind the name not having the information as long as I can refer to the deifnition for the type 10:16 < bridge_> the first cast can only be to the same type 10:16 < bridge_> and the second one must be to the type expected in `from_frequencies 10:16 < bridge_> and the second one must be to the type expected in `from_frequencies` 10:17 < bridge_> Yeah but somewhere in the usage of the variable it would be clear what type it has 10:17 < bridge_> First cast is understandable, second cast is tougher, because there is a &* outside 10:18 < bridge_> can only be the target type, otherwise type inference doesn't work 10:19 < bridge_> i.e. `*const [u32; 256]` 10:19 < bridge_> I see 10:19 < bridge_> @heinrich5991 would u use try into nowadays 10:19 < bridge_> in that code? 10:19 < bridge_> obviously 10:19 < bridge_> was just curious 10:19 < bridge_> xd 10:19 < bridge_> it does the same as `.try_into().unwrap()` 10:19 < bridge_> I'd still rather have my types explicit there 10:19 < bridge_> but back then, `try_into()` didn't exist 10:19 < bridge_> but I have an old spirit, don't mind me 10:20 < bridge_> @learath2 the more u talk like this the more u seem like a old man nagging xd 10:20 < bridge_> "i have an old spirit" 10:20 < bridge_> XDddd 10:20 < bridge_> :oldchrono: 10:20 < bridge_> Life has instantly added 30 years to my age 10:20 < bridge_> :feelsOldMan: <- me 10:21 < bridge_> :pepeW: 10:21 < bridge_> Back when we only had registers we never encountered such array cast problems 10:21 < bridge_> true 10:21 < bridge_> imagine having types 10:22 < bridge_> in C, you'd also just omit the check, probably 10:22 < bridge_> This entire function doesn't make much sense in C anyway 10:22 < bridge_> No slices, it's all pointers 10:22 < bridge_> nicely placed asserts can make the optimizer improve perf right? 10:22 < bridge_> i always forget to place asserts 10:22 < bridge_> always place assert!s about assumptions you make 😉 10:22 < bridge_> yeah 10:23 < bridge_> it's nice to find bugs 10:23 < bridge_> but i just dont have the habit 10:23 < bridge_> i need to get that habit 10:23 < bridge_> If panic is your first instruction, then that improves performance 10:23 < bridge_> but a assert checking a array len 10:23 < bridge_> If you pipe all output into /dev/null it helps a lot with performance 10:23 < bridge_> allows the opt to make assumptions 10:24 < bridge_> Yep, is always the question how far the compiler does tho 10:24 < bridge_> https://www.youtube.com/watch?v=b2F-DItXtZs 10:24 < bridge_> > I've always admired the write performance of the /dev/null schema-less database, the read performance however is a little lacking, but this is offset by /dev/null's data compression ... totally unmatched! :))))) 10:25 < bridge_> Ryozukis holy grail 10:25 < bridge_> This video 10:25 < bridge_> its just so funny 10:25 < bridge_> and so meme 10:25 < bridge_> You just need to read from it until enough bits are flipped by cosmic rays, it should only take about 2 heat deaths of the universe, it's acceptable read performance 10:25 < bridge_> why these characters talk about dev 10:29 < bridge_> ChillerDragon did u try to run it in release 10:29 < bridge_> To enjoy the map loading perf 10:29 < bridge_> That's the only selling point right now 10:29 < bridge_> So I have to strongly highlight it 10:30 < bridge_> I used mongodb for sth recently btw, it truly is web scale 10:31 < bridge_> And since variants are so nice in rust u get the network packets as structs 10:31 < bridge_> you turn it on and it just scales, just like that 10:31 < bridge_> :pepeW: 10:31 < bridge_> Instead of getstring lmao 10:33 < bridge_> @scar17off did u forgot some files here? 10:34 < bridge_> Or what black magic does this make work 10:35 < bridge_> no 10:35 < bridge_> or yes 10:35 < bridge_> idk 10:38 < bridge_> ok done 10:38 < bridge_> wait not 10:40 < bridge_> `strstr(m_ppServerlist[i]->m_Info.m_aName, "whitelist")` 10:40 < bridge_> we use `str_find` btw @scar17off 13:28 < ChillerDragon> !ping 13:28 < chillerbot> pong 13:28 < bridge_> Command not found! 13:28 < ChillerDragon> pog quakent scaled back up 13:28 < ChillerDragon> you turn it on 13:28 < ChillerDragon> and it just scales up, like that 14:15 < ChillerDragon> is the server browser rendering a insible version column? :D 14:28 < ChillerDragon> https://zillyhuhn.com/cs/.1691152063.png 14:28 < ChillerDragon> check this out fellow 0.7 enjoyers 14:31 < bridge_> Version column is actually pretty funny, you can place any text in there :troll: 14:34 < ChillerDragon> trololol 14:34 < bridge_> ChillerDragon do you talk to me, myself and I, when u say 0.7 enjoyers? 14:57 < ChillerDragon> axaxax 15:05 < ChillerDragon> jopstinger checkout this trol code 15:05 < ChillerDragon> https://github.com/ddnet/ddnet/blob/ea7e8faa8e8278145808b6d3f7ed416ff8715913/src/game/client/components/menus_browser.cpp#L374-L378 15:05 < ChillerDragon> it adds a version lable to the server list 15:05 < ChillerDragon> but this code never runs 15:25 < bridge_> Yeah very troll that u bought it back to life xd 15:51 < ChillerDragon> im quality medic reviving dead code 16:25 < bridge_> ChillerDragon oh no so many IRC discord bugs. I guess u have to fix all before working on useless ddnet again 16:25 < bridge_> how "un"fortunate 16:35 < ChillerDragon> hrhrhr 16:36 < ChillerDragon> im kinda blocked to work on irc discord because i can for the life of it not connect to irc from my vps using nodejs 16:36 < ChillerDragon> works locally or with the vps using weechat 16:37 < ChillerDragon> i get no error and it just does not connect so idk wat to do. Probably henrich lifebanned bridge name because he is true 0.7 enjoyer 18:44 < bridge_> https://github.com/Teelevision/TeeCaptcha can captcha protect us from ddos? 19:01 < bridge_> No 19:01 < ChillerDragon> real OGs use my teecaptcha btw 19:01 < ChillerDragon> https://github.com/TeeCaptcha/tee-captcha 19:01 < ChillerDragon> has better marketing with image in readme 19:01 < bridge_> Yes 19:02 < bridge_> ChillerDragon 19:02 < ChillerDragon> ryo 19:03 < bridge_> do u know timakro captcha 19:03 < ChillerDragon> no 19:03 < ChillerDragon> is it cool? 19:03 < ChillerDragon> is it teeish? 19:03 < ChillerDragon> is it on trashmap? 19:03 < bridge_> wait i forgot 19:04 < bridge_> https://github.com/timakro/captcha-code-js 19:04 < bridge_> its funny 19:04 < ChillerDragon> oh that ye 19:04 < ChillerDragon> remeber it 19:06 < bridge_> Yes 19:06 < bridge_> 😬 19:06 < ChillerDragon> jopsti became random boolean generator 19:06 < bridge_> No 19:06 < ChillerDragon> xd 19:06 < bridge_> NaN 19:07 < bridge_> ChillerDragon when do u open first class streaming platform? 19:07 < bridge_> why does float need nan? 19:07 < ChillerDragon> whats first class supposed to mean 19:07 < bridge_> BCS devs are bad 19:07 < bridge_> Zero lag, zero ping, zero accounts 19:07 < ChillerDragon> zero accounts twitch alternative? xd 19:08 < bridge_> Yes 19:08 < ChillerDragon> have you tried irc? 19:08 < bridge_> For streaming? Sounds like a very good idea 19:08 < ChillerDragon> i know thanks 19:08 < ChillerDragon> twitch also uses it 19:08 < ChillerDragon> must be good 19:08 < bridge_> True 19:09 < bridge_> False 19:09 < bridge_> 😬 19:09 < ChillerDragon> omg 19:09 < ChillerDragon> lawayer jopsti 19:09 < ChillerDragon> i got removed from ddnet++ credits 19:09 < ChillerDragon> what are my rights? 19:10 < bridge_> Who removed you 19:10 < ChillerDragon> the russians! 19:10 < bridge_> Then simply add it back 19:11 < ChillerDragon> They host their own russian ddnet++ fork which i have no access to .-. 19:11 < ChillerDragon> i need to start a legal battle 19:11 < bridge_> Would be funny 19:11 < ChillerDragon> xd 19:12 < bridge_> Would be cool if it works out 19:12 < ChillerDragon> dont think my license covers it 19:12 < ChillerDragon> they would rape me in court 19:13 < bridge_> You could write a letter to putin 19:13 < bridge_> I bet he cares and has time for you 19:13 < ChillerDragon> you do pro bono right? 19:13 < bridge_> Wat 19:14 < ChillerDragon> free and open source lawyer jospti and partners 19:14 < bridge_> Yeah ofc 19:17 < bridge_> sorry, i think its made by chillerdragon, i dont wanna touch that 19:17 < bridge_> may be we should make a whitelist only servers? 19:18 < bridge_> you just tell admins ur ip and u can join 19:18 < bridge_> Destroyed 19:18 < bridge_> @smetanolub if you don't want your server to be ddosed don't register it in master server 19:20 < ChillerDragon> fak bad chiler brand? 19:20 < ChillerDragon> i need to hire new marketing manager 19:20 < bridge_> i dont want to die when i almost beat r1 on solo cuz ddnet is almost always have packetloss, and if not its under ddos 19:21 < bridge_> even when its perfectly fine ping just jumps, its not stabler 19:21 < bridge_> even when its perfectly fine ping just jumps, its not stable 19:21 < bridge_> captcha is at least something we can do 19:21 < bridge_> like for ger10 u join site, why not put captcha there? 19:21 < bridge_> some google shit idc 19:22 < bridge_> Bro, it won't do anything xd 19:23 < bridge_> yeah... then what will do? account system? my own ddnet verified lan server? 19:23 < bridge_> we doesnt have that 19:23 < bridge_> Is ger10 also unstable for you? 19:23 < bridge_> yes 19:23 < bridge_> and its even worse than rus and ger2 19:23 < bridge_> I think they are the only servers with custom ddos filter 19:23 < bridge_> on ger10 packetloss is 25-50% almost always 19:23 < bridge_> ger2 is around 10% and not always 19:23 < bridge_> Account system won't help 19:24 < bridge_> rus is without it but still not stable 19:24 < bridge_> Reverse proxies might help a bit 19:24 < bridge_> nothing will help, cuz guy sold his parents car and house to spent it on ddos 19:24 < bridge_> Or if cloud flare adds quic protection some day, that will help 19:24 < bridge_> allow me to fucking start a lan offline server which counts ranks 19:24 < bridge_> Sad but true xd 19:24 < bridge_> for at least solo and dummy maps 19:25 < bridge_> dont even tell me you cant do that cuz cant protect it from cheats 19:25 < bridge_> We could theoretically allow uploading inputs of a run to verify a rank.. but it's a hard topic really 19:26 < bridge_> all cheats existing rn works oflline and online perfectly even with ddnet lags 19:26 < bridge_> Will it increase cheating etc 19:26 < bridge_> can you increase it higher? 19:26 < ChillerDragon> yes lets rebrand lag as anti cheat 19:26 < bridge_> everyone exept old players use cheats rn 19:26 < ChillerDragon> high ping makes replay bot harder 19:26 < bridge_> almost all new players use cheat clients 19:26 < ChillerDragon> > almost all new players use cheat clients 19:26 < ChillerDragon> WATF 19:26 < bridge_> bro im from rus ddnet communiity 19:27 < bridge_> i know who bots, when, with what client 19:27 < bridge_> and i wont tell you 19:27 < bridge_> Good idea xd 19:27 < bridge_> i think its GOOD to cheat ingame where others cheaters exist but no anticheat 19:27 < bridge_> Wtf 19:28 < bridge_> Ok enough internet for the moment 19:28 < bridge_> teehistorian really? to bypass it they use 90 degrees bind so it wont teleport 19:28 < bridge_> oh crosshair teleport for aimbot? they dont use it, cuz triggerhook exists 19:28 < ChillerDragon> xd 19:28 < bridge_> if you both have cheats and competit, its ok 19:29 < bridge_> no advocating cheats please 19:30 < bridge_> idk about ger much, but many rus players that come after game came to steam use cheats, cuz they join block gamemode, and ppl there just sell cheats 19:30 < bridge_> like mur and others 19:30 < bridge_> i dont 19:30 < bridge_> > i think its GOOD to cheat if […] 19:30 < bridge_> yes, you did 19:31 < bridge_> i just play it to competition, and if the guy which i play uses it-i will use it too 19:31 < bridge_> no, stop it 19:31 < ChillerDragon> @smetanolub please tell @learath2 about your idea on how to fix ddos its really good captchas and so on maybe he did not think of it yet 19:31 < bridge_> if you can catch me-do it i will take punishment 19:31 < bridge_> cheating is not okay. it's just like blocking 19:31 < bridge_> i think there are captchas like google captcha, why cant we use it? 19:31 < bridge_> because adding a captcha doesn't help 19:32 < bridge_> even if google wont share it, there are many others who did their own captcha 19:32 < ChillerDragon> ask @learath2 he likes discussing that 19:32 < bridge_> but it does hurt, people will need to solve captchas 19:32 < bridge_> lets think about it 19:32 < bridge_> how to bypass captcha? 19:32 < bridge_> dont make it ingame in chat obviously at least 19:32 < bridge_> attacks against game servers work by sending packets to the game server's IP address 19:33 < bridge_> lets make servers where only admin can whitlist ppl they know 19:33 < bridge_> if you only show the IP address after a captcha, the attacker will solve the captcha and then attack the game server 19:33 < bridge_> learath did it in the past and it did work 19:33 < bridge_> you haven't gained anything 19:33 < bridge_> can we discuss the captcha to the end first? 19:33 < bridge_> you said why captcha doesnt help, why argue? you know better, im not a dev 19:34 < bridge_> okay, next idea: 19:34 < bridge_> private servers 19:34 < bridge_> captcha is just one of many thing we could think of 19:34 < bridge_> I don't like them. it favors established players 19:34 < bridge_> yea 19:34 < bridge_> and its good 19:34 < bridge_> if you allow 3pts player join insane map, something is wrong bro 19:35 < bridge_> I wouldn't want to equate points to skill 19:35 < bridge_> very roughly maybe, but points are mostly about how much time you spent finishing ddnet maps 19:35 < bridge_> you know that i talk not about pts, but about that player is new to game and he didnt even play yet 19:35 < bridge_> no, it seemed to me like you talk about points. okay, let's say a new player 19:36 < bridge_> I think a new player has every right to join a game server with a map that the new player can't finish 19:36 < bridge_> why 19:37 < bridge_> because they want to see people play, for example 19:37 < bridge_> you can just add them to pause 19:38 < bridge_> who would decide who to whitelist? if it's "Learath2", then we either get an overworked Learath2 or many players who can't join 19:38 < ChillerDragon> and add ddos to pause too 19:38 < bridge_> uhhuh 19:38 < bridge_> by what criterion would we allow people to play on whitelisted servers? 19:38 < bridge_> Myr. is guy selling cheats 19:39 < bridge_> how long they play 19:39 < bridge_> lets say if guy plays 5 years, he can play something hard? 19:39 < bridge_> points 19:39 < bridge_> recomendations from old players 19:40 < bridge_> you decide, you the one who will develop it 19:40 < bridge_> well, if I decide then it's: we don't do it. favoring old players over old ones is bad 19:40 < bridge_> well, if I decide then it's: we don't do it. I think favoring old players over old ones is bad 19:40 < bridge_> :pepeW: 19:40 < bridge_> ? 19:40 < bridge_> okay lets play under ddos then 19:41 < bridge_> Just make accounts 🙂 19:41 < bridge_> its sad that i need to beg you to think about it 19:41 < bridge_> how does it protect from ddos???? 19:41 < bridge_> You send captcha to indian captcha farm, they solve it 19:42 < bridge_> How will captchas solve ddos anyway? You need to solve captcha to get whitelisted? 19:42 < bridge_> Can only join server if you have verified account 19:42 < bridge_> captcha is a crude idea that came to me when i thought about the question 0 seconds 19:42 < bridge_> if you said it wont work-dont argue it again 19:42 < bridge_> i just ask you to do at least something, i cant play without lags nowadays 19:42 < bridge_> ok cope with it 19:43 < bridge_> I'm just curious what you were thinking, no need to get heated 19:43 < bridge_> If it's a captcha to get whitelisted thing, it's not much better than our ger10 solution. Instead of a captcha we rely on a tcp handshake there 19:43 < bridge_> work is underway on protection against ddos? on anti-cheat? that's all i need 19:44 < bridge_> accounts would probably help with anticheat a little 19:44 < bridge_> @learath2 when we did play bit3 on ur server, noone had lags 19:44 < bridge_> @konsti 19:44 < bridge_> oops 19:44 < bridge_> for anticheat i think we must first make game closed source 19:44 < ChillerDragon> xd 19:44 < bridge_> if I ever finish the QUIC stuff, I might take a look at steam's reverse proxy services. that could help with DoS 19:44 < bridge_> fuck no 19:44 < bridge_> or at least, not putting source of teehistorian on internet 19:45 < bridge_> that's about as helpful as adding a captcha 19:45 < bridge_> @_noby is the anticheat department. Anti-ddos we tried lots of things, ger10 is kinda the last iteration of it. I don't think we have any other ideas to try, optimizing that with @davide55 can help, and there is the many reverse proxies idea we have but there is lots to be thought about 19:45 < bridge_> teehistorian is just about storing information that players send to the servers. making it closed source does not improve any security 19:45 < bridge_> since game is open source, and "anticheat" too, its impossible to catch someone who thinks a bit 19:45 < bridge_> at least on noby server anticheat is without source for people 19:46 < bridge_> so people dont use aimbot, only zoom and aimlines 19:46 < bridge_> We use the same anticheat as noby, the source is hidden for us too 19:46 < bridge_> that works because it's server-side. not because it's closed source 19:46 < bridge_> some people like me just use dummy, to parse tees position on map and bypass drawdistance 19:46 < bridge_> CSGO also has cheaters, and now? 19:46 < bridge_> but there are no aimbots at least 19:46 < ChillerDragon> csgo has no aimbots? 19:47 < bridge_> @smetanolub sorry, but admitting to cheating is too much. timed out 19:47 < bridge_> Rip 19:47 < ChillerDragon> censor5991 19:47 < bridge_> ChillerDragon you read out of context 19:47 < bridge_> LOL 19:47 < bridge_> smartest russian alive 19:47 < bridge_> :troll: 19:47 < ChillerDragon> omagawd jopsti is it me braincells or is it discord replies? 19:47 < bridge_> Reply 19:47 < ChillerDragon> henirch stop ban russian start ban reply 19:48 < bridge_> Tfw heinrich radicalised Smetanolub, now he'll go back to spamming the servers instead of giving helpful antiddos tips 19:48 < ChillerDragon> yes 19:48 < bridge_> @_voxeldoesart hi 19:48 < ChillerDragon> engage in conversation 19:48 < bridge_> wow that was helpful 19:48 < ChillerDragon> instead of encouraging cheating by exlcuding him 19:48 < bridge_> whats next? taking the servers and pushing them somewhere else? 19:49 < bridge_> maybe it will stop the ddos 19:49 < ChillerDragon> lerato got it 19:49 < bridge_> If you start servers on the Mars 19:49 < bridge_> Why not 19:49 < ChillerDragon> just run ddnet servers on apple hardware 19:49 < ChillerDragon> they patched ddos on the silicon 19:49 < bridge_> Though in all seriousness I think our very best bet is the many reverse proxies approach. We need lots of cheap proxy servers that we don't advertise the ips of but give out through one announceserver 19:49 < ChillerDragon> using room temperature 19:49 < bridge_> Xd 19:50 < bridge_> That is important 19:50 < bridge_> It works on room temperature 19:50 < ChillerDragon> @learath2 Though in all seriousness it would be cooler to use selfhosted proxies using heinrichs closed proxy support pr instead of relying on corpo steam 19:50 < bridge_> And some steam reverse proxies, steam ones probably will never die because valve stronk. So atleast steam players can have mostly a decent experience 19:50 < bridge_> Yep, with accounts this could™️ be managable 19:51 < bridge_> Yeah lots of open ones we host + some steam ones 19:51 < bridge_> and thus everyone, because people won't DoS our own reverse proxies 19:51 < bridge_> because it hits almost no one 19:51 < bridge_> You underestimate the brain damage some of these individuals suffer from 19:51 < ChillerDragon> rude 19:51 < bridge_> it's simple. people do it for impact. if it does no impact, then they won't do it 19:52 < bridge_> Learath is my hero 19:52 < bridge_> Sorry, s/brain damage/special behaviour/ 19:52 < bridge_> see e.g. our old masterservers 19:52 < bridge_> people don't DoS them anymore 19:52 < bridge_> because it's no use 19:52 < ChillerDragon> dodged a bullet there lerato 19:52 < ChillerDragon> if you rude against ddosers again i timeout you lerato 19:52 < bridge_> Xdd 19:53 < bridge_> Ok time for beach ⛱️ 19:53 < bridge_> But the reverse proxies will mostly be cheap servers, if we dont have enough of them they might collect the ips and have enough bw to dos them all 19:53 < ChillerDragon> just put a captcha in front of the ips 19:53 < bridge_> ?!? 19:53 < bridge_> I thought we were through with the captcha idea 19:53 < ChillerDragon> ok sorry i stop i must me so annoying xd 19:53 < bridge_> Some hosters allow buying servers for any time u want xd 19:54 < bridge_> Heinrich dies internally 19:54 < bridge_> anyway. I should continue on the quic stuff 19:54 < bridge_> still so much to do 19:54 < bridge_> Accounts will/can serve as some form of captcha anyway, dw about the captcha 19:55 < bridge_> DigitalOcean gave me the same ip when I reimaged a new server, so rerolling ips isn't trivial on most hosters, and might even be considered abuse :/ 19:55 < ChillerDragon> Wait so if i rent a server cancle it and buy a new i get the same ip! 19:56 < bridge_> aws could probably give you a bunch of IP addresses 19:56 < ChillerDragon> i totally did not expect that but i guess it makes sense they also dont want you to use their service to burn all their ips 19:56 < bridge_> but expensive traffic 19:56 < ChillerDragon> im sure that under a certain treshhold aws is free 19:56 < bridge_> You can spin up a new one before spinning down the old one for a new ip, but it's a little annoying to manage 19:57 < ChillerDragon> how many ips are you even aiming for? 19:57 < bridge_> nohello 19:57 < bridge_> I'd aim for less than 10 players per proxy if possible 19:57 < ChillerDragon> woah 19:57 < bridge_> But that might be cost prohibitive 😭 19:58 < ChillerDragon> what about ipv6 arent those basically free? 19:59 < ChillerDragon> or do we need the actual machine under it as well? 19:59 < ChillerDragon> i didnt fully get the idea 19:59 < ChillerDragon> can someone draw me a cool diagram how proxies solve ddos? :D 20:00 < bridge_> everyone gets their own "server" 20:00 < bridge_> but all the servers are just reverse proxies for the actual game server 20:00 < bridge_> you can DoS your own server if you want 20:00 < ChillerDragon> okay 20:00 < bridge_> but that just hits you 20:00 < ChillerDragon> but isnt the proxie redirecting the traffic? 20:00 < ChillerDragon> so also the dos packets? 20:01 < bridge_> the volumetric DoS traffic isn't teeworlds traffic 20:01 < bridge_> wow ok 20:01 < bridge_> so the reverse proxy would just drop it 20:01 < ChillerDragon> so the reverse proxy implements the tw protocol? 20:01 < bridge_> Wouldn't that be WAY too expensive? 20:01 < bridge_> I was trying to get the idea across 20:02 < bridge_> not give an implementation 20:03 < bridge_> You get lots of ipv6 per server, but those are routed per subnet, so we cant increase the amount of traffic we can process like that 20:03 < ChillerDragon> its network bandwith what is the limit not the cpu of the host? 20:04 < bridge_> Both, for our cheaper servers its cpu, for our more expensive servers its usually bandwidth 20:04 < ChillerDragon> i still did not get how the proxy would filter out bad backets 20:04 < bridge_> the easiest attacks are the volumetric attacks 20:05 < bridge_> where our servers are hit with reflected DNS traffic e.g. 20:05 < ChillerDragon> a 20:05 < ChillerDragon> so the attacker can not make those send valid tw udp packets 20:05 < bridge_> the reverse proxies wouldn't forward these 20:05 < bridge_> yes 20:05 < ChillerDragon> i see 20:05 < ChillerDragon> i assumed the attacker has full control over the payload 20:05 < bridge_> additionally, we can just drop the player if they send too much traffic 20:05 < ChillerDragon> true 20:05 < bridge_> And if it is valid tw traffic we still dont have to proxy as is. Nothing stops us from filtering on those too 20:06 < ChillerDragon> so how complex would the proxy be? 20:06 < ChillerDragon> how much of the protocol would it implement? 20:06 < ChillerDragon> does it keep state of in game stuff? 20:06 < bridge_> We can only allow whitelisted people to join the proxies in the first place, heavily filtering the amount of traffic from the hosters upstream firewall 20:06 < bridge_> a little as possible 20:06 < bridge_> no 20:07 < ChillerDragon> yea sounds good 20:07 < ChillerDragon> wouldnt need quic tho would it? 20:07 < bridge_> someone else can work on proxy stuff 20:07 < bridge_> It doesn't but I guess it might be a nice time to do the protocol change too 20:07 < bridge_> I'm doing quic first 20:08 < ChillerDragon> lets also drop 0.6 while at it :P 20:08 < bridge_> no 20:08 < ChillerDragon> sadge 20:09 < ChillerDragon> soon we have 4 competing standards 20:09 < ChillerDragon> gotta love it 20:09 < ChillerDragon> split the 1000 player base in chunks of 250 20:10 < bridge_> we only split it if we drop 0.6 20:10 < bridge_> not if we continue supporting both 20:10 < ChillerDragon> one part playing 0.6 the other playing 0.7 the other playing quic and the last playing ddnet2 20:10 < bridge_> tbf there's not a lot of players on 0.7 20:10 < ChillerDragon> guess why 20:10 < bridge_> on pure 0.7 20:10 < bridge_> because of the compatibility break to 0.6 20:10 < ChillerDragon> because ddnet held it back with its market share 20:10 < ChillerDragon> and dried out ctf 20:11 < bridge_> I think you're assigning blame to the wrong thing 20:11 < bridge_> 0.7 changed the network protocol 20:11 < bridge_> not ddnet 20:11 < ChillerDragon> cant blame vanilla to update the protocol every 10 years can you 20:12 < bridge_> they could have done it in a backward compatible fashion 20:12 < ChillerDragon> agreed 20:12 < bridge_> and that's the issue 20:12 < bridge_> you however seem to advocate breaking compatibility 20:12 < bridge_> when it was the thing that caused 0.7's death 20:12 < bridge_> when it is the thing that caused 0.7's death 20:13 < ChillerDragon> im trying to fix the incompability issue 20:13 < ChillerDragon> by enforcing one united standard again 20:13 < bridge_> great. make that quic 20:13 < bridge_> https://tenor.com/view/ba-dum-tsss-drum-band-gif-7320811 20:13 < bridge_> there's no point of changing to the 0.7 protocol 20:13 < ChillerDragon> will you implement quic for upstream? 20:13 < bridge_> it's not better than 0.6+ddnet extensions 20:14 < bridge_> probably not. because development died 20:14 < bridge_> I'll provide a library that you can use to implement support for it in teeworlds 0.7 20:15 < ChillerDragon> then quic will not be the united standard 20:15 < bridge_> because you don't implement it for teeworlds 0.7, urd 20:15 < bridge_> because you don't implement it for teeworlds 0.7, yes 20:15 < ChillerDragon> so i should do it? xd 20:15 < bridge_> you can do it if you want 20:15 < bridge_> I won't stop you 20:15 < bridge_> the library will probably make it somewhat easy 20:15 < ChillerDragon> bro it took me 2 years to get a half ass connection of ddnet client to 0.7 servers xd 20:16 < ChillerDragon> how even does the quic stuff work? 20:16 < ChillerDragon> does it unpack to the same traffic? 20:16 < bridge_> it's an actual standard 😉 20:16 < bridge_> yes 20:16 < bridge_> that's the plan 20:16 < ChillerDragon> so its quic + 0.6 20:17 < ChillerDragon> so adding quic to upstream would still be incompatible 20:18 < bridge_> it seems you want to achieve an impossible thing 20:18 < ChillerDragon> yea i want vanilla and ddnet to be compatible again 20:18 < bridge_> you want ddnet clients to be able to connect to 0.7 servers? 20:18 < ChillerDragon> yes 20:19 < bridge_> that's an interesting extension and I'd be okay with that 20:19 < bridge_> however, ddnet will not change to a worse protocol fo it 20:19 < bridge_> however, ddnet will not change to a worse protocol for it 20:21 < bridge_> to me it'd be okay if the ddnet client *also* supported the 0.7 protocol 20:21 < bridge_> but that will not make ddnet speak the 0.7 protocol to ddnet servers. because that's just worse than our own protocol 20:21 < ChillerDragon> how is it worse? 20:22 < bridge_> it doesn't support encryption, authentication, and is not standard 20:22 < ChillerDragon> so our already refers to quic 20:22 < bridge_> well, the 0.7 protocol is also not better than 0.6 20:22 < bridge_> well, the 0.7 protocol is also not better than 0.6+ddnet extensions 20:22 < bridge_> hmm 20:22 < ChillerDragon> why not 20:22 < bridge_> not a lot ^^ 20:22 < bridge_> why is it? 20:22 < ChillerDragon> well okay not better maybe 20:22 < ChillerDragon> but not worse 20:22 < ChillerDragon> i would say 20:23 < ChillerDragon> imo replacing 0.6+ddnet with 0.7+ddnet is totally fine 20:23 < bridge_> doesn't help though 20:23 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1137088391205359656/xzqfmjhd04gb1.webp 20:23 < ChillerDragon> plus the benefit of native upstream compat 20:23 < bridge_> it doesn't provide a lot of benefits 20:23 < bridge_> and mostly downsides 20:23 < ChillerDragon> agreed actually 20:23 < bridge_> we probably have more players on old ddnet versions than players on 0.7 20:24 < ChillerDragon> sounds true 20:24 < ChillerDragon> thing is i do not see teeworlds downgrading to 0.6 20:25 < bridge_> u dont see tw moving at all 20:25 < bridge_> its ded 20:25 < bridge_> (disclaimer: this is not a attack to any project) 20:25 < ChillerDragon> xd 20:25 < bridge_> xd 20:26 < bridge_> it would be fun to see a well structured tw, without any backcompat stuff, just a blank start 20:26 < bridge_> using the knowledge from current tw 20:26 < ChillerDragon> ddnet2 20:27 < bridge_> even ddnet2 would have legacy code 20:27 < ChillerDragon> jopsti is not adding back compat is he? 20:27 < bridge_> but u need to keep physics bugs 20:27 < bridge_> ok thats backcompat 20:27 < bridge_> nvm 20:27 < ChillerDragon> there are no bugs 20:27 < ChillerDragon> just features 20:27 < bridge_> iirc the sg bug is UB 20:28 < ChillerDragon> then make it non UB 20:28 < bridge_> I think someone made it non-UB already 20:28 < ChillerDragon> ez 20:28 < ChillerDragon> ddnet without sg bug would be worse change my mind 20:29 < ChillerDragon> @ryozuki lets also patch the wallhammer :p 20:29 < bridge_> lets patch chillerbot 20:29 < ChillerDragon> ._. 20:30 < bridge_> true 20:30 < bridge_> lets patch 4 dummies 20:30 < bridge_> i want ddnet 2.0 to be so complex with with its graphics youd need an nvidea to play it properly (joke) 20:30 < bridge_> :gigachad: 20:30 < ChillerDragon> if you cant run ddnet2 buy new pc 20:30 < bridge_> jesus christ no thanks 20:31 < bridge_> how do you get the elasticity tunes btw 20:31 < ChillerDragon> i cant wait for new annoying vasten100 tune maps 20:32 < bridge_> vasten100 legend 20:32 < bridge_> up n down 20:32 < ChillerDragon> if i say my true opinion about vasten and up n down 20:32 < ChillerDragon> heirnich would even open irc to ban me out of existance 20:33 <@heinrich5991> I'm ready 20:33 < ChillerDragon> ou shit 20:33 < bridge_> bossfight 20:33 < ChillerDragon> while i disagree with vasten100s style of mapping i have to say he is a totally fine individual 20:35 < bridge_> nice save 20:38 < ChillerDragon> i wish heinrich and lerato would change roles 20:39 < ChillerDragon> lerato being in charge or code and chat moderation 20:39 < ChillerDragon> would allow using bad word usage 20:39 < ChillerDragon> and goto statements in ddnet codebase 20:46 < bridge_> i cant wait until i get the time to code all my dreams 20:47 < ChillerDragon> Voxel you hittin da c++ books currently? 20:48 < ChillerDragon> @Voxel why wait arent you ddnet pro contributer already? 20:48 < ChillerDragon> #6841 20:48 < chillerbot> https://github.com/ddnet/ddnet/issues/6841 20:48 < bridge_> no because i have other things to focus on first 20:49 < bridge_> that update was so buggy LOL 20:49 < ChillerDragon> xd 20:50 < bridge_> idk what else i could do that other ppl arent doing 20:50 < ChillerDragon> you got 498 open issues to choose from 20:51 < ChillerDragon> #6963 20:51 < chillerbot> https://github.com/ddnet/ddnet/issues/6963 20:51 < ChillerDragon> for example china banning the space key 20:51 < ChillerDragon> xd 20:52 < ChillerDragon> no but srsly what about this one @Voxel #5781 20:52 < chillerbot> https://github.com/ddnet/ddnet/issues/5781 21:04 < bridge_> https://arxiv.org/abs/2308.01516 21:04 < bridge_> https://news.ycombinator.com/item?id=36994214 21:04 < bridge_> @heinrich5991 @jupeyy_keks 21:04 < bridge_> xd 21:04 < bridge_> someone asked me before but i forgot 21:04 < bridge_> @screeeny 21:04 < bridge_> 1000 comments 21:06 < bridge_> https://twitter.com/andrewmccalip/status/1687405505604734978 21:06 < bridge_> damn 21:07 < bridge_> ew bold font on twitter 21:07 < bridge_> disregarded 21:09 < ChillerDragon> floaty rock 21:27 < bridge_> @learath2 i think we need you as a moderator 21:28 < bridge_> https://www.youtube.com/watch?v=bjnQFkz50oU cuz some moderators act like this 21:34 < ChillerDragon> xd 21:36 < bridge_> If only I had the time 21:40 < bridge_> that video is just asesome 22:07 < bridge_> you wont have time even if you will be 24/7 free, only bad moderator wants to be moderator 22:13 < bridge_> i think we should make a ./report command, so ppl dont need to text server,ingame name, ip, blocker name in discord 22:15 < bridge_> we can probably reintroduce that command once we have a notion of accounts 22:15 < bridge_> previously, it was abused pretty hard 23:48 < bridge_> Thanks for news. Always interesting