←2007-01-03 2007-01-04 2007-01-05→ ↑2007 ↑all
00:01:43 -!- calamari has joined.
00:24:56 <bsmntbombdood> !ps
00:25:00 <EgoBot> 1 bsmntbombdood: ps
00:25:02 <bsmntbombdood> !ps a
00:25:06 <EgoBot> 1 bsmntbombdood: ps
00:25:13 <bsmntbombdood> !help
00:25:16 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:25:18 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
00:25:59 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
00:26:34 <bsmntbombdood> !daemon cat bf +[,.]
00:26:38 <bsmntbombdood> !cat foo
00:26:42 <EgoBot> foo
00:26:48 <bsmntbombdood> !cat bsmntbombdood
00:26:52 <EgoBot> bsmntbombdood
00:27:08 <bsmntbombdood> !cat bsmntbombdood
00:27:12 <EgoBot> bsmntbombdood
00:27:27 <CakeProphet> bf has one of the smallest Cat programs ever :P
00:27:27 <bsmntbombdood> thanks EgoBot
00:30:40 <oerjan> There are probably some languages where the empty program is a cat. Concatenative languages where the program is a function to turn input into output.
00:31:05 <calamari> you guys see any problem with this code?
00:31:08 <calamari> http://rafb.net/p/GCgLp467.html
00:32:40 -!- Yoshi-kun has joined.
00:32:53 -!- Yoshi-kun has changed nick to yoshibot.
00:36:22 -!- sebbu has quit ("@+").
00:36:40 <oerjan> It does not actually null out any links, so eventually you will access an already freed node. Or was that a rhetorical question?
00:37:11 <calamari> thanks
00:37:52 <calamari> so I should add temp = NULL;
00:38:04 <calamari> no..
00:38:53 <oerjan> Before the while loop, add a links -> prev = NULL, I think.
00:39:25 <calamari> how about links -> next = NULL; before the free
00:39:36 <calamari> no, then I don't free the last node
00:39:38 <calamari> hrm hehe
00:39:48 <oerjan> No, it is enough to do it on as single node, before you start.
00:39:59 <oerjan> to break the circularity.
00:40:04 <oerjan> *a
00:40:07 <calamari> but I'm not using prev
00:40:13 <calamari> (at least while freeing)
00:40:22 <oerjan> But you have it available.
00:40:53 <calamari> let me think about this.. I'm sure you're right I just don't quite get it yet :)
00:40:58 <oerjan> Oh, I meant links -> prev -> next = NULL.
00:41:12 <calamari> ahh
00:41:15 <calamari> that makes more sense :)
00:41:23 <oerjan> not sure if that's the right syntax.
00:41:28 <RodgerTheGreat_> bbl
00:41:33 -!- RodgerTheGreat_ has quit.
00:43:54 -!- oerjan has quit (Remote closed the connection).
00:44:05 -!- oerjan has joined.
00:58:20 <calamari> oerjan: seems to be right, thank you
00:58:31 <oerjan> You're welcome.
01:04:46 -!- Sukoshi has left (?).
01:04:50 -!- Sukoshi has joined.
01:05:49 <bsmntbombdood> !cat bsmntbombdood
01:05:53 <EgoBot> bsmntbombdood
01:05:58 <bsmntbombdood> wtf!
01:11:41 <oerjan> you seem strangely surprised.
01:11:56 <bsmntbombdood> yeah
01:12:10 * bsmntbombdood has lost a window
01:12:32 <oerjan> let me hope it was on the computer. :)
01:13:06 <bsmntbombdood> Yeah
01:13:18 <bsmntbombdood> !cat bsmntbombdood
01:13:21 <EgoBot> bsmntbombdood
01:13:29 <bsmntbombdood> !cat bsmntbombdood
01:13:33 <EgoBot> bsmntbombdood
01:13:39 <bsmntbombdood> owtf
01:18:30 <oerjan> !daemon dog !bf +[->,----------[>,----------]<[++++++++++.<]+]
01:18:33 <EgoBot> Huh?
01:19:00 <oerjan> !daemon dog bf +[->,----------[>,----------]<[++++++++++.<]+]
01:19:10 <oerjan> !dog bsmntbombdood
01:19:34 <oerjan> !undaemon dog
01:19:37 <EgoBot> doodbmobtnmsb
01:19:38 <oerjan> !ps d
01:19:39 <EgoBot> Process 2 killed.
01:19:40 * SimonRC goes (addictive: http://www.ophyr.nl/flash/games/hellbound.html)
01:19:43 <EgoBot> 1 bsmntbombdood: daemon cat bf
01:19:45 <EgoBot> 2 oerjan: ps
01:20:36 <oerjan> !daemon dog bf ++++++++++[---------->,----------[>,----------]<[++++++++++.<]++++++++++.]
01:20:40 <oerjan> !dog bsmntbombdood
01:20:43 <EgoBot> doodbmobtnmsb
01:20:57 <oerjan> !dog oerjan
01:21:01 <EgoBot> najreo
01:21:10 <oerjan> :)
01:21:20 <bsmntbombdood> !dog najreo
01:21:23 <EgoBot> oerjan
01:21:57 <bsmntbombdood> !dog kcus najreo
01:21:59 <EgoBot> oerjan suck
01:22:21 <bsmntbombdood> !dog skcus najreo
01:22:25 <EgoBot> oerjan sucks
01:22:33 <oerjan> !dog rammarg ruoy seod os
01:22:37 <EgoBot> so does your grammar
01:23:17 <bsmntbombdood> !dog lol
01:23:18 <oerjan> but that bf program sucks, it is far too long.
01:23:21 <EgoBot> lol
01:33:25 -!- oklofok has joined.
01:33:26 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
01:46:42 -!- oklofok has changed nick to oklopol.
01:54:52 -!- tgwizard has joined.
01:58:21 <ihope_> !dog god!
01:58:24 <EgoBot> !dog
01:58:28 <ihope_> Not that that really... well.
01:58:51 <ihope_> !dog !dog !dog !dog god! god! god! god!
01:58:56 <EgoBot> !dog !dog !dog !dog god! god! god!
01:59:00 <ihope_> Perfect!
02:00:16 <EgoBot> !dog !dog !dog god! god! god!
02:00:28 <EgoBot> !dog !dog !dog god! god!
02:04:43 <oerjan> !ps d
02:04:46 <EgoBot> 1 bsmntbombdood: daemon cat bf
02:04:48 <EgoBot> 2 oerjan: daemon dog bf
02:04:50 <EgoBot> 3 oerjan: ps
02:05:36 <oerjan> why did it stop after 3 lines but not before?
02:06:01 <ihope_> It... what?
02:06:10 <oerjan> !dog !dog god! tac!
02:06:14 <EgoBot> !cat !dog god!
02:06:20 <EgoBot> !dog !dog god! god!
02:06:22 <bsmntbombdood> :(
02:06:36 <EgoBot> !dog god!
02:06:59 <oerjan> there the 4th line arrived.
02:07:18 <EgoBot> !dog !dog god!
02:07:30 <EgoBot> !dog god!
02:08:00 <EgoBot> !dog
02:08:02 <oerjan> it is just delaying it. _or_ someone is cheating.
02:08:04 <EgoBot> !dog
02:08:48 <oerjan> i didn't know EgoBot parsed its own output
02:09:33 <oerjan> hmm...
02:09:34 <bsmntbombdood> nice
02:11:28 -!- EgoBot has quit (Excess Flood).
02:11:36 <ihope_> Wuh oh.
02:11:39 -!- EgoBot has joined.
02:11:42 <oerjan> what happened?
02:11:43 <ihope_> Whew.
02:11:49 <oerjan> !ps d
02:11:53 <EgoBot> 1 EgoBot: daemon cat reload
02:11:54 <ihope_> !bf +[.+]
02:11:54 <EgoBot> 2 EgoBot: daemon dog reload
02:11:56 <EgoBot> 3 oerjan: ps
02:11:58 <EgoBot> <CTCP>
02:12:14 <CakeProphet> Yeah... most bots simply parse everything on the channel.
02:12:18 <bsmntbombdood> lol
02:12:21 <CakeProphet> which includes themselves.
02:12:30 <ihope_> Most bots parse themselves?
02:12:34 <bsmntbombdood> no
02:12:46 <ihope_> The PRIVMSG isn't sent back to the client.
02:12:49 <bsmntbombdood> right
02:12:51 <CakeProphet> Ah.
02:12:58 <CakeProphet> It should :P
02:13:14 <ihope_> That would cause doubling in many client, I think.
02:13:15 <CakeProphet> that would serve as a way to test if you're actually connected.
02:13:20 <ihope_> And many clients, too.
02:13:23 <ihope_> /ping ihope_
02:13:38 <CakeProphet> Well of course it would... it's the current specification to simply echo the input
02:13:53 -!- bsmnt_bot has joined.
02:14:21 -!- bsmntbombdood has left (?).
02:14:33 -!- bsmntbombdood has joined.
02:14:35 <CakeProphet> !ps
02:14:38 <EgoBot> 3 CakeProphet: ps
02:14:46 <ihope_> Also, there's the actual PING messages.
02:14:46 <CakeProphet> !daemon
02:14:53 <bsmntbombdood> ~raw PRIVMSG #esoteric :I don't see my own messages
02:14:53 <bsmnt_bot> I don't see my own messages
02:14:58 <bsmntbombdood> yep
02:15:14 <CakeProphet> I mean... for the user.
02:15:14 <bsmntbombdood> PRIVMSGing doesn't get sent back to you
02:15:27 <CakeProphet> Just echoing input creates the illusion of being connected when you're not.
02:15:33 <CakeProphet> so it's hard to tell when the stream stops.
02:15:53 <ihope_> Most clients echo, you mean?
02:15:58 <ihope_> You type it, it displays it?
02:16:35 -!- tgwizard has quit (Remote closed the connection).
02:17:39 <oerjan> perhaps gregorR explicitly sends EgoBot's output back to it to make quines possible.
02:18:10 <ihope_> GregorR do--what?
02:18:23 <bsmntbombdood> oooh I want an EgoBot quine
02:18:32 <EgoBot> testing
02:18:38 <oerjan> ah.
02:18:42 <bsmntbombdood> I can write cat in python
02:18:57 <oerjan> i am strongly starting to suspect someone cheated.
02:19:09 <ihope_> !help
02:19:13 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
02:19:15 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
02:19:34 <ihope_> Yeah, it's pretty easy to cheat.
02:19:54 <oerjan> that would certainly explain the irregular, slow response
02:20:18 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % x.split("~cat ")[-1]))
02:20:21 <oerjan> heh :)
02:20:24 <bsmntbombdood> ~cat foo
02:20:24 <bsmnt_bot> foo
02:20:42 <oerjan> excuse me a moment
02:20:51 -!- IrpBot has joined.
02:20:58 <bsmntbombdood> lol
02:21:13 <ihope_> !cat ~cat !cat ~cat
02:21:17 <EgoBot> ~cat !cat ~cat
02:21:17 <bsmnt_bot> !cat ~cat
02:21:20 <EgoBot> ~cat
02:21:26 <bsmntbombdood> lol
02:21:28 <ihope_> I think I know which one's faster.
02:21:31 <GregorR> Wonderful X_X
02:21:34 * bsmntbombdood grins
02:21:40 <GregorR> IrpBot: THERE'S NO IRP ALLOWED HERE, F*** OFF
02:21:40 <oerjan> !id !dog tset di!
02:21:42 <EgoBot> Huh?
02:21:46 <ihope_> !dog !dog tac~ tac~
02:21:48 <EgoBot> ~cat ~cat god!
02:21:49 <GregorR> ihope_: EgoBot is not slow, it's purposely throttled.
02:21:49 <bsmnt_bot> god!
02:22:00 <ihope_> GregorR: close enough.
02:22:04 <ihope_> Also, that didn't work.
02:22:06 <oerjan> ah wait. bug.
02:22:09 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
02:22:19 <oerjan> !raw LEAVE #esoteric
02:22:27 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % x.split(":~cat ")[-1]))
02:22:30 <bsmntbombdood> there
02:22:50 <oerjan> hmph.
02:22:54 <bsmntbombdood> meh I should do it the right way
02:22:56 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
02:22:59 <ihope_> GregorR: you know, if a !cat +.[+.] can kill it...
02:23:18 <oerjan> i forgot that IrpBot always writes to #irp, even if I join it here
02:23:21 <ihope_> (A !cat +[.+] can kill it too, by the way.)
02:23:54 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(0)))
02:24:01 <bsmntbombdood> ~cat ~cat foo
02:24:01 <bsmnt_bot> :bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~cat ~cat foo
02:24:14 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
02:24:16 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
02:24:20 <bsmntbombdood> ~cat ~cat foo
02:24:20 <bsmnt_bot> ~cat foo
02:24:38 <bsmntbombdood> thar
02:24:49 <ihope_> Now, lemme think...
02:25:10 <ihope_> !dog ~cat god! tac~
02:25:13 <EgoBot> ~cat !dog tac~
02:25:13 <bsmnt_bot> !dog tac~
02:25:15 <bsmntbombdood> ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:25:15 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat foo
02:25:17 <EgoBot> ~cat
02:25:19 <EgoBot> ~cat !cat ~cat !cat ~cat !cat foo
02:25:19 <bsmnt_bot> !cat ~cat !cat ~cat !cat foo
02:25:20 -!- IrpBot has left (?).
02:25:23 <EgoBot> ~cat !cat ~cat !cat foo
02:25:23 <bsmnt_bot> !cat ~cat !cat foo
02:25:25 <ihope_> Whee.
02:25:27 <EgoBot> ~cat !cat foo
02:25:27 <bsmnt_bot> !cat foo
02:25:29 <bsmntbombdood> chaos ensues
02:25:31 <EgoBot> foo
02:26:21 <bsmntbombdood> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:22 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:25 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:25 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:27 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:27 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:31 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:31 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:33 <EgoBot> ~cat !cat ~cat !cat ~cat !cat foo
02:26:33 <bsmnt_bot> !cat ~cat !cat ~cat !cat foo
02:26:35 <EgoBot> ~cat !cat ~cat !cat foo
02:26:35 <bsmnt_bot> !cat ~cat !cat foo
02:26:37 <EgoBot> ~cat !cat foo
02:26:37 <bsmnt_bot> !cat foo
02:26:39 <EgoBot> foo
02:26:40 <ihope_> cat = badger?
02:26:50 <bsmntbombdood> yay!
02:27:06 <ihope_> ~cat ~cat ~cat
02:27:06 <bsmnt_bot> ~cat ~cat
02:27:10 <ihope_> Yay.
02:27:17 <bsmntbombdood> bsmnt_bot doesn't see its own ouput
02:27:34 <ihope_> Remember, bot-writers, send your replies with NOTICE!
02:27:58 <bsmntbombdood> ~raw NOTICE #esoteric :no
02:29:07 <ihope_> That's what the RFC says to do, after all.
02:29:38 <bsmntbombdood> nope
02:29:42 <bsmntbombdood> look at the regex
02:29:44 <ihope_> Also never automatically respond to a NOTICE.
02:30:03 <bsmntbombdood> r"\S+ PRIVMSG #esoteric :~cat .*"
02:30:12 <bsmntbombdood> PRIVMSG only
02:30:18 <ihope_> ~cat
02:30:27 <jix> ~raw NOTICE #esoteric :test
02:31:01 <ihope_> ~cat foo
02:31:02 <bsmnt_bot> foo
02:31:14 <ihope_> Just a second, eh?
02:31:15 -!- ihope_ has left (?).
02:31:25 -!- ihope_ has joined.
02:31:32 <bsmntbombdood> lol
02:31:39 <bsmntbombdood> #EsOtErIc, eh?
02:31:44 <ihope_> ~cat foo
02:31:44 <bsmnt_bot> foo
02:31:46 <ihope_> Yep.
02:31:50 <ihope_> Silly bot.
02:31:53 <bsmntbombdood> no
02:32:07 <bsmntbombdood> ircd converts all the channel names to lower case
02:32:09 <ihope_> ...I mean non-silly bot.
02:32:16 <ihope_> Or something.
02:33:51 <oerjan> ~cat !dog Testing... god! tac~ tac! tac~
02:33:51 <bsmnt_bot> !dog Testing... god! tac~ tac! tac~
02:33:55 <EgoBot> ~cat !cat ~cat !dog ...gnitseT
02:33:55 <bsmnt_bot> !cat ~cat !dog ...gnitseT
02:33:59 <EgoBot> ~cat !dog ...gnitseT
02:33:59 <bsmnt_bot> !dog ...gnitseT
02:34:03 <EgoBot> Testing...
02:34:08 <bsmntbombdood> :D
02:34:24 <bsmntbombdood> bot feedback!
02:35:20 <ihope_> sdrawkcab ,lol
02:36:03 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~loop.*", lambda x : bot.raw("PRIVMSG #esoteric :!cat ~loop"))
02:36:06 <bsmntbombdood> ~loop
02:36:07 <bsmnt_bot> !cat ~loop
02:36:09 <EgoBot> ~loop
02:36:09 <bsmnt_bot> !cat ~loop
02:36:13 <EgoBot> ~loop
02:36:13 <bsmnt_bot> !cat ~loop
02:36:17 <EgoBot> ~loop
02:36:17 <bsmnt_bot> !cat ~loop
02:36:21 <EgoBot> ~loop
02:36:21 <bsmnt_bot> !cat ~loop
02:36:25 <bsmntbombdood> lolz
02:36:25 <EgoBot> ~loop
02:36:25 <bsmnt_bot> !cat ~loop
02:36:29 <EgoBot> ~loop
02:36:29 <bsmnt_bot> !cat ~loop
02:36:32 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
02:36:33 <EgoBot> ~loop
02:37:02 <oerjan> hm...
02:37:17 <oerjan> a dangerous one:
02:38:01 <oerjan> nah wait
02:38:25 <oerjan> !help
02:38:27 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
02:38:29 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
02:49:43 <oerjan> !daemon dup bf ++++[->++++++++<]>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>[.>]++++++++++.[<]+]
02:49:48 <oerjan> !dup test
02:49:51 <EgoBot> *test
02:50:11 <oerjan> hm, that was rather unusual
02:50:34 <bsmntbombdood> ?
02:50:39 <oerjan> ah
02:50:46 <oerjan> !undaemon dup
02:50:49 <EgoBot> Process 3 killed.
02:51:03 <oerjan> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>[.>]++++++++++.[<]+]
02:51:12 <oerjan> !dup test
02:51:15 <EgoBot> test
02:51:27 <bsmntbombdood> ...?
02:51:40 * oerjan sighs
02:53:38 <bsmntbombdood> ~raw PRIVMSG #esoteric :
02:53:41 <bsmntbombdood> ~raw PRIVMSG #esoteric :
02:53:56 <bsmntbombdood> hmm
02:54:16 <oerjan> !dup test
02:54:19 <EgoBot> test
02:54:24 <oerjan> !undaemon dup
02:54:28 <EgoBot> Process 3 killed.
02:54:53 <oerjan> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
02:55:02 <oerjan> now then
02:55:04 <oerjan> !dup test
02:55:07 <EgoBot> test test
02:55:12 <oerjan> :)
02:56:07 <oerjan> ~cat !dup test
02:56:07 <bsmnt_bot> !dup test
02:56:09 <EgoBot> test test
02:56:20 <oerjan> should i dare?
02:56:29 <oerjan> ~cat !dup ~cat !dup
02:56:29 <bsmnt_bot> !dup ~cat !dup
02:56:31 <EgoBot> ~cat !dup ~cat !dup
02:56:31 <bsmnt_bot> !dup ~cat !dup
02:56:35 <EgoBot> ~cat !dup ~cat !dup
02:56:36 <bsmnt_bot> !dup ~cat !dup
02:56:39 <EgoBot> ~cat !dup ~cat !dup
02:56:39 <bsmnt_bot> !dup ~cat !dup
02:56:43 <EgoBot> ~cat !dup ~cat !dup
02:56:44 <bsmnt_bot> !dup ~cat !dup
02:56:47 <EgoBot> ~cat !dup ~cat !dup
02:56:48 <bsmnt_bot> !dup ~cat !dup
02:56:49 <oerjan> !undaemon dup
02:56:51 <bsmntbombdood> lol
02:56:51 <EgoBot> Process 3 killed.
02:56:53 <EgoBot> ~cat !dup ~cat !dup
02:56:54 <bsmnt_bot> !dup ~cat !dup
02:56:55 <EgoBot> Huh?
02:57:06 <oerjan> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
02:57:32 <oerjan> i believe we have an iterating quine :)
02:58:35 <bsmntbombdood> :)
02:59:31 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
03:03:00 <bsmntbombdood> ~cat naughty clever oerjan
03:03:00 <bsmnt_bot> naughty clever oerjan
03:05:33 <CakeProphet> ~dup ah
03:05:38 <CakeProphet> ~dup ~cat ah
03:05:49 <CakeProphet> !dup ~cat ah
03:05:51 <EgoBot> ~cat ah ~cat ah
03:05:52 <bsmnt_bot> ah ~cat ah
03:07:13 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.match(x, r"\S+ PRIVMSG #esoteric :~dup (.*)").group(1)))
03:07:17 <bsmntbombdood> ~dup foo
03:07:18 -!- bsmnt_bot has quit (Remote closed the connection).
03:07:43 <CakeProphet> !dog god! rac!
03:07:45 -!- bsmnt_bot has joined.
03:07:46 <EgoBot> !car !dog
03:07:52 <CakeProphet> !dog god! rat!
03:07:54 <oerjan> not quite so clever :)
03:07:56 <EgoBot> !tar !dog
03:08:00 <CakeProphet> "{
03:08:00 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)))
03:08:04 <bsmntbombdood> ~dup foo
03:08:04 <bsmnt_bot> foo
03:08:18 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)*2))
03:08:32 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:08:32 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:08:33 <CakeProphet> ~exec self.register_raw(r"
03:08:34 <CakeProphet> er..
03:08:39 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)*2))
03:08:45 <bsmntbombdood> ~dup foo
03:08:45 <bsmnt_bot> fooPRIVMSG #esoteric :foo
03:08:59 <oerjan> ~cat Is this still working?
03:09:22 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % (re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1))*2))
03:09:25 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:09:26 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % (re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1))*2))
03:09:30 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:09:30 <bsmntbombdood> ~dup foo
03:09:30 <bsmnt_bot> fooPRIVMSG #esoteric :foo
03:09:34 <bsmntbombdood> argh
03:09:55 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:09:57 <oerjan> are you trying to make two lines?
03:10:02 <bsmntbombdood> no
03:10:25 <CakeProphet> You should keep all the regexes that are used in the register_raw() thing handy.
03:10:39 <CakeProphet> so you can backreference in the lambda.
03:11:07 <bsmntbombdood> yeah, not sure what a good way to do that is though
03:11:10 <oerjan> in other words but .* in a second group.
03:11:31 <CakeProphet> or better yet... make some convience function for simple commands.
03:11:34 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % (re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)*2)))
03:11:40 <bsmntbombdood> ~dup foo
03:11:40 <bsmnt_bot> foofoo
03:11:43 <bsmntbombdood> ~dup foo
03:11:44 <bsmnt_bot> foofoo
03:12:01 <oerjan> hm...
03:12:15 <CakeProphet> !dup !dup
03:12:18 <EgoBot> !dup !dup
03:12:20 <bsmntbombdood> my irc client or the irc proto strips trailing spaces
03:12:29 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:12:37 <CakeProphet> ~dup ~dup
03:12:44 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ((re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)+" ")*2)))
03:12:44 <CakeProphet> :(
03:12:48 <bsmntbombdood> ~dup foo
03:12:49 <bsmnt_bot> foo foo
03:12:53 <bsmntbombdood> ~dup ~dup
03:12:54 <bsmnt_bot> ~dup ~dup
03:12:54 <CakeProphet> ~dup ~dup
03:12:54 <bsmnt_bot> ~dup ~dup
03:12:57 <CakeProphet> :D
03:13:06 <bsmntbombdood> ~dup !dup
03:13:06 <bsmnt_bot> !dup !dup
03:13:08 <CakeProphet> if it parsed itself... that would be a simple quine.
03:13:10 <EgoBot> !dup !dup
03:13:47 <bsmntbombdood> ~dup !dup ~dup
03:13:47 <bsmnt_bot> !dup ~dup !dup ~dup
03:13:50 <EgoBot> ~dup !dup ~dup ~dup !dup ~dup
03:13:50 <CakeProphet> ~dup ~cat ~dup ~cat
03:13:50 <bsmnt_bot> !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
03:13:50 <bsmnt_bot> ~cat ~dup ~cat ~cat ~dup ~cat
03:13:54 <EgoBot> ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
03:13:54 <bsmnt_bot> ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
03:14:00 <CakeProphet> hahaha
03:14:13 <bsmntbombdood> argh, leading space
03:14:17 <CakeProphet> !dup ~dup
03:14:20 <EgoBot> ~dup ~dup
03:14:20 <bsmnt_bot> ~dup ~dup
03:14:35 <bsmntbombdood> !dup ~dup !dup
03:14:38 <EgoBot> ~dup !dup ~dup !dup
03:14:39 <bsmnt_bot> !dup ~dup !dup !dup ~dup !dup
03:14:42 <EgoBot> ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:14:42 <bsmnt_bot> !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:14:46 <EgoBot> !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:14:50 <CakeProphet> hahaha
03:14:54 <CakeProphet> love it
03:15:03 <bsmntbombdood> exponetial growth!
03:15:18 <CakeProphet> wonder what pattern it follows to stop like that.
03:15:28 <bsmntbombdood> yeah that's odd
03:15:54 <bsmntbombdood> !dup !dup ~dup !dup
03:15:58 <EgoBot> !dup ~dup !dup !dup ~dup !dup
03:16:08 <bsmntbombdood> !dup ~dup !dup !dup ~dup !dup
03:16:10 <EgoBot> ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:16:10 <bsmnt_bot> !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:16:13 <CakeProphet> !dup ~dup !dup ~dup !dup
03:16:14 <EgoBot> !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:16:16 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:16 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:20 <EgoBot> ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:20 <bsmnt_bot> !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:22 <EgoBot> ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d
03:16:22 <bsmnt_bot> !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:24 <EgoBot> ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d !dup ~dup
03:16:24 <bsmnt_bot> !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup
03:16:25 <CakeProphet> There we go.
03:16:26 <EgoBot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d !dup ~dup !dup !dup
03:16:35 <bsmntbombdood> or not
03:16:40 <CakeProphet> aha
03:16:45 <CakeProphet> it's like a cellular automaton.
03:16:54 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
03:16:55 <bsmntbombdood> ~dup !dup ~dup ~dup
03:16:55 <bsmnt_bot> !dup ~dup ~dup !dup ~dup ~dup
03:17:00 <EgoBot> ~dup ~dup !dup ~dup ~dup ~dup ~dup !dup ~dup ~dup
03:17:00 <bsmnt_bot> ~dup !dup ~dup ~dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup ~dup ~dup ~dup !dup ~dup ~dup
03:17:01 <CakeProphet> hmm... I feel insipiration for an esoteric language.
03:17:03 <oerjan> if it is not to stop (apart from flooding) then there must never be two following ! or two following ~
03:17:13 <bsmntbombdood> yeah
03:17:25 <CakeProphet> !dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:28 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:28 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:29 <oerjan> so the length must always be, hm, odd
03:17:32 <EgoBot> ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:32 <bsmnt_bot> !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup
03:17:36 <EgoBot> ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:36 <bsmnt_bot> !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~
03:17:40 <EgoBot> ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
03:17:40 <bsmnt_bot> ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~
03:17:46 <CakeProphet> hmmm..
03:17:47 <bsmntbombdood> and fail
03:17:54 <bsmntbombdood> oerjan: But it can't be
03:18:07 <CakeProphet> There should be an esolang based off of this.
03:18:15 <CakeProphet> two interpreters that interpreter the output of each other.
03:18:43 <oerjan> there's a proof then.
03:18:44 <bsmntbombdood> brainfuck-brainfuck?
03:19:35 <oerjan> and of course with incompatible languages
03:19:40 <CakeProphet> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:19:42 -!- puzzlet has joined.
03:19:44 <bsmntbombdood> interpert the program, recurse untill there are no brainfuck chars left
03:19:44 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:19:44 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:19:48 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:19:48 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !
03:19:52 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~
03:19:52 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup
03:19:56 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup
03:19:56 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:20:00 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup
03:20:00 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup
03:20:04 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup !dup ~du
03:20:18 <CakeProphet> That might have been it :D
03:20:21 <oerjan> what i wonder is if it is possible to get a dog in there.
03:21:15 <bsmntbombdood> of course, any valid brainfuck program is the same in brainfuck-brainfuck, so it's boring
03:21:42 <CakeProphet> ~dup !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:21:42 <bsmnt_bot> !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:21:46 <EgoBot> ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:21:56 <CakeProphet> aw...
03:22:23 <CakeProphet> ~dup !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:22:23 <bsmnt_bot> !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:22:26 <EgoBot> ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:22:26 <bsmnt_bot> !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !p
03:22:30 <EgoBot> p! dup~ god! pud~ pud! dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! pud~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! pud~ pud! dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! pud~ pud! dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! pud~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup!
03:22:36 <bsmntbombdood> p!!!!!!!!!!1
03:23:19 <CakeProphet> ~dup !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud!
03:23:20 <bsmnt_bot> !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud!
03:23:23 <oerjan> stripped for being too long
03:23:24 <EgoBot> ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud!
03:23:24 <bsmnt_bot> !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !p
03:23:28 <EgoBot> p! dup~ god! pud~ pud! !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! pud~ !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! pud~ pud! !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! pud~ pud! !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! pud~ !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup!
03:23:33 <CakeProphet> p!
03:23:37 <bsmntbombdood> ~dup !dog !god pud~
03:23:37 <bsmnt_bot> !dog !god pud~ !dog !god pud~
03:23:40 <EgoBot> ~dup dog! god! ~dup dog!
03:23:45 <CakeProphet> Maybe the occurance of a p! is what causes something to happen.
03:24:04 <bsmntbombdood> arg, the spaces
03:24:05 <CakeProphet> If an interpreter halts on p! ...something changes... but the input alters in some way as well.
03:24:14 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:24:59 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup\s+.*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ((re.match(r"\S+ PRIVMSG #esoteric :~dup\s+(.*)", x).group(1)+" ")*2)))
03:25:00 <oerjan> nothing wrong about the spaces, the double ones were put in at the start
03:25:06 <bsmntbombdood> we can cheat
03:25:14 <oerjan> but there is no need
03:25:18 <bsmntbombdood> ~dup !dog !god pud~
03:25:18 <bsmnt_bot> !dog !god pud~ !dog !god pud~
03:25:22 <EgoBot> ~dup dog! god! ~dup dog!
03:25:40 <bsmntbombdood> oerjan: huh?
03:25:43 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:25:55 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ((re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)+" ")*2)))
03:26:00 <bsmntbombdood> there, no spaces
03:26:05 <oerjan> ah, you multiply and get a space at the end
03:26:17 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
03:26:22 <oerjan> ~dup !dog test
03:26:26 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ((re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)+" ")*2).strip()))
03:26:42 <oerjan> ~dup !dog test
03:26:42 <bsmnt_bot> !dog test !dog test
03:26:46 <EgoBot> tset god! tset
03:26:48 <bsmntbombdood> wow that's some UGLY code
03:27:50 <oerjan> you definitely need to put a function in your bot to pick just the part after the colon.
03:28:14 <bsmntbombdood> But that is going to be different
03:28:30 <bsmntbombdood> depending on PRIVMSG, NOTICE, whatever
03:28:57 <oerjan> i don't mean for the initial regex, but for convenience in the remaining part
03:29:33 <bsmntbombdood> What should I call it?
03:29:54 <CakeProphet> hmm...
03:29:55 <oerjan> in IrpBot it's called clean
03:30:02 <CakeProphet> if you had three interpreters with different symnols for different commands.
03:30:05 <bsmntbombdood> privmsg_message?
03:30:16 <oerjan> one of the functions defined by the code i snatched
03:30:52 <oerjan> or just message. it could be convenient for the others too.
03:32:32 <bsmntbombdood> ~quit update
03:32:32 -!- bsmnt_bot has quit ("update").
03:32:37 -!- bsmnt_bot has joined.
03:33:00 <bsmntbombdood> sample
03:33:14 <bsmntbombdood> ~exec print message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :sample")
03:33:39 <bsmntbombdood> oops conflict
03:33:53 -!- bsmnt_bot has quit (Remote closed the connection).
03:33:56 -!- bsmnt_bot has joined.
03:34:02 -!- bsmnt_bot has quit (Remote closed the connection).
03:34:10 <bsmntbombdood> ~exec print get_message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :sample")
03:34:16 -!- ihope_ has quit (Operation timed out).
03:34:20 -!- bsmnt_bot has joined.
03:34:23 <bsmntbombdood> ~exec print get_message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :sample")
03:34:26 <bsmntbombdood> good
03:34:30 <bsmntbombdood> ~exec print get_message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :sample:sample")
03:34:36 <bsmntbombdood> good
03:36:34 <bsmntbombdood> 3 lines of code
03:38:06 <bsmntbombdood> ~exec __import__("time").sleep(60)
03:38:18 <bsmntbombdood> ~raw PRIVMSG #esoteric :foo
03:38:22 <CakeProphet> hmmm..
03:38:32 <bsmntbombdood> I should put execs in their own thread
03:38:32 <CakeProphet> the formula for number of dups each run is.
03:38:39 <CakeProphet> (2d) - 1
03:38:41 <CakeProphet> so...
03:38:48 <CakeProphet> I don't think it would spawn infinitely...
03:39:07 <bsmnt_bot> foo
03:39:16 <bsmntbombdood> ABOUT TIME! :P
03:39:33 <bsmntbombdood> I bet I could make it SendQ out
03:39:38 <bsmntbombdood> ~exec __import__("time").sleep(120)
03:39:59 <CakeProphet> actually...
03:40:09 <CakeProphet> 2(d-1)
03:40:15 <CakeProphet> obviously. :P
03:42:32 <bsmntbombdood> or not
03:43:56 * bsmntbombdood puts in threads
03:46:20 <bsmntbombdood> ~quit bsmntbombdood is leet
03:46:21 -!- bsmnt_bot has quit ("bsmntbombdood is leet").
03:46:55 <bsmntbombdood> stupid python lambdas
03:47:40 <NK`> do you guys know how is done an modulo in assembly language
03:47:43 <NK`> I means
03:47:51 -!- bsmnt_bot has joined.
03:47:57 <bsmntbombdood> ~exec __import__("time").sleep(120)
03:47:57 -!- bsmnt_bot has quit (Remote closed the connection).
03:48:01 <NK`> how gcc translate a modulo
03:48:16 <bsmntbombdood> NK`: Use the -S option and find out
03:48:38 <NK`> and is it the best for telling if a division
03:48:39 -!- bsmnt_bot has joined.
03:48:42 <bsmntbombdood> ~exec __import__("time").sleep(120)
03:48:43 -!- bsmnt_bot has quit (Remote closed the connection).
03:48:48 <NK`> is how do you say "right"
03:49:00 <NK`> I mean enclydienne
03:49:14 <NK`> euclydien
03:49:29 <NK`> euclidien* sorry
03:49:37 <NK`> bsmntbombdood: I was thinking about it
03:49:42 <NK`> I'm going into
03:50:20 -!- bsmnt_bot has joined.
03:50:22 <bsmntbombdood> ~exec __import__("time").sleep(120)
03:50:34 <bsmntbombdood> ~raw PRIVMSG #esoteric :yay, threads
03:50:35 <bsmnt_bot> yay, threads
03:50:37 <bsmntbombdood> yay
03:50:43 <oerjan> ~dup test
03:50:47 <oerjan> !dup test
03:50:51 <EgoBot> test test
03:51:01 <oerjan> ~cat test
03:51:08 <bsmntbombdood> Those commands don't persist
03:55:13 <NK`> idivl -8(%ebp)
03:55:13 <NK`> movl %edx, %eax
03:55:13 <NK`> movl %eax, c
03:57:26 <NK`> !I think it 's optimized
03:57:29 <EgoBot> Huh?
03:58:47 <calamari> I wish I knew whether these bugs were due to c or the ipod .. hehe
03:59:46 <bsmntbombdood> great regex: r"^:(?P<nick>\S+)!(?P<ident>\S+)@(?P<host>\S+) (?P<command>\S+) (?P<channel>\S+) :(?P<message>.*)"
04:03:30 <bsmntbombdood> ~quit more code
04:03:30 -!- bsmnt_bot has quit ("more code").
04:03:34 -!- bsmnt_bot has joined.
04:03:58 <bsmntbombdood> ~exec print message
04:04:24 <bsmntbombdood> hmm
04:04:40 <bsmntbombdood> ~exec print self.get_message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :hmm")
04:04:48 <bsmntbombdood> crap
04:04:56 <bsmntbombdood> threading introduces scope problems
04:11:59 -!- bsmnt_bot has quit (Remote closed the connection).
04:12:03 -!- bsmnt_bot has joined.
04:12:13 <bsmntbombdood> ~exec print locals(),globals()
04:12:59 <bsmntbombdood> ~exec print self
04:13:04 <bsmntbombdood> urgh
04:13:58 -!- bsmnt_bot has quit (Remote closed the connection).
04:14:02 -!- bsmnt_bot has joined.
04:14:06 <bsmntbombdood> ~exec print self
04:14:13 <bsmntbombdood> what. the. fuck
04:14:53 -!- bsmnt_bot has quit (Remote closed the connection).
04:15:04 -!- bsmnt_bot has joined.
04:15:05 <bsmntbombdood> ~exec print self
04:15:10 <bsmntbombdood> THERE
04:15:21 <bsmntbombdood> ~exec print locals(),globals()
04:15:58 <bsmntbombdood> ~exec __import__("pprint").pprint([locals(),globals()])
04:17:13 -!- bsmnt_bot has quit (Remote closed the connection).
04:17:35 -!- bsmnt_bot has joined.
04:18:07 <bsmntbombdood> ~exec print self.get_message(message)
04:18:12 <bsmntbombdood> GOOOOD
04:18:54 <bsmntbombdood> ~exec import time
04:18:59 <bsmntbombdood> ~exec print time
04:19:03 <bsmntbombdood> or not
04:26:36 -!- CakeProphet has quit (Read error: 113 (No route to host)).
05:32:17 * pikhq consideres a rewrite for !dog
05:34:52 <bsmntbombdood> wtf, python strings don't have a reverse method
05:35:31 <pikhq> ++++++++++[[>+<-]>[>,----------]<[++++++++++.<]++++++++++.]
05:35:43 <pikhq> Not much shorter, but hey; it's a start.
05:36:20 <pikhq> . . .
05:36:38 <pikhq> ++++++++++[[>-<-]>[>,----------]<[++++++++++.<]++++++++++.]
05:36:47 <pikhq> ++++++++++[[>-<-],>[>,----------]<[++++++++++.<]++++++++++.] even
05:36:57 <pikhq> ++++++++++[[>-<-]>,[>,----------]<[++++++++++.<]++++++++++.] even
05:36:58 * pikhq sucks
05:47:46 <bsmntbombdood> ~exec x=1
05:47:48 <bsmntbombdood> !print x
05:47:51 <EgoBot> Huh?
05:47:55 <bsmntbombdood> ~exec print x
05:48:13 <bsmntbombdood> ~~~~~~~~~~~~~~~~~~~~~~
05:50:18 <pikhq> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
05:51:21 <pikhq> !cat ~cat !dup ~cat !dup
05:51:23 <EgoBot> ~cat !dup ~cat !dup
05:51:34 * pikhq watches the bots go boom
05:51:59 <pikhq> !cat !cat
05:52:00 <bsmntbombdood> ~exec self.register_raw(r"^\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"^\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
05:52:01 <EgoBot> !cat
05:52:06 <bsmntbombdood> ~cat foo
05:52:07 -!- bsmnt_bot has quit (Remote closed the connection).
05:52:12 <pikhq> LMAO
05:52:15 -!- bsmnt_bot has joined.
05:52:21 <bsmntbombdood> ~exec self.register_raw(r"^\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : self.raw("PRIVMSG #esoteric :%s" % re.compile(r"^\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
05:52:25 <bsmntbombdood> ~cat foo
05:52:25 -!- bsmnt_bot has quit (Remote closed the connection).
05:52:28 <bsmntbombdood> fuck
05:52:49 <bsmntbombdood> threading ~exec's messes up scope
05:53:02 -!- bsmnt_bot has joined.
05:53:28 -!- bsmnt_bot has quit (Remote closed the connection).
05:53:39 -!- bsmnt_bot has joined.
05:53:48 <bsmntbombdood> ~exec self.THREADING = False
05:54:11 <pikhq> !cat ~cat !dup ~cat !dup
05:54:15 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % self.THREADING)
05:54:15 <bsmnt_bot> False
05:54:15 <EgoBot> ~cat !dup ~cat !dup
05:54:18 <bsmntbombdood> ~exec self.register_raw(r"^\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : self.raw("PRIVMSG #esoteric :%s" % re.compile(r"^\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
05:54:25 <bsmntbombdood> ~cat foo
05:54:25 -!- bsmnt_bot has quit (Remote closed the connection).
05:54:26 <pikhq> !cat ~cat !dup ~cat !dup
05:54:29 <EgoBot> ~cat !dup ~cat !dup
05:54:31 <pikhq> Victory?
05:54:33 <bsmntbombdood> ~exec self.THREADING = False
05:54:33 -!- bsmnt_bot has joined.
05:54:40 <bsmntbombdood> ~exec self.register_raw(r"^\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"^\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
05:54:42 <pikhq> I don't think that works.
05:54:44 <bsmntbombdood> ~cat foo
05:54:44 <bsmnt_bot> foo
05:54:47 <pikhq> !cat ~cat !dup ~cat !dup
05:54:50 <pikhq> Finally.
05:54:52 <EgoBot> ~cat !dup ~cat !dup
05:54:52 <bsmnt_bot> !dup ~cat !dup
05:54:55 <EgoBot> ~cat !dup ~cat !dup
05:54:56 <bsmnt_bot> !dup ~cat !dup
05:54:59 <EgoBot> ~cat !dup ~cat !dup
05:55:00 <bsmnt_bot> !dup ~cat !dup
05:55:03 <EgoBot> ~cat !dup ~cat !dup
05:55:04 <bsmnt_bot> !dup ~cat !dup
05:55:07 <EgoBot> ~cat !dup ~cat !dup
05:55:08 <bsmnt_bot> !dup ~cat !dup
05:55:10 <pikhq> !undaemon dup
05:55:11 <EgoBot> ~cat !dup ~cat !dup
05:55:12 <bsmnt_bot> !dup ~cat !dup
05:55:13 <EgoBot> Process 4 killed.
05:55:15 <EgoBot> Huh?
05:55:27 <pikhq> Fun stuff, oerjan.
05:55:54 <bsmntbombdood> indeed
05:56:04 <pikhq> :)
05:58:50 -!- digital_me has quit ("night").
06:01:39 <bsmntbombdood> I can't get scoping right
06:02:01 -!- bsmnt_bot has quit (Remote closed the connection).
06:02:05 -!- bsmnt_bot has joined.
06:02:18 <bsmntbombdood> ~exec print self
06:02:26 <bsmntbombdood> ~exec print bot
06:02:32 <bsmntbombdood> ~exec print re
06:02:46 <bsmntbombdood> ~exec print globals()
06:03:07 -!- bsmnt_bot has quit (Remote closed the connection).
06:03:13 -!- bsmnt_bot has joined.
06:03:15 <bsmntbombdood> ~exec print self
06:03:19 <bsmntbombdood> ~exec print bot
06:03:23 <bsmntbombdood> hmmm
06:05:14 <bsmntbombdood> dumb bot
07:05:11 -!- oerjan has quit ("Good night").
07:09:46 <bsmntbombdood> ~raw privmsg #esoteric :foo
07:09:46 <bsmnt_bot> foo
07:21:07 -!- calamari has quit ("Leaving").
07:46:40 <Sukoshi> Aye. I hate it when I reach crossroads of program and programmer efficiency .
07:58:08 <pikhq> me need sleep
07:58:16 -!- pikhq has quit ("leaving").
07:58:23 <bsmntbombdood> sleep is for the weak
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:12 <Sukoshi> Yes it is.
11:40:25 -!- tgwizard has joined.
13:13:39 -!- mtve has quit (Read error: 110 (Connection timed out)).
14:00:50 -!- ihope_ has joined.
14:00:55 -!- ihope_ has changed nick to ihope.
14:58:48 -!- nemesis128 has joined.
15:02:06 -!- nemesis128 has left (?).
15:52:01 -!- jix has joined.
15:57:59 -!- digital_me has joined.
16:20:54 -!- ihope_ has joined.
16:37:03 -!- ihope has quit (Connection timed out).
17:08:31 -!- oerjan has joined.
17:09:29 -!- oklofok has joined.
17:09:42 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
17:09:42 -!- FabioNET has joined.
17:24:05 -!- ihope_ has quit (Connection timed out).
17:42:45 -!- ihope_ has joined.
17:42:53 -!- ihope_ has changed nick to ihope.
17:44:24 * SimonRC grins at the bot pong above
18:18:09 <ihope> !dup foo
18:18:14 <EgoBot> Huh?
18:18:16 <ihope> !ps d
18:18:19 <EgoBot> 1 EgoBot: daemon cat reload
18:18:22 <EgoBot> 2 EgoBot: daemon dog reload
18:18:23 <EgoBot> 3 oerjan: daemon dup bf
18:18:25 <EgoBot> 4 ihope: ps
18:19:26 <ihope> If dup is a daemon...
18:19:49 <ihope> !dup !dup
18:19:51 <EgoBot> Huh?
18:20:02 <ihope> Unless !dup outputs "Huh?"
18:20:45 <ihope> !undaemon dup
18:20:48 <ihope> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
18:20:53 <ihope> !dup Grah
18:20:55 <EgoBot> Grah Grah
18:21:02 <ihope> Woot Woot.
18:21:26 <ihope> !dup ~cat !dup
18:21:29 <EgoBot> ~cat !dup ~cat !dup
18:21:43 <ihope> I see ~cat is not catting.
18:23:46 <ihope> ~cat !dup ~cat !dup
18:24:03 <ihope> I see ~cat is still not catting.
18:36:44 -!- oerjan has quit ("Out of the house").
18:43:51 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
18:54:30 <bsmntbombdood> ~print [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue]
18:54:36 <bsmntbombdood> ~exec print [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue]
18:54:48 <bsmntbombdood> ~exec print [(i[0].pattern, i[1].__name__) for i in bot.raw_regex_queue]
18:56:55 -!- bsmnt_bot has quit (Remote closed the connection).
18:57:01 -!- bsmnt_bot has joined.
18:57:09 <bsmntbombdood> ~exec self.print_callbacks()
18:57:22 <bsmntbombdood> pretty
19:00:03 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
19:00:07 <bsmntbombdood> ~cat cat
19:00:07 <bsmnt_bot> cat
19:00:13 <bsmntbombdood> ihope: ~cat now cats
19:00:39 <ihope> ~cat !dup ~cat !dup
19:00:39 <bsmnt_bot> !dup ~cat !dup
19:00:43 <EgoBot> ~cat !dup ~cat !dup
19:00:43 <bsmnt_bot> !dup ~cat !dup
19:00:47 <EgoBot> ~cat !dup ~cat !dup
19:00:47 <bsmnt_bot> !dup ~cat !dup
19:00:51 <EgoBot> ~cat !dup ~cat !dup
19:00:51 <bsmnt_bot> !dup ~cat !dup
19:00:53 <EgoBot> ~cat !dup ~cat !dup
19:00:53 <bsmnt_bot> !dup ~cat !dup
19:00:55 <bsmntbombdood> ~exec self.print_callbacks()
19:00:59 <EgoBot> ~cat !dup ~cat !dup
19:00:59 <bsmnt_bot> !dup ~cat !dup
19:01:03 <EgoBot> Huh?
19:01:09 <ihope> Fun.
19:02:51 -!- tgwizard has joined.
19:06:44 -!- bsmnt_bot has quit (Remote closed the connection).
19:06:47 -!- bsmnt_bot has joined.
19:07:36 <bsmntbombdood> ~exec print inspect.getargspec(self.do_exec)
19:10:58 <bsmntbombdood> ~exec print inspect.ismethod(self)
19:11:03 <bsmntbombdood> ~exec print inspect.ismethod(self.do_exec)
19:11:11 <bsmntbombdood> ~exec print inspect.ismethod(lambda x : x)
19:14:05 -!- RodgerTheGreat has joined.
19:14:10 <RodgerTheGreat> hi
19:15:26 <bsmntbombdood> hi
19:15:35 -!- bsmnt_bot has quit (Remote closed the connection).
19:15:39 -!- bsmnt_bot has joined.
19:16:46 <bsmntbombdood> ~exec self.register_raw(r".*:~test (.*)", lambda x, y : bot.raw("PRIVMSG #esoteric :%r, %r" % (x,y)))
19:16:51 <bsmntbombdood> ~test
19:17:16 <bsmntbombdood> ~test foo
19:17:17 <bsmnt_bot> ':bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~test foo', <_sre.SRE_Match object at 0xb7c0c620>
19:17:44 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
19:17:54 <bsmntbombdood> ~exec self.register_raw(r".*:~test (.*)", lambda x : bot.raw("PRIVMSG #esoteric :%r" % (x)))
19:17:58 <bsmntbombdood> ~test foo
19:17:58 <bsmnt_bot> ':bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~test foo'
19:18:02 <bsmntbombdood> yay
19:18:19 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
19:18:31 <bsmntbombdood> ~exec self.print_callbacks()
19:19:31 <bsmntbombdood> ~exec self.register_raw("\S+ PRIVMSG #esoteric :~cat (.*)", lambda x,y: bot.raw("PRIVMSG #esoteric :%s" % y.group(1)))
19:19:34 <bsmntbombdood> ~cat foo
19:19:35 <bsmnt_bot> foo
19:20:03 <bsmntbombdood> now the regex for the callback is given to it
19:22:48 <bsmntbombdood> with some uglyness to allow the callbacks to take only one argument
19:39:53 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup (.*)", lambda x,y: bot.raw("PRIVMSG #esoteric :%s %s" % (y.group(1), y.group(1))))
19:39:58 <bsmntbombdood> ~dup foo
19:39:59 <bsmnt_bot> foo foo
19:40:05 <bsmntbombdood> ~dup !cat ~dup
19:40:05 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:08 <EgoBot> ~dup !cat ~dup
19:40:08 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:10 <EgoBot> ~dup !cat ~dup
19:40:10 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:12 <EgoBot> ~dup !cat ~dup
19:40:12 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:14 <EgoBot> ~dup !cat ~dup
19:40:14 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:16 <EgoBot> ~dup !cat ~dup
19:40:17 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:18 <EgoBot> ~dup !cat ~dup
19:40:18 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:22 <EgoBot> ~dup !cat ~dup
19:40:22 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:26 <EgoBot> ~dup !cat ~dup
19:40:26 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:30 <EgoBot> ~dup !cat ~dup
19:40:30 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:34 <EgoBot> ~dup !cat ~dup
19:40:34 <bsmnt_bot> !cat ~dup !cat ~dup
19:40:37 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
19:40:39 <EgoBot> ~dup !cat ~dup
19:40:50 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup (.*)", lambda x,y: bot.raw("PRIVMSG #esoteric :%s %s" % (y.group(1), y.group(1))))
19:41:11 <bsmntbombdood> ~dup !dup ~dup
19:41:11 <bsmnt_bot> !dup ~dup !dup ~dup
19:41:14 <EgoBot> Huh?
19:41:29 <bsmntbombdood> huh?
19:41:35 <bsmntbombdood> !ps a
19:41:38 <EgoBot> 4 bsmntbombdood: ps
19:41:49 <bsmntbombdood> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
19:41:56 <bsmntbombdood> ~dup !dup ~dup
19:41:56 <bsmnt_bot> !dup ~dup !dup ~dup
19:41:58 <EgoBot> ~dup !dup ~dup ~dup !dup ~dup
19:41:58 <bsmnt_bot> !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:42:00 <EgoBot> ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:42:00 <bsmnt_bot> ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:42:07 <bsmntbombdood> :(
19:42:16 <bsmntbombdood> !dog
19:42:43 <bsmntbombdood> !dog !god pud~
19:42:46 <EgoBot> ~dup dog!
19:42:46 <bsmnt_bot> dog! dog!
19:42:55 <bsmntbombdood> !dog god! pud~
19:42:58 <EgoBot> ~dup !dog
19:42:58 <bsmnt_bot> !dog !dog
19:43:02 <EgoBot> god!
19:43:07 <bsmntbombdood> lol
19:43:41 <bsmntbombdood> ~dup !dog pud~
19:43:42 <bsmnt_bot> !dog pud~ !dog pud~
19:43:44 <EgoBot> ~dup god! ~dup
19:43:44 <bsmnt_bot> god! ~dup god! ~dup
19:43:57 <bsmntbombdood> ~dup dog! pud~
19:43:57 <bsmnt_bot> dog! pud~ dog! pud~
19:45:28 * SimonRC wibbles: http://video.google.com/videoplay?docid=-4024457809967804989&hl=en
19:45:34 <bsmntbombdood> !dog !dog god! pud~
19:45:38 <EgoBot> ~dup !dog god!
19:45:38 <bsmnt_bot> !dog god! !dog god!
19:45:42 <EgoBot> !dog god! !dog
19:46:45 <bsmntbombdood> !bf_txtgen ~dup !dup ~dup
19:47:33 <EgoBot> 116 ++++++++++++++[>+++++++++>+++++++>++++++++>++<<<<-]>.>++.<---------.>>.>++++.+.<<.<.>>.>-.<++++++++++++++.<.<.-----. [171]
19:47:47 <bsmntbombdood> !daemon foo bf ++++++++++++++[>+++++++++>+++++++>++++++++>++<<<<-]>.>++.<---------.>>.>++++.+.<<.<.>>.>-.<++++++++++++++.<.<.-----.
19:47:50 <EgoBot> ~dup !dup ~dup
19:47:50 <bsmnt_bot> !dup ~dup !dup ~dup
19:47:54 <EgoBot> ~dup !dup ~dup ~dup !dup ~dup
19:47:54 <bsmnt_bot> !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:47:58 <EgoBot> ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:47:58 <bsmnt_bot> ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:48:04 <bsmntbombdood> !foo
19:48:25 <bsmntbombdood> meh
19:49:42 <bsmntbombdood> ~exec print message
19:50:28 <bsmntbombdood> ~exec print self.message_re.match(message).group("message")
19:51:42 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~quine(.*)", lambda x : bot.raw("PRIVMSG #esoteric :%s" % bot.message_re.match(x).group("message")))
19:51:46 <bsmntbombdood> ~quine
19:51:46 <bsmnt_bot> ~quine
19:51:49 <bsmntbombdood> ~quine foo
19:51:49 <bsmnt_bot> ~quine foo
19:53:44 <ihope> Quines are fun
19:53:49 <ihope> Except when they cheat. Cheater.
19:53:54 <bsmntbombdood> heh
19:54:07 <bsmntbombdood> I've never written a real quine :/
19:54:17 <ihope> Write one in ///
19:54:26 <bsmntbombdood> //?
19:54:38 <ihope> In that language, you can write something that's both a Hello, world! program and a quine.
19:54:42 <ihope> !help
19:55:03 <ihope> Well?
19:55:05 <ihope> !help
19:55:10 <ihope> Bleh.
19:58:35 <bsmntbombdood> import inspect
19:58:35 <bsmntbombdood> class quine:
19:58:35 <bsmntbombdood> pass
19:58:35 <bsmntbombdood> print open(inspect.getsourcefile(quine)).read()
19:58:43 <bsmntbombdood> :P
20:00:15 <ihope> Hmm...
20:00:24 <ihope> It's not especially obvious how to make EgoBot.
20:01:07 <ihope> Hmm...
20:03:00 <ihope> Okay, here we go.
20:03:15 <bsmntbombdood> ?
20:04:00 <ihope> Or not...
20:05:31 <ihope> Oh, right.
20:06:03 <bsmntbombdood> I need to write a quine in my oisc
20:06:59 <GregorR> ihope: ??
20:07:07 <GregorR> As in, how to compile it?
20:07:15 <ihope> I think I figured it out.
20:08:56 <GregorR> Well, first you type `make` :P
20:09:06 <GregorR> Then you pray that you have the compendium of compilers necessary.
20:11:29 <ihope> I thought I might have had to type something, seeing as how there's big delays near the beginning and it's possible to type something.
20:12:31 <bsmntbombdood> EgoBot is slow
20:12:52 <GregorR> ihope: egobotIRC.sh
20:13:15 <GregorR> bsmntbombdood: For the last fucking time, EgoBot is not slow, it's THROTTLED.
20:13:20 <bsmntbombdood> I know
20:13:31 * ihope throttles EgoBot
21:29:30 -!- CakeProphet has joined.
21:29:31 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
21:29:48 -!- EgoBot has joined.
21:37:38 <bsmntbombdood> ~cat foo
21:37:38 <bsmnt_bot> foo
21:38:16 <bsmntbombdood> ~cat !dup ~cat
21:38:16 <bsmnt_bot> !dup ~cat
21:38:19 <EgoBot> Huh?
21:39:18 <bsmntbombdood> !daemon cat bf ,[.,]
21:39:30 <bsmntbombdood> !cat ~dup !cat
21:39:33 <EgoBot> ~dup !cat
21:39:33 <bsmnt_bot> !cat !cat
21:39:37 <EgoBot> !cat
21:39:51 <bsmntbombdood> ~cat !dup !dup cat
21:39:52 <bsmnt_bot> !dup !dup cat
21:39:55 <EgoBot> Huh?
21:40:13 <bsmntbombdood> !cat ~dup !dup ~cat
21:40:17 <EgoBot> ~dup !dup ~cat
21:40:17 <bsmnt_bot> !dup ~cat !dup ~cat
21:40:21 <EgoBot> Huh?
21:40:37 <bsmntbombdood> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
21:40:41 <bsmntbombdood> !cat ~dup !cat
21:40:45 <EgoBot> ~dup !cat
21:40:45 <bsmnt_bot> !cat !cat
21:40:49 <EgoBot> !cat
21:41:12 <bsmntbombdood> ~quine
21:41:12 <bsmnt_bot> ~quine
21:45:26 <bsmntbombdood> ~exec self.print_callbacks()
21:45:55 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
21:46:28 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~quine(.*)", lambda x : bot.raw("PRIVMSG #esoteric :!%s" % bot.message_re.match(x).group("message")[1:]))
21:46:32 <bsmntbombdood> ~quine
21:46:32 <bsmnt_bot> !quine
21:46:36 <EgoBot> Huh?
21:46:49 <bsmntbombdood> !bf_txtgen ~quine
21:47:16 <EgoBot> 83 ++++++++++++++[>+++++++++>++++++++>++++++++><<<<-]>.>+.++++.------------.>--.<----. [334]
21:47:31 <bsmntbombdood> !deamon quine bf ++++++++++++++[>+++++++++>++++++++>++++++++><<<<-]>.>+.++++.------------.>--.<----.
21:47:34 <EgoBot> Huh?
21:47:41 <bsmntbombdood> !daemon quine bf ++++++++++++++[>+++++++++>++++++++>++++++++><<<<-]>.>+.++++.------------.>--.<----.
21:47:45 <EgoBot> ~quine
21:47:45 <bsmnt_bot> !quine
21:47:54 <bsmntbombdood> ...
21:48:16 <bsmntbombdood> !quine
21:48:20 <bsmntbombdood> ~quine
21:48:20 <bsmnt_bot> !quine
21:48:30 <bsmntbombdood> !daemon !quine bf ++++++++++++++[>+++++++++>++++++++>++++++++><<<<-]>.>+.++++.------------.>--.<----.
21:48:46 <bsmntbombdood> !ps a
21:49:05 <bsmntbombdood> ...
21:53:55 * bsmntbombdood frobnicates
22:02:22 * bsmntbombdood reads the mapreduce paper
22:07:16 -!- oerjan has joined.
22:09:07 <bsmntbombdood> hmmm
22:09:09 <bsmntbombdood> interesting
22:10:37 <CakeProphet> hmmm
22:10:58 * bsmntbombdood doesn't quite understand
22:21:56 <bsmntbombdood> What possessed them to write it in a language like C++
22:26:20 <bsmntbombdood> I want a MapReduce cluster now
22:32:08 <ihope> !ping GregorR
22:32:18 <ihope> Hmm.
22:32:24 * ihope frobnicates, whatever that means
22:32:43 <oerjan> http://catb.org/jargon/html/F/frobnicate.html
22:32:57 <bsmntbombdood> ihope: memfrob(3)
22:33:01 <ihope> Oh.
22:33:37 <ihope> What a useless function.
22:33:45 <ihope> :-P
22:34:03 <bsmntbombdood> yeah really
22:57:34 -!- CakeProphet_ has joined.
23:07:00 -!- CakeProphet has quit (Read error: 113 (No route to host)).
23:10:19 -!- CakeProphet__ has joined.
23:10:22 -!- CakeProphet__ has changed nick to CakeProphet.
23:12:56 <GregorR> ihope: RAAAR
23:13:32 <ihope> How do you work EgoBot? socat seems to be mad at me.
23:14:25 <GregorR> I've only used netcat :P
23:16:29 <ihope> netcat might well work.
23:18:12 <GregorR> /opt/netcat/bin/netcat -e egobotIRC.sh
23:18:43 <GregorR> I predict: socat EXEC:./egobotIRC.sh TCP4:irc.freenode.net:6667
23:18:52 <GregorR> But I haven't used socat for it ;)
23:20:41 -!- ihope has changed nick to i.
23:20:46 -!- i has changed nick to ihope.
23:20:57 <ihope> Well, I certainly didn't expect that.
23:20:59 * oerjan wonders, given this discussion, if he is doing something wrong by connecting IrpBot just with the Haskell Network module.
23:21:31 -!- tgwizard has quit (Remote closed the connection).
23:24:52 -!- FabioNET has quit (Client Quit).
23:25:12 <oklofok> my bot connects with winsock!
23:25:17 -!- oklofok has changed nick to oklopol.
23:25:22 <bsmntbombdood> oerjan: What's IrpBot?
23:25:38 <oklopol> #irp
23:25:42 <oerjan> The bot I made for the #irp channel.
23:26:05 <ihope> And that command isn't really working, even--
23:26:10 <GregorR> I was too lazy to use BSD sockets, so I just made it communicate over stdin/stdout :P
23:26:11 * ihope suddenly decides to use netcat
23:26:20 * bsmntbombdood wrote his bot with sockets
23:26:29 <GregorR> A concept which ihope seems to be having problems with :P
23:26:43 -!- CakeProphet_ has quit (Success).
23:26:44 <ihope> Well, I don't have netcat, exactly.
23:26:52 <oerjan> Right, so socat/netcat is for wrapping standard I/O?
23:27:12 <ihope> Just wait 3.141592653589 seconds and I'll get back to you on that.
23:27:28 <GregorR> oerjan: Yes.
23:27:32 <oerjan> I just used what came with the example bot source on the haskell wiki.
23:38:17 <ihope> make's telling me to stop!
23:38:25 <ihope> How rude.
23:39:57 <ihope> You know, it just said "Stop." Just like that.
23:40:17 <oerjan> I know. Just give it a good beating.
23:41:32 -!- tgwizard has joined.
23:54:03 <bsmntbombdood> ~dup !cat ~dup
23:54:04 <bsmnt_bot> !cat ~dup !cat ~dup
23:54:54 <bsmntbombdood> ...
23:55:15 <bsmntbombdood> ~exec __import__("time").sleep(300)
23:55:26 <bsmntbombdood> ~cat I'm alive!
23:55:26 <bsmnt_bot> I'm alive!
23:55:29 <bsmntbombdood> woo
23:58:26 <bsmntbombdood> ~exec __import__("time").sleep(60); self.raw("PRIVMSG #esoteric :foo")
23:59:26 <bsmnt_bot> foo
←2007-01-03 2007-01-04 2007-01-05→ ↑2007 ↑all