--- Log opened Wed Mar 03 00:00:00 2010 |
--- Day changed Wed Mar 03 2010 |
00:00 | < gnolam> | The latter. |
00:00 | <@McMartin> | There's some ugly corner cases there but I've faced them for UQM and Sable; I might be able to help if you've got specific issues. |
00:00 | < gnolam> | Not only do the docs leave out half the information you need, but it also flat-out lies. |
00:00 | <@McMartin> | Also, are you using a Matrox card~ |
00:01 | <@McMartin> | Some of the ugly corner cases involve graphics drivers lying~ |
00:01 | < gnolam> | Oh, it's /working/. |
00:02 | < gnolam> | It's just impossible to know if it working is something that can be depended on, because the docs only give you half the information you need. |
00:02 | <@McMartin> | For UQM we absolutely had to do a dedicated effort to run benchmarks, both speed and accuracy, on as wide a set of machines and OSes as possible. |
00:03 | <@McMartin> | What is it, precisely, that you're trying to do, though? |
00:06 | < gnolam> | It seems the SDL documentation process goes something like "- So, should we document our return values? - Nah, too much work. - Default values then? - Pfft, who would /ever/ need that? - Umm... listing /all/ available enums for the GL attributes, maybe? - But then we'd have to look up what they do! - Ok, how about making sure the types we claim the functions have are actually correct? - Boooooring!" |
00:07 | <@McMartin> | You still haven't actually answered my question. |
00:08 | < gnolam> | What I'm doing right now is cleaning up old code, and making sure it's actually correct. |
00:08 | <@McMartin> | My recollection of using SDL, in particular, was that after calling CreateVideoSurface everything else used the OpenGL libraries exclusively, with any communication being done via raw pixmaps. |
00:08 | < gnolam> | However, there's no way of knowing that, since the documentation is /shite/. |
00:08 | <@McMartin> | Maybe I'm being unclear |
00:08 | < gnolam> | Missing enums. Missing return value specifications. Incorrect return types. |
00:08 | <@McMartin> | Can you give a specific, explicit, concrete example? |
00:09 | < gnolam> | Little to no explanation of interoperation of functions. |
00:09 | <@McMartin> | Like, "I'm trying to verify a call to SDL_DisplayFormatAlpha() and can't figure out if its preconditions are met" |
00:09 | < TheWatcher> | We get you hate SDL, that does not actually provide the information that may be used to assist you |
00:09 | < gnolam> | Knowing if SDL_GetVideoInfo() takes GL attributes into account? |
00:10 | < gnolam> | Finding documentation on the SDL_GL_MULTISAMPLE* attributes? |
00:11 | <@McMartin> | For the former, I strongly suspect "no" |
00:11 | < gnolam> | Getting pissed off when SDL_VideoInfo *SDL_GetVideoInfo(void) turns out to actually be const SDL_VideoInfo *SDL_GetVideoInfo(void)? |
00:11 | <@McMartin> | Though if it's post-call-to-SetVideoMode, I don't know. |
00:11 | <@McMartin> | Um |
00:11 | <@McMartin> | http://www.libsdl.org/cgi/docwiki.cgi/SDL_GetVideoInfo |
00:11 | < TheWatcher> | It explicitly says const there |
00:11 | <@McMartin> | "RETURN VALUE: Returns a read-only pointer to the structure containing the information about the current video hardware. Technically, it's a constant SDL_VideoInfo pointer." |
00:12 | <@McMartin> | Next question: Which docs are you reading? |
00:12 | < gnolam> | Ach, sorry, I actually meant SDL_VideoModeOK() instead of SDL_GetVideoInfo(). |
00:12 | < gnolam> | The ones in docs/ . |
00:12 | < TheWatcher> | read the wiki. |
00:13 | < TheWatcher> | and SDL_VideoModeOK's flags are those you pass as the flags to SDL_SetVideoMode |
00:14 | <@McMartin> | SetVideoMode in particular has a number of probably relevant comments about the interaction of OpenGL and video mode changes in Windows vs. Linux, as well. |
00:16 | < gnolam> | Wiki |
00:16 | < gnolam> | n. pl. wikis |
00:16 | < gnolam> | 1. A collaborative website whose content can be edited by anyone who has access to it. |
00:16 | < gnolam> | 2. A poor excuse for bad documentation. |
00:16 | < gnolam> | :P |
00:17 | < TheWatcher> | Um |
00:17 | < TheWatcher> | I'm going to choose to believe you're joking. |
00:17 | < gnolam> | The SDL_VideoModeOK entry appears to be identical to the local documentation. |
00:18 | < gnolam> | TheWatcher: Oh, I'm being perfectly serious. |
00:19 | < TheWatcher> | In that case, I suggest you leave open sourse alone, and go play with DirectX |
00:20 | < gnolam> | The reason being basically that the people editing the wiki are basically the same who would write the regular documentation. |
00:20 | < TheWatcher> | Incorrect |
00:21 | < gnolam> | It works for /some/ things. This ain't one of them. If I had a penny for every project I've come across that thought putting up a wiki would make the documentation magically write itself, I'd be a rich man. |
00:21 | < TheWatcher> | It is quite possible - and in my personal experience, quite likely - that documentation is either written, expanded, or edited by end-users or people who just what to help. |
00:21 | < TheWatcher> | And, frankly, if you're so very pissed about it, you have the source. Look at it. Then go fix the documentation you're complaining about |
00:23 | | You're now known as TheWatcher[T-2] |
00:25 | < gnolam> | Dammit. I normally don't like graphical emoticons, but here I would really need the "rolling eyes" smiley. |
00:27 | | You're now known as TheWatcher[zZzZ] |
00:27 | < gnolam> | Getting into the intricacies of an entire project is /not/ a reasonable expectation. Having documentation that doesn't leave out important information is. |
00:27 | | * ToxicFrog upreads |
00:28 | < ToxicFrog> | celticminstrel: only showing underlines when you press alt is the default behaviour; you can change it to show them all the time somehow. |
00:29 | < gnolam> | Especially since there's a good chance that even reading and understanding the code isn't enough. You also have to know if that behavior is the /intended/ one |
00:30 | < gnolam> | . |
00:30 | < ToxicFrog> | gnolam: what seems to be happening here is: "The docs are shit!" "Read the wiki. It's better." "No it isn't! It can't be, because wikis are terrible for documentation!" |
00:31 | < gnolam> | No, it's "The docs are shit!" "Read the wiki. It's better." "In the general case, that's patently untrue, and here it's a bit better but still not enough". |
00:32 | < ToxicFrog> | Ok, but that's really not what's coming across, and even if it were so far you've given one example of that turned out to be wrong. |
00:32 | < ToxicFrog> | I also can't figure out if you have an actual question about SDL's behaviour or just needed to rant. |
00:32 | < gnolam> | And which one was that? |
00:33 | < ToxicFrog> | SDL_GetVideoInfo not being const. |
00:33 | < gnolam> | That's the "a bit better". |
00:33 | < gnolam> | The "still not enough" is, for example, SDL_VideoModeOK() still not documenting what it does with GL attributes. |
00:34 | < ToxicFrog> | Also untrue. |
00:34 | < gnolam> | Oh? |
00:34 | < ToxicFrog> | It says it takes the same arguments as SDL_SetVideoMode. |
00:34 | <@McMartin> | With a link. |
00:34 | <@McMartin> | Which goes into considerable detail. |
00:34 | < gnolam> | It takes the same arguments, yes. |
00:34 | < gnolam> | Unfortunately, the GL attributes are not its arguments. |
00:34 | < ToxicFrog> | Precisely. |
00:34 | <@McMartin> | My expectation, based on the documentation, is that if SDL_OPENGL is set, then it will test based on the GL attributes set via GL. |
00:35 | <@McMartin> | That the general contract is "If you call setvideomode with these arguments right now, will it work" |
00:35 | <@McMartin> | That might not be true! |
00:35 | <@McMartin> | If it isn't, that would indeed be a bug in either SDL or the docs. |
00:35 | <@McMartin> | But it's not unclear,. |
00:37 | | Rhamphoryncus [rhamph@Nightstar-8931f88f.abhsia.telus.net] has joined #code |
00:37 | < gnolam> | It also states that attributes take effect /after/ setting a graphics mode, and reserves the right to futz with them ("You should use SDL_GL_GetAttribute to check the values after a SDL_SetVideoMode call, since the values obtained can differ from the requested ones."). |
00:38 | <@McMartin> | Yes, but that is not the fault of SDL. |
00:38 | <@McMartin> | It is the fault of graphics card manufacturers and driver writers. |
00:38 | < gnolam> | Ah, but I happen to know some attributes can cause a video mode to fail. |
00:38 | <@McMartin> | Or, if you will, the ARB. |
00:38 | < gnolam> | E.g. multisampling (which, BTW, is completely undocumented in the local docs). |
00:39 | < gnolam> | So, will that be taken into account? I have no way of knowing. |
00:39 | <@McMartin> | I thought multisampling was part of the eventual scene submission, not the graphics mode. |
00:39 | <@McMartin> | It's possible my OpenGL knowledge is a decade out of date. |
00:45 | < celticminstrel> | ...it looks like wxWidgets' PNG handler doesn't support saving indexed PNGs... |
00:45 | <@McMartin> | gnolam: That said, for UQM, our experience was that SetVideoMode would fail outright if invalid attributes were set. We were writing before VideoModeOK was part of the standard. |
00:49 | <@McMartin> | There's nothing stopping you from defense in depth if you don't trust the library, and having SetVideoMode's return value being NULL trigger a fallback mode. |
01:04 | | Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has quit [Ping timeout: 121 seconds] |
01:46 | | Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code |
01:55 | | Reiv [NSwebIRC@Nightstar-1055e8af.waikato.ac.nz] has joined #code |
01:55 | < Reiv> | Evening folks |
01:55 | < ToxicFrog> | 'evening. |
01:56 | < ToxicFrog> | Have a closure. |
01:56 | < Reiv> | I have managed to cunningly forget the logic path of the following, and want to doublecheck so it behaves as intended. |
01:56 | | * Reiv nom closure |
01:59 | < Reiv> | func (m,n) = { m == 0, n+1 |
01:59 | < Reiv> | { n == 0, func(m-1,1) |
01:59 | < Reiv> | { else , func(m-1,func(m,n-1)) |
01:59 | < Reiv> | Braces at the start being one big { one. |
01:59 | < Reiv> | Clarification point: For the else, it has to be neither of the first two, correct? |
01:59 | <@McMartin> | Yes, and for the second, it has to be not the first. |
02:00 | < ToxicFrog> | You read top to bottom; the first condition that is true goes off and evaluation stops there. |
02:00 | < Reiv> | Aaaah, thank you. |
02:00 | | * Reiv was simply not familiar with the notation, and the one example he gave to explain it had only one if in it. |
02:00 | < Reiv> | awesome, cheers |
02:01 | < ToxicFrog> | (define (func m n) (cond [(= m 0) (+ n 1)] [(= n 0) (func (- m 1) 1)] [else (func (- m 1) (func m (- n 1)))])) lispwise |
02:03 | < celticminstrel> | ...what dialect is that? |
02:03 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [Ping timeout: 121 seconds] |
02:04 | < Reiv> | Stupid Question Time: If (foo) { } else if {bar} else {zod} would meet the above conditions, or do I Have the brackets wrong? |
02:04 | < celticminstrel> | The second if is missing its condition? |
02:05 | < Reiv> | OK, but aside from that |
02:07 | < ToxicFrog> | celticminstrel: Scheme. |
02:07 | < ToxicFrog> | PLT Scheme, I think. |
02:08 | < ToxicFrog> | Reiv: aside from that, yes. |
02:08 | < Reiv> | Excelent. |
02:08 | < ToxicFrog> | Indeed that style of function definition translates pretty much exactly into if/elseif/else trees. |
02:08 | | * Reiv blargs at Java. How do I feed a '1' into a long? |
02:08 | <@McMartin> | long a = 1; |
02:08 | < Reiv> | Aha |
02:08 | < Reiv> | Or rather, I wanted to feed it to a function ack(m-1,1) |
02:08 | <@McMartin> | Should just autopromote |
02:09 | <@McMartin> | If it doesn't, 1L |
02:14 | < Reiv> | SQT: Constructor syntax? |
02:14 | | * Reiv is trying to make this thing an object, is not sure that's a good idea but main was being unhelpful. |
02:18 | | Attilla [Attilla@FBC920.0A905B.55C6A3.AD1094] has quit [Client closed the connection] |
02:18 | < ToxicFrog> | Um |
02:18 | < ToxicFrog> | "unhelpful" how? |
02:19 | < ToxicFrog> | Assuming the project is just "implement Ackermann, take args from command line", you really shouldn't need to instantiate anything. |
02:19 | < ToxicFrog> | That said, constructor declaration: |
02:19 | < ToxicFrog> | [visibility options] ClassName(arguments) {...} /* note: no return type */ |
02:19 | < ToxicFrog> | Object instantiation: Type foo = new Type(constructor arguments); |
02:21 | | Reiv [NSwebIRC@Nightstar-1055e8af.waikato.ac.nz] has quit [Ping timeout: 121 seconds] |
02:21 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code |
02:23 | < celticminstrel> | Aw, he's gone. |
02:25 | < ToxicFrog> | He'll be back. |
02:28 | | Reiv [NSwebIRC@Nightstar-1055e8af.waikato.ac.nz] has joined #code |
02:32 | < ToxicFrog> | * Reiv is trying to make this thing an object, is not sure that's a good idea but main was being unhelpful. |
02:32 | < ToxicFrog> | <ToxicFrog> Um |
02:32 | < ToxicFrog> | <ToxicFrog> "unhelpful" how? |
02:32 | < ToxicFrog> | <ToxicFrog> Assuming the project is just "implement Ackermann, take args from command line", you really shouldn't need to instantiate anything. |
02:32 | < ToxicFrog> | <ToxicFrog> That said, constructor declaration: |
02:32 | < ToxicFrog> | <ToxicFrog> [visibility options] ClassName(arguments) {...} /* note: no return type */ |
02:32 | < ToxicFrog> | <ToxicFrog> Object instantiation: Type foo = new Type(constructor arguments); |
02:32 | < ToxicFrog> | You're probaly right on it being a bad idea, though; whatever problem you're having, this is unlikely to be the solution. |
02:33 | <@McMartin> | What does your main declaration look for? |
02:33 | <@McMartin> | Er, look *like* |
02:34 | < ToxicFrog> | And do clarify what you mean by "unhelpful" |
02:34 | < Reiv> | sec |
02:34 | | Derakon [Derakon@Nightstar-5abd3ac9.ca.comcast.net] has joined #code |
02:34 | | mode/#code [+o Derakon] by Reiver |
02:35 | <@Derakon> | Remember how there's another poor lab out there that has a copy of my lab's software? |
02:35 | <@Derakon> | And they've been asking me for help to add a feature we have to their version? |
02:35 | <@Derakon> | Turns out their version's in even worse shape than ours, if you can believe it. |
02:35 | <@Derakon> | Ours is a Python-C++ amalgam. |
02:35 | <@Derakon> | Theirs is Python-C++-Java. |
02:36 | <@Derakon> | Poor shmucks. |
02:36 | <@Derakon> | Mind you, doesn't say much for my peace of mind since they continue to ask me for help. |
02:36 | < Vornicus> | Jesus |
02:36 | <@Derakon> | Most recently they tried plugging in the compiled C++ executable from the code I sent them (they were just supposed to use the Python bits, which should have been mutually compatible), and then asked me why it didn't work. *sigh* |
02:37 | < ToxicFrog> | This is the bit where you sacrifice a goat to Azathoth and pray for the merciful annihilation of all that is, I think. |
02:37 | < Reiv> | http://pastebin.starforge.co.uk/132 - what I have so far, trying to figure out how to get ack to work, so that I can then get ack to be run and print out the results. |
02:38 | < Reiv> | Once I have that I plan to stick it in a for loop that increments starting values of m and n for great lulz, and watch when it explodes~ |
02:38 | <@Derakon> | ...you're coding the Ackermann function? |
02:38 | < Reiv> | Yup! |
02:38 | < Reiv> | We were told to do it as homework. |
02:39 | <@Derakon> | I suspect you're going to run into problems with hitting your maximum recursion depth. |
02:39 | <@McMartin> | Reiv: main must return void. |
02:39 | < Reiv> | McM: That includes the functions within main? |
02:39 | < ToxicFrog> | Does JAva even permit nested functions? |
02:39 | <@McMartin> | Main is a function. It doesn't get to have functions. |
02:39 | <@McMartin> | ack needs to be in the class. |
02:39 | < Reiv> | ... oh /duh/ |
02:39 | < Reiv> | Thank you! I was being thick. |
02:39 | <@Derakon> | ...oh, yeah, you can't do that in Java. |
02:40 | <@McMartin> | TF: Sort of but they are secretly classes~ |
02:40 | < ToxicFrog> | new Runnable() { /* woe and spiders */ } ;.; |
02:40 | <@McMartin> | Still cleaner than C++0x lambdas~ |
02:40 | <@Derakon> | Does Java have lambdas? |
02:40 | < celticminstrel> | But you can't call them like functions. |
02:40 | <@McMartin> | TF just quoted it. |
02:40 | <@Derakon> | ...oh dear. |
02:40 | < celticminstrel> | Java is adding closures sometime, I believe. |
02:40 | <@Derakon> | And I thought PHP's create_function was bad. |
02:41 | <@McMartin> | Closures don't actually buy you anything objects don't. |
02:41 | <@McMartin> | And vice versa |
02:41 | < ToxicFrog> | Actually it's: Runnable lambda = new Runnable() { public void run() { ...code goes here... } }; |
02:41 | < ToxicFrog> | I think run is void->void, anyways. |
02:41 | < Reiv> | I had botched my nesting. Thank you. |
02:41 | < ToxicFrog> | In conclusion, I don't like Java~ |
02:41 | <@McMartin> | ack is also not properly defined, since it will also need to provide types |
02:41 | <@McMartin> | Also, as written, ack should probably be static |
02:42 | < Reiv> | I didn't know you could do that with a recursive function. |
02:42 | < ToxicFrog> | ^-- both of these. You can't call non-static methods without creating an object first, and Java doesn't do type inference. |
02:42 | < ToxicFrog> | ...how do you mean? |
02:42 | < Reiv> | No, TF just answered for me, thank you |
02:43 | < Reiv> | I had been trying to create an object to get around the non-static methods bit. |
02:43 | < Reiv> | Then realised I was being thick and put everything back in the main object; everything since then has been fixing my errors in there~ |
02:43 | < ToxicFrog> | (if you mean "I didn't think you could have static recursive functions", yes you can; all static means is "you call it directly rather than as a method on an object". This is not the same as C's static keywork on function local variables.) |
02:43 | < Reiv> | (That answers my question, thank you) |
02:44 | <@McMartin> | Both of which are different from C's static keyword on function definitions |
02:44 | <@Derakon> | "static" is one of those keywords that is used for entirely too many things. |
02:44 | <@McMartin> | But this is pretty close to C++'s static keyword on fields and methods. |
02:49 | | * Reiv eyes |
02:49 | < Reiv> | This program appears to have a bug. |
02:49 | < Reiv> | Ackermann is not meant to produce /small/ numbers, is it? >_> |
02:49 | <@Derakon> | This is unexpected? |
02:49 | <@Derakon> | Heh. |
02:49 | < ToxicFrog> | For very small inputs it will |
02:49 | < Reiv> | m = 10, n = 10 >> 10. |
02:50 | <@Derakon> | Yyyeah, that's wrong. |
02:50 | <@Derakon> | Ah. |
02:50 | < Vornicus> | http://en.wikipedia.org/wiki/Ackermann_function |
02:50 | <@Derakon> | Note what happens if m == 0. |
02:50 | <@Derakon> | Note also your return value. |
02:50 | <@Derakon> | Note also what you do with the results from your recursive steps. |
02:51 | < ToxicFrog> | > (A 1 1) |
02:51 | < ToxicFrog> | 3 |
02:51 | < ToxicFrog> | > (A 10 10) |
02:51 | < ToxicFrog> | ...it's still running. |
02:51 | < Reiv> | Derakon: ... Oh, my recursion isn't actually doing anything useful is it |
02:51 | | * Reiv tries to figure where it needs to be sticking the values. |
02:52 | < ToxicFrog> | It's meant to return them. |
02:52 | < ToxicFrog> | It's a purely recursive definition; you shouldn't have any assignments or mutators in there. |
02:53 | < ToxicFrog> | Take, say, the first condition: A(m,n) = { m = 0 | n+1 } |
02:53 | <@Derakon> | Here's Ackermann in Python: http://pastebin.starforge.co.uk/134 |
02:54 | <@Derakon> | I'm pretty sure I did it correctly, but I so rapidly hit the recursion cap it's hard to say. |
02:54 | < ToxicFrog> | What this means in practice is that if you call A(0, n) for any n, it should return n+1. |
02:54 | < Reiv> | http://pastebin.starforge.co.uk/135 - not correct, but is it on the right track? |
02:54 | < ToxicFrog> | Closer! |
02:54 | < Reiv> | Should /each/ if statement return? |
02:54 | <@Derakon> | Lines 12 and 13 need return statements. |
02:54 | < ToxicFrog> | Yes. |
02:55 | < Reiv> | aha, bingo |
02:55 | <@Derakon> | Also, "n++" is unhelpful. |
02:55 | <@Derakon> | "return ++n" would technically do what you want but is still silly. |
02:55 | < celticminstrel> | ...wouldn't that code give an error because some branches don't return? |
02:55 | < ToxicFrog> | If one of the condition succeeds, the corresponding value is what the function call should evaluate to - and thus, what it should return. |
02:56 | <@McMartin> | celticminstrel: No, because it then falls through to the "return m" statement |
02:56 | <@Derakon> | There's no "return m" in Reiver's latest ouvre. |
02:56 | < celticminstrel> | Um, what "return m" statement? |
02:59 | <@McMartin> | I may be looking at an older chunk of code |
03:00 | < Reiv> | ehehehehehe |
03:00 | < Reiv> | m5, n5 overflows. ^.^ |
03:01 | < ToxicFrog> | A is awesome(?) like that. |
03:01 | < Reiv> | Very! |
03:02 | < Reiv> | And now, having completed my first little bit of code, I go to class to learn why it proves that it is impossible to prove any arbitary bit of code Totally Correct. |
03:02 | < Reiv> | Thank you! |
03:02 | < Reiv> | And apologies for the Stupid Questions. <g> |
03:03 | <@Derakon> | No worries. |
03:03 | | Reiv [NSwebIRC@Nightstar-1055e8af.waikato.ac.nz] has quit [[NS] Quit: classtiem] |
03:09 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?] |
04:33 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!] |
05:37 | | Vornicus is now known as Vornicus-Latens |
05:39 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has joined #code |
06:18 | | AnnoDomini [annodomini@Nightstar-3c34be84.adsl.tpnet.pl] has joined #code |
06:18 | | mode/#code [+o AnnoDomini] by Reiver |
06:20 | < Orthia> | So |
06:21 | < Orthia> | Mergesort of Quicksort: Most straightforward to implement? |
06:21 | <@Derakon> | ...wow, I've forgotten my sorting algorithms. ¬.¬ |
06:21 | <@Derakon> | I mean, I remember generally how Quicksort works. |
06:22 | <@Derakon> | But these days I just call the language's built-in sort() function. Sometimes I have to write a comparator function to go with it. |
06:22 | <@AnnoDomini> | http://www.youtube.com/watch?v=YvTW7341kpA |
06:22 | <@AnnoDomini> | Orthia: Use Bubble Sort. FEELS GOOD MAN. |
06:22 | < ToxicFrog> | Quicksort is,IMO,much simpler to implement than mergesort. |
06:23 | < ToxicFrog> | It's been a while since I did either, though. |
06:23 | < ToxicFrog> | Bubblesort is even simpler but is O(n^2) rather than O(nlogn) |
06:24 | < Orthia> | I was trying to pick a n*logn sorter, yeah. |
06:26 | < ToxicFrog> | Your best bets are heapsort, mergesort or quicksort, then. |
06:26 | < ToxicFrog> | Is this personal interest, or an assignment? |
06:28 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code |
06:33 | | Derakon is now known as Derakon[AFK] |
06:54 | < Rhamphoryncus> | Orthia: out of curiosity, what language are you using that requires you to write your own sort? |
06:56 | < ToxicFrog> | Rhamphoryncus: it's coursework. |
06:56 | < Rhamphoryncus> | oh |
06:57 | | * Rhamphoryncus would be fighting the urge to do a hybrid adaptive merge sort |
06:58 | < Rhamphoryncus> | But if it was a specific type like 32 bit ints I might go more specialized |
07:04 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has quit [Client closed the connection] |
07:10 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has joined #code |
07:10 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has quit [Connection reset by peer] |
07:15 | | Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 121 seconds] |
07:18 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has joined #code |
07:21 | | Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code |
07:31 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has quit [Connection reset by peer] |
07:37 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has joined #code |
07:47 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has quit [Connection reset by peer] |
07:48 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has joined #code |
07:48 | < Orthia> | ToxicFrog: Sort of both. |
07:49 | < Orthia> | We were demonstrated n*logn workings in class, and expected to know how they function properly by next class (monday). |
07:49 | < Orthia> | I figure one might as well learn by doing... |
07:53 | < Orthia> | If not fully featured, then at least the general function thereof. |
09:29 | | You're now known as TheWatcher |
09:57 | | Attilla [Attilla@FBC920.0A905B.55C6A3.AD1094] has joined #code |
09:57 | | mode/#code [+o Attilla] by Reiver |
10:09 | | Orth [orthianz@Nightstar-a25515d3.xnet.co.nz] has joined #code |
10:11 | | Orthia [orthianz@Nightstar-5f618da7.xnet.co.nz] has quit [Ping timeout: 121 seconds] |
10:27 | | Zed [Zed@Nightstar-d0088b95.or.comcast.net] has joined #code |
11:50 | | celmin [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
12:14 | | * TheWatcher ugghs at SQL |
12:19 | | Rhamphoryncus [rhamph@Nightstar-8931f88f.abhsia.telus.net] has quit [Client exited] |
12:26 | | celmin is now known as celticminstrel |
12:30 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!] |
12:40 | | Tarinaky [Tarinaky@Nightstar-f5fce989.adsl.virginmedia.net] has quit [Operation timed out] |
12:41 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code |
12:55 | | Tarinaky [Tarinaky@Nightstar-28f7cb92.adsl.virginmedia.net] has joined #code |
13:33 | | AnnoDomini [annodomini@Nightstar-3c34be84.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds] |
14:49 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Client closed the connection] |
15:35 | | AnnoDomini [annodomini@Nightstar-489a1c1a.adsl.tpnet.pl] has joined #code |
15:35 | | mode/#code [+o AnnoDomini] by Reiver |
16:20 | <@AnnoDomini> | Gnar. |
16:20 | <@AnnoDomini> | These lab instructions are dated. |
16:21 | <@AnnoDomini> | "Insert system floppy." |
16:28 | < Tarinaky> | Wow. |
16:29 | < TheWatcher> | That's... pretty impressive |
16:29 | < gnolam> | "Press play on tape" |
16:31 | < ToxicFrog> | Orth: good plan. |
16:34 | < gnolam> | That said, I have actually used floppies during labs. But only on the ye olde (but still awesome) logic analyzers. |
16:35 | < Tarinaky> | Our logic analysers have Windows 2k on them :x |
16:35 | < Tarinaky> | At least, the one I saw. |
17:04 | | Tarinaky [Tarinaky@Nightstar-28f7cb92.adsl.virginmedia.net] has quit [Connection closed] |
17:16 | | Derakon[AFK] is now known as Derakon |
17:21 | < Alek> | http://notalwaysright.com/and-they-wonder-why-we-charge-by-the-hour/4517 |
17:56 | | Tarinaky [Tarinaky@Nightstar-28f7cb92.adsl.virginmedia.net] has joined #code |
17:59 | | Tarinaky [Tarinaky@Nightstar-28f7cb92.adsl.virginmedia.net] has quit [Client closed the connection] |
17:59 | | Tarinaky [Tarinaky@Nightstar-28f7cb92.adsl.virginmedia.net] has joined #code |
18:33 | | Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 121 seconds] |
18:57 | < gnolam> | ERROR: ERROR NOT UNDETECTED |
19:00 | < gnolam> | From http://kotaku.com/5484157/valves-portal-puzzle-so-far-the-files-recovered-from-a perture-science . |
19:16 | | Orth [orthianz@Nightstar-a25515d3.xnet.co.nz] has quit [Client closed the connection] |
19:31 | | Orthia [orthianz@Nightstar-a25515d3.xnet.co.nz] has joined #code |
19:31 | | Orthia [orthianz@Nightstar-a25515d3.xnet.co.nz] has quit [Client closed the connection] |
19:35 | | Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code |
20:33 | | Orthia [orthianz@Nightstar-76c77331.xnet.co.nz] has joined #code |
20:37 | | MyCatVerbs [mycatverbs@Nightstar-58acb782.cable.virginmedia.com] has joined #code |
20:37 | | mode/#code [+o MyCatVerbs] by Reiver |
20:40 | | AbuDhabi [annodomini@Nightstar-303ffea1.adsl.tpnet.pl] has joined #code |
20:42 | | AnnoDomini [annodomini@Nightstar-489a1c1a.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds] |
20:57 | | AbuDhabi [annodomini@Nightstar-303ffea1.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds] |
20:58 | | AnnoDomini [annodomini@Nightstar-303ffea1.adsl.tpnet.pl] has joined #code |
20:58 | | mode/#code [+o AnnoDomini] by Reiver |
21:18 | < Bob_home> | JavaServer is made up of Cancer and Madness. >.< |
21:22 | <@McMartin> | And it still is the best-scaling technology in the space, AFAIK >.< |
21:36 | < Bob_home> | I can sum up it's pitfalls in 1 word: ResultSets |
21:37 | <@McMartin> | Hrm. Is that Java Server Pages or JDBC? |
21:37 | | * McMartin is sadly no longer buzzword compliant! |
21:37 | < Bob_home> | hehe |
21:37 | <@McMartin> | As such, my previous >.< may be invalid |
21:37 | < Bob_home> | Ok, technically JDBC, I think. |
21:38 | < Bob_home> | But JavaServer sucks as well. No dynamic arrays. |
21:38 | | * McMartin only ever did raw servlet coding. |
21:38 | | * McMartin ... can't really recommend it. |
21:38 | <@McMartin> | But it's probably better than building an entire app out of nothing but JSPs. |
21:39 | | * Bob_home nods |
21:39 | < Bob_home> | Which, according to the makers of the software for Project From Hell, JSP's are the only web scripting possible. |
21:40 | <@McMartin> | That's baffling =( |
21:40 | | Vornicus-Latens is now known as Vornicus |
21:40 | <@McMartin> | I can't think of anything that allows JSPs that doesn't also accept arbitrary WARs. |
21:41 | <@McMartin> | (Though again my knowledge is severely dated) |
21:41 | <@McMartin> | Still, technological progress is supposed to go in the other direction. |
21:42 | < ToxicFrog> | WARs? |
21:42 | | Derakon is now known as Derakon[AFK] |
21:45 | <@McMartin> | TF: Web ARchive. A structured JAR with metadata intended to be loaded by something like Tomcat which has a bunch of Java classes that do CGI, a bunch of JSPs to be compiled *into* Java classes that do CGI, supporting static HTML/images/etc, and some XML to specify the mapping between URLs sent to the server and which content to serve/class to invoke methods on. |
21:45 | <@McMartin> | In the ideal world, a dynamic web application is this one file that you throw where Tomcat can see it, and suddenly your blog software or whatever is installed. |
21:47 | < ToxicFrog> | Aah. |
21:49 | < gnolam> | But what is it good for? Absolutely nothing! |
21:50 | < Namegduf> | It's the idea of people running their little blogs on Java that make me want to get into hosting. |
21:50 | < Namegduf> | Because they're going to need to pay for that RAM. |
21:51 | <@McMartin> | Meanwhile, PHP is blazingly efficient |
21:51 | < Namegduf> | PHP sucks ass too. |
21:51 | <@McMartin> | PHP is, in almost every web application domain, the alternative. |
21:51 | | * McMartin would have hope that a line like "meanwhile, PHP is blazingly efficient" would be obvious sarcasm. |
21:52 | < Namegduf> | I know. |
21:52 | < ToxicFrog> | Python!~ |
21:52 | < Namegduf> | I hear Python is better. |
21:52 | <@McMartin> | TF: I honestly don't know how Python - or, more realistically, mod_python - scales compared to a tuned Java server. |
21:52 | <@McMartin> | Python's definitely better than PHP |
21:52 | <@McMartin> | For security reasons if nothing else |
21:53 | | * ToxicFrog nods |
21:53 | < Namegduf> | PHP's "security issues" are entirely bad-programmer related nowadays. |
21:53 | < ToxicFrog> | I have to say that from a programmer's perspective, Django is pretty awesome |
21:53 | < ToxicFrog> | But I have no idea what the performance is like |
21:53 | <@McMartin> | So are C's, which is why you shouldn't use either for such things |
21:53 | < Namegduf> | No, you misunderstand. |
21:53 | < Namegduf> | PHP has had robust, "prepared statement" MySQL usage for years now. |
21:53 | < Namegduf> | The original problems were its fault, but it fixed them. |
21:54 | <@McMartin> | Yes, but web programmers are as a rule random people hired off the street. |
21:54 | < Namegduf> | The problem is that when so many of the programmers are of a similar grade to, say, VB programmers- yeah. |
21:54 | < Namegduf> | There's still a lot of bad tutorials out there. |
21:54 | <@McMartin> | This is why if you're going to hand them technology to build something for you, you want something a bit more failsafe |
21:54 | < Namegduf> | I'm not sure you get any more failsafe without removing SQL entirely. |
21:54 | <@McMartin> | I *suspect* one of the stricter frameworks like Rails or Django might win out. |
21:54 | < Namegduf> | Or outright denying any non-prepared-statements. |
21:55 | | * ToxicFrog points at Django again |
21:55 | <@McMartin> | Rails, though, is only any good if you want to do what it's a framework for. It's not very flexible. |
21:55 | < Namegduf> | It's a pity that Ruby is possibly the worst performing language that people have tried to do web stuff with. |
21:55 | <@McMartin> | And if you're big and spread out enough that you *need* good programmers to do your custom web-based interface to a major chunk of business logic... |
21:56 | <@McMartin> | ... then Java's the closest to an actual compiled language you get. |
21:56 | <@McMartin> | Which is really a roundabout way of saying "Python needs better JITs" |
21:56 | < Namegduf> | Java is probably good for the big scale stuff, but when it comes to web things, I think ignoring the number of small websites out there isn't going to work. |
21:56 | <@McMartin> | Well, no. |
21:56 | < Namegduf> | Depending on what you're doing, obviously. |
21:57 | <@McMartin> | But for the small stuff I think the choice is Rails/Django/That Perl Equivalent |
21:57 | < Namegduf> | Java doesn't really scale at all. It's just big and designed for big things. |
21:57 | < Namegduf> | It doesn't scale down. |
21:57 | < Namegduf> | Rails doesn't work for any size. |
21:57 | < Namegduf> | It eats buckets of RAM. |
21:57 | < Namegduf> | If you're running a blog off it, you're going to be paying a lot more. |
21:57 | <@McMartin> | Your definition of "work" continues to baffle me |
21:57 | < gnolam> | To quote a (when it comes to this subject at least) wise poster on a forum I hang out on: As PHP attracts the spaghetti hackers, Rails attracts the magical pattern freaks. |
21:58 | <@McMartin> | Neither PHP nor Rails are the best choice in most circumstances. But they're *a* choice and it's not like they aren't heavily used. |
21:58 | < Namegduf> | McMartin: My definition of "work" is "is a reasonably affordable choice" as well. |
21:58 | <@McMartin> | (That said, if you're running a blog, using anything that isn't WordPress basically means you fail) |
21:58 | < Namegduf> | PHP will run a lot more cheaply than Rails will, which is why people tend to prefer it. |
21:59 | < Namegduf> | They *both* suck. |
21:59 | <@McMartin> | WordPress is written in PHP, but it's also mature software at this point. |
22:01 | | Netsplit *.net <-> *.split quits: @Attilla, Reiver, Vornicus, @AnnoDomini, PinkFreud, Taki^, Serah, @McMartin, Kazriko, jerith, (+5 more, use /NETSPLIT to show all of them) |
22:01 | | Netsplit over, joins: AnnoDomini, MyCatVerbs, gnolam |
22:01 | | Derakon[AFK] [Derakon@Nightstar-5abd3ac9.ca.comcast.net] has quit [Operation timed out] |
22:01 | | Netsplit over, joins: Alek |
22:01 | | Netsplit over, joins: Taki^, Serah |
22:05 | | Kazriko [kaz@Nightstar-e09690fa.client.bresnan.net] has joined #code |
22:09 | | PinkFreud [WhyNot@NetworkAdministrator.Nightstar.Net] has joined #code |
22:09 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
22:09 | | Namegduf [namegduf@Nightstar-5c10d129.beshir.org] has joined #code |
22:09 | | jerith [jerith@ServerAdministrator.Nightstar.Net] has joined #code |
22:09 | | McMartin [mcmartin@Nightstar-6397d65b.pltn13.sbcglobal.net] has joined #code |
22:09 | | Reiver [reaverta@ServerAdministrator.Nightstar.Net] has joined #code |
22:09 | | Zed [Zed@Nightstar-d0088b95.or.comcast.net] has joined #code |
22:09 | | Attilla [Attilla@FBC920.0A905B.55C6A3.AD1094] has joined #code |
22:09 | | ServerMode/#code [+oqo Reiver Reiver Attilla] by *.Nightstar.Net |
22:09 | | mode/#code [+o MyCatVerbs] by Reiver |
22:09 | | mode/#code [+o AnnoDomini] by Reiver |
22:09 | | mode/#code [+o ToxicFrog] by Reiver |
22:09 | | mode/#code [+o Kazriko] by Reiver |
22:09 | | mode/#code [+o Syloqs-AFH] by Reiver |
22:09 | | mode/#code [+o TheWatcher] by Reiver |
22:38 | | AnnoDomini [annodomini@Nightstar-303ffea1.adsl.tpnet.pl] has quit [[NS] Quit: Sleeeeeeep.] |
--- Log closed Thu Mar 04 00:00:11 2010 |