11:31 < ACTom> hi~ 12:03 <@EastByte> hellow 12:03 < ACTom> Does anyone knows how to move ddnet to another server? 12:04 <@EastByte> "move"? What server? 12:04 < ACTom> CHN Server 12:04 < ACTom> current server may 12:04 <@EastByte> ah, you should contact deen 12:04 < ACTom> may expire in 10 days 12:05 < ACTom> ok 13:15 < Gabeee> A server expiring? 13:16 < Gabeee> You can rent a server from ddnet? 13:16 < Gabeee> Wow.. you guys, you could fork teeworlds into ddworlds :P 13:19 < ACTom> yeah, I have chat with current server owner, he'd like to move it to my server 13:20 <@EastByte> Gabeee: nah, it's not like that 13:21 <@EastByte> it's a sponsored server (not owned by ddnet) which is now running out 13:21 < ACTom> yeah, so I go here to ask deen or others 13:21 < Gabeee> Oh okay 13:22 < ACTom> Now in China, has two server only run teeworlds server, one is current ddnet server, one is my server. 13:27 < Gabeee> Wow.. teeworlds in china 13:27 < Gabeee> Isn't it hard to handle the network setup there? 13:41 < ACTom> No, it's easy, but can't host a server use home network 13:42 < ACTom> So we need to buy a vps to host it 13:59 <@EastByte> Gabeee: if we wouldn't have a server in china, where would our australian players play on :p 14:01 <@EastByte> IcyFoxy: right? 14:03 <@deen> EastByte: in Australia? 14:04 <@EastByte> afaik we don't have a server in australia 14:11 < ACTom> EastByte: Do you play in [Tom] servers? 14:11 <@EastByte> no, I'm from Germany btw. 14:13 < ACTom> China server will not disapper :-D 14:45 <@deen> ACTom: I've seen your servers^^ 14:46 <@deen> Hey, should DDNet participate in Google Summer of Code? :P 14:48 < switcher_> How exactly does that work :D 14:48 <@deen> We apply as an organization with a few potential projects 14:48 <@deen> I organized it before for the Nim project, but we didn't get accepted 14:50 < switcher_> Why was that? 14:51 <@heinrich5991> deen: I think nim has a better chance of getting accepted 14:51 < IcyFoxy> EastByte: NOOO!!!!! 14:51 < IcyFoxy> Either keep CHN or spin up Aus <3 14:52 <@deen> heinrich5991: meh, maybe I'll just try Nim again with the exact same application 14:52 <@deen> heinrich5991: after all they said everything was fine with our app, they just had too many organizations already 14:55 < IcyFoxy> Nim language? 14:56 <@deen> IcyFoxy: yes 14:56 < IcyFoxy> What do you think of the language? (I'm yet to touch it, mostly just using Rust nowdays - although might return a little to Haskell on nixos soon) 14:57 < IcyFoxy> Nim maybe a bit after that :P 14:57 <@deen> IcyFoxy: Well, I have a blog about the language: http://hookrace.net/blog/ 14:57 <@deen> It's my favorite 14:57 < IcyFoxy> Ah. I'll have to check this out. :) 14:58 < IcyFoxy> Luckily I just got my customized nix livecd up so I have a browser :P 14:59 < IcyFoxy> deen: Reimplementing teeworlds in Nim aye? 14:59 <@deen> not teeworlds, ddnet :P 14:59 < IcyFoxy> Specifically. I see 14:59 < ACTom> 哇 15:00 < IcyFoxy> You aware that I've started one in Rust with heinrich5991 ? Little progress but partially exists :P 15:01 < IcyFoxy> Aww.. USB disconnected at some point - livecd RIP .. rebooting. Will try to read this blog in a moment : 15:01 <@deen> I heard about it. I also did some reimplementation of the TW network stuff in Haskell once 15:03 < IcyFoxy> Nice 15:03 < IcyFoxy> Get far? 15:03 < switcher_> Havent ever heard anything about those languages, are they of any use? :D 15:04 < IcyFoxy> switcher_: Which? (In any case, yes.) 15:04 < IcyFoxy> Which - for what* 15:04 <@deen> not really, i had a small client that could connect, then i wanted to write a bot on top of that 15:04 < IcyFoxy> deen: Fun 15:05 < IcyFoxy> switcher_: Rust: A systems programming language - fairly new and is a mozilla 'owned' community project. **VERY** good language IMHO. 15:06 <@heinrich5991> switcher_: the only language out of the three that is in actual use is probably haskell 15:06 <@heinrich5991> and even that is maybe a bit academic :) 15:06 < switcher_> heinrich5991: and whats that used for :D 15:06 < switcher_> IcyFoxy: thanks for the answer :) 15:06 < IcyFoxy> switcher_: Haskell: A functional language, maybe not the best to use - but it is a great language for acedemic areas and focuses very well in the type system. 15:06 <@heinrich5991> it's the best-known functional programming language 15:06 <@heinrich5991> lots of things :) 15:06 <@deen> heinrich5991: lisp is better-known :P 15:07 < IcyFoxy> deen: You'll have to answer for Nim. 15:07 <@heinrich5991> deen: ok, didn't know 15:07 < switcher_> heinrich5991: I might try doing some stuff with it 15:08 < IcyFoxy> deen: True, but not as well known for functional and strong type systems as Haskell is. 15:08 <@heinrich5991> switcher_: I believe nim is a low-level language with lots of support for meta-programming (macros etc.). ask deen to be sure 15:08 <@deen> Nim is a mixture of the good parts of all other languages :P 15:09 < switcher_> if thats true I might try nim instead 15:09 <@deen> you can use Nim as a sane alternative to C, or a sane alternative to Python, or both at the same time 15:09 <@heinrich5991> how is python not sane? :) 15:09 <@deen> switcher_: well, that's my opinion, others disagree. And the language has a small community and hence many more bugs 15:10 <@deen> heinrich5991: the semantics are sometimes weird, for example passing default parameters. Nim makes more sense to me 15:10 < switcher_> deen: well since you already got a blog over nim, I might just read it 15:12 < IcyFoxy> deen: Rust is also a mixure of the good parts of other languages :P 15:12 <@deen> IcyFoxy: plus the borrow checker that annoys people^^ 15:14 < IcyFoxy> deen: Only a tiny bit, but overall it's really great! 15:14 <@deen> Rust is good if you need 100% performance and high safety 15:15 < IcyFoxy> It's great! 15:15 < IcyFoxy> And it's a really easy language to write in too :D 15:15 < IcyFoxy> At least IMHO 15:15 <@EastByte> deen: iirc in benchmarks nim left rust behind 15:16 <@deen> EastByte: only because I optimized the Nim versions :P 15:16 <@heinrich5991> if I write a networked application, I'll happily take the safety of rust :) 15:16 <@EastByte> was it unsafe optimization? 15:16 <@EastByte> heinrich5991: I agree with that 15:16 < IcyFoxy> heinrich5991: +1 15:16 <@deen> but it's easier to write highly performant code in Rust than in Nim, especially if you use dynamic data structures like sequences and strings 15:17 <@deen> EastByte: no, i just know that you should not resize data structures and be careful about allocating new stuff 15:17 <@deen> then the GC doesn't run and Nim has no overhead over C 15:17 <@EastByte> heinrich5991: although nim's meta programming capabilities are pretty handy for generic protocol parsing 15:18 <@EastByte> deen: that's not fair :p 15:18 <@deen> EastByte: sure it is, benchmarks are always like that 15:18 < IcyFoxy> deen: Looking at your blog, I might need to try out nim - I'm not a fan of python in which it does resemble a little... But this looks usable :) 15:19 <@heinrich5991> it's probably easier. but people also say that about haskell, that you can write C-like code and achieve the same performance as C 15:19 <@deen> heinrich5991: noooo, in Haskell it's terribl 15:19 <@heinrich5991> (or java) 15:19 <@deen> Writing highly performant Haskell looks like a monster 15:19 <@deen> Java is usually fine performance-wise if your program runs forever instead of batch stuff 15:20 <@deen> (and you don't care about memory usage) 15:20 <@deen> i think most java libraries just use too much memory and allocate stuff all the time, which makes it slow 15:20 <@EastByte> (also if it's the only programm running on the system) 15:21 < IcyFoxy> deen: ... nice hack to score yourself an extra 8 bytes smaller in the nim-binary-size post :P 15:24 <@heinrich5991> deen: python is pretty good at numerical stuff btw :) 15:25 <@heinrich5991> (that's one of the things I use python for) 15:25 <@deen> heinrich5991: how do you mean? 15:25 <@heinrich5991> numpy 15:25 <@deen> sure, great library 15:25 <@deen> the problem is if you want that kind of performance in python you have to write your library in C 15:25 <@heinrich5991> where's that problem? ^^ 15:25 <@deen> I like to write everything in Nim instead, library at low level, then high level code on top 15:27 < IcyFoxy> heinrich5991: sagemath is th only python I'll happily use :P 15:27 < IcyFoxy> deen: I'm actually thinking about writing lots of things in nim now :P 15:27 <@heinrich5991> deen: why reimplement everything? :) python is safe and has the libraries :) 15:28 < IcyFoxy> deen: How is nim's safety? 15:28 <@deen> heinrich5991: because if you need notice that you need performance in python you have no choice other than reimplementing your core stuff in C 15:28 <@heinrich5991> deen: also, you probably get worse performance in nim, because numpy has vectorized code etc. 15:29 <@deen> heinrich5991: sure, against a highly optimized library that's been improved for years you can't do much with a small community 15:29 <@deen> IcyFoxy: well, you have the choice. if you want full performance (-d:release by default) many safety checks at runtime are disabled 15:30 < IcyFoxy> deen: So develop without that and get all the checks? 15:30 <@deen> heinrich5991: also, everyone needs python installed to run your python programs. I want proper binaries 15:31 <@deen> IcyFoxy: right, but lose performance instead. Nim doesn't have the fancy 0-cost checks Rust has in some places 15:31 <@heinrich5991> deen: you should try go :) 15:32 <@deen> heinrich5991: no generics, no metaprogramming, terrible and slow C interfacing 15:32 < IcyFoxy> Go :( 15:32 <@heinrich5991> yes. but "proper binaries" 15:32 < IcyFoxy> deen: :) 15:32 <@deen> C, C++, Rust, D also have proper binaries 15:32 < IcyFoxy> deen: I like how you can target a few languages. 15:32 <@heinrich5991> deen: the good thing about using high-level programming languages for the semantics is that you get all the speed, no safety issues and clearer code 15:32 <@deen> D is pretty similar to Nim, and they noticed that memory allocations are the main problem so they destroyed their standard library to get around the problem 15:32 <@heinrich5991> (in numerical code) 15:33 < IcyFoxy> c, cpp, objc, js, Rust?? :P 15:33 <@deen> IcyFoxy: haha, Araq is currently working on a php backend for Nim ;) 15:34 < IcyFoxy> non tracing garbage collector? So... Reference counting or something else fancy? 15:34 <@deen> heinrich5991: also, python is dynamically typed, that's a no-go for me 15:34 < IcyFoxy> deen: But... php isn't... :( 15:34 < ACTom> deen: I found someone has translated your blog about nim to Chinese :-D 15:34 <@heinrich5991> I haven't seen actual static typing for numerical code (tracking matrix dimensions) 15:34 <@deen> IcyFoxy: http://nim-lang.org/docs/gc.html "Deferred Reference Counting with cycle detection" 15:35 < IcyFoxy> I see 15:35 <@deen> heinrich5991: well, i don't write numerical code, but here: https://github.com/def-/nim-unsorted/blob/master/matrixmultiplication.nim 15:35 <@heinrich5991> >>> np.random.normal(0, 1 / np.sqrt(n), size=(50,1000)).cumsum(axis=-1) 15:36 <@deen> ACTom: cool, link? 15:36 < ACTom> https://segmentfault.com/a/1190000002576013 15:36 <@deen> ACTom: i've only heard of a japanese and russian translation so far 15:37 <@heinrich5991> (the above code gives me 1000 brownian motions, discretized in 50 steps) 15:37 <@heinrich5991> haven't seen any language where I can do that faster 15:37 <@heinrich5991> (matlab is horrible) 15:37 <@deen> you just call into a library, right? so it doesn't matter which language you use on top 15:38 < ACTom> deen: yeah, nim is noticed by many people in China:-D 15:38 <@heinrich5991> deen: what does "just a library" mean? 15:38 <@deen> heinrich5991: you didn't write that code in python, you're using a C library! 15:38 <@heinrich5991> it's a pyhton-only library 15:39 <@heinrich5991> that's silly 15:39 <@deen> yeah, but written in C with a python-interface 15:39 <@deen> it's not silly if you want to write your own libraries 15:39 <@heinrich5991> you're not using java, java std library is written i nC 15:39 <@deen> because then you have to learn C as well 15:39 <@deen> heinrich5991: is it? that's disappointing 15:39 <@heinrich5991> what would you write the platform-specific parts in? 15:39 <@deen> I like this about Rust, Nim and D, they use their own language to write even the lowest level code 15:40 <@deen> heinrich5991: platform-specific in what way? 15:40 <@deen> assembler? linux/windows? 15:40 <@heinrich5991> OS 15:41 <@deen> just write it in the language itself, don't see the problem with that 15:41 <@heinrich5991> how do you call out to the OS? as it happens, windows is only accessible via C ffi 15:41 <@deen> when defined(linux): # linux specific code here 15:42 <@deen> heinrich5991: as it happens Nim, D and Rust have great C FFI :) 15:42 <@heinrich5991> yes 15:42 <@heinrich5991> that's fine 15:42 <@heinrich5991> if you see that as a hard requirement, then other languages are bad 15:42 <@deen> so you need a wrapper for the c functions and can use them in the lang directly 15:42 <@deen> not a hard requirement, but a nice thing to have 15:44 <@deen> I'm not saying Python is bad, perfectly fine language for its use-case and one of my most used languages, but it can't fit every use case 15:44 <@heinrich5991> like most languages 15:44 <@heinrich5991> but I was talking about numerical stuff 15:44 <@heinrich5991> and I haven't hit the problem that I needed something that wasn't implemented 15:44 <@heinrich5991> so I saved a lot of time and debugging by not implementing everything myself 15:45 <@deen> that's ideal, yeah 15:55 < ACTom> I have put 3 PR to ddnet, 2 about translate, 1 about font~ 16:01 < ACTom> deen told me before, big font will let render slow a little, so I split 2 fonts, one for CJK, one for eastern. 16:01 < ACTom> big font only load when user choose CJK language 16:16 < ACTom> EastByte heinrich5991: how do you think? 16:17 <@EastByte> I don't know much about the font implementation in teeworlds 16:19 <@EastByte> iirc it only loads letters that are currently needed into an opengl texture 16:21 < ACTom> now, ddnet's font is DejavuSans, it doesn't include CJK chars 16:21 <@EastByte> how big would a CJK font file be? 16:22 < ACTom> 5,049,952 Bytes 16:23 < ACTom> I merged DejaVuSans and WenQuanYiMicroHei 16:28 < ACTom> After this, the only problem to Chinese people is input method, I have tried sdl2-try3, it can input Chinese but a little problem, can't shows input list 16:30 <@deen> ACTom: yeah, more work is necessary for the SDL2 input methods 16:31 <@EastByte> how do chinese people actually type? 16:31 <@EastByte> do they have complex key combination sequences? 16:32 <@heinrich5991> https://en.wikipedia.org/wiki/Ruby_character 16:32 <@heinrich5991> I believe I saw this for japanese 16:32 < ACTom> We use pinyin(spell of chinese) 16:32 <@heinrich5991> wait, maybe I'm confusing this 16:32 < ACTom> and someone use a mod client named c-client 16:32 <@heinrich5991> but it was some transcription of the characters 16:35 <@deen> Having proper SDL2 would fix many many things at once, I think it's the only choice, just need to fix a few bugs and test it well 16:35 < ACTom> heinrich5991: I saw this page, but pinyin is like phonetic symbol of English, 16:35 <@heinrich5991> yea 16:35 < ACTom> yeah, waiting for SDL2 16:36 < ACTom> So, I just put PR about translate and fonts, not about input method :-D 16:36 <@deen> ACTom: you could also work on fixing SDL2! 16:39 < ACTom> deen: I'm trying it, but could not found information about input method, the data I can find is not perfect, has many bugs 16:39 <@deen> ACTom: there are a few examples included in SDL2 i think 16:40 <@deen> test/testautomation_keyboard.c for example 16:41 < ACTom> yeah, but it fit Japanese, nor Chinese.. 16:41 <@deen> hm, weird 16:41 <@deen> so maybe it's not even supported in SDL2 at all? 16:42 <@deen> can you maybe find other sdl2 games and see if they have working input? 16:42 < ACTom> I'm trying, but in China, companies don't like opensource… 16:46 < ACTom> Now ddnet-sdl2 can input Chinese, but you see 16:46 < ACTom> http://img.vim-cn.com/2e/b700ff7fb5d0642348b787c4ac16f1cfe1f3d9.jpg 16:46 < ACTom> when I input chinese, input method has a list to let me choose 16:46 < ACTom> in ddnet-sdl2 cannot show this dialog 16:46 <@deen> Looks like TsFreddie did the work already once: https://www.teeworlds.com/forum/viewtopic.php?id=10838 16:47 < ACTom> yes, I read his source 16:47 < ACTom> his code is fit japanese too.. 16:48 < ACTom> it can support some chinese,but not all 16:49 < ACTom> I have talked to him too.. 16:50 < ACTom> Maybe I can find more data to fix it, I'll do it:-D 18:08 < F1rSt> hi all 18:56 < F1rSt> no one talks ? :D 18:56 < F1rSt> so tired ? :D 18:57 < F1rSt> deen: hi 18:57 < F1rSt> deen: i have some questions 19:04 <@deen> hi 19:17 < F1rSt> deen: are you there? 19:17 <@deen> F1rSt: sometimes 19:18 < F1rSt> deen: :D 19:18 < F1rSt> deen: as you know im hamid jigool's friend 19:18 < F1rSt> deen: i have a question for the ddrace servers 19:18 < F1rSt> deen: in iran when you run a server on internet 19:19 < F1rSt> deen: they start attacking to servers 19:19 < F1rSt> deen: and we cant understand who it is and how to stop him 19:19 < F1rSt> deen: because they attack with different servers 19:19 < F1rSt> deen: so almost all of the game servers in iran are Interanet 19:19 < F1rSt> means local internet 19:20 < F1rSt> deen: for preventing ddos attacks 19:20 <@deen> ok, i know 19:20 < F1rSt> deen: we want to connect our ddnet server with proxy to ddnet 19:20 <@deen> i know, that's a possibility, but I don't want it 19:20 < F1rSt> deen: why ? 19:21 <@deen> I don't want a server that only some people can connect to 19:21 <@deen> no one can watch iranians play there 19:21 < F1rSt> deen: believe me 19:21 < F1rSt> deen: even if we make it internet 19:21 < F1rSt> deen: no one can connect to our server unless with 300 ping 19:21 <@deen> that's fine 19:22 <@deen> but we tried a few times and servers in iran are too expensive and too easy to ddos 19:22 <@deen> and get attacked too much 19:22 <@deen> so no ddnet server in iran 19:22 < F1rSt> deen: they are not easy to ddos 19:22 < F1rSt> deen: there's just so common 19:22 < F1rSt> deen: some people 19:22 < F1rSt> deen: crack many different foreign servers 19:22 < F1rSt> deen: and start attacking 19:23 < F1rSt> deen: if the attack with local server we can track them 19:23 < F1rSt> deen: with an organization available in iran named FATA 19:23 < F1rSt> deen: they track them so fast and punish them 19:23 <@deen> anyway, you know my position but I'm not in charge of ddnet anymore :P 19:23 < F1rSt> deen: but the problem is that 19:23 < F1rSt> deen: cracking servers is easy for people 19:24 < F1rSt> deen: :| 19:24 < F1rSt> deen: you are 19:24 < F1rSt> deen: hidden owner :D 19:24 < F1rSt> deen: anyway , why did you leave ddnet? 19:24 < F1rSt> deen: you could choose some staff to manage things 19:25 < F1rSt> deen: and if you were busy you could put them in charge 19:25 <@EastByte> hm, a solution I always thought about: hosting the actual server in intranet and having an external vps to make it reachable via internet 19:25 < F1rSt> good idea 19:25 < F1rSt> GOOD IDEA 19:25 < F1rSt> \m/ 19:26 < F1rSt> EastByte: thanks genius <3 :D 19:26 < F1rSt> we will have attacks on the external vps 19:26 <@deen> EastByte: sounds horrible, then what ip do you advertise to master servers? 19:26 < F1rSt> but its not a problem 19:26 < F1rSt> for iranian we advertise 19:26 < F1rSt> the interanet one 19:27 < F1rSt> we should talk to a network master 19:27 < F1rSt> so he can solve our problem 19:27 < F1rSt> no emoticons :-? 19:27 < F1rSt> but anyway 19:27 <@EastByte> deen: both 19:27 < F1rSt> ~(^_^)~ 19:28 < F1rSt> thanks 19:28 < F1rSt> ill discuss that with hamid 19:28 <@EastByte> F1rSt: this will not work out so easily 19:28 < F1rSt> yeah i know 19:28 < F1rSt> and thats so expensive 19:28 < F1rSt> but thats a solution 19:29 <@EastByte> deen: but advertising a non-public ip to the masterservers won't work out well 19:29 <@EastByte> iran players will have to use favourites then 19:29 <@deen> EastByte: right, and so iranians can't even find their server 19:29 < F1rSt> EastByte: even now they use it too 19:29 <+o_be_one> hello 19:29 <@deen> i don't like the whole intranet thing and wouldn't want to work with it 19:29 < F1rSt> because servers are not available when you search 19:30 < Gabeee> EastByte: that would work.. with high latency? :/ 19:30 <+o_be_one> EastByte: since 2 days ive changed something on ger2, did you seen something bette r? 19:30 <@EastByte> Gabeee: depends 19:30 < F1rSt> you should add them to favourite 19:30 < F1rSt> deen: why ? :D 19:30 < F1rSt> deen: i wish you were in iran and understand our situation :D 19:30 <@EastByte> deen: I like it because for me it's always fun to mitigate ddos attacks, but more like an experiment 19:31 <@EastByte> o_be_one: what have you changed? 19:31 < F1rSt> ok thanks guys 19:32 < F1rSt> i wont close the tab 19:32 < F1rSt> i need conversation log :D 19:32 < F1rSt> Brb 19:33 <@deen> also, new CHN is set up, but our DNS provider is broken, so can't redirect chn.ddnet.tw yet 19:36 <+o_be_one> EastByte: ive changed the arbor check policy 19:36 <+o_be_one> its les agressive now 19:37 <+o_be_one> less* 19:38 <+o_be_one> and ive seen that my players on this serv (who was with the same bug as you) can play on it now 19:38 <+o_be_one> 28 players atm 19:42 < switcher_> Hm, would it be possible to make a login server for the iran server, so only the auth'ed clients could connect? 19:42 < switcher_> would that even be of any help? 19:42 <@EastByte> o_be_one: hm connecting to ger2 still takes nearly a minute for me 19:42 <@EastByte> switcher_: nope 19:42 <@EastByte> the login server would simply be downed by the ddos attack 19:43 < switcher_> Yeah but the players could still play, no? they just cant login 19:43 <@EastByte> only if the login server runs on an external server 19:43 < switcher_> Thats what I meant 19:43 <@EastByte> but attackers can easily achieve the actual server's ip address 19:43 <@EastByte> how do you want to prevent that? 19:44 < switcher_> Cant you just block all other IP's other than the authed one, like an dynamic firewall 19:44 < switcher_> or something 19:44 <@EastByte> only in the software firewall of the server itself 19:44 <@EastByte> the server that isn't reachable anymore on an attack 19:45 <@EastByte> switcher_: it would be easy if we could simply block specific type of traffic 19:48 <+o_be_one> btw EastByte dont forget me about filter 19:50 <@EastByte> right 20:02 < switcher_> EastByte: shouldnt that be possible? somehow? 20:05 <@EastByte> No, for a cheap vps you only get a 100mbit link and you cant prevent traffic from filling up those 100mbit 20:24 <@deen> EastByte: except for the one 10 gbit/s cheap vps we once had for GER, I would never have cancelled that one but they threw me out^^ 20:25 <@EastByte> right^^ 21:59 <@deen> laxadedi, laxa: You might want to add few more channels on DDNet Teamspeak, I often see all of them with people 23:54 < laxa> deen: people often create temp private channels 23:56 < laxa> I have added 2 more channels