code logs -> 2010 -> Fri, 21 May 2010< code.20100520.log - code.20100522.log >
--- Log opened Fri May 21 00:00:06 2010
00:00
< Namegduf>
I mean, ideally, you'd have a framework core, then a client on top of that, and you could have your stuff hook in and just depend on the framework without the rest of the client, or at least not have any client concerns messing with your use of the framework it's based on
00:00 Derakon [Derakon@Nightstar-1ffd02e6.ucsf.edu] has quit [[NS] Quit: Leaving]
00:00
< Namegduf>
But most are a client first and framework second, if you know what I mean, and not really split down the middle into separate components at all.
00:00
<@ToxicFrog>
celticminstrel: mine accepts both /msg and /privmsg. *shrug*
00:01
< celticminstrel>
Oh. Well, whatever.
00:01
<@ToxicFrog>
Namegduf: that's pretty much the point of xchat-text
00:03
< Namegduf>
ToxicFrog: But is it a frontend to an "xchat core" that also includes a lot of client functionality, or to just an IRC framework and nothing else?
00:04
< celticminstrel>
I'd say it contains client functionality.
00:04
< celticminstrel>
It's just not a very good client.
00:04
< Namegduf>
I'm not saying it isn't passable
00:05
< Namegduf>
I'm saying there's like 1001 bot frameworks out there and latching onto a client doesn't seem the best bet, architecturally.
00:05
< celticminstrel>
Is there a way for the script to execute itself and then exit?
00:06
< celticminstrel>
So that I don't have to manually shut down and restart it when I want to change something?
00:06
< celticminstrel>
(Or another solution for the same.)
00:06
<@ToxicFrog>
Namegduf: where do you draw the line between "client stuff" and "bot stuff"?
00:07
< Namegduf>
ToxicFrog: Anything (at all) related to the UI of a program, CLI or GUI. Anything relating to stripping or pretty printing of things for user display (although if provided as library functions I guess they're commonly needed enough to be useful)
00:08
< Namegduf>
"settings" is another fun one
00:09
< Namegduf>
At least where said settings are not really IRC connection parameters, but instead relate to functionality or formatting of a client as a whole.
00:09
< Namegduf>
Frameworks don't generally need internal persistent settings.
00:10
<@ToxicFrog>
Namegduf: stripping/prettyprinting are provided as library calls, and print stuff goes to stdout. All the UI stuff is gone; the xchat_gui_* functions are still available (so that plugins that depend on them will still load) but do nothing when called.
00:10
< Namegduf>
CLI stuff?
00:11
< Namegduf>
(gui_ functions existing but doing nothing is ugly as hell, they should be implemented as an extension ON a framework, not in the framework but with a dummy implementation, if done cleanly)
00:11
< Namegduf>
(But... not really fatal)
00:12
<@ToxicFrog>
the gui_ stuff is still there so that the ABI is identical between the text and full versions.
00:12
< Namegduf>
Why does a framework have a "gui version"
00:12
<@ToxicFrog>
...
00:13
< Namegduf>
I think that pretty much hits it on the head.
00:13
< Namegduf>
It's architectually a client with textual and graphical versions which can sorta pass as a framework
00:13
< Namegduf>
Not a client built on an architecturally separate framewor
00:13
<@ToxicFrog>
Aaargh
00:13
<@ToxicFrog>
ABI compatibility is useful because it lets you use libraries such as the Scheme interpreter even in a headless bot
00:14
<@ToxicFrog>
When they would otherwise need to be recompiled from source or else fail with a linker error when you try to load them
00:15
<@ToxicFrog>
I'm not sure why you consider this a problem
00:16
<@ToxicFrog>
Also, what were you asking about WRT "CLI stuff" earlier?
00:16
<@ToxicFrog>
It reads commands from stdin, it writes output to stdout.
00:17
< Namegduf>
curses, formatting of user lists, anything really formatted for user consumption rather than machine processing.
00:18
<@ToxicFrog>
<ToxicFrog> It reads commands from stdin, it writes output to stdout.
00:18
<@ToxicFrog>
That's it. No curses.
00:19
< Tarinaky>
"Conjures the Great Duke of Hell, Allocer who speaks to a regiment of enemies, convincing them to devour the enchanted flesh of the fallen, driving them mad with rage and hunger. After the immediate feeding frenzy the surviving troops launch at the closest living thing, with no regard for friend or foe." << Does this match the Steampunk mecha in cool? :/
00:20
<@ToxicFrog>
what
00:21
< Tarinaky>
Is that description of a spell as cool as gattling-gun carrying steampunk mecha?
00:21
< Namegduf>
Give said duke a guitar.
00:21
< Tarinaky>
Namegduf: That's Amdusias' schtick.
00:22
< celticminstrel>
...what? Lists have pop() but not push()?
00:31
<@Vornicus>
append()
00:39
<@ToxicFrog>
Namegduf: anyways. It's cross-platform, it's cross-language, it's well documented and it actually does all the stuff I want in a framework.
00:39
< Namegduf>
"cross-language" is kinda unusual and interesting.
00:40
<@ToxicFrog>
Given that most IRC frameworks either don't do nearly enough ("we implemented parse_irc_message, that makes it a framework right?"), or have no documentation, or have serious portability issues, I think I can live with a few xchat_gui_* stubs in the API.
00:40
< Namegduf>
Aside that one, every simple Python/Perl IRC framework I've seen is portable.
00:40
<@ToxicFrog>
Especially since they're there so that I can load plugins originally developed for the xchat-as-graphical-IRC-client into the bot, some of which are actually useful.
00:40
< Namegduf>
POE::Component::IRC is pretty complete on all of those, actually
00:41
< Namegduf>
It's one of the reasons I find myself going back to Perl unwillingly.
00:42
< Namegduf>
POE::Component::IRC + Some other Perl modules modeling/handling the problem area + glue == IRC bot
00:42
< Namegduf>
*IRC bot doing something actually useful
00:42
<@ToxicFrog>
"cross-language", in this case, means "consistent, officially supported API for C, Perl, Python, and TCL; unofficial support for Ruby, Lua, Lisp, JavaScript, and probably a few others"
00:42
< Namegduf>
That is kinda neat.
00:43
<@ToxicFrog>
I've been toying with the idea of adding bash support.
00:43
<@ToxicFrog>
Just to see if it can be done.
00:43
< Namegduf>
Twisted.
00:43
<@ToxicFrog>
All of those except C, I note, originated as plugins for the graphical client.
00:44
<@ToxicFrog>
Most of them still are, some of them are now built into the core.
00:44
< Namegduf>
Well, I guess my issue is
00:44 You're now known as TheWatcher[T-2]
00:44
< Namegduf>
Architecturally, it seems the "framework" is the same code as the graphical client compiled with different bits on and off
00:45
< Namegduf>
Instead of having a framework which all the plugins connect to, THEN the GUI connects to itself
00:45
< Namegduf>
I mean, I'm the first to complain when things are modularised too heavily, but...
00:45
< celticminstrel>
Vornicus: Yeah, I momentarily forgot about that. 9_9
00:45
<@ToxicFrog>
AIUI, it's basically divided into two parts, "core" and "frontend"
00:45
< Namegduf>
It sounds quite useful, though.
00:46
<@ToxicFrog>
There's two implementations of frontend: one using GTK+, and one that basically aliases everything to printf()
00:46
<@ToxicFrog>
And does nothing else.
00:46 You're now known as TheWatcher[zZzZ]
00:46
<@ToxicFrog>
xchat uses the former, xchat-text uses the latter.
00:47
<@ToxicFrog>
I freely admit that it's more kludgy than having the core implemented as a library which the GUI then links against; in particular, the use of fe_*.
00:47
< Namegduf>
Right.
00:47
< Namegduf>
It sounds useful, just... kinda kludgy and monolithic.
00:48
<@ToxicFrog>
However, it works. And I'd rather have a kludgy but well-documented and useful tool than an elegant one that for whatever reason (nonportable, no documentation, missing key features, written in Perl...) is not useful to me.
00:48
< Namegduf>
I'm surprised all the Python ones suck.
00:48
< celticminstrel>
...okay. Overriding in Python...
00:49
<@ToxicFrog>
And while I would like to have a libxchatirc that doesn't have any leftover GUI cruft in it, writing actual bots (or other projects entirely) is more fun than writing that is.
00:49
< Namegduf>
I probably wouldn't be bothered too much by lack of framework in a decent language, but C would hurt
00:49
< celticminstrel>
superclass(self).func()?
00:49
<@ToxicFrog>
Well, IIRC we found three python ones while looking earlier; one is undocumented, one is missing rather important features like flow control, and one is xchat.
00:50
< Namegduf>
I wrote a Go "framework" in an afternoon once to learn the language.
00:50
< Namegduf>
(Other people did better, proper ones later)
00:50
<@ToxicFrog>
And yeah, you may have noticed that I don't write anything in C these days except extension/translation libraries for high level languages
00:50
< Namegduf>
C is very nice with the appropriate libraries present
00:51
<@ToxicFrog>
I think we have drastically different definitions of "very nice".
00:51
< celticminstrel>
Actually, both were undocumented.
00:51
<@ToxicFrog>
Closures or gtfo.
00:51
< Namegduf>
If you're just dealing with the stdlib and POSIX functionality and trying to build up from there
00:51
< Namegduf>
I don't find myself wanting closures in C; they feel weird because of what they do to variable extant
00:52
< Namegduf>
They're nice in higher level languages, though.
00:52
<@ToxicFrog>
I'm not talking about libraries; the language itself is deficient for my purposes and by the time you've bolted enough onto it to fix that you might as well have just written an interpreter for a HLL.
00:52
< Namegduf>
If you say so; it is a pretty poor language by modern standards in a lot of ways, for two categories of reason;
00:53
< Namegduf>
One is that it is only a step up from portable assembly, and the other is the bizarre and historically stupid decisions made that kludge it up
00:53
< Namegduf>
int* foo, bar: I'm looking at you
00:54
< Namegduf>
I find it quite tolerable, though, because almost everything is explicit and it's as a result very easy to reason with.
00:54
<@McMartin>
Semi-standardized ABI decisions that make tail call elimination basically impossible: Also something to glare at
00:54
<@McMartin>
Mmm. I'd quibble on that last bit without some extra constraints.
00:54
<@ToxicFrog>
Stuff I get really uncomfortable without: closures, lambdas, higher-order functions, block scope, macros, Haskell's type system, tail call optimization
00:55
<@McMartin>
Things like precise destructors (what I think TF is using 'block scope' to mean here) are traditionally very hard to get right in C.
00:55
<@ToxicFrog>
Of those, C has, um, block scope, really weaksauce macros, really ugly higher-order functions.
00:55
< Namegduf>
I hate macros.
00:55
< Namegduf>
Even in C.
00:55
<@ToxicFrog>
McMartin: I actually just mean block scope, as opposed to Python's function scope or BASIC's global scope.
00:56
<@ToxicFrog>
Precise destructors are nice but I don't miss them when I don't have them.
00:56
< Namegduf>
Metaprogramming is a very nice way to make your program become very annoying to read
00:56
<@ToxicFrog>
Metaprogramming is a very nice way to shape a DSL for whatever the task at hand is.
00:56
<@McMartin>
C doesn't have proper higher-order functions. It has function pointers, which are about half of what you need.
00:56
< celticminstrel>
...okay, what does the = or @ at the start of a NAMES response mean? Channel mode or something?
00:56
< Namegduf>
Metaprogramming in a *separate language* means you're actually learning a second, small language into the deal, too.
00:57
<@McMartin>
Too many APIs I need have paired methods required for correctness for me to be able to deal happily without precise destructors/using clauses/other enforcement mechanisms.
00:57
< Namegduf>
THe big issue with macros is that in order to mentally parse the code, you must know what the macro does.
00:57
< Namegduf>
Some, like a weird "FOREACH" I once saw, are thus quite okay
00:57
<@ToxicFrog>
celticminstrel: check RFC1459, I don't remember offhand
00:58
< Namegduf>
You can pretty immediately see exactly what said macro is doing.
00:58
<@ToxicFrog>
Namegduf: ok, but this is just a variation on "nondescriptive names are bad", which is true whether you're using macros or not
00:58
< Namegduf>
As a way of implementing a DSL, I could see them, too
00:58
<@McMartin>
Yeah
00:58
< Namegduf>
My real issue is *per program macros*
00:58
<@McMartin>
I know of several cases where the "DSL" was just a perl script that did smarter "C extensions" for that program
00:58
<@ToxicFrog>
And bear in mind that by "macro" I don't mean cpp's anemic capabilities, but stuff like Scheme's direct AST translation
00:58
< Namegduf>
Macros defined as a shortcut within a specific program
00:59
< Namegduf>
I'm afraid I only know cpp's capabilities.
00:59
< Namegduf>
Of the two.
00:59
<@McMartin>
cpp is the worst of call by name and lexical hackjobbery
00:59
<@ToxicFrog>
Yeah, when I think "macro" I am thinking "the ability to modify the language definition itself at runtime"
00:59
< Namegduf>
My real complaint is people transforming the language within every specific program or within specific files to make things "prettier" or to define repeated sections instead of using a function call
01:00
<@McMartin>
Hm. That latter depends on code provenance
01:00
<@ToxicFrog>
One of the tutorial examples for Scheme's macro system changes it from using () to organize code to using Python-style indentation.
01:00
<@McMartin>
In C++, there's no excuse, because inline keywords exist
01:00
< Namegduf>
In C, there's also no excuse
01:00
< Namegduf>
Because if your compiler does not support inlining
01:00
<@ToxicFrog>
Two of the examples for Lua's are adding try/catch blocks and pattern matching.
01:00
<@ToxicFrog>
That's the kind of thing I'm talking about.
01:00
< Namegduf>
Then you really, really should just FIX THE COMPILER instead of hacking up your program
01:00
<@McMartin>
Not all devs have that luxury
01:01
< Namegduf>
Is the compiler closed source?
01:01
< Namegduf>
Note: I see this a lot outside of performance critical code.
01:01
<@McMartin>
If they're a library dev and want to be able to say "we work with acceptable performance with compilers X Y Z" they don't get to modify it even if it's open.
01:01
< Namegduf>
Hmm, I guess.
01:02
< Namegduf>
That case counts.
01:02
<@McMartin>
There are limits.
01:02
<@McMartin>
The autotools have a similar issue with Bourne Shell implementations of various ages, and that's well past my pain threshold
01:02
< Namegduf>
In terms of real macros/language redefinition, I'll say that it's okay so long as people don't treat it the way they treat macros.
01:02
< celticminstrel>
...it's not in RFC1459...
01:02
<@McMartin>
Also, re: DSLs and syntax macros...
01:02
< celticminstrel>
Well, it's probably not important...?
01:03
< Namegduf>
If you treat every redefinition as "I am changing the language" then that's okay. If you proceed to go on and make it ungodly complex
01:03
<@McMartin>
If what you're really presenting is a DSL, but it's secretly a modified version of a pre-existing language using that language's own tools, more power to you
01:03
< Namegduf>
Right.
01:03
<@McMartin>
Patching that into some other program into that language is the sin, not making the DSL to begin with
01:04
<@ToxicFrog>
celticminstrel: it's probably some wacky server-specific extension that most clients ignore, then
01:04
<@McMartin>
Though if you do it right, DSLs as a partial implementation strategy are also fine, of course (hi, every game with interesting maps and/or NPCs ever)
01:04
< Namegduf>
It's channel modes.
01:04
< Namegduf>
@nick indicates they have the prefix @ and so forth.
01:04
<@ToxicFrog>
Namegduf: No, I think he means:
01:05
< Namegduf>
Okay
01:05
<@ToxicFrog>
>> :Deepthought.NY.US.Nightstar.Net 353 ToxicFrog = #code :gnolam Syloqs-AFH Alek PinkFreud @McMartin Namegduf TheWatcher[zZzZ] @jerith @Vornicus Rhamphoryncus SmithKurosaki Serah celticminstrel @Derakon[AFK] EvilDarkLord @Kazriko @ToxicFrog ~@Reiver Tarinaky Reiv[Graduate] Thaqui cpu
01:05
<@ToxicFrog>
What's the "="?
01:06 * Namegduf looks for clarification
01:07
< gnolam>
Oi. What's this highlighting all about?
01:08
< Namegduf>
this->IsModeSet('s') ? '@' : this->IsModeSet('p') ? '*' : '='
01:08
< Namegduf>
That is what it means
01:08
< celticminstrel>
ToxicFrog = #code :...
01:08
< celticminstrel>
So, @ means secret?
01:08
< Namegduf>
Yes.
01:08
< Namegduf>
And * private.
01:08
< Namegduf>
And = nothing.
01:08
< celticminstrel>
Thanks.
01:08
< Namegduf>
I don't know where that's standardised, if at all, so I'd be wary of counting on it
01:08
< Namegduf>
But that's the code in InspIRCd
01:11
< Namegduf>
Looks like Charybdis/ShadowIRCd do the same
01:11
< Namegduf>
Which probably implies that ircd-seven does, too.
01:11
< Namegduf>
I don't feel like looking at uglier IRCDs which I don't have at hand.
01:12
<@ToxicFrog>
It's not a formal standard, but it's probably a de facto standard by now.
01:13
< Namegduf>
Are you doing this from your connection, or from your bot's?
01:14 Derakon[AFK] is now known as Derakon
01:14
< Namegduf>
Doesn't look like it's related to NAMESX, which was what I was thinking.
01:15
< Namegduf>
Aha!
01:15
< Namegduf>
RFC 2812 defines it
01:15
< Namegduf>
It's normally wrong, possibly very wrong, to treat 2812 as authoritative
01:15
< Namegduf>
It was from the time where IRCnet were basically wandering off and writing their own crap as RFC and everyone implementing it ignored them
01:15 * celticminstrel fails to find an explanation of which characters are allowed in nicknames...
01:15
< Namegduf>
But some bits of their stuff are applied.
01:16
< Namegduf>
Explanations are not going to be forthcoming.
01:16
< Namegduf>
:P
01:16
< celticminstrel>
I know letters, digits, and underscores...
01:16
<@McMartin>
Dashes are OK
01:16
< Namegduf>
Oh, you mean a list.
01:16
<@McMartin>
Square brackets seem to be too
01:16
< Namegduf>
Not an explanation as to why.
01:16
< celticminstrel>
Also a bunch of special characters like ` [ ] |
01:17
< celticminstrel>
Namegduf: Do you happen to have such a list, or should I try changing my nick and see what happens?
01:17
< Namegduf>
celticminstrel: Hold on
01:18
<@ToxicFrog>
celticminstrel: look under "message format in pseudo-bnf"
01:18
< Namegduf>
if ((*i >= 'A') && (*i <= '}'))
01:18
< Namegduf>
Ah, wait.
01:18
<@ToxicFrog>
<nick> ::= <letter> { <letter> | <number> | <special> }
01:18
< Namegduf>
Comments!
01:18
< Namegduf>
/* "A"-"}" can occur anywhere in a nickname */
01:18
<@ToxicFrog>
<special> ::= '-' | '[' | ']' | '\' | '`' | '^' | '{' | '}'
01:18
< Namegduf>
/* "0"-"9", "-" can occur anywhere BUT the first char of a nickname */
01:18
< Namegduf>
There you go.
01:19
< celticminstrel>
....hehe, two people looking it up. Thanks.
01:19 * Namegduf has the source to hand, and grep
01:20
< Namegduf>
Took me a few to find IsNickHandler::Call, though
01:20 * ToxicFrog has a copy of RFC1459 and a decent sense of how it's laid out
01:22
< Namegduf>
Hmm.
01:22
< Namegduf>
Is it normally possible in Linux to pass file handles between processes?
01:22
<@Vornicus>
No.
01:22
< Namegduf>
How does irssi handle upgrading on the fly?
01:23
<@Vornicus>
exec()
01:23
<@Vornicus>
essentially replace one program with another... with the original's memory in place.
01:23
< Namegduf>
And its handles?
01:23
<@McMartin>
exec means it's not "between processes"
01:23
< Namegduf>
Makes sense.
01:23
<@McMartin>
It's the same process, just overwritten
01:24
< Namegduf>
So you'd need to let the new copy of yourself find out what it had, basically.
01:24
<@Vornicus>
How the shit that manages to work, I don't know, but it's one of the deepest magics out there.
01:25
< Namegduf>
Interesting.
01:25
<@McMartin>
Hm, I don't have man pages on this system
01:26
<@McMartin>
I'm not sure if POSIX has an equivalent to Win32's DuplicateHandle(), which will let you create a version of a handle that some other process can use
01:27
<@McMartin>
It wouldn't surprise me either way, tbh; POSIX is a little less hardcore about everything being the same master handle type
01:29
<@Vornicus>
But for instance X-COM uses exec to hop between geoscape and battlescape modes.
01:40 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?]
01:41
< celticminstrel>
...why does enumerate() not work as expected on dictionaries?
01:41
<@Vornicus>
What do you expect?
01:42
< celticminstrel>
I expected it to return a set of (key, value) pairs, but it returns a set of (index, key) pairs.
01:42
<@Vornicus>
The default dictionary iterator gives keys only
01:42
<@Derakon>
You want foo.iteritems()
01:42
<@Vornicus>
if you want to enumerate all items, use dict.iteritems()
01:42
<@Derakon>
\o/
01:42
< celticminstrel>
Oh.
01:42
<@Vornicus>
CURSE YOUR FINGERS
01:43
< celticminstrel>
Well, I guess I got confused because I've been using PHP recently.
01:43
<@Derakon>
Poor lad~
01:43
<@Vornicus>
If you /also/ want a numbering, enumerate(my_dict.iteritems() will give (index, (key, value))
01:43
< celticminstrel>
Actually, I just wanted the keys.
01:43
<@Vornicus>
but the dictionary items will come out in no particular order.
01:44
< celticminstrel>
Order doesn't matter.
01:44
<@Vornicus>
Good, cuz you don't get any.
01:45
<@Derakon>
If you just want the keys, then do foo.keys()
01:45
<@Derakon>
And yeah, dicts are unordered.
01:45
<@Vornicus>
well, that gives a list of keys.
01:45
<@Vornicus>
If you intend on just iterating over them, use just for k in foo:, or for k in foo.iterkeys():
01:45
<@Derakon>
Mm, point.
01:46
< celticminstrel>
Yeah, I just wanted 'for x in foo'.
01:47
<@Derakon>
Man, "for (x, y) in foo" could really confuse a Python newbie who didn't realize you were using tuples as keys...
01:48 * Vornicus has done for a, (b, (c, d), e) in foo. Once. And then decided that was crazy.
01:49
<@Derakon>
;_;
01:49
< celticminstrel>
Wait, tuples are hashable?
01:49
<@Vornicus>
Tuples are hashable.
01:49
<@Derakon>
Pretty much anything that isn't mutable is hashable.
01:50
<@Vornicus>
So, in the standard list: numbers (all types), strings, tuples, frozensets, booleans, and None.
01:54
<@Vornicus>
(yes you can use None as a key in a dictionary.)
01:55
<@Derakon>
...does Python recognize the empty tuple as a valid object?
01:55
<@ToxicFrog>
Lists aren't hashable?
01:55
<@Vornicus>
Yes.
01:55
<@Derakon>
Lists are mutable.
01:55
<@Derakon>
Ergo, not hashable.
01:55
<@Vornicus>
Lists are not hashable; they are mutable, so using them as dictionary keys is an exercise in madness.
01:56
<@Derakon>
You can make custom mutable objects that are hashable and behave just like lists, though, if you feel like a little Lovecraft.
01:56
<@ToxicFrog>
I don't consider the conclusion to automatically follow from the premises; there appears to be an implicit additional premise that the hash of an aggregate object must be modulated by its components.
01:56
<@Vornicus>
That is correct.
01:57
<@Vornicus>
Or, more precisely: the hash must be equal for objects that compare equal.
01:58
<@Vornicus>
Since lists compare equal if their contents are equal, then a hash (which gets stored, remember!) must always come from those contents. But since lists are mutable, a hash on them will change -- and stored hashes of that list will go stale.
01:59
<@ToxicFrog>
Aah.
01:59
<@ToxicFrog>
I was unaware of the equality constraint.
01:59
< Rhamphoryncus>
So I've noticed that my computer (and my dad's) are receiving about 30 kB/s on the LAN. netstat lists *no* TCP or UDP connections on his. I'm not running downloads on mine. Any suggestions for diagnosing it?
02:00
<@Vornicus>
It's the point of a hash.
02:01
<@ToxicFrog>
Vornicus: no, I mean the "lists are == if their contents are ==" constraint
02:01
<@Vornicus>
ah
02:04
<@Vornicus>
Technically you /can/ make mutable objects which hash - but none of the mutable properties may contribute to either equality or the hash.
02:05 * ToxicFrog nods
02:08 * Rhamphoryncus wonders if CPS is a typo for BPS (bytes per second?)
02:08
<@ToxicFrog>
Characters per second.
02:09
< Rhamphoryncus>
ugh stupid promiscuous mode
02:09
< Rhamphoryncus>
thanks
02:09
< Rhamphoryncus>
why not B/s like is normal? x_x
02:10
<@Vornicus>
Citizen: you are now charged with fifth degree nonfeasance. Please report to the nearest Civil Protection unit for processing.
02:11
<@ToxicFrog>
They aren't always the same thing.
02:11
< Rhamphoryncus>
difference is?
02:11
< Rhamphoryncus>
ettvm10.ttv.telus.net,4545 239.192.10.33,4545 udp 2461K 29K
02:12
< Rhamphoryncus>
that is the culprit. Related to the tv service somehow
02:12
<@McMartin>
"nonfeasance"?
02:13
<@Vornicus>
Overwatch says a lot of ridiculous things.
02:14
<@McMartin>
If my dog latin is right, that's "fifth degree not doing anything"
02:14
<@Derakon>
I'm looking forward to HL2 being ported to OSX...
02:15
<@Vornicus>
"Individual, you are charged with capital malcompliance. Anti-citizen status approved."
02:16
< celticminstrel>
You mean it isn't yet?
02:16
< celticminstrel>
Derakon?
02:16
<@Derakon>
Not TMK.
02:17
<@Vornicus>
Not yet.
02:17
<@Derakon>
It'll probably be released soonish, though.
02:17
<@Vornicus>
It'll be showing up soon. Next few weeks.
02:17
< celticminstrel>
I would've thought that since Portal was ported that Half Life 2 would have been ported too.
02:17
<@Derakon>
Yeah, but they're spreading out the releases to get more cash.
02:18
< celticminstrel>
I see.
02:18
<@McMartin>
I suspect that Portal is the final beta test for Mac Source.
02:19
< Namegduf>
I'm half looking forward to native Linux.
02:19
< Namegduf>
Only half because I WINE it, and will continue to WINE it for Audiosurf.
02:19
<@McMartin>
Mmm, Audiosurf
02:19
<@Vornicus>
Thing I didn't know:
02:19 * McMartin has been working on some Audiosurf superplay videos.
02:19
<@Vornicus>
GladOS and Overwatch are /both/ Ellen McLain.
02:20
<@McMartin>
Ellen McLain is the only VA with parts in every Orange Box game.
02:20
<@McMartin>
She is also The Administrator.
02:20
<@Derakon>
McM: superplay as in using prerecorded input?
02:20
<@Vornicus>
She's not in Episode 2
02:20
<@McMartin>
Derakon: No, just Being Good At It.
02:20
<@Derakon>
Ah, righto.
02:20
< Rhamphoryncus>
6.2. The IPv4 Organization Local Scope -- 239.192.0.0/14
02:20
< Rhamphoryncus>
239.192.0.0/14 is defined to be the IPv4 Organization Local Scope,
02:20
< Rhamphoryncus>
and is the space from which an organization should allocate sub-
02:20
< Rhamphoryncus>
ranges when defining scopes for private use.
02:20
<@Derakon>
(One expansion of TAS is Tool-Assisted Superplay)
02:21
<@McMartin>
Yeah, but AIUI Superplay is "you're watching them because they're good at it/are doing something unusual as their challenge" as opposed to, say, for the commentary or as an example of what the ordinary experience of the game is like)
02:23
<@ToxicFrog>
Rhamphoryncus: one character is not always one byte - see any wide character encoding.
02:23 * Derakon nods.
02:23
<@ToxicFrog>
That said, a lot of stuff that reports CPS is actually counting BPS, and thus becomes wrong when you start stuffing unicode data through it~
02:24
<@McMartin>
I think part of the problem with "BPS" is that it's too similar to "bps", which is a different number.
02:24
<@McMartin>
Traditionally off by a factor of 8 or so.
02:25
<@Vornicus>
...wait, yes she is. She talks when you're in the hut after talking to The Magnussen.
02:39
< Rhamphoryncus>
one character is often not one character. See unicode grapheme clusters :P
02:40 * Vornicus tries that again anyway
02:40
< Rhamphoryncus>
This was a network diagnostic tool. It had *nothing* to do with the text displayed to the end user
02:42
<@Vornicus>
r?o?c?k?d?o?t?s?
02:43
<@McMartin>
My terminal can't handle that =(
03:07
< Rhamphoryncus>
I just get question marks too. Probably not using utf-8 ;)
03:10
< celticminstrel>
...
03:14
<@McMartin>
I am using UTF-8, but my terminal emulator can only handle the BMP.
03:14
<@McMartin>
And noncombining chars.
03:14
< Namegduf>
That seems likely to be the case for me, too.
03:16
<@McMartin>
Observe: R?ckd?ts
03:19
<@Vornicus>
It even ate the ?s, which are technically latin extended - you're stuck in /ASCII/, apparently
03:20
< Namegduf>
McMartin's looked fine here.
03:20
<@Vornicus>
Man, stuff's getting eaten everywhere
03:20
<@Vornicus>
I see no vowels in McM's.
03:20
< celticminstrel>
For McMartin, I saw "R?ckd?ts" with the o-umlauts
03:24
< Rhamphoryncus>
I saw R?ckd?ts too
03:24
< Rhamphoryncus>
Vornicus: it's just you that's stuck in ASCII land, or you somehow pasted a 2-byte encoding like UTF-16
03:25
<@Vornicus>
It /should/ be UTF-8 all the way through.
03:25
< Rhamphoryncus>
obviously wasn't
03:25
<@McMartin>
Hrm
03:26
<@McMartin>
It's possible but very unlikely that we're all on Latin-1, but
03:26
<@McMartin>
Nope, terminal says UTF-8
03:26
< Namegduf>
Pretty sure I'm not, just because half the time my Unicode is broken
03:26
< Namegduf>
Then I notice and go "^A :utf8 on on" and it's fixed.
03:26
< Namegduf>
Basically, every time I reattach to screen I need to do that. I somehow broke something.
03:27
<@McMartin>
Namegduf: Are you passing screen the -U option?
03:27
< Rhamphoryncus>
utf-8? ? = infinity
03:27
< Namegduf>
McMartin: No, but it wa working fine.
03:27
<@McMartin>
Score, Rham
03:27
< Namegduf>
Working.
03:27
<@McMartin>
So, -U is the "be Unicode, for serious" command line option, so screen -drU is my usual resume command
03:28
< Rhamphoryncus>
nifty looking non-BMP ugaritic character: ?
03:28
< Namegduf>
No dice here.
03:28
<@McMartin>
That's just a square here.
03:28
< Rhamphoryncus>
U+10383
03:29
< Rhamphoryncus>
You *probably* don't have a font. It might be broken UTF-16 surrogate handling
03:29
<@Vornicus>
The infinity didn't come through properly. The 10383 came through as a 10380-zone placeholder.
03:30
< Rhamphoryncus>
Vornicus: really weird
03:30
<@Vornicus>
("utf-8? = infinity")
03:30
< Namegduf>
You might not be using UTF-8 if the infinity didn't work, somehow.
03:30
<@McMartin>
Could be his client screwing up
03:31
< Namegduf>
Could it be his client is on ASCII, and interpreting stuff bigger than ASCII as UTF-16 or UTF-32 or similar?
03:31
< Namegduf>
Encoding "guessing" stuff can be... odd.
03:32
< Rhamphoryncus>
infinity is 0xE2 0x88 0x9E
03:33
< Rhamphoryncus>
U+10383 is 0xF0 0x90 0x8E 0x83
03:56 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Client closed the connection]
04:47 Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has quit [Ping timeout: 121 seconds]
05:11 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code
05:25 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!]
06:16 AnnoDomini [annodomini@Nightstar-32801df0.adsl.tpnet.pl] has joined #code
06:16 mode/#code [+o AnnoDomini] by Reiver
06:20 cpux is now known as shade_of_cpux
06:26 Derakon is now known as Derakon[AFK]
06:38
<@McMartin>
Ha *ha*, I did it.
06:38 * McMartin finally Ninja Stealths "Lightyears Away", is the greatest ninja in the world
06:38
< Namegduf>
Haha.
06:39
< Namegduf>
Awesome.
06:39
<@McMartin>
And, I got it on FRAPS~
06:39
< Namegduf>
I can't do stealth because I like to play on horrible horrible songs
06:39
<@McMartin>
This was not the kindest of songs, really
06:39
< Namegduf>
Oh, well, I also suck
06:39
< Namegduf>
But it's still fun
06:40
<@McMartin>
Oh yes
06:40 * McMartin is terrible at the Klaxers, can only Ninja.
06:40
<@McMartin>
But after this I think it's time I learned to Klax.
06:40
<@McMartin>
It is the twenty-first century, and it is time for Audiosurf
07:35
<@Vornicus>
dammit now I wish I was home so I could Vorncast.
07:38
<@Vornicus>
(it's kinda like breencasting except 1. you don't have to see my ugly mug, and 2. I don't excoriate the Overwatch.)
07:38
<@McMartin>
I ASK YOU, WHAT BETTER ENDEAVOR EXISTS THAN A SANDWICH
07:38
<@Vornicus>
Greater, for one thing.
07:39
<@Vornicus>
and I don't even remember what the endeavor he praises so highly /is/
07:58 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code
08:01
<@jerith>
A cup of tea.
08:01
<@Vornicus>
No, that's TW's icon.
08:01
<@jerith>
Ah.
08:03
<@Vornicus>
Found it: collaboration.
08:03
<@Vornicus>
"It has come to my attention that some have lately called me a collaborator, as if such a term were shameful. I ask you, what greater endeavor exists than that of collaboration? In our current unparalleled enterprise, refusal to collaborate is simply a refusal to grow - an insistence on suicide, if you will."
08:09
<@Vornicus>
Practically all the Breencasts are on imdb.
08:10
<@McMartin>
OK, it's up, though it's apparently still processing. http://www.youtube.com/watch?v=y8nuqXwbaec
08:16
<@Vornicus>
yay world record!
08:19
<@McMartin>
(Also note the Casual record is held by some "McMartin" dude >_>)
08:47 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code
08:50 You're now known as TheWatcher
09:14
< gnolam>
Caution: do not edit /etc/fstab while intoxicated.
09:23
<@Vornicus>
Don't carouse and su root?
09:45
< gnolam>
Sudoing under the influence.
09:47
<@Vornicus>
Sudoing While Sauced
10:17
< Rhamphoryncus>
rooting while rooted
10:19
<@Vornicus>
Match goes to Rham, I guess
10:21
< Rhamphoryncus>
bonus points for potato vodka
10:23
<@Vornicus>
Rooting while rooted with roots.
10:27
< Rhamphoryncus>
Although it seems a potato isn't technically a root
11:07 Rhamphoryncus [rhamph@Nightstar-bbc709c4.abhsia.telus.net] has quit [Client exited]
11:37
< gnolam>
Darnit. I know I had a todo list somewhere...
12:34 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Connection closed]
13:49 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code
14:02 Tarinaky [Tarinaky@Nightstar-ca63009e.adsl.virginmedia.net] has quit [Operation timed out]
14:16 Tarinaky [Tarinaky@Nightstar-65dff03c.adsl.virginmedia.net] has joined #code
15:56
< gnolam>
... check http://www.google.com
15:57
< gnolam>
Today's funky Google logo is a Pacman game. :)
15:57
<@AnnoDomini>
It even works.
16:07
<@ToxicFrog>
Hmm.
16:08 * ToxicFrog pokes C with a stick
16:08
< Namegduf>
* C bites
16:12
< celticminstrel>
What's wrong?
16:15
< celticminstrel>
XD
16:17
<@ToxicFrog>
Fighting with static.
16:25 * ToxicFrog hugs gdb
16:33
< celticminstrel>
Yeah, it's useful, but I'd rather have a GUI debugger...
16:44
< Tarinaky>
Why?
16:45 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Reenactment time]
16:45
< celticminstrel>
It's a bit easier to do stuff, and I don't have to remember all the commands. I like XCode's debugger, which I suppose gives the best of both worlds.
16:46
<@ToxicFrog>
There are graphical frontends to gdb, although I can't tell you how good they are because I've never used them.
16:47
< Tarinaky>
There're a couple of bugs in the Pacman game on google.
16:47
< Tarinaky>
Namely when you eat a blue ghost it'll respawn as a normal ghost, rather than blue one.
16:48
< Tarinaky>
celticminstrel: Eh. There aren't a lot of commands to remember... backtrace, up, down, print, set, break delete and run?
16:48
< Tarinaky>
Oh and list
16:48
< Tarinaky>
But I pretend l is look and that I'm playing a text-adventure >.>
16:48
< celticminstrel>
XCode's debugger is a graphical frontend to gdb; you have the "step through the code view" and an interface for managing things like breakpoints, watches, viewing memory, etc... and you also have the gdb console if you want it.
16:49
< celticminstrel>
Sometimes it breaks down and cries, though.
16:51
< Tarinaky>
My only complaint with gdb is I need to figure out a way to script two terminals to launch with one loading gdb and the other one to redirect the program to using 'tty'
16:51
<@ToxicFrog>
Tarinaky: my most-used commands: where frame print break watch next cont
16:51
< Tarinaky>
Possibly within a screen session so you can flick between them with Ctrl+A
16:51
<@ToxicFrog>
"redirect the program to using tty"?
16:52
< Tarinaky>
It's been a while since I used gdb, let me check what the command's called.
16:52
< Tarinaky>
(gdb) help tty
16:52
< Tarinaky>
Set terminal for future runs of program being debugged.
16:52
< Tarinaky>
Usage: set inferior-tty /dev/pts/1
16:53
< Tarinaky>
ToxicFrog: essential if you're using curses.
16:53
<@ToxicFrog>
Aah.
16:53
<@ToxicFrog>
If you don't need to run the program inside gdb from the start, you can always run it first and then use 'attach' from another terminal
16:54
< Tarinaky>
ToxicFrog: I prefer to launch gdb first so I can kill and restart the program.
16:54
< Tarinaky>
Since gdb will automatically reload the symbol table if the program's touched.
16:55
< celticminstrel>
There's also the step command which is useful.
16:55
< celticminstrel>
I think.
16:55
< Tarinaky>
Step and Next.
16:55
< celticminstrel>
Yes.
16:56
< Tarinaky>
There're a lot of commands but they're all pretty easy to remember.
16:56
<@ToxicFrog>
Also, you really only need to remember one
16:56
<@ToxicFrog>
'help'
16:56
< celticminstrel>
And... knowing that tty command could be quite useful...
16:57
< Tarinaky>
Admittedly curses is the only use-case I can think of for tty.
16:58
< Tarinaky>
ToxicFrog: What does Watch do?
16:59
< celticminstrel>
Watching a specific variable, I believe.
16:59
< Tarinaky>
Likewise frame.
16:59 Attilla [Attilla@Nightstar-5d258bee.threembb.co.uk] has joined #code
16:59 mode/#code [+o Attilla] by Reiver
16:59
< Tarinaky>
I don't understand the help for frame :/
16:59
< celticminstrel>
Does it print the current entry on the call stack, maybe?
16:59
<@ToxicFrog>
frame lets you switch stack frames.
17:00
<@ToxicFrog>
'up' and 'down' move you up and down one frame; 'frame n' lets you move directly to a frame.
17:00
< Tarinaky>
Ahhh.
17:00
<@ToxicFrog>
So you can, for example, 'frame 5' rather than 'up. up. up. up. up.'
17:01
< Tarinaky>
up[enter][enter][enter][enter][enter] :p
17:10
< celticminstrel>
Still, frame 5 wouldn't scroll the console up as much.
17:12
< celticminstrel>
^terminal
18:03 * jerith requires a perlmeister.
18:04
<@jerith>
http://pastebin.starforge.co.uk/301
18:04
<@jerith>
Can anyone tell me what that function is actually doing?
18:06 * jerith pokes TheWatcher.
18:15 * jerith figures it out by playing with it.
18:15
<@jerith>
That's utterly, utterly horrible.
18:16 * Vornicus eyes google.com
18:16
<@Vornicus>
It's playable.
18:17
<@jerith>
There *has* to be a better way to do it than that.
18:17
<@Vornicus>
what is it doing?
18:18
<@jerith>
It builds a table of mappings.
18:18
<@jerith>
The first parameter is the name of the table.
18:18
<@jerith>
The second is an identifier of some sort.
18:20
<@jerith>
Every time it gets an identifier it hasn't seen before, it adds it to the mapping with the next integer as the value. If the identifier is already in the table, it just returns the id associated with it.
18:20 * jerith is rewriting it in Python.
18:21
<@jerith>
(Once I know what uses it and stuff, I can replace it with something less insane.)
18:21
<@jerith>
All this is obfuscated, however, by the fact that Perl will helpfully do whatever it thinks is right if you give it nonsence.
18:21
<@jerith>
*nonsense.
18:24
<@jerith>
Try this: perl -e 'print $FOO->{"id"}->{1}++ . "\n";'
18:25
<@Vornicus>
0
18:25
<@Vornicus>
I can't tell what the fuck it's doing
18:27
<@jerith>
What it's doing is seeing that you're trying to write to a cell that doesn't exist in a nested hash, so it created it for you. Because you're trying to read from the thing, and it can see that you're trying to read a number, it gives you 0.
18:28
<@jerith>
If I do that in an actual program, the only warning I get is the fact that $FOO only appears once and therefore might be a tyop.
18:29
<@Vornicus>
And now we know why perl is in fact the most evil programming language.
18:29
< PinkFreud>
Vornicus: nonsense.
18:30
< PinkFreud>
perl is useful for quick scripts for just that reason.
18:30
<@jerith>
In my paste, lookup() is using this to build a nontrivial structure without actually defining it.
18:30
<@jerith>
This makes me a sad panda.
18:30
< PinkFreud>
if you want it to behave like a *real* programming language, add -w to the shebang line
18:31
< Tarinaky>
I need a website screen scraper but don't have time to 1) learn how to make one 2) actually make it :/
18:31
< PinkFreud>
the fact that I can do something like that, without having to go through the trouble to predeclare everything, means it works well for one-liners and other quick'n'dirty scripts
18:31
< Tarinaky>
The reason time comes up is because I need to get it working to watch my TV programs.
18:31
< Tarinaky>
Which go offline after a certain window.
18:31
< Tarinaky>
>.<
18:32
< PinkFreud>
... because sometimes, you just need to get a repetitive task *done*, rather than work on creating a proper coding project.
18:32
< Tarinaky>
Heh. I was wondering if there was anything I could hash together using out of the box tools.
18:33
<@jerith>
perl -e 'use Data::Dumper; $FOO->{"id"}->{1}++; print Dumper($FOO);'
18:33
<@jerith>
That gives you a better idea of what's actually going on.
18:33
< PinkFreud>
jerith: or perl -MData::Dumper -e '$FOO...'
18:33
< Tarinaky>
>.< I don't know perl.
18:33
< PinkFreud>
(yep, you can load modules on the commandline!)
18:34 * Tarinaky is currently playing with the old program that used to work to see if he can get it alive again.
18:35
<@jerith>
PinkFreud: Yeah, I just didn't know the syntax for it offhand. :-)
18:35
< PinkFreud>
:)
18:36
< PinkFreud>
one of my favorites is: echo '<some base64-encoded string>' | perl -MMIME::Base64 -pe '$_ = decode_base64 $_'
18:36
<@jerith>
The way I see it, the time saved by not defining structure is spent manyfold trying to debug tyops.
18:36
< PinkFreud>
jerith: depends on the complexity. if it's a few lines, you're probably ok.
18:37
<@jerith>
Sure.
18:37
< PinkFreud>
if your one-liner baloons to a few hundred lines, then yeah, you're better off defining some structure.
18:37
<@jerith>
But if it's a few lines, you've lost almost nothing by doing it the sane way.
18:37
< Tarinaky>
Anyway. Anyone know a way I can obtain a list of program IDs from a search of the iplayer?
18:37
< PinkFreud>
jerith: try defining your structure on the commandline as part of a one-liner. :)
18:38
< PinkFreud>
it *can* be done, but you'll spend more time going back to fix typos anyway. :)
18:38
<@jerith>
PinkFreud: If I'm using something like that, it's probably going to be more than one line.
18:39
< PinkFreud>
sure. you're a programmer.
18:39
< PinkFreud>
I'm a sysadmin. I'm all about one-liners. :)
18:44
<@jerith>
http://pastebin.starforge.co.uk/302
18:44
<@jerith>
That's the Python version.
18:44
<@jerith>
It's the same number of lines, excluding the trailing brace and the comment in the Perl version.
18:45 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Connection reset by peer]
18:45 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code
18:48
< PinkFreud>
heh
18:58
< Tarinaky>
Oh great.
18:58
< Tarinaky>
I'm a colossal idiot.
18:58
< Tarinaky>
Turns out there -is- a new version for my old iplayer grabber
18:59
< Tarinaky>
It's just the new package manager didn't tell me :/
19:04
<@ToxicFrog>
Tarinaky: for future reference, curl/wget are both good for getting raw html off a site and lynx -dump will get you rendered stuff
19:05
< Tarinaky>
ToxicFrog: Well, I wasn't having trouble getting the search results.
19:06
< Tarinaky>
ToxicFrog: The problem I was having was getting the data I wanted off the page.
19:06
< Tarinaky>
The screen scraper portion >.<
19:06
<@Vornicus>
The problem was that the page was being rendered without you getting any source for that?
19:06
< Tarinaky>
Vornicus: Regexp design.
19:07 Derakon [Derakon@Nightstar-1ffd02e6.ucsf.edu] has joined #code
19:07 mode/#code [+o Derakon] by Reiver
19:07
<@Derakon>
Today's Sebastianism: giving global scope to a variable that is only used in a function that is called once.
19:08
<@Vornicus>
ah. ...yeah I'm still gonna say screen scraping would be a bad idea.
19:08
<@Vornicus>
In fact I'd throw BeautifulSoup at it if it's HTML.
19:08
< Tarinaky>
Vornicus: I wasn't aware of a better solution :/
19:08
< Tarinaky>
It's HTML.
19:08 * jerith has built the next bit of this madness and is now going to kill some pixels.
19:08 * Tarinaky only knows... wget, grep and sed...
19:08
<@jerith>
Or maybe I'll try the next Portal advanced map...
19:10
<@Vornicus>
Which one is that?
19:10
<@jerith>
16, I think.
19:11
<@jerith>
I've done three of them.
19:11
<@Vornicus>
16 then.
19:11
<@Vornicus>
Oh, 16 is a doozy.
19:11
<@Derakon>
Is 16 Android Hell?
19:12
<@Vornicus>
16 is Android Hell.
19:12
<@Derakon>
That was fun.
19:12
<@ToxicFrog>
Tarinaky: in that case, pick a language, slap the HTML through something that will turn it into a tree, extract the bits you need from that?
19:12
<@Vornicus>
it is I think the hardest one.
19:12
< Tarinaky>
ToxicFrog: Would take more time than I had :/
19:13
<@Derakon>
I'm pretty sure I had more trouble with the last one.
19:13
<@Derakon>
But I didn't think of the camera trick.
19:15
<@Vornicus>
It is also possible to fly across the room without picking off the turrets though
19:15
< Tarinaky>
ToxicFrog: Remember, we're talking "OMG I'm going to miss the finale of this season of Ashes to Ashes!" kind of problem.
19:15
< Tarinaky>
ToxicFrog: Sometimes you just want it to just work :p
19:15
<@Derakon>
Vorn: sure, I cleared the room without touching the turrets.
19:15
<@Derakon>
It just was difficult.
19:16
<@Vornicus>
It's just that you need to (literally) think outside the box.
19:16 * Tarinaky eats some (lie) cake.
19:21 * Derakon rips out a few more unnecessarily global variables.
19:22
<@Derakon>
So far this revision, I've eliminated 219 lines of code...
19:29
<@Derakon>
More importantly, I've removed 21 functions from this module.
19:34
<@ToxicFrog>
Tarinaky: why do you need a sitescraper for that, as opposed to, say, a bittorrent client or a video capture card?
19:35 Alek [omegaboot@Nightstar-c5f3565b.il.comcast.net] has quit [Ping timeout: 121 seconds]
19:39
<@jerith>
W00t! Finished 16adv.
19:39
<@jerith>
My finger's sore from holding "crouch" the whole level, though.
19:39 Alek [omegaboot@Nightstar-c5f3565b.il.comcast.net] has joined #code
19:41
<@Derakon>
Congrats.
19:41
<@Derakon>
I felt a little sorry for the turrets that I'd piled up boxes in front of. Sure, they were still alive, but they weren't going to be doing anything...ever.
19:41
< Serah>
Crouchtoggle?
19:42
<@jerith>
Mine kept catching glimpses of me and woke up long enough to scan the area.
19:43
<@jerith>
I felt a little sorry for the one that was between me and another one.
19:43
<@jerith>
It got shot up a lot, but not enough to render it nonfunctional.
19:43
< Tarinaky>
ToxicFrog: The screen scraper is to automate the task of downloading certain TV series I'm interested in off the iplayer site.
19:43
< Tarinaky>
ToxicFrog: Bittorent or video capture don't solve the particular problem of automation.
19:44
<@Derakon>
TMK turrets can't kill other turrets.
19:44
<@Derakon>
I base this on letting one get hit by a few hundred bullets.
19:45
<@Vornicus>
Yeah, the ony thing that can actually kill turrets is enough momentum to knock it over.
19:45
<@Derakon>
Which is, like, barely anything. They're hilariously unstable.
19:45
<@Derakon>
If the game simulated recoil they wouldn't be remotely useful.
19:54
<@jerith>
They're recoilless guns. ^.^
19:54
<@jerith>
But yeah. They only die if they're toppled.
19:55
<@jerith>
I had great fun in level 16 setting them all up to point at a bare wall, neatly in a row.
19:55
<@jerith>
I only broke three or four doing that.
19:57
<@Derakon>
Hee.
20:10
<@ToxicFrog>
Tarinaky: right, my point was more that those are alternate solutions to the problem of "I don't want to miss this episode"
20:10 aoanla [AndChat@Nightstar-4b2adf86.range81-129.btcentralplus.com] has joined #code
20:10
< Tarinaky>
ToxicFrog: >.> I'm obsessive.
20:10
<@ToxicFrog>
At which point you're no longer under any time constraints to solve the problem of automatic downloading from iplayer.
20:11
< Tarinaky>
Yes, well. >.> shh.
20:11
<@ToxicFrog>
And can take the time to learn an HTML parsing library or regexes or whatever.
20:11
< Tarinaky>
When it comes to my stories I want it to just work.
20:11
< Tarinaky>
I'm a bad man, I know >.>
20:12
<@ToxicFrog>
In that case your only option is to wait until someone else writes it, no?
20:13
< Tarinaky>
Pretty much.
20:13
< Tarinaky>
Fortunately they did.
20:14
< Tarinaky>
It's just my package manager didn't tell me about it when asked.
20:14
< Tarinaky>
^^
20:39 aoanla [AndChat@Nightstar-4b2adf86.range81-129.btcentralplus.com] has quit [[NS] Quit: ]
20:56 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 121 seconds]
21:02 AnnoDomini [annodomini@Nightstar-32801df0.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds]
21:04 AnnoDomini [annodomini@Nightstar-c5d72e22.adsl.tpnet.pl] has joined #code
21:04 mode/#code [+o AnnoDomini] by Reiver
21:26 * Derakon eyes Google's homepage.
21:27
<@Derakon>
The Pacman game is apparently fully-functional.
21:27
<@McMartin>
Yes.
21:27
<@Vornicus>
Insert two coins and bring a friend~
21:28
<@Derakon>
I see their page source is obfuscated, though I wouldn't be surprised if that's just to reduce page load times.
21:29
< celticminstrel>
Yep.
21:30
<@Derakon>
I wonder how much bandwidth they save each day by removing a single character from the homepage...
21:31
< celticminstrel>
Do you know whether the Pacman is Flash or JavaScript?
21:32
<@McMartin>
Flash is involved for the sound
21:32
<@Derakon>
Javascript, I believe.
21:33
<@McMartin>
Yeah, they're different things; people with flashblockers seem to be able to play but don't get sound
21:35 * McMartin eyes Wolfram Alpha
21:35
<@McMartin>
http://www.wolframalpha.com/input/?i=How+much+magnesium+is+there+in+43+cubic+mil es+of+fried+chicken%3F
21:37
< Tarinaky>
Wolfram Alpha scares me :/
21:37 * Derakon laughs for a long time, as quietly as he can manage.
21:53 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code
21:54 Serah [Z@2C3C9C.B2A300.F245DE.859909] has joined #code
21:57
<@Derakon>
It always bothers me when the diff for a file is longer than the file itself.
21:57
<@Derakon>
(839-line modified file, 1191-line diff)
21:57
< celticminstrel>
Why?
21:58
<@ToxicFrog>
Because the diff includes both the old and new versions.
21:59
<@Derakon>
It implies that I am drastically changing the file.
21:59
<@Derakon>
Which in turn implies large-scale overhauls, which imply high risk of something breaking.
21:59
<@Derakon>
It also becomes difficult to do an effective code review.
21:59
<@ToxicFrog>
As a general rule, the length of a diff will be (number of lines removed) + (number of lines added) + 2*(number of lines modified) + some overhead
22:02
<@Derakon>
In this case, I have 580 lines beginning with '-' and 268 beginning with '+'. And 23 diff context lines.
22:06
<@Derakon>
Hell, my checkin notes are 28 lines and 1729 characters.
22:34
<@Vornicus>
1729! The Hardy-Ramanujan Number!
22:36 * Derakon hits up Wikipedia. "Hunh."
22:37
<@Derakon>
"1729 is a Zeisel number. It is a centered cube number, as well as a dodecagonal number, a 24-gonal and 84-gonal number."
22:37 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!]
22:42 Derakon [Derakon@Nightstar-1ffd02e6.ucsf.edu] has quit [[NS] Quit: Leaving]
23:29 * TheWatcher hunts for a small base64 decoder in javascript
23:45 AnnoDomini [annodomini@Nightstar-c5d72e22.adsl.tpnet.pl] has quit [[NS] Quit: leaving]
23:45 shade_of_cpux is now known as cpux
--- Log closed Sat May 22 00:00:08 2010
code logs -> 2010 -> Fri, 21 May 2010< code.20100520.log - code.20100522.log >