--- Log opened Thu Jul 17 00:00:36 2008 |
00:10 | <@Chalain> | jerith: that behavior is correct. Should I explain, or STFU? (I'm okay with either.) |
00:26 | <@ToxicFrog> | Chalain: please explain. |
00:26 | <@ToxicFrog> | I would love to hear the rationale behind this. |
00:27 | <@Chalain> | It's a combination of two things. |
00:27 | <@Chalain> | 1. Ruby allows you to drop the semicolon if a statement parses to a complete expression. So the 3+2 gets parsed as an expression. |
00:28 | <@Chalain> | 2. "Everything returns" in Ruby. Like most languages, you can accumulate return values on the stack, and they get ignored. |
00:28 | <@Chalain> | So |
00:28 | <@Chalain> | (3+2; +4) is a legal expression. It returns 4. |
00:28 | <@ToxicFrog> | Why does it return 4 rather than 5,4? |
00:29 | <@Chalain> | A legitimate use of this would be, for example, (puts "It broke!"; logger.error 'It broke") if x>0 |
00:29 | <@Chalain> | Because there's no comma. |
00:29 | <@ToxicFrog> | Ok. |
00:30 | <@Chalain> | Admittedly, it's a pretty fuzzy corner of Ruby, but yeah, it's endemic to the "parentheses optional" syntax |
00:30 | <@ToxicFrog> | "semicolons optional", I think you mean. |
00:30 | <@Chalain> | ...yes. |
00:31 | <@Chalain> | The other thing that would have worked would be to force non-line termination, e.g. |
00:31 | <@Chalain> | ( 3 + 2 \ |
00:31 | <@Chalain> | + 4) |
00:31 | <@Chalain> | => 9 |
00:31 | <@McMartin> | Ruby's cheerful insistence that its syntax is intuitive, obvious, and wicked awesome continues to be my biggest objection to it. |
00:31 | <@Chalain> | But I suspect jerith discovered this by hitting enter after the 2. If he could go back to type the \, he could go back to type the +. |
00:31 | <@ToxicFrog> | Except it's not unambiguous; (3+2+4) could legally be parsed as any of (3;+2;+4), (3+2;+4), (3;+2+4), or (3+2+4) |
00:32 | <@McMartin> | This particular "feature" appears to be inherited from JavaScript |
00:32 | <@McMartin> | Which has exactly the same frickin' problem. |
00:32 | <@ToxicFrog> | As it happens, it gets parsed as (3+2+4)...unless there's a newline, which in this case it interprets as a semicolon, because it can |
00:32 | <@ToxicFrog> | Whereas I'm guessing that if it couldn't legally break the expression there, it would treat it as normal whitespace? |
00:32 | <@Chalain> | ToxicFrog: (3;+2;+4) is completely different from (3+2+4). They aren't ambiguous. +2 doesn't add to the running stack. |
00:33 | <@ToxicFrog> | Yes, that's my point. |
00:33 | <@McMartin> | TF: If it behaves like JS, that's what it would do. |
00:33 | <@ToxicFrog> | Totally different semantics, but depending on where the newlines fall, it could be parsed as any of those |
00:33 | <@ToxicFrog> | Because a newline is sometimes a delimiter |
00:33 | <@Chalain> | Yes. If the expression is unterminated, it continues on the new line as though you'd typed a space. |
00:33 | <@ToxicFrog> | But not always! |
00:33 | <@Chalain> | newline is ALWAYS a delimiter when the expression is terminated. |
00:34 | <@Chalain> | And NEVER when it is not. |
00:34 | <@ToxicFrog> | You seem to be using "terminated" here in place of "complete" |
00:34 | <@ToxicFrog> | The expression is terminated by the newline. |
00:34 | <@Chalain> | Yeah. |
00:34 | <@ToxicFrog> | Since, in this case, that generates a valid parse tree, it allows it. |
00:34 | <@ToxicFrog> | Even though, in other cases, it doesn't. |
00:34 | <@McMartin> | Shorter TF: "What the fuck, significant whitespace in a situation where it's EVEN MORE OFFENSIVE THAN IN HASKELL" |
00:35 | <@ToxicFrog> | Quite. |
00:35 | <@ToxicFrog> | Haskell and Python are at least consistent. |
00:35 | <@ToxicFrog> | Ruby appears to be "if I can treat this whitespace as significant, I will, otherwise it's just whitespace" |
00:35 | | * Chalain sighs. |
00:35 | <@Chalain> | Ruby is consistent, guys. Works just fine for me, every time. *shrug* |
00:35 | <@Chalain> | Homegoing time. |
00:36 | <@McMartin> | Oh, it's deterministic |
00:36 | <@McMartin> | It's not even the only language that does this |
00:37 | <@ToxicFrog> | You can argue that this is a desireable feature - I won't agree, but the argument can be made - but I would assert that this alone would be enough to torpedo the claims that ruby is a simple, intuitive, obvious, easy to learn language with no traps. Let alone the claims that it's the most etc. |
00:38 | <@ToxicFrog> | And yes, deterministic is not the same as consistent. Newline is sometimes a delimiter, and sometimes not. This is inconsistent use of tokens, even though the situations in which it is and is not are, if you know the language well enough, completely predictable. |
00:42 | <@McMartin> | I would actually offer that for the block syntax, which they misleadingly label as "co-routines" |
00:42 | <@McMartin> | Er, the "passing a block as a special kind of argument" syntax. |
00:42 | <@ToxicFrog> | Offer it as an example of deterministic inconsistency, or as a torpedo? |
00:43 | <@McMartin> | As a torpedo. |
00:44 | <@McMartin> | It's essentially a special form that is for certain functions declared to take a specific-signature function closure as an argument. |
00:44 | <@McMartin> | And is in all ways semantically equivalent to just passing in a callable. |
00:44 | <@McMartin> | Meanwhile, "yield" in Python is a true co-routine, where the processing cannot be done without maintaining multiple parallel stacks. |
00:45 | <@ToxicFrog> | Does it offer any advantages over passing in a callable? |
00:45 | <@ToxicFrog> | Eg, ease of declaration? |
00:47 | <@McMartin> | Ease of invocation, if your language doesn't support full inline closures. |
00:48 | <@McMartin> | Python doesn't, for instance, so you have to actually define a full callable if you aren't just "return (expression)" |
01:12 | <@gnolam> | McMartin: it might well be my driver. It's ATI. :P |
01:16 | <@ToxicFrog> | I mean, do ruby !coroutines offer any advantage |
01:16 | <@ToxicFrog> | That is to say, is it just pointless redundancy, or is it a convenience like C's []? |
01:22 | | * Chalain gets home. |
01:24 | <@McMartin> | TF: I *believe* it is a convenience like [] |
01:24 | <@McMartin> | Unless Ruby's lambdas can be used for sequences of statements and not just individual expressions, in which case it is a pointless redundancy. |
01:24 | <@Chalain> | Fair enough on the desirability of the feature, TF. The desirable case would be (puts "It broke"\nlogger.error "It broke") if x.zero? |
01:24 | <@Chalain> | But even on that one I would push back on a programmer who wrote that. It's a bit obtuse. |
01:26 | | AnnoDomini [AnnoDomini@Nightstar-27974.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
01:27 | <@Chalain> | McMartin: I don't think they call them coroutines anymore. I haven't heard that term in a long time, anyway, and I'm up to my eyeballs in block-passing these days. |
01:28 | <@McMartin> | Chalain: The desirable case is when you're computing a long expression and want to format the code to 70 columns. |
01:28 | <@McMartin> | really.long.qualified name + |
01:28 | <@McMartin> | other.really.long.name |
01:28 | <@McMartin> | etc. |
01:28 | <@Chalain> | Ah, true. |
01:28 | <@McMartin> | And \n after + is OK, but before is Bad News (tm). |
01:28 | <@Chalain> | Well, but no, I mean the "desirable case" as in when you would WANT the \n to == ; |
01:31 | <@Chalain> | I generally lean functional-style-ward in those cases even then, though. I'd wrap it up like a bash multiline so that the implicit multine was explicitly so, like (puts "It broke" || logger.error "It broke") ... |
01:31 | <@Chalain> | Hmm |
01:31 | <@Chalain> | No, that looks like pure ass, doesn't it. |
01:32 | <@Chalain> | Oh. The genuinely desirable case of (..; ..) is where you want to act like a functional language, yet throw a side effect at the same time, like x = (puts "accessing y!"; y) |
01:32 | <@Chalain> | But even then I hesitate to make that a multiline expression. |
01:33 | | AnnoDomini [AnnoDomini@Nightstar-29265.neoplus.adsl.tpnet.pl] has joined #Code |
01:33 | | mode/#code [+o AnnoDomini] by ChanServ |
01:35 | <@Chalain> | ToxicFrog: re passing in a callable. IMO, the biggest single drawback to Ruby making parens optional is that foo and foo() are identical, so I can't pass &foo into a function transparently. I spent a good year trying to find a good workaround for that, and finally realized that this is largely what Ruby's block/yield is for. It is NOT a direct replacement. You have to change your thinking and come at it from a different scope. |
01:36 | <@Chalain> | So yeah... the solution for function pointers in Ruby is to Stop Trying To Do That. :-) |
01:37 | <@McMartin> | That is not exactly a ringing endorsement. |
01:38 | <@Chalain> | No, but it's not meant to be a scathing indictment, either. The key takeaway here is that Ruby is not 1:1 compatible with YourFavoriteLanguage. |
01:38 | <@Chalain> | The thing I love most about Ruby is that it's the first language I've learned in a decade where I actually had to learn a new language. :-) |
01:39 | <@Chalain> | But yeah, take it at face-value: Ruby is a weird-ass beast with fuzzy edges and insanely dangerous features. I *love* that. Plenty of perfectly sane folk disagree with me, though. |
01:40 | <@Chalain> | But then, I have also begun to realize that Ruby will probably not be enough for me soon. I've started looking at Lisp because some parts of Ruby are too stilted and confining. |
01:41 | <@Chalain> | It kind of makes me happy to be in a roomful of people I consider to be equally crazy as myself, because we all love the dangerous power of Ruby, and have them say "Dude... you're crazy." |
01:41 | <@McMartin> | Yeah, see, where you say "not 1:1 compatible" I see "deliberately did not learn the lessons of decades of design history" |
01:42 | <@McMartin> | "In at least three different traditions" |
01:42 | <@McMartin> | My reaction to block-passing was essentially "You're trying to do closures and you did them wrong" |
01:43 | <@Chalain> | What wolud have been the right way? |
01:44 | <@Chalain> | Not challenging you, btw. Genuinely asking. I don't feel the need to defend Ruby's honor here. |
01:46 | <@McMartin> | Probably the ability to inline blocks directly in place of lambda expressions, and then just using the normal argument-passing mechanism. |
01:47 | <@McMartin> | This would also allow you to not force specific signatures on passed blocks. |
01:47 | <@McMartin> | Anyway, need to afk. |
01:47 | | * McMartin waves |
01:47 | <@Chalain> | kk, cheers |
01:50 | <@ToxicFrog> | Chalain: interesting how it all comes down to Lisp in the end, isn't it? I also find myself casting wistful glances at it, mostly at the macro system. |
01:50 | <@Chalain> | I'll have to pick your brain about both of those when you get back. AFAICT, Ruby's mechanism does 90% of that and the other 10% is a) workaroundable and b) not idiomatic when it is used. |
01:50 | <@Chalain> | Yeah |
01:50 | <@ToxicFrog> | I also find myself devising ways to hack an equivalent into Lua, which is probably not healthy. |
01:50 | <@Chalain> | lol, yeah |
01:52 | <@ToxicFrog> | Although I have figured out the reason I was having so much conceptual difficulty: lisp doesn't have keywords or anything, so you can just say (syntax tree) => (other syntax tree). You can't do that even in Lua's existing macro libraries because if you're introducing, say, a new keyword, the parser will fail on the first syntax tree. |
01:52 | <@ToxicFrog> | So I need to write something smart enough to handle that transparently ?? |
01:52 | <@Chalain> | For me it's down in the metaprogramming area. Since Ruby doesn't really have a "compile" step ("class", for example, is a function that takes a block that defines the class), you can metaprogram up most macroish behavior. |
01:53 | <@Chalain> | But there's a few parts of Ruby that are embedded in the metal of the floor of Ruby, like obj.&& |
01:53 | <@ToxicFrog> | Yeah, same with lua. Lots of RTMP support, no CTMP support whatsoever. |
01:54 | <@ToxicFrog> | All the existing macro systems are bolted on, either with a custom interpreter or by replacing load* with a version that invokes a macro-aware parser. |
01:54 | <@Chalain> | I am expectant and hopeful for Rubinius/YARV/Maglev (byte compiled Ruby VMs) since they're all stripping out most of the C and then building core Ruby out of Ruby code. End result is the ability to monkeypatch the compiler while it's running. End result? Lisp, basically. |
01:54 | <@ToxicFrog> | Nice. |
01:54 | <@Chalain> | brb, Liren just got burgers off the stove. Gotta prep some buns. Back in 5-20. |
01:55 | <@ToxicFrog> | (in my more fey moods, I consider going the other way, and macroizing lisp so that it contains my favorite features and syntaxes from lua, instead) |
01:56 | | gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has quit [Quit: Z?] |
02:03 | <@Chalain> | Back, but only to post an AFK. She rented some CSI:NY, which is our new family vice. |
02:05 | <@Chalain> | One of these next times I'm on, poke me. For all that I love Ruby (and I really, really do) I think it will be completely reinvented in 2 years, or dying out within 6. |
02:42 | | AnnoDomini [AnnoDomini@Nightstar-29265.neoplus.adsl.tpnet.pl] has quit [Quit: Some people find sanity a little confining.] |
05:45 | | Doctor_Nick [~nick@Nightstar-23917.hsd1.fl.comcast.net] has quit [Ping Timeout] |
06:04 | | Attilla [~The.Attil@92.9.153.ns-3442] has quit [Ping Timeout] |
06:18 | | Doctor_Nick [~nick@Nightstar-23917.hsd1.fl.comcast.net] has joined #code |
06:23 | <@Syloqs-AFH> | and sold to the japanese. |
06:35 | <@McMartin> | Point of order: Lisp does, in fact, have a few keywords. They're necessary for the Special Forms to allow for partial evaluation when necessary |
06:36 | <@McMartin> | if, cond, and, and or are all keywords because they can't be represented as functions given LISP's non-lazy evaluation. |
06:36 | < Doctor_Nick> | ok |
06:36 | < Doctor_Nick> | i will keep this in mind the next time i program lisp |
06:37 | <@McMartin> | Well |
06:37 | <@McMartin> | The next time you write a LISP interpreter. |
06:43 | | * jerith reads the night's scrool. |
06:43 | <@jerith> | Ah, so it's * |
06:44 | <@jerith> | Ah, so it's *deliberately* broken. |
06:44 | < Shoukanjuu> | \o/? |
06:44 | <@jerith> | I hereby change my stance slightly. Parens should denote a single expression, like they do pretty much anywhere elase. |
06:44 | <@jerith> | *else |
06:45 | <@jerith> | "(foo; bar) if baz" should not be allowed. |
06:45 | <@jerith> | Instead, use "{foo; bar} if baz" or "begin foo; bar end if baz" or something. |
06:49 | <@jerith> | The whitespace behaviour may be correct given the circumstances, but it is still surprising and thus harmful. I don't think any of its possible benefits offset this sufficiently. |
06:49 | <@jerith> | Especially since there are many corners of Ruby that do the same thing. |
06:54 | <@jerith> | s/the same thing/similar things/ |
06:54 | <@jerith> | A small win in one place leaves booby traps in a bunch of other places. |
07:12 | | You're now known as TheWatcher |
07:16 | <@jerith> | Also, Chalain: I discovered this while trying to turn "foo = (a+b+c) \<newline> + (c+d+e)" into something without a line-continuation. |
07:17 | | Thaqui [~Thaqui@Nightstar-26082.jetstream.xtra.co.nz] has joined #code |
07:17 | | mode/#code [+o Thaqui] by ChanServ |
07:18 | <@jerith> | Putting the operator on the second line makes it clear that it is part of the same expression. |
07:26 | | Syloqs-AFH [Syloq@Admin.Nightstar.Net] has quit [Connection reset by peer] |
07:32 | | Syloq [Coder@Admin.Nightstar.Net] has joined #code |
07:33 | | Syloq is now known as Syloqs-AFH |
07:52 | | McMartin [~mcmartin@Nightstar-6034.dsl.pltn13.sbcglobal.net] has quit [Quit: kernel upgrade] |
08:10 | | RBot [~Reiver@Nightstar-11188.xdsl.xnet.co.nz] has joined #Code |
08:11 | | Reiv [~reaverta@Admin.Nightstar.Net] has joined #Code |
08:11 | | DiceBot [~Reiver@Nightstar-22397.xdsl.xnet.co.nz] has quit [Ping Timeout] |
08:11 | | RBot is now known as DiceBot |
08:12 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
08:12 | | You're now known as TheWatcher[afk] |
08:32 | | McMartin [~mcmartin@Nightstar-6034.dsl.pltn13.sbcglobal.net] has joined #code |
08:32 | | mode/#code [+o McMartin] by ChanServ |
08:40 | | Vornicus-Latens is now known as Vornicus |
09:45 | | gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has joined #Code |
09:45 | | mode/#code [+o gnolam] by ChanServ |
10:02 | | AnnoDomini [AnnoDomini@Nightstar-29265.neoplus.adsl.tpnet.pl] has joined #Code |
10:02 | | mode/#code [+o AnnoDomini] by ChanServ |
10:11 | | Attilla [~The.Attil@92.9.153.ns-3442] has joined #code |
10:11 | | mode/#code [+o Attilla] by ChanServ |
10:37 | | You're now known as TheWatcher |
10:39 | <@gnolam> | NYARGHL |
10:39 | <@Vornicus> | Nyarghl? |
10:46 | | Thaqui [~Thaqui@Nightstar-26082.jetstream.xtra.co.nz] has left #code [Leaving] |
10:49 | < Shoukanjuu> | This woman uses rolls of coins as ammunition for her gun, which seems to be the majority of her ARM. |
10:49 | < Shoukanjuu> | why did I not watch this sooner? o.o; |
10:51 | <@gnolam> | Yes. Nyarghl. |
10:52 | <@gnolam> | I am now convinved it's a driver bug. |
10:55 | <@gnolam> | Which means I have to go play the ATI lottery. |
10:57 | | * Shoukanjuu uses a self reference contradiction. |
11:00 | <@gnolam> | Hey, whaddayaknow - they claim to actually have fixed the bug that completely broke their drivers now. AFTER 8 MONTHS. |
11:00 | < Shoukanjuu> | \o/? |
11:02 | | You're now known as TheWatcher[D00m] |
11:03 | | * gnolam will never, ever buy ATI again. |
11:24 | | AnnoDomini [AnnoDomini@Nightstar-29265.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
11:26 | | AnnoDomini [AnnoDomini@Nightstar-28939.neoplus.adsl.tpnet.pl] has joined #Code |
11:26 | | mode/#code [+o AnnoDomini] by ChanServ |
11:47 | | Attilla_ [~The.Attil@92.9.153.ns-3442] has joined #code |
11:47 | | Attilla [~The.Attil@92.9.153.ns-3442] has quit [Ping Timeout] |
11:51 | | Attilla_ is now known as Attilla |
12:11 | | Myst [~Myst@Nightstar-29731.dsl.in-addr.zen.co.uk] has joined #code |
12:11 | | mode/#code [+o Myst] by ChanServ |
12:12 | <@Myst> | Hrm. |
12:12 | <@Myst> | In HTML, does it matter if I nest commands or not? That is, do <b><i>word</i></b> and <b><i>word</b></i> do the same thing? |
12:13 | < Shoukanjuu> | As far as I know, yes. |
12:13 | | AnnoDomini [AnnoDomini@Nightstar-28939.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
12:13 | <@Myst> | Thanks :) |
12:13 | < Shoukanjuu> | Let me run a test real quick just to make sure o: |
12:15 | | You're now known as TheWatcher |
12:15 | < Shoukanjuu> | It would probably help if I knew exactly how I was going to test it before I said that ._. |
12:16 | < Shoukanjuu> | It's safe to assume that it does. From what I think I know, it would bold the word, then italicize the word, or viceversa |
12:17 | | AnnoDomini [~farkoff@Nightstar-28939.neoplus.adsl.tpnet.pl] has joined #Code |
12:17 | | mode/#code [+o AnnoDomini] by ChanServ |
12:17 | < Shoukanjuu> | I know that mixing up the endings, that is to say, starting with b, i, and ending with i, b, ends with tehe same result |
12:17 | < Shoukanjuu> | So...No reason for basic commands like that not to work o: |
12:17 | <@Myst> | Thanks :) |
12:28 | <@gnolam> | That is incorrect. |
12:29 | < Shoukanjuu> | So I'm watching GitS:SAC because Shirow Masamune is doing the art for the FE1 remake. ...v_V |
12:29 | <@gnolam> | Myst: nesting matters. |
12:30 | <@gnolam> | <b><i>word</i></b> is the only proper way. |
12:30 | < Shoukanjuu> | Is it? Everything I tried net the same thing :/ |
12:30 | <@gnolam> | Did you perchance try in Internet Explorer? :P |
12:30 | < Shoukanjuu> | No, no I did not >_> |
12:31 | | * Myst shudders |
12:31 | <@gnolam> | Just because it might possibly render correctly does NOT mean it's valid HTML/XML. |
12:31 | < Shoukanjuu> | Understood. Sorry, Myst o: |
12:31 | <@Myst> | why'd you go and have to mention /that/ browser? ;) |
12:31 | <@Myst> | thanks, gnolam. I'd have never caught that. |
12:31 | <@gnolam> | (Where "correctly" == "how you want it to look") |
12:31 | < Shoukanjuu> | .... |
12:31 | < Shoukanjuu> | <__< |
12:31 | <@gnolam> | Myst: When in doubt, validate. |
12:32 | <@gnolam> | Myst: http://validator.w3.org/ |
12:32 | <@TheWatcher> | I note that both of you are right. <b><i></i></b> is required by the spec, but more than just IE will let it pass when using HTML4 doctype rather than XHTML |
12:33 | <@TheWatcher> | matched nesting is the correct way to do it, but mismatched will work, sometimes, depending |
12:33 | <@gnolam> | "sometimes, depending" being the operative words. And it might not in future versions. Invalid markup means, for the most part, undefined behavior. |
12:33 | <@TheWatcher> | Indeed |
12:34 | < Shoukanjuu> | So I suppose that, by doing what I did, it worked *this time* but with other variables, it might not |
12:34 | <@TheWatcher> | Yep |
12:35 | < Shoukanjuu> | If I hang around here long enough, something is bound to stick. |
12:36 | <@Myst> | hrm. Odd. Because then you have situations like |
12:36 | <@Myst> | <b><i>that is</b> wordy</i> ... which seems like it could only properly be written as |
12:36 | <@Myst> | <b><i>that is</i></b> <i>wordy</i>? |
12:36 | <@TheWatcher> | Or just <i><b>that is</b> wordy</i> |
12:36 | <@gnolam> | <i><b>that is</b> wordy</i>. |
12:37 | <@Myst> | but then, <b>gee <i>that is</b> wordy</i> ... |
12:38 | <@Myst> | but now I'm likely getting too abstract for my own good. I'll just be over here now. |
12:38 | <@TheWatcher> | yeah, that'd need <b>gee <i>that is</i></b> <i>wordy</i> |
12:39 | <@TheWatcher> | ... also, godsdamnit, I have a piece of apple skin stuck between my teeth, argh. |
12:39 | | * Myst hugs, provides toothpick |
12:40 | <@Myst> | lunch. That's an idea. |
12:40 | <@TheWatcher> | yes, don't do a me :) |
12:40 | < Shoukanjuu> | Breakfast. Good idea, here. |
12:40 | | * Shoukanjuu makes a fort save |
12:40 | < Shoukanjuu> | Maybe in an hour or so :/ |
12:42 | <@Vornicus> | Generally your best bet is to make your html as well-formed as possible |
12:43 | <@Vornicus> | Which means strict nesting. |
12:43 | <@TheWatcher> | (I just thank heaven that the HTML/XHTML specs are better written than the XML one >.>) |
12:45 | <@Vornicus> | I'm having a hard time figuring out how XML's specs aren't more than a couple pages long, with examples. |
12:46 | < Shoukanjuu> | Is it really as simple as it seems to be with that comment there, Vorn? |
12:46 | | * gnolam declares victory over the graphics module. |
12:47 | <@gnolam> | Now, for the physics... |
12:47 | < Shoukanjuu> | Careful. Be wary of the right wing o: |
12:47 | <@Vornicus> | The reason the spec is long is twofold: 1. the spec wirters can't write, and 2. there's some weirdass gotchas. |
12:47 | <@TheWatcher> | Bingo |
12:48 | < Shoukanjuu> | Ah. |
12:48 | < Shoukanjuu> | What? |
12:49 | < Shoukanjuu> | Why would the spec writers write if they *can't write* |
12:49 | <@Vornicus> | Because they're ostensibly prertty good at tech stuff |
12:50 | <@TheWatcher> | They can write english, they just can't write specifications. The XML 1.0 spec is littered with hideously bad content for a spec (including several invalid examples, and things discussed in text that are not specified in the EBNF) |
12:52 | < Shoukanjuu> | That's what I was referring to. |
12:52 | <@TheWatcher> | Several things in there are either nonsensical, or so specialist and borderline pointless that they should have been in an extension, not the main spec (having read chunks of the discussion that went on during the spec's development, several of the more weird 'features' are only there because one person in the discussion whined endlessly about needing it) |
12:54 | <@TheWatcher> | And I've no idea why they were allowed to write the spec, or how it passed in the state it is, but *shrug* |
12:55 | < Reiv> | ...And this is an RFC? |
12:58 | <@TheWatcher> | Technically, under W3C policies, the working group developing the specification has to "respond to all public comments" so, theoretically, yes. |
13:01 | < Reiv> | Ow. |
13:08 | | MyCatVerbs [~mycatverb@Nightstar-13709.lurkingfox.co.uk] has joined #code |
13:08 | | mode/#code [+o MyCatVerbs] by ChanServ |
13:29 | <@Vornicus> | blarg, my feature request was rejected. |
13:30 | <@TheWatcher> | ? |
13:30 | <@Vornicus> | I wrote an updated binary-search-and-insert module for Python, so that it could take the key/cmp/reverse set of arguments. |
13:31 | <@TheWatcher> | Aw :( |
13:32 | <@Vornicus> | It was rejected mainly because if you're doing multiple searches/inserts, key is often called repeatedly on the same particular objects, and that's bad. |
13:32 | <@Vornicus> | If I can... |
13:32 | <@Vornicus> | waaaaiiiit a second. |
13:33 | <@Vornicus> | What if I created a "bisectable list" class, that takes a key/cmp/reverse group as a constructor. |
13:34 | <@Vornicus> | Then I can cache keys for objects as they come in, and problem solved. |
14:04 | | * Reiv pauses, eyes the packages that were delivered to him |
14:04 | < Reiv> | What in the seven hells? |
14:04 | <@TheWatcher> | ? |
14:04 | < Reiv> | I think I just got given two video cards. |
14:05 | <@TheWatcher> | You know what that means? |
14:05 | <@TheWatcher> | four monitors time. |
14:05 | < Reiv> | Asus EN8600GT MAGIC and an XFX 8400GS. |
14:05 | < Reiv> | First off... which is better? |
14:05 | <@Vornicus> | I've never heard of either. |
14:06 | < Reiv> | 8400GS is, I think, the one I ordered |
14:06 | < Reiv> | I am now going through my order with a fine-tooth comb to make sure I didn't accidentally order something else to boot >_> |
14:06 | < Shoukanjuu> | Oops? >_> |
14:07 | < Reiv> | Weeeell... "XFX PV-T86S-WANG Video Card, GeForce 8400 GS, 256MB, DDR2, PCIe-16, DVI, HDTV, SLI ready" |
14:07 | < Reiv> | ^ Yep, ordered that one. |
14:07 | < Reiv> | No word on the other... thing, though. |
14:07 | < Shoukanjuu> | I was going to make a windows box eventually |
14:07 | < Reiv> | I mean, it seriously threw me. |
14:08 | < Reiv> | I thought it was the goddamn /motherboard/ the box is so big. |
14:08 | < Reiv> | erk. |
14:08 | < Shoukanjuu> | lol |
14:08 | | mode/#code [+o Reiv] by Reiv |
14:08 | <@Reiv> | http://www.silentpcreview.com/article767-page1.html - This is, apparently, it. |
14:09 | <@Reiv> | I am honestly baffled. I don't see it on my order. |
14:09 | < Shoukanjuu> | But it...said that you got it? |
14:09 | <@Reiv> | Well, it's got my name and address on the front... |
14:09 | < Shoukanjuu> | You can send it to me if it ends up on your doorstep without you paying for it |
14:09 | < Shoukanjuu> | Oh |
14:10 | < Shoukanjuu> | Well, you can send it to me and I'll pay the shipping? XD |
14:10 | | * TheWatcher notes that, at least in the UK, it's legal to retain unsolicited goods without charge >.> |
14:10 | <@Reiv> | ... hm. |
14:11 | <@Reiv> | Hey, TF! Is it better than my 1650 Pro? :p |
14:11 | <@TheWatcher> | snrk |
14:11 | <@Reiv> | (Whaaaaat? It's a valid question. I am eternally baffled by the goddamn geforce cards.) |
14:14 | < Shoukanjuu> | Legalities are so trivial o: |
14:15 | <@gnolam> | *hurr hurr hurr*WANG*hurr hurr hurr* |
14:15 | < Shoukanjuu> | I never really gave it a thought ,about unsolicited goods |
14:15 | < Shoukanjuu> | If I found something, it was mine |
14:16 | <@gnolam> | http://en.wikipedia.org/wiki/Comparison_of_ATI_Graphics_Processing_Units#Radeon_ R500_.28X1xxx.29_series |
14:16 | <@gnolam> | http://en.wikipedia.org/wiki/Comparison_of_Nvidia_Graphics_Processing_Units#GeFo rce_8_series |
14:18 | <@Reiv> | gnolam: Cheers. |
14:18 | <@Reiv> | Could you do me a favor and explain it for me? It's 1AM here and the lines of numbers are a bit fuzzy. >.> |
14:19 | <@Reiv> | (Yeah, I'm going to bed. Was planning to an hour ago before I ran into this slight confusion.) |
14:19 | <@Reiv> | I do seem to vaugely recall that GT stands for the budget line in cards, though. |
14:20 | < Shoukanjuu> | Well, if you decide you don't want/need it. I'll take it. Just throwing that out there. Again. |
14:20 | < Shoukanjuu> | :P |
14:21 | <@Reiv> | Thanks. I get it. |
14:21 | <@Reiv> | I'm just trying to work out whether the one I have is better than the one still sitting in front of me, or otherwise. |
14:25 | <@TheWatcher> | Reiv: the 8400GS is better than the 1650 pro. The 8600GT is better than the 8400GS |
14:26 | <@Reiv> | TW: Oho, reeeaaally... |
14:26 | < Shoukanjuu> | \o/! |
14:27 | < Shoukanjuu> | I have a feeling that Reiv is being bribed. |
14:27 | <@Reiv> | hm. That would potentially mean ... *snerk* |
14:27 | <@Reiv> | I'll have a spare graphics card that isn't totally obsolete for a change. |
14:27 | <@Reiv> | Second option: See if I can return the thing for a refund~ |
14:28 | <@TheWatcher> | (faster clocks, more memory, higher memory bus bandwidth, more pipelines...) |
14:28 | <@Reiv> | (The clock looked to be slightly slower, so I wasn't sure) |
14:28 | < Shoukanjuu> | Reiv is being bribed. He so is. |
14:29 | <@TheWatcher> | (the 8600GT also has twice the memory of the 8400GS) |
14:30 | <@TheWatcher> | (oh wate, said that, what comes of marking msc thesis, reading irc, and checking specs at the same time) |
14:33 | | * Reiv tries to remember how much his 1650 Pro had. Vaugely remembers 512, but may be wrong, and doesn't want to dig out the box to check just at the moment. Given it's downstairs in the garage, and all. >_> |
14:35 | | * Shoukanjuu rolls a fortitude save |
14:35 | | * Shoukanjuu wins over laziness and crawls int othe kitchen to find food |
14:59 | | You're now known as TheWatcher[afk] |
15:36 | | gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has quit [Ping Timeout] |
15:49 | | gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has joined #Code |
15:49 | | mode/#code [+o gnolam] by ChanServ |
15:49 | <@gnolam> | Oh yeah. Forgot to open the windows. |
16:07 | <@jerith> | So, I need to detect if a file I'm watching has been rotated. Any ideas? |
16:07 | <@jerith> | I can't keep the file handle open. (This is for when my app goes away and comes back later.) |
16:13 | <@ToxicFrog> | What's the underlying problem? |
16:14 | <@jerith> | I'm watching a logfile. |
16:15 | <@jerith> | Basically, parsing it for events. |
16:15 | <@ToxicFrog> | And you want to follow it if it gets rotated, or switch to the new one? |
16:15 | <@jerith> | Yes. |
16:15 | <@ToxicFrog> | Which? |
16:15 | <@jerith> | Oh, switch to the new one. |
16:16 | <@jerith> | If I'm running when it gets rotated, I can check that the inode of the path is not the same as the inode of my open file handle. |
16:17 | <@jerith> | On startup, I need to see if the current file is the one I was reading (in which case I continue where I left off) or not (in which case I start at the beginning). |
16:18 | <@jerith> | The idea is to never read duplicates if I can help it and miss as few events as possible. |
16:18 | <@jerith> | Obviously I risk missing events (well, lines in the log) if it's rotated while I'm down. |
16:28 | | Attilla [~The.Attil@92.9.153.ns-3442] has quit [Ping Timeout] |
16:31 | | Attilla [~The.Attil@92.9.153.ns-3442] has joined #code |
16:31 | | mode/#code [+o Attilla] by ChanServ |
17:21 | | Syloqs-AFH [Coder@Admin.Nightstar.Net] has quit [Connection reset by peer] |
17:22 | | Syloq [Syloq@Admin.Nightstar.Net] has joined #code |
17:22 | | Attilla [~The.Attil@92.9.153.ns-3442] has quit [Ping Timeout] |
17:23 | | Attilla [~The.Attil@92.9.153.ns-3442] has joined #code |
17:23 | | mode/#code [+o Attilla] by ChanServ |
17:23 | | Syloq is now known as Syloqs-AFH |
19:15 | | AnnoDomini [~farkoff@Nightstar-28939.neoplus.adsl.tpnet.pl] has quit [Quit: What can change the nature of a man?] |
19:20 | | AnnoDomini [AnnoDomini@Nightstar-28939.neoplus.adsl.tpnet.pl] has joined #Code |
19:20 | | mode/#code [+o AnnoDomini] by ChanServ |
19:32 | | You're now known as TheWatcher |
19:42 | | unenana [~unenana@Nightstar-16477.w90-31.abo.wanadoo.fr] has joined #code |
19:44 | | unenana [~unenana@Nightstar-16477.w90-31.abo.wanadoo.fr] has quit [Quit: ] |
20:27 | | Doctor_Nick [~nick@Nightstar-23917.hsd1.fl.comcast.net] has quit [Ping Timeout] |
21:14 | | Doctor_Nick [~nick@Nightstar-23917.hsd1.fl.comcast.net] has joined #code |
22:03 | | DiceBot [~Reiver@Nightstar-11188.xdsl.xnet.co.nz] has quit [Ping Timeout] |
22:04 | | Reiv [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
22:04 | | You're now known as TheWatcher[T-2] |
22:06 | | You're now known as TheWatcher[zZzZ] |
22:17 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
22:17 | | mode/#code [+o Reiver] by ChanServ |
22:17 | | DiceBot [~Reiver@Nightstar-11188.xdsl.xnet.co.nz] has joined #Code |
23:01 | | Vornicus is now known as Vornicus-Latens |
23:46 | | AnnoDomini [AnnoDomini@Nightstar-28939.neoplus.adsl.tpnet.pl] has quit [Quit: There is strength not only in *knowing* the self, but *knowing* how to bring it forth in others.] |
--- Log closed Fri Jul 18 00:00:46 2008 |