code logs -> 2008 -> Thu, 17 Jul 2008< code.20080716.log - code.20080718.log >
--- 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
code logs -> 2008 -> Thu, 17 Jul 2008< code.20080716.log - code.20080718.log >