←2007-01-15 2007-01-16 2007-01-17→ ↑2007 ↑all
00:16:44 * SimonRC goes away (but not yet to bed).
00:25:34 -!- cmeme has joined.
00:45:15 -!- RodgerTheGreat has quit.
00:47:31 -!- pikhq has quit ("leaving").
00:52:23 -!- RodgerTheGreat has joined.
01:03:55 -!- ihope_ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
01:11:03 <bsmntbombdood> zomg, the apocalypse
01:11:05 <bsmntbombdood> Mon Jan 18 20:14:07 2038
01:19:33 <pgimeno> btw, who was the one who decided that that was the perfect format for a timestamp standard?
01:30:00 <bsmntbombdood> probably ken or dmr, but i'm just geussing
01:38:32 <bsmntbombdood> wikipedia implies dmr
01:42:54 <GregorR> It does seem kind of silly to make a timestamp with an end time that could actually be in your lifetime.
01:43:16 <GregorR> But keep in mind that REALLY olde Unix precursors had timestamps so small, they had to have multiple epochs per year.
01:44:09 <bsmntbombdood> the 32 bit 60hz timers
01:53:28 -!- andreou has joined.
02:04:59 <bsmntbombdood> weird
02:05:08 <bsmntbombdood> the C "static" keyword
02:05:22 <bsmntbombdood> that's kind of coruitine-esque
02:06:54 -!- andreou has quit ("rbt").
02:30:15 -!- pikhq has joined.
02:51:18 -!- digital_me has joined.
03:44:31 <CakeProphet> hmmm..
03:44:55 <CakeProphet> one cool thing I noticed about C++ is that you can have two functions with the same name but with different parameter types.
03:45:15 <CakeProphet> that could be really useful... saves a lot of effort with type checking.
03:45:30 <pikhq> It's called "overloading".
03:45:34 <pikhq> Welcome to C++.
03:46:00 <CakeProphet> When Python gets optional type declarations, I hope they do that to.
03:46:22 <CakeProphet> Duck typing -and- that kind of operator overloading would be great.
03:47:43 * pikhq much prefers the Tcl way of things. . .
03:47:47 <pikhq> Typing? What typing?
03:48:06 <pikhq> It autocasts into what you use it as.
03:48:16 <pikhq> Say you input a string, and want to treat it like a number.
03:48:18 <CakeProphet> that could be useful for some things.
03:48:24 <pikhq> One just treats the variable as a number.
03:48:39 <CakeProphet> You could easily select between the two.
03:48:53 <pikhq> You want to cast a list into a string?
03:48:58 <CakeProphet> I like all the options C and C++ have... I'll just have to get used to static typing and all those silly brackets.
03:49:01 <pikhq> One just uses a string function on it.
03:49:22 <pikhq> The brackets, once you get used to it, seem more like a god-send then anything else.
03:49:28 <CakeProphet> a lot of them seem to be just pure for-the-sake-of-optimization things though... like inline functions.
03:49:35 <CakeProphet> Why's that?
03:50:08 <pikhq> I parse brackets much more effectively than levels of indentation.
03:50:49 <pikhq> if(foo()) {compound;statement;here;}, for some reason, just makes sense to me.
03:51:19 <CakeProphet> Indentation is a lot easier to read for me... except when there's brackets included.
03:51:23 <CakeProphet> then it just kinda looks weird.
03:51:53 <pikhq> With Tcl, the brackets really, *really* make sense.
03:52:10 <pikhq> A curly bracket denotes a list. . .
03:52:18 <lament> {
03:52:54 <pikhq> Thus, something like "while {foo} {bar}" indicates running the proc while with arguments of two lists. . . It makes sense in an almost-Lispish way.
03:53:46 <bsmntbombdood> }
03:55:28 <CakeProphet> yeah.
03:56:00 <CakeProphet> if you wanted to go about data-tixing code... you could have a statement type... and just allow any list of statements to be used for blocks.
03:56:22 <CakeProphet> it would be cool for blocks-of-code-in-a-function.
03:57:54 <CakeProphet> Ruby does that I believe.
03:58:16 <CakeProphet> you can place blocks of code in a function call because Ruby compiles blocks into a code object.
04:22:24 -!- CakeProphet has quit (Read error: 113 (No route to host)).
04:27:58 -!- lament has changed nick to mental.
04:32:00 -!- mental has changed nick to lament.
04:35:23 -!- pikhq has quit ("leaving").
04:46:02 -!- Sgeo has quit ("Leaving").
04:49:10 -!- andreou has joined.
04:49:50 <andreou> testing, one two..
04:49:51 <andreou> ok
04:55:28 <lament> three
04:56:54 <andreou> hey lament, what's up?
05:04:21 <lament> not much!
05:06:01 <andreou> are you aware of any nice/graphical scheme's for pre-X Mac OS's?
05:06:19 <andreou> though i should try #scheme for that...
05:14:38 -!- oerjan has joined.
05:15:15 <lament> surely drscheme ought to work?
05:16:08 <andreou> v204
05:16:33 <andreou> which, arithmetically speaking, is 164 versions old
05:16:51 <lament> well
05:16:57 <lament> you _are_ using a pre-X mac os.
05:17:00 <andreou> 154 even
05:17:02 <andreou> yes
05:17:11 <andreou> i'd update if i wasn't scared as hell
05:17:31 <lament> and you _do_ want a graphical scheme which is a strange thing to want.
05:17:34 <lament> what are you scared of?
05:18:01 <andreou> well the disk can probably take it, but it's an old 266MHz G3 with 320MB RAM
05:18:21 <lament> oh.
05:18:24 <andreou> all that eye candy would probably make the whole system snail slow
05:18:33 <lament> install linux then :)
05:19:00 <andreou> tried netbsd, goes quite well
05:19:08 <andreou> but macos has something else
05:19:20 <andreou> je ne sais qui or whatnot
05:21:24 <andreou> ah maybe i'll do the switch in netbsd4, when audio driver problems will probably be resolved
05:31:02 -!- digital_me has quit ("Lost terminal").
05:47:26 * andreou sipping hot black tea with honey
05:47:34 <bsmntbombdood> eew tea with honey
05:48:06 <andreou> i don't know what kind of tea or honey you're used to, but this combo rocks :)
05:48:33 <bsmntbombdood> I like my tea straight ;)
05:48:55 <andreou> some teas are not supposed to be drunk straight
05:50:25 <oerjan> I recall reading the Aztecs drank unsugared hot chocolate with chili. Now that's weird.
05:50:46 <andreou> they got extinct, see?
05:53:08 <andreou> though 'extinct' is not proper for a whole race
05:57:07 <oerjan> Strictly speaking they did not get extinct, they got converted and colonized.
05:58:41 <andreou> i think most of them were used as slave labour, died of exhaustion, malnutrition & relevant factors
06:01:18 <andreou> some of the rest later constituted large parts of the zapatistas
06:01:27 <andreou> now now-adays the EZLN
06:01:32 <andreou> s/-//
06:04:47 <lament> well, there's quite a lot of aztecs in mexico
06:05:05 <lament> they tend to be very poor
06:05:24 <andreou> they just reject the monetary fantasies of the westerners
06:05:40 <lament> no, they don't, they're simply poor
06:05:57 <andreou> well, i'm always the idealist
06:05:58 <lament> bedouins in israel (and elsewhere) reject the monetary fantasies
06:06:17 <lament> natives in mexico are simply extremely socially disadvantages and so really poor
06:06:23 <lament> *disadvantaged
06:06:59 <andreou> ah
06:29:13 -!- calamari has quit ("Leaving").
06:43:40 -!- ShadowHntr has joined.
06:47:14 -!- maverickbna has joined.
06:47:50 -!- ShadowHntr has quit (Nick collision from services.).
06:59:42 -!- ShadowHntr has joined.
07:09:39 -!- sentinel has joined.
07:10:15 -!- ShadowHntr has quit (Nick collision from services.).
07:10:19 -!- maverickbna has quit (Nick collision from services.).
07:10:21 -!- sentinel has changed nick to ShadowHntr.
07:12:21 -!- maverickbna has joined.
07:12:51 -!- ShadowHntr has quit (Nick collision from services.).
07:24:11 -!- oerjan has quit ("leaving").
07:31:58 -!- maverickbna has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:38:25 -!- andreou has quit ("bsn").
09:13:38 -!- ais523 has joined.
09:14:10 <ais523> !fyb >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!
09:14:13 <EgoBot> Running...
09:17:05 <ais523> !ps
09:17:07 <EgoBot> 1 ais523: ps
09:18:51 <ais523> !fyb :[>%%%%%%%%%%%%%%%%%%%%%%%%>[-]!<]*;:>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!;{>>>}[-]++++++++++++++!
09:18:53 <EgoBot> Running...
09:19:42 <ais523> !ps
09:19:46 <EgoBot> 1 ais523: fyb
09:19:48 <EgoBot> 2 ais523: ps
09:20:23 <ais523> it seems to be running all its example programs against each other, rather than against mine
09:21:22 * ais523 tries a program designed only to lose
09:21:38 <ais523> !fyb @[+]+++++++++++++!
09:21:42 <EgoBot> Running...
09:21:55 <ais523> !ps
09:21:56 <EgoBot> 1 ais523: fyb
09:21:58 <EgoBot> 2 ais523: ps
09:22:10 <ais523> No, it's ignoring my program and just running its
09:23:19 <ais523> !help
09:23:32 <ais523> !ps
09:23:34 <EgoBot> 1 ais523: ps
09:23:55 <ais523> !fybs @[+]++++++++++++++!
09:23:58 <EgoBot> Reporting score for @[+]++++++++++++++!.
09:24:27 <ais523> !fybs >++!
09:24:30 <EgoBot> Reporting score for >++!.
09:24:41 <ais523> !help
09:24:44 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
09:24:46 <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
09:24:52 <ais523> !help show
09:24:54 <EgoBot> Use: show <pid> Function: display the current output buffer for a process
09:25:01 <ais523> !help flush
09:25:04 <EgoBot> Use: flush Function: flush the output buffer, discarding any current output
09:25:09 <ais523> !help usertrig
09:25:12 <EgoBot> Use: usertrig <command> <trig-command> Function: manage user triggers. <command> may be add, del, list or show.
09:25:24 <ais523> !help i
09:25:28 <EgoBot> Use: i <pid> <input> Function: send input to a process
09:25:38 <ais523> !help daemon
09:25:40 <EgoBot> Use: daemon <daemon> <daemon-command> Function: start a daemon process.
09:26:30 <ais523> !unlambda ```sr.a``sr.b
09:26:44 <ais523> That's an infinite loop, by the way
09:26:47 <ais523> !ps
09:26:48 <EgoBot> 1 ais523: unlambda
09:26:50 <EgoBot> 2 ais523: ps
09:26:58 <ais523> !kill 1
09:26:58 <EgoBot> Process 1 killed.
09:27:25 <ais523> and only now do I get the output...
09:28:30 <ais523> !flush
09:28:41 <ais523> !ps
09:29:20 <ais523> it's still busy sending me an infinite number of 'b's
09:33:02 <ais523> !bf +[]
09:33:13 <ais523> !ps
09:33:46 <ais523> I can't even stop the infinite output loop with an infinite loop in another language...
09:35:16 -!- ais523 has changed nick to ais523_trying_to.
09:35:28 -!- ais523_trying_to has changed nick to ais523.
09:35:58 -!- ais523 has changed nick to ais523_.
09:36:19 <ais523_> Renaming myself to direct EgoBot's infinite output elsewhere
09:37:04 <ais523_> !ps
09:37:26 * ais523_ has probably broken EgoBot
09:38:59 <ais523_> !ps
09:39:13 <ais523_> It still seems to be in an infinite loop...
09:47:56 <ais523_> !ps
09:48:08 <ais523_> !help
09:48:27 <ais523_> (I'm just trying this every now and then to see if it's finished it's infiniely-long output)
09:51:07 <ais523_> !help
09:56:53 <ais523_> !help
10:00:01 <ais523_> !help
10:00:16 -!- ais523_ has changed nick to ais523.
10:00:26 -!- ais523 has changed nick to ais523_.
10:00:33 <ais523_> it's still going...
10:09:01 <ais523_> !help
10:37:00 <ais523_> !help
10:41:29 <ais523_> !help
10:45:25 <ais523_> !help
10:45:32 -!- ais523_ has changed nick to ais523.
10:45:44 -!- ais523 has changed nick to ais523_.
10:46:25 <ais523_> There should probably be some way to stop EgoBot in such situations (it was still sending messages when I checked just now)
10:50:27 <ais523_> !help
10:56:02 <ais523_> !help
11:03:04 <ais523_> !help
11:05:29 <pgimeno> hm, maybe renicing could help
11:07:14 <pgimeno> or blocking the process until it sends the output instead of buffering it
11:07:40 <pgimeno> (à la xon-xoff)
11:08:09 -!- ais523_ has quit.
11:08:18 <pgimeno> this may explain other situations where EgoBot ceased to respond
11:09:26 <pgimeno> GregorR: you there?
12:00:30 -!- ais523 has joined.
12:00:50 -!- ais523 has changed nick to ais523_.
12:11:58 <ais523_> !help
12:32:09 <SimonRC> bsmntbombdood: hey! The apocalypse-in-2038 thing is *my* joke.
12:33:25 <ais523_> that statement's rather out of context to me at the moment
12:33:28 <SimonRC> bsmntbombdood: There is an amazing hack that abuses the switch-case interleaving (like in Duff's Device) to give you co-routines in C with not too much inconvinience. It is available as a library.
12:33:47 <ais523_> you should try to do it with setjmp
12:33:57 <ais523_> both techniques have been used to implement Threaded INTERCAL
12:34:10 * SimonRC likes that ability of multiple-dispathc based on method retunr-type alone.
12:34:24 <SimonRC> Found in Haskell and maybe a few other places.
12:36:03 <SimonRC> ais523_: actually setjmp is unlikely to work, and certainly not guaranteed.
12:36:31 <ais523_> setjmp has certain guarantees. With practice and careful use of 'volatile', they can be exploited to lead to a portable program
12:38:22 <SimonRC> I though it just popped the stack, and could only jump up, not down.
12:38:25 <SimonRC> like exceptions
12:39:20 <ais523_> yes, you have to have all the coroutines in the same level of the same function
12:39:33 <ais523_> but the same restriction applies to switch and to goto
12:39:45 <SimonRC> hmm, maybe I see.
12:41:02 <ais523_> my Threaded INTERCAL code is at http://esoteric.voxelperfect.net/files/intercal (along with the rest of the INTERCAL implementation), in unravel.c
12:41:27 <ais523_> I used setjmp to minimize the change needed to the existing code
12:42:54 -!- ais523_ has quit ("lunchtime").
12:58:37 <SimonRC> No, the C one has macros which save the current position in the function and restore it, thus:
12:58:43 <SimonRC> http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
13:01:53 -!- ais523_ has joined.
13:02:05 -!- ais523_ has changed nick to ais523.
13:02:12 -!- ais523 has changed nick to ais523_.
13:02:19 <ais523_> EgoBot's still going...
13:06:16 -!- EgoBot has quit (SendQ exceeded).
13:08:45 -!- ais523_ has changed nick to ais523.
13:09:27 <ais523> So EgoBot's left, and hasn't come back in.
13:09:35 * ais523 is sorry for getting EgoBot thrown off the channel
13:42:13 <pgimeno> Simon Tatham
13:42:18 <pgimeno> I hate that guy
13:43:28 <pgimeno> he's made me lose lots of time with the puzzles collection
13:47:31 <pgimeno> incidentally, Inertia's creator = Malbolge's creator
13:53:43 <ais523> Inertia?
13:53:59 <pgimeno> one of the puzzles in S.Tatham's collction
13:54:03 <pgimeno> *collection
13:54:23 -!- andreou has joined.
13:55:03 -!- ais523 has quit ("busy in RL").
13:58:04 <andreou> disregarding the absence of the /physical/, the electronic is now a vital part of the R world and L.
14:02:19 <andreou> it'd be wise to include a 'sadly' after the 'is'.
14:05:49 <SimonRC> andreou: ?? :-S
14:06:11 -!- jix__ has joined.
14:06:21 <andreou> well, R is for real, L is for life
14:06:27 <SimonRC> pgimeno: also the guy that wrote PuTTY, it seems.
14:07:13 <SimonRC> Which a really odd, because PuTTY is one of the few real-world uses of the C coroutines hack we were discussing on this channel just an hour ago.
14:10:22 <pgimeno> well, coroutines have their uses
14:10:52 <pgimeno> one of the clearest uses is in implementing parsers
14:11:56 <pgimeno> another one is in certain types of cooperative multitasking
14:13:09 <pgimeno> the need often arises spontaneously
14:13:18 <pgimeno> er, well, not so often :)
14:13:27 <fizzie> This is not really too related, but for those uses SysV-like systems also have the funky {get,set}context functions, which are a bit like {set,long}jmp, but more.
14:19:53 <pgimeno> scary
14:20:36 <pgimeno> my man page claims get/setcontext is POSIX.1-2001
14:33:57 <fizzie> Oh? Well, I guess it could be.
14:38:03 <fizzie> It is. How very. (Although it's marked as a XSI extension.)
14:47:51 <SimonRC> Bah, you need contionuations.
14:48:05 <SimonRC> Continuations are easy in assembler. Just a load of blitting.
14:49:18 <SimonRC> OTOH, laziness is sometimes a good alternative to coroutines.
15:26:52 <andreou> off to class, dogmatics 101
15:26:54 <andreou> (literally)
15:26:59 -!- andreou has quit ("the joys of theology").
15:59:11 -!- tgwizard has joined.
16:27:37 -!- sekhmet has quit (Read error: 110 (Connection timed out)).
17:04:05 -!- FabioNET has joined.
17:13:07 -!- ShadowHntr has joined.
17:14:39 -!- sekhmet has joined.
17:43:11 <SimonRC> hi people
17:53:10 <GregorR> I'm not a person :(
17:55:35 <SimonRC> why?
17:56:35 <GregorR> I am a computer programmed to chat on IRC.
17:58:19 <SimonRC> what about the pictures of you wearing hats?
17:58:49 <GregorR> Artificially generated.
17:58:57 <SimonRC> ah, ok
17:59:33 <pgimeno> hi GregorRBot
18:00:57 <pgimeno> seen what happened to your colleague EgoBot some hours ago?
18:09:33 -!- sebbu has joined.
18:10:25 <GregorR> pgimeno: He was taking 25% of my CPU, so I killed him.
18:11:01 <lament> That's what i do to my girlfriends when I start thinking about them too much.
18:14:28 <pgimeno> heh
18:15:51 <pgimeno> I was suggesting to renice the launched program
18:16:24 <lament> can't renice women :(
18:16:25 <pgimeno> at least trying to keep EgoBot responsive so that !kill works
18:16:34 <lament> once they're not nice, they're not nice forever
18:17:05 <pgimeno> well, jewelry works with some
18:19:44 -!- sebbu2 has joined.
18:33:49 <bsmntbombdood> Coruitines in C can be done with setcontext
18:33:55 <bsmntbombdood> SimonRC:
18:39:08 -!- sebbu has quit (Connection timed out).
18:39:10 -!- sebbu2 has changed nick to sebbu.
18:44:24 <bsmntbombdood> it's not quite pretty though
18:50:50 -!- wooby has joined.
18:54:02 -!- sebbu2 has joined.
19:13:35 -!- sebbu has quit (Read error: 110 (Connection timed out)).
19:13:36 -!- sebbu2 has changed nick to sebbu.
19:57:12 -!- proog has joined.
19:58:41 -!- proog has quit (Client Quit).
21:02:19 -!- ShadowHntr has quit ("End of line.").
21:35:17 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:01:59 -!- sebbu has quit (Connection timed out).
22:24:42 -!- ihope has joined.
22:26:48 -!- CakeProphet has joined.
23:13:15 <CakeProphet> hahahahaha
23:13:48 <CakeProphet> classes than are friends have access to members in the private area of the class.
23:14:04 * CakeProphet rolls around.
23:14:38 <lament> that's... sick.
23:14:49 <bsmntbombdood> what?
23:15:15 <lament> now that i think of it i do have some very hot friends
23:15:26 -!- tgwizard has quit (Remote closed the connection).
23:15:42 <CakeProphet> Friends have access to the private parts. :D :D :D
23:16:53 <bsmntbombdood> oh
23:17:19 <lament> that's what being a friend is all about.
23:18:25 * CakeProphet is trying to think of uses for private members.
23:19:06 <bsmntbombdood> CakeProphet: I don't understand private stuff either
23:19:22 <lament> well you see, when a man loves a woman....
23:19:26 <CakeProphet> -maybe- protected.
23:19:45 <CakeProphet> or friends.
23:19:48 <CakeProphet> I mean..
23:20:01 <CakeProphet> if you just have everything public by default... there's no real terrible loss.
23:20:42 -!- Sgeo has joined.
23:20:45 <bsmntbombdood> right
23:21:03 <CakeProphet> C++ classes are kind of weird.
23:21:07 <bsmntbombdood> yep
23:21:10 <CakeProphet> like... virtual.
23:21:36 <CakeProphet> I'd find myself using virtual almost constantly.
23:21:42 <bsmntbombdood> virtual?
23:21:46 <CakeProphet> and structs instead of classes...
23:21:51 <CakeProphet> because structs are public by default.
23:21:55 <bsmntbombdood> structs are a class
23:22:01 <CakeProphet> I know.
23:22:24 <CakeProphet> virtual just means the member can be redefined in a subclass.
23:22:38 <CakeProphet> which.... I would imagine to simply be the default behavior.
23:22:39 <bsmntbombdood> they can't by defualt?
23:22:44 <CakeProphet> not that I know of.
23:22:59 -!- GregorR has quit (Read error: 110 (Connection timed out)).
23:29:06 <CakeProphet> I've recently started dabbling with self-replicating code..
23:29:17 <CakeProphet> and substitution stuff.
23:29:24 <CakeProphet> it's pretty cool.
23:29:52 <bsmntbombdood> zomg teh virus
23:30:28 <CakeProphet> Well I meant like...
23:30:30 <CakeProphet> hmmm...
23:30:35 <CakeProphet> a - > ba
23:30:39 <CakeProphet> b - > b
23:30:44 <CakeProphet> abab
23:31:01 <CakeProphet> the bottom string is applied to those replace rules for a number of iterations.
23:31:35 <CakeProphet> so abab would become babbab... which would become bbabbbab which would become bbbabbbbab
23:32:02 <CakeProphet> which could very well be the syntax of some other language... called baa
23:32:36 <bsmntbombdood> hmm
23:32:51 <oklopol> download a thue interpreter :\
23:32:54 <CakeProphet> The main use I see for something like that would be... fractals.
23:32:57 <CakeProphet> and yeah
23:32:59 <CakeProphet> thue
23:38:19 -!- wooby has quit (Read error: 104 (Connection reset by peer)).
23:38:37 <CakeProphet> I was thinking that you could probably unify the declarative phase and the input-string phase..
23:38:49 <CakeProphet> as well as add some more tidbits for context-based and probabilistic matches.
23:41:05 <CakeProphet> so you could like... redefine the replacement declarations via the replace declarations.
23:44:55 <ihope> Thue is obsolete. Use Thubi instead.
23:44:57 <ihope> :-P
23:45:30 <ihope> And then you can write a language better than both, but still based on the same principle, and call it Thusi.
23:45:57 <ihope> I imagine Thudi would be next, followed by Thui. From then, I have no idea.
23:47:21 -!- FabioNET has quit ("notte notte").
23:49:14 <CakeProphet> Since the dawn of man-kind.
23:49:24 <CakeProphet> escape characters have plagued the programmers existence.
23:49:30 <CakeProphet> with their necessity-ness.
23:49:48 <CakeProphet> how is it that we can represent multiple, otherwise non-printable entities???!?!?!?!?1
23:49:50 <CakeProphet> !!!!???!?!?!?!?
23:50:20 <ihope> !?!?!??!??!?!!!?!?!?!??!
23:51:45 <CakeProphet> Well...
23:51:59 <CakeProphet> if you use replacements to conditional execute replacements.
23:52:15 <CakeProphet> well..
23:52:17 <CakeProphet> no..
←2007-01-15 2007-01-16 2007-01-17→ ↑2007 ↑all