< 1168473603 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but it works like supped up dictionary. < 1168473745 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh boy, suped up dictionary... < 1168473764 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Just a dictionary of dictionarys would be good < 1168473811 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :{"K":{"full-name":"pottassium", valence:whatever...}...} < 1168473840 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :taste: AAAARGGHHHH < 1168473859 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :"spelling":"incorrect" < 1168473927 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it is basically... < 1168473947 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(sys) < 1168473948 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : < 1168473952 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's 5 or 6 dictionaries of a bunch of objects. < 1168473967 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :objects have the advantage of having methods as well as data. ;) < 1168473978 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(sys.__dict__) < 1168473978 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :{'_SysWrapper__sys': , 'stderr': <__main__.IRCFileWrapper instance at 0xb7bda7cc>, 'stdout': <__main__.IRCFileWrapper instance at 0xb7bda76c>} < 1168473989 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hmph < 1168473990 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and the 5 or 6 dictionaries are just optimization for some common ways to refer to elements. < 1168473994 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(sys.sys.__dict__) < 1168474007 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(sys._SysWrapper__sys.__dict__) < 1168474008 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Excess Flood < 1168474010 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474012 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1168474025 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I need to put flood protection in IRCFileWrapper < 1168474026 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I still don't exactly see the point of objects when methods are really just functions on them. Then again, in Python, objects' methods are really just functions on them, so... < 1168474041 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec raw(self,"PRIVMSG #esoteric :Foo") < 1168474049 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Fun. < 1168474054 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :eh... self-containedness... there's no functional benefit... it just makes organizing everything easier. < 1168474060 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :when everything's in a scope of some sort. < 1168474068 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, yeah. < 1168474093 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Of course, some things *do* have points. < 1168474106 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'm still waiting for my language where programs are first-order logic theories. < 1168474144 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Call it a FOLTE, for First Order Logic Theory Evaluator. And pronounce it "faulty". < 1168474159 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec IRCbot.raw(self, "PRIVMSG #esoteric :foo") < 1168474160 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :foo < 1168474165 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :^^ ihope < 1168474167 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Gasp! < 1168474177 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Wonderful. < 1168474183 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I'm going with interesting data types as my main theme for any sort of language-inventing < 1168474188 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :at the moment. < 1168474209 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.esoteric("asdf") < 1168474218 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :gasp < 1168474232 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and with some new ways to treat procedures as data. < 1168474238 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders how to implement flood protection < 1168474240 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :like the "ring" concept. < 1168474242 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You oughta save at least some state, bsmnt. < 1168474250 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bombdood. < 1168474332 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION remember his first encounter with programming. < 1168474362 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :pure imperitive... global-variables-for-state-and-conditional-mechanisms hacking < 1168474379 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it was like building some weird ass clock.. < 1168474407 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ihope: like what? < 1168474410 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168474411 0 :bsmnt_bot!unknown@unknown.invalid QUIT : < 1168474413 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474421 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, sys < 1168474422 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : < 1168474426 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec new_bot = IRCbot({"HOST": "blue", "PORT": 6667, "NICK": "AlsoBot", "IDENT": "bsmnt", "REALNAME": "not applicable", "CHAN": "#esoteric", "VERBOSE": True}); new_bot.listen() < 1168474428 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, "a" * 400 < 1168474437 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa < 1168474438 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: well, you could have the thing not actually disappear when it disconnects. < 1168474441 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa < 1168474447 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. < 1168474448 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, make a wrapper class for whatever you print in and make it keep track of when smth was said last... < 1168474461 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec new_bot = IRCbot({"HOST": "irc.freenode.net", "PORT": 6667, "NICK": "AlsoBot", "IDENT": "bsmnt", "REALNAME": "not applicable", "CHAN": "#esoteric", "VERBOSE": True}); new_bot.listen() < 1168474477 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Huh < 1168474493 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :now IRCFileWrapper splits it up into 300 byte chunks < 1168474500 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec new_bot = IRCbot({"HOST": "85.188.1.26", "PORT": 6667, "NICK": "AlsoBot", "IDENT": "bsmnt", "REALNAME": "not applicable", "CHAN": "#esoteric", "VERBOSE": True}); new_bot.listen() < 1168474503 0 :AlsoBot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474504 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ihope: I haven't gotten dns working inside the chroot < 1168474506 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1168474508 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Wonderful. < 1168474514 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: ah. < 1168474526 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :So, there's a, uh... hmm. < 1168474536 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~raw "PRIVMSG #esoteric :Foo" < 1168474552 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.raw("PRIVMSG #esoteric :Foo") < 1168474552 0 :AlsoBot!unknown@unknown.invalid PRIVMSG #esoteric :Foo < 1168474552 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :Foo < 1168474553 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~raw PRIVMSG #esoteric :foo < 1168474554 0 :AlsoBot!unknown@unknown.invalid PRIVMSG #esoteric :foo < 1168474554 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :foo < 1168474558 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yay. < 1168474559 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1168474561 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :*heh < 1168474582 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, new_bot < 1168474586 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1168474604 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec new_bot.COMMAND_CHAR = r"@" < 1168474611 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :@raw PRIVMSG #esoteric :Foo < 1168474615 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no < 1168474635 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :you borked it < 1168474639 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I did? < 1168474643 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :That's nice. < 1168474647 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168474655 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Uh, yeah. < 1168474659 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :there's no references to new_bot < 1168474663 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.disconnect() < 1168474668 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168474668 0 :AlsoBot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168474668 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168474671 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474672 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I can't figure this out, can I? < 1168474693 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.new_bot = IRCbot({"HOST": "85.188.1.26", "PORT": 6667, "NICK": "AlsoBot", "IDENT": "bsmnt", "REALNAME": "not applicable", "CHAN": "#esoteric", "VERBOSE": True}); self.new_bot.listen() < 1168474697 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :there < 1168474700 0 :AlsoBot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474705 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ah, better, yes. < 1168474714 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.new_bot.COMMAND_CHAR = r"@" < 1168474721 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :@raw PRIVMSG #esoteric :Foo < 1168474723 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :won't work < 1168474727 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I see. < 1168474747 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :self.COMMAND_CHAR only matters during __init__ < 1168474753 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1168474783 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :That gives me an idea. < 1168474794 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.disconnect("") < 1168474795 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168474795 0 :AlsoBot!unknown@unknown.invalid QUIT :Client Quit < 1168474796 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, self.COMMAND_CHAR < 1168474797 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474802 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, self.COMMAND_CHAR < 1168474802 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :~ < 1168474816 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.__init__(args) < 1168474826 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :whoa < 1168474827 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168474828 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~raw PRIVMSG #esoteric :Foo < 1168474829 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474832 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :BUGGAGE < 1168474833 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Uh, hmm. < 1168474838 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Did you kill it? < 1168474841 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no < 1168474854 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'll have to do it faster, then :-P < 1168474855 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :we got some weird exception on the real stderr < 1168474864 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.__init__(args) < 1168474865 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~raw PRIVMSG #esoteric :Foo < 1168474866 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168474868 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474871 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Clearly not working. < 1168474891 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what are you trying to do? < 1168474895 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :you can't call __init__ on a class that's already inited < 1168474903 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you can... it's just.. < 1168474907 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :without breakage < 1168474909 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :not something you'd usually want to do. < 1168474934 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self.__init__) < 1168474935 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :> < 1168474959 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec IRCbot.__init__ < 1168474968 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...Right. < 1168474969 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec IRCbot.__init__() < 1168474983 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :why are you calling init anyways? < 1168474983 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Fun. < 1168474985 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec IRCbot.__init__(self, args) < 1168474988 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh, because. < 1168474989 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168474991 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168474997 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ValueError: list.remove(x): x not in list < 1168474999 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :???? < 1168475003 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec IRCbot.__init__(args, self) < 1168475017 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec IRCbot.__init__(self, self) < 1168475027 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :self probably isn't defined. < 1168475033 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it is < 1168475047 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec def IRCbot.__getitem__: return 3 < 1168475048 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self) < 1168475051 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh... well then that just does the same thing as self.__init__() < 1168475052 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :<__main__.IRCbot instance at 0xb7c5a42c> < 1168475054 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec IRCbot.__init__(self, self) < 1168475063 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ihope, Can't define methods like that. < 1168475064 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Erm, wait... < 1168475070 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :wtf are you doing < 1168475080 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: playing? < 1168475085 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :def < 1168475094 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :IRCbot.__getitem__ is an expression. < 1168475095 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ihope: ...continue < 1168475105 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I see. < 1168475112 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :using the . operator... so it's not a valid "identifier"... plus it's just plain weird. :P < 1168475125 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec IRCbot = 3 < 1168475128 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :It would be nice if python could do that like ruby < 1168475131 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :def myFunc(blah, blah): blah blah blah < 1168475137 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~raw PRIVMSG #esoteric :Foo < 1168475141 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :IRCbot.__getitem__ = myFunc < 1168475144 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Did I break it? < 1168475150 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :not yet < 1168475165 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :you can't make any more IRCbot s, though < 1168475166 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.raw("PRIVMSG #esoteric :Foo") < 1168475166 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :Foo < 1168475171 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. < 1168475181 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, it doesn't... because that's not consistent with pretty much anything else.... and it's kind of tacky. < 1168475182 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self = 3 < 1168475187 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Woot! < 1168475189 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :now it's broken < 1168475193 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.raw("PRIVMSG #esoteric :Foo") < 1168475193 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1168475194 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :Foo < 1168475196 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :or no < 1168475197 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :t < 1168475207 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self) < 1168475207 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec del IRCbot < 1168475207 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :<__main__.IRCbot instance at 0xb7c5a42c> < 1168475212 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :weird < 1168475219 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.disconnect("pero ya eres todo un hombre pa la guerra y pa matar") < 1168475219 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168475222 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168475225 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yay!... no. < 1168475232 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh right, self is passed by value < 1168475237 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, how does the bot handle the scope of subprocesses? < 1168475251 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :if you just make the dict on the fly in the exec statement... it won't preserve the dict beyond the exec. < 1168475265 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :in the (globals(), locals()) of IRCbot.do_exec < 1168475297 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :assign it to an attribute of the bot object < 1168475307 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION would make a private dictionary for subprocesses... and then update the main one or something when the subprocess is done executing. < 1168475312 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :to prevent weird race conditions and stuff. < 1168475327 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.self = 3 < 1168475337 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Did it work or something?... no, probably didn't. < 1168475343 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~raw PRIVMSG #esoteric :Foo < 1168475352 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: having one sepperate global dictionary for all ~execs might be good < 1168475354 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, ~raw isn't working, at least. < 1168475365 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.raw("PRIVMSG #esoteric :Foo") < 1168475366 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :Foo < 1168475370 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ihope: you don't match the ~raw regex < 1168475376 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1168475379 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec die < 1168475382 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :if ~exec re-assigns self each time... that's why. < 1168475387 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.disconnect = 3 < 1168475398 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168475402 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.do_kill = 3 < 1168475414 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.do_exec = 3; self.exec = 3 < 1168475417 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it probably does... < 1168475428 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :now it's broken < 1168475434 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :considering do_exec is called with do_exec.im_self passed to the first parameter. < 1168475434 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec foo < 1168475443 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :each time it's called. < 1168475456 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so reassigning self does little to nothing but alter that function calls local scope. < 1168475458 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1168475460 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.exec_execer = 3 < 1168475467 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec foo < 1168475472 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :there you go < 1168475485 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yay! < 1168475494 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :now it's broken < 1168475499 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.raw("foo") < 1168475504 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yep. < 1168475517 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!exec sys.stdout.write(dir(locals())) < 1168475518 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :only way to kill it now is ^C on the console < 1168475521 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1168475529 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(dir(locals())) < 1168475533 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168475536 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168475539 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(dir(locals())) < 1168475540 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__seti < 1168475540 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :tem__', '__str__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'] < 1168475551 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :you don't want dir < 1168475552 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sweet... plenty of stuff to tinker with. < 1168475552 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'm guessing what CakeProphet did didn't kill it. < 1168475575 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh... erm.. yeah < 1168475577 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How do I list all the files in /? >:-) < 1168475584 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(locals()) < 1168475585 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :{'message': ':CakeProphet!n=CakeProp@h146.231.213.151.ip.alltel.net PRIVMSG #esoteric :~exec sys.stdout.write(locals())', 'r': <_sre.SRE_Match object at 0xb7c95b18>, 'command': 'sys.stdout.write(locals())', 'self': <__main__.IRCbot instance at 0xb7c3542c>} < 1168475585 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :os.listdir("/") < 1168475603 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... < 1168475616 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(os.listdir("/")) < 1168475616 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['bin', 'bot', 'etc', 'lib', 'usr'] < 1168475619 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so wait... I have access to the source code of my exec in the exec itself? < 1168475620 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. < 1168475624 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(os.listdir("/bot")) < 1168475625 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['betterbot.py', 'start.sh', 'better.sh', 'ircbot.py'] < 1168475629 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(os.listdir("/bin")) < 1168475630 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['bash'] < 1168475631 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: yeah < 1168475638 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(os.listdir("/etc")) < 1168475639 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['hosts', 'passwd', 'resolv.conf'] < 1168475645 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(command) < 1168475646 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :sys.stdout.write(command) < 1168475649 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :quine < 1168475654 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ooh! Let's change... wait, is passwd... what is it? < 1168475663 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh well. < 1168475670 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(os.listdir("/lib")) < 1168475670 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['libm.so.6', 'libreadline.so.5', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6'] < 1168475673 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(open("/etc/passwd").read()) < 1168475674 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :root:x:0:0:root::/bin/bash < 1168475674 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :bsmnt_bot:x:1343:1343:::/bin/bash < 1168475676 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(dir(self)) < 1168475676 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['COMMAND_CHAR', 'THREADING', '__doc__', '__init__', '__module__', 'chan', 'commands_running', 'commands_running_lock', 'connect', 'connected', 'disconnect', 'do_callbacks', 'do_ctcp', 'do_exec', 'do_kill', 'do_ps', 'do_quit', 'do_raw', 'errorchan', 'exec_execer', 'get_message', 'host', 'ident', 'li < 1168475677 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :sten', 'message_re', 'nick', 'pong', 'port', 'print_callbacks', 'raw', 'raw_regex_queue', 'readbuffer', 'realname', 'register_raw', 'socket', 'sockfile', 'verbose'] < 1168475678 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(os.listdir("/usr")) < 1168475678 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['bin', 'lib', 'include'] < 1168475696 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :All so very confusing, I'm sure. < 1168475699 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(os.listdir("~")) < 1168475717 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(os.exec("/bin/bash")) < 1168475730 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I see, maybe. < 1168475742 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :If you want a bash prompt, you are gonna have to wrap in in some sockets < 1168475745 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Did that say syntax error? < 1168475753 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah, exec is a statement < 1168475780 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.__doc__) < 1168475780 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :None < 1168475785 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa < 1168475790 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Lousy documentation :P < 1168475791 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa < 1168475794 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1168475822 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.socket) < 1168475822 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : < 1168475836 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i'd be ready now if i knew wtf Tory is < 1168475841 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but i can't find it anywhere < 1168475843 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.chan) < 1168475843 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :#esoteric < 1168475859 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :self.chan is kinda useless < 1168475864 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.THREADING) < 1168475864 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :True < 1168475868 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.chan**2) < 1168475883 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :does someone know it? < 1168475883 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(dir(self.__class__)) < 1168475884 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['__doc__', '__init__', '__module__', 'connect', 'disconnect', 'do_callbacks', 'do_ctcp', 'do_exec', 'do_kill', 'do_ps', 'do_quit', 'do_raw', 'exec_execer', 'get_message', 'listen', 'pong', 'print_callbacks', 'raw', 'register_raw'] < 1168475903 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.chan*2) < 1168475903 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :#esoteric#esoteric < 1168475914 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.chan-"#") < 1168475926 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: your errors go to #bsmnt_bot_errors < 1168475937 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :< bsmnt_bot> TypeError: unsupported operand type(s) for -: 'str' and 'str' < 1168475947 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(dir(sys)) < 1168475947 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['_SysWrapper__sys', '__doc__', '__getattr__', '__init__', '__module__', 'stderr', 'stdout'] < 1168475966 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(dir(sys.stdout)) < 1168475967 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['__call__', '__doc__', '__init__', '__module__', 'channel', 'raw', 'write'] < 1168475992 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(dir(sys.__sys)) < 1168476008 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : AttributeError: 'module' object has no attribute '__sys' < 1168476014 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: http://web.archive.org/web/20051218132142/http://chimpen.com/tory/ < 1168476079 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec raise "foo" < 1168476086 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(globals()) < 1168476086 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :{'IRCbot': , 'args': {'IDENT': 'bsmnt', 'REALNAME': 'bsmntbombdood bot', 'CHAN': '#esoteric', 'NICK': 'bsmnt_bot', 'HOST': '85.188.1.26', 'PORT': 6667, 'VERBOSE': True}, '__builtins__': , '__file__': '/bot/ircbot.py', 'inspect': < < 1168476086 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :module 'inspect' from '/usr/lib/python2.4/inspect.pyc'>, 'IRCFileWrapper': , 'sys': , 'thread_info': , '__name__': '__main__', 'exec_global_tracer': , < 1168476088 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :'copy': , 'socket': , 'thread': , 'traceback': , 'os': , 'ppri < 1168476091 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... < 1168476092 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :nt': , 'bot': <__main__.IRCbot instance at 0xb7c3542c>, 're': , 'time': , 'threading': , 'SysWrapper': , 'exec_local_tracer': , '__doc__': None} < 1168476105 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yay, no excess flood < 1168476123 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION loves introspection. < 1168476178 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :now it just needs random quotes... and support for persistence. < 1168476190 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: code it < 1168476222 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :http://bsmntbombdood.mooo.com/chroot_ircbot.py < 1168476225 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec globals()["random"] = __import__("random") < 1168476278 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.__class__.dice = lambda : random.randint(1,6) < 1168476299 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.dice() < 1168476302 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.dice()) < 1168476321 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: #bsmnt_bot_errors < 1168476330 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec globals()["random"] = __import__("random") < 1168476336 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.__class__.dice = lambda : random.randint(1,6) < 1168476345 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(random) < 1168476354 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :odd < 1168476380 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh, right < 1168476382 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168476382 0 :bsmnt_bot!unknown@unknown.invalid QUIT : < 1168476385 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168476390 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec globals()["random"] = __import__("random") < 1168476394 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(random) < 1168476395 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : < 1168476426 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :there < 1168476433 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I was making a copy.copy for some reason < 1168476470 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you wanted to make sure exec didn't effect globals? < 1168476478 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :by the way... dictionaries have a copy method. < 1168476486 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :..so... you didn't really need to use the copy module. < 1168476490 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1168476491 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec globals()["random"] = __import__("random") < 1168476496 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.__class__.dice = lambda : random.randint(1,6) < 1168476501 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.dice()) < 1168476513 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :self.__class__.dice? < 1168476523 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it would have it simply from inheritance. < 1168476529 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :That would force you to reinstanciate the bot < 1168476533 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :nope. < 1168476537 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec globals()["random"] = __import__("random") < 1168476545 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.__class__.dice = lambda self : random.randint(1,6) < 1168476550 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(self.dice()) < 1168476550 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :5 < 1168476573 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :method resolution is dynamic... if the class has it... the instance gets it to. < 1168476585 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you would only need to re-init the bot if you did an entire class statement. < 1168476587 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :orly? < 1168476597 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :as then you would be creating an entirely new class... instead of modifying the old one... < 1168476599 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :rly < 1168476637 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :heh... meta-programming is scary shit... < 1168476646 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what's that? < 1168476649 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's probably the part of Python I'm most familiar with. < 1168476655 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :programming things that program. < 1168476676 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :basically all of that was... sorta kinda... basic "meta-programming" < 1168476701 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I created a program that re-programmed your class. < 1168476707 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :basic example... but that's the core of it. < 1168476748 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~dice", lambda x,y: self.raw("PRIVMSG %s :%s" % (y.group(1), random.randint(1,6))) < 1168476757 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~dice < 1168476762 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~dice", lambda x,y: self.raw("PRIVMSG %s :%s" % (y.group(1), random.randint(1,6)))) < 1168476766 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~dice < 1168476766 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168476768 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168476773 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1168476782 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~dice", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), random.randint(1,6)))) < 1168476785 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~dice < 1168476786 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168476788 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168476791 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :why group? < 1168476793 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1168476796 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :there's nothing to group. < 1168476801 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec globals()["random"] = __import__("random") < 1168476803 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~dice", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), random.randint(1,6)))) < 1168476806 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: ? < 1168476809 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh. < 1168476811 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :nevermind,. < 1168476815 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :group is a regex match object method < 1168476820 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yah yah < 1168476825 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~dice < 1168476825 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's the channel... nevermind. < 1168476825 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :1 < 1168476832 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~dice < 1168476832 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :3 < 1168476841 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has, funnily enough, a dice library. < 1168476866 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :with some weird callback stuff for constructing tabletop style dice functions. < 1168476881 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that I made. < 1168476889 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ok i have to go < 1168476903 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gets to work on that pickling stuff. < 1168476906 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :have fun. < 1168476954 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec insert < 1168476961 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. < 1168476967 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :k made a new language instead of looking for Tory < 1168476974 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :and i'm sure mine is better too < 1168476990 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmm... you can't pickle functions though.... unless you save their source code. < 1168477009 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but... I could go ultra-fancy and use some insane abuse of the pickle protcol to make it save functions. < 1168477010 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: http://web.archive.org/web/20051218132142/http://chimpen.com/tory/ < 1168477019 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I've done it before. < 1168477028 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, too late :( < 1168477038 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Why? :) < 1168477255 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i made my own brainfuck in it's place < 1168477259 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :to get to 50 < 1168477271 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :and mine has sence to it :) < 1168477301 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :made 3 languages today \o/ < 1168477357 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :maybe i'll make 50 improvised languages tomorrow, sounds like a good use of time < 1168477472 0 :oklofok!unknown@unknown.invalid NICK :oklopol < 1168477547 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmm... I should work on Stue some more. < 1168477569 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Stue? < 1168477573 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Is that like Thue at all? < 1168477581 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Dunno. < 1168477585 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION isn't familiar with Thue < 1168477593 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Stue is a "stack of queues" language. < 1168477594 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that I made. < 1168477605 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :It is extremely unlike Thue. :) < 1168477634 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The only thing in common is that they may be considered Norwegian words. < 1168477643 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Hello World --> !m?spam?"Hello, World!\n"^ < 1168477665 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :with a semicolon at the end < 1168477674 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :!m?spam?"Hello, World!\n"^; < 1168477677 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1168477716 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :print 2 + 2 --> !m22+^)?spam?^; < 1168477718 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so... how do i sleep now that i slept 5 hours during the day and drank a litre of coke just now? < 1168477751 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I wrote the entire specification on the esolang wiki... but then I forgot to save it. < 1168477756 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and I'm entirely too lazy to type it out again. < 1168477759 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :in a way that makes sense. < 1168477791 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i can't tell how it works from that :'( < 1168477829 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah... it's a bit... < 1168477848 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's always a good thing < 1168477856 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... < 1168477876 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you use stact notation, spam is print, ^ has something to do with pushing? < 1168477879 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*stack < 1168477888 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :kinda sorta < 1168477894 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :gooda < 1168477899 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :)? < 1168477906 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sorry, ')'? < 1168477914 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it appears stack-based... but then you'll notice the order in which you push things seems to change sporatically... < 1168477941 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :everything is pushed except for commands... and ^ is the call command :D < 1168477963 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i figured that a second before you said that < 1168477969 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, doesn't help < 1168477981 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it reads everything character by character... unless it's surrounded by ?'s or quotes. < 1168478027 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, now it's pretty clear, but ) and !m < 1168478034 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :poh < 1168478035 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1168478037 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know !m < 1168478049 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :quoted stuff always being considered strings... and ?'s just denoting a multicharacter version of anything you would push as a single character. < 1168478069 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :By default, if the interpreter has no clue what the hell you're trying to push... it just becomes a string. < 1168478092 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!m is the beginning of a subroutine defintion. :D < 1168478094 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1168478103 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the main one... to be exact. < 1168478116 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i can exec !m22+^)"spam"^; as well? < 1168478128 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... < 1168478131 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i figured the !, < 1168478132 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :can't actually remember. < 1168478133 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :!m < 1168478136 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1168478148 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, doesn't matter, the ) anyway, what is it? < 1168478150 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I indeded for that to be possible... but I forgot if it actualyl does it. < 1168478157 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hehe :D < 1168478163 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :That... pushes a new queue onto the stack. < 1168478169 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1168478182 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... why? < 1168478187 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...oh wait.. < 1168478195 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :would !m22+^?spam?^; work? < 1168478212 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!m+22^)?spam?^; < 1168478214 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1168478216 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :nopw. < 1168478248 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :+22^?spam?^ wouldn't work because we're pushing values to a queue. < 1168478254 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or is it !m?spam?+22^^; without the new queue? < 1168478258 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1168478270 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1168478281 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the ^ would call +... which would add 2 and 2... and then it would call 4. < 1168478295 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :not knowing how the hell you can call a 4... it proceeds to explode. < 1168478342 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's a very very weird way to think... < 1168478349 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :totally unintuitive. < 1168478356 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1168478381 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the print, does it pop a queue and take values from there=? < 1168478390 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the syntax will oscillate between being stack-like and queue-like depending on where you're at. < 1168478406 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it pops the value off the top queue. < 1168478411 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :just one. < 1168478417 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :!m+22^)?spam?^; here you make 2 queues? < 1168478420 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1168478440 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you would use % to call ?spam? on everything in the top queue (% is the for-each command) < 1168478441 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah. < 1168478472 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :when a queue is depeleted of all values... and something attempts to pop off another value... it junks that queue and pops one off the queue below it. < 1168478484 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah okay < 1168478488 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :which is why that ?spam? call works. < 1168478502 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, why can't the param be in the same queue? < 1168478513 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :like in the hello, world < 1168478520 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :because of the order of evaluation. :D < 1168478531 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you had to set up + 2 2 into the queue to call that correctly... < 1168478543 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but... there's no way to fit in a ?spam? function -in front- of all of that... < 1168478572 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you have to make a new queue... plop ?spam? in that queue... and do a call from there... making it look kinda stack-based. < 1168478585 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but with the Hello, World! it looks like prefix notation. :D < 1168478586 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah okay, but here !m?spam?"Hello, World!\n" you first push the "spame", then the "hw", then because it's a FIFO, ^ reads the "spam", spam read "hw", right? < 1168478600 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yup < 1168478622 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I haven't cabbled much with multiple subroutines yet. < 1168478626 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but they all share the same scope. < 1168478631 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :like most stack-based languages. < 1168478670 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmm... some o ther commands... < 1168478672 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :coroutines here too? < 1168478677 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Nope. < 1168478685 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, wouldn't work that well < 1168478693 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because of the stack nature < 1168478695 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Not sure how it would work... since there's nothing you could return. < 1168478708 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you could return normally < 1168478712 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :by pushing < 1168478715 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :they're "procedures" more than they are "subroutines". < 1168478718 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but there wouldn't be much use < 1168478731 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :in the world of Stue... I call them ops. < 1168478739 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :because inventing vocabulary words is fun. < 1168478749 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah :) < 1168478757 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i made a bf for networking < 1168478802 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... . is the "pop an integer off the stack... and push the integer-th value of the queue onto the queue" command. < 1168478831 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and i made a 3D bf with the IP being a SPACESHIP (now that's REAL COOL, right?), then i made a lang called metafuck, where you can execute the memory with it's own nulled memory < 1168478833 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yay! < 1168478851 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is that a question? < 1168478863 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :no < 1168478867 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the . is just hard to see < 1168478874 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :haha... that sounds awesome. < 1168478887 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1168478891 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :/ which? < 1168478892 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :@ is the same thing as . but at the stack level... pop an integer off the queue, and get the integer-th queue and push it to the top of the stack. < 1168478895 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the spaceship BF < 1168478916 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, i like the network-thingie best, but you don't know just how sick it is. < 1168478918 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1168478932 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :@ and . are the only ways I've found to do conditionals so far... because the comparison operations all return either 1 or 0. < 1168478963 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you can use the 1 or 0 to conditionally "flip" between the top two queue... or the top two values on the top queue. < 1168478988 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, or any two values < 1168478998 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*queues or stack indexes < 1168479001 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not values < 1168479010 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*stack entrys, not indexes < 1168479024 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmm... other than that... there's some debugging command that just prints out the entire Stue... < 1168479032 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :can't remember what character it was. < 1168479036 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION checks his interpreter. < 1168479070 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :queue number A on cond, B otherwise -> cond*(A-B)+B @ < 1168479076 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, prefic < 1168479077 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*x < 1168479102 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :+*?cond?-ABB@ right? < 1168479104 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmm... < 1168479118 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :~ is the PRINTSTEW command... yup. < 1168479136 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :printstew? < 1168479146 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and crap between # are comments (allowed inline) < 1168479152 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the debugging command. < 1168479162 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it literally just prints out the entire data structure as Python would see it. < 1168479181 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1168479201 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :python has a lovely way to print tuples, lists etc < 1168479225 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :[blah, blah, (blah, blah, blah), blah] < 1168479233 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :How do other languages do it? < 1168479236 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :or can they do it at all? < 1168479254 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Interestingly Haskell has the exact same syntax for lists and strings < 1168479259 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i mean tuples < 1168479260 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1168479276 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Haskell's is nice too but i don't know it that well < 1168479283 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :does Haskell have hash tables? < 1168479291 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lists look the same too, or? < 1168479312 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Not standard, no. They are difficult to mix with its pure functionality. < 1168479324 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :heh... yeah < 1168479328 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :a language without variables... < 1168479333 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The Data.Map library uses binary trees. < 1168479336 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :makes it difficult to use a hash table effectively. < 1168479381 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wanna learn Haskell better :\ < 1168479390 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's like the coolest language :D < 1168479409 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Lua looks pretty interesting. < 1168479432 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Like Lisp with hash tables instead of lists. < 1168479442 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and Python-esque syntax. < 1168479678 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :BTW there are a couple of libraries providing variables in Haskell. All encapsulated in the infamous monads, of course. < 1168479752 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Lisp always has hash tables. < 1168479785 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Both Scheme and CL. < 1168479787 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :no no I meant. < 1168479797 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what Lisp does with lists... Lua does with hash tables. < 1168479805 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Eww. < 1168479810 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1168479840 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Hash tables are much more costly/processor-unfriendly than a linked list is unless you have many data entries that need to be specifically retreived. < 1168479873 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :That actually is pretty cool. Just too bad it's so much less efficient to use dictionaries for everything. < 1168479892 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: You do know how C implements hash tables right? < 1168479902 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Nope < 1168479914 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Go and learn about what a hash table really is. < 1168479925 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I only vageuly know how it works. < 1168479931 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :An array of pointers to linked lists, I believe. < 1168479938 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :No no. < 1168479942 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I know it associates the key to a "hash value"... but -how- it does all this linkage is beyond me. < 1168479947 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: Math. < 1168479960 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Using a set of bit-transforms upon the hash value to produce an array index. < 1168479967 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :+ a bit extra info. < 1168479983 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or possibly pointers to binary trees, I guess. < 1168480005 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Of course, there's always a chance for a misrefer, which is something you're going to suffer unless you implement a ``perfect'' hash table, whose math is more involved than I'm willing to casually talk about. < 1168480009 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :dictionaries are fairly fast for what they do. (lookup values paired to a key) < 1168480043 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :If only my NN which does 2 * 10^6 iterations of lookups and loops could say the same thing :) < 1168480079 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :pfft... anything would start to get stressed out under those numbers. < 1168480081 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I don't see how a collision-free hash table is mathematically possible. < 1168480090 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: It's ... complicated. < 1168480097 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Read Knuth's articles on the ``perfect'' hash table. < 1168480103 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... I've never actually had a misrefer occur... < 1168480107 0 :pikhq!n=pikhq@75.71.223.179 JOIN :#esoteric < 1168480107 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :seems fairly consistent every time. < 1168480128 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Those numbers perform fairly well under linked lists though CakeProphet. < 1168480160 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Code isn't always about playing with 80's network protocols in a Y2K world, remember that :P < 1168480196 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION plays entirely too much with telnet. < 1168480207 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :(I follow Cohen's philosophy -- hypothesize the highest load, the most iterations, the most memory lookups, the most of any stress. Make sure your program withstands that, and then it is truly a program.) < 1168480213 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's pretty annoying to work with. >.< < 1168480267 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :My philosophy is: make it do something... then bang it with a hammer until it can do it with 100000000000 times more shit. < 1168480287 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :My philosophy is simple: < 1168480298 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Get the program to work, and then get it to work *well*. < 1168480302 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh.. < 1168480310 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I thought you just had a blank program. < 1168480315 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :er.. < 1168480317 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :philosophy. < 1168480336 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ACTION dabbles with 60's network protocols... not 80's. < 1168480336 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Dunno. It's very rare that I can't get something to work in a very wasteful way. < 1168480357 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Let's allocate 100,000 element adjustable arrays! \o/ < 1168480379 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I use most of my own "protocols" actually... which is supposed to be bad for you, but oh well. < 1168480392 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's hard to use a network protocol that only you know... at any rate. :P < 1168480393 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Of course, inevitably for me the issue with "get the program to work first" is just that it turns out to be illegible as hell, not that it's really wasteful. < 1168480416 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :My legibiliity is alright. < 1168480429 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I admit, my TRAIN generic method here needs some more comments, but, meh. < 1168480435 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I've been told I make Python look like Perl... < 1168480437 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I'll comment it before I submit it to the judges :P < 1168480464 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Pre-rewrite BFM was a bastion of illegibility. < 1168480488 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Optimization and two targets combined in *one pass of compilation*. < 1168480511 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Meh. < 1168482722 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: You might be able to pickle the code object < 1168482812 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ihope: insert? < 1168482953 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: It would be easy to just store the source code of all ~execs < 1168483064 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :or inspect.getsource < 1168483135 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(__import__("inspect").getsource(self.print_callbacks)) < 1168483135 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : def print_callbacks(self): < 1168483136 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : pprint.pprint( < 1168483136 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue]) < 1168483138 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :neat < 1168483195 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.f = lambda x : x+1 < 1168483202 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(__import__("inspect").getsource(self.f)) < 1168483217 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :damn < 1168483236 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I guess that only works with code from a file < 1168483373 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec globals()["pprint"] = __import__("pprint") < 1168483386 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec pprint.pprint((1,2,3)) < 1168483393 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1168483504 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout( [i[1] for i in inspect.getmembers(self.f) if i[0] == "func_code"][0] ) < 1168483504 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : at 0xb7cc51e0, file "", line 1> < 1168483507 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :neat < 1168483537 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.the_code = [i[1] for i in inspect.getmembers(self.f) if i[0] == "func_code"][0] < 1168483551 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self.the_code.co_code) < 1168483551 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :| < 1168483554 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hmp < 1168483562 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :well there you go < 1168483570 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :pickle the code object < 1168483628 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec exec self.the_code < 1168483638 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec exec self.the_code(1) < 1168483652 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec exec self.the_code in {"x":1} < 1168483677 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec exec self.the_code.co_code < 1168483859 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I think the best bet is to store the string of source < 1168484010 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ah ha! < 1168484020 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(the_code) < 1168484025 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self.the_code) < 1168484025 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : at 0xb7cc51e0, file "", line 1> < 1168484031 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec del self.f < 1168484037 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self.f) < 1168484085 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.f = __import__("types").FunctionType(self.the_code, globals(), "f") < 1168484098 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(f) < 1168484103 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self.f) < 1168484103 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : < 1168484109 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self.f(1)) < 1168484110 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :2 < 1168484118 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yay!!!! < 1168484158 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :so you can get the function from the code object < 1168484163 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :well, there you have it < 1168484173 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :how to pickle functions < 1168485160 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ACTION feels clever < 1168485430 0 :CakeProphet!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1168485627 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1168486464 0 :pikhq!unknown@unknown.invalid QUIT :"leaving" < 1168488268 0 :digital_me_!n=digital@h-68-165-133-101.dnvtco56.dynamic.covad.net JOIN :#esoteric < 1168488471 0 :digital_me!unknown@unknown.invalid QUIT :Read error: 145 (Connection timed out) < 1168490369 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168490369 0 :bsmnt_bot!unknown@unknown.invalid QUIT : < 1168490372 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168490386 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks(sys.stderr) < 1168490387 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Excess Flood < 1168490389 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168490394 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1168490398 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :least I got something < 1168490548 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168490549 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168490551 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168490573 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw("test", lambda x : False) < 1168490593 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168490655 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(os.getuid()) < 1168490655 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :1343 < 1168490678 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168490742 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ok, scratch that idea < 1168490767 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :TypeError: can't pickle code objects < 1168490839 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1168490936 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :That's the saddest smiley I have seen. < 1168491059 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Back to pickling command strings I presume... < 1168491067 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :actually, no < 1168491104 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :after yelling at me for wanting to pickle functions, the people in #python told me that the marshal module could do it < 1168491145 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168491145 0 :bsmnt_bot!unknown@unknown.invalid QUIT : < 1168491147 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491158 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168491254 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168491256 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491302 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168491304 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491335 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168491340 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491379 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168491381 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168491436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :uuuh < 1168491436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.disconnect("") < 1168491436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :greaaaat < 1168491436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :uuuh < 1168491436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :DIE < 1168491436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168491436 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :... < 1168491437 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168491441 0 :bsmntbombdood!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1168491441 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491471 0 :bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood JOIN :#esoteric < 1168491482 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168491484 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491505 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :finally < 1168491505 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :foo < 1168491507 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ok bot is broken < 1168491515 0 :bsmntbombdood!unknown@unknown.invalid PART #esoteric :? < 1168491517 0 :bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood JOIN :#esoteric < 1168491519 0 :bsmntbombdood!unknown@unknown.invalid PART #esoteric :? < 1168491555 0 :bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood JOIN :#esoteric < 1168491575 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :??? < 1168491620 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :maybe it's just laggy < 1168491629 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1168491635 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168491643 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no errors... < 1168491649 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.load_callbacks("/bot/test.pickle") < 1168491655 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :error. < 1168491671 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168491672 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168491674 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491677 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.load_callbacks("/bot/test.pickle") < 1168491683 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :k < 1168491698 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw("testing", lambda x : False) < 1168491704 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168491720 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh no < 1168491738 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :the bork < 1168491762 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168491777 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168491780 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168491898 0 :bsmntbom1dood!n=gavin@abacus.kwzs.be JOIN :#esoteric < 1168491954 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Nick collision from services. < 1168491982 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168491985 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168492017 0 :bsmntbom1dood!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1168492022 0 :bsmntbom1dood!unknown@unknown.invalid PRIVMSG #esoteric :foo < 1168492037 0 :bsmntbom1dood!unknown@unknown.invalid NICK :bsmntbombdood < 1168492049 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :k < 1168492052 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :there's like 30 seconds lag < 1168492083 0 :digital_me_!unknown@unknown.invalid QUIT :"Lost terminal" < 1168492180 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, you are netsplitting a lot. < 1168492728 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Does anyone here have some elementary signal processing knowledge? < 1168492781 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Not much. < 1168492794 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I'll ask anyways :D < 1168492809 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Thought so :) < 1168492825 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :In a typical computer DSP system, does a low pass filter just perform a DFT on the time domain signal and junk the frequency points at which you cap the filter? < 1168492888 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :OK, I even misunderstood the subject - I somehow thought you were speaking of of Unix signals :) < 1168492899 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Meh :D < 1168492938 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Alas, I am completely blank on that question. < 1168492940 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi, that'd sound sensible. < 1168492964 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :I don't know, but... that's how i'd do it. < 1168493064 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(You can say anything you're now sure about as long as you remember to leave right after it ->) < 1168493090 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric ::DD < 1168493122 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :... ;D < 1168493274 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Well, wikipedia didn't seem to turn up anything specific. < 1168493344 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :It's not a very common let's-have-coffee-over-it topic. < 1168493461 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :This seems the most relevant: http://en.wikipedia.org/wiki/Lowpass_filter#Passive_digital_realization < 1168493550 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Actually it is rather specific, but whether it is frequently used it doesn't say. < 1168493616 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I'm not talking about a filter. < 1168493624 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I'm talking about a DFT and a chop-off. < 1168493719 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Also, http://en.wikipedia.org/wiki/Digital_filter < 1168493750 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :It mentions Fourier transforms and essentially chop-offs as well. < 1168493759 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Yup. That's good :) < 1168494002 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :foo < 1168494006 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :good, less lag < 1168494012 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :bar < 1168494012 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :let's try this again < 1168494016 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168494022 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1168494028 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw("testing", lambda x : False) < 1168494031 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168494039 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.load_callbacks("/bot/test.pickle") < 1168494055 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.print_callbacks() < 1168494060 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :What's that bot written in? Python I'm assuming? < 1168494062 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :crap < 1168494065 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: yeah < 1168494070 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Thought so. < 1168494076 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :well, that borks < 1168494079 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168494081 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168494126 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(pickle.load(open("/bot/test.pickle"))) < 1168494126 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :[(<_sre.SRE_Pattern object at 0xb7d15bf0>, 'c\x03\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00C\x00\x00\x00s\x1e\x00\x00\x00|\x00\x00i\x01\x00d\x01\x00|\x02\x00i\x03\x00d\x02\x00\x83\x01\x00\x16\x83\x01\x00\x01d\x00\x00S(\x03\x00\x00\x00Ns\x07\x00\x00\x00PONG %si\x01\x00\x00\x00(\x04\x00\x00\x00t\x04 < 1168494127 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Excess Flood < 1168494129 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168494170 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write([(i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle")))) < 1168494176 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write([(i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle"))) < 1168494188 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write([(i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle")])) < 1168494220 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write( [(i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle")] ) < 1168494248 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Ok, I must be really tired if I can't get that to work < 1168494256 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :bedtime < 1168494310 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout( [ (i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle"))] ) < 1168494310 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :[(<_sre.SRE_Pattern object at 0xb7cdfbf0>, ), (<_sre.SRE_Pattern object at 0x80d8660>, ), (<_sre.SRE_Pattern object at 0x80d8ea0>, ), (<_sre.SRE_Pattern object at 0x80d8898>, ), (<_sre.SRE_Pattern object at 0x80cde50>, ), (<_sr < 1168494311 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :e "/bot/ircbot.py", line 183>), (<_sre.SRE_Pattern object at 0x8057b20>, ), (<_sre.SRE_Pattern object at 0x80d2f60>, ), (<_sre.SRE_Pattern object at 0x80cd078>, , at 0xb7c588e0, file "", line 1>)] < 1168494317 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :That's what I wanted < 1168494327 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ok well night < 1168494334 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :feel free to play around with it < 1168494652 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Yay spam. < 1168494658 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yay < 1168495585 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.f_code = marshal.loads(pickle.load(open("/bot/test.pickle"))[0][1]) < 1168495596 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self.f_code) < 1168495597 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : < 1168495619 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.f = types.FunctionType(self.f_code, globals()) < 1168495624 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self.f) < 1168495625 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : < 1168495688 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.f() < 1168495705 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oooh, that's the problem < 1168495721 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't know if they are methods or not < 1168495780 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I wonder how to resolve this < 1168495975 0 :RodgerTheGreat!unknown@unknown.invalid QUIT : < 1168495986 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :How to make python think it's a method < 1168495995 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Put it in a class. < 1168496007 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Then it gets the wrong self < 1168496017 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ooh < 1168496155 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :methods are weird < 1168496164 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :if we duplicate that weirdness, we win < 1168496500 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argh, looks like we need to pickle the instance too < 1168496505 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168496506 0 :bsmnt_bot!unknown@unknown.invalid QUIT : < 1168496508 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168496522 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168496523 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Excess Flood < 1168496525 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168496590 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168496591 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168496593 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168496594 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168496595 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Excess Flood < 1168496598 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168496602 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1168496626 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168496627 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168496629 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168496630 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168496631 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168496633 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168496635 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168496636 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Excess Flood < 1168496638 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168496658 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168496659 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168496661 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168496662 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168496749 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : PicklingError: Can't pickle : it's not found as __builtin__.instancemethod < 1168496759 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no, stupid, it's types.MethodType < 1168496865 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :we will tackle this in the morning < 1168497672 0 :oerjan!unknown@unknown.invalid QUIT :"Good night" < 1168498704 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1168502399 0 :clog!unknown@unknown.invalid QUIT :ended < 1168502400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1168505338 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :For aspiring Lispers everywhere, here's code that automates the Trapezoidal Rule and Simpson's Rule of estimating the area under the curve between an upper-bound a lower-bound according to a curve expressesd as a function func split up into n intervals: (will paste) < 1168505437 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :http://paste.lisp.org/display/34869 < 1168505441 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Feel the power. < 1168506998 0 :ihope_!n=foo@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1168507744 0 :ihope!unknown@unknown.invalid QUIT :Connection timed out < 1168517248 0 :oklofok!i=okokokok@194.251.102.88 JOIN :#esoteric < 1168517295 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1168519776 0 :oklofok!unknown@unknown.invalid NICK :oklopol < 1168521113 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: bah. Haskell could do that in the same number of lines I suspect, or fewer. < 1168521178 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :You should be showing off the real powerof Lisp: macros. < 1168525139 0 :jix!n=jix@L62f0.l.strato-dslnet.de JOIN :#esoteric < 1168526302 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: (defun interval (low-bound up-bound n) (loop for i from low-bound to up-bound by (/ (- up-bound low-bound) n) collecting i)) < 1168526575 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Haskell: interval l h n = [l, l + step .. h] where step = (h - l) / n < 1168526614 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes < 1168536393 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1168536965 0 :ShadowHntr!unknown@unknown.invalid QUIT :Client Quit < 1168537608 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1168543157 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1168543282 0 :tgwizard!n=tgwizard@c-9b3ee155.178-1-64736c10.cust.bredbandsbolaget.se JOIN :#esoteric < 1168547225 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :I wonder how many people in the world are looking at the clock. < 1168547259 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :And I wonder how many people have claimed January 11 2007 3:23:30 PM my time to be their own personal second. < 1168547279 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :I'm not that greedy. I'm declaring the third tenth of it to be mine. < 1168547306 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :From January 11 2007 3:23:30.2 PM to January 11 2007 3:23:30.3 PM... < 1168548036 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :STOP HOGGING MY TIME! < 1168549131 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Well, wait a minute. < 1168549145 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Average lifespan divided by world population... < 1168549316 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Average lifespan seems to be 66 years. < 1168549369 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :According to Google, we end up with 0.319188164 seconds per person. < 1168549406 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Might as well round that down to 0.31415926535. < 1168549507 0 :ihope__!n=foo@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1168549535 0 :ihope__!unknown@unknown.invalid NICK :ihope < 1168549611 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Of course, the wealthy will get more time. < 1168550151 0 :CakeProphet!n=CakeProp@h33.250.213.151.ip.alltel.net JOIN :#esoteric < 1168550246 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so, basically you just took what's yours < 1168550467 0 :ihope_!unknown@unknown.invalid QUIT :Connection timed out < 1168552676 0 :ihope!unknown@unknown.invalid QUIT :"http://tunes.org/~nef/logs/esoteric/06.08.09" < 1168552898 0 :Sgeo!n=Sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1168553231 0 :CakeProphet_!n=CakeProp@h33.250.213.151.ip.alltel.net JOIN :#esoteric < 1168553309 0 :CakeProphet!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1168553315 0 :CakeProphet_!unknown@unknown.invalid NICK :CakeProphet < 1168553505 0 :jix!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1168556270 0 :Sgeo!unknown@unknown.invalid QUIT :Remote closed the connection < 1168557869 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1168558631 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168558657 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :#esoteric, where you can get your 0.3 seconds of fame... < 1168558677 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :? < 1168558686 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :See the recent logs < 1168558813 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :...? < 1168558976 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :What ihope_ said 2-3 hours ago. < 1168559050 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Ircbrowse is horribly slow today, unless it's me. < 1168559053 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1168559067 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168559067 0 :bsmnt_bot!unknown@unknown.invalid QUIT : < 1168559096 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168559098 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168559105 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yess < 1168559119 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.load_callbacks("/bot/test.pickle") < 1168559148 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1168559150 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168559157 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168559159 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168559169 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.load_callbacks("/bot/test.pickle") < 1168559196 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168559198 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168559203 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.load_callbacks("/bot/test.pickle") < 1168559215 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.print_callbacks() < 1168559221 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I DUN IT! < 1168559228 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168559229 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168559231 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168559246 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw("testing asdf", lambda x : False) < 1168559249 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.print_callbacks() < 1168559262 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168559265 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168559266 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168559268 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168559296 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, self.raw_regex_queue[-1] < 1168559297 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :(<_sre.SRE_Pattern object at 0x80c7cd8>, at 0xb7c254c4>) < 1168559301 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, self.raw_regex_queue[-1].pattern < 1168559313 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, self.raw_regex_queue[-1][0].pattern < 1168559314 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :^ERROR :Closing Link:.* < 1168559316 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :k < 1168559322 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.load_callbacks("/bot/test.pickle") < 1168559326 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec print >> sys.stdout, self.raw_regex_queue[-1][0].pattern < 1168559327 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :testing asdf < 1168559335 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :OOOOH HOO HOOO HOOOO! < 1168559339 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it worked! < 1168559361 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.raw_regex_queue.pop() < 1168559402 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.register_raw(".*#esoteric.*DIE BOT DIE.*", lambda x, y : True) < 1168559417 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.save_callbacks("/bot/test.pickle") < 1168559422 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1168559422 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1168559424 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168559429 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.load_callbacks("/bot/test.pickle") < 1168559435 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :DIE BOT DIE < 1168559436 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1168559437 0 :bsmnt_bot!n=bsmnt@abacus.kwzs.be JOIN :#esoteric < 1168559440 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :WOOO HOOOO < 1168559449 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I have succesfully serialized a function < 1168559476 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :I have successfully serialized YOUR MOM! < 1168559539 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1168559636 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it works! < 1168559896 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is bloody brilliant