11:56 < fragmer> fNbt 0.5.1 coming soon (tomorrow probably); optimization/bugfix release 11:56 < fragmer> fNbt 0.6.0 soon after, with a new option for high-performance NBT writing (~30% quicker than current NbtFile.WriteToStream, significantly reduced memory use, all at the expense of ease-of-use) 13:06 < Aquaticus> Is anyone in? 13:33 <+sadimusi> Aquaticus: just ask your question and maybe somebody will answer it 13:35 < Aquaticus> Well I heard that Dinnerbone was going to change the MC protocol quite a bit for 1.7 13:36 < Aquaticus> I wondered if anyone knew any specifics 13:36 <+sadimusi> please don't ping him unnecessarily 13:36 <+sadimusi> but yes, he told us a few things 13:36 < Aquaticus> Sorry I didn;t know he was in here 13:37 < Aquaticus> So what did he say? 13:37 <+sadimusi> first of all there will be at least 4 different protocols, two for the login phase and two for the game phase 13:38 <+sadimusi> those two are separated by direction 13:38 <+sadimusi> so there will be 4 different 0x00 packets 13:38 <+sadimusi> then he wants to use UTF-8 and varints 13:39 <+sadimusi> iirc even the packet id is a varint which imho is pretty stupid 13:39 < Aquaticus> 4 different keep alives? Interesting 13:39 <+sadimusi> only around two of them will be keep alive 13:39 < Drainedsoul> linking the protocol parsing to the player's state is tight coupling imho 13:39 < Drainedsoul> tbh I expected no less from Mojang 13:39 < Aquaticus> Did he say why he wants UTF-8 instead of 16? 13:39 < Drainedsoul> well UTF-16 is awful 13:39 < Aquaticus> I understand most (but not all) of the current protocol is 16 13:40 < Drainedsoul> so whether he's stated a reason or not, it's a good thing 13:40 <+sadimusi> I think he just chose it because it's less data to be sent :D 13:40 < Aquaticus> I'm not sure he cares about less data sent 13:40 <+sadimusi> judging from the varint choice 13:40 < Drainedsoul> it also doesn't have endianness concerns 13:40 < Aquaticus> https://gist.github.com/Dinnerbone/5631634 what's discussed here makes it sound like he isn't focusing on data size so much 13:41 < Drainedsoul> no one should actually choose UTF-16 in this day and age when they have a choice. It's all the disadvantages of UTF-8 and -32 without any of the advantages 13:41 <+sadimusi> who said they had to be consistent with their choices? :P 13:41 < Aquaticus> Oh I see, Drainedsoul 13:41 < Aquaticus> I wasn't quite sure what you meant at first 13:41 <+sadimusi> they didn't really choose utf-16 anyway, it's just what java uses by default 13:42 < Aquaticus> Yeah 13:42 < Drainedsoul> UTF-8 has the advantage of space efficiency, which UTF-16 doesn't, but has the disadvantage of being multi-byte, which UTF-16 also has. UTF-32 has the advantage of not being multi-byte, which UTF-16 doesn't have, but has the disadvantage of endianness problems, which UTF-16 also has. >_ 13:42 < Drainedsoul> *>_> 13:42 < Aquaticus> How is 32 not multi byte? 13:42 < Drainedsoul> *multi-code unit 13:42 < Aquaticus> Ah 13:42 < Drainedsoul> each code point is 1 UTF-32 code unit 13:43 < Aquaticus> Yeah 13:43 < dx> at least for now 13:43 < Drainedsoul> :P 13:43 < Aquaticus> I agree about the consistency though, the Y coordinate is at times a byte, a short and an int in various packet types 13:43 < Drainedsoul> I'm just hoping the new protocol doesn't constrain column height the way the current one does. Probably too much to hope for tho 13:43 < Aquaticus> If I had it my way I'd do away with the ASN format for the keys 13:44 <+sadimusi> the only thing I hope for is backwards compatibility for the ping, that would make my life a whole lot easier 13:44 < Drainedsoul> but I think the time comes when backwards compatibility is a kludge 13:44 < Drainedsoul> ever worked with WinAPI? 13:44 < dx> it will look awful in the code, but it's just ping 13:45 < dx> they can try to isolate it... somehow 13:45 < Aquaticus> I've never used WinAPI in any real sense 13:45 < Aquaticus> I might have played with it for a few minutes once 13:45 <+sadimusi> If I were to design the protocol I would definitely drop backwards compatibility, but I still hope they don't 13:45 < Drainedsoul> a HANDLE in WinAPI is a typedef'd void pointer. APIs that existed in the Win16 days return -1 for failure. APIs from Win32 return 0 (i.e. NULL). 13:45 < Drainedsoul> some APIs use both for different parameters 13:45 < Drainedsoul> ... 13:46 < dx> sadimusi: they can always drop it after 1.6 clients stop being relevant 13:46 < Drainedsoul> this is just one example of backwards compatibility being kludge 13:46 < Aquaticus> I like void pointers though, they're neat :D 13:46 < Aquaticus> Back in the bad old days 13:46 < dx> sadimusi: i mean, <=1.6 clients 13:46 < Aquaticus> void* malloc(size_t sz); 13:46 < Drainedsoul> well that's not the issue. The issue is that in some cases HANDLE == 0xFFFFFFFF means failure, in other cases it's totally valid. 13:46 <+sadimusi> dx: I only care if there are still <=1.6 servers around 13:46 <+sadimusi> dx: right now there are about 5% 1.5.2 servers on my list 13:47 < Aquaticus> Right 13:47 < Aquaticus> Well I have no immediate plans to work with the windows api 13:47 < dx> sadimusi: what about 1.4.6? (my ftb server is stuck there) 13:47 < Drainedsoul> CreateIoCompletionPort the function actually takes INVALID_HANDLE_VALUE as one of its parameters if you don't want to provide that parameter, whereas NULL does the same thing for the other one. 13:48 < Drainedsoul> I had a lot of fun tracking down a SIGSEGV in my server that came from accidentally getting those backwards... 13:48 < Aquaticus> I'm working on a MC server in C# at the moment actually 13:48 < Drainedsoul> C++ 4eva ;[ 13:48 <+sadimusi> dx: 0.8% are on 1.4.x 13:49 < dx> that seems to be more than 0 13:49 < Aquaticus> I've never done socket stuff in C++ though, so I thought # would be easier 13:49 < Aquaticus> By the way does SirCmpwn ever come in here? 13:49 < dx> he used to, but not anymore 13:49 < Aquaticus> I want to tell him his comments on the Dinnerbone chat gist made me laugh 13:49 < Aquaticus> But I agree with it 13:49 < dx> don't ping him 13:49 < Aquaticus> (sorry to ping again) 13:49 < Drainedsoul> I don't know if he's still banned, but he was banned because he didn't praise Our Lords the Mojangstas 13:49 < Aquaticus> Sorry didn't mean it 13:50 <+sadimusi> dx: that are 239 servers, so not really negligible 13:50 < Aquaticus> Banned? wow 13:50 < dx> sadimusi: ouch. 13:50 < Aquaticus> Well thanks for letting me know about the changes, guys 13:51 <+sadimusi> Aquaticus: he hangs out in #craft.net 13:51 < Aquaticus> I might check that out 13:51 < dx> sadimusi: does anything stop you from caching which ping protocol to use for each individual server? or the query process 'stateless' right now? 13:51 < Aquaticus> Seems like a fair amount will get changed for 1.7, I might as well not do any more until then 13:51 < dx> ...i guess that does count as pain in the ass compared to what you're doing now 13:52 < Drainedsoul> I don't see why you wouldn't do anything until then 13:52 < Drainedsoul> if you avoid tight coupling etc., you should be fine 13:52 < dx> ^ 13:52 < Drainedsoul> but if you tightly couply your components, you're going to have a bad time anyway 13:52 < dx> there's a lot of things to do, not everything is protocol 13:52 < Aquaticus> At the moment what I've been working on is protocl 13:52 < Aquaticus> protocol* 13:52 <+sadimusi> dx: currently only the ip and port is cached but I might have to do something like that if backwards compatibility is really broken 13:53 < Drainedsoul> I don't know about C#, but implementing the protocol in C++ isn't difficult at all 13:53 < Drainedsoul> have you done your actual connection handling? 13:53 < Drainedsoul> hint: that shouldn't be coupled to protocol handling at all 13:53 < Aquaticus> Yeah I can get a player to spawn 13:53 < Aquaticus> Something's weird with my stream encryption though and I haven't figured out what yet 13:53 < Drainedsoul> what do you mean "weird"? 13:53 < Aquaticus> Well you know how a string is prefixed with a short indicating its length? 13:54 < Drainedsoul> yes 13:54 < Aquaticus> Well my code at the moment doesn't decrypt that short properly 13:54 < Aquaticus> So instead of say 16 it reads like 10000 or some such 13:54 < Aquaticus> And then fails when it can't read that many bytes :D 13:54 < Aquaticus> I expect there's some typo or something 13:54 < Drainedsoul> how are you encrypting the short/etc. 13:54 < Aquaticus> I haven't worked on it in a few days 13:55 < Drainedsoul> are you making sure to flip the endianness of the short 13:55 < Aquaticus> Yes because all prior unencrypted packets work fine 13:55 < Drainedsoul> how do you handle encryption, broadly? 13:56 < Aquaticus> I expect wrongly because I've never done it before :P 13:56 < Aquaticus> Err let me see 13:56 < Drainedsoul> well it just seems bizarre that one specific data value isn't being encrypted, or being encrypted incorrectly 13:56 < Drainedsoul> encryption should be decoupled from the protocol, so the encryptor shouldn't really be aware in any significant way of what it's encrypting 13:56 < Aquaticus> Well I don't think it's JUST shorts that don't work 13:56 < Aquaticus> The first packet I read happens to have a short and the program crashes there 13:57 < Drainedsoul> well you shouldn't be "reading packets" per se, you should be reading buffers. The parsing should happen thereafter 13:57 < dx> Aquaticus: protip: craft.net is a good "reference" implementation 13:57 < Aquaticus> Yeah I did go through that 13:58 < Aquaticus> I'm trying to see if I can work it out myself first though 13:58 < Aquaticus> I feel I'd learn more by doing that 13:58 < dx> sure then 13:58 < Aquaticus> I also use a Minecraft protocol proxy 13:58 < Aquaticus> Which I found invaluable 13:59 < Drainedsoul> pro-tip: Once you're done building your protocol parsing, build a protocol proxy into your server 13:59 < Aquaticus> I appreciate the advice though, thanks 13:59 < Drainedsoul> that's what I did, now that is invaluable 13:59 < Drainedsoul> server just spits out verbose information about the packets it's receiving/sending 13:59 < Drainedsoul> can't beat that for debugging 13:59 < Aquaticus> At the moment I've got my code printing out every packet it recieves and sends to the console 13:59 < Aquaticus> Yeah that ^ 14:00 < dx> i turned my minecraft bot into a proxy really early in the development, for debugging too 14:00 < dx> and then i lost interest in the bot part 14:00 < Drainedsoul> lol 14:00 < dx> proxies are fun 14:00 < Aquaticus> What would the bot have done? 14:00 < Aquaticus> I've heard of someone who wrote a bot that could build creations from plans 14:01 <+sadimusi> most of the bots (like mineflayer) allow you to script them however you like 14:01 < Aquaticus> Right 14:01 < dx> the bot was supposed to manage some sort of in-game item shop, but it was easier to just use a bukkit plugin and it turned out to be more fun to have a scriptable proxy 14:01 <+sadimusi> which proxy are you using btw? 14:02 < Aquaticus> Err let me look up the name 14:02 < Aquaticus> ProtoProxy 14:02 < Aquaticus> I expect someone in here wrote it 14:02 <+sadimusi> never heard of that one 14:02 < Aquaticus> http://wiki.vg/Utility_List 14:02 < Aquaticus> It was the only one from that list I could get working 14:03 < dx> "m3cp Actively maintained Python Minecraft proxy with plugin support." 14:03 < dx> lol 14:03 < dx> it's not even written correctly 14:04 < Aquaticus> Yeah Python wouldn't behave when I tried to install it 14:04 <+sadimusi> on windows? 14:04 < Aquaticus> Yes 14:04 <+sadimusi> tried SMProxy? 14:04 < Aquaticus> I couldn't get that to build properly either :P 14:04 <+sadimusi> :D 14:04 < Drainedsoul> my experience with SMProxy is mostly just it crashing a lot. 14:05 <+sadimusi> I never used it but assumed it would just work on windows 14:05 < Aquaticus> I got really impatient with it all that day 14:05 < Aquaticus> I found one that worked and just stuck with it 14:06 < Aquaticus> Also I'm from Australia and our internet is horrible, so you have to wait for stuff to download 14:06 < Aquaticus> All our international traffic gets routed via a single 28.8k modem 14:06 < Drainedsoul> rofl 14:06 < Drainedsoul> whereabouts in Australia? 14:06 < Aquaticus> Victoria if you're familiar, south east if you're not 14:06 < Drainedsoul> Victoria but not Melbourne what is this 14:07 < Aquaticus> Well I don't live in the CBD 14:07 < Aquaticus> Greater Melbourne I guess 14:07 < Drainedsoul> ah okay, just making sure 14:07 < Aquaticus> Are you from Aus then? 14:07 < Drainedsoul> no, I have a friend who lives there tho. 14:07 < Drainedsoul> Had the unsurpassed fucking joy of visiting Perth ~4 years ago 14:08 < Drainedsoul> if I die and go to hell, I'm sure it can't be that bad -_- 14:08 < Aquaticus> Hahaha nice 14:08 < Aquaticus> If you live in Melbourne you're required to make fun of those who don't 14:08 < Drainedsoul> my friend moved to Melbourne tho so I'm visiting there this Xmas, I've been led to believe that'll be better 14:08 < Aquaticus> Perth gets a lot of shit from Melbourne 14:08 < Drainedsoul> although I'm not sure how a Canadian like me will cope with Xmas in summer... 14:08 < Drainedsoul> I'll get off the plane wearing my winter coat and be like what's with this heat eh 14:09 < Aquaticus> Hahaha you even added the 'eh' 14:09 < Aquaticus> Melbourne's a great city though, I love it 14:09 < Aquaticus> A lot of history and firsts happened in Melbourne 14:09 < Drainedsoul> the structure of the bay is really interesting to me 14:09 < Drainedsoul> how it just has this tiny mouth 14:09 < Drainedsoul> I heard you guys almost blew away like a week ago tho 14:10 < Aquaticus> 140 kph winds in some places 14:10 < Aquaticus> Flights got grounded, etc 14:10 < Drainedsoul> yeah my friend was sending me pictures of flattened street signs and such 14:10 < Aquaticus> Plenty of trees on roads 14:10 < Aquaticus> We lost power for a couple of hours too 14:11 < Drainedsoul> I don't know if I'd still be here after 140kph winds, on account of Canada my house is completely surrounded by tall evergreen trees ._. 14:11 < Aquaticus> You were talking about the bay before: http://home.vicnet.net.au/~phillip/mf_1d24_.jpg 14:12 < Aquaticus> The water is a different colour inside it and outside it 14:12 < Drainedsoul> that's sweet 14:12 < Aquaticus> I love it down there, there's an old WW2 defence base 14:12 < Aquaticus> Afk for a tick 14:13 < dx> Aquaticus is lagging a lot :/ 14:13 < Drainedsoul> hmm? 14:14 < dx> that's a really long tick 14:15 < Drainedsoul> my friend confirms that "tick" is an Australianism for "moment" 14:15 < dx> "tick" is minecraftism for 1/20th of a second 14:15 < Drainedsoul> at least it makes sense, unlike other Australianisms 14:17 < Drainedsoul> I can't really talk being from BC, Canada. We call two seat couches "chesterfields" and use weird Native American works like "skookum" 14:18 < dx> sadimusi: i'm not sure if i said this before, but i really like how mc4p/messages.py turned out to look. 14:19 < Aquaticus> Ok back now 14:19 < Drainedsoul> terrain generation is like this infinite vortex of complexity that you get sucked into ._. 14:19 < Aquaticus> And yes, tick means moment :D 14:19 < Drainedsoul> it wouldn't really be a problem if it wasn't so addictive ;( 14:20 < Aquaticus> Silly Americans 14:20 < Drainedsoul> unlike most Canadians I actually don't get offended by being called an "American" 14:20 < dx> implying america 14:20 <+sadimusi> dx: me too, but I'm still having a hard time justifying the dark magic involved to myself 14:20 < Drainedsoul> sadimusi: If it makes you feel any better, this code I'm working on uses token pasting macros. 14:20 < Drainedsoul> whatever dark magic you're using can't be that bad. 14:20 <+sadimusi> :D 14:21 < dx> sadimusi: yeah, i was about to say that... i'm not completely happy about the implementation. both inspecting frames + global state is :( 14:21 <+sadimusi> dx: I was planning on modifying it slightly so really only the definitions inside the context are captured 14:21 < Aquaticus> dx are you American by chance? 14:21 < dx> Aquaticus: nope 14:22 <+sadimusi> dx: that would allow to specify a parent version (for 1.6.4) 14:22 < Aquaticus> I just wondered what having no govt would be like 14:22 < dx> anarchy in the US 14:22 < Aquaticus> In Australia when our govt couldn't get a budget through they got sacked 14:22 < Aquaticus> It happened here in the 70s 14:23 < dx> sadimusi: it's tempting to turn this magic into metaclasses, but as always with metaclasses... i don't know if that makes it better or worse 14:23 < Drainedsoul> what's the magic, I must know. 14:23 < Aquaticus> Kind of makes you glad to have a monarch who can fire the government 14:23 < Aquaticus> I suppose Drainedsoul would agree :D 14:23 < Drainedsoul> if QE is relevant to your gov't I don't know what to say to u 14:24 <+sadimusi> Drainedsoul: using inspect_frame to get all local variable definitions 14:24 < Aquaticus> Well via a governor general 14:24 < Drainedsoul> GG doesn't do anything here, he just rubberstamps things 14:24 < Aquaticus> Same here for ours 14:24 < dx> Drainedsoul: don't look at the magic directly, only marvel at this beautiful facade https://github.com/sadimusi/mc4p/blob/master/mc4p/messages.py 14:24 < Aquaticus> But if the govt does screw up she'll fire them 14:25 < Drainedsoul> here the PM just prorouges parliament and giggles about it, and no one does anything except get irritated with him 14:25 < Drainedsoul> then again being Canadian he has a distinct advantage 14:25 < Aquaticus> Our PM has barely done anything yet, but there's a facebook page: 14:25 < Drainedsoul> when people complain about the economy he's just like look @ america tho 14:25 < Aquaticus> Tony Abbott - Worst PM in Australian History 14:26 < Drainedsoul> politics and sensationalism go hand-in-hand 14:26 < Drainedsoul> dx: I don't name my packets :( 14:26 < Aquaticus> You should see all the fuss about Murdoch lately 14:26 < Aquaticus> Some reckon he rigged the election to get Abbott's right wing party into power 14:26 < dx> Drainedsoul: why not? names are nice for debugging, and mc4p is mostly for that 14:26 < Drainedsoul> dx: Because all the packets are implemented as template metaprograms, which aren't amenable to names 14:27 < dx> and i was complaining about magic 14:27 < Aquaticus> oh god, 572 unread emails 14:27 < Drainedsoul> template <> class PacketTypeMap<0x00> : public PacketType<0x00,Int32> { }; 14:27 < Drainedsoul> it's pretty convenient tho 14:28 < Aquaticus> In my C# server all the packet classes are named 14:28 < dx> i guess you can always refer to packets with constants 14:28 < Aquaticus> They all inherit from a Packet superclass as well 14:28 < Drainedsoul> ugh inheritance 14:29 < Drainedsoul> needs more compile time polymorphism 14:29 < dx> said like a true c++ programmer 14:29 < Drainedsoul> :] 14:29 < Aquaticus> What's that thing called? The diamond problem or something? 14:29 < Drainedsoul> yeah 14:29 < Aquaticus> XD 14:29 < Drainedsoul> well 14:29 < Drainedsoul> it's that or no MI 14:29 < Drainedsoul> jokes on u 14:29 < Aquaticus> I do actually like C++ though 14:30 < Aquaticus> It has type inference 14:30 < Aquaticus> I like type inference 14:30 < Drainedsoul> I like it a lot more since I wrote my own OO Unicode String library 14:30 < Drainedsoul> std::string et al. are just abominations 14:30 < Aquaticus> ^^ this 14:30 < Aquaticus> Err 14:30 < Aquaticus> ^^^ 14:30 < Aquaticus> Auto emoticon 14:30 < Aquaticus> What's worse is when you get something like std::iterator 14:30 < Drainedsoul> lol 14:30 < dx> all i know about c++ is that you print text using bit shift operators 14:31 < Aquaticus> Better than no operator overloading 14:31 < Drainedsoul> well, C++ has changed the meaning of << and >> to also mean output/input 14:31 < Drainedsoul> for chaining like std::cout << foo << " " << bar; 14:31 < Drainedsoul> which I really like 14:31 < barneygale> << seems to be doing 2 different things in that example 14:31 < Aquaticus> I can't forgive Java for not having operator overloading 14:31 < barneygale> or semantics in c++ are weird 14:31 < Aquaticus> No it's doing one thing in that example 14:32 < Drainedsoul> which "or semantics"? like how boolean operators short-circuit unless operator || is overloaded? 14:32 < barneygale> Drainedsoul: that was a continuation of my previous line heh 14:32 < Aquaticus> It'd be like Console.Out.WriteLine("{0} {1}", foo, bar); 14:32 < Drainedsoul> it's only doing one thing - 14:32 < Drainedsoul> - printing output 14:33 < Drainedsoul> std::cout's operator << returns a reference to itself, so you can chain it on itself. 14:33 < Drainedsoul> to output foo+" "+bar 14:33 < Drainedsoul> without doing in memory concatenation 14:33 < barneygale> right, but what is `" " << bar` doing? concatenation? 14:33 < Aquaticus> Yes 14:33 < Drainedsoul> it's evaluated left- 14:33 < Drainedsoul> to-right. So you evaluate std::cout << foo 14:33 < Drainedsoul> which prints foo and returns a reference to std::cout 14:33 < Drainedsoul> so then it's std::cout << " " 14:34 < Drainedsoul> which prints " " and returns a reference to std::cout, so then it's std::cout << bar 14:34 < dx> fun 14:34 < Drainedsoul> :P 14:34 < Aquaticus> It's better than printf in some ways 14:34 < Aquaticus> Because it avoids needing varargs 14:34 < barneygale> ohhh, I see! 14:34 < Drainedsoul> but you can write type safe printf now 14:34 < barneygale> sorry, I'm a total noob to C++ 14:34 < Aquaticus> printf is easier to specify formatting with I think 14:34 < Drainedsoul> because variadic templates are the bee's knees 14:34 < dx> barneygale: i was reading it wrong too :D 14:34 < Aquaticus> You guys are duffers 14:35 < barneygale> SORRY FOR NOT KNOWING A LANGUAGE YOU KNOW! :D 14:35 < Aquaticus> Ah that's alright, I don't know Python. All of the earlier discussion was above my head 14:35 < Drainedsoul> in a lot of ways I wish Python wasn't whitespace-delimited. It's the massive barrier to me using it. I just can't parse code without curly braces and such things :| 14:36 < Drainedsoul> mostly because I tend to use line breaks and indentation within a single line to make it comprehensible 14:36 < Aquaticus> Yeah 14:36 < dx> we do that too in python code 14:36 < Aquaticus> I like that Python was named after Monty Python though 14:36 <+sadimusi> if you follow the common style guidelines that really isn't a problem 14:36 < Drainedsoul> which common style guidelines? 14:37 < Aquaticus> I make my own style :D 14:37 < Aquaticus> Java's bracing style is fucking stupid IMO 14:37 < Drainedsoul> Allman? 14:37 < Aquaticus> Err I forgot what it's called 14:37 < barneygale> You can still split stuff into multiple lines in python 14:37 < barneygale> and if you do that it doesn't care about the indentation 14:37 < Drainedsoul> Allman is braces under, OTBS is braces inline 14:38 < Drainedsoul> how do you escape newlines? 14:38 < dx> \ before the newline, lol 14:38 < Drainedsoul> so like in C macros 14:38 < Aquaticus> Yeah I'd probably use Allman 14:38 < barneygale> Not always necessary to do \ either 14:38 < Drainedsoul> https://github.com/RobertLeahy/MCPP/blob/master/include/mod.hpp#L108 14:38 < dx> you can also leave brackets open and the parser will know you'll continue the line 14:38 < Drainedsoul> like that? 14:38 < Drainedsoul> oh what 14:38 < Aquaticus> hpp wtf 14:39 < Drainedsoul> so sort of like this: https://github.com/RobertLeahy/MCPP/blob/master/src/aes_128_cfb_8.cpp#L28 ? 14:39 < dx> yup 14:39 < Drainedsoul> this changes everything :D 14:39 < Aquaticus> That code looks awful 14:39 < Drainedsoul> which? 14:40 < Aquaticus> The RoberyLeahy/MCPP link you gave 14:40 < Aquaticus> Robert* 14:40 < Drainedsoul> which one tho 14:40 < Drainedsoul> mod.hpp or aes_128_cfb_8.cpp 14:40 < Aquaticus> The second one 14:40 < Aquaticus> 128_cfb 14:40 < Drainedsoul> yeah it's a C library wrapper. It's going to be awful no matter how you hash it. 14:40 < Drainedsoul> but it's hidden away in its own file behind a nice abstraction >: ] 14:40 < Aquaticus> Their coding style though 14:41 < dx> TIL MCPP is Drainedsoul's project 14:41 < Aquaticus> Is it now 14:41 < barneygale> My main complaint about python is the lack of inline function definitions 14:41 < dx> barneygale: yeah, lambdas are terrible :( 14:41 < Drainedsoul> you mean like anonymous functions or declaring something inline? 14:41 < barneygale> anonymous, sorry 14:41 < Aquaticus> Inline asm 14:41 < Drainedsoul> dx: You didn't know that until now? You knew about MCPP before this? 14:41 < barneygale> https://github.com/barneygale/authserver/blob/master/authserver.py#L175 <-- I don't like doing things like this 14:42 < Drainedsoul> yeah anonymous functions are stupid awesome ._. 14:42 < dx> Drainedsoul: always saw the notifico messages, never knew who owned that project (i was like "who the fuck is robert leahy") 14:43 < Aquaticus> So you wrote your own terrain generator then? 14:43 < Aquaticus> I take my hat off to you sir 14:43 < Drainedsoul> :( I made a "Drainedsoul" github account, but my git GUI front-end (SourceTree) didn't play nice with separate accounts \: 14:43 < Drainedsoul> yeah it's here: https://github.com/RobertLeahy/MCPP/blob/master/src/generators/default/main.cpp 14:43 < Aquaticus> That picture of the mountain in particular 14:43 < Aquaticus> Well done 14:44 < Drainedsoul> yeah I think I measured that mountain and its top is Y=221 14:44 < Aquaticus> My house is higher than that 14:44 < dx> Drainedsoul: sounds like a shitty GUI, it should work with public key authentication, not with github accounts 14:44 < Aquaticus> :D 14:44 < Drainedsoul> dx: It does, at least on some level. But it has neat & tidy Github/Bitbucket integration. 14:45 < Drainedsoul> It asked about a public/private key pair, but I just used the Github integration option. 14:45 < dx> lol 14:45 < Drainedsoul> it's Atlassian's Git GUI front-end. I really like it 14:49 < Aquaticus> Anyone read Dilbert? 14:49 <+sadimusi> sure 14:49 < Aquaticus> I get them in my email daily 14:50 < Aquaticus> You get the occasional hilarious one :D 14:50 < Drainedsoul> I have a professor who puts Dilbert comics up on the projector everyday before class. 14:50 < dx> how many months between each good one, in average? 14:50 <+sadimusi> yeah, they're very popular among my professors as well 14:50 < Aquaticus> http://imgur.com/mI8gvLA 14:50 < Aquaticus> That one was good 14:51 < Drainedsoul> I hate that so much. People used to do that where I worked. 14:51 < Drainedsoul> that or putting it ontop of my keyboard 14:51 < Drainedsoul> thankfully I work from home now. Which obviates that and making going to school more convenient whoo 14:51 < Aquaticus> obviates? 14:51 < Aquaticus> Well there you go 14:52 < Aquaticus> I learned a new word 14:52 < dx> i put stuff on top of my own keyboard when i really need to remember something. it never works. 14:52 < dx> like a post-it note in the middle of the screen 14:52 < Aquaticus> I use windows 7's sticky notes program 14:52 < Drainedsoul> ugh post-its on monitors bother me. I usually just have a pile of papers next to my keyboard 14:52 < Aquaticus> half of my desktop is covered in them 14:52 < Drainedsoul> alternately I have a second desk where I keep pressing things. My keys and such are ontop of them, so I see them everytime I go out 14:53 < Aquaticus> I hope I never get a Pointy Headed Boss 14:53 < Aquaticus> or Bill Lumbergh 14:54 < Aquaticus> If I could never work for Bill Lumbergh, that'd be great 14:54 < Drainedsoul> I really like the shirts Bill Lumbergh wears 14:54 < Drainedsoul> banker collar shirts, omfg 14:54 < Aquaticus> And suspenders 14:54 < Drainedsoul> suspenders suck, braces are okay. Not my thing though 14:54 < Aquaticus> XD 14:55 < Drainedsoul> cowboy boots tho, omfg i luv mah boots 14:55 < Aquaticus> I only own three pairs of shoes 14:55 < Aquaticus> None of them are boots 14:56 < Drainedsoul> I have a pair of sneakers, pair of sandals, pair of cowboy boots, 4 pairs of black leather dress shoes, and a pair of brown leather dress shoes 14:56 < Drainedsoul> I really need to get a brown pair of cowboy boots, but they only sell really good ones in Vancouver :\ 14:56 < Aquaticus> 5 pairs of dress shoes? 14:57 < Drainedsoul> ofc. I only wear the sneakers when I go for walks 14:57 < Drainedsoul> jeans and dress shoes, hella classy 14:57 < Aquaticus> I wear my runners (sneakers to you) daily 14:57 < Aquaticus> My other two pairs are dress shoes and thongs (flip flops to you) 14:57 < Drainedsoul> I hate flip flops ;[ 14:57 < Aquaticus> Someone write an IRC bot that translates Australianisms for the rest of you :D 14:58 < Drainedsoul> it would accidentally be triggered whenever some non-Australian used profanity ;) 14:58 < Aquaticus> Write another bot that kicks people who spell colour without the U 14:59 < barneygale> my daily shoes: http://www.lyst.com/shoes/adidas-originals-gazelle-suede-sneakers-red/ 14:59 < Drainedsoul> I saw someone on reddit advocating that all programmers use color etc. consistently (as opposed to colour). I was like gtfo 14:59 < Aquaticus> Yeah I don't think any of my shoes even have a brand 14:59 < Drainedsoul> barneygale: in that particular color? 14:59 < barneygale> yah 14:59 <+sadimusi> I only own two pair of shoes, but that's all I've ever needed so far 14:59 < Aquaticus> Yeah I'm right with you on that Drainedsoul 14:59 < Drainedsoul> what do you pair them with? 14:59 <+sadimusi> (not counting snowboarding and skiing boots) 15:00 < dx> you guys are offtopic-ing the offtopic and i can barely follow you 15:00 < barneygale> Drainedsoul: they work with basically all my clothing 15:00 < Aquaticus> The thing about aluminum is it makes more sense than aluminium 15:00 < barneygale> but y'know, either chinos or jeans 15:01 < Drainedsoul> they'd work really well w/chinos yeah 15:01 < Aquaticus> dx Just read line by line, don't try to find a common theme 15:01 < Aquaticus> the hell is a chino anyway 15:01 < Drainedsoul> I have to take CHEM 101 for a Software engineering course (wat), and my Chemistry professor is a New Zealander. It's funny whenever he says aluminum 15:01 < Drainedsoul> *aluminium 15:02 < barneygale> "aluminum" sounds so weird 15:02 < Aquaticus> The guy who discovered it originally called it alumium 15:02 <+sadimusi> chem for SE? o.O 15:02 < Aquaticus> Then he changed it to aluminum 15:02 < Aquaticus> The British then changed it again 15:03 < Drainedsoul> The Software Engineering course at my Uni is a joke. I'm just tolerating it for the piece of paper really. Two physics courses were required. 15:03 < Aquaticus> You americans kept the aluminum and the rest of us went with aluminium to keep in line with the other -ium elements 15:03 < Aquaticus> Like chromium, sodium etc 15:03 < Drainedsoul> So was Calculus I and II 15:03 < dx> i had chemistry in the first year of university (studying CS), one of the few classes that are completely unrelated but meant to filter people out 15:03 < Aquaticus> How advanced is Calculus II? 15:04 < Drainedsoul> I can't handle Computer Science. I get like, physically angry. 15:04 < Aquaticus> I liked Computer Science 15:05 < dx> i'm not even studying actual computer science yet because of those 'filter' classes 15:05 < Aquaticus> Instead of learning to program in C or Java or whatever, you learn to program full stop 15:05 < dx> now that is something to get angry about 15:05 < Drainedsoul> Calculus II was hyperbolic trig functions, their inverses and integrals, integration by parts, complex numbers, various other techniques of integration 15:05 < Aquaticus> dx may I ask what year of your degree you're in now? 15:05 < dx> Aquaticus: 0 15:05 < Aquaticus> Integration by parts is the worst 15:05 < Aquaticus> Drainedsoul: what about you? What year? 15:06 < Drainedsoul> well my real problem is how much weight Computer Science -- as a field -- places on things like big-O etc., which really just masks a lot of essential complexity 15:06 < Drainedsoul> haha my education... 15:06 <+sadimusi> Aquaticus: that's not covered in calculus I? 15:06 < dx> year 0 after three years, that is 15:06 < Drainedsoul> I did two years of CS, dropped out, get my college diploma, and now I'm in second year Software Engineering 15:06 < Aquaticus> I don't know, sadimusi 15:06 < Aquaticus> We don't have calc 1 and calc 2 here 15:06 < Drainedsoul> Calculus I here was limits, differentiation, basic integration 15:06 < Drainedsoul> I may be forgetting some things, I took it in 2007 15:06 < dx> and yeah, what Drainedsoul mentioned about calculus II sounds like what i saw in calculus I 15:07 < Aquaticus> The 'filter' classes in my degree were first year only 15:07 < Aquaticus> Second year is pretty focussed 15:07 < Aquaticus> And the rest obviously are too 15:07 < dx> Aquaticus: yeah, i didn't even get to that second year :P 15:07 < Drainedsoul> well in engineering @ my school, the first year is "shared" between all the engineering disciplines, for high schoolers who have no idea what they want to do. 15:07 < Aquaticus> They made us do Physics 15:08 < Drainedsoul> but department of CSc wanted SENG people to take an extra programming course 1st year, and ENG didn't want to give up on mandatory Chemistry 15:08 < Aquaticus> That was fairly basic, Newton's laws of motion and whathaveyou 15:08 < Drainedsoul> so SENG people do CHEM after they've declared SENG in the 2nd year 15:08 < Drainedsoul> ... 15:08 < Aquaticus> Also thermodynamics which was good 15:08 < Drainedsoul> after 5 cumulative years of post-secondary, I'm pretty jaded about school. Nothing surprises me anymore. 15:08 <+sadimusi> here only 50% of the classes are in compsci, the rest can be taken in wherever you want 15:08 <+sadimusi> but math is obviously required 15:09 < Drainedsoul> that's about how it was when I was doing a CSc degree, before I dropped out 15:09 < Drainedsoul> the navel gazing got to me 15:09 < Aquaticus> We don't have to pay up front for our degrees :D 15:09 < dx> speaking of which, i got a linear algebra midterm exam in 4 days \o/ 15:09 < Drainedsoul> I actually liked linear algebra 15:09 < Drainedsoul> and doing stuff with noise for terrain generation, it's obvious why things like that are useful. 15:09 < Aquaticus> eew vectors 15:09 * sadimusi got 100% in linear algebra I 15:10 < dx> i started liking it since i knew a bit about its practical applications 15:10 < Drainedsoul> vectors will change your life seriously 15:10 < Drainedsoul> when you can get rid of evil trig functions with dot/cross products 15:10 < Aquaticus> I've done vectors 15:10 < dx> which, of course, the professor never mentioned ever 15:10 < Drainedsoul> everything seems better 15:10 < Aquaticus> I just didn't like it 15:10 < Drainedsoul> esp. since CPUs hate doing trig 15:10 < Aquaticus> That's a CPU's fault :D 15:10 < Aquaticus> Trig is fun 15:10 < Aquaticus> How far away is a ship from a lighthouse with a given angle, etc 15:11 < Drainedsoul> that's definitely not a CPU's fault 15:11 < Drainedsoul> sine and cosine are a mess 15:11 < Drainedsoul> an infinite Taylor series are you kidding me 15:11 < Aquaticus> Speaking of infinite series 15:11 < Aquaticus> I have a cool maths trick you might like 15:11 < Drainedsoul> it's pretty telling when hardware cosine and sine are slow too 15:11 < Aquaticus> I could show how the sum of 3^n for n=1 to infinity = -2/3 15:12 < Drainedsoul> does AMD have assembler sin/cos instructions yet? Or still just Intel? 15:12 < dx> isn't sin/cos meant to be implemented with hard rounding and mappings of pre-calculated values? :D 15:13 < dx> or am i stuck in the 1980s? 15:13 < Drainedsoul> there's a lot of code that does that 15:13 < Aquaticus> Sorry -3/2 not -2/3 15:13 < Aquaticus> Pure maths is fun 15:13 < Drainedsoul> but it falls back on an infinite taylor series 15:13 < Drainedsoul> if you look at C lib implementations 15:13 < Drainedsoul> I don't know how Intel does it in silicon tho lol 15:15 < Aquaticus> I just remembered DST tomorrow morning 15:15 < Aquaticus> Lose an hour of sleep :( 15:17 < Aquaticus> Might as well get going I guess 15:17 < Aquaticus> 11.30 here 15:17 < Aquaticus> Thanks for the help guys 15:30 <+sadimusi> yay, it looks like I chose the right city to live in :) http://www.numbeo.com/quality-of-life/rankings.jsp 15:36 < dx> i'm glad i don't live in venezuela 15:40 < Drainedsoul> Victoria, Canada reporting 15:40 < Drainedsoul> Edmonton and Calgary higher? 15:40 < Drainedsoul> oh there's no freeze-your-balls-off coefficient, makes sense 15:42 <+sadimusi> canada seems pretty nice, the living costs around here are just insane 15:57 <+ammar2> lol pollution index 16:13 < Drainedsoul> sadimusi: It's okay, I'd rather live ~300km southeast in Seattle tho 18:21 < Not-003> [MCPP] RobertLeahy pushed 8 commits to master [+0/-0/±8] http://git.io/sNkXyg 18:21 < Not-003> [MCPP] RobertLeahy 845e1e5 - Noise Documentation 18:21 < Not-003> [MCPP] RobertLeahy 312356a - Noise Includes 18:21 < Not-003> [MCPP] RobertLeahy e28f6e6 - Octave Fix 18:21 < Not-003> [MCPP] RobertLeahy 5ec6e25 - Bias and Gain Improvements 18:21 < Not-003> [MCPP] RobertLeahy fb1927a - Default Generator Includes 18:21 < Not-003> [MCPP] RobertLeahy c5642d1 - Default Generator Macro Fix 18:21 < Not-003> [MCPP] RobertLeahy 6ab843c - Default Generator - Rivers 18:21 < Not-003> [MCPP] RobertLeahy 99b0f97 - Default Generator - Remove Debug Code 20:34 < Not-003> [MCPP] RobertLeahy pushed 2 commits to master [+1/-0/±2] http://git.io/yc3qAA 20:34 < Not-003> [MCPP] RobertLeahy da7e201 - Valid Biome Check 20:34 < Not-003> [MCPP] RobertLeahy 8b5070f - Superflat 23:21 < Not-003> [bravo] MostAwesomeDude pushed 7 commits to master [+1/-0/±17] http://git.io/JWxxlQ 23:21 < Not-003> [bravo] Corbin Simpson 4085b13 - beta: Update from protocol 61 to 74. Completely and totally untested, but hopefully enough to get people moving. It's possible that the new 0xfe prevents clients from communicating with Bravo. If that's the case, then we'll fix it, like we always do. 23:21 < Not-003> [bravo] Corbin Simpson 263b614 - plugins/automatons: Allow grass to be deterministic in unit tests. 23:21 < Not-003> [bravo] Corbin Simpson bbda5f5 - inventory: Clean up a couple algorithmic nits. "I'm gonna make you a little less disgusting every day." 23:21 < Not-003> [bravo] Corbin Simpson dd77a97 - Fix up some pyflakes warnings. 23:21 < Not-003> [bravo] Corbin Simpson 9f08562 - ibravo, policy/windows: More work on IWindow. Refs #409. 23:21 < Not-003> [bravo] Corbin Simpson 1225064 - beta/protocol: Clean up b.p.windows-using code. Refs #409. 23:21 < Not-003> [bravo] Corbin Simpson 2e2b46c - bravo/world: Fix dictionary changing size during iteration. --- Day changed dim. oct. 06 2013 00:13 <+sadimusi> mojang seems to be validating the skin images very well o.O http://s3.amazonaws.com/MinecraftSkins/xXGabieXx.png 00:14 <+sadimusi> (it's a jpeg) 00:14 <+AndrewPH> Miclee's skin is a gif 00:14 <+AndrewPH> (or was at one point) 00:17 < dexter0> did it actually animate in-game? 00:20 <+ammar2> probably not 00:21 <+sadimusi> does it even work at all? 00:21 <+sadimusi> from my sample of 100 players I got two with jpeg skins… 00:29 < dav1d> transparency also doesn't work 00:29 < dav1d> my guess, they load that as simple texture (oh wonder) 00:29 < dav1d> and obviously opengl doesn't know transparency or animations 00:29 < dav1d> if the image loader is capable of loading jpeg, gif and png, there is no problem at all 00:30 < eddyb> animations would be evil... 00:30 < eddyb> (this can work for any texture now, I think) 00:31 < eddyb> just set a very large delay between frames, and you can confuse people 00:32 < Dinnerbone> We have to specifically make them animatable. 00:32 < Dinnerbone> Skins cannot be animated, transparent or anything silly. 00:36 < dav1d> yeah, I know :D 00:36 < dav1d> well you could send GL_BLEND for them 00:37 < dav1d> would look strange though 00:37 < Dinnerbone> And disabling the "make sure nothing's transparent" code 00:37 < Dinnerbone> And figuring out proper transparency for entities 00:38 < dexter0> that' right, there are no semi transparent entities. No depth sorting. 00:50 < eddyb> Dinnerbone: I was referring to other textures being currently animatable, with arbitrary amounts of time between frames 00:50 < Dinnerbone> Yes. We have to enable this. Skins don't get this property unless we tell them to. 00:53 < eddyb> I'm either too tired to understand that you're not correcting me, so I'll say it anyway: I know skins don't have nice stuff yet 01:59 < Ghoul_> does anyne know if Login Request (0x01) takes a unicode string or a ascii string? 02:00 <+md_5> it takes the minecraft string format 02:00 <+md_5> which is basically UCS-2 02:00 < Ghoul_> for the world type. When I send a unicode string the client gives a NullPointerException, but when I send an ascii string the client hangs in Logging In... and segfaults when I send the next packet 02:00 < Ghoul_> aww. 02:00 <+md_5> you have a 2 byte big endian length header 02:00 <+md_5> and then each character position is 2 bytes 02:00 <+md_5> if your language supports UCS-2 use that 02:00 <+md_5> otherwise make your own reader 02:00 < Ghoul_> I just rolled my own that I've been using so far, but that's unfortunate. Now I have to debug why I segfault the client 02:01 <+Amaranth> You segfault the client? That's impressive 02:01 < Ghoul_> not the first time 02:01 < Ghoul_> during encryption setup I kept doing it too 02:01 < Ghoul_> took a day to debug 02:01 <+Amaranth> Are you sure you don't mean you trigged an exception handler? 02:01 <+md_5> technicality Amaranth takes a stand 02:01 < Ghoul_> Oh, sorry, wrong terminology for javaland 02:01 < Ghoul_> I cause a NPE 02:09 < Ghoul_> Is `the normal login sequence` on this page (http://wiki.vg/Protocol_FAQ) outdated? 02:09 < Ghoul_> I noticed protocol FAQ shows that you require to send 0x01 login, but it's not listed there under the steps 02:10 < Ghoul_> /s/protocol FAQ/Encryption page/ 02:12 <+sadimusi> md_5: it's utf-16 02:13 <+sadimusi> Ghoul_: it's step 15 on the FAQ page 02:13 < coolcat> while we are giving advice, does anyone know why a vanilla client would only send dig packets while holding down left mouse button, and not when you just click left mouse button ? 02:14 < Ghoul_> oh my bad, yeah 02:16 <+sadimusi> coolcat: I'm pretty sure it does that, otherwise you wouldn't be able to break redstone with a single click 02:16 <+md_5> sadimusi close enough 02:17 <+sadimusi> md_5: for all practical purposes it's the same, but more languages seem to support utf-16 02:17 < coolcat> It definitally doesnt, i have my server debug when dig packets are sent, and they are never sent with a single click :/ 02:21 < Ghoul_> haha, OK, this time I was able to send the client into an infinite loop or something :C 02:22 < dx> achievement unlocked: ☑ crash the client 02:22 < Ghoul_> lol 02:23 < dx> that's like finding coal, i think 02:23 <+sadimusi> coolcat: I tried it myself, the client definitely sends i 02:23 <+sadimusi> it* 02:34 < coolcat> Eh, wont send it to my server 02:35 < coolcat> *btw using custom server if you didnt know 02:36 <+sadimusi> but a proxy in-between and check if you really don't get it 02:36 <+sadimusi> because I trust my proxy more than your custom server 02:40 < Ghoul_> sadimusi: which proxy is that 02:41 < Ghoul_> I think that's what I should be using to debug this nonsense I'm having here :( sometimes the client stack overflows my *Haskell* server (wtf?) 02:41 <+sadimusi> I use mc4p, but if you're on windows you're probably better of with SMProxy 02:41 <+sadimusi> or ProtoProxy 02:43 < dx> maybe we should get someone to package mc4p with py2exe or something 02:43 <+sadimusi> dx: the issue is pycrypto 02:43 < dx> i wonder if there's something better than py2exe already 02:43 <+sadimusi> and probably gevent 02:43 < dx> sadimusi: "issue" how? 02:44 <+sadimusi> the usual ways to install those don't work 02:44 <+sadimusi> gevent also depends on libevent which probably isn't installed on windows 02:44 <+sadimusi> it's most likely still possible to package it, just a lot harder 02:45 < coolcat> Is there any where to download SMProxy as an exe? 02:45 < Ghoul_> anybody got a prebuilt SMProxy? 02:45 < Ghoul_> ^ yeah that 02:45 < Ghoul_> It has like 4 dependencies I'd prefer not to setup.. 02:46 < dx> i wonder where did the smproxy binaries go 02:47 <+sadimusi> they were hosted on github, so they might not exist anymore 03:06 < SinZ> the main thing that fooled me with installing mc4p is, that it requires python 2.7.5 03:06 < SinZ> I had python 2.7.3 and it didn't work 03:07 < dx> wot 03:08 <+sadimusi> sure? I used 2.7.3 as well until recently 03:08 < dx> isn't the difference between 2.7.3 and 2.7.5 just bugfixes? 03:09 < SinZ> one of the dependancies just refused to appear for mc4p until I updated to .5 03:09 <+sadimusi> do you remember which one? 03:10 < SinZ> I think it was greenlet, not 100% though 03:11 <+sadimusi> iirc gevent should even work with 2.6.x 03:12 < Ghoul_> oh I see, my encryption is busted 03:12 < Ghoul_> that explains a lot. 03:52 < Ghoul_> sadimusi: tagging you because you probably know this, sorry. Do I need a different encryption IV/buffer for send and receive, or do they use the same one? 06:43 < Drainedsoul> Ghoul_: You're going to need different ones. 09:54 <+Amaranth> sadimusi: UTF-16 is UCS-2 with surrogate pairs but the Java String API does not consider surrogate pairs for things like the length so the API is still basically UCS-2 09:54 <+Amaranth> Which means if you have something that is 16 UTF-16 "characters" whatever the hell they really are but more than 16 codepoints it'll be rejected 10:19 < drainedsoul_> Amaranth: The correct name is a UTF-16 code unit 10:20 < drainedsoul_> the MC protocol specifies the length of strings in UTF-16 code units, but that doesn't mean that the string is actually UCS-2. To insinuate that would be like saying that because a protocol specifies the length of UTF-8 strings in bytes, it's actually ASCII. 10:23 <+Amaranth> drainedsoul_: But the actual server reads N chars where N is the string length specified 10:23 < drainedsoul_> also trying to hand wave away UTF-16 because the Java string API reports the length of strings in code units belies the complexities of Unicode. Knowing the length of a string in code points is just as meaningless and arbitrary as knowing the length of the string in code units. It tells you nothing. 10:23 <+Amaranth> Yes yes we're going to talk about graphemes again :P 10:23 < drainedsoul_> if you knew that the string was in a certain normalization form, knowing the number of code points might tell you something, but it certainly doesn't map onto anything the user cares about. 10:24 <+Amaranth> And I'm going to say you should normalize before sending 10:24 < drainedsoul_> I'm just saying that most typical measurements of string length are meaningless and arbitrary. 10:24 <+Amaranth> But calling what the protocol uses UTF-16 is definitely wrong 10:25 < drainedsoul_> no, it uses UTF-16. UCS-2 can't encode surrogate pairs, and the vanilla server sends/receives/handles surrogate pairs, so it's definitely UTF-16 10:26 < drainedsoul_> if you look at a UCS-2 string and it has a lead or trail surrogate in it, it's not UCS-2. 10:26 <+Amaranth> drainedsoul_: Is a surrogate pair two code units? 10:26 < drainedsoul_> Since that would imply a code point with a numerical value in a range that the Unicode consortium has reserved 10:26 < drainedsoul_> which means it's illegal, and therefore not Unicode at all 10:27 < drainedsoul_> yes, a surrogate pair is two UTF-16 code units 10:27 < drainedsoul_> receiving a high/low surrogate pair in a UCS-2 stream is no different than receiving the code point 2 million in a UTF-32 stream. It's trivially representable by the encoding, but it's still illegal because it's not valid Unicode. 10:28 <+Amaranth> Alright so the end result of all of this is once again that strings are fucking confusing and I'm either remembering a really old version of the wiki or not remembering it correctly 10:28 < drainedsoul_> yeah Unicode is pretty much a bottomless pit. But sadimusi and I confirmed that Minecraft does indeed use UTF-16. You can send/receive/etc. the G Clef character, which is outside the BMP, and therefore cannot be represented by UCS-2. 10:29 <+Amaranth> It would probably be simpler to explain string lengths in the protocol as "number of shorts in the string" 10:30 < drainedsoul_> you could do that, but that might be more confusing as people try and deduce the mapping between the two. I like to think I struck a pretty good balance: http://wiki.vg/Data_Types 10:30 <+Amaranth> Poor UCS-2 though, ended up being the worst encoding ever 10:31 < drainedsoul_> I don't understand why anyone -- even in the early 90s -- thought 65536 characters would be enough. 10:35 <+Amaranth> The worst part is UCS-2 was only around for a couple years before UTF-8 came out yet a lot of important things landed on it 10:36 <+Amaranth> Early adopters with strict backwards compatibility guarantees make for a bad combination 10:40 < Ghoul_> Drainedsoul: thanks 10:41 < Ghoul_> hmm, I feel my optimizer is merging them together under -O2! DERP! 10:48 < drainedsoul_> if you're not invoked undefined behaviour and your optimizer is changing the runtime behaviour of your program, you need a new optimizer. 10:48 < drainedsoul_> *invoking 11:12 < Grum> yeah Unicode is pretty much a bottomless pit. But sadimusi and I confirmed that Minecraft does indeed use UTF-16. You can send/receive/etc. the G Clef character, which is outside the BMP, and therefore cannot be represented by UCS-2. <-- we just use java's `char` -- which can only hold 16bit worth of info 11:13 < Grum> with the change we're doing we can easily use 'normal' utf8 over the wire 11:13 < Grum> which will make it a pain in the buttcheek to manually decode but should support 'all the things' :) 12:04 < Drainedsoul> a pain in the buttcheek to decode, how? You just throw it into a decoder and out comes a string. 12:04 < Drainedsoul> same as UTF-16 or any other encoding 12:05 < Drainedsoul> the number of 0 bytes in strings as it is though makes me want to sob 12:23 < Not-003> [MCPP] RobertLeahy pushed 3 commits to master [+1/-0/±3] http://git.io/KY0nRw 12:23 < Not-003> [MCPP] RobertLeahy 81022bc - World Makefile Cleanup 12:23 < Not-003> [MCPP] RobertLeahy f79b252 - Debug Logging Fix 12:23 < Not-003> [MCPP] RobertLeahy d2d225a - Debug Toggle Command 12:35 < ellisvlad> Hi 14:03 < Not-003> [fNbt] fragmer pushed 4 commits to master [+0/-0/±6] http://git.io/hH2cKg 14:03 < Not-003> [fNbt] fragmer 28bea40 - Renamed LibNbt.Test namespace/assembly to fNbt.Test, to match the rest of the project. 14:03 < Not-003> [fNbt] fragmer fc0704d - Edited fNbt release configuration to include debug symbols (as pdb). 14:03 < Not-003> [fNbt] fragmer e57de29 - Added another unit test, for nested list/compound combinations. 14:03 < Not-003> [fNbt] fragmer 40fdef1 - Added configurations for building for x64 and x86 platforms specifically. 15:16 < Not-003> [fNbt] fragmer pushed 6 commits to master [+0/-0/±17] http://git.io/xr_UxA 15:16 < Not-003> [fNbt] fragmer 52a442f - Corrected documentation implying that NbtFile.RootTag may be null. 15:16 < Not-003> [fNbt] fragmer e959342 - Fixed a case where NbtReader would not set its state to NbtParseState.Error after encountering certain kinds of parse errors. 15:16 < Not-003> [fNbt] fragmer 7406bea - Fixed ToString() methods of various NbtTags not respecting NbtTag.DefaultIndentString 15:17 < Not-003> [fNbt] fragmer cc33b43 - Expanded NbtList unit tests to cover IList/ICollection/IList implementations. 15:17 < Not-003> [fNbt] fragmer 1be3d20 - Expanded NbtFile unit tests to cover loading/saving little-endian-encoded files, as well as reading root tags from GZip- and ZLib-compressed streams, including non-seekable streams. 15:17 < Not-003> [fNbt] fragmer 9a59c20 - Expanded NbtReader unit tests to cover skipping on non-seekable streams and error-handling on corrupt streams. 16:56 < Not-003> [bravo] MostAwesomeDude pushed 2 commits to master [+0/-0/±6] http://git.io/26G-Lw 16:56 < Not-003> [bravo] Corbin Simpson f512b3a - beta: Fake poll packet reciept. 16:56 < Not-003> [bravo] Corbin Simpson 89ef296 - beta: Use JSON for text messages. DINNERBONE HOOOOUUUSE!!! On a positive note, now 1.6.4 clients can log in and get a world. We're back to square one, instead of that icky square zero. 18:48 < Not-003> [fNbt] fragmer pushed 3 commits to master [+1/-0/±10] http://git.io/3boPKg 18:48 < Not-003> [fNbt] fragmer 83eed7c - Added NbtReader.IsAtStreamEnd property. Fixed a number of bugs in NbtReader.ReadListAsArray(), which now works as intended. 18:48 < Not-003> [fNbt] fragmer 138b5fa - Reduced NbtBinaryWriter's internal string-conversion buffer from 256 to 128 bytes, and NbtBinaryReader's internal skip buffer from 64k to 8k, based on profiling data. 18:48 < Not-003> [fNbt] fragmer 9e03413 - Expanded overall unit test coverage from ~70% to ~85%. 19:22 < dividuum> any idea why an 0x04 packet (Time Update) seem to be ignored? I'm sending "age of the world" = 0 and "time of day" = -6000 (eternal noon) 19:22 < dividuum> it works the first time, but after dimension switching any other packet i sent seem to be ignored (the sun rises at 0 again) 19:32 < dividuum> hm. looks like is not enough to send a single time update at the start of a dimension switch. i now defer it by 0.5 seconds and it works. strange... 19:42 < Drainedsoul> dividuum: If you're delaying things by arbitrary numbers to try and get them to line up, rethink your design. 19:44 < dividuum> i know 19:44 < dividuum> but i have no insight into how this packet should behave :( 19:45 < dividuum> the normal server seem to send it every x ticks iirc 19:45 < dividuum> i tried to only send it once but that doesn't work as expected 19:46 < Drainedsoul> why are you trying to avoid sending it every tick? That's how the server and the client keep their times synchronized. 19:47 < dividuum> i'm setting time of day to a negative value, so the sun stays at noon. i thought sending more packets is a waste of bandwidth (ok, a tiny one), because i'd just repeat that packet. 19:52 < dx> why does a negative value now magically mean noon *forever*? 19:52 <+sadimusi> that was added some time ago 19:53 < dx> must have missed the memo 19:53 < Drainedsoul> I guess if you're going to use signed values for things that naturally map onto unsigned values, you should at least think up some contrived meaning for the negative values 19:55 < Drainedsoul> dividuum: I wouldn't worry about the bandwidth waste from sending 0x04s every tick. Sounds like adding excessive complexity trying to turn that off. 19:56 < dividuum> In my case it actually adds complexity because i'd have to start a coroutine sending it %) 19:57 < Drainedsoul> you're not planning on having some kind event that fires every tick? 19:57 < dx> yeah, you're going to need stuff every tick sooner or later 19:58 < dividuum> nope. didn't need that yet. but i just added the coroutine and it works 20:06 < Not-003> [MCPP] RobertLeahy pushed 4 commits to master [+0/-0/±4] http://git.io/RXCdcA 20:06 < Not-003> [MCPP] RobertLeahy e87e795 - Default World Generator - Continental Shelf Threshold Default 20:06 < Not-003> [MCPP] RobertLeahy ebdc248 - Default World Generator - Remove Debug Code 20:06 < Not-003> [MCPP] RobertLeahy e343ec9 - Default World Generator - Offset Y 20:06 < Not-003> [MCPP] RobertLeahy 3d3690d - Default World Generator - Caves 20:20 < Not-003> [netherrack] thinkofdeath pushed 2 commits to master [+7/-2/±8] http://git.io/JO118A 20:20 < Not-003> [netherrack] thinkofdeath 7185ce7 - command: RegisterCommand -> Register. Added SendMessage method to Caller 20:20 < Not-003> [netherrack] thinkofdeath 10f38b9 - format/msgpack: Rewrite to tidy up code and increase performance. Maps are still slow 20:25 < Drainedsoul> by far the most annoying part of world gen code is floating blocks. 21:17 < JoeDoyle23> Were there actual protocol changes from 1.6.2 to 1.6.4? 21:29 < Drainedsoul> the number might've changed? 21:30 < Drainedsoul> https://github.com/RobertLeahy/MCPP/commit/c9cc5ace7ca9de42d2c29371b974930258e8b4b2 yeah looks like that was it. 21:32 < JoeDoyle23> Ok, good enough. A couple other servers just had the same changes, so I guess that's it! 22:50 < Sehales> hi there, is there another site which explains the minecraft client to server connect/login process? I don't really understand what to do from this site: http://wiki.vg/Protocol_Encryption or is there an example application in c#/java where I can learn from? Btw I have already done the session/authenticat stuff. 22:51 < Jckf> Something like this might help? http://wiki.vg/Protocol_FAQ#What.27s_the_normal_login_sequence_for_a_client.3F 22:54 < Sehales> Isn't that the nearly same like that: http://wiki.vg/Protocol_Encryption#Overview ? 22:56 < Sehales> There are some "information leaks" (or maybe I am stupid?!?) From where is the server getting the player's session id for example? 22:57 < Sehales> I must relogg shortly, please don't answer for a short while 22:58 < Sehales_> I am back 23:02 < Sehales_> ? 23:03 <+sadimusi> the server never gets the player's session id 23:05 <+sadimusi> and there are a lot of implementations out there 23:05 <+sadimusi> you can look at minecraft for java or craft.net for c# 23:06 < Drainedsoul> https://github.com/RobertLeahy/MCPP/blob/master/src/auth/main.cpp I don't know how much it'll help you, but this is a working implementation of the server side 23:06 <+sadimusi> you seem to really like empty lines :D 23:06 < iBotPeaches> Drainedsoul: your spacing scares me 23:07 < Drainedsoul> I have a 2560x1600 monitor :( 23:08 <+sadimusi> wouldn't a bigger font help way more than all this whitespace 23:08 <+sadimusi> I find it really hard to read 23:08 < Sehales_> I only need the client side :D 23:08 <+sadimusi> what language are you using? 23:09 < Drainedsoul> me? 23:09 < Drainedsoul> or him? 23:09 <+sadimusi> him 23:09 < Sehales_> I thought I have seen something about the server is verifying the client over minecraft.net via tw client's sessionid... 23:09 < Sehales_> Java 23:09 < Sehales_> But later I want to use C# 23:09 <+sadimusi> so why use java now? o.O 23:10 < Drainedsoul> sadimusi: What whitespace particularly bothers you? 23:10 <+sadimusi> mostly the excessive use of blank lines 23:10 <+sadimusi> there's barely any code on my monitor 23:10 < Sehales_> I want to first try it in java, because I am working and developing with it since a few years 23:10 < Drainedsoul> what about it is "excessive". I put a blank line between what I consider to be every logical operation. Helps me keep the ideas and tasks separated 23:11 <+sadimusi> Sehales_: most of the pieces are in here: https://github.com/SimpleServer/SimpleServer/blob/master/src/simpleserver/stream/Encryption.java 23:11 <+sadimusi> Sehales_: just put them together in the right order ;) 23:11 < Sehales_> At c# I am a beginner, but the windowing stuff is more easier and is looking better with c# 23:11 < Drainedsoul> sadimusi: See I have issues reading that code. Everything is too bunched together 23:11 < Sehales_> The client in java should be completely console based and very simple, just to try around 23:12 < iBotPeaches> Drainedsoul: is your spacing called something? or just your preference? 23:13 <+sadimusi> Drainedsoul: there just seems to be an empty line after pretty much anything in your example 23:13 <+sadimusi> Drainedsoul: and yo u drift a bit too far to the right for my taste too 23:13 < Drainedsoul> you can drift to the right a lot on a 2560 pixel wide screen. 23:14 < Drainedsoul> on line 435, there are four statements with no newlines, because those make up the "logical operation" of computing a hash 23:14 <+sadimusi> this is how I usually write these days: https://github.com/sadimusi/mc4p/blob/master/mc4p/parsing.py 23:14 < Drainedsoul> iBotPeaches: I don't know what it's called, if anything. 23:14 <+sadimusi> I can read that very well and most python programmers do it similarly 23:14 < Drainedsoul> I can't read python, at all. 23:15 < Drainedsoul> my mind just gets lost looking for curly braces to anchor itself to ;/ 23:15 <+sadimusi> :D 23:15 <+sadimusi> well, I don't really feel at home in c++ either, so that might contribute to my confusion 23:15 < Drainedsoul> I like to think my C++ is cleaner than most, but I have big time issues reading most C/C++ code, so it could just be that. 23:16 <+sadimusi> is there a reason why you keep your comments so short? 23:16 < Drainedsoul> so short left-to-right? 23:16 <+sadimusi> yes 23:16 < Drainedsoul> I try to avoid making them longer than twice as long as the average statement. 23:16 <+sadimusi> sometimes there are 5 lines with 3 words each 23:18 <+sadimusi> I don't have a problem with blank lines between logical blocks, but this just looks silly https://github.com/RobertLeahy/MCPP/blob/master/src/auth/main.cpp#L388 23:19 < Drainedsoul> http://i.imgur.com/CvQd45m.png 23:19 < Drainedsoul> I think it all looks pretty ridiculous on GitHub, but no so much when I'm writing it 23:20 < Drainedsoul> same file/same lines on the right there 23:20 <+sadimusi> that does indeed look better 23:21 < Drainedsoul> is commenting not a thing in modern Python? 23:21 < Drainedsoul> I have a friend who also writes Python, and he doesn't really comment either, but he comments his Java like crazy 23:21 <+sadimusi> for most things comments are just obsolete since the code makes it obvious what is done 23:22 <+sadimusi> if you're writing a library or something you obviously still need comments to document the api 23:23 < Drainedsoul> I guess in C-like languages there's a lot more going on. Python code seems to always have this zen. 23:24 <+sadimusi> I really like how easily you can read (most) python code 23:24 <+sadimusi> it's much more difficult for me even in java with all the type definitions 23:24 <+sadimusi> and of course c/c++ is a whole other story 23:25 < Drainedsoul> yeah most C code is a total trainwreck. Pure C++ code can be very readable. But a lot of people are stuck in writing "C with classes", and then there's C library interop code 23:25 < Drainedsoul> which is a total disaster. 23:25 < Sehales> Same opinion like you, I can't even write python but reading and understanding is 23:26 < Sehales> no problem 23:26 < Drainedsoul> the stuff with double underscores before/after it always confuses me too. Because in C/C++ that indicates a very dark and arcane sort of magic. 23:28 <+sadimusi> Drainedsoul: how big is your monitor? it looks like my font is slightly larger than yours http://d.pr/i/5zrS 23:28 < Drainedsoul> 30" 23:29 < Drainedsoul> I want to use Sublime Text so bad, but I can't get it to behave the way I want with braces :( 23:29 < Drainedsoul> and indenting 23:31 < Sehales> Okay, thank you for the help/tips I will try to figure out what and how to do all the stuff tomorrow, by the way you got an interesting topic now... 23:32 < Drainedsoul> yeah we randomly get really interesting topics in here. 23:34 < Sehales> I will come back in the next days for sure ;) then I want more topics!! (but maybe a little bit of help too) 23:34 < Sehales> have a nice day or night 23:35 <+sadimusi> cya 23:35 < Drainedsoul> have a g1 23:38 <+sadimusi> on a completely unrelated note, I finally got around to try nginx and it does seem to perform pretty well so far 23:38 <+sadimusi> wonder how it acts under stress 23:39 < Drainedsoul> what're you using it for? 23:41 <+sadimusi> very simple webapp http://face.minecraftservers.org/Drainedsoul 23:42 <+sadimusi> I need player's faces for the new page design, so I built a small service that generates and serves them 23:43 < Drainedsoul> ah okay, Python? 23:43 <+sadimusi> yes 23:43 < Drainedsoul> how is web app programming in Python, as compared to say PHP 23:44 <+sadimusi> the concept is quite different 23:44 <+sadimusi> but you have frameworks that are very similar to those of other languages 23:45 <+sadimusi> they mostly run persistently and accept requests as opposed to loading everything for every request 23:45 < Drainedsoul> ah okay. That's probably a better design anyway. 23:45 < Drainedsoul> I write a lot of PHP for work. Awful language. 23:46 <+sadimusi> I have to rewrite minecraftservers.org in php as well :/ 23:46 <+sadimusi> but at least I can use some of the old codebase 23:46 < Drainedsoul> "have to"? 23:46 <+sadimusi> well, I get payed to do it 23:46 < Drainedsoul> whoo money 23:46 <+sadimusi> but it has to be php 23:46 < Drainedsoul> why's that? 23:47 <+sadimusi> not really sure 23:47 <+sadimusi> I wrote http://www.minecraftskins.net for the same guy in python 23:47 < Drainedsoul> oh yeah, that's the problem with getting paid. I know that altogether too well. 23:47 <+sadimusi> but I think he just likes to edit it on his own 23:47 < Drainedsoul> "We have to do X" "why" "idk they're paying us tho" 23:47 < Drainedsoul> I can't imagine having a client who liked to edit my work on his or her own. I think I'd go mad. 23:47 <+sadimusi> but I'm definitely using some kind of templating engine 23:48 < Drainedsoul> yeah you'd be insane not to. 23:48 <+sadimusi> it's mostly small things, like changing the partner pages or updating the faq 23:48 < Drainedsoul> that's not so bad then. 23:48 <+sadimusi> and twig seems to have the exact same syntax as jinja :) 23:48 <+sadimusi> which is the engine I use in python 23:49 < Drainedsoul> that's cool. 23:49 < Drainedsoul> how will you cope going from Python to PHP? 23:49 < Drainedsoul> Python seems mostly well thought out, PHP on the other hand... 23:49 < Drainedsoul> 'hello'==0 // true 23:50 <+sadimusi> I used to write a lot of php, so I think I'll be ok 23:50 <+sadimusi> I also maintained to old site for quite some time now 23:50 < Drainedsoul> :P well that's good 23:50 < Drainedsoul> I always have little panic attacks when I come from work to writing C++, and realize I've been using == for the last half hour 23:50 < Drainedsoul> I'm like nononono what have I done...wait 23:51 <+sadimusi> :D 23:51 <+AndrewPH> oh ho ho ho PHP 23:51 < Drainedsoul> it's better than classic ASP/VBScript I tell you 23:51 <+AndrewPH> I've rewritten huge parts of a webgame currently running on php5 that was developed for 5 years on php4 by amateur programmers 23:51 < Drainedsoul> omg 23:51 < Drainedsoul> we took over a PHP4 site recently, written by god knows who 23:52 < Drainedsoul> the client was like it's broken 23:52 < Drainedsoul> what was wrong? 23:52 < Drainedsoul> site required register globals 23:52 <+AndrewPH> our thing still uses register globals (or, well, a custom implementation of it.) 23:52 < Drainedsoul> yeah I went in and write a shim in their main page to "register globals". I definitely did not actually enable the abomination. 23:53 < Drainedsoul> PHP is one of those things we all wish would die, like IE6, but it just won't. 23:54 <+sadimusi> the original author of minecraftservers.org was hired from freelancers.com and managed to use mysql views which loaded for 20+ seconds but didn't use any of the fields it took so long to calculate 23:54 < Drainedsoul> wut 23:54 <+sadimusi> "make /user not load for 30s" was literally my first assignment 23:55 < Drainedsoul> wow 23:55 < Drainedsoul> the best is when a client starts complaining about how slow their site is, and all it is, is that the original developer didn't create an index 23:55 < Drainedsoul> everyone thinks you're some kind of god 23:55 <+sadimusi> yeah :) 23:55 <+sadimusi> the original server pinging was ingenious as well 23:56 <+AndrewPH> Drainedsoul: we had a mysql table with billions upon billions of unindexed things 23:56 <+AndrewPH> this was the owned item table 23:56 <+AndrewPH> (perhaps billions was an overstatement, a few million probably, maybe 10) 23:56 <+sadimusi> a cronjob executed a php script every minute which pinged servers starting with the one which wasn't pinged for the longest amount of time and was limited to 60s execution time 23:56 < Drainedsoul> I don't understand how people can actually develop, and have the knowledge of these things escape them. 23:57 < Drainedsoul> a case of people writing things in PHP that really should not be written in PHP? -_- 23:57 <+sadimusi> even for php it was extremely bad 23:57 < Drainedsoul> lol 23:57 <+sadimusi> of course it took a day or so to ping every server on the list 23:58 <+sadimusi> it now takes one minute to ping 30k servers 23:58 < Drainedsoul> is it still written in PHP? :| 23:58 <+sadimusi> python of course ;) 23:58 < Drainedsoul> yeah I was going to say if you did that in PHP you deserve a medal 23:58 < Drainedsoul> ...more than a medal 23:59 <+AndrewPH> should have written it in something better like asm dude 23:59 < Drainedsoul> dude C++... 23:59 < Drainedsoul> for some reason I actually really like writing native networking code. 23:59 <+AndrewPH> asm is the only answer to anything complicated --- Day changed lun. oct. 07 2013 00:00 < Drainedsoul> it's true! ASM is the only web scale solution. 00:00 < Drainedsoul> forget node. Use ASM 00:03 <+AndrewPH> if you don't write it in asm, you aren't writing it! 00:03 < Sehales> lol, I forgot to close my browser and this site and now I read the whole discussion, the only thing I am thinking about is: http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/ 00:03 < Drainedsoul> I watched a GoingNative 2013 talk by one of the MSVC++ compiler optimizer developers 00:04 < Drainedsoul> ...I decided I actually have no interest in ASM thereafter 00:04 < Drainedsoul> Sehales: I love that article 00:04 < Sehales> And I have the opinion that you guys are half gods... 00:05 < Sehales> Why do you have ared 00:05 < Sehales> colored name? 00:06 <+sadimusi> probably because we have +v 00:06 <+sadimusi> or your client just randomly assigns colors 00:07 < Sehales> No there wasn't any colors except at the message of drainedsoul 00:07 <+sadimusi> oh, that's because he mentioned you 00:08 < Sehales> uhm okay 00:08 < Sehales> I am not using irc often 00:08 < Drainedsoul> Sehales: like this 00:09 < Sehales> yes okay 00:10 < Sehales> Which languages do you h e mastered/are you very good in writing programs with it? 00:10 < Sehales> have* 00:10 < Sehales> And without the "it" 00:10 < Sehales> My english is terrible... 00:12 <+sadimusi> I mostly write in python these days (as you might have noticed) but also have to write in php, java and C from time to time 00:12 <+sadimusi> and soon probably in MPI 00:12 <+sadimusi> which might just be an extension to C or C++ 00:12 < Drainedsoul> C/C++/C#/PHP is mostly what I write. I can also program Java, Powershell (if that counts) 00:13 < Drainedsoul> I used to do some Python but I don't like just saying I know a language when I don't have a really firm grasp on it 00:13 < Drainedsoul> I also have a somewhat decent grasp of the torturous language known as make ;P 00:13 <+sadimusi> yeah, I could write in a few more languages as well but I would spend 50% of the time looking at documentation 00:13 < Drainedsoul> yeah I convince myself sometimes that doesn't count. 00:14 <+sadimusi> like c#, ruby, objC, c++ and a few more 00:14 < dexter0> <3 ObjC 00:14 < Drainedsoul> the idea of learning C++ again 00:14 < Drainedsoul> scares me. 00:15 < Sehales> And you are doing programming as your main job right? 00:15 <+sadimusi> I also used to write a lot in HyperTalk, but that was a long time ago 00:15 <+sadimusi> I'm a CS student 00:15 < Drainedsoul> I program for a living, and I'm a SENG student, and I program for fun 00:15 < Drainedsoul> I'm a real hit @ parties 00:15 < Drainedsoul> >: | 00:15 <+sadimusi> :P 00:16 < Sehales> What means "seng"? 00:16 < Drainedsoul> Software ENGineering 00:16 < Drainedsoul> sadimusi: Did you live in Zurich? 00:16 <+sadimusi> is that actually a separate field? 00:16 <+sadimusi> I do live there right now 00:16 < Drainedsoul> okay just wanted to make sure I was clear, what's CS like as a program there 00:17 < Drainedsoul> here SENG and CSC are very different. CSC is mostly like navel-gazing mathematics, whereas SENG is actually applying structured design techniques to solving problems with software. 00:17 <+sadimusi> what level are we talking about here? 00:18 < Drainedsoul> I don't really have experience beyond year 2/3 of a 4 year degree program. I dropped my CSC degree back in 2009 00:18 <+sadimusi> well, things are probably a lot different around here 00:18 <+sadimusi> first of all the degree is separated in a bachelors degree (>=3 years) and a masters degree (>=1.5 years) 00:18 < Sehales> CSC? Computer scientist...? 00:19 <+sadimusi> the first three years really depend on the university 00:19 < Drainedsoul> yeah it is here as well. You actually can't get more than a bachelor's in SENG 00:19 < Drainedsoul> which is fine by me 00:19 < Drainedsoul> I hate academica with a passion 00:19 < Drainedsoul> yet somehow I've wasted 5 years of my life on it 00:19 <+sadimusi> I studied in bern and had about 50% of the classes in CS 00:19 <+sadimusi> on various topics 00:20 <+sadimusi> including 4 lectures on SE 00:20 <+sadimusi> then I had to take math as a minor which was pretty hard 00:20 < Drainedsoul> what really pushed me over the edge was that the only course I had that I felt was useful before dropping out of CSC was a SENG course. 00:20 <+sadimusi> you take that together with the math students 00:20 < Drainedsoul> I hate math. Not because I'm bad at it, but because most of it is just usefull fluff as far as I'm concerned. 00:20 < Drainedsoul> I'm sure it's valuable to someone, in some field, just not me, in my field 00:21 <+sadimusi> I just started with my masters degree and am specializing on SE, but if someone would take visual computing he would require that math 00:22 < coolcat> Math is more to teach problem solving than actual math .-. 00:22 < Drainedsoul> the other issue I have with mathematics is that it's not taught in a way that makes its applications obvious, and I have a very difficult time with concepts whose usefulness is not obvious. 00:22 <+sadimusi> I don't think that applies to that level anymore 00:22 <+sadimusi> (@ coolcat ) 00:23 < Drainedsoul> I thought Linear Algrebra was cool because its applications were pretty obvious. 00:23 <+sadimusi> Drainedsoul: I took physics as a minor, so I saw at least some of the applications 00:23 < Drainedsoul> ah okay 00:23 <+sadimusi> I'm now studying at ETH which is thought to be pretty good and offers me a wide range of courses to chose from 00:24 < Drainedsoul> I didn't really like physics. But that could be because they plunged us into quantum/relativity pretty early on 00:24 < Drainedsoul> which put a damper on the whole thing 00:24 <+sadimusi> so far I really like all of them 00:24 < Drainedsoul> trying to cancel out 10^-33 to the point where the calculator can do the equation is not my idea of fun 00:24 < coolcat> really? quantum is the best part of physics imo 00:24 <+sadimusi> I didn't really have a problem with relativity, I thought electro dynamics to be much harder 00:24 < Drainedsoul> ultimately I've gotten to the point where I just see school as something I need to get through to get a degree and work, so I don't enjoy any of it, at all anymore 00:25 < Drainedsoul> ...which is probably bad for me. 00:25 < coolcat> Because its more relevant to what we do today... 00:25 <+sadimusi> mostly because of all the advanced math involved 00:25 < Drainedsoul> I'm also of the opinion that traditional schooling has been displaced with other means of learning. But being homeschooled K-12 might've influenced that. I find it really easy to learn independently. 00:25 < Drainedsoul> so I see the degree even moreso as just a symbolic piece of paper 00:27 < Sehales> Okay I will go to bed now, thank you for the nice discussion. Good night / gute Nacht 00:27 < Drainedsoul> adios 00:27 <+sadimusi> good night 00:28 <+sadimusi> in some fields a degree really feels like a worthless piece of paper; I took "Wirtschaftsinformatik" which is a mix of economics and information systems as my third minor and never went to a single lecture 00:28 <+sadimusi> studying a few hours the night before the exam was enough 00:32 < Drainedsoul> plus there's a torrent of useless courses that you're made to take, that's the one that really gets me. 00:32 < Drainedsoul> I would rather the university just said "hey we need more money, give it to us", that would be more relatable