00:00:23 ~exec self.raw("QUIT") 00:00:23 -!- bsmntbombdood has quit. 00:00:31 ... wait what. 00:00:38 JOOO KILLED IT 00:00:38 hahaha 00:00:41 Lol, internet. 00:00:50 irp bot 00:00:51 :p 00:00:58 -!- bsmnt_bot has changed nick to bsmnt_bot_. 00:01:03 -!- bsmnt_bot has joined. 00:01:10 Rofl, internet. 00:01:29 ~exeself.raw("nickbsmntbombdood") 00:01:35 -!- bsmnt_bot has changed nick to bsmntbombdood. 00:01:38 ~exec self.raw("PRIVMSG :#esoteric No, I am sparctacus!") 00:01:43 well damn. 00:01:46 -!- bsmnt_bot_ has changed nick to bsmnt_bot. 00:01:52 ~exec self.raw("PRIVMSG #esoteric :No, I am sparctacus!") 00:01:53 No, I am sparctacus! 00:02:04 * ehird` wonders if you did that manually 00:02:07 STOP POOPING 00:02:13 Did what manually? 00:02:16 STOP SMURFING 00:02:29 ~exec self.raw("PRIVMSG #esoteric :%s" + 193751234*123984726) 00:02:29 TypeError: cannot concatenate 'str' and 'long' objects 00:02:37 ~exec self.raw("PRIVMSG #esoteric :%s" % 193751234*123984726) 00:02:38 OverflowError: repeated string is too long 00:02:47 ~exec self.raw("PRIVMSG #esoteric :%s" % (193751234*123984726)) 00:02:48 24022193659651884 00:02:49 ~exec self.raw("PRIVMSG #esoteric :" + str(193751234*123984726)) 00:02:50 24022193659651884 00:02:53 Can't quite do that manually :-P 00:03:12 maybe he is very good at mental arithmetic 00:03:19 very good, he is 00:03:24 ~exec self.raw("PRIVMSG #esoteric :" * 23) 00:03:25 PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric : 00:03:39 Indeed, 22. 00:03:41 bsmnt_bot: indeed 00:04:00 ~exec self.raw("privmsg #esoteric :ihope" * 69) 00:04:01 -!- bsmntbombdood has quit (Excess Flood). 00:04:08 Lol, internet. 00:04:19 -!- bsmnt_bot has changed nick to bsmntbombdood. 00:04:20 i know the perfect test! 00:04:24 What? 00:04:24 -!- bsmnt_bot has joined. 00:04:25 aww 00:04:26 he's gone 00:04:30 boring. 00:04:34 Egad, swappage. 00:04:36 -!- bsmnt_bot has changed nick to bsmntbombdood_. 00:05:09 ~exec self.raw("PRIVMSG #esoteric :%i" % (math.pi)) 00:05:09 3 00:05:13 Woot! 00:05:15 ~exec self.raw("PRIVMSG #esoteric :%d" % (math.pi)) 00:05:16 3 00:05:16 ^^ 00:05:19 wtf 00:05:23 ~exec self.raw("PRIVMSG #esoteric :%r" % (math.pi)) 00:05:23 3.1415926535897931 00:05:27 wow 00:05:31 very good at memorizing pi i see 00:05:40 i know more digits 00:05:46 Nah, mental calculation. 00:05:58 WHO IS WHO?!?! 00:06:06 YOU ARE YOU!!!!! 00:06:11 3.14159265358979323846264 i know so many but i knew more once... 00:06:14 but forgot some of them 00:06:30 ~exec self.raw("PRIVMSG #esoteric :%r" % (math.e)) 00:06:31 2.7182818284590451 00:06:34 ~exec self.raw("PRIVMSG #esoteric :%r" % math.exp(math.pi)) 00:06:35 23.140692632779267 00:06:40 wow 00:06:43 he is very good at mental calculation. 00:06:47 ~exec self.raw("PRIVMSG #esoteric :%r" % math.sqrt(math.pi)) 00:06:48 1.7724538509055159 00:06:53 *clap* 00:06:58 Pff, how do you know those are right? 00:07:06 ~exec self.raw("PRIVMSG #esoteric :%r" % (math.exp(math.pi)^j)) 00:07:07 NameError: name 'j' is not defined 00:07:09 ruby says so 00:07:10 ~exec self.raw("PRIVMSG #esoteric :%r" % (math.exp(math.pi)^J)) 00:07:11 NameError: name 'J' is not defined 00:07:16 ~exec self.raw("PRIVMSG #esoteric :%r" % (math.exp(math.pi)^1j)) 00:07:20 j1. 00:07:21 TypeError: unsupported operand type(s) for ^: 'float' and 'complex' 00:07:26 oh 00:07:30 heh. 00:07:42 ~exec os.unlink("/bot/keep_running") 00:07:43 OSError: [Errno 13] Permission denied: '/bot/keep_running' 00:07:48 aaaw 00:07:51 ~exec sys.stdout(1j^1j) 00:07:52 TypeError: unsupported operand type(s) for ^: 'complex' and 'complex' 00:07:53 ehird`: the imaginary unit is i not j 00:07:59 jix: not in python 00:08:01 huh? 00:08:03 wtf?! 00:08:05 ~exec self.raw("PRIVMSG #esoteric :%r" % math.hypot(math.exp(math.pi))) 00:08:06 TypeError: hypot() takes exactly 2 arguments (1 given) 00:08:13 jix: also in engineering it's i 00:08:17 ~exec self.raw("PRIVMSG #esoteric :%r" % math.hypot(math.exp(math.pi), 1j)) 00:08:18 but j and k are used too for quaternions 00:08:18 TypeError: can't convert complex to float; use abs(z) 00:08:21 j, you mean. 00:08:25 ~exec self.raw("PRIVMSG #esoteric :%r" % math.hypot(math.exp(math.pi), abs(1j))) 00:08:26 23.162289513879337 00:08:38 bsmntbombdood_: you are exceedingly gifted 00:08:43 Are you sure quaternions aren't symmetrical 00:08:46 may i suggest you join MENSA rather than posing as a bot? 00:08:52 ~exec sys.stdout("Thank you!") 00:08:53 Thank you! 00:09:10 ~exec self.raw("PRIVMSG #esoteric :%r" % math.sqrt(1j)) 00:09:11 TypeError: can't convert complex to float; use abs(z) 00:09:15 ~exec self.raw("PRIVMSG #esoteric :%r" % math.sqrt(abs(1j))) 00:09:16 1.0 00:09:19 ~exec self.raw("PRIVMSG #esoteric :%r" % abs(1j)) 00:09:19 1.0 00:09:21 ihope: sym what? 00:09:21 ~exec sys.stdout("Do they have an IRC interface? I'm afraid I'm connected directly to IRC.") 00:09:22 Do they have an IRC interface? I'm afraid I'm connected directly to IRC. 00:09:22 oh 00:09:39 ~exec self.raw("PRIVMSG #esoteric :%r" % math.tan(math.exp(math.pi)*1j)) 00:09:40 TypeError: can't convert complex to float; use abs(z) 00:09:42 Um... 00:09:43 ~exec self.raw("PRIVMSG #esoteric :%r" % math.tan(math.exp(math.pi))) 00:09:43 2.2317672777233026 00:09:46 irc is my only output 00:09:49 00:10:06 do you honestly expect python stdlib functions to work on complex numbers 00:10:13 ~exec sys.stdout(math.e ^ math.pi - math.pi) 00:10:13 TypeError: unsupported operand type(s) for ^: 'float' and 'float' 00:10:18 What? 00:10:23 ~exec sys.stdout(math.e ** math.pi - math.pi) 00:10:23 cmath is for complex numbersss 00:10:23 19.9990999792 00:10:26 isn't ^ xor 00:10:27 Omg, mistake. 00:10:38 ~exec sys.stdout(1j ** 42j) 00:10:38 (2.22893071715e-29+0j) 00:10:43 -!- kwertii has joined. 00:10:46 ~exec sys.stdout(1j ** 42j)[0] 00:10:47 (2.22893071715e-29+0j) 00:10:47 TypeError: unsubscriptable object 00:10:49 ~exec self.raw("PRIVMSG #esoteric :%r" % (math.exp(math.pi)**1j)) 00:10:51 (-1+1.2246063538223773e-16j) 00:10:59 Lol, internet. 00:11:03 ~exec sys.stdout("%r" % (1j ** 42j)) 00:11:04 (2.2289307171543185e-29+0j) 00:11:08 ~exec self.raw("ihope") 00:11:09 amazing mental calculation 00:11:13 simply amazing 00:11:20 ~exec self.raw("quit=0") 00:11:30 Rounding error! 00:11:37 ~exec self.raw("quit") 00:11:38 -!- bsmntbombdood_ has quit. 00:11:39 ~exec self.nick = "lookhowfasticantypetochangenicks" 00:11:42 d'aww 00:12:06 Actually, bsmntbombdood_ merely has an elaborate collection of macros. 00:12:31 a macro to give ~exec ... to a python interpreter? 00:12:49 A Python interpreter is an elaborate collection of macros. 00:17:12 i wonder how hard it would be to write a python interpreter 00:22:05 not too hard 00:22:07 people have done it before 00:22:11 plenty of people 00:25:27 Plenty easy to write a Python interpreter in Python. 00:25:55 Not so much to write it in a language without such a specialized feature. 00:26:39 as easy as it is to write a scheme interpreter in scheme? 00:27:15 easier 00:27:18 eval(code) 00:27:21 actually 00:27:22 not that easy 00:27:27 since the exprstatement difference 00:27:29 which is stupid 00:27:51 not all things which you don't understand are stupid. 00:28:07 you've used that one before when i've mentioned the seperation being stupid 00:28:12 better luck next time 00:28:47 well, i see you still don't understand it, so my point stands :) 00:33:47 The only things that are stupid are those that *I* don't understand. 00:34:28 Therefore, all languages that do not follow Haskell philosophy are stupid. 00:35:08 UR STOPID 00:35:52 -!- ehird` has changed nick to ehird`sleep. 00:36:15 Yay, I'm stopid! 00:36:56 no it's me who is stupid! 00:37:06 and stopid 00:43:14 -!- jix has quit ("CommandQ"). 00:44:06 -!- cherez has quit ("Leaving."). 00:46:42 bsmntbombdood, what that new brainfuck variation that I saw on the esolang forum? with the two new commands: & % ? 00:46:57 the one with continuations? 00:47:02 yeap 00:47:14 i didn't even got what the continuations is. 00:49:59 -!- oerjan has joined. 00:50:01 has it got to do with calling blocks of brainfuck code that return and argument? or am I completely wrong? 00:50:21 it has to do with continuations 00:50:31 you won't understand it unless you understand continuations 00:51:02 I'm not sure I quite understand it. 00:51:21 I probably do, but... 00:51:30 http://en.wikipedia.org/wiki/Continuation 00:51:36 it's pretty simple 00:51:47 Ah, yes, I get it. 00:52:26 me and the other guy disagree about it 00:52:48 he wants just gotos 00:53:08 i still don't get it exactly. 00:53:19 i of course thought continuations were much cooler 00:53:34 Tritonio: how not? 00:53:47 what's a continuation? a block of code? 00:54:00 a code pointer and tape 00:54:06 wiki says it is the rest of the code you have to execute to finish a calculation 00:54:27 so you are going to have many code tapes? 00:54:33 yes 00:54:56 making a continuation involves copying the tape 00:55:40 you have a sparse array, that stores (tape, code pointer) pairs 00:55:56 which command is it that stores a continuation? 00:56:10 &? 00:57:01 ok, & stores the current tape and code pointer in that sparse array, the index being the value of the current cell, then keeps executing normally 00:58:16 and what about: "...and change the current cell to 0 if we come from & or the argument if we come from %." 00:58:55 right 00:59:20 there has to be a way to distinguish between normall execution of &, and jumping there with a % 00:59:34 oh ok... 01:00:03 so & is like putting a label. 01:00:15 and % is like jumping to that label. 01:00:22 something like this? 01:00:46 % replaces the stack and code pointer with the pair indexed by the current cell, and puts the value of the next cell in the the cell where the & was 01:00:58 it's more than goto, because the environment is replaced 01:01:15 and you also can pass a value while jumping. 01:01:21 yes 01:02:12 & is like (call/cc (lambda (x) (set! x) (set! current-cell 0))) 01:02:25 ok i think I got it now. I've never heard of continuations... 01:02:36 % is like ( ) 01:02:51 (sort of) 01:03:39 Tritonio: check out the Io language (not the object-oriented one) 01:04:08 i thought there was a brainfuck implementation with support for "subroutines" 01:04:25 it's a language where nearly everything is a continuation, instead of functions. 01:04:55 so you cannot return from a function/continuation, you have to call another continuation from it instead 01:04:56 Tritonio: this brainfuck makes for easy functions 01:04:57 oerjan, not the OO one? I found the OO. 01:06:26 documentation may be a bit hard to find 01:07:21 http://www.guldheden.com/~sandin/amalthea.html 01:07:54 defining a function is like: "load desired function number"&[ "function code" [->+<]%] 01:10:27 in case you don't notice the link in there, http://www.nondot.org/sabre/Mirrored/AdvProgLangDesign/ is where the language is described 01:16:10 it's hard to browse in separate files, you want http://www.nondot.org/sabre/Mirrored/AdvProgLangDesign/finkel02.pdf, page 43 01:20:48 strange language. and there was no implementation before amalthea? 01:21:06 there probably was but it was lost? 01:22:48 and what about the OO io? 01:23:35 i don't know it 01:24:37 btw the original paper exists but requires a subscription: http://portal.acm.org/citation.cfm?id=70931.70934 01:24:59 http://en.wikipedia.org/wiki/Io_%28programming_language%29 01:25:09 the original paper for what? 01:25:22 for Raph Levien's continuation language Io 01:27:04 -!- Sgeo has joined. 01:30:27 Lua is wonderful. I wonder if python is better. 01:49:24 -!- kwertii has quit. 02:21:09 i have a question 02:21:22 don't we all 02:21:42 can you find a counter-example for perl's grammar is not context-free? 02:22:17 #perl ? 02:22:43 One that shows that it is not context-free? 02:23:28 yes 02:28:13 Clean 02:28:23 (wrong channel) 02:29:04 (He's trying to get suckers to think that Clean isn't an esoteric language in some other channel.) 02:29:08 what machine accepts context-free grammars? 02:29:37 non-deterministic pushdown automata 02:32:37 is there a simple way of compiling to them like there is for regular grammars? 02:33:33 You mean like there are regular expressions? 02:34:55 what? 02:35:02 i'd say compiling to one is fairly trivial but not practical - these are non-deterministic machines 02:35:12 *practical to use 02:35:45 so they turn into exponential-time search if you use them naively 02:35:53 nondeterministic finite state machines are easy to interpret 02:36:20 but exponential 02:36:54 Now, anybody want some absurdity? http://pya.cc/pyaimg/pimg.php?imgid=29546 02:37:15 there are more efficient ways to parse CTF grammars, that are O(n^3) in the worst case 02:38:08 some methods like the Earley parser automatically gives O(n) or O(n^2) if your grammar happens to be LR(k) or unambiguous 02:38:37 n = ? 02:39:06 length of text 03:06:38 methinks i'll try to implement an earley parser 03:06:44 ...once i understand it 03:24:43 -!- GreaseMonkey has joined. 03:37:41 -!- crusoe_ has joined. 03:37:51 -!- crusoe_ has left (?). 04:02:52 -!- RodgerTheGreat has quit. 04:22:31 i sort of understand making an earley parser that just says accept/not accept, but how can you make a parse tree? 04:27:41 i suppose at each point where you are finishing a token, you collect the sub-tokens it consists of 04:28:47 otoh if the grammar is ambiguous you get a list of possible sub-tokens (everything with positions) 04:49:09 -!- ihope has quit (Read error: 110 (Connection timed out)). 04:57:21 -!- Svenstaro has joined. 04:58:33 -!- kwertii has joined. 04:58:56 Hmm. An esoteric emacsite. 05:03:40 -!- Sgeo has quit ("Ex-Chat"). 05:13:37 !rules 05:13:39 Huh? 05:21:02 -!- kwertii has quit (Connection timed out). 05:24:37 -!- Cusoon959 has joined. 05:25:22 Please say "Hello, World!" 05:26:17 * oerjan checks the topic for whether IRP is currently allowed. 05:26:34 Hello, World! 05:26:48 INTERPRETER ERROR: Don't wanna. 05:29:24 thank you, oerjan 05:29:35 oerjan: please say "You are welcome" 05:30:37 LOCKING ERROR: Duplicate command. 05:30:45 i was already considering it. 05:30:53 Please say this sentence. 05:31:06 "this sentence" 05:31:48 "Please say what precedes this sentence, in quote marks, followed by the contents of this sentence." Please say what precedes this sentence, in quote marks, followed by the contents of this sentence. 05:32:53 ""what precedes this sentence"" "the contents of this sentence" 05:34:41 Quine "quine". 05:36:38 -!- GreaseMonkey has quit ("Man who stand in frond of car is tired. Man who stand behind car is exhausted."). 05:36:41 ERROR: quine is not a "quine" 05:37:29 please transfer $500 from your account into min 05:37:30 e 05:38:10 PURSING ERROR 05:38:55 ERROR: Your parser sucks. 05:39:13 Stupid Norwegians named Oerjan. 05:39:26 You're all. . . Norwegian. 05:40:52 my parsing is fine. 05:41:40 Disagree must I parser thinks, sucks I. 05:43:03 play The Faint - Agenda Suicide 06:09:49 -!- bsmntbombdood has set topic: Esoteric programming language discussion | FORUM AND WIKI: esolangs.org | CHANNEL LOGS: http://ircbrowse.com/cdates.html?channel=esoteric. 06:20:07 http://mathworld.wolfram.com/TuppersSelf-ReferentialFormula.html 06:20:12 neet quine 06:21:42 not a quine 06:21:46 arkey.mx@gmail.com 06:21:50 spam him 06:21:52 please 06:21:58 woops, wrong chan 06:22:01 sorry :s 06:24:44 quasiquine? 06:25:43 np: The Faint - Take Me To The Hospital 06:25:45 Yay 06:25:47 it works 06:26:31 that's like calling (write (read-file "foo")), with "(write (read-file "foo"))" in "foo" a quine 06:27:30 :s 06:38:39 -!- oerjan has quit ("Lost terminal"). 07:04:08 -!- Svenstaro has quit (Read error: 104 (Connection reset by peer)). 07:09:56 -!- Svenstaro has joined. 07:14:26 -!- kwertii has joined. 07:26:42 -!- oklopol has quit (Read error: 110 (Connection timed out)). 07:27:34 -!- ololobot has quit (Read error: 110 (Connection timed out)). 07:27:48 -!- oklokok has quit (Read error: 110 (Connection timed out)). 07:36:24 -!- oklopol has joined. 07:43:49 -!- oklokok has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:07:12 -!- ehird`sleep has quit. 09:11:32 -!- RedDak has joined. 10:01:35 -!- kwertii has quit. 10:24:42 good morning... 10:28:09 -!- jix has joined. 11:12:57 -!- Svenstaro has quit. 11:13:00 -!- RedDak has quit (Read error: 113 (No route to host)). 12:03:17 -!- ehird`sleep has joined. 12:03:25 -!- ehird`sleep has quit (Client Quit). 12:19:36 morning 12:20:35 has anyone made a befunge interpreter in brainfuck? 12:27:58 -!- Tritonio has quit (Remote closed the connection). 12:27:59 pretty sure not 12:31:21 ouch 12:31:49 yeah, that departure was a slap in the face 12:33:40 the idea too 12:36:52 -!- Tritonio has joined. 13:26:14 -!- RodgerTheGreat has joined. 13:26:34 & 13:34:49 o 13:35:37 -!- ehird` has joined. 13:37:43 -!- jix has quit (Nick collision from services.). 13:37:57 -!- jix has joined. 14:25:49 -!- ihope has joined. 14:58:06 -!- oerjan has joined. 15:58:20 -!- Tritonio has quit (Read error: 104 (Connection reset by peer)). 16:00:20 -!- poiuy_qwert has joined. 16:45:56 -!- sebbu has joined. 16:52:16 -!- devnonsense has joined. 17:47:33 -!- devnonsense has quit (Remote closed the connection). 18:49:58 -!- Tritonio has joined. 19:24:25 -!- poiuy_qwert has quit. 20:20:00 -!- kwertii has joined. 20:59:50 :D 21:00:15 one storm sewer map in possession 21:15:43 cool 21:15:47 how did that happen? 21:16:16 saying the right things to the right people 21:16:42 what are you going to do now? 21:16:57 find the bigger tunnels, explore them 21:17:05 sweet 21:17:09 urbex ftw 21:17:18 bring back pictures 21:17:26 ``Can I have a storm sewer map?'' ``Sure'' ``Yay'' 21:17:49 Sukoshi`: wrong 21:18:02 Yeah. You probably didn't say yay :P 21:18:05 bonus points for 3d panoramic pictures or taking them in a sequence so that we can assemble them into our own myst-esque game 21:18:13 haha 21:18:14 ``Can I have a storm sewer map?'' ``Fuck you, you're just a kid'' 21:18:28 " I'll give you money! " 21:18:32 " Sure" 21:18:35 "yay" 21:19:14 i had to pay $5 21:19:31 Isn't it public information though? 21:19:45 yes 21:19:52 Well, I would have sued. 21:19:57 Or at least, threatened to sue. 21:20:33 ...criminal charges have more weight than civil 21:20:40 So? 21:21:09 so why sue? 21:21:16 To deny a person the right to inform themselves about their public facilities that they pay for through their money is a hefty crime indeed. 21:21:34 punishable by 90 days in prison (in colorado) 21:21:44 There you go. Justice. 21:21:48 And, the map, probably. 21:22:01 yeah 21:22:05 More likely than not though, he'd just give you the map and settle it out of court. 21:22:10 Which is good too. 21:22:15 yeah 21:22:20 which is what happened 21:22:28 But paying $5 is :| 21:22:51 they are allowed to charge for the price of the materials 21:23:04 it's fun paying for no reason. 21:23:06 It costs $5 to print on a piece of cheap paper and the ink involved? 21:23:20 At most I can see it costing $2. 21:23:22 i'd gladly pay $5 for something free 21:23:29 it's a huge peice of paper with lots of color ink 21:23:35 $5 is reasonable 21:23:46 Hm. Maybe then. 21:24:01 it's a map, not an 8.5 * 11 printout 21:24:02 maps are expensive, and you can't just copy them just like that 21:24:14 in finland that is... i know nothing about america of course 21:24:56 oklokok: don't you know? Every american home is equipped with an 8 foot drum printer 21:25:01 and the trees grow cotton candy 21:25:20 oklokok: If the maps are stored in an image though, you can copy them just like that. 21:25:21 heh 21:25:27 i meant, they can't legally be copied 21:25:31 The awesome power of modern technology, huh? :P 21:25:31 in finland 21:25:36 lol 21:25:42 The government doesen't have its own map copies? 21:25:55 well i guess if they are public property, you can just copy them just like that. 21:26:00 so forget what i said. 21:26:00 maybe the idea is that only the government can copy them 21:26:17 which could be good, simply for purposes of keeping rough track of who has the information 21:26:55 anyway, someone's gotta pay the map drawer ppl, the fact the map is public doesn't mean a commoner buying it doesn't have to pay his share to them. 21:27:13 oh no, they have my name! :P 21:27:48 oklokok: the idea is that the map drawer is payed with taxes 21:28:23 another thing is, charging even a small fee could help reduce the number of people requesting maps for no reason 21:28:34 well, obviously 21:28:49 but i've been wrong from the beginning. 21:28:52 you don't want some yahoo taking a copy of every map in the records department just because he can 21:29:13 that's one cool hobby 21:29:34 anyway, i think the map will be usefull 21:29:43 ...and worth $5 21:29:47 interesting, at the very least 21:30:10 shit, I'd pay $5 to use something like that as a wall poster 21:35:53 i need more wall space 21:39:34 a whole wall is taken up by my whiteboard 21:39:47 bsmntbombdood: what about the roof? 21:40:06 ooooh 21:41:10 you can't really look at a map on the ceiling though 21:41:29 might be awkward 21:42:01 you can look at it while you sleep 21:48:23 -!- jix has quit ("CommandQ"). 22:10:01 -!- sebbu has quit ("@+"). 22:18:34 -!- oerjan has quit ("leaving"). 23:33:42 -!- Tritonio has quit ("Bye..."). 23:35:21 -!- Tritonio has joined.