00:00:36 -!- oepy has joined.
00:00:39 <ehird> *epy set(b=set(a=2))
00:00:40 <oepy> ('b', ('a', 2))
00:00:52 -!- oepy has quit (Remote closed the connection).
00:01:02 -!- oepy has joined.
00:01:03 <ehird> *epy set(a=set(b=2))
00:01:08 <oepy> NameError: name 'a' is not defined
00:01:17 <ehird> *epy look('ehird')
00:01:18 <oepy> {'a': 2, 'b': 2}
00:01:23 <ehird> *epy look('ehird').__setitem__('b', 3)
00:01:24 <oepy> AttributeError: 'user-view' object has no attribute '__setitem__'
00:01:33 <oepy> <module 'math' from '/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so'>
00:01:42 <oepy> ['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
00:01:50 <oepy> {'__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.
00:01:57 <oepy> {'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.
00:02:16 <ehird> * epy math.sqrt(3497234)
00:02:18 <ehird> *epy math.sqrt(3497234)
00:02:19 <oepy> 1870.0893026804897
00:02:22 <AnMaster> ehird, what did you say "oh damn" for?
00:02:40 <oerjan> *epy __builtins__.__import__
00:02:40 <AnMaster> *epy math.pow(3497234,37863827648)
00:02:40 <oepy> AttributeError: 'dict' object has no attribute 'no_import'
00:02:41 <oepy> OverflowError: math range error
00:02:43 <ehird> AnMaster: I thought there was a security hole.
00:02:44 <AnMaster> *epy math.pow(3497234,378637648)
00:02:45 <oepy> OverflowError: math range error
00:02:45 <ehird> AnMaster: Anyway, give it a spin.
00:02:53 <AnMaster> *epy math.pow(3497234, 378637648)
00:02:53 <oepy> OverflowError: math range error
00:02:55 <AnMaster> *epy math.pow(3497234, 3786376)
00:02:56 <oepy> OverflowError: math range error
00:03:00 <ehird> *epy 3497234**378637648
00:03:13 <ehird> math.pow is for floats
00:03:17 <AnMaster> ehird, so it doesn't like inf?
00:03:20 <ehird> the above just locked up oepy i think
00:03:21 <AnMaster> which would have been the valid number
00:03:28 -!- oepy has quit (Remote closed the connection).
00:03:40 -!- oepy has joined.
00:03:45 <AnMaster> ehird, but in a C program that pow produces inf after a few seconds
00:03:50 <oerjan> but it hurts when i don't do that
00:03:53 <ehird> that just means it uses bignums
00:04:01 <ehird> so it tries to get the full answer
00:04:05 <ehird> x**y is integer in python
00:04:08 <ehird> but it uses bignums
00:04:10 <ehird> so it just sits there
00:04:10 <AnMaster> ehird, for math.pow it would be floats
00:04:12 <ehird> happily calculating it
00:04:34 <ehird> MATH.POW IN PYTHON TAKES FLOATS
00:04:37 <ehird> IT ERRORED BECAUSE YOU GAVE IT INTS
00:04:46 <AnMaster> so it doesn't cast implicitly?
00:04:46 <ehird> like I _said the first time_
00:04:57 <ehird> no, because pow is BUILT IN TO THE LANGUAGE for ints
00:05:12 <ehird> *epy help(math.pow)
00:05:15 <AnMaster> ehird, well C would cast it implicitly
00:05:17 <ehird> that displayed on my console
00:05:24 <ehird> you don't understand
00:05:30 <ehird> math.pow is there for when you want range errors
00:05:34 <ehird> instead of infinite hang
00:05:35 <AnMaster> ehird, how should I know I need to do (float)874384
00:05:54 <ehird> stop talking because you're talking nonsense.
00:06:09 <AnMaster> ehird, no I'm not. If I work with double that should return inf
00:06:21 <AnMaster> if the floating point confirms to IEEE
00:06:31 <ehird> YOU WEREN'T DOING FLOATING POINTS
00:06:34 <ehird> YOU HAD NO .0 ANYWHERE
00:06:37 <ehird> YOU PASSED INTEGERS
00:06:40 <ehird> SO IT TREATED THEM AS INTEGERS
00:06:43 <AnMaster> *epy math.pow(3497234.0, 3786376.0)
00:06:43 <oepy> OverflowError: math range error
00:06:44 <ehird> BECAUSE YOU GAVE IT INTEGERS
00:07:16 <AnMaster> ehird, and when I want explicit inf I should use **
00:07:36 <ehird> 5 gajillion and 1th time lucky
00:07:53 <oepy> OverflowError: (34, 'Result too large')
00:08:20 <AnMaster> ehird, care to enlighten me why that didn't give inf then? :/
00:08:48 <oepy> ZeroDivisionError: float division
00:08:57 <AnMaster> that should have been NaN iirc
00:09:00 <ehird> comex: plz do '*epy get('a', user='ehird')'
00:09:08 <AnMaster> ehird, How do I get a floating point NaN in python?
00:09:48 <AnMaster> ehird, it doesn't support it? instead throwing an exception
00:09:56 <oepy> OverflowError: (34, 'Result too large')
00:10:13 <ehird> *epy float('-inf')
00:10:20 <AnMaster> ehird, well, That still means it isn't IEEE 754
00:10:26 <ehird> AnMaster: So what.
00:10:53 <AnMaster> ehird, meaning implementing FPDP in a python implemented befunge would be a pain in the arse for example
00:10:55 <ehird> [[Sorry, it has not. Providing a consistent 754 story across platforms is a
00:10:55 <ehird> pain in the ass, because none of this behavior is covered by C89, and every
00:10:55 <ehird> vendor does it a different way. So it requires a large pile of platform
00:10:55 <ehird> #ifdef'ed code, and platform experts to write and contribute that stuff. But
00:10:55 <ehird> so far, nobody has volunteered any actual work (talk, yes; code, no).]] -- Tim Peters, 2001
00:11:21 <AnMaster> ehird, well problem solved, C99 got a macro to check for it
00:11:44 <ehird> AnMaster: "C99" != "problem solved".
00:11:51 <AnMaster> ehird, also it could use a close mapping to hardware, so that if the platform had it, then it could just use it
00:12:00 <ehird> AnMaster: Python is a very-high-level-language.
00:12:03 <AnMaster> if it didn't, it would use whatever else the platform have
00:12:08 <ehird> "close mapping to hardware" == no.
00:12:18 <AnMaster> ehird, But does it need to abstract everything?
00:12:47 <oepy> NameError: name 'Infinity' is not defined
00:12:51 <ehird> *epy Infinity/Infinity
00:12:52 <oepy> NameError: name 'Infinity' is not defined
00:13:06 <ihope> I love it when ehird says something for the first time followed by "like I have said 5 gajillion times". Maybe.
00:13:16 <ehird> I didn't say it for the first time, thanks.)
00:13:33 <ehird> oepy says hi on all /msg.
00:14:15 -!- oepy has quit (Remote closed the connection).
00:14:23 * ehird pastes current oepy code
00:14:27 -!- oepy has joined.
00:14:39 <oepy> OverflowError: math range error
00:14:41 <ehird> http://rafb.net/p/P3Zfd898.html
00:14:44 <AnMaster> http://docs.python.org/library/fpectl.html
00:14:49 <AnMaster> ehird, that says it should be Inf
00:14:50 <ehird> Things needed: actual persistence, etc.
00:14:57 <ehird> AnMaster: that's 2.6
00:15:18 <AnMaster> ehird, nice and readable code btw
00:15:36 <ehird> It's pretty-looking, but very unreadable shite.
00:15:42 <ehird> Tracking down bugs is a nightmare.
00:15:52 <ehird> AnMaster: It's only pretty if you can't actually read it (say if you don't know python).
00:16:09 <ehird> If you can read it, it's awful to try and understand & write.
00:16:15 <AnMaster> 'echo': (lambda s, *a: s(' '.join(a))),seems pretty clear to me
00:16:38 <ehird> AnMaster: Hoorah! One line is readable! Therefore the whole program is readable!
00:16:52 <AnMaster> some parts is actually a bit hard to read
00:17:07 <ehird> Now if you'll excuse me I have to try and _write code in this thing_. Which is not easy. Because it's ugly.
00:17:13 <AnMaster> (match(r':([^!]+)\S* PRIVMSG ((oepy) .*|(#esoteric) :.*oepy.*)', txt), (lambda a, _, b, c:
00:17:13 <AnMaster> (lambda x: socket.send('PRIVMSG %s :%s\r\n' % x))(
00:17:13 <AnMaster> {'oepy': (a, 'hi'), '#esoteric': ('#esoteric', 'hi '+a)}[b or c]
00:17:38 <ehird> AnMaster: Or how about how variables and their definitions are about 20 lines apart due to the lambda hack I use.
00:18:00 <ehird> Or the useless use of map and such because it's the shortest way to write it as such with such constraints.
00:18:16 <ehird> Unless you know python just don't even start to say it's pretty.
00:18:31 <AnMaster> ehird, I think it is pretty lispy/schemish code
00:18:49 <ehird> It takes the same kind of structure out of neccessity. It has none of the elegance.
00:19:02 <AnMaster> ehird, it is less elegant I agree
00:19:08 <AnMaster> but it is better than plain python
00:21:35 <AnMaster> ehird, why aren't you using python 2.6? It was released October 1 it seems
00:21:47 <ehird> Ain't broke, don't fix.
00:21:54 <ehird> i'll upgrade when i need to.
00:23:42 <AnMaster> ehird, "Alternate syntax for catching exceptions: except TypeError as exc."
00:25:52 -!- oepy has quit (Remote closed the connection).
00:26:02 -!- oepy has joined.
00:26:12 <ehird> *epy set(test=lambda *a: 'hi')
00:26:13 <oepy> <function <lambda> at 0xd13b0>
00:26:20 -!- oepy has quit (Remote closed the connection).
00:26:26 <AnMaster> Python 2.6 introduces a convention for user-specific site directories. The directory varies depending on the platform:
00:26:26 <AnMaster> * Unix and Mac OS X: ~/.local/
00:26:32 <AnMaster> that is used for something else here
00:26:45 <ehird> I think ~/.local/ is a generic dir.
00:27:06 <AnMaster> ehird, yes it seems to contain trash for example
00:27:15 <AnMaster> but I hope the use some subdir
00:27:31 <AnMaster> Within this directory, there will be version-specific subdirectories, such as lib/python2.6/site-packages on Unix/Mac OS and Python26/site-packages on Windows.
00:28:14 -!- oepy has joined.
00:28:20 <ehird> *epy set(test=lambda *a: 'hi')
00:28:21 <oepy> <function <lambda> at 0xd13b0>
00:31:14 -!- oepy has quit (Remote closed the connection).
00:31:25 -!- oepy has joined.
00:31:26 <ehird> *epy set(test=lambda *a: 'hi')
00:31:27 <oepy> <function <lambda> at 0xd13b0>
00:32:07 -!- oepy has quit (Remote closed the connection).
00:32:18 -!- oepy has joined.
00:32:41 <ehird> *epy set(test=lambda *a: 'hi')
00:32:42 <oepy> <function <lambda> at 0xd13b0>
00:32:53 -!- oepy has quit (Remote closed the connection).
00:33:04 -!- oepy has joined.
00:33:07 <ehird> *epy set(test=lambda *a: 'hi')
00:33:08 <oepy> <function <lambda> at 0xd13b0>
00:34:57 -!- oepy has quit (Remote closed the connection).
00:35:08 -!- oepy has joined.
00:35:11 <ehird> *epy set(test=lambda *a: pr('Hello, world!'))
00:35:11 <oepy> <function <lambda> at 0xd1270>
00:35:16 <oepy> NameError: global name 'pr' is not defined
00:35:24 -!- oepy has quit (Remote closed the connection).
00:35:34 -!- oepy has joined.
00:35:38 <ehird> *epy set(test=lambda *a: pr('Hello, world!'))
00:35:38 <oepy> <function <lambda> at 0xd12b0>
00:36:05 <oepy> NameError: global name 'setitem' is not defined
00:36:12 -!- oepy has quit (Remote closed the connection).
00:36:22 -!- oepy has joined.
00:36:24 <ehird> *epy set(test=lambda *a: pr('Hello, world!'))
00:36:25 <oepy> <function <lambda> at 0xd12b0>
00:36:39 <oepy> 'Hello, world!'
00:37:00 -!- oepy has quit (Remote closed the connection).
00:37:10 -!- oepy has joined.
00:37:11 <ehird> *epy set(test=lambda a: pr('Hello, '+a+'!'))
00:37:12 <oepy> <function <lambda> at 0xd12f0>
00:37:16 <oepy> TypeError: <lambda>() takes exactly 1 argument (0 given)
00:37:27 <ehird> *epy set(test=lambda x='world', *a: pr('Hello, '+x+'!'))
00:37:28 <oepy> <function <lambda> at 0xd1270>
00:37:46 <ehird> *epy set(test=lambda *a: pr('Hello, '+' '.join(a)+'!'))
00:37:46 <oepy> <function <lambda> at 0xd13b0>
00:37:53 <ehird> AnMaster: Discuss.
00:37:59 <ehird> fizzie: Mr botter #2, discuss.
00:38:18 <ehird> AnMaster: The workage of the above.
00:39:08 <AnMaster> storing first class functions yes
00:39:20 <AnMaster> no idea if it persists across sessions
00:39:22 <ehird> The 'command defining' aspect.
00:39:42 <AnMaster> ehird, it is global for all users?
00:39:50 <AnMaster> what if I define my own colliding one?
00:40:06 <AnMaster> or is set no longer local to user?
00:40:07 <fungot> ehird: oh weh mir will bei meiner fnord sein
00:40:23 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf, code=text/str:N; ^str 0-9 get/set/add [text]
00:40:31 <ehird> ^def test bf ,[.,]
00:40:32 <AnMaster> *epy set(test=lambda *a: pr('Hi, '+' '.join(a)+'!'))
00:40:33 <oepy> <function <lambda> at 0xd1270>
00:40:34 <oerjan> fungot: ich weiss nicht, was soll es bedeuten
00:40:35 <fungot> oerjan: rsa gives 200k for getting the first instruction ( byte 0), ( n+n/ fnord/ fnord
00:40:35 <fungot> Usage: ^def <command> <lang> <code>
00:40:38 <fungot> Usage: ^def <command> <lang> <code>
00:41:33 <AnMaster> ehird, you may want to prevent that
00:41:49 <oepy> SyntaxError: unexpected EOF while parsing (<irc>, line 0)
00:42:24 <AnMaster> ehird, question: How do I unset a value
00:42:44 <oepy> KeyError: 'foo'
00:42:52 <oerjan> an unsettling question
00:42:58 <oepy> <function <lambda> at 0xd1270>
00:43:03 <oepy> NameError: name 'remove' is not defined
00:43:04 <ehird> AnMaster: Just set it to None.
00:43:19 <oepy> KeyError: 'foo'
00:43:25 <oepy> TypeError: 'NoneType' object is not callable
00:43:36 -!- oepy has quit (Remote closed the connection).
00:43:42 <AnMaster> ehird, is it possible to make a command that maps to some other user's function?
00:43:54 <ehird> *epy set(thing=get('thing', user='otherguy'))
00:44:14 -!- oepy has joined.
00:44:17 <AnMaster> and would it really work if the original user changed thing
00:44:24 <ehird> Then: *epy set(thing=lambda *a: get('thing', user='otherguy')(*a))
00:45:07 <AnMaster> ehird, can you use lambda to make an accumulator like in scheme?
00:45:13 <oepy> NameError: name 'unset' is not defined
00:45:32 -!- oepy has quit (Remote closed the connection).
00:45:34 <AnMaster> ehird, that is some local stuff like define and set!
00:45:40 <ehird> AnMaster: yes, with a hack
00:45:43 -!- oepy has joined.
00:46:30 <ehird> (lambda n: (lambda x: (lambda i: (x.__setitem__(0,x[0]+i), x[0])[1]))([n]))
00:46:37 <ehird> *epy set(accgen=(lambda n: (lambda x: (lambda i: (x.__setitem__(0,x[0]+i), x[0])[1]))([n])))
00:46:38 <oepy> <function <lambda> at 0xd1270>
00:46:44 <ehird> *epy set(myacc=accgen(5))
00:46:44 <oepy> NameError: name 'accgen' is not defined
00:46:49 <ehird> *epy set(myacc=get('accgen')(5))
00:46:49 <oepy> <function <lambda> at 0xd1770>
00:46:56 <oepy> NameError: name 'myacc' is not defined
00:46:59 <oepy> <function <lambda> at 0xd1770>
00:47:03 <ehird> *epy get('myacc')(5)
00:47:05 <ehird> *epy get('myacc')(5)
00:47:14 <ehird> AnMaster: No explicit way to access a var from the specific scope.
00:47:26 <ehird> And yes, well, lambda is discouraged
00:47:28 <ehird> Python is imperative.
00:47:45 <ehird> AnMaster: Python is an imperative languag.
00:47:58 <ehird> It just happens to have a few functional features which I abuse by using for everything.
00:48:01 <ehird> It's just a novelty.
00:48:05 <AnMaster> ehird, well it had great potential for being a good mix of functional and imperative
00:48:27 <ehird> *epy unset('myacc')
00:48:30 <oepy> KeyError: 'myacc'
00:49:24 <AnMaster> and then some way to persist across sessions
00:49:44 <AnMaster> ehird, can you serialise python into sqlite db or something?
00:50:01 <ehird> I can serialize the code by saving it as a string and then pickle the lists, sure.
00:50:10 <ehird> *epy set(reverse=lambda *a: pr(' '.join(a)[::-1]))
00:50:10 <oepy> <function <lambda> at 0xd1530>
00:50:13 <ehird> *cmd reverse reverse
00:50:14 <AnMaster> ehird, ok that sounds horrible
00:50:18 <ehird> *reverse abcd efg hi
00:50:20 <ehird> AnMaster: Not really.
00:50:32 <AnMaster> ehird, it will work for "<function <lambda> at 0xd1530>" too?
00:50:54 <ehird> AnMaster: no, which is why i'd save the code as a string
00:51:07 <AnMaster> ehird, ah you mean store it originally as a string too?
00:51:21 <AnMaster> well this have been most interesting, but now I really really need to sleep
00:51:29 <ehird> AnMaster: shall i paste the code first?
00:51:34 <AnMaster> I hope this bot will have a bright future
00:51:40 <ehird> http://rafb.net/p/8g7uKm57.html
00:51:43 <AnMaster> I like to scare python fans with it!
00:51:54 <ehird> also, i'll probably get it running sufficiently and then consider it finished save for bugfixes :-P
00:51:59 <ehird> maybe write a bot I can actually maintain
00:52:07 <ehird> still, i'm proud of what i have
00:52:43 <ehird> should I paste that into #python
00:52:48 <AnMaster> ehird, you are right to be proud
00:53:01 <AnMaster> ehird, you put the fun back in python
00:53:59 <ehird> <Storlek> ehird: awesome
00:53:59 <AnMaster> <ehird> Storlek: Awesome heart attacks!
00:54:04 <ehird> <Crys_> ehird: no more LISP for you! :p
00:54:09 <AnMaster> <Crys_> ehird: no more LISP for you! :p
00:54:31 <AnMaster> when you talked about asking that channel first time
00:54:47 <AnMaster> ehird, I don't normally idle there
00:55:00 <ehird> <habnabit_> ehird, eh.
00:55:00 <AnMaster> <ehird> unfortunately it'll only survive for about 1000 lines
00:55:00 <AnMaster> <ehird> due to the recursion loop :(
00:55:11 <ehird> AnMaster: look at the this(this,persisted,extra_cmds)
00:55:16 <ehird> it calls it recursively for every line
00:55:18 <ehird> + small stack = ...
00:55:20 <AnMaster> ehird, you mean python doesn't have tail recursion?
00:55:47 <ehird> it's an imperative language.
00:56:40 <AnMaster> ehird, but even some C compilers optimise tail recursion
00:56:56 <AnMaster> ehird, and C is much much more imperative than python
00:56:57 <ehird> But no sane program relies on it.
00:57:57 <oerjan> maybe there is some other way to iterate within an expression?
00:58:26 <ehird> habnabit_: map(f, iter(lambda: True, False))
00:58:33 <ehird> or i could add a tailcall trampoline
00:58:55 <AnMaster> ehird, um that is serious python-fu
00:59:42 <ehird> map is a map function.
00:59:49 <ehird> iter on a lambda makes an iterator
00:59:57 -!- slereah has joined.
01:00:10 <ehird> returning (value,is_at_end)
01:00:16 <ehird> so that yields true
01:00:52 <oerjan> one problem though: doesn't it try to collect the results?
01:01:05 -!- Slereah_ has quit (Read error: 113 (No route to host)).
01:01:29 <AnMaster> oerjan, it should, meaning non-tail recursion
01:01:43 <oerjan> well a little memory leak
01:01:56 <ehird> map would return an iterator
01:02:05 <ehird> which would throw away its value whenever it yield
01:02:07 <ehird> <CSWookie> Storlek: I don't see any reason to be proud of achieving a goal that isn't worth accomplishing.
01:02:12 <AnMaster> <habnabit_> ehird, where's the bot? I can circumvent that security easily enough.
01:03:07 -!- habnabit_ has joined.
01:03:43 <AnMaster> ehird, you forgot to code that
01:03:45 <oepy> <type 'function'>
01:03:52 <oepy> {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__file__': 'onelineesobot.py', '__doc__': None}
01:04:00 <ehird> (Originally it was one line...)
01:04:10 <habnabit_> *epy unset.func_globals['__builtins__'].__import__('os').fork
01:04:11 <oepy> AttributeError: 'module' object has no attribute 'no_import'
01:04:22 <habnabit_> *epy unset.func_globals['__builtins__'].__import__
01:04:23 <oepy> AttributeError: 'module' object has no attribute 'no_import'
01:04:32 <habnabit_> *epy vars(unset.func_globals['__builtins__'])
01:04:32 <oepy> {'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.
01:04:36 <oerjan> ok not _that_ screwed :D
01:04:40 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
01:04:40 <oepy> <built-in function __import__>
01:04:58 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')('sys').stdout.write('Hmm. I wonder how to fix this.')
01:05:16 <ehird> habnabit_: I don't suppose you have any bright ideas? :-P
01:05:32 <AnMaster> I think python need something like that sandbox thingy perl have
01:06:01 <ehird> habnabit_: You have a better suggestion? :-P
01:06:16 <ehird> i'd quite like the wonderful people of this place to experience the insanity that single-expression python gives.
01:06:17 <AnMaster> ehird, writing a python interpreter in lambda-style python?
01:06:20 <habnabit_> Make a FORTRAN interpreter instead.
01:06:24 <ehird> AnMaster: Harsh, man. Harsh.
01:06:35 <ehird> habnabit_: Pfft. :-P
01:06:52 <habnabit_> What's it called? The stack-based language.
01:06:59 <AnMaster> ehird, written as single line lambda?
01:07:11 <ehird> habnabit_: Or anything on http://esolangs.org/wiki/Language_list...
01:07:12 <AnMaster> FORTH probably is what you mean indeed
01:07:39 <ehird> (fungot happens to be written in befunge.)
01:07:39 <fungot> ehird: except you have to
01:07:52 <ehird> (but that is brainfuck.)
01:08:01 <ehird> FORTH would be a pain in python, though.
01:08:05 <ehird> It can directly access the memory.
01:08:17 <habnabit_> Just make some FORTH-like language.
01:08:24 <habnabit_> Stack-based things are really easy to implement.
01:08:51 <habnabit_> Just like how an RPN calculator is much easier to implement than some infix thing.
01:08:52 <ehird> habnabit_: Sure, thutubot is written in a string-rewriting language and does underload.
01:08:55 <AnMaster> habnabit_, don't you realise we are all slightly insane by your standards in here? :)
01:09:06 <ehird> But I think I'll hack at it to make it do one-expr python reasonably safely.
01:09:15 <ehird> habnabit_: #python's I guess he means.
01:09:16 <AnMaster> habnabit_, not sure, but basically we think doing things in obscure ways is fun
01:09:21 <habnabit_> ehird, it already does one-expression python.
01:09:25 <ehird> But yeah, considering we're a community based entirely around esoteric programming languages...
01:09:30 <ehird> habnabit_: But with security holes.
01:09:31 <AnMaster> habnabit_, like obfuscated c is sane compared with some things in here ;P
01:09:35 <habnabit_> eval can *only* evaluate one expression.
01:10:19 <AnMaster> habnabit_, http://zem.fi/~fis/fungot.b98.txt
01:10:20 <fungot> AnMaster: i have been creating some pages
01:10:24 <fungot> AnMaster: gambit does transparent nonblocking io of course. can't perform the ritual. and lo and behold
01:11:26 <AnMaster> habnabit_, oh and ais523 (who is afk) maintains one of the INTERCAL implementations
01:12:02 <AnMaster> I'm sure you know what intercal is, but if you don't, you probably don't *want* to know
01:12:42 <AnMaster> habnabit_, in fact I consider ehird's one expression python code beautiful, though I admit I don't know python well. I prefer C, Erlang and Scheme
01:13:14 <fungot> AnMaster: i paid 25 eur for my nokia communicator 9110
01:13:19 <habnabit_> Sure. But it's not really one expression.
01:13:25 <ehird> habnabit_: AnMaster hates Python because of whitespace indentation, I think it's safe to say his opinion on Python code is a bit silly.
01:13:29 <ehird> Also, it is so one expression.
01:13:33 <habnabit_> lambda *lists: (lambda iters: (reduce(lambda (ll, res), l: (l, res if ll is None else (res and ll == l)), reduce(lambda ds, elems: map(lambda d, elem: d.__setitem__(elem, d.get(elem, 0) + 1) or d, ds, elems) or ds, zip(*iters), [{} for x in xrange(len(lists))]), (None, True)))[-1] and not (lambda l: map(lambda it: list((itt.next(), l.append(True)) for itt in (it,)), iters) and bool(l))([]))(map(iter, lists)) if lists else True
01:13:40 <AnMaster> I do think whitespace indention have lots of issues yes
01:14:04 <AnMaster> I prefer either brances, or erlang style
01:14:34 <AnMaster> erlang use . to end a function , to separate expressions in a function and ; to end a function clause
01:14:34 <oerjan> habnabit_: embrace your dark side >:D
01:14:50 <habnabit_> I have a bunch more python oneliners I've written.
01:14:51 <ehird> oerjan is a published mathematician who wrote an unlambda interpreter in intercal.
01:14:54 <AnMaster> it have none of the drawbacks of {} or indention based
01:15:22 <AnMaster> not being a big python fan I admit I can't figure out what it does
01:15:35 <AnMaster> not enough clues in the code really
01:15:40 <habnabit_> It's the same as sorted(L1) == sorted(L2) == sorted(L3) == ...
01:15:54 <AnMaster> sorted would check if a list is sorted I assume?
01:16:14 <ehird> sorted returns a sorted version
01:16:16 <habnabit_> No, it returns a sorted copy of a list.
01:16:28 <ehird> sort is an imperative
01:16:32 <habnabit_> .sort is an inplace method of lists.
01:16:34 <ehird> thus should mutate
01:16:39 <ehird> but sorted describes the transition
01:16:47 <habnabit_> So you have list.sort(), which is faster because it sorts in place.
01:16:56 <habnabit_> And then there's sorted, which returns a sorted list from any iterable.
01:17:00 <AnMaster> habnabit_, Single Assignment make so much more sense! :P
01:17:14 <habnabit_> What's that have to do with sorting lists?
01:17:23 <AnMaster> well for a start you would always get a new copy
01:17:34 <ehird> habnabit_: AnMaster actually only knows 3 languages, C, Bash (which he uses for big projects like his 'modular irc bot') and Erlang, but he likes to show off that he knows Erlang nowadays.
01:17:36 <ehird> I'm leaving now. Bye.
01:17:46 <AnMaster> ehird, now you are exagerating
01:18:07 <AnMaster> I already wrote some scheme programs including a simple befunge93 interpreter
01:18:23 <AnMaster> once it is fully finished to handle IO correctly I will publish it
01:18:46 <AnMaster> 02:18 in the night, really need to change that sleep pattern
01:19:09 <AnMaster> habnabit_, oh and in case you want to see my insane modular irc bot in bash: http://envbot.kuonet.org
01:19:23 <AnMaster> and it is somewhat like ehird's one-expression
01:20:14 <AnMaster> habnabit_, well that is different
01:20:23 * AnMaster ssh in to the freebsd jail it runs in
01:21:29 <AnMaster> habnabit_, ok some upgrade broke it
01:21:41 <AnMaster> probably because that is coded in python
01:21:58 <AnMaster> Traceback (most recent call last):
01:21:58 <AnMaster> File "/usr/local/share/trac/cgi-bin/trac.fcgi", line 19, in <module>
01:21:58 <AnMaster> from trac.web import fcgi_frontend
01:21:58 <AnMaster> ImportError: No module named trac.web
01:23:27 <AnMaster> habnabit_, happen to have any bright ideas?
01:24:03 <habnabit_> I wouldn't recommend using fcgi, though.
01:24:53 <AnMaster> habnabit_, then what do you suggest? I need to server bzr branches
01:26:41 <AnMaster> going would mean "going away" to me
01:26:53 <habnabit_> Looks like mod_wsgi works with bzr, too.
01:27:08 <AnMaster> habnabit_, not really what I meant, I server them statically
01:27:18 <AnMaster> since bzr can work on plain web server
01:27:37 <AnMaster> anyway envbot is semi-dead really
01:27:54 <AnMaster> however I'm proud over what I managed
01:29:09 <AnMaster> habnabit_, I hope you will stay here :)
01:29:29 <AnMaster> RIght now isn't prime time, many of the most active people live in Europe
01:29:43 <AnMaster> So like me, they are heading to bed.
01:31:19 -!- olsner has joined.
01:35:00 * comex tries to compile pypy, and fails
01:35:41 -!- puzzlet has quit (Remote closed the connection).
01:35:45 -!- puzzlet has joined.
01:37:29 -!- oepy has quit (Read error: 113 (No route to host)).
01:41:02 <comex> if this actually works ...
01:41:24 <comex> well, it's the first 1.0 software tbqh that I've had to fix a bug to get compile
01:41:57 <GregorR> Moxie is so much better than all other soda.
01:42:21 -!- slereah has quit (Read error: 113 (No route to host)).
01:55:54 -!- puzzlet has quit (Success).
02:00:57 -!- puzzlet has joined.
02:10:53 -!- olsner has quit ("Leaving").
02:21:17 -!- ab5tract has joined.
02:40:21 <ihope> I've never had moxie.
02:45:21 -!- habnabit_ has quit (Read error: 110 (Connection timed out)).
02:46:13 <GregorR> ihope: It's effectively limited to one state :P
02:46:57 <ihope> What state is that?
02:47:03 <ihope> And why can't it be found elsewhere?
02:47:14 <GregorR> Because they don't sell it elsewhere :P
02:47:37 <ihope> Can you buy it in Maine, take it somewhere else, and sell it there?
02:48:23 <GregorR> There are a few places that sell it in Oregon.
02:48:29 <ihope> "USED: Six cans of MOXIE soft drink. No visible damage. Still factory sealed."
02:48:57 <GregorR> But yuh, I bought mine online.
02:49:28 <oerjan> I think we shall have to liberate Maine and relieve them of these WMDs...
02:49:53 <ihope> How did you get your hands on Moxie in Indiana?
02:50:38 <GregorR> (Had a bunch of it shipped)
03:07:05 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | Y = SII, so.
03:09:38 -!- GreaseMonkey has joined.
03:13:07 -!- habnabit_ has joined.
03:28:14 -!- ab5tract has quit.
03:36:18 <oerjan> http://www.thinkin-lincoln.com/index.php?strip_id=1
03:37:46 <oerjan> (made me laugh, that one)
03:43:05 <oerjan> http://www.thinkin-lincoln.com/index.php?strip_id=8
03:43:21 <oerjan> maybe i'm getting tired like oklopol
04:18:37 <oerjan> <ehird> i think bsmntbombdood did one statement python
04:19:02 -!- ENKI-][ has quit (Read error: 104 (Connection reset by peer)).
05:13:03 -!- edwardk has joined.
05:18:03 <edwardk> I finally figured out how to make kata views efficient =)
05:18:38 <edwardk> i realize uttering the word 'efficient' around here is grounds for a beating, but hey
05:18:49 <edwardk> kata is my more or less untyped haskell-alike
05:18:59 <edwardk> i use wadler style views in it rather than typeclasses
05:19:27 <edwardk> where a view is defined as a sort of hybrid between a haskell data type and a open function definition
05:20:23 <edwardk> so in a wadler-style view. you'd say define a view Nat on integers that took 0 to the constructor Z and then took any other integer n to S (n -1)
05:20:32 <edwardk> then you could use S and Z or the more traditional integers
05:21:29 <edwardk> in kata-style views, you also say what constructors the view consists of, but the view itself is a function and you define the function as you would normally. any attempt to pattern match on a constructor that is part of a view applies the appropriate view function
05:21:52 <edwardk> so given constructors && and ||:
05:22:17 <edwardk> bool :: view True | False; bool (True && b) = bool b; bool (False && _) = False
05:23:19 <edwardk> a view is automatically idempotent and is an identity function on its own constructors, and in this case is defined on the additional && constructor, but when applied there it first applies the boolean view to the first argument of the && constructor, and case matches appropriately from there.
05:23:48 <edwardk> the problem is basically i wound up building up these free magmas of structures 1 + (2 + 3) didn't build a thunk chain it built a data structure.
05:24:10 <edwardk> and then applying the 'int' view to that was like 'walking an evaluation function' down a tree
05:24:27 <edwardk> so i finally figured out a way to cache the result of applying certain views to different data structures
05:24:35 <edwardk> which lets me recover haskell like efficiency
05:26:01 <edwardk> basically i had to steal a trick from a chess program
05:26:36 <edwardk> crafty had this trick for doing lockless caching of best move calculations in its transposition tables
05:27:40 <edwardk> in the ghc spineless tagless g-machine you store a tag and a fwding pointer along with the data, in kata you store the tag, a forwarding pointer and a 'view' that derived that forwarding pointer. unfortunately. if you aren't careful that leads to a race condition, because without a lock
05:27:54 -!- ihope_ has joined.
05:28:03 <edwardk> you would read one fwding pointer, then someone could come along and write in another fwding pointer and view before you got to the view.
05:29:32 <edwardk> so instead i store the fwding pointer xored with the view instead. then to see if a view has already been applied to a thunk i check to see if fwd ^ fwd ^ the-view-i-read = the-view-i-want if so then fwd points to the answer, if not either the wrong view was stored or someone is racing me and its inconsistent
05:30:46 <edwardk> its always safe (if inefficient) to recompute a view, so it takes it to a conservative case for the rare (1-in-a-million)^2 kinda case where we both happen to be evaluating the same datastructure and i read it right as you overwrite it
05:31:00 <edwardk> which then just does the right thing
05:31:08 <edwardk> and no locks need enter into it
05:31:22 <edwardk> so its kinda like the blackholing tricks used by ghc
05:33:30 <edwardk> anyways it made me happy =)
05:34:29 <edwardk> unfortunately it plays hell with my garbage collector which heretofore didn't have to worry about writes changing the set of pointers visible from the local dataset into itself (i had some tricks that let me garbage collect separately per processor)
05:36:55 * oerjan discovers he's very tired
05:37:16 <edwardk> (previously other threads didn't have to care if another thread was garbage collecting, any object that could be shared had a root pinned to keep it from oving, before copy collecting, propagate the pins transitively and don't move anything pinned) unfortunately since any thread can 'view' any other thread's data that fails here, since now you run into the traditional garbage collector/mutator race conditions that plague most concurrent col
05:37:47 * edwardk discovers he is blathering on
05:38:55 -!- oerjan has quit ("Bed").
05:45:47 -!- ihope has quit (Read error: 110 (Connection timed out)).
05:49:11 -!- moozilla has quit (Read error: 110 (Connection timed out)).
05:54:32 -!- oc2k1 has quit (Remote closed the connection).
06:23:28 <GregorR> It's hard to find good test cases for a garbage collector.
06:24:10 <GregorR> I wrote up a quick-n-dirty generational GC, but my test cases are pathologically bad (tons of object churn with bad natural locality) so the GC is actually going faster than the non-GC version.
06:33:29 <edwardk> in this case i've been using a per-processor copy-collector, where i allocate objects in garbage collected regions, inter-region links are pinned so they don't move, so anything with inter-region (hence all inter-processor) links can't be copy collected, they get globally mark/swept and ultimately mark/compacted.
06:34:10 <edwardk> it lets me get rid of most of my garbage without any inter-thread communication, but forces some constraints on how i can use objects or pass pointers around
06:36:21 <edwardk> unfortunately the view stuff i was rambling on above invalidates one of the central invariants of my gc model which is that an inter-region link could only be evaluated by another process to a value that it could reach transitively from a reference it had been handed (and it a reference is ever handed out it is pinned, and pins are propagated before sweeping)
06:38:31 <edwardk> so if i'm not the process that owns a region i don't have to care about the state of anything not transitively reachable from a pinned root, and since before copy collecting i propagate the pins (its just a mark pass, pins are the initial grey set) and hence any garbage collection done by the other processor is invisible to me. but if i want to collect pinned stuff i have to eventually give in and run a global collection
06:58:35 <psygnisfive> http://wellnowwhat.net/comic/mathematicians.jpg
07:00:44 -!- asiekierka has joined.
07:01:44 <psygnisfive> tho stick figures arent really anyones 'style' :P
07:02:44 <psygnisfive> xkcd's style is: stick figures + geek humor
07:03:12 <asiekierka> Screebles style is: stick figures + school-bored-lesson-like drawing + nonsense
07:03:37 <Jiminy_Cricket> On that note I need to go to bed, I have to be at a math tournament in 7 hours...
07:03:55 <psygnisfive> cyanide and happiness is stick figures + faces + torsos + black humor
07:05:45 <asiekierka> http://wellnowwhat.net/comic/mathematicians.jpg - this comic... lacks a good punchline.
07:06:08 <asiekierka> And to whoever made it: "Make the guys look like they're laughing when they are"
07:06:34 <psygnisfive> im not sure how to make stick figures look like they're laughing :(
07:06:51 <asiekierka> it's possible even in MS *bleeping* PAINT!
07:07:21 <asiekierka> Also, i must finally upload screebles 26-32 soon
07:07:31 <psygnisfive> since Someone's art has facial expressions
07:08:11 <asiekierka> The one with constant 500's. Since i don't feel like re-uploading the whole script
07:08:27 -!- moozilla has joined.
07:09:08 <asiekierka> so there are a total of 32 screebles AND 6 animated screebles AND 5 animated whiteboard screebles
07:15:38 <asiekierka> in the meanwhile, i'll connect my VCR and finally copy that megaman nt warrior final eps
07:23:00 <asiekierka> the final half of axess got aired here 2 months ago
07:26:41 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)).
07:26:56 -!- asiekierka has joined.
07:31:05 <asiekierka> that were xkcd influenced, but slowly branched
07:31:15 <asiekierka> to asiekierkism, OR, my way of nonsense
07:31:42 <asiekierka> http://asiekierka.boot-land.net/screebles
07:33:16 <asiekierka> then it slowly branched away to my nonsense
07:33:21 <asiekierka> Also, i didn't do anything in MS paint
07:34:54 <asiekierka> Except "don't draw on this little paper"
07:44:15 <moozilla> i can't tell what most of them say :-/
07:44:57 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)).
07:45:12 -!- asiekierka has joined.
07:45:32 <asiekierka> But i can't write better on such a small notebook!
07:59:03 -!- Mony has joined.
07:59:24 -!- habnabit_ has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:11 -!- habnabit has joined.
08:09:09 <fizzie> PLoP is a predicate logic formula evaluator used for the homework in our logic course. (Nowadays; it used to use otter, the theorem-prover.)
08:10:23 <asiekierka> Anyone knows why Taxi doesn't work with NetCat
08:10:43 <fungot> echo reverb rev bf rot13 hi rev2 fib wc xaa enctst copy badrot13 chtopic top topiccode compat_cat trulyawfulrot13 rot26 me echochohoo lolercakes echo_cho_ho_o baddoubles ul test
08:11:03 <optbot> asiekierka: but e.g. sam ruby uses it so he can embed svg and mathml
08:11:03 <optbot> fungot: that is clever
08:11:04 <fungot> optbot: does not compute.
08:11:04 <optbot> fungot: SICP IS A POLYGAMISRT
08:11:04 <fungot> optbot: it's a paper on prescheme, right?
08:11:04 <optbot> fungot: I had two open
08:11:04 <fungot> optbot: ( and i know this
08:11:05 <fungot> optbot: too true, actually. haskell is computing ack(4,2)... over and over
08:15:24 <fungot> echo reverb rev bf rot13 hi rev2 fib wc
08:15:31 <pikhq> fizzie: Plof > PLoP.
08:15:36 <fizzie> That was entirely too many senseless commands.
08:17:03 <fizzie> Although I guess the ul command was kinda nice, even though it only was capable of outputting like three things, and useless with thutubot here.
08:23:05 <fizzie> It goes "out of time" with any nontrivial programs. Concatenation is about the only thing that works.
08:28:55 <fungot> echo reverb rev bf rot13 hi rev2 fib wc ul
08:34:05 <fizzie> Yes, a Funge-98 underload interp is on my to-do list.
08:35:31 <asiekierka> Getting Taxi to cooperate with netcat is on my priority list
08:59:46 <AnMaster> I use something similar in my irc bot in bash
08:59:57 <AnMaster> asiekierka, also maybe socat would work better then
09:00:20 <asiekierka> or if there's a native windows binary of it
09:01:02 <AnMaster> asiekierka, from man page http://rafb.net/p/FNQWQX80.html
09:01:17 <AnMaster> you could do something similar for stdin/stdout (1 and 2)
09:02:35 <asiekierka> I'm not sure if taxi does output to stdout
09:02:48 <asiekierka> Netcat+Taxi (with the -e command) FAIL
09:02:51 <AnMaster> asiekierka, did you compile taxi under cygwin?
09:03:12 <asiekierka> i did it earlier but i recompiled it (thx ehird)
09:03:35 <AnMaster> asiekierka, try 2>/dev/null, do you still get output from taxi?
09:03:46 <AnMaster> if not, it uses stderr for output
09:04:02 <asiekierka> taxi.exe tst.txt 2>/dev/null in Windows!?
09:05:25 <AnMaster> asiekierka, so it use stdout then
09:05:58 <AnMaster> asiekierka, well I'm not sure fifos work under cygwin
09:06:04 <asiekierka> ./nc -v -v -e ./exec.sh irc.freenode.net 6667
09:07:05 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | english is easier than Polish, Korean, Chineese, Finnish, Hungarian, Russian, Nyjorsk, Dannish... and some other ;;p.
09:07:22 <asiekierka> If i run taxi.exe directly, as in, -e "./taxi.exe tst.txt", it quits after a short while
09:07:25 <AnMaster> asiekierka, I'm not sure how nc works with that option
09:07:42 <asiekierka> -e prog program to exec after connect [dangerous!!]
09:07:44 <AnMaster> asiekierka, can you pastebin the code for your program? Maybe it got a bug?
09:08:00 <AnMaster> asiekierka, yes but I'm unsure it does what you want, the -e option
09:08:07 <AnMaster> asiekierka, the program tst.txt
09:08:21 <asiekierka> but when i run -e ./foo.sh (foo.sh echos hello world and blah by normal bash) it works
09:08:51 <asiekierka> http://www.bigzaphod.org/taxi/taxi.cpp - the taxi interpreter src
09:09:38 <AnMaster> asiekierka, I meant the source for your program written in taxi
09:11:04 <asiekierka> sends nothing to itself (localhost, nc listening)
09:11:27 <AnMaster> USER asiebot asiebot asiebot :AsieBot!
09:11:39 <asiekierka> so it doesn't show the first two lines
09:11:45 <asiekierka> and the last line (that the program ended)
09:12:42 -!- asiebot has joined.
09:12:51 <AnMaster> USER asiebot asiebot asiebot :AsieBot!
09:12:52 <asiekierka> i inputted the first two lines first manually
09:13:03 <AnMaster> > 2008-10-04 11:43:37 USER rfc3092 0 * :ietf.org/rfc/rfc3092
09:13:22 <asiebot> Here you go, you see, it works! I just typed it manually!
09:13:31 <AnMaster> asiebot, using netcat directly?
09:14:41 <asiekierka> Also, there's one problem. Namely, :asiekierka!n=asiekier@xx.xxx.xxx.x shows before the true command
09:14:47 <asiekierka> And that may pwn the whole string handling in Taxi.
09:15:23 <asiekierka> But one sad thing is that i can't split the string into pieces!
09:15:36 <asiekierka> then the Post Office works as a... STACK.
09:16:16 <asiekierka> Hopefully Chop Suey and KonKat's are close together
09:16:27 <asiekierka> So it takes ~1 mile to drive from one of these to another
09:16:34 <AnMaster> doesn't your irc client have a raw log feature?
09:16:44 <AnMaster> >> :asiekierka!n=asiekier@89.108.200.4 PRIVMSG #esoteric :+So it takes ~1 mile to drive from one of these to another
09:17:22 <AnMaster> >> :calvino.freenode.net PONG calvino.freenode.net :LAG1223663021092674
09:17:24 <asiekierka> So i can KonKat 27 chars together on one gallon :)
09:17:50 <AnMaster> asiebot, hm one thing maybe, does taxi buffer output?
09:17:51 <asiekierka> I just got PING :clarke.freenode.net in netcat
09:18:06 <asiekierka> AnMaster: How else you do it on Linux?
09:18:24 <asiekierka> i know it uses getline for input and cout for output
09:18:41 -!- jix has quit (Nick collision from services.).
09:18:43 -!- asiebot has quit (Read error: 104 (Connection reset by peer)).
09:18:48 <AnMaster> netcat irc.freenode.net 6667 < out-fifo > in-fifo &
09:18:51 -!- jix has joined.
09:19:08 <AnMaster> both before the netcat command
09:19:32 <AnMaster> taxi foo.txt < in-fifo > out-fifo
09:19:47 <AnMaster> reversing order of the fifos compared with in nethack command
09:19:55 <AnMaster> asiekierka, fifios are special files
09:20:08 <asiekierka> is the & at the end necessary in netcat
09:20:18 <AnMaster> asiekierka, no you could start it in a different terminal
09:21:02 <AnMaster> asiekierka, anyway I don't know if cygwin have fifos
09:21:15 -!- olsner has joined.
09:21:52 <AnMaster> asiekierka, anyway another possibility is that some buffering is going on somewhere
09:22:50 <AnMaster> asiekierka, maybe add cout.flush(); at the end of post_office_arrive(), that should handle buffering I think
09:23:51 <AnMaster> asiekierka, that is for C not C++
09:23:58 <AnMaster> in C++ I think it is cout.flush();
09:25:50 <asiekierka> I wonder if i should add a 3-second delay in the program
09:29:07 <AnMaster> asiekierka, I set up a local listening netcat and tried to connect to it with your program
09:29:16 <AnMaster> I should have gotten output from the listen nethack
09:29:31 <asiekierka> I think it's the taxi.cpp that is broken
09:30:04 <asiekierka> Or maybe netcat doesn't use stdin/stdout, but that'd be wrong, as netcat works with foo.sh's echo, even with -e
09:30:34 <AnMaster> Listening on any address 51972
09:30:34 <AnMaster> Connection from 127.0.0.1:37495
09:30:39 <AnMaster> $ netcat 127.0.0.1 51972 -e "./taxiwrap.sh"
09:32:49 <asiekierka> nc -v -v -l -p 3200 localhost in a cmd box
09:33:07 <asiekierka> and in the cygwin box, do.sh which set the fifos if needed, ran nc to localhost -p 3200 and taxi
09:34:43 <asiekierka> yes, it seems to work with localhost(age)
09:35:48 <asiekierka> So it's a problem with the connection process
09:36:10 <asiekierka> taxi.cpp modded by me waits 2 seconds before processing
09:36:51 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)).
09:37:07 -!- asiekierka has joined.
09:37:47 <AnMaster> I'm not sure what is up with netcat
09:39:17 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)).
09:39:33 -!- asiekierka has joined.
09:40:06 <oklopol> lemme solve all your mortal problems
09:40:22 <oklopol> i'm not sure what netcat and taxi are
09:40:22 <asiekierka> We FINALLY got Netcat to cooperate with Taxi
09:40:28 <asiekierka> but we must now get them to cooperate with Freenode
09:40:33 <oklopol> but i have a faint idea about freenode
09:40:43 <oklopol> it is one of the continents of irc
09:41:20 <AnMaster> asiekierka, I need to read once after sending the first line
09:41:58 <asiekierka> I already added a 7second delay before code execution in Taxi.cpp!
09:42:26 <AnMaster> asiekierka, no it seems odd blocking things happen
09:42:32 <AnMaster> asiekierka, if you have socat, use it instead
09:43:29 <AnMaster> no idea if it works on windows/cygwin
09:45:37 <AnMaster> socat EXEC:"./taxi taxibot.txt",fdin=0,fdout=1 TCP4:irc.freenode.net:6667,crnl
09:45:42 -!- asiebot has joined.
09:45:47 -!- asiebot has quit (Remote closed the connection).
09:46:12 <AnMaster> asiekierka, no idea if reading works
09:46:58 <AnMaster> asiekierka, err crnl may be wrong
09:47:02 -!- edwardk1 has joined.
09:47:15 <AnMaster> asiekierka, you may have to read man page
09:47:16 <asiekierka> AnMaster, without you, there wouldn't be a Taxibot
09:47:33 <AnMaster> asiekierka, and configure would take forever on cygwin
09:47:39 <AnMaster> since it is written in shell script
09:48:34 <AnMaster> crnl Converts the default line termination character NL ('\n', 0x0a) to/from CRNL ("\r\n", 0x0d0a) when writing/reading on this channel
09:48:34 <AnMaster> (example). Note: socat simply strips all CR characters.
09:49:03 <AnMaster> asiekierka, might not be needed then
09:49:26 <AnMaster> err just \n and *use* crnl you mean?
09:50:35 <asiekierka> Is there something like %1 in shell scripts?
09:51:13 <AnMaster> asiekierka, $1 is first command line parameter $2 is second one
09:51:33 <AnMaster> "$@" would expand to "taxi.exe" "test2.exe"
09:51:36 <AnMaster> "$@" would expand to "taxi.exe" "test2.txt"
09:51:54 <AnMaster> asiekierka, shell scripts are way more powerful than *.bat
09:52:15 -!- asiebot has joined.
09:52:20 -!- asiebot has quit (Remote closed the connection).
09:52:45 <AnMaster> asiekierka, irc lines are terminated with CRLF
09:52:53 <AnMaster> according to http://www.irchelp.org/irchelp/rfc/chapter2.html#c2_3
09:53:04 <AnMaster> http://www.irchelp.org/irchelp/rfc/chapter2.html#c2_3_1 to be specific
09:59:20 -!- kar8nga has joined.
10:05:11 <asiekierka> oki, it terminates after a while with socat in the new version of my taxi script
10:07:02 <asiekierka> "Making Taxi programs is just like playing with ROB the Robot. You must plan out EVERYTHING."
10:07:13 -!- edwardk has quit (Connection timed out).
10:08:51 -!- asiekierka has quit (Read error: 54 (Connection reset by peer)).
10:09:09 -!- asiekierka has joined.
10:09:23 -!- taxibot has joined.
10:09:23 <taxibot> NOTICE AUTH :*** Looking up your hostname... - test no. 1
10:09:44 -!- taxibot has quit (Remote closed the connection).
10:10:38 -!- taxibot has joined.
10:10:38 <taxibot> NOTICE AUTH :*** Looking up your hostname... - test no. 1
10:10:38 -!- taxibot has quit (Client Quit).
10:12:52 <asiekierka> Now the one thing i need to do is comparisons.
10:14:25 -!- edwardk1 has quit (Read error: 110 (Connection timed out)).
10:14:54 -!- taxibot has joined.
10:14:54 <taxibot> NOTICE AUTH :*** Looking up your hostname... - test no. 1
10:14:54 -!- taxibot has quit (Client Quit).
10:16:21 <asiekierka> I'd need to ride to the gas station once and then though
10:27:35 -!- asiebot has joined.
10:27:52 <asiekierka> Yayz. I just need to check for a uppercase P.
10:29:02 <AnMaster> asiekierka, I think there may be other data starting with P
10:35:07 -!- GreaseMonkey has quit ("So, how much do you love noodles?").
10:41:39 <AnMaster> By the way I notice that Taxi is a language where everything is calculated using side effects
10:42:12 <asiekierka> A ping wouldn't have #hello 18 chars after "P"!
10:43:15 <asiekierka> About pings, i don't need to worry yet
10:44:04 <asiekierka> The thing i need to worry about is gas.
10:50:08 <asiekierka> i rode a total of 386.91 miles on a message
10:50:26 <AnMaster> asiekierka, you can easily handle fuel, just take two different numbers from Starchild, go to equals corner
10:50:49 <asiekierka> But i must convert the Chop Suey character to a number then
10:51:03 <asiekierka> And Chop Suey is in the near-exact opposite corner of the city!
10:51:14 <asiekierka> i need to parse the string with Chop Suey
10:51:22 <asiekierka> i handle gas by going to the Zoom Zoom
10:51:37 <asiekierka> the distance from the Cyclone (where i am at one point) to the Zoom Zoom is one mile
10:52:19 <AnMaster> Collator Express can discard too
10:53:01 <asiekierka> I handle gas by going to the Zoom Zoom
10:53:20 <asiekierka> since after one loop, i have ~18.5 gas and ~3 credits.
10:53:50 <asiekierka> After the char processing (so where the message comes), i have 18.48 gas and 4.55 credits.
10:54:06 <asiekierka> And someone said yesterday that 0.07 credits/mile may not be enoguh
10:54:07 <AnMaster> asiekierka, at writers depot make "b" and "a" , go to Collator Express
10:54:42 <asiekierka> Konkating an 18-char string from Chop Suey already gives me a bit of money
10:54:49 <asiekierka> and then i... throw it off at riverview bridge
10:55:02 <AnMaster> asiekierka, that gives no money
10:55:36 <AnMaster> asiekierka, I just suggested a money making scheme ;P
10:56:10 <asiekierka> Well, also, it's at the point where i'd need to ride to Writer's Depot anyway
10:56:11 <AnMaster> you can make similar schemes near go more too
10:56:33 <AnMaster> asiekierka, Writer's depot is close to Collectors express too
10:56:35 <asiekierka> And do another konkat-chop suey ride to make moneyz
10:58:20 <asiekierka> Going to Writer's Depot, pick up "#hello" and "a", go to Collator Express, put down my 18-char string then a, then go to Zoom Zoom, then go to Chop Suey, KonKat the 6 next letters, compare it at Crime Lab, if they're equal go to Writer's Depot for the output message, output it, and i'm going back to the loop.
11:01:37 <asiekierka> And then, i may show the world the first Taxi bo
11:02:20 <asiekierka> Which will just be able to say "Hello, World!"
11:03:02 <AnMaster> and several backup money making schemes depending on where in the city you are
11:04:20 <AnMaster> asiekierka, really just making it say hello world isn't worth it
11:04:47 <AnMaster> asiekierka, ok and it will need to check every line for that
11:05:03 <AnMaster> what if you write a lot of short lines?
11:05:04 <asiekierka> It checks every char for "P". I'd just need to make it check for "I"
11:05:22 <asiekierka> If it doesn't find any char left, it waits for another string and splits it
11:07:12 <asiekierka> I already lost interest in the Taxibot though
11:08:12 <AnMaster> asiekierka, next one: in RUBE?
11:09:04 <AnMaster> asiekierka, sorry, tab completion
11:09:29 -!- asiebot has changed nick to notasiebot.
11:09:46 <AnMaster> asiekierka, how did you do that?
11:10:07 <AnMaster> asiekierka, where? Isn't STDIN connected to irc?
11:10:49 <asiekierka> It just doesn't want to work on my machine a while later. I also noticed i must send anything in order to keep alive. Wait
11:10:52 <AnMaster> asiekierka, you use both at once?
11:10:58 <asiekierka> Can i pong irc.freenode.net "out of nothing"?
11:11:12 <asiekierka> AnMaster, asiebot idles and i write taxibot
11:11:31 <AnMaster> asiekierka, PONG foo.freenode.net where foo is current server name
11:11:45 <AnMaster> I seem to be on calvino.freenode.net for example
11:11:55 <AnMaster> asiekierka, anyway that hack will still only work on freenode
11:12:03 <AnMaster> most other ircds want you to do it properly
11:12:14 <asiekierka> and i already lost interest in adding PING/PONG
11:12:15 <AnMaster> asiekierka, and so will freenode sometime soon
11:12:46 <AnMaster> asiekierka, and RUBE irc bot would be fun
11:12:53 <AnMaster> asiekierka, it *should* be a mess
11:12:56 -!- KingOfKarlsruhe has joined.
11:13:08 <AnMaster> asiekierka, you would need to invent your own string handling though
11:14:06 <asiekierka> I don't want to think about string handling
11:14:17 <asiekierka> I'd like char handling more at this point
11:22:40 <asiekierka> it crashes on any other message than #hello
11:23:24 <asiekierka> I'm putting it up for anyone to explore
11:23:57 <asiekierka> i'm not doing anything on it, i'm bored with it
11:24:58 <asiekierka> Also unlike a real cellular automaton, RUBE supports rudimentary output functionality; input was planned, but has never been implemented.
11:27:51 <asiekierka> RUBE original has it marked as "planned"
11:28:00 <AnMaster> ah rube II was what I meant then
11:28:38 <fungot> asiekierka: fluid-let behaves the same as on-disk, but dammit, if it isn't
11:30:10 -!- notasiebot has quit (Read error: 104 (Connection reset by peer)).
11:30:33 <oklopol> 13:24:30 asiekierka: Also unlike a real cellular automaton, RUBE supports rudimentary output functionality; input was planned, but has never been implemented. <<< a real cellular automaton has output functionality??
11:30:54 <asiekierka> a real cellular automation is meant to be outputing by viewing it
11:30:56 <oklopol> somehow i managed to read that as lacks.
11:32:51 <asiekierka> So now i can went on and make a rubeot
11:37:17 <oklopol> would be fun if you could draw with it
11:38:06 <asiekierka> But you can quine by outputting a PNG/BMP/RAW file which is equal to the contents of the piet program
11:38:38 <oklopol> yes but that's slightly less col.
11:48:39 -!- Slereah_ has joined.
11:50:46 -!- oepy has joined.
11:51:34 -!- oepy has quit (Read error: 104 (Connection reset by peer)).
12:01:01 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
12:01:14 -!- bsmntbombdood_ has joined.
12:07:10 <AnMaster> asiekierka, hm... RUBE II should be fun to make a bot in
12:14:01 -!- jix has quit ("CommandQ").
12:25:22 -!- asiekierka has quit (Read error: 110 (Connection timed out)).
12:38:43 <AnMaster> Hm considering we seem to get more and more CPU cores I think cellular automatons will be the programming languages that dominate in the future
12:39:24 <AnMaster> after all a properly designed cellular automaton would be extremely easy to parallelise
12:40:33 <AnMaster> not rube, since it is a bully automaton
12:41:13 -!- bsmntbombdood_ has quit (Read error: 113 (No route to host)).
13:12:22 -!- oerjan has joined.
13:13:26 <oerjan> the chinese and danish may do their own swatting
13:21:30 <AnMaster> oerjan, when did it say "Nyjorsk"?
13:22:08 <olsner> oerjan: 'j' is the new 'n'
13:23:17 <oerjan> not in nynorsk it isn't
13:23:54 <oerjan> (but there is probably _some_ word where bokmål has n where nynorsk has j)
13:24:40 <oerjan> at least nynorsk tends to have more j's
13:28:51 <ehird> <asiekierka> I lost interest in Taxibot. I said.
13:28:57 <ehird> how long of an attention span does that guy have?!?!??!
13:29:17 <oerjan> could you repeat that?
13:30:20 <olsner> ehird: insufficient context...
13:30:42 <ehird> i get oerjan's joke
13:31:21 <oerjan> olsner: context = just about all of today's logs, i think
13:31:36 <olsner> well, without knowing when he gained interest there's no telling what kind of attention span we're talking about
13:31:45 <ehird> he was all hyped up about a box written in Taxi
13:31:48 <ehird> and spent ages on it blabbering
13:31:59 <olsner> well, that's longer than my average attention span
13:31:59 <ehird> he spent hours asking AnMaster all about what he needed to know to make it and such
13:32:03 <ehird> then just declared that he'd given up
13:32:07 <ehird> right in the middle of asking AnMaster questions
13:32:15 <ehird> with no justification
13:32:37 <oerjan> ehird: you mean you _don't_ have ADD? get thee out of #esoteric
13:32:51 <oerjan> attention deficit disorder
13:32:54 <ehird> asie doesn't just get bored quickly
13:32:59 <ehird> asie blabs on for ages about how his idea is jesus
13:33:03 <olsner> usually attention dies with the realization that the problem is trivial (since you have asked enough to know how to do it, it's now become trivial...) which means it's boring
13:33:06 <ehird> and then immediately
13:33:10 <ehird> says he's abandoned it
13:33:43 <oerjan> AnMaster: i don't know i guess ADHD contains ADD
13:33:56 <olsner> no-one knows exactly what's what
13:34:24 <olsner> seems it's a family of related similar problems
13:35:18 <olsner> just generally anything related to "bad" attention management (too much of it, too little of it, and usually in the wrong place)
13:35:29 <AnMaster> And I usually can stay on one project for at least a week or two
13:35:42 <AnMaster> problem is that I try to do too much at once
13:35:50 <AnMaster> having too many current projects
13:36:23 <AnMaster> I don't know what that would be called
13:37:07 -!- g0bl1n has joined.
13:37:28 <g0bl1n> hi, need some brainfuck help
13:37:57 <oerjan> then this should be the right place
13:38:09 <AnMaster> userfriendly today was really funny heh
13:38:15 <olsner> well, if on average you get 1/n work done on n projects I'd say you don't really have a problem
13:38:32 <g0bl1n> ++++++++++[>++++++++>+++++++++++>+++>+++++>++++++<<<<<-]>+++.>>>>+++++.<<<<---.-.>>++.>>++.<<<+.-----------.+.---.+++++++.+++++++++++.-.>.>.--..++++++++.
13:38:38 <AnMaster> olsner, well, long term average yes
13:38:40 <oerjan> i think #(#)brainfuck is dead, isn't it? don't think i ever been there myself
13:38:44 <g0bl1n> i have this... is there anyway to optimize it ?
13:38:44 <oklopol> i usually get 1/n^2 work done on all project.
13:38:51 <oerjan> ^bf ++++++++++[>++++++++>+++++++++++>+++>+++++>++++++<<<<<-]>+++.>>>>+++++.<<<<---.-.>>++.>>++.<<<+.-----------.+.---.+++++++.+++++++++++.-.>.>.--..++++++++.
13:38:59 <oklopol> which is when i put some of them in my todo list
13:39:09 <ehird> wow, lots of conversations at once here
13:39:14 <g0bl1n> oklopol, so you have a huge todo list ? :)
13:39:16 <olsner> I'm probably at 1/2^n or something like that
13:39:34 <oklopol> g0bl1n: yes, in which case i usually buy a new computer and erase the old todo list! :D
13:39:55 <AnMaster> oerjan, except that takes 2 parameters iirc?
13:40:01 <g0bl1n> oklopol, but if the todo list is in the cloud... pc may even burn...
13:40:09 <AnMaster> you are the mathematician after all
13:40:15 <oerjan> AnMaster: sometimes 2, sometimes 3, so why not 1
13:40:37 <oklopol> g0bl1n: there are lots of bf textgens
13:40:40 <AnMaster> oerjan, so how do you define the one parameter version?
13:40:56 <AnMaster> g0bl1n, optimise brainfuck? heh
13:41:12 -!- slereah has joined.
13:41:18 <g0bl1n> AnMaster, no, not that geezzz :)
13:41:20 <oerjan> g0bl1n: btw that brainfuck looks like the output of old egobot's txt2bf
13:41:21 -!- Slereah_ has quit (Read error: 113 (No route to host)).
13:41:29 <oklopol> time complexities in esoteric languages is an interesting subject, AnMaster
13:42:03 <oerjan> which used a java genetic program
13:42:21 <g0bl1n> oklopol, can you direct me to some of those textgens ?
13:42:23 <oklopol> oerjan: most bf textgens use that exact same output style
13:42:46 <oklopol> g0bl1n: i'll just encourage you to do it yourself :D
13:42:50 <AnMaster> g0bl1n, you could probably turn some of the longer ++++++ into loops
13:43:04 <g0bl1n> AnMaster, that's precisely what i was pretending
13:43:05 <olsner> or possibly m time spent on n projects, where m has no relation whatsoever to n
13:43:13 <oerjan> g0bl1n: that one can be run longer as a standalone program, giving somewhat better optimization
13:43:27 <oklopol> if they weren't, all <'s and >'s would be <</>>
13:44:04 <AnMaster> g0bl1n, also some (most?) bf compilers optimise the code. Such as turning ++++ into "add 4" and similiar.
13:44:45 <AnMaster> oklopol, also you could rearrange cells to get another one to do it
13:45:19 <g0bl1n> AnMaster, wouldn't that increase chars used, in this case ?
13:45:36 <oerjan> AnMaster: s/n/n,n/ in my ackermann i guess
13:46:43 <AnMaster> +++++++++++ = [-]+++[>+++<-]> Assuming you can destroy current cell and next cell.
13:46:50 <g0bl1n> ++[>++<-] increments 4 in that cell, right ?
13:47:13 <AnMaster> g0bl1n, well it will use two cells, assuming the first one is 0 at the start it will end up with 4 in the cell after
13:47:44 <AnMaster> that is assuming both cells are 0 to start with
13:48:05 <AnMaster> oklopol, true, but for higher numbers it can be shorter
13:48:17 <oklopol> yes, but there are no higher numbers :)
13:48:22 <g0bl1n> maybe i can try using less cells, and more loops ?
13:48:49 <AnMaster> g0bl1n, another idea that may be worth checking. How about wrapping downwards? Is that a shorter or longer path
13:49:01 <AnMaster> considering you have wrapping unsigned 8-bit cells in bf
13:49:08 <g0bl1n> AnMaster, sorry, didnt understand
13:49:28 <AnMaster> a single - is the same as 255 + after each other
13:49:48 <AnMaster> in all major bf implementations at least
13:50:56 <oerjan> AnMaster: all the chars output are < 128 so i doubt wrapping will help here
13:51:07 <g0bl1n> since most all of my used ascii codes are under 100, would it be good ?
13:51:52 <g0bl1n> bf is great for brain_fucking !! great :)
13:52:54 <AnMaster> g0bl1n, Sure there is nothing more you could move into initial loop?
13:53:41 <AnMaster> apart from that It seems all +++++ or ----- sequences would be longer written as loops
13:53:52 <oerjan> i wonder if switching around the order of the cells might give a shorter program, because the text contains all upper case, then all lower case, then all numbers
13:53:58 <g0bl1n> seems so , doesnt it ?
13:54:20 <oerjan> and the >>>> used to pass between two different upper case cells seems a bit long
13:54:33 -!- Hiato has joined.
13:55:02 <AnMaster> g0bl1n, also what does the message it printed mean?
13:56:00 <g0bl1n> this is an event, happening in November, a gathering of developers
13:56:36 <g0bl1n> as internet servide provider
13:56:51 <AnMaster> yes, but why would they want to see brainf*ck
13:57:15 <g0bl1n> someone posted an idea to convert it to bf :)
13:57:39 -!- habnabit has quit (Read error: 110 (Connection timed out)).
13:57:59 <AnMaster> btw, why is it called "golfing". Seems pretty strange
13:58:28 <ehird> you get to the hole (target program)
13:58:31 <g0bl1n> golfing as, the least chars one can get, like golf
13:58:32 <ehird> in as litle puts as possible
13:59:05 <ehird> -- http://www.golfscript.com/golfscript/
13:59:13 <ehird> but yeah that confused me too
13:59:35 <AnMaster> I'm no huge golf fan so didn't think of that initially
13:59:47 <g0bl1n> the thing is, we all user severall languages, so what about reducing it to a least common denominator ? bf :)
14:00:54 <AnMaster> g0bl1n, nah, something like lambda calculus with output would be equally low common denominator but incompatible with bf
14:01:07 <ehird> I like how anagolf steals the ICFP reward sentences in its language rankings:
14:01:09 <ehird> [[Ruby is the programming tool of choice for discriminating golfers.
14:01:09 <ehird> GolfScript is a fine programming tool for many courses.]]
14:02:04 <g0bl1n> ehird, I'd say RoR, not Ruby itself :)
14:02:29 <ehird> Because everything is a web application.
14:03:31 <g0bl1n> RoR is becoming a no brainer. There are lots of RoR programmers that can barelly produce ruby code
14:03:57 <g0bl1n> how can i represent 2^6 in bf ?
14:04:16 <ehird> g0bl1n: That is not a good thing, btw.
14:04:25 <ehird> And RoR is pretty awful as web frameworks go. :-P
14:04:28 <ehird> As for 2^6, not sure
14:05:08 <oerjan> g0bl1n: see http://esoteric.voxelperfect.net/wiki/Brainfuck_constants
14:05:48 <g0bl1n> oerjan, that is cool, ty !!
14:06:39 <ehird> oerjan: why not link tothe esolangs.org version?
14:07:06 <ehird> http://esoteric.voxelperfect.net/forum/kareha.pl/1217593391/l50 <- "befunge compiler"
14:07:44 <oerjan> i read it as esoteric.voxelperfect.net myself
14:09:48 <ehird> the compiler just bundles the interp
14:10:22 -!- slereah has quit (Read error: 113 (No route to host)).
14:12:13 <oerjan> oh there is an RSS feed for the forum
14:12:21 -!- Slereah_ has joined.
14:12:33 <oerjan> maybe i can actually get to read it regularly then
14:14:22 <ehird> oerjan: Nobody ever posts.
14:14:40 <ehird> Thread #5 is from -06-. (Not emphasis, incomplete date format.,)
14:14:41 <oerjan> not often, but sometimes
14:14:59 <ehird> Thread 10 is from 2007-10-.
14:15:42 <oerjan> and RSS might help remind me that it exists, and if everyone did that perhaps there would be more posts
14:16:14 -!- oepy has joined.
14:16:18 <oepy> ['__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']
14:16:39 <ehird> *epy unset.func_globals
14:16:39 <oepy> {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__file__': 'onelineesobot.py', '__doc__': None}
14:16:41 <ehird> *epy unset.func_globals['__im'+'port__']
14:16:42 <oepy> KeyError: '__import__'
14:16:49 <ehird> *epy unset.func_globals['__builtins__']['__im'+'port__']
14:16:50 <oepy> TypeError: 'module' object is unsubscriptable
14:16:58 <ehird> *epy unset.func_globals['__builtins__'].__getattr__('__im'+'port__')
14:16:59 <oepy> AttributeError: 'module' object has no attribute '__getattr__'
14:17:04 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:17:05 <oepy> <built-in function __import__>
14:19:33 -!- kar8nga has quit ("Leaving.").
14:20:30 * oerjan hopes it will work better than the OOTS feed
14:23:49 -!- oepy has quit (Remote closed the connection).
14:24:34 -!- oepy has joined.
14:24:42 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:24:42 <oepy> <built-in function __import__>
14:24:47 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')('sys')
14:24:47 <oepy> <module 'sys' (built-in)>
14:24:52 -!- oepy has quit (Remote closed the connection).
14:25:44 -!- oepy has joined.
14:25:45 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:25:46 <oepy> <built-in function __import__>
14:25:48 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')('sys')
14:25:48 <oepy> <module 'sys' (built-in)>
14:25:57 -!- oepy has quit (Remote closed the connection).
14:26:44 -!- oepy has joined.
14:26:49 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:26:49 <oepy> NameError: global name 'f' is not defined
14:27:33 -!- oepy has quit (Remote closed the connection).
14:27:43 -!- oepy has joined.
14:27:44 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:27:45 <oepy> NameError: global name 'f' is not defined
14:29:51 -!- oepy has quit (Remote closed the connection).
14:29:56 -!- oepy has joined.
14:30:02 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:30:02 -!- oepy has quit (Remote closed the connection).
14:30:36 -!- oepy has joined.
14:30:37 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:30:38 <oepy> NameError: global name 'f' is not defined
14:31:33 -!- oepy has quit (Remote closed the connection).
14:31:42 -!- oepy has joined.
14:31:43 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:31:44 <oepy> TypeError: f() takes exactly 4 arguments (3 given)
14:32:36 -!- oepy has quit (Remote closed the connection).
14:32:46 -!- oepy has joined.
14:32:47 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')
14:32:48 <oepy> <built-in function __import__>
14:32:51 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')('sys')
14:32:52 <oepy> <module 'sys' (built-in)>
14:32:56 -!- oepy has quit (Remote closed the connection).
14:33:17 -!- oepy has joined.
14:33:20 <ehird> *epy unset.func_globals['__builtins__'].__getattribute__('__im'+'port__')('sys')
14:33:21 <oepy> <module 'sys' (built-in)>
14:33:47 <oepy> <built-in function __import__>
14:33:55 <ehird> *epy __import__('a')
14:33:56 <oepy> ImportError: No module named a
14:35:14 <ehird> *epy ((lambda: 2)(), 3)[1]
14:35:22 <ehird> *epy ((lambda: 2)(), 3)[1]
14:35:53 <oepy> <built-in function __import__>
14:35:56 <oepy> <built-in function __import__>
14:35:59 <ehird> *epy __import__('a')
14:36:00 <oepy> ImportError: No module named a
14:36:03 -!- oepy has quit (Remote closed the connection).
14:36:14 -!- oepy has joined.
14:36:17 <ehird> *epy __import__('a')
14:36:18 <oepy> ImportError: No module named a
14:36:43 -!- oepy has quit (Remote closed the connection).
14:37:01 -!- oepy has joined.
14:37:16 <ehird> *epy __import__('a')
14:37:16 <oepy> TypeError: vars() argument must have __dict__ attribute
14:37:27 -!- oepy has quit (Remote closed the connection).
14:37:41 -!- oepy has joined.
14:37:47 <ehird> *epy __import__('a')
14:37:47 <oepy> ImportError: No module named a
14:38:10 <ehird> *epy dir(__import__)
14:38:11 <oepy> ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__str__']
14:38:19 <oepy> TypeError: compile() takes at least 3 arguments (1 given)
14:38:23 <ehird> *epy compile('a', '', 'expr')
14:38:23 <oepy> ValueError: compile() arg 3 must be 'exec' or 'eval' or 'single'
14:38:30 <ehird> *epy dir(compile('a', '', 'eval'))
14:38:31 <oepy> ['__class__', '__cmp__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
14:43:56 <oepy> AttributeError: 'str' object has no attribute 'fail'
14:44:13 <ehird> oerjan: trying to fix this
14:44:19 <ehird> right now you can wipe my home dir
14:47:29 -!- oepy has quit (Remote closed the connection).
14:48:27 <oerjan> what i need is a proper Death Ray Satellite, so that i can wipe your _home_
14:49:21 <ehird> then i will eat your home.
15:09:17 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | Sukoshi is *firmly* a Lisp girl, anyways..
15:45:02 -!- M0ny has joined.
15:45:05 -!- kar8nga has joined.
15:45:30 -!- Hiato has quit ("Leaving.").
15:45:30 -!- Mony has quit (Read error: 110 (Connection timed out)).
15:45:30 -!- g0bl1n has quit ("Leaving").
17:05:03 -!- bsmntbombdood has joined.
17:05:04 -!- Slereah_ has quit.
17:08:51 -!- kar8nga has left (?).
17:16:55 -!- Slereah_ has joined.
23:53:44 -!- clog has joined.
23:53:44 -!- clog_ has joined.