00:27 <+bridge_> [ddnet] https://www.youtube.com/watch?v=ajccZ7LdvoQ 00:43 <+bridge_> [ddnet] I think I sent this talk here like 4 times ๐Ÿ˜„ 00:43 <+bridge_> [ddnet] yes, I just watched it 00:43 <+bridge_> [ddnet] it was partly due to you ๐Ÿ™‚ 00:43 <+bridge_> [ddnet] Interesting, no? 00:43 <+bridge_> [ddnet] yes 00:43 <+bridge_> [ddnet] https://www.youtube.com/watch?v=XH0F9r0siTI 00:43 <+bridge_> [ddnet] watching this rn 00:43 <+bridge_> [ddnet] why don't you like link previews? ^^ 00:44 <+bridge_> [ddnet] Oh, does it delete them for everyone? ๐Ÿ˜„ 00:44 <+bridge_> [ddnet] yes 00:44 <+bridge_> [ddnet] "DEF CON 26 - Christopher Domas - The Ring 0 Facade Awakening the Processors Inner Demons" 00:44 <+bridge_> [ddnet] I thought it was just for me 15:10 <+bridge_> [ddnet] what's an efficient way of turning long .demo files into mp4 files? 15:13 <+bridge_> [ddnet] ffmpeg 15:14 <+bridge_> [ddnet] @Boci just record with a regular screen recording software like OBS 15:21 <+bridge_> [ddnet] I really dont wanna record like 2 hours of demos 15:22 <+bridge_> [ddnet] Is there a workaround 15:23 <+bridge_> [ddnet] 2h is fine 15:23 <+bridge_> [ddnet] where is the problem 15:23 <+bridge_> [ddnet] you can record it in 2x times speed 15:23 <+bridge_> [ddnet] well depends for what ypu need the recording 15:24 <+bridge_> [ddnet] I mean i am still unable to do anything with my computer for 1h in that case 15:24 <+bridge_> [ddnet] use your secondary computer then ๐Ÿ˜› 15:24 <+bridge_> [ddnet] or pay me 2bucks ill do it 15:25 <+bridge_> [ddnet] zZz 15:34 <+bridge_> [ddnet] one more Q can i record demos where i can spec all of the tees? 15:35 <+bridge_> [ddnet] if you do /showall 15:35 <+bridge_> [ddnet] (while playing) 15:36 <+bridge_> [ddnet] oh ok yea 15:36 <+bridge_> [ddnet] how can i set that it's showall all the time ? 15:37 <+bridge_> [ddnet] like every time i join a game it will be set to showall 15:37 <+bridge_> [ddnet] u cant 15:37 <+bridge_> [ddnet] why? 15:37 <+bridge_> [ddnet] idk 15:37 <+bridge_> [ddnet] xd 15:37 <+bridge_> [ddnet] jao help can i? 15:44 <+bridge_> [ddnet] jao, help, can i? 15:45 <+bridge_> [ddnet] because it requires a lot server resources 15:45 <+bridge_> [ddnet] you can bind it on some key that you always press anyways 15:46 <+bridge_> [ddnet] i thought about it, but for example if i bind it on mouse 1, it's gonna say "now you are able to see every player at all times regardless of distance" every single time i press mouse1 ? 15:46 <+bridge_> [ddnet] just once 15:46 <+bridge_> [ddnet] bind mouse1 "say /showall" ? 15:47 <+bridge_> [ddnet] it will toggle everytime i think 15:47 <+bridge_> [ddnet] bind mouse1 +fire; say /showall 1 15:47 <+bridge_> [ddnet] 15:47 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/648172858434125844/Screen_Shot_2019-11-24_at_8.47.25_AM.png 15:47 <+bridge_> [ddnet] xd 15:47 <+bridge_> [ddnet] you need the 1 15:47 <+bridge_> [ddnet] works for me 15:47 <+bridge_> [ddnet] ohh i didnt know it accepted a number 15:47 <+bridge_> [ddnet] nice! 19:54 <+bridge_> [ddnet] @jao is there like a line graph showing players rank and points over time? i think that would be cool 19:54 <+bridge_> [ddnet] kinda like how osu shows it 19:54 <+bridge_> [ddnet] there isnt but the data is there 19:54 <+bridge_> [ddnet] 19:54 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/648235102094098434/image0.png 19:54 <+bridge_> [ddnet] like this 19:55 <+bridge_> [ddnet] it can only go up for ddnet but yea 19:56 <+bridge_> [ddnet] well i think ranking could go down if the player takes a break but yeah that would be cool 19:57 <+bridge_> [ddnet] for solo ranks it would work 19:57 <+bridge_> [ddnet] for teamranks no 19:58 <+bridge_> [ddnet] oh i meant like point ranking not time ranking 19:59 <+bridge_> [ddnet] you should put the discord bot $profile image thingies on the website 19:59 <+bridge_> [ddnet] rank points or normal points 19:59 <+bridge_> [ddnet] normal 19:59 <+bridge_> [ddnet] how would those go down? 19:59 <+bridge_> [ddnet] if a player is inactive for a while like more players could pass them 19:59 <+bridge_> [ddnet] i mean like rank in the world 20:00 <+bridge_> [ddnet] oh 20:00 <+bridge_> [ddnet] will the website ever be redesigned 20:00 <+bridge_> [ddnet] no 20:01 <+bridge_> [ddnet] why do u want $profile images on the website 20:02 <+bridge_> [ddnet] idk i feel the website looks kinda old n outdated 20:02 <+bridge_> [ddnet] same with the client 20:02 <+bridge_> [ddnet] maybe 20:03 <+bridge_> [ddnet] but who would do it 20:03 <+bridge_> [ddnet] idk 20:03 <+bridge_> [ddnet] someone pro 20:11 <+bridge_> [ddnet] i'll make like a layout thing to show what im thinking 20:37 <+bridge_> [ddnet] Thatโ€™s like teerace 20:37 <+bridge_> [ddnet] @ChillerDragon link? 20:38 <+bridge_> [ddnet] http://race.teesites.net 20:38 <+bridge_> [ddnet] I think itโ€™s little bit inactive 20:38 <+bridge_> [ddnet] But it used to show your points in a time graph 20:38 <+bridge_> [ddnet] So you basically saw player activity there was interesting 20:42 <+bridge_> [ddnet] oh cool 21:27 <+bridge_> [ddnet] official infclass website has some similar ideas to it, will send the link here once i'll find it :p 21:28 <+bridge_> [ddnet] ah here 21:28 <+bridge_> [ddnet] https://stats.resamvi.io/#/about 21:29 <+bridge_> [ddnet] on the stats menu it's actually design for racing imo 21:29 <+bridge_> [ddnet] on the stats menu it's actually designed for racing imo 22:13 <+bridge_> [ddnet] @louis there have been attempts in the past to re-do the site, but our unconventional way of generating the pages really discourages most from ever completing the work ๐Ÿ™‚ 22:30 <+bridge_> [ddnet] @Learath2 what u mean generating the pages 22:30 <+bridge_> [ddnet] also is there like a teeworlds api or smth 22:32 <+bridge_> [ddnet] No teeworlds api (although I had plans for one (although most my plans are left incomplete)) 22:32 <+bridge_> [ddnet] We generate the pages using python scripts 22:32 <+bridge_> [ddnet] Every couple of minutes 22:32 <+bridge_> [ddnet] what the 22:33 <+bridge_> [ddnet] It's all black magic 22:33 <+bridge_> [ddnet] I mean the idea of serving static pages isn't too bad 22:33 <+bridge_> [ddnet] its not 22:33 <+bridge_> [ddnet] Which one? ๐Ÿ˜„ 22:33 <+bridge_> [ddnet] but imo an api is better 22:33 <+bridge_> [ddnet] i would love to do it in golang 22:33 <+bridge_> [ddnet] we should have like 22:34 <+bridge_> [ddnet] a stat checker in gamr 22:34 <+bridge_> [ddnet] a stat checker in game 22:34 <+bridge_> [ddnet] @heinrich5991 is the gen script public? 22:34 <+bridge_> [ddnet] you can right click someones name in tablist and see stuff 22:34 <+bridge_> [ddnet] @heinrich5991 yes, but very modern web dev unfriendly 22:34 <+bridge_> [ddnet] @Ryozuki ddnet/ddnet-scripts 22:36 <+bridge_> [ddnet] i guess its this https://github.com/ddnet/ddnet-scripts/blob/master/servers/scripts/stats.py 22:37 <+bridge_> [ddnet] @Learath2 how many cores has the web server? 22:37 <+bridge_> [ddnet] a single one i'd wager 22:37 <+bridge_> [ddnet] 2 cores, 2 threads 22:37 <+bridge_> [ddnet] there is a neat thing to bypass python GIL https://docs.python.org/3/library/multiprocessing.html 22:37 <+bridge_> [ddnet] maybe we can optimize it 22:46 <+bridge_> [ddnet] eh, it's fine it works, not like we need much cpu to serve up the site anyway 23:02 <+bridge_> [ddnet] teeworlds should have like 23:02 <+bridge_> [ddnet] camera follow 23:02 <+bridge_> [ddnet] not like centered on tee 23:02 <+bridge_> [ddnet] wait nvm that wont work 23:02 <+bridge_> [ddnet] then learn c++ and code it 23:02 <+bridge_> [ddnet] yeah it's not that easy ryozuki 23:02 <+bridge_> [ddnet] "just learn c++" :greenthing: 23:03 <+bridge_> [ddnet] it is 23:03 <+bridge_> [ddnet] i did that 23:03 <+Learath2> `std::cout << "Hello World!" << std::endl;` 23:03 <+Learath2> Congratulations, you are a programmer 23:04 <+bridge_> [ddnet] why u gotta put std:: before everything 23:11 <+Learath2> they are part of the std namespace 23:20 <+bridge_> [ddnet] I'm not sure what a good first programming language is 23:20 <+bridge_> [ddnet] perhaps python 23:21 <+Learath2> Best first programming language is C 23:21 <+bridge_> [ddnet] the concept of UB is pretty hard to grasp IMO 23:22 <+Learath2> Books help you navigate the waters safely until you get to a certain point, where you can start to understand it 23:22 <+Learath2> If you REALLY want to avoid C, you need a very good regiment to follow to actually learn some computer science along with your high level language of choice 23:24 <+bridge_> [ddnet] yes c is the best 23:26 <+bridge_> [ddnet] what's UB 23:27 <+bridge_> [ddnet] undefined behavior 23:27 <+bridge_> [ddnet] behavior you must not have in your program, else it is allowed to format your harddrive and eat your laundry 23:27 <+Learath2> or kidnap your kids, it's undefined after all 23:28 <+bridge_> [ddnet] or do exactly what u intended it to do sometimes 23:28 <+bridge_> [ddnet] to make it even harder to track down 23:28 <+Learath2> Which is why it's dangerous I guess 23:28 <+bridge_> [ddnet] wait what 23:28 <+bridge_> [ddnet] if you don't want undefined behavior can't you just not write it in your code 23:29 <+bridge_> [ddnet] yea, unfortunately, it's not that easy to avoid 23:29 <+Learath2> Some things you write might not be defined 23:29 <+bridge_> [ddnet] e.g. referencing a pointed-to value after it's been freed is undefined behavior 23:29 <+bridge_> [ddnet] example of undefined behavior: 23:29 <+bridge_> [ddnet] ```cpp 23:29 <+bridge_> [ddnet] array[i] = i++;``` 23:29 <+bridge_> [ddnet] does it access array[i] first 23:29 <+bridge_> [ddnet] or increment i first 23:29 <+bridge_> [ddnet] or does it eat your laundry, if it's indeed UB 23:29 <+Learath2> Turns out, which happens is undefined :P 23:30 <+bridge_> [ddnet] the answer: its undefined 23:30 <+Learath2> Or dereferencing a null pointer. Compilers are completely free to assume any pointer you try to dereference is not null 23:30 <+bridge_> [ddnet] derefernce null ptr == crash 23:30 <+bridge_> [ddnet] more like dereferencing an invalid pointer 23:30 <+bridge_> [ddnet] out of bounds/already been freed 23:30 <+bridge_> [ddnet] *might* crash 23:31 <+bridge_> [ddnet] dereferencing a null ptr might not lead to a crash 23:31 <+bridge_> [ddnet] rly? lol 23:31 <+bridge_> [ddnet] oh 23:31 <+bridge_> [ddnet] so basically u just have to be very specific 23:31 <+bridge_> [ddnet] in what situation would that not crash 23:32 <+bridge_> [ddnet] if the compiler somehow managed to optimize out the access (e.g. copied the value from somewhere else before), the offset is large enough to point into mapped memory again (the latter often being used for exploiting security vulnerabilities) 23:32 <+bridge_> [ddnet] oooo 23:32 <+bridge_> [ddnet] i see 23:33 <+bridge_> [ddnet] i didnt think of compiler optimizations affecting this 23:34 <+bridge_> [ddnet] http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html 23:34 <+bridge_> [ddnet] "Debugging Optimized Code May Not Make Any Sense" 23:35 <+bridge_> [ddnet] that gives an example of where a null ptr doesn't crash 23:35 <+bridge_> [ddnet] even a null function ptr 23:35 <+Learath2> btw, I think an implementation is free to let you dereference a null pointer and have it refer to something 23:35 <+bridge_> [ddnet] what the 23:35 <+bridge_> [ddnet] this stuff is complicated idk 23:35 <+bridge_> [ddnet] like 23:35 <+bridge_> [ddnet] if u dont have compiler optimization turned on this will not affect anything right? 23:35 <+bridge_> [ddnet] i know how to code basic stuff 23:36 <+bridge_> [ddnet] but idk how or where to learn about all this undefined blah blah null pointer etc 23:36 <+bridge_> [ddnet] google it 23:36 <+bridge_> [ddnet] wow thanks 23:36 <+Learath2> The truth is, these things happen occasionally, not always 23:36 <+bridge_> [ddnet] if you know how to code basic stuff, you're basically good to go, I think ๐Ÿ™‚ 23:36 <+Learath2> So most of the time you are clear of all the intricacies of a language 23:36 <+bridge_> [ddnet] and lol that is intersesting article 23:37 <+bridge_> [ddnet] (also has part 1 and part 3) 23:37 <+bridge_> [ddnet] @louis just be careful around code interacting with the network. if you put vulnerabilities in there, people from the internet can take over your computer 23:37 <+Learath2> The best way to learn C is a book, the best book yet is imho K.N. King's C Programming: A modern approach 23:37 <+bridge_> [ddnet] really 23:38 <+bridge_> [ddnet] i thought it was online 23:38 <+bridge_> [ddnet] idk 23:38 <+Learath2> @onby that is a fun read indeed, especially that null pointer optimizations interaction with dead code elimination 23:39 <+bridge_> [ddnet] if u turn off optimizations does this bypass all of the things this article describes 23:39 <+bridge_> [ddnet] -O0 23:40 <+bridge_> [ddnet] optimization is -O0 by default 23:40 <+Learath2> I don't remember the entire article, it is possible there is an example there that doesnt relate to ub 23:40 <+bridge_> [ddnet] in practice yes, I think 23:40 <+Learath2> relate to optimization* 23:40 <+bridge_> [ddnet] but remember that you can still do stuff like 23:40 <+bridge_> [ddnet] > the offset is large enough to point into mapped memory again (the latter often being used for exploiting security vulnerabilities) 23:42 <+Learath2> I don't remember whether it's UB to access memory through a freed pointer 23:42 <+bridge_> [ddnet] yes, UB 23:42 <+bridge_> [ddnet] double free: UB 23:42 <+bridge_> [ddnet] free of non-malloced variable: UB 23:42 <+Learath2> Writing good C code is hard, but I still maintain that it's the best way to actually learn programming 23:44 <+Learath2> Yes you might want something like Scala if you are coding the backend for a bank, or ADA/SPARK if you are sending a rocket to the moon :) 23:45 <+bridge_> [ddnet] or certain other new languages when you're writing network-facing code ๐Ÿ˜‰ 23:46 <+Learath2> I'm not sure what I'd go for in network facing code nowadays. Probably something like js where sandboxing is high and integration with front-end is easy. Given performance isn't critical 23:47 <+Learath2> (definitely typescript, not vanill js, ew) 23:47 <+Learath2> I guess I'd still go for C for high performance applications 23:48 <+Learath2> rust is probably safer, but I kinda gave up on ever learning it, it just looks like moon runes to me 23:48 <+bridge_> [ddnet] people have had success with rust too ๐Ÿ™‚ 23:49 <+Learath2> I'm learning hiragana faster then I'm learning rust 23:51 <+bridge_> [ddnet] ใ‚Œใ‚ใ‚‰ใ™ใคใƒผ 23:51 <+Learath2> thst 23:51 <+Learath2> that broke my terminal 23:52 <+bridge_> [ddnet] do you even unicode? โ˜ƒ 23:52 <+bridge_> [ddnet] http://unicodesnowmanforyou.com/ 23:52 <+Learath2> It's the font rendering of this opengl terminal 23:53 <+Learath2> because on macOS, the terminals that use corefont render so slowly it hurts 23:55 <+bridge_> [ddnet] Oh, I guess that's ใ‚ใŸใ—ใฎๅๅ‰ 23:56 <+bridge_> [ddnet] Okay stupid phone keyboard decided it'd be helpful and contract my hiragana into kanji 23:57 <+bridge_> [ddnet] Oh, I guess that's ใ‚ใŸใ—ใฎใชใพใˆ