15:59 < laxadedi> http://ddnet.tw/players/deen/ 16:00 < laxadedi> css problem at the bottom of the page 16:00 < laxadedi> is your interview available and in english deen ? 16:10 <@EastByte> someone could add english subtitles on youtube 16:30 <@EastByte> eeeee: btw. how would you pronounce your nickname? 16:30 <@EastByte> 5 times e? =) 16:31 <@heinrich5991> quintuple-e! 16:31 <@heinrich5991> (pronounced 'quintuply') 16:32 <@EastByte> oh that's nice 16:34 < BeaR_> entity which enables fixed physics - pls no :D 16:35 < BeaR_> and call it a feature ^^ 16:35 <@EastByte> where did you get that? 16:36 < BeaR_> someone requested fixed hook strength on the forum 16:36 < BeaR_> http://forum.ddnet.tw/viewtopic.php?f=14&p=19239 16:37 <@EastByte> adding features which nobody will understand isn't the best idea anyway 16:38 < BeaR_> well we are already at that point (: 16:38 <@EastByte> yea... 16:38 < BeaR_> but i agree 16:43 < BeaR_> are there any statistics concerning the amount of people using ddnet client? 17:10 < Learath2> BeaR_: deen did grep the logs for all clients but its very crude statistically 17:11 < BeaR_> huh? 17:12 < Chairn> i found an image with 44% user of ddnet 17:12 < Chairn> http://i.imgur.com/JanCse3.png 17:13 < Chairn> but so few vote ^^ 17:13 < BeaR_> oh (: 17:14 < Chairn> DDNet Client users today (unique IP): 3261 Players online per server today (DDRace and Block only, unique IP): Code: Select all GER: 4240 GER2: 1246 Chile: 1362 RUS: 845 South Africa: 406 Brazil: 387 USA: 349 CAN: 102 CHN: 76 17:14 < Chairn> 3261 ddnet clien over total 17:14 < Chairn> seems around 30%(i let you do the maths :P) 17:17 <@EastByte> hi Chairn 17:20 < BeaR_> Chairn: thanks, where did you get the data? 17:21 <@EastByte> it was once posted on tw.com 17:24 < BeaR_> ok found it, was actually in the history post :D 17:41 < WolfAlex> eh ddnet logs my ip? :( 18:01 <@heinrich5991> WolfAlex: I think all tw servers log your IP address 18:01 <@heinrich5991> by default, and the master does not 18:02 < WolfAlex> they only print the ip to stdout 18:09 <@heinrich5991> ok, fair point. but I believe that most people simply capture that stdout and save it as log file 18:27 < Chairn> 36.18% ddnet client user ^^ 18:27 < Chairn> hey EastByte 20:14 < Learath2> https://github.com/Learath2/nimircbot 20:15 < Learath2> doesnt quite work nor compile yet 20:15 < Learath2> but wanted to put what I had on github 20:26 <@EastByte> deen: seems bad today 20:29 < Chairn> ger2 under attack... 20:29 < Chairn> cant move 20:57 < Nimda> Optimum by Knight :3 just released on Moderate at 2015-07-19 20:01 20:58 <@deen> laxadedi: not sure how to fix that css problem best 20:59 <@deen> WolfAlex: yes, ddnet logs ips for 48 hours 20:59 <@deen> and chat content and server events 20:59 <@deen> also all for 48 hours 21:00 <@deen> mostly to check when something went wrong 21:00 <@deen> Damn DDoS attacks at tournament today 21:01 <@deen> First GER got 3 separate attacks, then Deutsche Telekom decided to increase ping to 120 from 20 21:01 <@deen> Then GER2 and South Africa DDoS 21:02 < WolfAlex> deen: ah ok, thanks 21:05 < Learath2> deen: maybe we could ask some ddos prevention company to give us some protection cheap as we have a non profit project ? 21:05 <@deen> Learath2: i tried that already at maybe 5 companies 21:05 <@deen> they were not interested 21:05 <@deen> i also wrote to about 30 youtubers to make ddnet videos, they also weren't interested^^ 21:06 < Learath2> weird :P 21:06 <@deen> Learath2: they usually cite prizes starting at 400 € / month for 1 location 21:06 <@deen> and that wouldn't even cover the huge attacks we sometimes get 21:07 < Learath2> holy what 21:07 <@deen> so i'm extremely happy with the current 30 € / month thing for GER 21:07 <@deen> they just shut down the server a single time 21:07 <@deen> and that was when the attack went over 100 gbit/s 21:08 < Learath2> any idea who is doing it ? 21:11 <@deen> yes 21:13 < Learath2> ask him nicely to stop ? :D 21:13 < eeeee> no :D 21:13 <@deen> when i do that the attacks come more often and stronger 21:13 <@deen> tried already 21:14 <@deen> my current course is just ignoring them 21:14 < Chairn> why is he ddosing ddnet? 21:14 < Learath2> maybe he just needs a hug 21:14 < eeeee> Learath2: those attention whores were trying to use ddos to get privileges like being allowed to cheat/block on servers 21:15 <@deen> Chairn: for fun, attention, bragging 21:15 < Chairn> isnt it punishable by law? 21:15 <@deen> and yes, they claim they will ddos people if they're not nice to them 21:15 < Learath2> sure it is what will you write on the police report ? 21:16 < Chairn> harassment 21:16 < Chairn> bullying 21:16 < Learath2> and who exactly should get punished ? 21:16 < Chairn> the one who does the attacks 21:16 < Chairn> and eventually, the one who ordered it 21:16 < Learath2> how will you connect them tho 21:17 < Chairn> ip 21:17 < eeeee> i imagine there could actually be a case with proof at this time, however the associated legal fees would be pretty high. we'd need another fundrasing :/ 21:17 < Chairn> let the police do its job 21:17 < Learath2> the ip is hundreds of ips in a botnet 21:17 < Chairn> but police has the mean to track them down 21:17 <@deen> Chairn: i don't think you know the German police :P 21:17 < Chairn> or maybe they should have the mean... 21:18 < Chairn> deen: cant be worse than french one :D 21:18 <@deen> I'd be happy if they've heard of the "internet" and "servers" 21:18 < Learath2> take down the ddosser fundraiser :P 21:19 < Learath2> i really should stop writing stuff without trying to compile 21:19 < Chairn> deen: any new from our QuintessenZ map? 21:19 <@deen> Chairn: i only know what's written on the forum 21:20 < Chairn> ok 21:22 <@deen> But yeah, maybe I should go to the police about the attacks at some time 21:22 <@deen> but everything gets ddosed, very rarely is someone caught 21:22 < Learath2> do try 21:59 <@EastByte> eeeee: some guy wants to control me in tw spoofing my address 22:00 <@EastByte> we can clearly see that the tokenized protocol works 22:01 <@deen> EastByte: until he gets bored and ddoses you instead 22:06 <@EastByte> deen: he is a friendly guy and is testing it with us 22:08 <@EastByte> but sure, normally they would pay 5eur to kill my home link 22:12 < Learath2> EastByte: im finally done designing it now i just need to get it to compile :D 22:13 <@EastByte> :D 22:13 < Learath2> https://github.com/Learath2/nimircbot 22:13 < Learath2> if you didnt see it 22:15 <@deen> cool 22:16 < Learath2> so it needs to compile and i need some kind of interplugin interface 22:18 <@deen> interplugin? 22:18 <@deen> and yes, code should compile :P 22:19 < Learath2> like x plugin can request an interface for y plugin its just to make stuff more flexible 22:19 < Learath2> like a mysql plugin which could provide and interface to mysql for other plugins 22:27 < Learath2> deen: any comments on what it looks like ? :D 22:31 <@deen> Learath2: looks clean, but lots of methods 22:35 < Learath2> methods are bad practice in nim ? 22:37 <@deen> dunno, i just don't use them 22:37 <@deen> because they have overhead 22:37 <@deen> you have to look up which method to call 22:37 <@deen> but if you don't need incredible performance, it's fine i guess 22:40 < Learath2> huh would it even work with normal procs ? 22:40 <@deen> not as you do it 22:40 <@deen> not sure, i just don't need methods usually 22:40 < Learath2> do give me any tips to improve anything really 22:41 <@EastByte> deen: it's a plugin system with interface 22:41 <@EastByte> using nim methods there is the best way I think 22:42 <@EastByte> otherwise you would need to use callbacks, same overhead 22:42 < Learath2> EastByte: while you are here any idea how i 22:42 < Learath2> can get an arbitrary call interface ? 22:42 <@EastByte> what's that? 22:43 < Learath2> hmm something like one plugin can request an interface to another and use its functions 22:43 < Learath2> but obv that cant be standartized 22:43 <@EastByte> why not? 22:43 < Learath2> well how would i know what functions any given plugin would expose? 22:44 <@EastByte> plugins can import each other I guess 22:45 < Learath2> oh that would work get a handle to it cast it then call any function you want 22:45 <@EastByte> yea... 22:49 <@EastByte> Learath2: we be nice to let the bot automatically update itself from github 22:49 <@EastByte> so we can just push a plugin to the repo 22:50 <@EastByte> and it will be automatically recompiled 22:50 < Learath2> could get a ci for it i guess 22:50 <@EastByte> ci? 22:50 <@EastByte> comand interface? 22:51 < Learath2> like some kind of buildbot to recompile it on github changes 22:51 < Learath2> continuous integration 22:51 < Learath2> bot cant quite compile itself if i dont also include the nim compiler with it 22:51 <@EastByte> we need to fully recomopile it thuogh 22:52 <@EastByte> nah a second program should da that 22:52 <@EastByte> do* 22:52 < Learath2> well the only way to avoid fully recompiling it is dynlibs i guess 22:52 <@EastByte> well we wanted to avoid that 22:52 <@EastByte> also maybe nim gets his own dyn module loading some day 22:53 <@EastByte> or something similiar 22:53 <@EastByte> I think it's possible natively 22:53 < Learath2> well with what it looks like right noe getting in some dynlib loading shouldnt be that hard 22:54 <@EastByte> could you repeat pls? :) 22:54 < Learath2> with how it looks like right now getting dynlib stuff in there should be easy 22:55 <@EastByte> well if nim does fine with that 22:55 <@EastByte> virtual calls 22:55 < Learath2> yeah not sure if nim would like it :D 22:56 <@EastByte> but you could try that :P 22:56 < Learath2> i sure will after i get my debian laptop/nim compiling slave back 22:56 <@EastByte> :) 22:57 <@EastByte> Learath2: we have openssl ssl/crypto statically linked in ddnet right? 22:58 <@EastByte> (depdendency of curl) 22:58 < Learath2> yep 22:58 <@EastByte> so we basically can use it 22:58 < Learath2> should be 22:59 <@EastByte> hm do you know which revision of openssl it is? 22:59 <@EastByte> headers are missing 22:59 < Learath2> should ask deen which version he statically links 22:59 <@EastByte> deen: which openssl version is in ddnet? 22:59 <@deen> on which system? 23:00 <@deen> but generally 0.9.8 23:00 <@deen> i don't know where the windows ones come from 23:00 <@deen> and I'm waiting for Learath2 to fix the dll updating anyway for that :P 23:00 < Learath2> me fix what ? 23:01 < Learath2> oh i have no idea how to fix that 23:01 < Learath2> should have just gotten a seperate updater 23:02 <@deen> well, you told me to wait with updating dlls until you fixed the updater to work with them 23:02 <@deen> and also with differentiating between win64 and win32 dlls 23:02 < Learath2> thought there was a way apparently the thing i saw had nothing to do with it 23:03 < Learath2> oh i know how we just need to replace them like the executables 23:10 <@heinrich5991> deen: have you had time to look at my patch already? 23:14 < Learath2> uhm does plugiface.nim(6, 43) Error: undeclared identifier: 'BotInterface' make any sense to you ? 23:15 <@EastByte> it's not global/extern 23:15 <@EastByte> type BotInterface = ref object of RootObj 23:15 <@EastByte> type BotInterface* 23:15 < Learath2> oh yep keep forgetting the star 23:15 <@EastByte> me too 23:21 < Learath2> aaaand a seq cannot hold inherited types 23:23 <@EastByte> can you show me? 23:23 < Learath2> EastByte: http://codepad.org/sM9wvpmC 23:24 <@EastByte> you need to convert SamplePlugin to PluginInterface 23:25 <@EastByte> but `ref SamplePlugin`, the ref shouldnt be there 23:25 <@EastByte> not sure where it comes from 23:26 <@deen> heinrich5991: not really, sorry. 23:26 < Learath2> i guess new returns a ref somewhy 23:27 <@EastByte> so what happens if you do PluginInterface(obj...) 23:27 < Learath2> replaced it with this bot.plugins.add(PluginInterface(new(SamplePlugin)[])) 23:28 <@EastByte> the [] shouldn't be there 23:28 <@EastByte> or is SamplePlugin a ref ref ? xd 23:29 < Learath2> well the [] makes the compiler happy 23:29 < Learath2> new(SamplePlugin) seems to return a ref SamplePlugin 23:30 <@EastByte> maybe because we have "ref object of RootObj", "ref object of PluginInterface" 23:30 < Learath2> nope sampleplugin is ref object of PluginInterface 23:30 <@EastByte> yes and PluginInterface also is ref 23:31 <@EastByte> you could try to remove ref from SamplePlugin in the type 23:31 <@EastByte> oh wait 23:31 <@EastByte> that's a bad idea 23:32 < Learath2> how bad ? 23:32 <@EastByte> nvm got something wrong, try it xd 23:32 <@EastByte> in my projects I had the interface without ref 23:33 < Learath2> doesnt quite work 23:34 < Learath2> sampleplugin.nim(7, 9) Error: 'this.botif' cannot be assigned to 23:37 <@EastByte> Learath2: no way to compile your repo :p 23:37 <@EastByte> so many typos 23:38 < Learath2> i compiled it 23:38 < Learath2> EastByte: pushed it 23:38 <@EastByte> ... 23:38 < Learath2> compiles but not sure how it'll perform :D 23:39 < Learath2> i love meself some PAsycnIrc 23:39 <@EastByte> ... 23:41 < Learath2> im scared of running it 23:42 <@EastByte> I won't do that 23:42 <@EastByte> hm new(SamplePlugin) 23:42 < Learath2> HA SIGSEGV just as i expected 23:42 <@EastByte> var obj = SamplePlugin() 23:42 <@EastByte> ^ works 23:43 < Learath2> still SIGSEGVs tho 23:44 <@EastByte> nvm the sigsegvs xd 23:44 <@EastByte> the first problem is solved 23:44 < Learath2> well i dont have gdb on my windows so will have to wait until i can claim my laptop 23:44 <@EastByte> looks like new cannot be used like "new(typedesc)" 23:44 < Learath2> why not ? 23:44 <@EastByte> normally you do something like 23:44 <@EastByte> var obj: type 23:45 <@EastByte> new(obj) 23:45 <@EastByte> or var obj = type() 23:45 <@EastByte> but you are passing the type decriptor directly 23:45 <@EastByte> which seems to behave differently 23:45 < Learath2> well i read it would work fine in the manual i think 23:46 < Learath2> oh i also found something broken in nim 23:47 <@EastByte> looks at this: 23:47 <@EastByte> proc new(T: typedesc): ref T = 23:47 <@EastByte> echo "allocating ", T.name 23:47 <@EastByte> new(result) 23:47 <@EastByte> you are passing T, it returns ref T 23:47 <@EastByte> but T already is a reference 23:48 < Learath2> how is T already a referance in case of SamplePlugin ? 23:48 <@EastByte> type SamplePlugin* = ref object of PluginInterface 23:48 <@EastByte> see the prototype 23:49 <@EastByte> ref object 23:49 < Learath2> never quite understood that syntax either 23:49 <@EastByte> why not? 23:50 < Learath2> wasnt explained anywhere 23:50 < Learath2> i'd honestly expect it to be type Bla = object of RootObj 23:51 < Learath2> but everywhere on the tutorial its ref object of so i just took that 23:51 <@EastByte> pure object can be seen like a structure in C 23:51 <@EastByte> while ref is a reference to an object like a pointer in C 23:52 <@EastByte> the object needs to be created using new() first 23:52 <@EastByte> (ref object) 23:53 < Learath2> what does new return ? 23:54 < Learath2> oh i see 23:54 <@EastByte> var numRef: ref int 23:54 <@EastByte> numRef.new() 23:55 <@EastByte> no return value there :P 23:55 < Learath2> so is var num: int num.new() even valid ? 23:55 <@EastByte> yes, num is reference to a new object then 23:56 <@EastByte> why do I miss so many words in my phrases :( 23:56 <@EastByte> I guess I'm tired 23:56 < Learath2> num magically turns into a ref int ? 23:56 <@EastByte> oh wait, your example is different 23:56 <@EastByte> right it's not valid 23:57 < Learath2> makes sense now 23:57 <@EastByte> :) 23:58 <@EastByte> when using `ref object` you can always use the type name a constructor 23:59 <@EastByte> so instead of `new`: var obj = TypeName() 23:59 < Learath2> oh it didnt crash 23:59 < Learath2> crashed right after it joined my channel :D 23:59 <@EastByte> :> 23:59 < Learath2> but it managed to join my channel so thats nice :D