00:00:41 zzzzzzzzzzzzz 00:07:25 omg, there's a problem with the actual semantics, not the program 00:07:58 the problem is that i want objects to store state, but this effectively prevents recursion in certain cases 00:08:59 because i would have to start having my functions copy themselves as they evaluate, if they see they aren't unique in the program, and they start changing the namespace 00:09:07 actually, what's the problem, that's like 5 lines of code 00:09:17 can't you just have closures? 00:09:29 which close a mutable env 00:10:03 umm 00:10:17 a function is basically just that 00:10:24 -!- jix has quit ("CommandQ"). 00:10:25 except it also holds some code 00:10:36 (= test {(-> $get n) (-> n [])}) (test 5) (get test) <<< this should return 5, because test stores its state 00:10:53 with my current implementation, this meant a function that recursively calls itself actually *calls itself* 00:11:28 the other simple way is to store no state 00:11:43 in which case this example doesn't work, but recursion works easily 00:11:56 *means 00:12:36 so basically, the semantics require the runtime environment to detect recursion and copy namespaces. 00:12:44 i think 00:12:56 at least that's the simplest way i can think of to implement it 00:13:06 and it is simple, so there is really no prob 00:17:56 -!- AnMaster has quit (Connection timed out). 00:18:20 Oh, shoot, forgot to put bin2arr.c in the jsmips dir 8-O 00:18:40 -!- AnMaster has joined. 00:26:49 ehird: Massive failure :P 00:27:52 okay, dirtiest solution ever, but it works 00:28:12 an object checks if it on the call stack when it's evaluated, and it copies its namespace if it is 00:28:13 :-) 00:28:30 GregorR: Wanna see! 00:28:32 Linky! 00:28:34 quicksort works yay 00:30:27 http://www.vjn.fi/pb/p643464352.txt 00:30:44 that is especially ugly without infix 00:32:37 If I had to classify this code on a scale of 1 to WTF, I'd give it WTF 00:35:10 :-) 00:35:16 i think it's fairly clear 00:35:30 Oh, I see the issue. 00:35:30 what's wtf about it? 00:35:43 This won't work with MIPS -O0, because it loads the 'c' variable off the stack every time it uses it. 00:35:48 oh 00:35:55 "this code" 00:35:56 So it gets overwritten and then loads some garbage variable off the stack :P 00:36:10 read "that code" and assumed you meant mine 00:37:32 I said "this code" X-P 00:37:37 You should mark c as a register. 00:37:53 Or rather, mark all of those as registers :P 00:38:38 -!- seabot has joined. 00:39:00 Hmm 00:39:05 Bringing seabot in here wasn't the best idea 00:39:07 It uses ! as a prefix.. 00:39:10 Ergo: 00:39:11 !help 00:39:11 wtf is help? 00:39:13 err 00:39:14 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 00:39:16 That's not meant to happen 00:39:16 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:39:17 :D 00:39:29 -!- seabot has quit (Remote closed the connection). 00:39:33 WTF /is/ help? 00:39:35 -!- seabot has joined. 00:39:36 !help 00:39:36 cdecl: cdecl 00:39:36 help: help 00:39:36 karma: karma- karma karma+ 00:39:38 meta: load reload unload 00:39:38 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 00:39:40 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:39:57 !reload help 00:39:57 Reloaded the help plugin. 00:39:58 !help 00:39:58 cdecl: cdecl 00:39:58 help: help 00:39:58 karma: karma karma+ karma- 00:39:58 meta: load reload unload 00:39:59 I don't know whether MIPS is frozen, or writing over the stack is extremely slow for this emulator :P 00:40:00 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 00:40:02 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:40:07 Hmm. 00:40:09 !karma- EgoBot 00:40:09 EgoBot's karma lowered to -1. 00:40:12 :) 00:40:12 Huh? 00:40:33 Oh fuck you, seabot. 00:41:01 heh 00:41:02 :D 00:41:09 -!- calamari has joined. 00:41:19 !cdecl int EgoBot 00:41:19 declare EgoBot as int 00:41:21 seabot's karma lowered to -∞. Yeah. That's right, bitch. 00:41:22 Huh? 00:41:24 !cdecl lame EgoBot 00:41:25 syntax error 00:41:26 aww 00:41:27 :) 00:41:28 Huh? 00:41:34 hi 00:41:37 hey 00:41:38 Hi calamari :P 00:42:26 -!- seabot has quit (Remote closed the connection). 00:42:31 -!- seabot has joined. 00:42:32 seabot will use @ for a prefix now 00:42:33 @help 00:42:34 cdecl: cdecl 00:42:34 help: help 00:42:34 karma: karma karma+ karma- 00:42:34 meta: load reload unload 00:42:59 GregorR: Will you like it if I make it use egobfi for interpreting brainfuck? ;) 00:43:21 Only if it also interprets: 00:43:22 !help 00:43:26 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 00:43:28 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:43:37 GregorR: It's not just an esolang bolt. :-) 00:43:40 bot 00:43:45 Ah :P 00:44:23 'sea'bot shows its origins: a bot for ##free-c 00:44:25 which is about C 00:44:26 :p 00:44:29 (which is arguably an esolang) 00:44:36 !linguine 00:44:40 Error: Program must have at least one command 00:44:57 why does freenode need another C channel? 00:46:12 is it a sign of senility when you can't remember how to program in an esolang you wrote yourself? 00:46:27 vixey: there's only one: ##C 00:46:30 and ##C has PoppaVic 00:47:08 !linguine 1[0=72,0$,0+29,0$,0+7,0$,0$,0+3,0$,1=32,1$,0-24,0$,0+24,0$,0+3,0$,0-6,0$,0-8,0$,1+1,1$,1-23,1$]0 00:47:12 Hello World! 00:48:18 Gregor: what if a program is more than one line? 00:48:34 calamari: isn't whitespace ignord in linguine? 00:49:03 ehird: no 00:49:48 !linguine 1[]1 00:49:54 Error [line 1]: missing or invalid command 00:50:00 calamari: not if you're Ben Olmstead 00:50:09 !linguine 1[0=0]1 00:50:26 !ps 00:50:30 1 calamari: linguine 00:50:32 2 calamari: ps 00:50:43 !slow bots for $100 00:50:46 Huh? 00:52:01 !linguine 1[0=0]2\n2[0=0]0 00:52:06 Error [line 1]: bad jump line number `2\n2[0=0]0' 00:52:25 calamari: Upload it, specify a url 00:52:36 http://rafb.net/paste/ put it here, choose 'raw' 00:52:40 then !linguine THATURL 00:52:50 iirc, my esobot could handle multiple line input :) 00:53:03 !linguine http://rafb.net/p/2vhKkd81.txt 00:53:05 !ps 00:53:08 1 calamari: linguine 00:53:10 2 ehird: linguine 00:53:12 !kill 1 00:53:12 3 ehird: ps 00:53:13 seeeee 00:53:14 :) 00:53:14 Process 1 killed. 00:53:15 !kill 2 00:53:19 !kill 1 00:53:20 No such process! 00:53:22 Process 1 killed. 00:53:32 -!- oklopol has quit (Read error: 113 (No route to host)). 00:53:59 GregorR: Want a url for the thingy! 00:54:38 NO CAN GIVE, NOT WANT UPLOAD 00:54:42 !linguine http://rafb.net/p/o4spP929.txt 00:54:44 I'll email you the test.html if you want. 00:55:01 GregorR: Blargh :( 00:55:03 Come on :p 00:55:54 blah 00:56:14 !linguine http://rafb.net/p/EYRZBj28.txt 00:56:16 99 bottles of beer on the wall, 00:56:37 -!- oklopol has joined. 00:56:37 -!- oklopol has quit (Remote closed the connection). 00:56:54 -!- oklopol has joined. 00:57:44 !ps 00:57:48 1 calamari: linguine 00:57:50 2 calamari: ps 00:58:46 interesting to be receiving output from an unlisted process :) 00:58:59 http://www.codu.org/jsmips/Nonworking%20Continuations.html 00:59:10 ehird: Enjoy watching the spinner spin. 01:00:25 cool, test.html crashed my firefox 01:01:21 Works fine in mine. 01:01:38 Firefox is in fact my test platform. 01:02:05 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 01:02:37 yeah.. not sure why but ff crashes randomly for me.. tried it again and it was fine 01:03:04 I wonder if it has anything to do with running in 32-bit mode on the 64-bit kernel 01:03:18 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034 01:03:27 Wow 01:04:23 took about 9 minutes for that 01:06:17 Yeah, but I was also running JSMIPS X-P 01:06:25 you ported gcc, binutils, and newlib for your lang? 01:06:33 calamari: no 01:06:36 its not his instruction set 01:06:41 he is just implementing it in JS 01:06:46 and gcc already compiles to it 01:06:50 Because MIPS rulz. 01:07:16 ahh bummer.. was hoping someone understood gcc backends 01:07:46 oklopol: you will be interested in this! 01:07:55 oklopol: I wrote a python function that takes a python 1 liner and expands it 01:07:59 usable for e.g. bots 01:08:03 it uses one syntax extension 01:08:10 after a block thing like 'if foo:' 01:08:13 if it sees { 01:08:19 that means 'newline and increase indentation' 01:08:22 yarrrr 01:08:23 calamari: I once spent all of ten minutes trying to port GCC to MISC, then went "NOPE" and quit. 01:08:25 if it sees the matching }, that means 'drop identation' 01:08:26 so 01:08:41 if foo: { if bar: { print "hi" } else: { print "bye" } } else: { print "wtf"; 2+2 } 01:08:43 GregorR: yeah GCC is a pita 01:08:51 but it is clever, so it doesn't break dict syntax or strings 01:08:54 ehird: why the :'s 01:09:02 oklopol: because {} can be dictionary syntax 01:09:03 ":" always means indentation 01:09:07 right. 01:09:11 ah 01:09:11 well 01:09:13 if foo: ... } 01:09:14 looks ugly 01:09:15 :D 01:09:20 a bit 01:09:21 + its easier to parse this way 01:09:26 yep 01:13:00 World's most obscure insult: "I'm sure you've read the manual page on checking filesystems." 01:13:06 hahah 01:13:14 oklopol: i'll show you the function 01:13:18 oklopol: but it's REALLY REALLY UGLY 01:13:19 :D 01:13:23 do 01:13:29 oklopol: http://rafb.net/p/GoqPxY60.txt 01:13:40 wow that's long 01:13:46 my oklotalk-- parser is shorter :-) 01:13:51 usage: 01:13:54 make_1liner(string) 01:14:03 python-oneliner-thingy in, python code out 01:14:42 oh, iterative solution 01:14:51 GregorR: not sure what the simplest target is that gcc supports, but one possibility is taking the asm output and compiling that for the desired lang 01:15:11 calamari: Probably MIPS I, and yeah, MIPS->MISC wouldn't actually be too tough. 01:15:14 oklopol: can't do it via regexps 01:15:17 oklopol: its really the only way 01:15:31 i meant iterative versus recursive 01:16:16 GregorR: in any case I know it's not x86 :) 01:17:37 oklopol: ah 01:17:44 recursive would just be manual iterative in this case 01:18:26 what? 01:18:50 oklopol: I mean, i'd just end up emulating the stuff I have in my iterative version 01:18:56 i.e. manually transforming it into recursive form 01:19:01 that is, it has no natural recursive form 01:19:05 apart from translating the iterative form 01:19:12 8| 01:19:17 a-ha.. 01:19:19 lessee 01:19:39 oklopol: hmm 01:19:40 in my bot 01:19:47 should declarations persist across @pythons? 01:19:48 like 01:19:50 @python a = 2 01:19:51 @python a 01:19:51 wtf is python? 01:19:55 gives you 2 01:19:55 yeah 01:20:06 oklopol: should it persist across bot runs? :D 01:20:17 in my opinion yes, because it's nice and floody to be able to use a bot as a repl 01:20:21 shhure: D 01:20:33 oklopol: should the bindings be per-user or for everyone? 01:20:37 hmm 01:20:54 you could do something fun like have _XXX be for personal use 01:20:56 except 01:21:02 you'd need to parse the code 01:21:03 heh 01:21:12 _something_here that was 01:21:25 oklopol: 'my' (from perl) 01:21:27 my x = 2 01:21:28 ;D 01:21:41 you can get: 01:21:43 my_x = 2 01:21:44 though 01:21:56 oklopol: oh, i know! 01:22:02 hmm, actually shouldn't be hard to do storing based on name 01:22:04 user-specific, but you can access others bindings 01:22:10 how? 01:22:14 calamari.x 01:22:19 Sgeo.psox_variable 01:22:19 something like that 01:22:24 haha 01:22:25 probably more like: 01:22:27 Wha? 01:22:41 bindings.Sgeo.psox_variable 01:22:45 wait, I'll hijack _ for that 01:22:48 Sgeo: oklopol: /.*/ -> you don't get it -> don't need to 01:22:48 _.Sgeo.psox_variable 01:23:07 oklopol: so you can doo: 01:23:13 doo doo 01:23:14 weird_func = _.oklopol.weird_func 01:23:32 mmyappy. 01:23:36 We're having a public Python bot and we can store variables there under our name? 01:23:37 looks okay 01:23:48 Sgeo: something like that, except not yet. 01:23:48 Sgeo: seabot will execute python, yeah 01:24:20 "Frontends vary internally, having to produce trees that can be handled by the backend. The parsers are hand-coded recursive descent parsers." 01:25:10 funny that they don 01:25:13 't use bison 01:25:36 oklopol: instead of _, users 01:25:40 users.oklopol.weird_func 01:31:16 -!- seabot has quit (Remote closed the connection). 01:31:33 -!- seabot has joined. 01:31:37 @python 2 01:31:37 UnpickleableError: Cannot pickle objects 01:31:40 Darnit. 01:33:07 @reload python 01:33:07 Reloaded the python plugin. 01:33:10 @python 2 01:33:10 2 01:33:12 @python 2+2 01:33:12 4 01:33:14 @python print 'hi' 01:33:14 SyntaxError: invalid syntax (, line 1) 01:33:29 @reload python 01:33:29 AttributeError: 'dict' object has no attribute 'close' 01:33:30 @python print 'hi' 01:33:30 SyntaxError: invalid syntax (, line 1) 01:33:32 @reload python 01:33:33 AttributeError: 'dict' object has no attribute 'close' 01:33:40 @reload python 01:33:40 AttributeError: 'dict' object has no attribute 'close' 01:33:44 -!- seabot has quit (Remote closed the connection). 01:33:50 -!- seabot has joined. 01:33:52 @python print 'hi' 01:33:52 SyntaxError: invalid syntax (, line 1) 01:34:35 @python print 'hi' 01:34:35 SyntaxError: invalid syntax (, line 1) 01:34:37 Weird.. 01:34:45 @reload python 01:34:45 Reloaded the python plugin. 01:34:46 @python print 'hi' 01:34:46 SyntaxError: invalid syntax (, line 1) 01:34:57 @reload python 01:34:58 Reloaded the python plugin. 01:34:58 @python print 'hi' 01:34:58 SyntaxError: invalid syntax (, line 1) 01:35:31 @reload python 01:35:31 Reloaded the python plugin. 01:35:32 @python print 'hi' 01:35:32 SyntaxError: EOL while scanning single-quoted string (, line 1) 01:35:48 @reload python 01:35:49 Reloaded the python plugin. 01:35:49 @python print 'hi' 01:35:50 NameError: global name 'special' is not defined 01:35:58 @python sucks 01:35:58 NameError: global name 'special' is not defined 01:36:01 @reload python 01:36:02 Reloaded the python plugin. 01:36:03 >O< 01:36:07 vixey: justify that 01:36:09 @python 'hi' 01:36:13 @python print 'hi' 01:36:13 AttributeError: 'MagicGlobals' object has no attribute '_print_' 01:36:16 ehird: forced indentation of code 01:36:32 vixey: sooo.. give me a use case for not indenting code 01:36:39 during editing 01:36:51 your editor must be horrible 01:37:15 I've used lots of editors ... 01:37:55 @reload python 01:37:55 Reloaded the python plugin. 01:37:56 @python 'hi' 01:38:07 hm 01:38:08 @python 2 01:38:08 2 01:38:10 Very odd 01:38:19 @reload python 01:38:19 Reloaded the python plugin. 01:38:20 @python 2 01:38:20 2 01:38:23 @python 'a' 01:38:46 @python {} 01:38:46 {} 01:38:51 @python if 1: { 2 } 01:38:51 2 01:38:55 @python if 1: { 2 } else: { 3 } 01:38:55 SyntaxError: invalid syntax (, line 3) 01:38:59 hm, oh 01:39:58 @reload python 01:39:58 Reloaded the python plugin. 01:40:00 @python if 1: { 2 } else: { 3 } 01:40:00 AttributeError: 'NoneType' object has no attribute 'start' 01:40:39 @reload python 01:40:39 Reloaded the python plugin. 01:40:40 @python if 1: { 2 } else: { 3 } 01:40:40 2 01:40:47 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:40:47 AttributeError: 'MagicGlobals' object has no attribute '_print_' 01:41:21 -!- vixey has quit ("Leaving"). 01:42:10 @reload python 01:42:10 SyntaxError: invalid syntax (python.py, line 82) 01:42:43 @reload python 01:42:43 Reloaded the python plugin. 01:42:45 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:42:45 AttributeError: 'cStringIO.StringO' object has no attribute 'strip' 01:44:15 @reload python 01:44:15 Reloaded the python plugin. 01:44:16 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:44:16 AttributeError: 'cStringIO.StringO' object has no attribute 'strip' 01:44:29 @reload python 01:44:29 Reloaded the python plugin. 01:44:30 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:44:30 hello world 01:44:36 @python 2+2 01:44:39 @python 2+2 01:44:42 ah. 01:46:08 @reload python 01:46:09 Reloaded the python plugin. 01:46:09 @python 2+2 01:46:10 4 01:46:16 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:46:16 hello world 01:46:20 @python if 0: { print 'hello world'; 2+2 } else: { 3 } 01:46:20 3 01:47:49 -!- seabot has quit (Remote closed the connection). 01:47:55 -!- seabot has joined. 01:47:58 @python if 0: { print 'hello world'; 2+2 } else: { 3 } 01:47:58 -!- seabot has quit (Remote closed the connection). 01:48:11 oklopol: it's almost working :D 01:48:12 -!- seabot has joined. 01:48:18 @python if 0: { print 'hello world'; 2+2 } else: { 3 } 01:48:18 3 01:48:22 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:48:22 hello world 01:48:23 4 01:48:25 oh yeah! 01:48:29 @python print 'a'*500 01:48:34 hm 01:48:36 @python 'a'*500 01:48:42 a' 01:48:47 -!- seabot has quit (Remote closed the connection). 01:48:53 -!- seabot has joined. 01:48:54 @python 'a'*500 01:48:54 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:48:56 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:49:00 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:49:02 haha whut 01:49:02 :/ 01:49:04 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:49:08 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:49:10 a' 01:50:53 -!- seabot has quit (Remote closed the connection). 01:50:59 -!- seabot has joined. 01:51:02 @python 'a'*500 01:51:02 -!- seabot has quit (Remote closed the connection). 01:51:23 -!- seabot has joined. 01:51:24 @python 'a'*500 01:51:25 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:51:55 @python 'a'*500+'h!' 01:51:55 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:52:00 -!- seabot has quit (Remote closed the connection). 01:52:03 @python 'a'*500+"h!" 01:52:07 -!- seabot has joined. 01:52:09 Slereah: sorry, its debug time 01:52:09 :D 01:52:10 v 01:52:10 @python 'a'*500 01:52:11 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:52:16 Damn you robot! 01:52:30 -!- seabot has quit (Remote closed the connection). 01:52:35 -!- seabot has joined. 01:52:37 @python 'a'*500 01:52:37 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:53:16 -!- seabot has quit (Remote closed the connection). 01:53:22 -!- seabot has joined. 01:53:26 GregorR: How many characters will egobot write on one line? 01:53:27 @python 'a'*500 01:53:28 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:53:39 -!- seabot has quit (Remote closed the connection). 01:53:52 -!- seabot has joined. 01:53:55 @python 'a'*500 01:53:55 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:53:55 aaaaaaaa' 01:54:20 @python sys 01:54:21 NameError: name 'sys' is not defined 01:54:22 @python import sys 01:54:35 @python help(sys) 01:54:36 NameError: name 'sys' is not defined 01:54:40 .. 01:54:42 Sgeo: It's per user. 01:54:45 python import sys 01:54:47 @python help(sys) 01:54:48 Help on built-in module sys: 01:54:48 NAME 01:54:48 sys 01:54:48 FILE 01:54:48 (built-in) 01:54:48 -!- seabot has quit (Excess Flood). 01:54:52 need to add a delay 01:54:52 :D 01:55:06 -!- seabot has joined. 01:55:09 Can users share data? 01:55:20 Sgeo: Soon you can do: 'users.ehird.sys' 01:55:24 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:55:24 SyntaxError: invalid syntax (, line 1) 01:55:28 hmmm whut 01:55:41 @reload python 01:55:42 Reloaded the python plugin. 01:55:43 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:55:43 SyntaxError: invalid syntax (, line 1) 01:55:44 {} are legal in Python? 01:55:45 ahh 01:55:46 i seeeee 01:55:51 Sgeo: No, but I preprocess the code 01:55:54 I don't think they .. oh 01:56:03 It's a special syntax so that you can fit anything on one line. 01:56:08 cool 01:56:18 Although I don't think the #python people would like that 01:56:27 Sgeo: #python people are asses 01:56:36 and I'd like to see their suggestion for getting python code on one line 01:56:37 it's the only way 01:56:40 @reload python 01:56:40 Reloaded the python plugin. 01:56:43 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:56:43 IndentationError: unexpected indent (line 2) 01:56:55 @reload python 01:56:56 Reloaded the python plugin. 01:56:56 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:56:57 IndentationError: unexpected indent (line 2) 01:57:07 Oh, hmm. 01:57:07 Odd. 01:57:23 @reload python 01:57:23 Reloaded the python plugin. 01:57:24 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:57:25 AttributeError: 'MagicGlobals' object has no attribute '_getattr_' 01:57:29 Yay 01:57:47 @reload python 01:57:47 Reloaded the python plugin. 01:57:48 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:57:48 TypeError: 'NoneType' object is not callable 01:57:54 ehird, what if one user wants to keep data from other users? 01:58:06 looks like I've been missing out on fun 01:58:08 Sgeo: why the fsck are they using a public bot to evaluate python 01:58:11 @reload python 01:58:11 Reloaded the python plugin. 01:58:12 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:58:13 TypeError: 'NoneType' object is not callable 01:58:54 -!- calamari has quit ("Leaving"). 01:59:13 @python test = False; while(not Test): {print 'Hi'; test = True} 01:59:13 NameError: name 'Test' is not defined 01:59:18 @python test = False; while(not test): {print 'Hi'; test = True} 01:59:19 Hi 01:59:36 So it's something to do with calling a function in sys 01:59:44 Sgeo: I know what the problem is. 02:00:06 @reload python 02:00:06 Reloaded the python plugin. 02:00:09 @python import sys; while True: { print 'ping'; sys.sleep(3) } 02:00:09 AttributeError: 'module' object has no attribute 'sleep' 02:00:16 Oh, duh 02:00:25 @python import time; while True: { print 'ping'; time.sleep(3) } 02:00:34 Ayup, just as I thought 02:00:45 ..what's the problem now? 02:01:05 Alright, I gotta go. I'll be back tomorrow night, and hopefully say some more. 02:01:07 G'night! 02:01:13 bye wildhalcyon 02:01:35 -!- wildhalcyon has left (?). 02:01:38 @help 02:01:41 Ayup 02:02:05 hm? 02:02:06 @help 02:02:39 -!- seabot has quit (Remote closed the connection). 02:02:44 Sgeo: It isn't multi-threaded yet 02:02:50 -!- seabot has joined. 02:03:16 @python import time; while True: { print 'ping'; time.sleep(3) } 02:03:16 AttributeError: 'str' object has no attribute 'sender' 02:03:28 @reload python 02:03:29 Reloaded the python plugin. 02:03:32 @python import time; while True: { print 'ping'; time.sleep(3) } 02:03:33 ping 02:03:36 ping 02:03:38 woot 02:03:39 ping 02:03:41 -!- seabot has quit (Remote closed the connection). 02:03:47 -!- seabot has joined. 02:03:55 @python import sys; sys.exit(1) 02:03:56 -!- seabot has quit (Remote closed the connection). 02:03:57 Sgeo: I THINK everything should work, all I have to do now is make it secure 02:03:57 .. 02:04:00 indeed 02:04:03 And DON'T DO THAT 02:04:09 Do you realise how annoying that is? 02:04:10 -!- seabot has joined. 02:04:14 sorry 02:04:16 :p 02:04:20 How is it going to be secured? 02:04:25 Sgeo: RestrictedPython 02:04:29 http://pypi.python.org/pypi/RestrictedPython 02:04:42 It gives you a function that you can use instead of compile() 02:04:53 and then you just provide some hooks into the environment you eval it in (the globals) 02:04:58 and those get called on things like e.g. importing 02:05:05 @python users 02:05:05 {'ehird': } 02:05:10 @python users.ehird 02:05:10 AttributeError: 'dict' object has no attribute 'ehird' 02:05:14 oh, of course 02:05:37 @reload python 02:05:38 Reloaded the python plugin. 02:05:39 @python 2 02:05:40 TypeError: can't pickle function objects 02:05:44 Darn 02:06:13 http://www.vjn.fi/pb/p234644461.txt <<< rational number class and quicksort on it 02:06:43 test\ratqs.ot ==> [[rat 0 5] [rat 1 3] [rat 34 82] [rat 2 4] [rat 3 5] [rat 5 6] [rat 61 48] [rat 8 3] [rat 93 23] [rat 8 1]] 02:06:49 >>> [0.0/5,1/3.0,34.0/82,2/4.0,3.0/5,5/6.0,61.0/48,8/3.0,93.0/23,8/1.0] 02:06:49 [0.0, 0.33333333333333331, 0.41463414634146339, 0.5, 0.59999999999999998, 0.83333333333333337, 1.2708333333333333, 2.6666666666666665, 4.0434782608695654, 8.0] 02:06:54 seems it succeeds 02:07:06 @reload python 02:07:06 Reloaded the python plugin. 02:07:12 @python users 02:07:12 SafetyError: Nuh-uh! 02:07:13 oklopol, what language? 02:07:15 hum 02:07:17 fun, i've never done a language with extendable types before 02:07:21 Sgeo: oklotalk-- 02:07:25 @python import sys; sys.exit 02:07:26 SafetyError: Nuh-uh! 02:07:32 Huh what 02:07:35 Ohy 02:07:38 Of course 02:07:50 @python sys.version 02:07:50 SafetyError: Nuh-uh! 02:07:56 Sgeo: Yes yes yes 02:07:56 shut up 02:07:57 :) 02:08:18 ehird: once you're done, do realize you are supposed to be the one vaguely interested. 02:08:46 oklopol: Yes 02:08:48 I am going to look 02:08:54 yarrrr, no hurry 02:09:16 i think i'm going to take a break now, the current subset seems to work quite nicely 02:09:19 @reload python 02:09:19 Reloaded the python plugin. 02:09:20 @python 2 02:09:21 2 02:09:22 @python users 02:09:22 02:09:38 @reload python 02:09:39 Reloaded the python plugin. 02:09:40 @python users 02:09:40 SafetyError: Nuh-uh! 02:09:43 huh whut 02:09:46 or i could just keep on working 02:09:49 dunno 02:09:53 oic 02:10:05 @python user.Sgeo 02:10:06 NameError: name 'user' is not defined 02:10:08 @python users.Sgeo 02:10:09 SafetyError: Nuh-uh! 02:10:12 .. 02:10:31 Sgeo: Please shut up when I just found a bug and am trying to fixi t 02:10:32 :) 02:11:12 @python "I WANNA TRY TOO" 02:11:18 @python print "I WANNA TRY TOO" 02:11:18 I WANNA TRY TOO 02:11:29 @python for i in range(1000): {print "I WANNA TRY TOO"} 02:11:30 NameError: name '_getiter_' is not defined 02:11:33 :-< 02:12:04 yes yes yes 02:12:06 gimme a second 02:12:06 ;) 02:12:07 ehird, how are you planning on preventing floods like that? 02:12:36 Sgeo: Making output go sloooow. 02:12:37 And a @kill 02:12:39 @reload python 02:12:40 Reloaded the python plugin. 02:12:43 @python "HI" 02:12:47 Hmm, thanks oklopol 02:12:49 You found a bug 02:13:02 @python users 02:13:02 {} 02:13:07 And 'nother 02:13:08 @python str("Hi") 02:13:08 'Hi' 02:13:24 @reload python 02:13:25 Reloaded the python plugin. 02:13:28 Sgeo: Totally bizzare 02:13:31 @python 'hi' 02:13:31 @python "Hi" 02:13:34 .. 02:13:35 Weird. 02:13:38 @python users 02:13:39 {} 02:13:40 @python str("Hi") 02:13:40 'Hi' 02:13:48 @python 2 02:13:48 2 02:13:51 @reload python 02:13:52 Reloaded the python plugin. 02:13:54 @python users 02:13:54 {'ehird': } 02:13:54 @python "Hi" 02:13:57 @python users 02:13:57 {'ehird': , 'Sgeo': } 02:14:22 @python dir(users.Sgeo) 02:14:22 AttributeError: 'dict' object has no attribute 'Sgeo' 02:14:34 @python dir(users['Sgeo']) 02:14:34 NameError: global name 'getitem' is not defined 02:14:35 @reload python 02:14:35 Reloaded the python plugin. 02:14:36 @python users 02:14:37 {'ehird': } 02:14:43 @python 02:14:46 @reload python 02:14:46 Reloaded the python plugin. 02:14:47 @python users 02:14:47 {'ehird': } 02:14:47 @python users 02:14:48 {'ehird': , 'Sgeo': } 02:14:49 @python users.ehird 02:14:49 AttributeError: 'dict' object has no attribute 'ehird' 02:14:56 @python type(users) 02:14:57 02:15:02 oshi- 02:15:03 @python users['ehird'] 02:15:03 NameError: global name 'getitem' is not defined 02:15:17 @reload python 02:15:17 Reloaded the python plugin. 02:15:21 if it's a dict, it should be like user['ehird'] not users.ehird 02:15:25 02:15:30 @python users 02:15:30 BRING 02:15:30 {'Sgeo': } 02:15:33 Sgeo: what do you think 'oshi-' means 02:16:29 @reload python 02:16:29 Reloaded the python plugin. 02:16:30 @reload python 02:16:30 Reloaded the python plugin. 02:16:32 @python users 02:16:33 NameError: global name 'getitem' is not defined 02:16:41 oh 02:16:41 ofc 02:17:17 @reload python 02:17:17 Reloaded the python plugin. 02:17:19 @python users 02:17:19 {'ehird': } 02:17:22 @python users.ehird 02:17:23 AttributeError: 'dict' object has no attribute 'ehird' 02:17:35 @python users.__class__ 02:17:35 SyntaxError: Line 1: "__class__" is an invalid attribute name because it starts with "_". 02:17:41 ... 02:17:47 Stupid RestrictedPython 02:18:36 @reload python 02:18:36 Reloaded the python plugin. 02:18:38 @python users 02:18:38 {'Sgeo': } 02:18:38 @python users 02:18:39 {'ehird': , 'Sgeo': } 02:18:46 @python users['Sgeo'] 02:18:46 02:18:54 @python test = 5 02:18:59 @reload python 02:18:59 Reloaded the python plugin. 02:19:01 @python users['Sgeo']['test'] 02:19:01 KeyError: 'test' 02:19:03 @python users 02:19:03 {'ehird': , 'Sgeo': } 02:19:03 gah 02:19:05 @python users.Sgeo 02:19:05 AttributeError: 'dict' object has no attribute 'Sgeo' 02:19:08 fdfkgdfg 02:19:11 Sgeo: just stop for a sec, k 02:19:48 * Sgeo wonders if he could help code somehow 02:19:58 @reload python 02:19:58 Reloaded the python plugin. 02:20:00 @python users.Sgeo 02:20:00 RuntimeError: maximum recursion depth exceeded 02:20:05 @python users 02:20:05 {'ehird': } 02:20:17 @reload python 02:20:17 Why was it recusing if I wasn't in there? 02:20:17 Reloaded the python plugin. 02:20:19 @python users 02:20:19 {'ehird': } 02:20:21 @python users.ehird 02:20:21 NameError: global name 'name' is not defined 02:20:27 ehird: what do you do for protection? 02:20:28 @reload python 02:20:28 Reloaded the python plugin. 02:20:29 @python users.ehird 02:20:30 02:20:51 oklopol: I just ditched RestrictedPython. Now I'll protect it via __builtins__, modified globals, and __import__ 02:20:58 @python users.ehird.users 02:20:59 {'ehird': } 02:21:01 @python users.ehird.users.ehird.users 02:21:02 AttributeError: 'dict' object has no attribute 'ehird' 02:21:04 hee 02:21:06 oh wait 02:21:06 oshi 02:21:09 sounds possible 02:21:35 @reload python 02:21:36 Reloaded the python plugin. 02:21:37 @python users.ehird.users.ehird.users 02:21:37 AttributeError: 'MagicGlobals' object has no attribute 'users' 02:21:40 @python users 02:21:40 {'ehird': } 02:21:51 Sgeo: this IS abusable -- you can modify the users dict how you please 02:21:52 but it's __d 02:21:58 so you have to do all this: 02:21:58 @python users['Sgeo'] 02:21:58 02:22:17 __d? 02:22:18 @python users.ehird._MagicGlobals__data 02:22:18 {} 02:22:33 @python users 02:22:33 {'ehird': , 'Sgeo': } 02:22:36 Well, whatever. 02:23:06 @python def fact(n): { if n == 0: { return 1 } else: { return n * fact(n-1) } } 02:23:07 @python type(users['Sgeo']) 02:23:07 02:23:16 @python fact 02:23:16 02:23:19 @python fact(2) 02:23:19 NameError: global name 'fact' is not defined 02:23:22 WTF 02:23:24 @python fact 02:23:24 02:23:28 .. 02:23:32 @python x = fact; x(2) 02:23:34 @python users['ehird']['fact'] 02:23:34 02:23:37 @python users['ehird']['fact'](5) 02:23:37 NameError: global name 'fact' is not defined 02:23:41 oh 02:23:42 of course 02:23:52 its erroring on the recursive fact 02:23:56 @python users['ehird'] 02:23:57 02:24:01 @python dir(users['ehird']) 02:24:01 ['_MagicGlobals__blab', '_MagicGlobals__data', '_MagicGlobals__users', '__builtins__', '__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__getitem__', '__hash__', '__import__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__str__', '__weakref__', 'special', 'stdout'] 02:24:13 @python users['ehird']['fact'] 02:24:13 02:24:15 @python dir(users['ehird']['fact']) 02:24:16 ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] 02:24:21 @python users['ehird']['fact'].func_dict 02:24:21 {} 02:24:25 bah 02:24:27 i dunno why this is happening 02:24:30 func_dict? 02:24:31 @python users['ehird']['fact'].func_globals 02:24:32 -!- seabot has quit (Excess Flood). 02:24:44 -!- seabot has joined. 02:24:59 @python def id(x): { return x } 02:25:04 @python id(2) 02:25:04 2 02:25:10 @python def void(): { return void } 02:25:12 @python void() 02:25:13 NameError: global name 'void' is not defined 02:25:15 @python void 02:25:16 02:25:18 Sgeo: you see? 02:25:33 @python print repr(void.func_globals)[:20] 02:25:33 {'__builtins__': {'I 02:25:34 yes, but what's func_dict supposed to be? 02:25:35 @python print repr(void.func_globals)[:100] 02:25:36 {'__builtins__': {'IndexError': , 'all': , 'hel 02:25:43 @python print repr(void.func_globals)[100:200] 02:25:43 p': Type help() for interactive help, or help(object) for help about object., 'vars': @python print repr(void.func_globals)[200:300] 02:25:46 tion vars>, 'SyntaxError': , 'unicode': , 'UnicodeDec 02:26:08 everything that the function sees as global, I guess? 02:26:27 @python def void: {return void} 02:26:28 SyntaxError: invalid syntax (, line 1) 02:26:34 @python def void(): {return void} 02:26:46 @python void.func_globals['void'] = void 02:26:51 python void() 02:26:53 @python void() 02:26:54 02:26:56 :D 02:26:59 hah 02:27:03 ugly workaround though 02:27:35 @python users.Sgeo.void 02:27:35 AttributeError: 'MagicGlobals' object has no attribute 'void' 02:27:47 @python users.Sgeo['void'] 02:27:47 02:27:56 @reload python 02:27:56 Reloaded the python plugin. 02:27:57 @python users.Sgeo.void 02:27:57 KeyError: 'Sgeo' 02:28:02 heh 02:28:03 I keep wiping yours 02:28:09 @python users.ehird 02:28:09 02:28:21 -!- Sgeo has changed nick to `Sgeo. 02:28:27 <`Sgeo> @python print "Hi" 02:28:28 Hi 02:28:32 @python users 02:28:32 {'ehird': , '`Sgeo': } 02:28:35 @python users['`Sgeo'] 02:28:35 02:28:51 <`Sgeo> @python getattr(users, "`Sgeo") 02:28:52 02:28:59 -!- `Sgeo has changed nick to Sgeo. 02:30:11 oklopol: Feed in your cellular automata thing 02:30:14 :D 02:30:16 you wrote a function to do it 02:30:19 well i don't have it anywhere 02:30:20 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)). 02:30:23 but now, it can be multiple statements and everything 02:30:27 cool 02:30:28 so it'll be a lot more convenient 02:30:38 i can rewrite one, or you can search it for me 02:30:42 @python import sys; sys.exit 02:30:46 oklopol: rewrite it to use the cool stuff 02:30:46 :D 02:30:48 but i don't *have* it 02:30:51 :D 02:30:52 @python import sys; sys 02:30:57 .. 02:30:58 Sgeo: yes yes it's buggy 02:30:58 hmm 02:31:04 oklopol: here's the general rule: 02:31:07 @python str("hi, I'm alive") 02:31:07 "hi, I'm alive" 02:31:18 foo: { bar } is foo:, with 'bar' as the indented block 02:31:23 what automaton do you want 02:31:24 foo; bar is foo, a newline, and bar 02:31:28 i know the rules! 02:31:31 but of course the newline is bumped up to the right indent 02:31:32 and ok 02:31:39 oklopol: how about that famous rule one 02:31:40 thing 02:31:40 :P 02:31:47 also i'm gonna write it in real python first, because i'm scared i might fail :< 02:31:56 rule one 02:31:57 hmm 02:32:22 what's rule one? 02:32:39 no 02:32:40 not rule 1 02:32:43 rule one is trivial 02:32:45 the turing complete one 02:32:48 oh 02:32:49 110 02:32:54 no 02:32:55 a lower number 02:33:06 what are we talking about? 02:33:14 110 + a few identical ones 02:33:20 for instance the reverse 02:33:25 and two others, iirc 02:33:41 anyway, it's 110 alright 02:33:43 i'll do 02:33:43 now 02:33:49 ok 02:33:50 :) 02:34:40 oh, right 02:34:49 110 grows in the wrong direction, i'll reverse it 02:35:20 so it's... 116 02:36:30 oklopol: http://codespeak.net/pypy/dist/pypy/doc/sandbox.html 02:36:31 I might use that 02:36:35 because pypy is cool 02:36:35 :D 02:38:56 interacting through stdio? Why does that sound familiar.., 02:39:20 Sgeo: Huh? 02:39:46 "instead, whenever it would like to perform such an operation, it marshals the operation name and the arguments to its stdout and it waits for the marshalled result on its stdin." 02:40:14 Sgeo: oh. that's nothing like psox 02:40:21 * Sgeo was being silly 02:40:28 okay i'm implementing a bit verbosely 02:40:36 but i guess that's okay 02:44:54 oklopol: can't wait 02:44:55 :D 02:46:33 hmph, should be ready already 02:46:34 almost 02:48:56 so okay 02:48:59 it's 02:49:02 1 02:49:09 it's 02:49:09 5 02:49:10 asd someone show me some of it 02:49:17 oklopol: ??? 02:49:19 wanna see if it's right 02:49:25 huh? 02:49:26 i don't wanna! :D 02:49:29 110 02:49:31 what are you talkng about 02:49:56 http://en.wikipedia.org/wiki/Rule_110_cellular_automaton 02:50:02 oklopol: try doing the 2,3 machine 02:50:03 :p 02:50:31 * Sgeo actually helps someone with a regex question in #python .. 02:50:43 -!- tola_ has quit. 02:50:46 ais523: you have a wikipedia article! 02:50:55 http://en.wikipedia.org/wiki/Alex_Smith_%28The_Simplest_Universal_Computer_Proof_contest_winner%29 02:53:03 oklopol: but anyhoo 02:53:04 Rule 110 02:53:05 show it! 02:53:10 just define it 02:53:11 like 02:53:17 @python def rule110(foo): { ... } 02:53:35 what are these rules? 02:53:41 Sgeo: cellular automata 02:53:45 Rule 110 is turing complete 02:53:55 GLAH it should work noq 02:53:56 now 02:54:15 i'm not really in a very fast coding mood right now 02:54:26 but... fuck if this takes over half an huor 02:54:28 hour 02:54:39 oklopol: it should work? try it :D 02:59:31 try it 02:59:35 i need to go soon :( 02:59:40 okay 02:59:41 done 02:59:46 ok 02:59:48 try it in @python 02:59:48 now to convert... 03:01:10 pasiodjf 03:01:16 ; splits or terminates 03:01:52 @python def next_row(p,rule=110,spl=(0,-1)): {rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule))};if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]] 03:02:03 you missed a } 03:02:03 this is the function to get the next row 03:02:08 oh 03:02:10 ah 03:02:29 @python def next_row(p,rule=110,spl=(0,-1)):{rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule))};if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]} 03:02:33 but 03:02:36 i need a few others 03:02:50 ok 03:02:51 hurry 03:02:54 i don't have much time :p 03:03:04 argh 03:03:42 @python def next(l,r):{r=reverse(r);for i in xrange(len(r)): {if r[i]==True and l==to_bits(i,3): {return True }};return False} 03:04:52 @python def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reverse(ret+[0]*(l-len(ret)))} 03:04:59 oklopol: your original was a one-liner 03:05:00 :p 03:05:08 and this could easily be made one 03:05:20 i just made it a bit more generic, for the fuck of it 03:05:21 @python row=[True] 03:05:30 @python row=next_row(row) 03:05:32 @python row 03:05:32 [True] 03:05:35 :D 03:05:39 whhhell 03:05:52 @python next_row(row) 03:05:52 NameError: global name 'to_bits' is not defined 03:05:56 oh. 03:05:57 joy 03:06:02 the broken global bindings 03:06:06 do you want me to onelinerize it? 03:06:38 how long will that taeke 03:06:45 not that long 03:06:49 4 minutes..? 03:06:49 how long 03:06:51 ah 03:06:51 ok then 03:06:52 maybe 03:07:54 done 03:07:59 now to your format 03:08:28 oklopol: i hope its just one function 03:08:30 otherwise itll break 03:08:39 i used inner functions 03:08:48 that okay? 03:08:52 yes 03:10:04 oklopol: ... 03:11:05 @python def next_row(p,rule=110,spl=(0,-1)):{def next(l,r):{r=reverse(r);for i in xrange(len(r)):{if r[i]==True and l==to_bits(i,3):{return True}};return False};def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reverse(ret+[0]*(l-len(ret)))};rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule)) };if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]} 03:11:13 hmph 03:11:16 didn't fit? :D 03:11:19 oklopol: is that it? 03:11:20 it ended at 03:11:22 spl[1]]} 03:11:28 if that's right, quick test it 03:11:28 yep 03:11:30 should be 03:11:30 i have about 60 seconds 03:11:41 @python next_row([True]) 03:11:47 :D 03:11:52 @python print next_row([True]) 03:11:52 NameError: name 'next_row' is not defined 03:11:55 :P 03:11:56 okay 03:11:59 sec 03:11:59 @python print users.oklopol.next_row([True]) 03:11:59 NameError: global name 'reverse' is not defined 03:12:04 adsölfkioarsgkj 03:12:05 FUCK 03:12:29 @python def next_row(p,rule=110,spl=(0,-1)):{def next(l,r):{r=reversed(r);for i in xrange(len(r)):{if r[i]==True and l==to_bits(i,3):{return True}};return False};def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reversed(ret+[0]*(l-len(ret)))};rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule)) };if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]} 03:12:34 @python print next_row([True]) 03:12:34 TypeError: argument to reversed() must be a sequence 03:12:38 What 03:12:42 PL 03:12:43 OK 03:12:44 gtg 03:12:48 wait wait 03:12:51 oklopol: feel free to try and fix it in pure python 03:12:53 ill run it tomorrow 03:12:53 Bye 03:12:56 hehe 03:12:59 -!- seabot has quit (Remote closed the connection). 03:12:59 darn, so close 03:13:06 -!- ehird has quit ("This computer has gone to sleep"). 03:13:10 it does already work in pure python. 03:13:12 oh 03:13:13 bye 03:33:52 -!- vixey has joined. 03:42:13 hi vixey 03:42:36 hello 03:42:51 no rest for the wicked 03:43:22 -!- oklofok has joined. 03:47:44 howdy 04:03:01 -!- oklopol has quit (Read error: 113 (No route to host)). 04:08:10 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 04:08:10 -!- Sgeo has quit (brown.freenode.net irc.freenode.net). 04:08:10 -!- Quendus has quit (brown.freenode.net irc.freenode.net). 04:08:11 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 04:11:45 -!- Parma-Quendion has joined. 04:11:45 -!- AnMaster has joined. 04:11:45 -!- Sgeo has joined. 04:11:45 -!- Quendus has joined. 04:11:45 -!- GregorR has joined. 04:12:04 -!- Quendus has quit (Connection reset by peer). 04:18:51 -!- oklofok has quit (No route to host). 04:45:01 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 04:46:41 -!- Sgeo has joined. 04:50:39 so, what are people up to this evening? 04:50:48 Being quite happy. 04:51:01 that's a very expansive response 04:51:04 (Due to drugs) 04:51:09 ah 04:51:37 -!- Sgeo_ has joined. 04:52:34 I'm grading quizzes and chipping away at my respect for humanity 04:52:50 1) 1 + 1 = [ ] 04:52:51 3 04:53:50 I wouldn't be surprised at an answer like that, with this class 04:54:03 I've had people routinely misspell their own names, so all bets are off 04:54:09 WOW 04:54:49 it's a melange of painful ignorance and hilarity 04:55:37 Can you give us an example? 04:55:59 -!- Sgeo__ has joined. 04:56:00 s/us/Gregor/ :P 04:56:15 Sgeo{_{_,},}: Stop growing underscores :p 04:56:23 lol GregorR 04:56:35 The same page at popsci keeps causing me to freeze 04:56:36 hm, well, I haven't run across any real doozeys yet in this batch, but there's been some pure gold in the past 04:57:10 One guy wrote his first name and no last name on a paper, in a CLASS OF 93 STUDENTS. 5 people had that first name. 04:57:32 wouldn't have made a difference though, because he got a zero on the assignment, too 04:57:40 Noyce. 04:57:41 nearly a third of the class is retaking it 04:57:56 Why does http://www.popsci.com/scitech/article/2008-02/anonymity-experiment keep causing my computer to freeze? 04:57:59 Firefox 2.0.0.12 04:58:06 Flash9 04:58:13 Ubuntu 7.04 04:58:46 we have a lot of quizzes that are just "write your name on a sheet of paper" and people still fuck it up, misspelling their names, writing illegibly (think first-grader with a crayon illegibly) and turning in the quiz... without their name on it. 04:59:35 So, uh, what sort of class is that? 04:59:50 "Object Oriented Design" 05:00:10 Jebus. People somehow manage to get /to/ that class while still being dumbf***s? 05:00:29 it's a painfully easy class- when I took it I got over 100% overall. This is why I can mock their failures. 05:01:08 it's basically the first thing you take after passing basic "intro to Java" style stuff. Most of it isn't even CODING, it's just learning how to properly spec and design OO projects 05:02:22 The writing skills really bring me to tears. I cannot BELIEVE people can get into college without being able to write a coherent sentence that doesn't look like it was scrawled by someone with cerebral palsy. 05:02:46 There's a whole class of people who get into CS but are too effing stupid to ever get it. I call them "gamers", although it's actually a bigger set. Anyway, usually they've all been weeded out by the time you get to any real courses, so this surprises me a bit. 05:03:13 OOD *IS* the class that weeds these people out, as far as I can tell. 05:03:32 * Sgeo__ is in a database class. 05:03:33 Aaaaaaaaaaaaaah. 05:03:47 Sgeo: are you an IT major or what? 05:03:57 No major, I'm non-matric 05:04:23 My college offers "Computer Information Systems", they shut down CS 05:04:35 D:> 05:04:40 good fucking lord 05:04:44 that's horrible 05:04:46 I'm going to Purdue next year 8-D 05:05:56 I have a friend from the UK who's taking Software Engineering because his university doesn't recognize CS as a field (what the christ), and he told me they're dropping their Data Structures course next year. 05:07:08 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 05:09:04 Maybe I should go to a different college? 05:09:17 I'd highly recommend it 05:09:19 I know I wouldn't go to a college that didn't offer a Major in CS. 05:09:36 -!- Sgeo_ has quit (Read error: 110 (Connection timed out)). 05:09:37 I can say that MTU, at least, has a CS department that doesn't seem to be spiraling into the shitter 05:09:55 I mean, every university hsa the right to offer or not offer whatever they feel like, but you also have the right to go too a university that DOES offer what you need. 05:09:57 I mean, CIS does have a programming branch or whatever it's called 05:10:40 I'd say if you aren't going to a university that doesn't offer the major you're interested in, you're wasting your money. 05:10:54 Hm 05:10:59 Let me try to reduce the negatives there: 05:11:00 RodgerTheGreat, s/aren't/are/? 05:11:13 argh 05:11:14 If you ARE going to a university that DOES offer the major you're interested in, you're wasting your money. 05:11:27 yes, I inserted a superfluous negative there 05:11:48 This is what happens when I get distracted in mid-thought 05:11:51 GregorR, I don't think those are equivelent 05:12:04 * Sgeo__ isn't sure though 05:12:10 Oh wait, you're right. 05:24:28 is it bad that I tend to instantly form a negative opinion of someone who writes their name with a roman numeral/ number after it, such as "John Smith III" or "Ted Borglan the second"? 05:26:49 it just strikes me as tremendously narcissistic. 05:43:51 "III" isn't, "the second" or "II" is (IMHO) 05:44:12 "The second" is the same as "Junior", so that's just pretentious. 05:44:53 But "The third"/"III" is not replaceable, and just part of the persons name. It's part of their full name, so that's how they write it. 05:45:01 I fail to understand why pretentiousness doesn't carry past a single generation 05:45:47 well, honestly writing a middle name in most non-legal or administrative cases is rather pretentious as well, so I'd argue that applies to "III" 05:46:19 Do you find somebody who writes Bob Forpthop Jr. pretentious? (Assuming of course that their father's name is Bob Forpthop) 05:47:42 I'm not sure. 05:47:55 possibly. 05:48:34 Heh - it seems to me like writing III after is no different (Jr. Jr. is just stupid), so the opinion should be the same if nothing else :P 05:49:36 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 05:50:00 how about parents showing some creativity naming their children, avoiding the problem altogether? 05:50:12 Heh 05:50:15 -!- Judofyr has joined. 05:50:17 If you want to keep a "family name", alternate generations or something 05:50:40 If I have a son, I'm naming him Jesus Muhammed God, just to offend everyone. 05:50:46 nice 05:51:42 *Jesus Muhammed Yawhe 05:51:52 No, just YHWH 05:51:55 Jesus Muhammed Buddah Xenu Yahweh 05:52:05 HE WILL UNITE THE WORLD 05:52:25 I'd probably be inclined to name a child something out of fashion but interesting, like Otto or Orville 05:52:30 -!- calamari has joined. 05:52:39 For some reason the names coming to mind at the moment start with "O" 05:52:45 hey, calamari 05:53:11 hi RodgerTheGreat 05:53:18 There's a family name in my family that hasn't been used for, oh, ten generations or so. 05:53:19 Name him empty string 05:53:20 Dodofur. 05:53:38 If I have a son that I hate, I'll name him Dodofur. 05:54:08 How do you know that you hate him at birth? 05:54:21 Idonno, I guess that's the trick. 05:54:37 if it pisses on you moments after birth, it could be a sign 05:54:39 However, I hate children, so it's pretty much "he exists" :P 05:55:07 Then don't have children. 05:55:14 Wasn't planning on it :P 05:55:27 I tend to be very polarized about children. Some are polite and interesting and I like them, while others are evil little bastards 05:55:37 Get a vasectomy D: 05:57:40 Um. 05:59:43 freeze some sperm ahead of time incase you change your mind. Best of both worlds! 06:00:39 No need. 06:00:47 Just adopt the kid at 7 year. 06:00:53 That way, less crying and shitting. 06:00:59 But then my genes won't promulgate :P 06:01:30 Of course, statistics tells us that your genes are extremely unlikely to promulgate beyond ten or so generations - and if they do, everyone in the nation will have them. 06:02:13 Plus, who cares. 06:02:24 When I'm dead, it won't matter! 06:02:38 * Sgeo__ thinks his genes should be spread 06:02:42 Facts indicate that you don't actually survive through your biological childrens. 06:02:56 I spread my genes everyday. 06:03:10 Of course, they mostly end up in the trash can 06:03:24 I meant, if more people had my genes, the world would be a better place, in my not so humble opinion 06:03:34 I'd posit that being a good parent and raising your child is significantly more beneficial than spreading your genes 06:03:43 fucking is easy, parenting is hard 06:03:54 we need less of the former and more of the latter 06:04:12 or at least birth control for the former 06:04:13 Hahahaha, another T-shirt worthy phrase from RodgerTheGreat X-D 06:04:19 GregorR: :D 06:04:27 What if you fuck your child? 06:04:32 unless you were making fun of me in which case :( 06:04:34 Then you're Australian. 06:04:43 GregorR: read that article too, eh? 06:04:46 Zing! 06:04:58 Yup :P 06:06:15 -!- lifthrasiir has joined. 06:08:43 GregorR: I don't think I should draw a picture to go with that quote, though 06:08:49 Hahaha 06:09:30 although I'm now imagining a portal-style schematic diagram with "DO" and "DO NOT" panels 06:10:24 DO NOT PUT THE BABY IN THE LOVELESS PARENT/CHILD RELATIONSHIP 06:10:44 That could use a bit more refinement :P 06:11:16 be my guest 06:12:16 LOVE YOUR CHILD LIKE YOU LOVE YOUR PENIS 06:12:24 Of course, it could be misinterpreted. 06:12:41 Hahahahaha 06:12:52 "vigorously, near your computer" 06:13:13 DO NOT PUT THE BABY IN THE MAN-PENIS RELATIONSHIP. 06:13:21 sound advice 06:13:59 Hmm. 06:14:22 DO NOT PUT THE BABY IN THE ABORTION CLINIC. 06:14:43 "IT IS MUCH TOO LATE YOU NOW REQUIRE A WOODCHIPPER AND/OR LARGE DOG" 06:15:06 * pikhq wonders what a large dog going through a woodchipper sounds like 06:15:21 Well, you could just sort of leave some pills lying around. 06:15:34 pikhq: if you're an unwanted baby, victory 06:15:41 Are we discussing methods of infanticide? 06:15:42 and if you accidentaly drop him on the floor, we understand. 06:15:47 We're not judging you. 06:15:51 haha 06:16:36 I wonder how many toddler's death are somehow premeditated. 06:16:58 It's not like it's hard to make them kill themselves! 06:17:06 GregorR: We're just discussing DO NOT PUT THE BABY. 06:17:13 Which lends itself to infanticide easily. 06:17:29 But it's "do NOT put the baby in the wood chipper"! :P 06:17:59 DO NOT PUT THE BABY-> Brainstorm for bad baby locations->Infanticide 06:18:02 LMAO 06:18:13 DO NOT PUT THE BABY IN THE T4 GAS CHAMBER. 06:18:15 But well, some people just can't do thing simply. 06:18:21 Putting the baby in the freezer 06:18:39 What's the deal with that? 06:19:00 "DO NOT PUT THE BABY IN THE MANDELBROT SET... SOMEWHERE." and just have a black-and-white image of the mandelbrot set. 06:19:02 Do you want to be reminded of your infanticide everytime you get some TV dinner? 06:19:27 "woah, jesus I need to clean this damn thing" 06:19:33 Hahah 06:20:11 I can do much better than that. 06:20:19 Hmm. 06:20:33 If anybody wants to make new DNPTBs, feel free :P 06:20:52 Lessee here. . . I have devices that emit toxic gases, I have access to 120V AC, I have devices that irradiate items. . . 06:21:09 I have devices that rotate items at fairly high speeds. . . 06:21:18 Infanticide: because everything's a weapon. 06:21:50 Why do you need such high tech gizmos? 06:21:53 Two words : 06:21:56 Plastic bag 06:22:00 GregorR: make a new DNPTB T-shirt with pikhq's phrase 06:22:05 DO IT 06:22:08 :D 06:22:25 Slereah: One word: knife. 06:22:28 Slereah: gladware, baby-size 06:22:32 I don't want to make T-shirts that could potentially be taken to be a statement on abortion. 06:22:37 pikhq: one word: rock. 06:22:41 A knife would be too suspiscious 06:22:51 RodgerTheGreat: One word: drop. 06:22:57 If you have knives lying around, it's a little suspiscious. 06:23:06 Plastic bag is okay though 06:23:13 pikhq: half of the time that just makes them retarded 06:23:17 Slereah: So, *every kitchen* is suspicious? 06:23:28 RodgerTheGreat: I have yet to specify a height. 06:23:30 Well, if the knives are lying on the floor! 06:23:31 retarded babies get old real fast, I'd imagine 06:23:36 I was thinking 'Empire state building'. 06:23:58 Most people store their knives in drawers, or at least on high tables 06:24:01 hm. well, in that case the weapon is really the building, no? 06:24:09 No, the weapon is gravity. 06:24:24 Slereah: Fine, fine. 06:24:41 Hmm. Rat poison? 06:24:52 (that's cruel. Even for someone talking about infanticide) 06:24:57 Slereah: I store my knives in a colorful baby-height pile of children's toys and stuffed animals 06:24:59 Only if you have rats! 06:25:17 DO NOT PUT THE BABY IN ROOM 101 06:25:52 DO NOT PUT THE BABY IN THE DISTOPIA. 06:25:57 s/DIS/DYS/ 06:26:29 funetic spelings r fun 06:26:42 DO NOT PUT THE BABY ON 4CHAN 06:26:46 "grate" might've been more amusing there 06:27:31 this is a really nifty painting: http://img.waffleimages.com/d89ca2727870ca4377777eab22885e7c611992dd/daim2.jpg 06:42:29 Bye all 06:42:51 -!- Sgeo__ has quit (Remote closed the connection). 07:04:18 -!- GreaseMonkey has joined. 07:15:04 'night all 07:15:17 -!- RodgerTheGreat has quit. 07:45:51 -!- jix has joined. 07:48:40 RISCy men do it with their ARMs. 07:55:10 harr harr 07:57:37 -!- Judofyr has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:12:01 -!- calamari has quit ("Leaving"). 08:41:39 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)). 08:46:07 -!- Iskr has joined. 09:55:50 -!- olsner has quit (Read error: 110 (Connection timed out)). 10:10:43 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 10:24:07 -!- jix has quit ("This computer has gone to sleep"). 12:09:45 -!- ais523 has joined. 13:03:58 -!- timotiis has joined. 13:37:08 -!- Corun has joined. 13:54:12 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 14:19:58 -!- sebbu2 has joined. 14:25:22 -!- Judofyr has joined. 14:29:11 -!- sebbu has quit (Read error: 113 (No route to host)). 14:29:11 -!- sebbu2 has changed nick to sebbu. 14:42:43 -!- ehird has joined. 14:43:02 * SimonRC ponders... 14:43:25 xkcd should do a comic entitled "My Hobby: breaking the fourth wall" 14:43:41 the character would be breaking the fourth wall in the wrong way of course 14:44:13 e.g. thinking it is a movie, or a book, or maybe just "talking to the camera" in the wrong direction. 14:59:38 -!- jix has joined. 15:08:48 Hello, wold. 15:09:09 e ruytrryt uighilfghnm,.bvcn,bmnvcnm,./mnbvm,.mnbvcncxzcvzccvjkhjj'l;kjhjlhfgjffdsghjhgdsfghjkdfxghjfdsghjkoopiuytyuuyt 15:09:13 Sorry, that was me cleaning my keyboard. 15:10:53 SimonRC : No, he should not. 15:18:45 ehird: http://www.bash.org/?52 15:21:47 :) 15:24:44 I regularly destroy my todo.txt when cleaning my keyboard 15:25:03 It turns from 'Do blah blah blah blah blah blah' into 'Do blah blah blah b lsdf$af)_a0-#9080ewe 15:25:04 qwe 15:25:04 3 15:25:05 ' 15:25:34 I notice that you dind't clean the qwa keys above 15:26:01 -!- seabot has joined. 15:26:07 I did, I just didn't press down on them hard 15:26:24 This keyboard isn't a gradual push 15:26:34 it's either not pressed, or totally pressed 15:26:42 why can't you clean it into a text editor or something, rather than irc? 15:27:18 SimonRC: because i can't be bothered to think about stuff like that when it only takes a few seconds :-) 15:28:01 -!- seabot has quit (Remote closed the connection). 15:28:07 -!- seabot has joined. 15:28:29 bah 15:28:30 -!- seabot has quit (Remote closed the connection). 15:28:36 -!- ehird has changed nick to seabot. 15:28:41 -!- seabot has changed nick to ehird. 15:28:56 -!- seabot has joined. 15:28:56 -!- seabot has quit (Remote closed the connection). 15:29:08 -!- seabot has joined. 15:29:10 Finally. 15:30:49 -!- seabot has quit (Excess Flood). 15:30:58 Well I figured out how to abuse it 15:30:58 :P 15:36:45 I didn't see it say a word 15:43:57 privmsg 16:21:01 -!- Tritonio_ has quit ("Bye..."). 16:37:12 -!- sekhmet has joined. 16:39:10 -!- pikhq has quit (Read error: 110 (Connection timed out)). 16:39:12 -!- pikhq_ has joined. 16:40:46 no oklopol :( 16:40:51 I was going to tell him something! 16:40:52 Humph 16:40:53 :P 16:43:23 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)). 16:44:10 -!- pikhq has joined. 17:14:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 17:14:45 -!- Judofyr has joined. 17:26:12 -!- oklopol has joined. 17:28:42 oklopol: you are heeere 17:28:53 well i just woke up 17:28:57 I thought I had implemented continuations in Python but it turns out I didn't :( 17:29:18 i basically went to sleep when you left, and woke up now 17:29:36 anyway, i did make a parser from python to your format and finished the program first 17:29:38 ehird: doesn't stackles Python already have continuations? 17:29:44 *stackless 17:29:58 SimonRC: And PyPy has a real sandbox. 17:30:16 Also, Rubinius is better designed than the current RubyVM. 17:30:20 All of these mean nothing. 17:30:24 what's freenode's maximum line length? 17:30:25 SimonRC: Anyway, Stackless removed continuations. 17:30:28 oklopol: not sure 17:30:49 you see, i actually wrote the automaton to especially test your multiple line input 17:30:57 thought you had that 17:31:43 oklopol: ? 17:31:53 talking about the 110 17:32:13 you see, unlike you, i haven't had a day between this moment and our conversation 17:32:21 ah 17:32:22 :D 17:32:32 it's coding 110 -> sleep -> back to irc to talk about it 17:32:33 oklopol: I am redesigning Seabot 17:32:42 but 17:32:44 i'll put it up 17:32:48 so feel free to play 17:33:01 i guess i could remake the prog to be a bit shorter 17:33:03 or a lot shorter 17:33:05 hmm 17:33:18 wasn't my other version in ruby? 17:33:24 or not 17:33:28 both 17:33:28 dunno 17:33:29 ruby and non-ruby 17:33:39 -!- seabot has joined. 17:35:08 oklopol: there ya go 17:35:15 lessee 17:35:19 -!- RodgerTheGreat has joined. 17:39:00 oklopol: #python be hatin' on me for my braces 17:40:28 hehe 17:40:30 prolly 17:40:55 http://www.vjn.fi/pb/p611563426.txt 17:41:18 efmtfy(python_koed) 17:41:38 uhhh whut 17:41:43 sorry, koed has become my official way to type that because it's so nice to write 17:41:46 oh 17:41:47 i seeee 17:42:15 -!- Sgeo has joined. 17:42:39 coool it works 17:42:47 it does? 17:42:48 fun 17:42:49 ehird, wha? 17:42:55 i didn't really test it :D 17:43:00 went to sleep 17:43:04 / coma 17:43:04 ehird, what works? 17:43:15 http://www.vjn.fi/pb/p611563426.txt 17:43:43 just ehird's python braces format thing parser the other way around 17:43:48 what a great explanation 17:43:55 "if x:{True}else:{while Foo:{print 'hi';2}}" 17:43:58 that's what it gave me 17:44:09 was that right? 17:44:11 yep 17:44:15 well, good 17:44:25 now I am going to rewrite the parser, and write deparser that's more stable 17:44:29 and call it 'bracism' :D 17:44:33 that was trivial to parse of course, it's the other way that requires anything 17:44:49 not that it requires *anything* still 17:45:17 hmm.... i went to sleep because no shops were open... and now they're soon closed again 17:45:37 why must others want to live when the sun is up :< 17:45:54 and why doesn't python have anything 17:46:23 no easy way to iterate in slices of three 17:48:25 oklopol: you keep runnign into pythons limitations 17:48:30 you should make Soup 17:48:31 Super Python 17:48:38 hehe 17:48:42 well i made oklotalk ;) 17:48:47 which is like Python, but has continuations and slicer thingies and okokokoko 17:48:51 although it's even more retarded currently, of course 17:48:52 and oklotalk isn't like python :p 17:49:14 well indeed, it's quite different 17:49:31 i mean, the program flow is different, it's similarly dynamic though. 17:49:58 python has quite little computational stuff built-in 17:50:02 oklopol: BUT YOU SHOULD MAKE SOUPPP 17:50:04 well... so does almost every language 17:50:10 Continuations should be implemented in Soup itself 17:50:19 and Soup just provides a first-class callstack 17:50:21 :D 17:50:21 which isn't nice for us who have a fear of importing modules. 17:50:26 hehe 17:50:26 And you can make MULTIPLE CALLSTACKS 17:50:34 CallStack.current() 17:50:35 BUT 17:50:36 well python has a viewable callstack 17:50:36 CallStack() 17:50:40 and then on a CallStack() 17:50:42 you can do 17:50:44 .switch() 17:50:50 so you can make your own magical callstack then switch to it! 17:50:53 sounds awesome 17:50:59 oklopol: but this would allow pushing and popping and slicing and assigning to elements 17:51:10 you could even make exceptions implemented in Soup 17:51:13 well it would be a list 17:51:28 just make a .throw() method that unwinds the CallStack.current 17:52:00 a global stack where you can push and pop return continuations with try and... leaving try's scope 17:52:02 oklopol: don't make it a list, because 1. it should be a linked list. why? because then continuations are free (no copying) 2. you need special things like .switch() 3. it shouldn't contain anything other than CallStackFrames 17:52:03 or soemthing 17:52:33 a list, in soup, is a conceptual list, you don't need to know what it is 17:52:49 oklopol: but CallStack has special methods that are not what lists have 17:52:55 well sure 17:52:58 & treating it as a list would be useless 17:53:02 oklopol: the better way 17:53:04 it's duck typing 17:53:06 is to have an interface-thingy 17:53:09 of Sequence 17:53:09 it can just have methods added 17:53:14 and make an Array which is a Sequence 17:53:20 and LinkedList which is too 17:53:28 and then CallStack which is a Sequence but not an Array or LinkedList 17:53:38 and you don't need to make Sequence concrete 17:53:51 well sequence is that i meant by list here 17:53:51 sequence is just having e.g. __index__(thing) 17:53:57 you see what i mean? 17:54:01 yes, i meant at 17:54:03 that 17:54:03 so CallStack shouldn't be a list 17:54:05 it shoudl just be indexable 17:54:08 which is obvious 17:54:12 you don't need to point THAT out 17:54:46 oklopol: anyway, Soup should have MAGIC MODULES 17:54:49 which e.g. change the syntax 17:54:49 so 17:54:51 'import braces' 17:54:54 will give you my syntax 17:54:55 :D 17:55:04 you gotta admit, SOUP IS AWESOME 17:55:05 yeah 17:55:10 now I want it too!! 17:55:13 :-) 17:55:13 let's implement it :q 17:55:21 import p 17:55:23 ... 17:55:25 import soup 17:55:30 import sexpee 17:55:39 (def hello () (print "hi")) 17:55:42 hello() + 3 17:55:45 MIXING SYNTAX 17:55:45 :D 17:55:59 oklopol: Soup should be implemented in Python, amirite 17:56:30 hoh, that sounds like fun 17:56:42 oklopol: yesss 17:57:00 oklopol: soup will require a lot of draft planning though 17:57:06 there will need to be a soup.Parser class 17:57:10 of which the default is just one :p 17:57:45 though YAGNI (You Aren't Gonna Need It) and Do The Simplest Thing That Could Possibly Work dictates that we should delay that feature until later 17:58:27 oklopol: :D 17:59:03 oklopol: name something else cool that python has and soup doesn't 18:00:45 oklopol: or don't 18:01:26 oklopol: don't say i need to okloping you! 18:02:06 @python def do(n):{r=[1];def f(r):return "".join([i and "1" or "0" for i in r]);def next(l):return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)];for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10) 18:02:16 hmph 18:02:20 @python do(10) 18:02:20 NameError: name 'do' is not defined 18:02:21 oh 18:02:22 what 18:02:24 darn 18:02:25 @python useres.oklopol.do(10) 18:02:25 NameError: name 'useres' is not defined 18:02:27 @python users.oklopol.do(10) 18:02:28 KeyError: 'do' 18:02:28 wait 18:02:35 @python users 18:02:35 {'ehird': , 'oklopol': } 18:02:37 @python users.oklopol 18:02:37 18:02:39 hmm 18:02:40 @python users.oklopol['do'] 18:02:40 KeyError: 'do' 18:02:41 wtf 18:02:43 no it should work... 18:02:45 or hmm... 18:02:47 wait a sec 18:02:50 oklopol: seabot's python stuff is just borked 18:03:01 oklopol: oh, that's something else Soup should have! a Sandbox built in 18:03:11 oklopol: so that something like seabot can just be done by subclassing Sandbox 18:03:14 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10) 18:03:14 SyntaxError: invalid syntax (, line 11) 18:03:15 and specifying what you want to allow 18:03:17 yes? :D 18:03:31 sure 18:03:46 but hmm... 18:03:55 for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2])) 18:03:57 your ; is the borkage 18:04:12 oh 18:04:25 ih 18:04:26 oaihgs 18:04:30 oklopol: now what about SOUP :D 18:04:32 tabs don't work. 18:04:38 that isn't python 18:04:41 it use brances 18:04:45 braces* 18:04:48 AnMaster: i added that so it can be used on one line 18:04:52 heh 18:04:56 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10) 18:04:56 SyntaxError: invalid syntax (, line 11) 18:05:00 :< 18:05:01 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):n.append(next(r[i-1:i+2]));r=n}};do(10) 18:05:01 hey 18:05:02 SyntaxError: invalid syntax (, line 15) 18:05:05 it didn't copy 18:05:06 fuck 18:05:34 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))}r=n}};do(10) 18:05:34 SyntaxError: invalid syntax (, line 16) 18:05:36 :D 18:05:40 aha 18:06:07 hm 18:06:11 16 is do(10) 18:06:22 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))}r=n}} 18:06:25 @python do(10) 18:06:25 1 18:06:26 11 18:06:26 111 18:06:26 1101 18:06:26 11111 18:06:26 110001 18:06:28 1110011 18:06:30 11010111 18:06:32 111111101 18:06:32 ah 18:06:33 tah-dah 18:06:34 1100000111 18:06:40 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])};def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]};for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))};r=n}};do(10) 18:06:41 SyntaxError: invalid syntax (, line 19) 18:06:44 no 18:06:46 the ;do(10) 18:06:48 messes it up 18:06:48 somehow 18:06:50 oh of course 18:06:52 of course! 18:06:53 oh. 18:06:55 compile 'single' 18:06:58 only supports ONE statement/expr 18:07:00 @python 10 PRINT "HELLO WORLD" 20 GOTO 10 18:07:00 SyntaxError: invalid syntax (, line 1) 18:07:08 oh. 18:07:12 @python while True: { print "HELLO WORLD" } 18:07:13 HELLO WORLD 18:07:13 HELLO WORLD 18:07:13 HELLO WORLD 18:07:13 HELLO WORLD 18:07:13 HELLO WORLD 18:07:13 -!- seabot has quit (Excess Flood). 18:07:17 lol 18:07:22 -!- seabot has joined. 18:07:29 you need rate limiting 18:07:44 well, in that case it wasn't exactly my fault, so i guess i can be at peace 18:08:00 I mean the bot need it 18:08:04 @python def PRINT(x): { print x } 18:08:31 @python class GOTOC: { def __getattr__(self, name): { globals()[name]() } } 18:08:36 @python GOTO = GOTOC() 18:08:39 @python GOTO 18:08:39 KeyError: '__repr__' 18:08:42 ouhc 18:08:45 @python def l0(): { PRINT("HELLO WORLD"); GOTO.l0 } 18:08:52 @python l0() 18:08:52 NameError: global name 'PRINT' is not defined 18:08:53 that makes my eyes hirt 18:08:55 hurt* 18:08:55 awwww 18:08:56 almost 18:08:56 :D 18:09:10 @python l0.__dict__['PRINT'] = PRINT 18:09:17 @python l0.func_globals['PRINT'] = PRINT 18:09:21 @python l0.func_globals['GOTO'] = GOTO 18:09:24 @python GOTO.l0 18:09:24 KeyError: 'l0' 18:09:27 whut 18:09:28 :( 18:09:30 @python globals() 18:09:30 {'__builtins__': {'IndexError': , 'all': , 'help': Type help() for interactive help, or help(object) for help about object., 'vars': , 'SyntaxError': , 'unicode': , 'UnicodeDecodeError': , 'isinstance': , 'copyright': Copyright (c) 2001-2006 Python Software Foundation 18:09:30 All Rights Reserved. 18:09:30 Copyright (c) 2000 BeOpen.com. 18:09:30 All Rights Reserved. 18:09:30 -!- seabot has quit (Excess Flood). 18:09:33 oh shi 18:09:34 :( 18:09:36 oh well 18:09:37 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 18:09:37 it was a nice idea 18:09:48 ehird, you still need rate limiting 18:09:52 AnMaster: i don't care. 18:09:56 on the send to irc 18:09:56 seabot is going to be rewritten 18:09:58 oklopol: IN SOUP RIGHT? 18:09:59 hm 18:10:09 what is SOUP? 18:10:13 Soup, actually 18:10:16 it means Super Python 18:10:24 one with braces? 18:10:31 it is the thing that OKLOPOL AND I ARE THINKING OF AWESOME FEATURES FOR 18:10:34 ISN'T THAT RIGHT OKLOPOL 18:10:47 SURE 18:11:25 now, about features... we both agree it should be *awesome*, right? 18:11:29 yes 18:11:40 okay, we should write this down. 18:12:00 i need to go buy me some onion rings, and make my fire alarm go FRIIIIIIIIIII 18:12:42 oklopol: yeah, i'll open a text file 18:12:43 but first.. 18:12:53 http://rafb.net/p/j7c2ZA16.html 18:15:12 lol 18:15:15 and one that doesn't overflow the stack: 18:15:16 http://rafb.net/p/XLdxub19.html 18:17:24 omg soup will rock 18:17:24 :D 18:17:46 actions in my python 18:17:52 first class actions 18:17:58 what has the world come to 18:18:05 did you see my last one? 18:18:08 it was a mini-interpreter 18:18:08 :D 18:18:09 i did 18:18:27 hehe yeah 18:18:35 oklopol: anyway I had another Soup idea 18:18:40 it should have pluggable GCs 18:18:45 you can subclass GC 18:18:49 then do something like 18:19:05 System.use_gc(MySubClass) 18:19:11 and it'll use that for all gcs 18:19:11 or 18:19:12 just 18:19:15 MySubClass.collect() 18:19:17 to use it once 18:19:41 oklopol: awesome? :D 18:19:53 yep 18:20:04 everything needs to be changeable at runtime 18:20:07 oklopol: no 18:20:09 that's oklotalk 18:20:13 :-) 18:20:14 hmm 18:20:17 Soup is just Python, but TOTALLY SUPER 18:20:24 should we have a special import, that does stuff only once 18:20:29 i mean, import can be executed anywhere 18:20:34 but if it changes syntax... 18:20:50 or changes gc, also a small ellipsis htere 18:20:52 *there 18:20:57 oklopol: well, 'import' won't be as clever as Python's 18:20:59 basically 18:21:02 hmm 18:21:06 basically, 18:21:07 yarr 18:21:13 no syntax will change the syntax of 'import' 18:21:22 so, at the start of interpreting, all the imports are scanned 18:21:28 and then the syntax is decided on that 18:21:35 yep yep 18:21:37 or... just make all imports appear at the beginning of the file 18:21:40 thats' simpler 18:21:43 and i've never used one elsewhere 18:21:43 yeah, better 18:21:52 but 18:22:01 probably it will just do it as a normal statement 18:22:08 i have, occasionally, when writing stuff in a cli where you cannot go back a line :-) 18:22:08 just the 'defined behaviour' is that 18:22:19 but that's a bit different 18:22:25 "oh, right, i need math" 18:22:53 well it could just not do anything if it tries something that doesn't work at runtime 18:23:07 oklopol: well, i think we should defer the custom syntax thing to later 18:23:15 otherwise our heads will hurt 18:23:15 perhaps, perhaps 18:23:16 :) 18:23:27 SHOP ME GO NOW REALLY GO GO -> 18:23:34 aww 18:23:37 be back :p 18:35:42 SUCCESS! 18:35:56 i need channel-specific caps lock 18:36:21 :D 18:37:41 i'm gonna berakfast now 18:37:46 *breakfast 18:38:00 after that, prolly oklotalk time.... :| 18:38:14 d'aww 18:38:15 what about 18:38:15 SOUP 18:38:16 so many features, so little time 18:38:22 you could like 18:38:25 start prototyping oklotalk 18:38:26 in SOUP 18:38:28 ! :D 18:38:31 Huh? 18:38:32 see? 18:38:33 what a great idea 18:38:34 :D 18:38:37 well oklotalk needs to work by wednesday 18:38:45 ok but you can do soup too :p 18:39:16 "so i created this language, and then another language, implemented the first one in python and the second in the first one" 18:39:54 sounds like something you din 2 days 18:39:57 *do inm 18:39:58 *in 18:40:05 oklopol: YOU CAN MULTITHREAD 18:40:05 :D 18:40:42 shuuuuure 18:40:42 :D 18:41:33 oklopol: but Soup is too awesome not to SOUPIFY 18:42:29 whhhhell 18:42:35 perhaps after thursdays 18:42:57 oklopol: bah :P 18:43:07 I'll just prod you questions about it, and thou shalt have no choice! mwahaha 18:43:23 :< 18:43:27 my only weakness 18:43:39 yes! 18:43:44 oklopol: your other weakness - pastebins 18:43:51 if i pastebin some code and describe it and ask somethinig 18:43:55 YOU SHALL HAVE NO CHOICE 18:43:55 mwahaha 18:44:00 :<< 18:44:02 -!- vixey has left (?). 18:55:04 -!- Corun has quit ("This computer has gone to sleep"). 18:56:59 -!- jix has quit (Nick collision from services.). 18:57:09 -!- jix has joined. 19:51:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 19:52:02 -!- Judofyr has joined. 19:55:02 -!- olsner has joined. 20:00:33 -!- oerjan has joined. 20:03:06 -!- Corun has joined. 20:09:43 * oerjan looks at some of the latest xkcd's and concludes that Munroe is probably now only doing stick figures out of tradition... 20:09:59 oerjan: well, no 20:10:06 if they weren't stick figures, it would lose the xkcd feel 20:10:16 well that's what i mean by tradition 20:10:31 well, i was kinda saying that it wasn't the 'ohh, its just how we've always done it' 20:10:36 more that it's an integral part of xkcd 20:12:18 * oerjan looks at some of the _first_ xkcd's and concludes it has always been that way, really 20:15:13 -!- Iskr has quit ("Leaving"). 20:15:45 the earliest ones had some non-stick-figures 20:16:25 i mean that he was always able to do better 20:16:57 SimonRC: link 20:17:28 in a mo... 20:20:06 there, not a stick figure: http://xkcd.com/1/ 20:20:54 hoh, it seems i've read all xkcd 20:21:01 when, wonders i 20:21:37 a long time ago in a ... wait, wrong webcomic 20:22:22 Oh, I forgot to check xkcd today 20:22:24 and freefall 20:22:44 http://xkcd.com/7/ http://xkcd.com/11/ http://xkcd.com/22/ http://xkcd.com/23/ http://xkcd.com/31/ That probably most of them 20:23:16 http://xkcd.com/26/ is the first really geeky one, I think... 20:23:55 oh, wait, that's BS 20:25:05 10 is the first one with geek culture 20:26:38 I discovered that one can see the latest Dr Who on the web: http://www.bbc.co.uk/doctorwho/s4/videos/ 20:26:41 legally too 20:27:06 heh the pi one is fun 20:27:17 but mathematically silly 20:27:55 aaaand the first joke to get a life of its own: http://xkcd.com/37/ 20:28:20 Incidentally, the first "My hobby", I think 20:28:20 well indeed, should be like in hex 20:28:28 and leet 20:28:32 speak 20:48:26 -!- sebbu has quit (No route to host). 21:03:36 -!- sebbu has joined. 21:11:53 -!- wildhalcyon has joined. 21:11:59 high 21:13:05 low 21:18:59 brow 21:19:05 beat 21:19:30 off 21:19:36 side 21:19:40 winder 21:19:54 Come on, no phrases start with "winder" :P 21:20:35 farms 21:20:40 * oerjan googled 21:22:05 hah 21:22:20 High low brow beat off 'side winder farms. 21:22:43 So... a low-brow person, on drugs, stimulated themself beside a wind farm 21:23:18 that's remarkable especially as i never expected it to be a sentence 21:24:13 -!- sekhmet_ has joined. 21:24:48 # Enemy lasagna / Robust below wax / Semiautomatic aqua / Accompany slacks / ... # 21:25:48 if you say so 21:25:55 http://video.google.com/videoplay?docid=7084489538066105747 21:25:58 -!- sekhmet has quit (Nick collision from services.). 21:26:02 -!- sekhmet_ has changed nick to sekhmet. 21:26:12 one of his odder ones 21:26:24 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 21:26:54 -!- Judofyr has joined. 21:26:57 # Word Disassociation # 21:26:57 # Word Disassociation # 21:26:59 # Word Disassociation # 21:27:27 SimonRC: You may stop flooding now 21:27:27 ;) 21:28:39 it is intersting to see which ones are pronounced differently in America 21:29:00 e.g. "Advertisement" 21:36:18 Ad-ver-TIES-ment :P 21:39:55 I was going to organise my ad-VER-tisments by colour-co-ordinating them. 21:40:39 i pronounce it as ADVERTISEMENTS, the press is on the entire word 21:40:46 *ADVERTISEMENT 21:41:08 OK, but is it -ize-ment or -izment? 21:41:32 it's so loud you can't tell. 21:41:47 So it's really just FG(UDS)GHF(ESW HF(SHF(*E&WYR(_A&F(AAAAAAAAAAAAAHG 21:41:53 quite. 21:54:40 -!- sekhmet has quit (Remote closed the connection). 21:54:44 -!- sekhmet has joined. 22:18:59 -!- jix has quit ("CommandQ"). 22:43:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:43:49 -!- Judofyr has joined. 22:53:56 a 22:54:32 http://www.youtube.com/watch?v=6cAs1YBELmA 22:54:36 hmm, geeky 22:54:44 waitamo... 22:55:06 do American houses really have the flag hanging on the wall indoors? 22:55:25 some 22:55:35 weird 22:55:36 depends on how patriotic/neurotic/insane the owner is 22:56:37 its not a huge deal 22:57:03 This guy is so blatently pre-uni 22:57:11 yeah 22:57:28 in his lyrics rather than just in appearance 23:06:53 hmm 23:07:07 a language where all variables are mutable, but cells, would be interesting 23:07:29 x -> 5; y -> x+2; // here y is 7 23:07:38 x -> y; // here y is ... 23:08:31 also, dictionaries are functions 23:08:34 and scopes are dictionaries 23:08:49 CurrentScope[#x] -> 5; is x -> 5; 23:10:00 war is peace! freedom is slavery! 23:10:25 oerjan: and scopes are functions 23:12:10 the problem is that "x = y" sets the two variables to be the same cell, whereas "x = y + 0" sets x to be a new cell which contains that value that y happened to have at that time. 23:12:43 also, wasn't there an esolang where every program gradually made every number integer to every other integer? 23:12:53 SimonRC: and that is wrong 23:13:01 x = y + 0 means that the value of 'x' is the value of 'y', plus 0 23:13:10 'here y is ...' meant 'here y loops forever' 23:13:23 ah, ok 23:13:35 (random note on the scope-function-dictionary thing: you could extend that by using {...} as dictionary syntax) 23:13:36 so 23:13:46 {X -> 2; Y -> 3} is like: 23:13:54 Foo[#X] -> 2; Foo[#Y] -> 3 23:13:54 -!- olsner has quit ("Leaving"). 23:13:58 except with Foo anonymous 23:14:00 :) 23:14:27 SimonRC: Forte 23:15:34 incidentally, here's BCT 23:15:34 BCT[{0,...},{_,....}] -> ....; 23:15:34 BCT[{1,X,...},{1,....}] -> {1,....,X}; 23:15:34 BCT[{1,X,...},{_,....}] -> ....; 23:15:50 (decided that if {} could be dictionaries it could damn well be lists too) 23:16:03 the ellipsis semantics are a bit vague though 23:17:09 you can replace the dots with underscores to make it ignored variable elements, too 23:17:09 -!- Corun has quit ("This computer has gone to sleep"). 23:17:10 Head[{X,___}] -> X; 23:17:10 Tail[{_,XS}] -> XS; 23:18:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 23:19:04 -!- Judofyr has joined. 23:19:47 http://esolangs.org/wiki/User:Tom_Duff 23:19:49 wow! 23:19:59 ChrisCunningham, Tom Duff... esolangs is famous :) 23:23:49 chris cunningham? 23:23:59 oerjan: inventor of the wiki 23:24:11 you know -- http://c2.com/cgi/wiki, the first wiki 23:24:14 circa 1995 23:24:28 oh that was the first? 23:24:54 * oerjan got up a director or something on google 23:25:12 chris cunningham is also a director who makes videos for people like Aphex Twin 23:25:18 but is not the same as the wiki one :) 23:25:35 err wait 23:25:37 crap 23:25:39 I meant Ward Cunningham 23:25:41 of course 23:25:41 :) 23:25:44 aha 23:25:52 Biota inventor 23:25:57 & wiki guy 23:26:09 Hmm 23:26:16 I swore I saw Ward CUnningham on the wiki as a user 23:26:35 Oh well then 23:26:37 Just Tom Duff. 23:26:39 Still pretty cool 23:26:47 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 23:26:55 lament: BBBBBBBBBBBBBBBBBBBBBBBBBB 23:27:01 looking at the tom duff page led me to http://esolangs.org/wiki/Image:Explor.gif 23:27:01 nah just a page 23:27:17 lament: that's great 23:27:18 my eyes hurt 23:27:32 god that's painful to look at 23:27:38 lament: squint your eyes when looking at it 23:27:42 your head will move to the left 23:27:43 automatically 23:27:50 wheeee 23:33:01 ehird: mine doesn't 23:33:08 mine does 23:33:09 :( 23:33:13 but my screen is very good 23:33:14 :P 23:35:38 * SimonRC praises Sun for the system of transistion from raw to parameterised types. 23:36:06 generics? 23:36:09 * SimonRC larts Sun for not having parameterised types in the first bloody place. 23:36:18 SimonRC: Generics are crap. 23:36:21 :) 23:36:26 better than nothing 23:36:35 they're definately not parameterised types 23:36:59 why are you using java 23:37:26 ehird: it is a type, it has parameters 23:37:38 lament: because the code is already written in it 23:37:39 lament: java can be used to write good code 23:37:48 you just have to be good at packing characters to avoid hideous verbosity 23:37:51 and avoid IDEs 23:38:02 lament: but as a language it isn't nice at all i agree 23:38:18 I'd have thought that me talking about adding parameters to types would be a give-away that old Java code was involved. 23:38:23 why would you avoid IDEs? 23:38:29 yes 23:38:39 lament: Java IDEs generate huge monstrosities of code. 23:38:55 how else am I going to maintain 120,000 lines of code containing repetitions that the language can't capture 23:39:16 well, define macros for it. but the way IDEs handle it is crap 23:39:28 c'mon, to break package cycles recently, I have to automatically extract about 40 interfaces 23:39:39 they encourage verbose, high-calorie 'empty-code' by making it easy 23:39:39 ehird: um, Java ... macros 23:39:44 ehird: yup 23:39:44 SimonRC: in your editor. 23:40:20 so I shouldn't use the IDE because it makes it easy to generate lots of code... 23:40:23 ehird: sorry? IDEs don't have to generate any code 23:40:30 ehird: why would an ide generate code? 23:40:31 ... but I should define editor macros to generate lots of code 23:40:37 SimonRC: when you can get the same effect for less code 23:40:56 i use an IDE (VS) all the time at work and it doesn't generate any code for me 23:41:06 anyway, I was mostly joking 23:41:15 our code is too big 23:41:48 there are several dimensions of functionality that we will probably never need again 23:41:51 -!- oerjan has quit ("Good night"). 23:41:53 but which add indirection 23:41:54 Java is evil 23:42:12 * lament loves IDE 23:42:28 anything which makes programming easier is good. 23:42:32 wildhalcyon: better than C++ 23:42:38 in this case at least 23:42:53 SimonRC: that's like saying, the spanish inquisition is better than the nazis. 23:43:03 SimonRC: I respectfully disagree. 23:43:18 wildhalcyon: ok, what advantage does C++ have? 23:43:42 It offers a more terse syntax than Java 23:43:48 wildhalcyon: Java is a below-mediocre language. Not an 'evil' one. 23:44:27 Java is what happens when take early-90s C++ and drag it half-way to Lisp 23:45:00 Here's the deal. Java and C++ are the two worst non-esolang languages I can think of. We're quibbling over the bottom of the heap. 23:45:07 stuff like GC, more type safety, exceptions with actual stack traces, etc 23:45:14 wildhalcyon: no, really 23:45:23 early Pascal sucks far more 23:45:41 operations couldn't be generic in array length 23:46:22 I've been reading too much smalltalk propaganda and have become disallusioned with type safety. GC is a nice java feature though. 23:46:36 wildhalcyon: Ruby is scads worse than Java could possibly be construed as being 23:46:46 RodgerTheGreat: ????????????????????????????? 23:47:10 wildhalcyon: in this case, by "type safety", I meant strong typing 23:47:13 Ruby is a festering boil of a language, seriously 23:47:46 oh yes, and Java has a guarantee that you fellow programmers will neither use pointers nor force their use upon you 23:48:07 RodgerTheGreat: explain 23:48:19 SimonRC, I interpreted "type safety" to mean static typing. 23:48:24 ok 23:48:31 well... 23:48:32 it's kinda silly to say java has no pointers when it has null pointer exceptions :) 23:48:57 a mere terminological difference 23:49:04 Ruby is a mishmash of disparate syntax styles. It is painful to look at, and the structure of the language is inconsistent. 23:49:09 static typing really helped when we were doing a recent major refactoring... 23:49:24 ... it found a whole class of bugs 23:49:27 RodgerTheGreat: but damn it lets you write code fast 23:50:01 there were about 100 instances of that bug, and unit tests took a few minutes to run each time, and caught one instance of it each time 23:50:29 SimonRC, what language was this in? 23:50:33 Java 23:50:38 Java has pointers, it just disallows most math on them and auto-dereferences them. You can think of it as always passing primitives by value and objects by reference, which, 95% (if not more) is what you actually want. 23:50:49 static types not only appear in the code right before your eyes, but Eclipse will give you a red squiggly line if you screw up 23:51:03 I see it as having nearly all the advantages of pointers without the hideous problems that haunt C++ programs 23:51:09 *can haunt 23:51:09 RodgerTheGreat: yes 23:51:12 SimonRC: IDEs are wonderful, yeah 23:51:28 but any compiler would have picked them up too 23:52:11 Slereah: link to that self-containing set pic? 23:52:11 * lament wants sane IDE support for haskell 23:52:11 I personally don't like IDEs because I find them extremely distracting and unhelpful, but their usefulness in the workplace is arguable. They're a *horrible* way to introduce someone to a language, though. 23:52:44 In an educational environment, (mainly introductory classes) IDEs should. not. be. used. 23:52:48 i'm not sure what's distracting about IDEs 23:52:53 Tab-completion rots your brain 23:53:02 RodgerTheGreat: Depends on the IDE 23:53:04 when I think "IDE" I generally think of Eclipse or similar 23:53:08 RodgerTheGreat: do you use tab-completion on IRC? 23:53:59 that doesn't have anything to do with coding. I'm not trying to learn the "#Esoteric API" 23:54:08 SimonRC, how did your IDE catch the type errors if Java implements static typing? 23:54:13 RodgerTheGreat: well, do you? 23:54:24 yes, and I stand by my statement that it rots your brain 23:54:29 wildhalcyon: um, by looking at the static types 23:54:35 There's tab completion on IRC? 23:54:35 RodgerTheGreat: does tab-completion on IRC rot your brain? 23:54:51 wildhalcyon: type R and press Tab. 23:54:53 SimonRC, how was it an error? 23:55:06 lament... BRILLIANT! 23:55:16 wildhalcyon: but beware - it will rot your brain. 23:55:17 Slereah: ping 23:55:21 wildhalcyon: I was putting one kind of thing in a list and taking another out 23:55:25 wildhalcyon: Hello! You must be new here. 23:55:26 lament, my brain has already been rotted 23:55:27 Welcome to IRC! 23:55:42 Please leave your brain at the door. 23:55:44 ehird, I don't use IRC much. Pretty much for #esoteric 23:55:58 when I upgraded from old-style lists (dynamic element type) to new-style lists (static element type) all those problems became obvious 23:56:00 -!- timotiis has quit ("leaving"). 23:57:57 We split one major concept in the program in two basically by chasing type errors 23:59:03 SimonRC, I'm still not convinced that static typing fixed your bug. I'll give it to you though.