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