00:20:22 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
00:20:33 -!- CakeProphet has joined.
00:29:45 -!- digital_me has joined.
00:41:12 -!- digital_me has quit ("Lost terminal").
00:43:31 -!- RodgerTheGreat has joined.
00:49:08 -!- Asztal has joined.
00:53:36 <Asztal> happy new year! for me, anyway ;)
00:55:17 <RodgerTheGreat> cool! My new year isn't for a couple of hours. What's it like in the future?
00:57:01 <Asztal> What are cars? Oh, those old things!
01:01:43 <GregorR> New Years loses some of its luster when 99% of the people I talk to online have already been through it :P
01:02:12 <Asztal> Yeah, it's old by the time you have it :(
01:02:45 <Asztal> Oh well, you get Castlevania: Portrait of Ruin 3 months before us
01:07:00 <RodgerTheGreat> I'm not really sure how you can say a castlevania sequel is worth as much as a glimpse into... THE WORLD OF TOMORROW!
01:24:33 <Asztal> well, for me, a castlevania sequel would be a glimpse into the world of tomorrow
01:47:05 -!- Asztal has quit (Read error: 60 (Operation timed out)).
02:24:00 -!- oerjan has quit (sterling.freenode.net irc.freenode.net).
02:24:00 -!- GregorR has quit (sterling.freenode.net irc.freenode.net).
02:24:01 -!- Sukoshi has quit (sterling.freenode.net irc.freenode.net).
02:24:01 -!- tgwizard has quit (sterling.freenode.net irc.freenode.net).
02:24:01 -!- pikhq has quit (sterling.freenode.net irc.freenode.net).
02:24:01 -!- sekhmet has quit (sterling.freenode.net irc.freenode.net).
02:24:02 -!- sp3tt has quit (sterling.freenode.net irc.freenode.net).
02:24:03 -!- mtve has quit (sterling.freenode.net irc.freenode.net).
02:24:03 -!- RodgerTheGreat has quit (sterling.freenode.net irc.freenode.net).
02:24:03 -!- CakeProphet has quit (sterling.freenode.net irc.freenode.net).
02:24:03 -!- cmeme has quit (sterling.freenode.net irc.freenode.net).
02:24:04 -!- puzzlet has quit (sterling.freenode.net irc.freenode.net).
02:24:05 -!- lament has quit (sterling.freenode.net irc.freenode.net).
02:24:05 -!- pgimeno has quit (sterling.freenode.net irc.freenode.net).
02:24:06 -!- SimonRC has quit (sterling.freenode.net irc.freenode.net).
02:24:06 -!- tokigun has quit (sterling.freenode.net irc.freenode.net).
02:24:06 -!- EgoBot has quit (sterling.freenode.net irc.freenode.net).
02:24:06 -!- bsmntbombdood has quit (sterling.freenode.net irc.freenode.net).
02:30:06 -!- mtve has joined.
02:30:06 -!- sekhmet has joined.
02:30:06 -!- sp3tt has joined.
02:30:06 -!- GregorR has joined.
02:30:06 -!- pikhq has joined.
02:30:06 -!- tgwizard has joined.
02:30:06 -!- Sukoshi has joined.
02:30:06 -!- lament has joined.
02:30:26 -!- oerjan has joined.
02:30:29 -!- RodgerTheGreat has joined.
02:30:29 -!- CakeProphet has joined.
02:30:29 -!- cmeme has joined.
02:30:29 -!- puzzlet has joined.
02:30:29 -!- pgimeno has joined.
02:30:29 -!- tokigun has joined.
02:30:29 -!- SimonRC has joined.
02:30:34 -!- EgoBot has joined.
02:30:34 -!- bsmntbombdood has joined.
02:35:23 -!- oerjan has changed nick to oerjan_.
02:35:50 -!- oerjan_ has changed nick to oerjan.
02:37:21 <CakeProphet> BUT IT'S A SECRET SO NO TELL WHAT IT DOES LOLOL
03:05:20 -!- ivan` has quit (Read error: 54 (Connection reset by peer)).
03:06:14 -!- ivan` has joined.
03:21:53 -!- tgwizard has quit (Remote closed the connection).
04:08:34 -!- oerjan has quit ("Good night.").
04:29:33 <CakeProphet> Can EgoBot have interpreters made in any language?
04:29:48 <pikhq> It executes the interpreters seperately.
04:29:58 <pikhq> Calls exec() and all that.
04:30:51 <pikhq> You could have interpreters in Brainfuck for all it cares.
04:32:41 <CakeProphet> When I finish the interpreter for "stew" I'd like to put it on EgoBot... as I'm too lazy to code up an IRC bot at the moment.
04:33:08 <pikhq> Download the EgoBot source code, fiddle with it yourself.
04:33:32 <CakeProphet> hmmm... I can't read C well, but I'll try that as well.
04:43:39 <CakeProphet> BF should have syntax highlighting... all the eight characters would be colors of the rainbow.
04:45:34 -!- calamari has joined.
04:52:43 <pikhq> [Does EgoBot do IRP? No? Okay.]
05:48:01 <CakeProphet> trying to design a stack-of-queues-based language that actually... works. O.o
06:09:19 <RodgerTheGreat> CakeProphet: I can provide you with a basic IRCbot skeleton for Java, if you want it
06:10:17 <CakeProphet> I think for the moment I'll just bolt it onto EgoBot (once I test it and get it running)
06:10:48 <CakeProphet> I don't have much of a desire for an IRC bot anyways... except possibly for some odd interpreters.
07:34:42 -!- freshness has joined.
07:36:11 -!- freshness has left (?).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:04:46 -!- calamari has quit (Client Quit).
08:13:16 -!- RodgerTheGreat has quit.
08:14:02 <CakeProphet> Stew needs only about 4 or 5 different commands and some built-in functions... looks pretty lightweight.
08:17:25 <CakeProphet> Hello World would be om!"Hello World"!?spam?%
08:18:50 <CakeProphet> om!?spam?"Hello World"%O would work as well
09:47:58 <GregorR> To celebrate the new years ... we bought diet coke and mentos ^^
10:36:52 <CakeProphet> hehe... is it bad taste to include a builtin function in an esolang that executes Python code in a string? :D
10:51:24 -!- anonfunc has joined.
11:36:22 -!- tgwizard has joined.
12:23:55 -!- oerjan has joined.
12:24:24 <CakeProphet> oerjan, I found a nifty parsing library for Python that looks almost like BNF
13:36:31 <CakeProphet> See anything in the grammar definitions that's making it fuck up?
13:36:45 <CakeProphet> all the debugging stuff is at the bottom too.
14:28:02 <CakeProphet> There needs to be a funky Esoteric Parsing Language.
14:28:46 <oerjan> regular expression are pretty esoteric, really.
14:31:28 <CakeProphet> I just can't figure out why my grammar is screwing up on the program.
14:31:42 <CakeProphet> when... looking at it... it seems like it would work fine.
14:32:02 <oerjan> could you give a short example that breaks?
14:34:33 <CakeProphet> In Stew everything is a single character... except for things enclosed in quotes or ?'s
14:35:18 <CakeProphet> any character that doesn't serve a special purpose is a "symbol"...
14:36:28 -!- jix_ has joined.
14:37:09 <CakeProphet> and anything in ?'s is a symbol (what a symbol becomes depends on the context... it's a function if possible, otherwise an integer, otherwise a floating point number, otherwise a string)
14:40:35 <CakeProphet> The layout is a stack of queues (a stew)... so all symbols (which are either functions, integers, floats, or strings, or bools) are put into the queue on the top of the stack.... and the builtin commands manipulate values in the stew.
14:41:02 <CakeProphet> It's like a weird variant of stack based languages. :D
14:50:59 -!- Sph1nx has joined.
14:51:22 -!- Sph1nx has quit (Connection reset by peer).
15:26:56 <oerjan> i haven't solved it, but a minor point: CharsNotIn matches a string, not a single character.
15:35:06 <CakeProphet> it looks like it is looking for an exact match size or something.
15:35:16 <CakeProphet> Like... how does it know it's 8 chars away?
15:35:32 <oerjan> what it _seems_ to me from reading the program, is that the OneOrMore barfs after reading one expression.
15:36:52 <CakeProphet> Group() is supposed to convert the match to a list of all repetitions.
15:37:15 <oerjan> yes, but if OneOrMore has a bug, then it would completely explain the debugging output.
15:39:13 <CakeProphet> pyparsing is third party... and pretty well used.
15:39:36 <CakeProphet> and I tried removing Group() to see what happend... same thing.
15:40:35 <oerjan> have you tried replacing ?spam? with a one-character command?
15:41:09 <CakeProphet> lemme change the name of the output function to "o" and give it a shot.
15:41:24 <oerjan> and, also try an op definition with just a single expression.
15:41:52 <oerjan> (but not at the same time :) )
15:43:51 <CakeProphet> Matched {Suppress:("!") op name op definition Suppress:(";")} -> ['m', ['0', '^']]
15:44:32 <CakeProphet> so... it could possibly the string that's borking it up.
15:45:59 <oerjan> yes, that might do it too, and might give the same errors.
15:47:06 <oerjan> do you think it could be a problem that STRQUOTE is a two-element string?
15:47:35 <oerjan> if QuotedString accepts only a single quotechar
15:48:30 <CakeProphet> hmmm... I remember saying it could be two.
15:48:37 <CakeProphet> but... I'll change it to one and see what happens.
15:49:15 <CakeProphet> Now I'm glad I made big glaring capital letter constants.
15:50:01 <CakeProphet> hmm... now it parses with just the one quote :D
15:50:26 <CakeProphet> now the bug-handling is safely back in my realm...
15:50:36 <oerjan> elementary, my dear CakeProphet :)
15:51:47 <oerjan> hah, you should have seen all the syntax and type errors I got after updating IrpBot tonight.
15:52:32 <CakeProphet> ((['m', (['0', 'Hello World', '^'], {})], {}), 0, 18)
15:52:49 <oerjan> fortunately the Haskell compiler caught most of the bugs. Hooray for static typing. :)
15:53:26 <CakeProphet> heh... errors involving type are usually pretty easy to fix.
15:54:20 <CakeProphet> {'rand': <function rand at 0x00AEFD70>, 'm': !m - 0, '+': <function add at 0x00AEFBB0>, '*': <function mul at 0x00AEFC30>, '-': <function sub at 0x00AEFBF0>, '/': <function div at 0x00AEFCB0>, 'lolno': <function neg at 0x00AEFB70>, 'o': <function out at 0x00AEFDB0>, 'in': <function inp at 0x00AEFDF0>, 'mod': <function mod at 0x00AEFCF0>, '=': <function eq at 0x00AEFB30>, 'round': <function...
15:54:22 <CakeProphet> ...round at 0x00AEFD30>, '^': <function exp at 0x00AEFC70>}
15:54:37 <oerjan> those {} could need some pruning. Missing some .suppress'es?
15:54:50 <CakeProphet> the {} are for if I specify names for certain parts.
15:55:32 <CakeProphet> good for when you have a bunch of syntical parts with no real position to them.
15:57:35 <CakeProphet> see... with some names added... my confounding data structure becomes:
15:57:37 <CakeProphet> ((['m', (['0', 'Hello World', '^'], {})], {'opname': [('m', 0)], 'opdef': [((['0', 'Hello World', '^'], {}), 1)]}), 0, 18)
15:58:07 <CakeProphet> not sure what the 0 thereis next to "m"...
15:58:54 <CakeProphet> so if I grab the syntax by name... I have a handy reference to position.
15:59:06 <CakeProphet> Damn... they should have wrapped all this in a class... it gets easily confusing.
16:01:10 <oerjan> reading the logs - i am sure someone must have made an irc bot in python you can snatch.
16:01:28 <CakeProphet> it's just the string representation of the class... so it looks like a crapload of tuples, lists, and dictionaries.
16:06:00 <oerjan> Well, I am out of the house.
16:07:42 -!- oerjan has quit ("Leaving").
16:13:07 -!- RodgerTheGreat has joined.
16:20:49 <CakeProphet> once I've finished it and bug tested it I'ma get up on IRC somehow.
16:26:52 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- Leading Edge IRC").
16:46:47 -!- Asztal has joined.
17:07:00 -!- Sph1nx has joined.
17:28:57 -!- Asztal has quit (Read error: 113 (No route to host)).
17:29:24 -!- Sph1nx has quit (Connection timed out).
17:41:53 -!- Sph1nx has joined.
17:46:53 -!- Sph1nx has quit (" !").
17:55:07 -!- ihope_ has joined.
17:56:40 <ihope_> What's SOAP looking like so far?
17:59:35 <RodgerTheGreat> there was some discussion of using FORTH to write portions of the kernel.
17:59:50 <RodgerTheGreat> others want to just write a glass interpreter in C as the kernel
18:01:03 <ihope_> Doesn't the kernel go on top of SOAP?
18:01:47 <ihope_> SOAP is the computer, at least in theory. In practice, SOAP is the emulator.
18:03:31 <RodgerTheGreat> we were thinking of the OS more as an interpreter for an esolang that will be used to host other interpreters. The base interpreter itself is what creates the hardware interface, memory management, etc, and is the kernel
18:04:08 <ihope_> And if we're writing in Glass, SOAP is the basic set of classes.
18:05:42 <RodgerTheGreat> you can't really synthesize things like low-level hardware access by writing them *in* glass.
18:07:17 <ihope_> Yes, SOAP would be the builtins.
18:07:54 <ihope_> SOAP is the builtins, and the OS is the code that uses them.
18:08:19 <pikhq> In essence, we've got the whole OS, kernel and all, in an esolang.
18:08:26 <pikhq> (C is an esolang, IMO. :p)
18:08:30 <RodgerTheGreat> alright, I guess you could go with that definition. Ultimately they're two parts of a single program
18:08:58 <ihope_> Well, you could have multiple operating systems written for SOAP.
18:09:01 <RodgerTheGreat> C is an esolang in the same sense as BASIC is an esolang.
18:09:32 <RodgerTheGreat> If you do horribly evil obfuscations and play with the limitations of your compiler/interpreter, it can be an esolang
18:09:38 <ihope_> Aren't languages only considered esolangs if they're meant to be esolangs?
18:09:57 <ihope_> Maybe some horrible subset of C that plays with the limitations of your compiler/interpreter...
18:10:21 <pikhq> ihope_: That's the best part of C!
18:10:31 <pikhq> (sorry; I've been doing IOCCC coding recently)
18:10:33 <ihope_> It has horrible subsets?
18:10:36 <RodgerTheGreat> I don't personally think C is very esoteric... painful, maybe... but the IOCC seems to indicate it can be used as an esolang
18:11:05 <pikhq> It at least includes an esolang.
18:11:19 <pikhq> (if you don't think the preprocessor is an esolang, you've not done esoteric coding)
18:11:36 -!- Arrogant has joined.
18:11:53 <ihope_> How about we call the operating system itself PAOS?
18:12:05 <ihope_> It conveniently ends with "OS", after all.
18:13:19 <RodgerTheGreat> and yes, the C preprocessor qualifies as an esolang, even if C proper doesn't
18:13:33 <ihope_> pikhq: hey, if I backronymmed SOAP, I can do it with PAOS!
18:13:45 <RodgerTheGreat> CakeProphet: this is why I went the non-acronymic route with my suggestion of "Framework"
18:14:04 <CakeProphet> having a declaritive phase and an imperitive phase?
18:14:19 <ihope_> Probably Atrocious Operating System?
18:15:06 <RodgerTheGreat> C is pain. They have a name for people like you- Masochists.
18:15:33 <RodgerTheGreat> this does, of course, describe most esolang enthusiasts as well.
18:15:42 <CakeProphet> There should be an esolang with one instruction... and a preprocessor with 90 or so commands.
18:16:27 <ihope_> CakeProphet: after proprocessing, wouldn't you just end up with a bunch of that one instruction?
18:18:04 <CakeProphet> the preprocessor can do anything it wants to the code before executing the one-instructioned code.
18:18:36 <ihope_> But isn't preprocessing done at compile-time?
18:18:53 <pikhq> Cpp is, after all, Turing complete.
18:19:05 <pikhq> ihope_: It can be done seperately. ;)
18:19:30 <ihope_> CakeProphet: well, if you want to compile the program every time you run it...
18:19:46 <pikhq> bsmntbombdood: man cpp
18:20:17 <ihope_> Maybe the preprocessor actually does just turn the code around, except output is possible via syntax errors.
18:20:57 <pikhq> The preprocessor is a seperate macro language, which happens to be designed to work with C-style syntax.
18:21:14 <pikhq> (as Gregor has proven, it can be applied to more than just that. . . See mbf.)
18:35:23 <ihope_> ...So, should we start thinking about SOAP?
18:36:04 <ihope_> Maybe there's a Device class and a Generator class, and invoking a Generator gives you a random Device.
18:36:21 <ihope_> That is, a Device that represents a random device.
18:37:04 <ihope_> So you just keep invoking the Generator randomly until you find a new device, then you store that device away somewhere.
18:37:35 <ihope_> The classes that should be included in SOAP.
18:38:16 <ihope_> Actually, maybe scrap the Generator and have each Device created be a random one.
18:40:33 <CakeProphet> ....so the OS would pick random devices to write too when someone wants to write to a decibe???
18:41:28 <ihope_> The OS would be constantly pulling random devices and storing them somewhere.
18:41:47 <ihope_> If it ever met a device it already had, it would just throw it away and keep looking for new ones.
18:42:54 <ihope_> Am I making any more sense than you are?
18:47:33 <bsmntbombdood> This manoeuvre, then, is ever precipitate -- and yet in the remotely antique.
18:59:00 <ihope_> The kind fodder takes architects.
18:59:21 <ihope_> (The above sentence was stolen from some bot in some channel on some server belonging to some network.)
18:59:39 <bsmntbombdood> The worm had brought me as I had seen in this little opportunity to know her whole of no great beauty.
18:59:55 <ihope_> (Specific(al)ly, Ami in #lobby on irc.aftran.com:9999 of Sine-Waves.)
19:01:28 <ihope_> ¿Por qué me comes? Quiero que comas mi perro.
19:03:14 <bsmntbombdood> Truff as had by at one-lessel. I prect, nor A. A my conly unateremoduskips, wered by no, le in you arger some trapen of floss
19:12:59 <ihope_> But alas, my truffles had not yet sprung into routers! If the co-ax need not be run, let my basement fly beside his windmills.
19:24:25 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
19:24:42 -!- cmeme has joined.
19:25:59 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
19:27:28 -!- cmeme has joined.
19:42:06 -!- Arrogant has quit ("Leaving").
20:20:05 -!- calamari has joined.
20:20:56 -!- Asztal has joined.
20:22:15 <GregorR> I was thinkin' about the EsoOS ...
20:22:51 * calamari has rudimentary rendering taking place
20:25:43 * pikhq has no idea what that is
20:32:48 <Asztal> Visual studio 2005 service pack 1 destroyed my windows install :(
20:33:03 <Asztal> I can code with notepad + msbuild, I guess
20:34:31 <ihope_> Asztal: is Visual Studio a Microsoft product?
20:35:51 <pikhq> GregorR: What the hell *is* Rogue?
20:36:03 -!- oerjan has joined.
20:36:08 <ihope_> Rogue -> Hack -> NetHack.
20:36:11 <pikhq> ihope_: Very funy.
20:36:24 <pikhq> . . . Seriously? A nethack FS?
20:36:30 <ihope_> Specifically, it's a Roguelike.
20:36:30 <pikhq> WTF is wrong with you, Greg?
20:37:02 <ihope_> GregorR: didn't you say I was the only one who ever abbreviated your name that way?
20:37:05 <CakeProphet> if it had little ASCII letters that moved around.
20:37:21 <ihope_> CakeProphet: no, the letters won't be ASCII.
20:37:21 <CakeProphet> I don't think it make it terribly USEFUL or conceptually
20:37:39 <RodgerTheGreat> is the idea that you'd have to send your guy down to a specific level of the dungeon for him to find your files?
20:37:41 * pikhq imagines a filesystem set up as a series of potentially-interconnected rooms. . .
20:37:54 <ihope_> RodgerTheGreat: well, of course.
20:38:04 <ihope_> They'd be written in the dust on certain unknown levels.
20:38:15 <pikhq> It'd be so damned impossible to write out a traditional path.
20:38:19 <ihope_> So you'd really want levitation.
20:38:20 <CakeProphet> ...well... we could implement it as a second GUI... for kicks.
20:38:37 <pikhq> There'd be no actual *tree* in such an FS.
20:38:45 <ihope_> pikhq: certainly true.
20:39:00 <CakeProphet> I thought we were using a flat-ish memory layout?
20:39:18 <ihope_> Don't we want actual hardware access?
20:39:46 <ihope_> I mean really, doesn't SOAP come first? You have to have a language before you can write programs.
20:45:44 -!- oerjan has quit ("leaving").
20:46:21 -!- tgwizard has quit (Remote closed the connection).
20:50:44 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
20:51:17 <ihope_> ...is a spec for SOAP?
20:51:18 <CakeProphet> to do is lay out a universally agreed design goal.
20:51:41 <CakeProphet> We seem to be going at this kind of chaotically... without a clear-cut idea in mind. :D
20:52:06 <CakeProphet> as GregorR said before, we can't make up our damn minds. :P
20:52:43 <CakeProphet> (on a sidenote: I have some experience in the realm of text-based game programmer... so I could help make a Rogue GUI :D :D :D )
20:53:23 <CakeProphet> it's just, I can't do much ofanything else.
20:54:10 <ihope_> In SOAP, your basic classes'll be A, S, V, and D.
20:54:29 <ihope_> A, S and V will be what they are in plain old Glass.
20:55:10 <ihope_> D, when created, will look for a random device that hasn't yet been attached to an object, and then will attach that device to the new object.
20:55:34 <ihope_> Then D will have methods that somehow interact with the device.
20:55:45 <CakeProphet> Well I mean... before SOAP... we need to figure out what the hell we're doing... with everyone sharing their idea of "how it should work", and then go from there.
20:56:38 <CakeProphet> There doesn't seem to be much of a set consensus of what to do.
20:57:03 <ihope_> Working on SOAP first doesn't seem like a bad idea to me...
20:58:42 -!- oerjan has joined.
20:59:16 <ihope_> Well, okay then. How the OS'll work.
20:59:48 <ihope_> You know, Glass doesn't really provide any mechanism for loading code and running it. Should we add a class that does that to SOAP?
21:02:31 <CakeProphet> Basically, we're either going to have to A. totally redefine any esolang we come across or B. write a new one.
21:02:44 <CakeProphet> It's hard to compromise between high and low level.
21:04:02 <CakeProphet> something to write the kernel with... to create all of this interfacing with hardware and stuff.... and then a Glass interpreter to go on top of it.
21:13:40 * pikhq has fun playing SMB3
21:14:15 <pikhq> One person coding the whole thing has a wonderful advantage. ;)
21:17:41 <ihope_> The kernel goes on top of the platform, doesn't it?
21:18:55 <ihope_> The platform's what provides the hardware access in the first place, then the kernel is responsible for loading programs and running them.
21:42:46 <oerjan> That nonsense conversation between ihope and bsmntbombdood gives me a concept idea for an esolang.
21:45:01 <oerjan> a language in which the program _must_ look like a particular style of nonsense (unlike .gertrude where it _can_ do that, but doesn't have to.)
21:47:23 <oerjan> On the other hand, making a language that is fairly grammatically correct english, may mean it is AI-complete for the compiler to determine whether it actually is nonsense.
21:49:14 <oerjan> Perhaps it could use a large dictionary organized by subjects, and then demand that your sentences mix completely different subjects.
21:50:24 <oerjan> I suppose that could be organized by having the subject of a word determine its programmatical meaning.
21:51:15 <bsmntbombdood> I be thislacket foor of my tilling have theades of litt, in timpetted mommuchin
21:52:12 <ihope_> The aesthetic value of the square root of the area of a butterfly's wing is roughly equal to that of raising a child on motor oil while building a bridge over the Pacific Ocean.
21:52:31 <bsmntbombdood> mone tato cour ving the vereffeltondescard sory do an peolooken-ble lumbecame
21:52:49 <oerjan> well, nonexistent words might work too, but they should not be completely prevalent. Besides that might require the dictionary to be enormous just to check that the programmer doesn't cheat by making sense with rare words.
21:56:39 <bsmntbombdood> A door and my views rendered sufficiently near proximity; and I fell into unpleasant misrepresentations, and, in the raven-black, the brief r e-sinking into a peep at least I mean Moissart and were right, -- to his voice, which you have I perceived that in the wire so forth.
21:57:43 <oerjan> hm, that dungeon filesystem - abstracting it would mean a filesystem organized as a mainly _undirected_ graph.
21:59:36 <ihope_> Just make sure all the verbs are missing the objects they need to make sence.
21:59:51 <oerjan> oh, and labyrinthesse would mean: Your program can only remember a _limited_ number of exits, which are too few to get back from certain files :)
21:59:57 <CakeProphet> the further you go into the whole... the more different stuff pops up.
22:00:17 <ihope_> Or they have extra objects that don't make sense.
22:00:29 <ihope_> We drove of the router, but then he threw.
22:00:39 <oerjan> and of course there would be _some_ monsters.
22:01:09 <ihope_> Why did he do from the trees? I don't know through it.
22:01:37 <oerjan> Hm, maybe we could combine the two current subjects. A filesystem that is a dungeon of meaningless connections.
22:02:40 <ihope_> Meaningless connections?
22:03:08 <ihope_> Like the only door from the starting room leading straight into Moloch's sanctum?
22:03:14 <oerjan> To reap the philosopher's stone, first go to the bird's liquorice nest and fiddle the button of doom.
22:03:56 <oerjan> No, I mean that the actions necessary to get from one file to the other would have to be meaningless sentences like my previous one.
22:08:39 <CakeProphet> haha... so that would be the files "path" ?
22:28:34 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:58:22 <CakeProphet> After arduous bug fixing... my programming language finally printed its first program.
22:59:32 <CakeProphet> Now I just need to get it on IRC so I can play around with it here...
23:01:05 * pikhq has a friggin' stupid way of storing directory names. . .
23:01:12 <CakeProphet> but I'm not sure it's turing complete... it doesn't really have any buiilt-in form of conditional... although there might be an interesting bypass to it.
23:01:14 <pikhq> Just have, on disk, a single root dir.
23:01:20 <pikhq> Story directorys in the pathname.
23:02:29 <pikhq> Thus, we've got a hole with directories as an additional abstraction.
23:03:23 <pikhq> Your mom is just an abstraction!
23:11:43 <CakeProphet> It's more mishmashy than any stack-based language I've seen.
23:16:03 <CakeProphet> since the interpreter has the source code stored in it :D
23:16:40 <CakeProphet> pikhq, It's a stack-of-queues based language...
23:17:19 <CakeProphet> Next up is a queue-of-stacks based language...
23:17:29 <CakeProphet> and possibly a mismatch... for swapping between the two witha command.
23:21:25 <CakeProphet> hmmm... the only problem is that boolean values are Untrue, Unfalse, and Unanything.
23:21:46 <CakeProphet> but... they just convert directly to True, False, and None in Python... so when you do an output of them... they don't come out in their glorified form.
23:22:44 <oerjan> So define classes for them.
23:23:05 <CakeProphet> but... that's a lot more work than I feel like doing.
23:23:26 <CakeProphet> bool isn't directly subclassable... and it'll take a while to fine-tune all the specifics.
23:24:27 <oerjan> well then, write an output function instead.
23:24:49 <CakeProphet> I'll just do some conditionals at the output function.
23:25:55 <bsmntbombdood> sometimes writing a compiler is easier than an interpreter, other times not
23:27:05 <CakeProphet> I'm assuming this one is an interpreter... I haven't -exactly- figured out the difference.
23:27:22 -!- Metuk has joined.
23:27:45 <oerjan> gah, xkcd.com is crazy today
23:27:52 <CakeProphet> It reads the entire soure code all at once... but there really isn't much compiling that needs to be done, as most of it is already single-character insructors.
23:27:54 <bsmntbombdood> CakeProphet: If it doesn't generate code, then it's an interpreter
23:28:40 <oerjan> The line _is_ blurry though.
23:28:57 <CakeProphet> In fact... all instructions are implicitly one character long unless surrounded by ?'s, quotes, or its comment (which really isn't an instruction)
23:30:15 <bsmntbombdood> oerjan: not really...what's an example where it's unclear?
23:30:43 -!- ihope has joined.
23:30:43 <oerjan> somewhere between generating an AST and generating bytecode.
23:30:46 <CakeProphet> Lots of "interpreted" languages generate bytecode.
23:31:39 -!- ooooo has joined.
23:31:59 <oerjan> basically, what to you call something that compiles into a different form only to run it immediately.
23:32:06 <CakeProphet> Isn't compiled "broken down into machine-readable instructions before being ran"... while interpreted is "read line by line and performed while reading"?
23:32:35 <oerjan> indeed, those are the extreme points.
23:33:16 <oerjan> except that very few languages are interpreted by that definition.
23:33:16 <ihope> That's "before being run", isn't it?
23:33:39 <ihope> Everything's either compiled or in between?
23:33:59 <CakeProphet> My language is definetely interpreted... there's not much compiling you could possibly do.
23:34:06 <CakeProphet> I don't even understand how you could compile BF O.o
23:34:27 <ihope> D'oh, I just remembered something.
23:34:28 * pikhq has written a BF compiler
23:34:36 <ihope> Pointy file systems!
23:34:38 <bsmntbombdood> compilation == translation to a different language
23:34:42 <CakeProphet> isn't compiling and interpreting in BF pretty much the exact same thing.
23:35:19 <ihope> Every file has some pointers to other files. The file can only access files it has pointers to.
23:35:31 <oerjan> nearly every interpreter has _some_ translation stage, even if it is just to an AST.
23:36:02 <CakeProphet> It would be a pain in the ass to read the raw source for some languages.
23:36:23 <ihope> CakeProphet: a compiler turns BF into something else, then runs it. An interpreter turns it into a list/tree/thing of instructions and runs through those.
23:36:34 <oerjan> actually compilers don
23:36:42 <oerjan> 't necessarily run it.
23:36:54 <CakeProphet> Why would you ever change BF into something different?
23:37:03 <ihope> CakeProphet: to run it more efficiently?
23:37:05 <CakeProphet> I mean... it's single-character instructions... what more could possibly be done.
23:37:16 <pikhq> Compilers convert one language to another language.
23:37:20 <bsmntbombdood> CakeProphet: let's look at a bf -> c compiler. It only needs to preform simple textual substititution: > to "p++;", + to "(*p)++", etc.
23:37:22 <ihope> Wouldn't you rather add 50 to a number than add 1 to it 50 times?
23:38:01 <pikhq> CakeProphet: A complex BF->C compiler converts 50 "+"s into "*p+=50;".
23:38:32 <ihope> Turning ++++++++++++++++++++++++++++++++++++++++++++++++++ into something more efficient is compilation.
23:38:48 <ihope> CakeProphet: optimization of BF is silly?
23:38:49 <pikhq> Turning ++++ into anything else is compilation.
23:39:39 <bsmntbombdood> CakeProphet: it is compiled into bytecode, which is then interpreted
23:39:43 <ihope> It's the degree of compiledness.
23:39:47 <oerjan> another advantage of compilation is that you can run the program without having the compiler present.
23:39:51 <CakeProphet> bsmntbombdood, ...see that's where you confuse me.
23:40:07 <CakeProphet> bsmntbombdood, what.. are you supposed to compile the bytecode too?
23:40:11 <bsmntbombdood> hoever, python's bytecode interpreter is very complex
23:40:24 <oerjan> which can mean saving space.
23:40:33 <bsmntbombdood> CakeProphet: The byte code is never translated into a different language
23:40:48 <CakeProphet> bsmntbombdood, The byte code -is- a different language.
23:41:13 <CakeProphet> Python -> bytecode == compilation.... so how is Python not compiled?
23:41:33 <pikhq> Python -> bytecode -> interpretation == interpretation. ;)
23:41:37 <ihope> I think the biggie is whether or not it's interpreted.
23:41:43 <ihope> If it's not interpreted, it's compiled.
23:41:49 <oerjan> The Haskell ghc compiler goes through a chain of up to 5 languages when compiling.
23:41:50 <CakeProphet> bsmntbombdood, why the "but"... it makes it sound like an objection.
23:42:08 <ihope> If it's turned into an executable, it's compiled.
23:42:22 <bsmntbombdood> compilation ususaly translates into a simpler language python bytecode isn't much simpler than python itself
23:42:38 <pikhq> bsmntbombdood: It's slightly simpler to interpret, though.
23:42:46 <oerjan> Haskell -> System F -> STG machine -> C -> machine code
23:42:51 <CakeProphet> <bsmnthbombdood> ihope: compilation need not include optimization
23:42:57 <pikhq> calamari: At some point, yes.
23:43:07 <calamari> so whether it is interpreted isn't a factor
23:43:42 <calamari> a compiled language is a language for which there exists a compiler to some other form
23:43:51 <bsmntbombdood> python execution goes interpret_bytecode(compile(code))
23:44:15 <ihope> calamari: isn't x86 machine code generally run directly, if it's on an x86?
23:44:32 <oerjan> it is interpreted by the hardware :)
23:44:36 <calamari> ihope: yes, but in that case, the x86 chip is the interpreter
23:44:37 * CakeProphet also notes that Python -does- make compiled versions of the source.
23:44:47 <ihope> Well, yes, then maybe whether it's interpreted by software.
23:45:13 <pikhq> ihope: You know, there are x86 software interpreters.
23:45:15 <calamari> CakeProphet: yep.. python is a compiler
23:45:17 <ihope> I guess even executable files are interpreted to some small degree.
23:45:26 <pikhq> CakeProphet: Python is also an interpreter. ;)
23:45:44 <bsmntbombdood> but the interpretation part of python is much larger/more complex than the compilation stage
23:45:45 <oerjan> some processors have microcode, which is a software used by the processor to interpret the machine code in something simpler
23:46:03 <GregorR> How much wood ... would a woodchuck chuck ... if the wood was moss-flavored ...
23:46:13 <CakeProphet> it seems like everyone is contradicting themselves afer every other sentence. O.o
23:46:34 <pikhq> That's because it's both.
23:46:44 <oerjan> I'm not contradicting myself, I am claiming that the line _is_ blurry.
23:47:13 <calamari> it seems pretty straightforward to me
23:47:18 <bsmntbombdood> CakeProphet: Executing pythn involves both compilation and interpretation
23:47:58 <bsmntbombdood> a very simple compilation stage, and then a much more complex bytecode interpretation stage
23:48:21 <CakeProphet> Languages that have a linear interpretation are starting to grow on me :D
23:48:35 <CakeProphet> Especially when I have to write up the parser for them. :P
23:54:38 <bsmntbombdood> any language with a eval/exec function is probably going to be classified as interpreted
23:56:02 <pikhq> bsmntbombdood: Lisp can be compiled. It's got an eval function.
23:56:19 <pikhq> To be fair, the eval function *is* a Lisp interpreter. . .
23:57:02 <pikhq> So, it's compiled if your code's not being (eval)ed.
23:59:23 -!- NK` has joined.
23:59:50 <CakeProphet> Sounds like the start of a programing language.
00:00:21 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:00:23 <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:00:24 <GregorR> YhwOS, the OS for the True Believer.
00:00:41 -!- ooooo has left (?).
00:01:31 <calamari> http://kidsquid.com/images/irdr-01Jan2007.jpg
00:02:08 <calamari> (that's a pic of my ipod screen)
00:02:38 <calamari> not too good at macro photography yet
00:03:54 <calamari> next step is to be able to click links :)
00:09:50 <CakeProphet> hmmm... stack-based languages are pretty easy to inspect...
00:10:05 <CakeProphet> since you can put in a debugging command to have the program print out its stack.
00:13:14 <CakeProphet> but you could achieve the same effect in other languages.
00:13:36 <pikhq> With some difficulty.
00:13:38 <CakeProphet> Like in PYthon you can print globals() and locals() and get the program state from your perspective.
00:13:49 <pikhq> Brainfuck's equivalent is printing out the entire memory.
00:14:07 <CakeProphet> Or dir(object) you peek into the scope of an object.
00:20:50 <pikhq> Anyone seen RazorX lately?
00:27:43 <oerjan> certainly, just not under that name.
00:30:17 <pikhq> Sukoshi: Anata ga iru!
00:52:36 -!- Asztal has joined.
00:56:56 -!- clog has joined.
00:56:56 -!- clog has joined.
00:57:27 -!- meatmanek has joined.
01:14:09 -!- fizzie has joined.
01:17:43 <Sukoshi> bsmntbombdood: I'm Razor-X.
01:21:57 <Sukoshi> あら!忘れた!あけましておめでとうございます。新年で強く生きます!!!
01:24:02 <pikhq> What's 忘 and 強 mean?
01:24:11 <Sukoshi> Your Kanji's not very strong, is it? :P
01:24:47 <pikhq> Also, what's the reading for "new year" there?
01:25:04 <Sukoshi> Both are pretty easy Kanji, so :P
01:25:04 <pikhq> . . . I should've known that.
01:25:33 * pikhq wonders what tsuyoi means
01:26:18 <pikhq> (I can't be expected to know the kanji for words I don't know. . . As for wasureru. . . Yeah, I need to know that for class. My bad.)
01:26:56 <Sukoshi> Advantages of not taking a Japanese class.
01:27:38 * pikhq still doesn't have an IME set up. :/
01:28:54 <pikhq> (furigana, please)
01:29:01 <Sukoshi> へん、かわ --> Strange, exchange.
01:29:11 <Sukoshi> Yeah. It's a Kanji which makes no sense :P
01:29:20 <CakeProphet> http://deadbeefbabe.org/paste/3099 beautiful... my first esolang (that I built an interpreter for)
01:29:29 <Sukoshi> Look. Even the J2's in my school beat you!
01:29:56 <CakeProphet> Now I just need to add in maybe a few more commands (I kinda like it the way it is... with minimal commands though).. and maybe something weird like a preprocessor.
01:29:56 <pikhq> (to be fair, the first two years had the world's. Stupidest. Teacher.)
01:30:07 <pikhq> He waited until second year to teach *kana*.
01:30:15 <Sukoshi> .......................................................................................................
01:30:37 <Sukoshi> Almost every piece of literature I've come across, and my own experiences, scream that you should learn as little Romaji as humanly possible.
01:30:53 <pikhq> I self-taught kana first year.
01:30:57 <pikhq> Only student to do so.
01:31:26 <Sukoshi> Kana is easy to self learn though, heh.
01:32:51 <Sukoshi> 語 is also a Kanji with a lot of readings.
01:34:34 <pikhq> "Go" is the one that comes to mind.
01:35:20 <Sukoshi> Ok. Not as bad as I thought.
01:35:33 <pikhq> (if that's wrong, well, it looks kind of. . . tiny on my screen.)
01:46:07 <CakeProphet> hmmm... there's no conditional jumps in Stew though...
01:46:16 <CakeProphet> unless you can create one from the minimal tools given.
02:15:46 <oerjan> One thing I suspect is that the booleans are entirely useless for computation - you cannot do anything with them other than comparing, giving you just a new boolean.
02:17:36 <oerjan> However, it seems to me that numbers can be used to select an operator from a stack, which can then be run, giving you conditional execution.
02:21:11 <CakeProphet> the @ command with some comparison operations.
02:21:42 <CakeProphet> 0 would give the current queue... 1 would give the second Queue
02:22:52 * CakeProphet loves it when an unintentional feature arises.
02:23:22 <CakeProphet> I also need a string-to-int int-to-string builtin.
02:23:33 -!- Asztal has quit (Read error: 113 (No route to host)).
02:23:45 <CakeProphet> maybe just call it "flip"... strings becomes ints (if possible)... ints become strings.
02:24:00 -!- Asztal has joined.
02:25:26 <CakeProphet> division and mod could easily be used as conditionals.
02:27:06 <CakeProphet> well... divsion plus floor (Python divison will be "true" division by default in later releases... but you can go ahead and specify it now using the __future__ module)
02:28:33 <oerjan> it is also a well-known fact that 1-x and x*y with 0/1 gives you boolean not and and
02:30:26 <oerjan> you can get integer division by combining true division with mod
02:31:15 <oerjan> ah yes, you have all three.
02:31:34 <CakeProphet> I might get rid of the lolno function then
02:31:56 <oerjan> isn't that negation on numbers?
02:33:23 <CakeProphet> so boolean not would work... we just don't need it.
02:35:13 <CakeProphet> I don't want to fool with building a random number generator myself.
02:36:01 <oerjan> although that _is_ considered one of the canonical programs for a new esoteric language. :)
02:36:25 <CakeProphet> well... it's not a full blown random generator.
02:36:37 <CakeProphet> It just allows randit from 1 to a given int
02:37:08 <CakeProphet> and if the value on the queue isn't an integer... it does the from-zero-to-one-float-random-thing (forogot the name of it)
02:38:15 <CakeProphet> floor can also be sumulated with round(x - 0.5)
02:38:21 <oerjan> sounds about as much as you can expect without a full-blown library of statistical distributions.
02:38:54 <CakeProphet> I could put a shitload of the standardlb into the specification... if I wanted.
02:38:56 <oerjan> and everything else can be constructed from those two cases.
02:39:50 <CakeProphet> which I might do as an "extended stew"... for OS related juju
02:41:06 <CakeProphet> hmm.. oh I need to add greater than and less than.
02:41:23 <CakeProphet> greaterthan-and-equal-to is just a superset of multiple operations.
02:43:21 <oerjan> i thought you said you could use div and floor.
02:44:26 * CakeProphet doesn't know how to do gt and lt any other way.
02:45:28 <Sukoshi> The INTERCAL stdlib has random number generation in it.
02:45:54 <CakeProphet> I like the way the syntax oscilates from postfix to prefix
02:47:50 <CakeProphet> I have the urge to add a little hack to do in-line Python....
02:49:06 <Sukoshi> You need to try out other languages.
02:49:40 <CakeProphet> I can do some schemish stuff... nothing huge though.
02:49:46 <oerjan> let's say you have a non-zero integer and you want to test if it is positive or negative.
02:50:13 <Sukoshi> Write an infix->prefix translator in Scheme.
02:50:56 <oerjan> actually, floor (1/(2*x))
02:50:57 <CakeProphet> I can do Glass fairly well... out of all the esolangs it's the one I'm most proficient at.
02:51:25 <oerjan> on second thought, zero is not a problem either.
02:51:35 <CakeProphet> I can read most of C... I still need to learn what structs are :D
02:52:17 <CakeProphet> I can do FORTH... never actually used it... but the syntax is so simple how can you -not- use FORTH?
02:52:52 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
02:53:10 -!- digital_5e has joined.
02:53:20 <oerjan> but it isn't quite there yet.
02:53:22 <CakeProphet> oh yeah... anything multiplied by zero is one
02:54:20 <CakeProphet> eh... I think I'll just use builtins for comparison :P
02:54:31 <oerjan> that should have only two possible values, -1 and 0.
02:55:12 <CakeProphet> I guess it wouldn't be too hard to implement in Stew... since it's functional, I can abstract.
02:55:30 <CakeProphet> more properly... it's "procedural" (everything is on a global stew)
02:55:45 <oerjan> so -floor (1/(4*x-2)) == (x<=0)
02:57:01 <oerjan> for floats you would take floor before doing this, giving (x<1)
02:57:02 <CakeProphet> CHORD (yes, all caps... it felt like the thing to do) switches integers to ASCII... and ASCII to integers.
02:57:23 <CakeProphet> FLIP changes ints to strings, and strings to ints.
02:58:05 <oerjan> so a CHORD is not a string? :)
03:00:01 <CakeProphet> which are the functions that do the underlying magic.
03:00:25 <CakeProphet> CHORD was something that would have been waaay too tedious to implement in Stew.
03:01:54 <CakeProphet> I suppose you could build a BF interpreter in Stew.
03:02:22 <CakeProphet> just have a queue representing each possible symbol... and do a bunch of conditional rotations via comparisons.
03:02:58 <CakeProphet> except... there's always that pesky while loop.
03:05:53 <oerjan> just make sure that the op for the while loop places itself back in the queue
03:06:26 <oerjan> oh, you mean the bf loop
03:06:50 <ihope> Trying to prove Stew Turing-complete?
03:07:12 <CakeProphet> just wondering -if- it could do a BF interpreter.
03:07:15 <oerjan> can a stack contain stack elements?
03:07:41 <CakeProphet> all data is in the queues... and all the queues are in the stack.
03:07:57 <oerjan> so no queues in the queues either.
03:08:12 <CakeProphet> No unless you can find a bug that lets you do so.
03:09:08 <CakeProphet> If you push all the values from the top queue... it's removed and the one below it takes its place... if that paticular quirk helps an.
03:10:02 <CakeProphet> the only loop construct in Stew (at the moment) is a function mapper()
03:10:11 <oerjan> is there a way to get to queues other than the top one?
03:11:22 -!- digital_5e has quit (Connection timed out).
03:11:24 <CakeProphet> @ takes the topmost int from the top-most queue as a stack looker-backer.
03:11:54 <CakeProphet> it's how you would do conditionals in Stew.
03:12:24 <CakeProphet> give it a comparison... it returns either 1 or 0... and use that to conditionally flip between the top two queues.
03:13:34 <oerjan> is there a way to swap or rotate the top queues?
03:13:36 -!- ihope_ has quit ("Leaving").
03:13:39 <CakeProphet> and I'm guessing... if you used negative integers it would get the bottom most queue... since I didn't really specify any sort of check for that thing... and that's how Python would do it.
03:14:10 <oerjan> that means you can use the bottom queues for globals!
03:15:43 <CakeProphet> % is the foreach operator... it calls a function for each item in the top queue (using some fancy voodoo to make sure that each item is at the front of the queue at some point.
03:16:25 <oerjan> can you use % to delete the topmost queue?
03:17:19 <CakeProphet> well... if your function didn't put anything in the queue.
03:17:39 <CakeProphet> I'd need to tweak the interpreter a bit to parse an empty function though :D
03:18:02 <oerjan> OneOrMore -> ZeroOrMore ? :)
03:20:59 <oerjan> let's say you made each BF loop into a queue.
03:21:14 <CakeProphet> you can get a specific element from the topmost queue as well.
03:21:33 <oerjan> placing it in a specific position from the bottom.
03:22:16 <CakeProphet> (by the way "stew" is the phonetical squashing of stack and queue)
03:23:54 <oerjan> although stue is norwegian for living-room
03:24:10 <CakeProphet> I can't imagine stew being very efficient... pretty much any operation on it involves messing with a two-dimensional array.
03:28:36 <CakeProphet> It'll be hard to get foreach to work properly.
03:29:02 <CakeProphet> As functions that call will eat up their arguments and return new ones... which go on a fancy result list to the side.
03:29:15 <CakeProphet> it would be difficult to make it implicitly "eat up" values...
03:29:47 <CakeProphet> that's one of the few functions that eat up values and don't spit anything back.
03:29:53 <oerjan> is there a way to simply remove a value?
03:30:13 <CakeProphet> You could make it an instrinsic property of foreach... but then it would eat -too- many.
03:30:57 <CakeProphet> pops just sorta happen as the low level commands and functions start consuming values...
03:32:53 <CakeProphet> better yet... make it a builtin... so you can foreach it :D
03:33:35 <CakeProphet> builtin functions have the advanage of being treated as data... commands have the advantage of you-don't-need-to-explicitly-call-them-they-just-happen.
03:37:56 -!- Metuk has quit (Read error: 110 (Connection timed out)).
03:39:30 <oerjan> eh, why is Stew.q not being initialized?
03:41:08 <CakeProphet> Now it just slices from the stack each operation... which is... kind of dirty... but eh.
03:41:18 <oerjan> so the pastebin is not accurate? (http://deadbeefbabe.org/paste/3099)
03:41:43 <CakeProphet> as soon as I make a little tweak, I'll post up the latest.
03:44:12 <CakeProphet> a minor tweak in how Stew does symbols allows the interpreter to call any arbitrary string as though it were an op. :D
03:44:29 <CakeProphet> ( op is the "official" term for a procedure in the Stew lingo...)
03:50:43 <oerjan> WE WILL CALL IT A "DUWN"
03:51:36 <RodgerTheGreat> alright, I think I have a functioning def-bf interpreter...
03:52:22 <CakeProphet> hehe... got my own interpreter testing to do :P
03:52:50 <pikhq> RodgerTheGreat: Test any normal Brainfuck code.
03:52:56 <pikhq> If that fails, j00 fail.
03:53:29 <pikhq> Not sure what to do.
03:53:52 <CakeProphet> oerjan, oh... and functions have the nifty ability to be constants :D
03:54:04 <CakeProphet> since they just push values to the stack... you can use them as constants to values.
03:54:18 <RodgerTheGreat> program counter control is going to be tricky to test...
04:01:11 <oerjan> you can create a constant function
04:01:25 <oerjan> just use eq to start with
04:02:34 <CakeProphet> and... currently my interpreter is printing ouit strange results.
04:03:11 <oerjan> what i mean is, you can use it with foreach to turn every element of a queue into the same value.
04:04:58 <CakeProphet> hehe... using esoteric languages is the fine art of misusing every bit of the languages features.
04:07:29 <oerjan> eh, is recursion the only way to do a loop in Stew?
04:07:50 <oerjan> because it might be hard on the Python stack.
04:09:28 <RodgerTheGreat> well, shit- I'm getting stack underflows. It's either a faulty program or my interpreter
04:09:38 -!- Sukoshi has left (?).
04:09:44 -!- Sukoshi has joined.
04:10:21 <CakeProphet> my interpreter keeps printing the stack with no apparent reason to do so.
04:10:29 <CakeProphet> I've searched the whole program for a reason why.
04:10:47 <oerjan> you might want to adjust run to do proper tail call optimization.
04:11:18 <RodgerTheGreat> I'm working on getting a functioning Def-BF interpreter going
04:11:23 <oerjan> so that recursion can be safely used for loops.
04:12:05 <CakeProphet> oerjan, it retrieves the functions as data... the call is from the ^ command... which calls the call() method... which calls the __call__ method of an Op object :D
04:12:50 <CakeProphet> I could easily reduce it to a call to run()
04:21:15 <CakeProphet> fixed some stuff... but it still prints out the stack a bunch..
04:23:35 <CakeProphet> hmmm... to make it do optimization for tail recursion you simply return the call right?
04:24:00 <CakeProphet> that ensures that Python no longer has to keep track of the functions local state.
04:24:48 * pikhq discovers that SMB3 kicks ass with a game genie. . .
04:25:01 <pikhq> Hammer Mario. All. Day. Long.
04:26:08 <oerjan> or you turn the call into iteration.
04:27:43 <Sukoshi> RodgerTheGreat: Has someone finished the spec?
04:28:07 <RodgerTheGreat> I wrote the original spec, and the low-level portion is complete.
04:28:27 <oerjan> if you check in run whether the last command in the list is ^, and then whether its argument is an op, then you can shortcut and use the same invocation of run to do it.
04:28:53 <RodgerTheGreat> The only change I made to what you've seen before is that I replaced the @ symbol with %, to free up @ as a reserved "word". One moment...
04:30:06 <RodgerTheGreat> I'm implementing the low-level spec outlined in "Basic Commands"
04:30:28 <RodgerTheGreat> Currently, I've left out ? just to save myself some minor headaches
04:31:00 <Sukoshi> So, the low-level commands perform definite jumps?
04:31:26 <Sukoshi> Like +++++%. should output what?
04:31:35 <RodgerTheGreat> %: control the program counter, and #; control the pointer
04:32:42 <Sukoshi> But doesen't % jump to location 5?
04:33:26 <Sukoshi> Hooray. Def-BF -- More ways to infinite loop.
04:34:13 -!- BrainMachine has joined.
04:34:29 <Sukoshi> What about +++++#, inputs 'a' .
04:36:22 -!- oerjan has quit ("Good night.").
04:37:26 -!- calamari has quit ("Leaving").
04:37:26 <Sukoshi> Man. I wish I could play some more with this.
04:37:29 <pikhq> bfprog +++++#,<+++++;.
04:37:36 <Sukoshi> But, I must finish my homework.
04:38:01 <Sukoshi> Why does it spit out some erroneous character at the end?
04:38:08 <pikhq> bfprog +++++#,<<<<<[-]>>>>>.
04:38:35 <RodgerTheGreat> Sukoshi: oh, that's a bug/feature of the way error messages work
04:39:03 <RodgerTheGreat> it just adds a "\nError Message\n" to the output stream
04:39:43 <Sukoshi> I might come up with my own interpreter tonight too.
04:40:20 <Sukoshi> Oh, how does ? work, by the way?
04:40:44 <RodgerTheGreat> once I can get this interpreter firing on all cylinders, I'll start working on the High-Spec->Low-Spec compiler
04:41:21 <RodgerTheGreat> Sukoshi: the plan is for it to read the next n characters as long as they're numbers. Inelegant, but it works
04:41:58 <Sukoshi> How'll you tell that they're numbers? Do an ASCII bound check?
04:42:36 <RodgerTheGreat> or, since it's Java, I can repeatedly try Integer.parseInt()
04:42:59 <Sukoshi> Well, in the all cylinders world, there's nothing that fancy.
04:44:49 <RodgerTheGreat> if you can think of a better way for ? to work, by all means let me know
04:45:28 <RodgerTheGreat> I was thinking about having it just read in the next ascii char, but that limits values to 8-bit, and makes it hard to use interactive interpreter
04:48:26 * pikhq jumps off of cliffs in SMB3, singing "Suicide is painless, it brings on many changes, I can take or leave it if I please."
04:49:09 <GregorR> http://www.codu.org/Kill_Yourself.org
04:49:13 <GregorR> http://www.codu.org/Kill_Yourself.ogg
04:49:13 <pikhq> Actually, it's the song from MASH.
04:49:18 <pikhq> GregorR: I've got it.
04:49:32 <pikhq> http://en.wikipedia.org/wiki/Suicide_Is_Painless
04:49:53 <pikhq> I've got the Kill Yourself song.
04:50:24 <pikhq> "Take out your favorite limb, take out your favorite eye, it doesn't matter how so long as you die!"
04:50:49 <pikhq> RodgerTheGreat: I'm doing Mash *and* Nintendo.
04:51:15 <RodgerTheGreat> lmao: http://en.wikipedia.org/wiki/List_of_songs_about_suicide
04:52:46 <GregorR> I should add my Kill Yourself song to that 8-D
04:58:30 <RodgerTheGreat> "Let me take you down/'cause I'm going to/Strawberry fields-/nothing is real/-and nothing to get hung about/"
05:03:53 <pikhq> Don't use Wikipedia to gain relevance.
05:15:20 -!- anonfunc has quit.
05:16:48 -!- anonfunc has joined.
05:32:50 -!- RodgerTheGreat has quit.
05:32:55 -!- BrainMachine has quit (Remote closed the connection).
06:48:29 <GregorR> http://www.donotputthebaby.com/index.php?s=Mouth
07:56:22 * pikhq would like to salute the RIAA for their claims on a) the rampancy of piracy b) the cost of each song
07:57:58 <pikhq> They have recently valued a single song to be worth $150,000. . .
07:59:05 <Sukoshi> Well, if each person is worth $1,000,000 then their songs must be some fraction of them, no?
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:34 <pikhq> Let's estimate that maybe 20% of the US population (6,000,000 people here) pirate songs.
08:01:00 <pikhq> Let's say each of these downloads, say, 3 albums of 12 songs a year.
08:01:23 <pikhq> 2,160,000,000 songs.
08:01:32 <pikhq> This is, obviously, a low estimate.
08:02:13 <pikhq> Now, with each worth $150,000, we get $324,000,000,000,000 worth of songs pirated.
08:02:30 <pikhq> 324 trillion dollars.
08:02:56 <Sukoshi> That's more than the entire GDP of France.
08:03:10 <pikhq> For comparision, the USA GDP is $12.485 trillion dollars.
08:05:28 <pikhq> That's an order of magnitude larger than the world's GDP.
08:06:00 <pikhq> $44,454,843,000,000 dollars.
08:06:06 <pikhq> 44 trillion dollars.
08:10:01 <pikhq> Shift my calculations by an order of magnitude.
08:10:51 <pikhq> 60,000,000, people, 21,600,000,000 songs, $3,240,000,000,000,000 songs pirated.
08:15:06 <Sukoshi> Well, in the RIAA's heart, that's how much is being pirated.
08:16:04 <pikhq> Applying this to global scale gets us having lost every year the amount of value produced since the dawn of mankind.
08:16:20 <pikhq> (just guessing on that, but hey. Sounds about right.)
08:20:49 <pikhq> In conclusion: balding men with more cash than sense should not be allowed to talk about money at all.
08:21:07 <Sukoshi> In conclusion: We should sue the RIAA.
08:22:18 <pikhq> In conclusion: We should just let the RIAA's recent decision to sue a front company for the Russian mafia take its course.
08:22:25 <pikhq> I'm buying the popcorn. ;)
08:22:53 <pikhq> They decided to sue AllOfMP3.
08:22:54 <Sukoshi> The We're-still-totalitarian-you-bums nation.
08:23:13 <pikhq> For. . . More than the GDP of Russia.
08:23:42 <pikhq> Since AllOfMP3 has mafia ties, this should be rather amusing.
08:23:52 <Sukoshi> Yeah, if that happened, AllOfMP3 would own Russia by now and they'd have their own corporate army and their own figurehead President.
08:24:35 <pikhq> s/AllOfMP3/RIAA/ s/Russia/America/
08:25:05 <pikhq> It's RIAA vs. EquallyHugeGiant.
08:25:37 <pikhq> (I've also heard rumors of the RIAA having American mafia ties. . . This gets more and more amusing.)
08:25:46 <Sukoshi> This 'aint exactly ripe fields for Socialism in the world now.
10:01:40 -!- jix_ has joined.
11:43:17 -!- tgwizard has joined.
11:49:05 -!- Asztal has joined.
12:19:24 -!- oklopol has joined.
12:32:01 -!- jix__ has joined.
12:33:20 -!- oerjan has joined.
12:40:29 -!- jix_ has quit (Read error: 113 (No route to host)).
14:33:38 -!- Asztal has quit (Read error: 113 (No route to host)).
14:46:32 -!- anonfunc has quit.
14:57:11 -!- Sph1nx has joined.
15:11:01 -!- ihope_ has joined.
15:12:33 -!- Sph1nx has quit (" !").
15:28:49 -!- ihope has quit (Read error: 110 (Connection timed out)).
15:35:43 -!- oerjan has quit ("leaving").
16:23:47 -!- RodgerTheGreat has joined.
16:28:23 -!- RodgerTheGreat_ has joined.
16:28:23 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
16:31:18 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
18:09:31 -!- oerjan has joined.
18:43:54 <oerjan> hey, lambdabot@#haskell also has a BF interpreter
18:51:38 <oklopol> not that shocking since a bf interpreter takes 15 minutes to write
19:04:14 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
19:04:25 -!- RodgerTheGreat has joined.
20:21:16 -!- Asztal has joined.
20:24:48 -!- Asztal has quit (Client Quit).
21:50:46 <bsmntbombdood> using minimal evaluation with boolean and/or makes for nice looking code
21:52:18 <bsmntbombdood> char *editor = getenv("VISUAL") || getenv("EDITOR") || (command_exists_p("emacs") && "emacs") || "vi";
21:53:05 <GregorR> Yes, making use of logical short-circuiting :P
21:54:05 <oerjan> actually it is not essential in that example.
21:54:50 <GregorR> True ... but it would be fairly inefficient without :P
21:57:19 <pikhq> That *works*. . . But I'd rather not use such a thing.
21:57:32 <pikhq> void *p=malloc(x);
21:57:49 <pikhq> Seems a bit clearer to me.
21:58:28 <pikhq> Clarity is worthwhile, IMO.
21:58:52 <oerjan> some languages call that operator 'orelse'.
21:59:12 <oerjan> which is pretty clear.
21:59:49 <oerjan> and (...) or die(1); is idiomatic perl.
22:00:40 <oerjan> hm, that probably should be die("..."). my perl is getting rusty.
22:02:10 * GregorR hates perl's proponderance of silly conditional keywords.
22:02:11 <oerjan> it's good. perfectly clear, too.
22:02:28 <GregorR> Also, I hate this: do something if (x); instead of if (x) do something;
22:02:45 <GregorR> And 'unless', I hate that too.
22:02:53 <GregorR> Really, I just hate Perl.l
22:03:16 <pikhq> I hate executable line noise.
22:03:24 <oerjan> and here i was going to mention that Haskell has when and unless in the Control.Monad module.
22:03:36 <oerjan> prefixed though, being functions.
22:04:29 <oerjan> Malbolge > Brainfuck :)
22:06:08 <GregorR> Mind you, that's only in terms of programming.
22:06:13 <GregorR> In general, the horse dung is more useful.
22:07:22 <oerjan> darn, has someone made a BF interpreter in COBOL yet?
22:07:36 <pikhq> oerjan: Undoubtedly.
22:07:44 <GregorR> I made one in ORK, that's like COBOL++ :)
22:08:07 <pikhq> Actually, it's ADD 1 TO COBOL GIVING COBOL.
22:08:22 <GregorR> pikhq: Sooo much typing ;)
22:08:31 <GregorR> When you say OISC, are you referring to OISC the general concept with no specific implementation or a specific implementation, such as MISC?
22:09:06 <oerjan> of course that is anecdotical, i believe the GIVING COBOL is redundant.
22:09:19 <pikhq> Perhaps even INCREASE COBOL BY 1.
22:09:32 <GregorR> There is such a thing as a programming language.
22:09:37 <GregorR> A programming language can be incremented.
22:09:46 <GregorR> There is a programming language named COBOL.
22:09:50 <GregorR> COBOL is to be incremented.
22:10:10 <oerjan> and i think there is some reasonable expression notation in cobol as well. perhaps.
22:10:17 -!- RodgerTheGreat_ has joined.
22:10:26 <pikhq> Make your class be operated on by a mathematician named Gregor.
22:10:39 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
22:10:50 <GregorR> There is a mathematician named Gregor.
22:10:54 <GregorR> Gregor's first operand is COBOL.
22:10:58 <GregorR> Gregor's second operand is 1.
22:11:51 <GregorR> Or, the acronym for that: MNGGFOCOBOLGSO1GAORKGR
22:34:33 -!- ihope_ has quit (pratchett.freenode.net irc.freenode.net).
22:34:33 -!- tgwizard has quit (pratchett.freenode.net irc.freenode.net).
22:34:34 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
22:35:49 -!- ihope_ has joined.
22:35:49 -!- tgwizard has joined.
22:35:49 -!- GregorR has joined.
22:41:10 -!- ihope_ has quit (pratchett.freenode.net irc.freenode.net).
22:41:10 -!- tgwizard has quit (pratchett.freenode.net irc.freenode.net).
22:41:10 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
22:41:33 -!- ihope_ has joined.
22:41:33 -!- tgwizard has joined.
22:41:33 -!- GregorR has joined.
22:50:46 -!- ihope_ has quit (pratchett.freenode.net irc.freenode.net).
22:50:46 -!- tgwizard has quit (pratchett.freenode.net irc.freenode.net).
22:50:46 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
22:51:08 -!- ihope_ has joined.
22:51:08 -!- tgwizard has joined.
22:51:08 -!- GregorR has joined.
23:03:50 -!- ihope_ has quit (pratchett.freenode.net irc.freenode.net).
23:03:50 -!- tgwizard has quit (pratchett.freenode.net irc.freenode.net).
23:03:50 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
23:04:14 -!- ihope_ has joined.
23:04:14 -!- tgwizard has joined.
23:04:14 -!- GregorR has joined.
23:39:49 -!- Asztal has joined.
23:43:48 -!- ihope_ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
23:48:00 -!- Fordsway has joined.
23:50:12 -!- Fordsway has left (?).
00:12:45 -!- Asztal has quit (Read error: 113 (No route to host)).
00:13:05 -!- Asztal has joined.
00:18:31 -!- jix__ has changed nick to jix.
00:24:35 -!- tgwizard has quit (Remote closed the connection).
00:59:06 -!- Asztal has quit (Read error: 113 (No route to host)).
00:59:45 -!- Asztal has joined.
01:21:54 -!- digital_me has joined.
02:00:24 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
02:05:39 -!- Sandman has joined.
02:07:22 <oerjan> Please write "Hello, world" _before_ I make this request.
02:07:37 <CakeProphet> I should make a language based on coroutines.
02:07:47 <CakeProphet> and... somehow mix it into my genetic language idea.
02:08:34 <CakeProphet> a subroutine takes input, executes, and returns an output to its caller.
02:09:33 <CakeProphet> a coroutine takes in input, executes, returns a value, halts execution, awaits more input, continues execution until it returns a new value, repeat.
02:10:28 <CakeProphet> you can use them to do psuedothreads nicely.
02:10:49 <CakeProphet> and take in more input when they continue.
02:11:27 <CakeProphet> You could actually use a coroutine to simulate an infinite list.
02:11:33 -!- Administrator has joined.
02:11:42 -!- Administrator has changed nick to kilovh.
02:12:12 <kilovh> Please, write the 99 bottles lyrics
02:12:16 -!- kilovh has quit (Client Quit).
02:12:32 <Sandman> 99 nine bottles of beer on the wall
02:12:36 <Sandman> 98 nine bottles of beer on the wall
02:12:40 <Sandman> 97 nine bottles of beer on the wall
02:12:43 <Sandman> 96 nine bottles of beer on the wall
02:12:58 <oklopol> a lazy evaluator like me won't do that if the programmer isn't looking
02:13:16 <Sandman> 99...0 bottles of beer on the wall
02:13:57 <RodgerTheGreat> 0 bottles of beer on the wall, 0 bottles of beer, go to the store, pick up some more, 99 bottles of beer on the wall
02:14:09 <jix> i don't like beer
02:14:30 <jix> so 99 bottles of beer on the wall... (2 hours later) still 99 bottles of beer on the wall
02:14:38 <Sandman> 99 bottles of beer go to the store and pick upp 99 bottles, 99*99 bottles of beer on the wall
02:16:00 <Sandman> oh sorry it should have been: 99 bottles of beer go to the store and pick upp 99 bottles each, 99*99 bottles of beer on the wall
02:16:54 <pikhq> Sandman: Join #irp; we need programmers.
02:17:03 <RodgerTheGreat> what I've always wondered about the song is: "why do they store all the beer on a *wall*? Wouldn't a box, refrigerator, or at least shelf prove a more efficient storage medium?"
02:18:36 <Sandman> Yeah me too...walls ive tried storing bottles of beer on the wall, and guess what? They fell to the floor
02:19:59 <RodgerTheGreat> You could glue them to the wall, but it'd make it tricky to take them down again
02:20:27 <pikhq> Cleverly arranged nails, perhaps.
02:20:37 <RodgerTheGreat> I imagine something like a workbench tool rack, with beer bottle-sized loops
02:21:00 <Sandman> I once heard something about some shelve thingy. dont really know what thats all about
02:33:12 -!- Asztal has quit (Read error: 113 (No route to host)).
02:37:04 -!- Sandman has quit ("Merry christmas to ya all out there!").
02:39:56 <CakeProphet> hmmm... I kind of regret that = become the most popular way to assign variables.
02:41:10 <oerjan> There is of course the broken BF version.
02:41:18 <CakeProphet> one of the most common confusions by new programmers is the distinction between variabe assignment and mathematical equality... most likely because = (the symbol for mathematic equality) is used for it...
02:41:35 <CakeProphet> and they look superficial similar at first glance (VERY first glance :D )
02:41:50 <oerjan> 0 bottles of bear on the wall, 0 bottles of beer. Take one down, pass it around, 255 bottles of beer on the wall!
02:41:55 <bsmntbombdood> If someone can't wrap their head around that, they aren't very smart
02:42:28 <oklopol> I myself do not really care how hard it is for newbies to start programming :\
02:42:30 <CakeProphet> Pretty much everyone makes the leap... I just wonder why it's nessicary to put the cliff there. :P
02:43:16 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
02:43:17 <CakeProphet> if programming is a bitch... programming looks painful and boring.
02:43:41 <CakeProphet> It -is- fun... but only if you know what you're doing.
02:43:47 <oklopol> i use c++ almost exclusively
02:44:28 <CakeProphet> So I think it's best to start with something that's easy to learn... so programming starts out fun.
02:45:07 <bsmntbombdood> if it's easy to learn it's not going to be worth using
02:45:50 <CakeProphet> If it's easy to learn... that means it's more intuitively worth using.
02:46:20 <CakeProphet> but... let's be optimistic and go with the first option.
02:46:30 <oklopol> I started with basic, was a bitch changing to C++ since i couldn't understand the distinction between = and ==, i though "How can I know which kind of equality this is?".
02:49:15 <CakeProphet> You should start from the top and work your way down... not stay at the top and keep the bottom hidden (ir works nicely for abstraction, but not for learning)
02:49:32 * pikhq went Basic -> Javascript -> rm -rf basic -> Tcl -> shell -> C -> C++ -> way, way too many esolangs.
02:49:34 <oklopol> tho i was kinda small, didn't really understand what was happening there, prolly properly taught a basic programmer would've understood the difference even tho the same symbon is used :)
02:51:19 * oklopol wants to list too: Basic -> C++ -> python -> C++ -> Brainfuck -> Java -> C++ -> Haskell -> C++
02:51:26 <CakeProphet> Python -> Scheme -> Python -> C (for a second) -> esolangs yay
02:51:44 <CakeProphet> I should really get to know a lot of other languages better... rather than just skimming over them.
02:52:07 <CakeProphet> C makes my stomach churn... so not going there.
02:52:29 <CakeProphet> Perl and Lisp (definetely Lisp) look cool...
02:53:33 <oklopol> i don't know perl, lisp, pascal, cobol, intercal or smalltalk, i hate it when i know the name but not the language
02:53:41 <pikhq> I've gotten to the point where I can at least do a minor amount of fiddling around in the vast majority of languages (with the help of Google).
02:53:59 <CakeProphet> I'm more familiar with Scheme than I am Lisp.
02:54:05 <CakeProphet> but... they're not that different anyways.
02:54:25 <oerjan> Basic -> Turbo Pascal -> Modula -> LPC -> C -> Perl -> Ocaml -> Haskell and a bunch that i just read about
02:54:45 <oerjan> or used even less than the ones mentioned
02:54:48 <pikhq> It's comparable to the difference between C and C++.
02:55:16 <CakeProphet> I like that Scheme uses a single define function :D
02:56:25 <CakeProphet> LPC... hmmm... a language used to create MUDs...
02:56:36 <CakeProphet> sounds like something I would enjoy... but probably not.
02:56:40 <oerjan> oklopol: it is usually not considered a disadvantage not to know cobol. :)
02:56:44 * CakeProphet is making a MUD in Python that uses freaky meta-programming stuff.
02:57:24 <CakeProphet> Perl is a little weird... it has a lot of obvious disavantages, but I like the philosophy behind it.
02:57:37 <pikhq> oklopol: The use of COBOL cripples the mind, therefore, it's teaching should be considered criminal.
02:58:19 <oerjan> You are supposed to change your nick to dijkstra when you say that :)
02:58:39 <pikhq> MNGGFOCOBOLGSO1GAORKGR
02:58:44 <pikhq> oerjan: Yeah, yeah, yeah
02:59:12 <oklopol> i'll learn ork once i see a complete reference for it
02:59:28 <pikhq> Hit the Esolangs wiki.
02:59:43 <pikhq> And realise that code is a bunch of English sentences.
03:00:17 <oklopol> i thought there was just a few examples
03:00:48 <pikhq> It's not that hard. . .
03:00:55 <pikhq> When the program starts:
03:01:00 <oerjan> the wiki doesn't describe the builtin classes very well, i guess.
03:01:06 <pikhq> There is a scribe named Hi.
03:01:14 <pikhq> Hi is to write "Hello, world!\n."
03:01:19 <CakeProphet> http://esoteric.voxelperfect.net/files/ork/doc/README
03:02:02 <oklopol> i've made a lot of english based langs while planning on a project etc but never made an interpreter for any since they often grow quite complex
03:02:27 <CakeProphet> short jumbled-up-series-of-characters languages are starting to grow on me.
03:02:48 <pikhq> It's compiled into C++.
03:05:39 <CakeProphet> :P Most languages go to assembly at some point... doesn't mean I'd enjoy coding in assembly very much. :P
03:06:29 * CakeProphet has never actually seen assembly code before.
03:07:15 * pikhq doesn't do any assembly. . .
03:07:38 <pikhq> Although I do tons of equally crazy stuff. ;)
03:08:13 <CakeProphet> I can see where ORK sometimes looks like obvious syntatic sugar over C++... but it's strangely different in a way that I like. :D
03:08:45 <pikhq> It's syntactic sugar over C++ and some libraries, in some ways.
03:09:24 <CakeProphet> I don't consider syntatic sugar a bad thing though.
03:09:39 <CakeProphet> Everything is just syntax sugar for some super low-level operation anyways.
03:13:07 <CakeProphet> The whole function-names-blending-into-the-syntax is the coolest part.... so seeing readOne is just kind of annoying. :P
03:13:14 <oklopol> yeah, ORK should try to avoid anything that looks like programming imo
03:13:19 <pikhq> Functions with a space in the name produce some vagueness in parsing.
03:13:25 <oklopol> exactly what CakeProphet said
03:13:37 <GregorR> ORK doesn't support multi-word function names :(
03:13:49 <oklopol> make it support :) then i love it
03:13:51 <GregorR> Due to the parsing difficultimpossibility.
03:14:10 <GregorR> <actor> is to <function> <variable>
03:14:24 <GregorR> If both functions and variables can have spaces, it's very difficult to parse.
03:14:31 <oklopol> yeah, but you can avoid that if you know it
03:14:51 <oerjan> you could demand an article between <function> and <variable>.
03:14:55 <pikhq> And impossible if one has two function/variable combinations that match.
03:15:08 <GregorR> oerjan: Yeah, but then it doesn't read well X_X
03:15:17 <oklopol> but the compiler could give an error if names can collide
03:15:19 <GregorR> It's the one corner of ORK that bugs me 8-X
03:15:28 <GregorR> oklopol: And then what? There's still no solution ;P
03:15:34 <CakeProphet> hmmm... Python has a just-in-time compiler implementation... neato.
03:15:52 <oerjan> it can read well if the variables are nouns
03:16:53 <oklopol> if there are say 5 words in the bit that has <function> and <variable>, it checks all possibilities (4 of them) and does the right one
03:17:22 <GregorR> oklopol: But if there are conflicts, there would then be no way to right it.
03:18:21 <oerjan> now wait. proper nouns can be detected because they are capitalized.
03:18:50 <pikhq> Perhaps a rewrite of the sentence's grammer?
03:19:05 <oerjan> so a variable would be either 'the' <common noun>, 'a' <common noun> or a capitalized proper noun.
03:19:22 <GregorR> oerjan: That's a good point ...
03:19:41 <oklopol> i mean, if a thing has functions "a b c" and "a b" and vars called "c d e" "d e", it would give an error, very easy to check for each class
03:19:42 <CakeProphet> Doggie Samuels is to be or not to be that is the question when there is the functions "to be" "be or not"
03:20:15 <CakeProphet> hmmm... if it finds the variable first... it can clip off the variable name and know -exactly- what function to look for.
03:20:24 <GregorR> oklopol: Giving an error isn't a solution, it just leaves the coder with no way to call that particular selection :P
03:20:53 <oklopol> GregorR, you still have the old way of naming if you MUST have colliding names
03:21:16 <oklopol> and, it can support the ucase thing too
03:21:36 <CakeProphet> so in that example... the parse would find the variable "to be that is the question"... and could conclude that "to be or not" is the only function.
03:21:37 <oklopol> if collision, check for uppercase and solve that way
03:21:56 <CakeProphet> but... there could be ambigious -between- multiple functions and variables... which is where you would have problems.
03:22:42 <oklopol> as i said, then check if there are uppercase beginnings in words that indicate change of noun, if not, tell the programmer his names are colliding
03:22:57 <oklopol> and please supply me with a better word that collision...
03:23:14 <CakeProphet> yeah... the chance of colliding names is rare enough that it could simply complain to the programmer about it.
03:23:44 <CakeProphet> and then have OPTIONAL syntax to explicitly mark the beginning of the parameter... should a name collision occur.
03:24:13 <oklopol> yep, just harder to make a compiler, but not much
03:24:38 <oklopol> i'll do it if GregorR won't
03:25:04 <CakeProphet> It's line-by-line statements that each do one thing... so it can't be that harder than a compiler.
03:25:41 <CakeProphet> it actually sounds easier than convert all of it to C.
03:26:58 <oklopol> both simple, i just meant the pattern-matching for the var- and cuntnames
03:27:07 <CakeProphet> but yeah... the chance of there being a bunch of name overlaps that ORK couldn't possibly figure out is so rare that it can just be solved by optional syntax to split up the two.
03:27:47 <oklopol> or, it can be guaranteed to be lazy
03:28:08 <CakeProphet> yeah, de-ambiguity rules is the other route.
03:28:08 <oklopol> i mean, shortest possible func for example
03:28:22 <CakeProphet> stating what the interpreter will do during ambiguity...
03:28:24 <GregorR> oklopol: I would, but since you volunteered, feel free :P
03:28:59 <oklopol> GregorR, depends on whether i go to sleep still
03:29:00 <CakeProphet> it would be the Perl way to go about it. :D
03:29:21 <CakeProphet> well no... hueristical evaluation is also in Perl's domain.
03:30:08 <oklopol> must the built-in classes be named like that? i mean, inputter is too programmingish imo, ork shouldn't sound like that
03:30:33 <CakeProphet> there could just e a single read/write class called scribe.
03:30:40 <CakeProphet> or typist... or any other nifty name you want.
03:32:32 <CakeProphet> but it kinda adds a nice touch to the syntax.
03:33:30 <CakeProphet> hmm... what's the delimiter for statements... periods or newlines (or both?)
03:34:50 <CakeProphet> aaand... # is comment I'm guessing? Like Python comments?
03:35:32 <pikhq> oklopol: inputter is a temporary name. . . Like, Gregor doesn't know of a better name for it.
03:35:39 <CakeProphet> oooh... I like the separation of function and class...
03:35:45 <CakeProphet> you can mix and match classes to functions.
03:37:03 <CakeProphet> no they're connected right? ...to prevent scoping ambiguity.
03:37:29 <GregorR> Only newline is a delimiter.
03:37:51 <GregorR> (Perhaps this should be a comment)
03:38:29 <oklopol> This is an object for expressing BigNums, but that is ignored.
03:39:04 <CakeProphet> This is an object for expression BigNum, but nobody cares. (reference to an uncyclopedia inside joke)
03:39:35 <oklopol> not that exact string of course :)
03:40:44 <CakeProphet> I think "backwards if" statements look a little more englishy.
03:41:23 <CakeProphet> Bob is to eat a sandwhich, if my kitchen is not exploded.
03:41:49 <oerjan> I thought i heard someone here say today that they hated such statements. :)
03:42:14 <CakeProphet> I use them quite a bit... since it's how Python does conditional expressions
03:43:42 <oklopol> When looper is to loop a number:
03:43:43 <oklopol> There is a mathematician called Fibonacci.
03:43:43 <oklopol> I have a number called current.
03:43:43 <oklopol> Fibonacci's first operand is the number.
03:43:43 <oklopol> Fibonacci's second operand is 1.
03:43:44 <oklopol> current is Fibonacci's result.
03:43:46 <oklopol> Fibonacci's first operand is Fibonacci's result.
03:43:48 <pikhq> Looks like [set x [expr {1 ? [myConditional] : 0}]]
03:43:48 <oklopol> Fibonacci's second operand is 0.
03:43:52 <oklopol> If Fibonacci says it's greater then I am to loop.
03:44:22 <oklopol> well, anyways, "I have a number called current." means int ¤t = number; ? because otherwise number wouldn't change
03:44:31 <pikhq> That's [expr {[myConditional] ? 1 : 0]}] XD
03:45:07 <pikhq> I think it means "number ¤t;".
03:45:31 <CakeProphet> I don't like C's conditional expressions :P
03:45:39 <pikhq> Nah, it's "double current;".
03:45:59 <pikhq> (thought that Gregor had number as a seperate class, which he doesn't.)
03:46:03 * CakeProphet needs to figure out all the possible statements in ORK to do a proper implementation of it.
03:46:05 <oklopol> okay, then this is an infinite loop, right?
03:46:22 <oerjan> we don't have to choose. we could make it alternating current.
03:46:49 * CakeProphet implements a form of coroutine in his ORK :D
03:47:29 <oklopol> This would loop from the value you gave it down to 0. You would of course want to add some sort of
03:49:03 <pikhq> It's an infinite Fibo loop.
04:01:47 -!- anonfunc has joined.
04:11:08 <oklopol> GregorR, you'll prolly make it faster, i've only done some basic classes
04:11:30 <oklopol> if you have the old code, i mean, it won't take long prolly :)
04:12:59 <oklopol> haha made a regexp parser last night and got to use it right away :)
04:20:05 * CakeProphet is just now definining the new number class for ORK numbers.
04:20:34 -!- oerjan has quit ("Good night.").
04:20:37 <CakeProphet> it would basically be a floating point with an overriden __str__ class... so it doesn't print the a trailing .0 like Python does.
04:26:00 <RodgerTheGreat> hm. I just had a thought- can anyone think of a way to calculate the length of an optimal BF program that generates a constant, without actually creating he program?
04:28:59 <oklopol> i've made the calculations i think
04:31:20 <RodgerTheGreat> the problem with creating a compiler to Def-BF is the absolute addresses- if you don't use a constant-generation command (?), you have to generate values in-place. This means that making constants changes code length, requiring a change in what the resulting values should be. The only way I can see to get around this would be making use of a lookup table as on the BF-constants page.
04:31:53 <oklopol> yeah, i've researched it a bit, but can't find the fucking file :(
04:32:48 <oklopol> you can brute force the most optimal way to create a number quite easily
04:33:51 <oklopol> 2 levels, takes: Abase+A+B+7, where N=Abase+B*A
04:33:51 <oklopol> 3 levels, takes: Abase+Bbase+A+B+C+14, where N=Abase+(Bbase+C*B)*A
04:34:06 <oklopol> levels is the amount of memory slots you are willing to use
04:34:41 <oklopol> i've not come up with a clever algoritm to produce good bases for 3 levels, but you don't need it often
04:36:20 <oklopol> if you use one memory slot for help, you the smallest possible "Abase+A+B+7" where a*b+abase = your number
04:37:19 <oklopol> and constructed of course A times + [ > B times + < - ] > abase
04:38:01 <oklopol> the amount of auxiliary symbols is (memory slots used)*7
04:38:13 <oklopol> if you want the result in your starting slot
04:39:55 <oklopol> but, seems i didn't make it thro to the end
04:40:03 <oklopol> i don't have an algorithm :)
04:42:04 <oklopol> hmm take the squareroot of the number and make a and b that, or if not an integer, a<sqrt, b>sqrt
04:42:22 <oklopol> abase will be balance it out
04:42:32 <oklopol> that is the best algorithm i think, actually
04:43:33 <oklopol> with three levels, taking the cuberoot and brute forcing different values for abase and bbase while changing a, b and c near the cuberoot might do the trick
04:45:47 <oklopol> for numbers smaller than 256 you don't get much profit from 3 levels
04:46:10 <RodgerTheGreat> in most cases, we'll be dealing with relatively large numbers
04:46:28 <oklopol> you can take the easy way out of course
04:46:38 <oklopol> just split the numbers in 4 pieces
04:47:17 <oklopol> then just merge them by multiplying with 256
04:47:35 <RodgerTheGreat> yeah- then it just becomes a problem of generating the components, which could feasibly be done via lookup...
04:47:39 <oklopol> since the 256 takes 36 symbols again
04:48:06 <oklopol> +++>>++++++[-<++++++>]<[-<+++++++>]< is the smallest 256 i think
04:49:15 <oklopol> it has abase=3, bbase=0, c=6, b=6, a=7 3+(0+6*6)*7
04:49:32 <oklopol> 3+(0+6*6)*7 was just to help me think
04:49:39 <RodgerTheGreat> the smallest non-wrapping level 3 is one of four variants that are 32 commands
04:51:35 <oklopol> all that matters about the small differences in the final length is where you end
04:52:05 <oklopol> otherwise you have many strategies to position abase, bbase etc
04:52:24 <RodgerTheGreat> luckily, Def-BF makes memory use in programs a little less vital than most BF-derivatives, so we don't have to do something messy like hard-allocate 3 cells per constant
04:53:46 <oklopol> you do realize that even if using 4 levels allows a 32-bit number to be expressed in <60 symbols, it still takes 2^32 cycles to create? :)
04:55:57 <RodgerTheGreat> we're assuming for now that either the machine is fast enough for anything we want or that the BF-ASM compiler is infinitely deep in it's analysis and optimization of code
04:56:40 <oklopol> ++++[>++++<-]>[>++<-]> (32, 2)
04:57:06 <oklopol> i have all loops separate in the system
04:57:59 <oklopol> i'll do the complete algorithm to find the optimal way for that someday unless i see it somewhere else
04:58:41 <oklopol> 176 "smth had to be truncated to 256 characters for debug information" warnings
05:01:56 <oklopol> can i see an ork program to check the final syntax? :D
05:03:06 <oklopol> if there are accidental infinite loops in a tutorial, i'd like to check i working program to be sure
05:05:08 <CakeProphet> http://esoteric.voxelperfect.net/files/ork/src/orkfuck.ork
05:06:37 <CakeProphet> GregorR, hmmm... do you have some sort of docs on the exact specs of ORK?
05:06:57 <CakeProphet> I'm too lazy to crack open the source and read it with my shoddy C++ literacy.
05:07:17 <GregorR> I do, but the site it's all on is apparently down >_>
05:07:43 <oklopol> There is such a thing as a brainfuck interpreter.
05:07:45 <oklopol> A brainfuck interpreter can instanciate.
05:07:45 <oklopol> A brainfuck interpreter can subinstanciateData a number.
05:07:45 <oklopol> A brainfuck interpreter can subinstanciateProgram a number.
05:08:03 <oklopol> put the "There is... " line beneath the others?
05:08:39 <oklopol> and, could i declare "A brainfuck interpreter can instanciate." in say, the main
05:09:01 <oklopol> i'm making an interpreter now, tho it's a trivial conversion if needed
05:09:39 -!- RodgerTheGreat has quit.
05:10:16 <oklopol> godfuck... who wrote the bfork?
05:12:27 <oklopol> or did you just do an evil conversion?
05:15:30 <GregorR> I don't recall anything about it *shrugs*
05:16:58 <CakeProphet> hmm... the comments in the source should be enough to get all the possible syntax.
05:17:07 <CakeProphet> unless you randomly don't-comment-certain-parts
05:36:00 <pikhq> oklopol: Allow me to give you a much shorter version of 255.
05:38:01 <oklopol> true, i meant non-wrapping since i assumed bignum
05:38:50 * pikhq is generally used to having wrapping, since chars, well, wrap.
05:39:01 <oklopol> and secondly, i'm lying, i recalled wrapping much after i'd said said my thing
05:42:33 <CakeProphet> hmmm... are function definitions independent of class declarations?
05:42:46 <CakeProphet> or are they "within" the last defined function.
05:43:05 <pikhq> See the C++ code. ;)
05:43:25 <oklopol> they are in the class that is mentioned in the "When a ... is to ..."
05:44:09 <CakeProphet> pikhq, See makes my eyes hurt when I try to understand it.
05:53:03 -!- digital_me has quit (Read error: 54 (Connection reset by peer)).
06:28:00 <CakeProphet> GregorR, haha... you could introduce metaclasses into ORK
06:28:49 <pikhq> There is such a mammal as a dog.
06:29:13 <GregorR> There is such a thing as a <class>, which is a type of <metaclass>
06:29:31 <pikhq> I prefer Cake's idea. . .
06:31:01 <CakeProphet> No clue how metaclasses would work in ORK though.
06:31:38 * CakeProphet sometimes wishes there was a simpler version of regex that used that kind of syntax
06:31:49 <CakeProphet> This <variable> is a <blank> that likes to <blank>
06:39:27 <Sukoshi> The future of OOP: An abstract framework of abstract metaclasses.
06:45:35 <Sukoshi> That about sums up all of theoretical OOP.
06:45:36 <CakeProphet> only a few specific things that need a little funky class-based magic.
06:45:52 <CakeProphet> OOP can at times be redundent... and it's a little weird.
06:47:43 <pikhq> Sukoshi: The future of OOP:
06:48:04 <pikhq> There is an object which does everything I want.
06:48:58 <pikhq> The stdlib always has every object that does everything you want.
06:49:10 <CakeProphet> factory functions that produce classes are strangely powerful....
06:49:21 <pikhq> And it's an abstraction ontop of 500 different layers. . . ;)
06:49:42 <CakeProphet> you can box a few generalized patterns about certain class designs into a single word.
06:52:44 <Sukoshi> You remind me of the wackiest abstraction I made/used.
06:54:09 <pikhq> (that abstraction is?)
06:54:50 <Sukoshi> I wanted to generalize binary classes in a user-made package that had the same named slots but different names under one generic class so I could save myself the typing, so I made an alist with the keys as the symbols for the generic class names and what was assoc'd with the key was an anonymous function produced by a macro for the metaclass definition. This function then defined a new class according to another macro, and generated an
06:54:50 <Sukoshi> instance of it if desired.
06:59:54 <pikhq> That's almost like writing an OS to implement dc.
07:03:25 <Sukoshi> I wanted to save 40 lines of typing.
07:04:53 <Sukoshi> I did -- I did the thing in like 10 lines.
07:06:48 <Sukoshi> What? I saved my hand from OCD.
07:17:30 <CakeProphet> when you use regex to substitute things into regex.
07:18:03 <Sukoshi> I can't think why if you use your macros correctly.
07:18:12 <Sukoshi> Oh wait -- this is Python.
07:18:31 * Sukoshi pities the stringent syntax.
07:19:08 <CakeProphet> No semicolons and braces and all that jazz.
07:19:28 <CakeProphet> C looks gawd-awful to type... but I guess you'd get used to all the symbols after a while.
07:19:51 <Sukoshi> Plus, it makes for fun formatting tricks.
07:20:11 <Sukoshi> I, personally, abhor overreliance on whitespace.
07:20:32 <CakeProphet> meh... small rewards for the task of typing all that crap out.
07:20:57 <CakeProphet> semicolons and braces... not to mention it looks ugly.
07:21:27 <Sukoshi> What if you were working on a very small resolution display, and indendation would look horrible?
07:21:50 -!- MM2 has joined.
07:22:45 <Sukoshi> Also, think about using regexps to go through Python code and change stuff around -- annoying.
07:23:22 <CakeProphet> It's like saying "You'd care more about how slow Python is if you were on a 1980s IBM"
07:23:55 <Sukoshi> More like "You'd care more about how slow Python is if you did anything system critical."
07:24:31 <CakeProphet> I remember some implementation of Python written in Python, with the very ambitious goal of becoming faster than C. :P
07:24:50 <Sukoshi> There's Jython, and that's scary.
07:25:16 <Sukoshi> Python being compiled by Java. Whoo.
07:26:02 <CakeProphet> I've never encounted any slowness with Python so far... but I haven't really worried about it
07:27:07 <Sukoshi> My box is on the older side, so.
07:27:45 <Sukoshi> Take a look at the Computer Language Shootout results.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:26:14 -!- anonfunc has quit.
10:25:58 -!- xpika has joined.
10:26:19 -!- xpika has left (?).
11:53:48 -!- tgwizard has joined.
13:19:30 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
13:48:39 <MM2> please tell me 8 first fibonacci numbers
14:27:39 -!- tgwizard has joined.
15:01:29 -!- jix has joined.
15:04:21 -!- Asztal has joined.
15:07:29 -!- Asztal has quit (Client Quit).
15:21:30 -!- oklopol has quit (Read error: 110 (Connection timed out)).
15:41:22 -!- oklopol has joined.
16:11:36 -!- oerjan has joined.
16:32:41 -!- CakeProphet has quit ("haaaaaaaaaa").
16:55:36 -!- digital_me has joined.
17:15:06 -!- CakeProphet has joined.
17:21:55 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
17:35:49 -!- digital_me has quit (Read error: 104 (Connection reset by peer)).
17:41:00 -!- digital_me has joined.
17:57:00 -!- digital_me_ has joined.
18:04:10 * SimonRC goes ooh: http://www.coolopticalillusions.com/optical_illusions_pictures_3/candy_stripes.htm
18:07:00 <SimonRC> There seems to be a battle going on in the high-tech language world.
18:07:37 <SimonRC> On one side, there is Lisp, with its ability to perform arbitrary transformations on program source code.
18:08:10 <SimonRC> On another side, there is Haskell, with its power of manipulating actual programs and computations.
18:08:35 * oerjan is at the moment programming Brainfuck in Haskell
18:08:40 <SimonRC> On a third side, there are the OO languages with high-powered reflection.
18:08:59 <SimonRC> oerjan: define "programming Brainfuck in Haskell"
18:09:18 <pikhq> On the fourth side, there are low-level languages saying "we can do it, too!"
18:09:28 -!- digital_me has quit (Read error: 110 (Connection timed out)).
18:10:10 <oerjan> I wanted to make a brainfuck interpreter that is completely customizable as to tape size, cell value sizes and wrapping.
18:10:28 <SimonRC> LOOKIT ME I ARE USING THE VISITX0rZ-PATTEN LOLZ
18:10:51 -!- digital_me has joined.
18:11:57 <SimonRC> at my URL, not what oerjan said I hope
18:12:06 <SimonRC> unless you forgot to turn your ESP off again
18:13:21 * SimonRC is reading _Thud_ by PTerry. Very good book, especially page 290.
18:28:44 -!- digital_me_ has quit (Connection timed out).
18:40:59 -!- sebbu has joined.
18:41:47 -!- CakeProphet has joined.
19:07:15 -!- oerjan has quit ("leaving").
19:18:40 * SimonRC wonders what MS Keg would be if it existed.
20:23:12 -!- RodgerTheGreat has joined.
20:56:18 * CakeProphet is toying with new ideas on how to turn common parts of programming languages into unconvential data types.
20:56:39 <CakeProphet> Everything should be data... if it isn't, you can't manipulate it to its full potential.
20:58:05 <CakeProphet> So thinks like variable names, call stacks, evaluation stack, parse trees, and language syntax should all be expressable by data of some sort.
21:02:00 <CakeProphet> a weird example... but I'm sure with some tweaking to how it works you could make some interesting applications with it.
21:02:58 <CakeProphet> That would requite some interesting runtime parsing mechanics. :P
21:03:28 <CakeProphet> Better yet... you could do it like Lisp with the quote operator.
21:03:52 <CakeProphet> and have the quote operator represent a "suspended" sytax... that isn't evaluated till later.
21:09:25 -!- Keymaker has joined.
21:09:53 <Keymaker> hello. 99 bottles of beer in underload: http://koti.mbnet.fi/~yiap/programs/underload/99.ul
21:10:14 <Keymaker> finally got around finishing this one. i'm happy about it, as it's my first program in this kind of language
21:10:32 <Keymaker> first that does something logic, that is
21:10:52 <Keymaker> my two others in underload are a quine and something that prints natural numbers in unary
21:11:57 <SimonRC> Thou shalt not fuck around with the parser at runtime.
21:13:49 * SimonRC wonders where Underload is defined
21:18:27 <CakeProphet> You could assign expressions to any generic set of symbols...
21:19:15 <SimonRC> I feel that changing suck things at runtime would make the language a little slow.
21:20:00 <SimonRC> In fact, you are almost screwing with the lexer at run-time.
21:20:19 <CakeProphet> If the language is designed for it's purposes... rather than implementing it as a bolt-on later in life... it'll be more well-suited for it.
21:20:31 <SimonRC> plus you would end up leaving large holes all over your language spec.
21:21:15 <CakeProphet> ...it's an esolang idea... it's supposed to be weird. :P
21:21:19 <SimonRC> Lisp only gets away with it because it restricts lexer-around-with-screwing to read-time.
21:21:45 <SimonRC> You know about the lifecycle of Lisp source code, right/
21:22:15 <SimonRC> the compiler reads a series of "forms" from each input file.
21:22:51 <SimonRC> any of those forms may change the lexer.
21:22:59 -!- Keymaker has quit.
21:23:16 <SimonRC> ah, they may only change the lexer for following forms
21:24:07 <CakeProphet> The if the lexer holds a series of states... and plugs in the proper values from these malleable state values... it would be trivial to have a lexer that can change how it parses mid-runtime.
21:24:16 <SimonRC> once the forms are read it, there is compile time, which IIRC starts with macro-expansion, which allows you to pass parts of parse trees (s-expressions) through arbitrary functions, which it handy.
21:24:28 <CakeProphet> it would most likely be an interpreted language though.
21:24:37 <SimonRC> CakeProphet: yeah, but that reduces your ability to optimise
21:24:58 <SimonRC> it prevents such fundamental optimisations as, say, *compiling* the program.
21:25:03 <CakeProphet> ...no use optimizing a interpreter/compiler that doesn't exist yet.
21:43:57 -!- RodgerTheGreat_ has joined.
21:44:00 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
21:44:13 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
21:56:55 -!- RodgerTheGreat_ has joined.
22:00:05 -!- ihope_ has joined.
22:00:15 <ihope_> Any idea how much bandwidth the esowiki uses?
22:02:42 -!- oerjan has joined.
22:06:11 <ihope_> Per how many seconds? :-P
22:09:08 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
22:12:28 -!- RodgerTheGreat_ has quit (Remote closed the connection).
22:12:47 -!- RodgerTheGreat has joined.
22:15:07 <RodgerTheGreat> http://youtube.com/watch?v=WwylBRucU7w&mode=related&search <- lol
22:31:13 <ihope_> Is that that blender thing?
22:41:00 -!- digital_me has quit ("Lost terminal").
22:51:29 -!- RodgerTheGreat_ has joined.
22:51:46 -!- RodgerTheGreat_ has quit (Remote closed the connection).
22:52:26 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
22:52:26 -!- RodgerTheGreat_ has joined.
23:31:08 -!- digital_me has joined.
00:01:43 -!- calamari has joined.
00:25:16 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:25:18 <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:25:59 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
00:27:27 <CakeProphet> bf has one of the smallest Cat programs ever :P
00:30:40 <oerjan> There are probably some languages where the empty program is a cat. Concatenative languages where the program is a function to turn input into output.
00:31:05 <calamari> you guys see any problem with this code?
00:31:08 <calamari> http://rafb.net/p/GCgLp467.html
00:32:40 -!- Yoshi-kun has joined.
00:32:53 -!- Yoshi-kun has changed nick to yoshibot.
00:36:22 -!- sebbu has quit ("@+").
00:36:40 <oerjan> It does not actually null out any links, so eventually you will access an already freed node. Or was that a rhetorical question?
00:38:53 <oerjan> Before the while loop, add a links -> prev = NULL, I think.
00:39:25 <calamari> how about links -> next = NULL; before the free
00:39:36 <calamari> no, then I don't free the last node
00:39:48 <oerjan> No, it is enough to do it on as single node, before you start.
00:39:59 <oerjan> to break the circularity.
00:40:22 <oerjan> But you have it available.
00:40:53 <calamari> let me think about this.. I'm sure you're right I just don't quite get it yet :)
00:40:58 <oerjan> Oh, I meant links -> prev -> next = NULL.
00:41:23 <oerjan> not sure if that's the right syntax.
00:41:33 -!- RodgerTheGreat_ has quit.
00:43:54 -!- oerjan has quit (Remote closed the connection).
00:44:05 -!- oerjan has joined.
00:58:20 <calamari> oerjan: seems to be right, thank you
01:04:46 -!- Sukoshi has left (?).
01:04:50 -!- Sukoshi has joined.
01:11:41 <oerjan> you seem strangely surprised.
01:12:32 <oerjan> let me hope it was on the computer. :)
01:18:30 <oerjan> !daemon dog !bf +[->,----------[>,----------]<[++++++++++.<]+]
01:19:00 <oerjan> !daemon dog bf +[->,----------[>,----------]<[++++++++++.<]+]
01:19:40 * SimonRC goes (addictive: http://www.ophyr.nl/flash/games/hellbound.html)
01:19:43 <EgoBot> 1 bsmntbombdood: daemon cat bf
01:20:36 <oerjan> !daemon dog bf ++++++++++[---------->,----------[>,----------]<[++++++++++.<]++++++++++.]
01:22:33 <oerjan> !dog rammarg ruoy seod os
01:23:18 <oerjan> but that bf program sucks, it is far too long.
01:33:25 -!- oklofok has joined.
01:33:26 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
01:46:42 -!- oklofok has changed nick to oklopol.
01:54:52 -!- tgwizard has joined.
01:58:28 <ihope_> Not that that really... well.
01:58:51 <ihope_> !dog !dog !dog !dog god! god! god! god!
01:58:56 <EgoBot> !dog !dog !dog !dog god! god! god!
02:00:16 <EgoBot> !dog !dog !dog god! god! god!
02:00:28 <EgoBot> !dog !dog !dog god! god!
02:04:46 <EgoBot> 1 bsmntbombdood: daemon cat bf
02:04:48 <EgoBot> 2 oerjan: daemon dog bf
02:05:36 <oerjan> why did it stop after 3 lines but not before?
02:06:59 <oerjan> there the 4th line arrived.
02:08:02 <oerjan> it is just delaying it. _or_ someone is cheating.
02:08:48 <oerjan> i didn't know EgoBot parsed its own output
02:11:28 -!- EgoBot has quit (Excess Flood).
02:11:39 -!- EgoBot has joined.
02:11:53 <EgoBot> 1 EgoBot: daemon cat reload
02:11:54 <EgoBot> 2 EgoBot: daemon dog reload
02:12:14 <CakeProphet> Yeah... most bots simply parse everything on the channel.
02:12:30 <ihope_> Most bots parse themselves?
02:12:46 <ihope_> The PRIVMSG isn't sent back to the client.
02:13:14 <ihope_> That would cause doubling in many client, I think.
02:13:15 <CakeProphet> that would serve as a way to test if you're actually connected.
02:13:20 <ihope_> And many clients, too.
02:13:38 <CakeProphet> Well of course it would... it's the current specification to simply echo the input
02:13:53 -!- bsmnt_bot has joined.
02:14:21 -!- bsmntbombdood has left (?).
02:14:33 -!- bsmntbombdood has joined.
02:14:46 <ihope_> Also, there's the actual PING messages.
02:14:53 <bsmntbombdood> ~raw PRIVMSG #esoteric :I don't see my own messages
02:15:27 <CakeProphet> Just echoing input creates the illusion of being connected when you're not.
02:15:33 <CakeProphet> so it's hard to tell when the stream stops.
02:15:53 <ihope_> Most clients echo, you mean?
02:15:58 <ihope_> You type it, it displays it?
02:16:35 -!- tgwizard has quit (Remote closed the connection).
02:17:39 <oerjan> perhaps gregorR explicitly sends EgoBot's output back to it to make quines possible.
02:18:57 <oerjan> i am strongly starting to suspect someone cheated.
02:19:13 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
02:19:15 <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
02:19:34 <ihope_> Yeah, it's pretty easy to cheat.
02:19:54 <oerjan> that would certainly explain the irregular, slow response
02:20:18 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % x.split("~cat ")[-1]))
02:20:51 -!- IrpBot has joined.
02:21:28 <ihope_> I think I know which one's faster.
02:21:40 <GregorR> IrpBot: THERE'S NO IRP ALLOWED HERE, F*** OFF
02:21:49 <GregorR> ihope_: EgoBot is not slow, it's purposely throttled.
02:22:00 <ihope_> GregorR: close enough.
02:22:04 <ihope_> Also, that didn't work.
02:22:27 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % x.split(":~cat ")[-1]))
02:22:59 <ihope_> GregorR: you know, if a !cat +.[+.] can kill it...
02:23:18 <oerjan> i forgot that IrpBot always writes to #irp, even if I join it here
02:23:21 <ihope_> (A !cat +[.+] can kill it too, by the way.)
02:23:54 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(0)))
02:24:01 <bsmnt_bot> :bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~cat ~cat foo
02:24:16 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
02:25:15 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat foo
02:25:19 <EgoBot> ~cat !cat ~cat !cat ~cat !cat foo
02:25:20 -!- IrpBot has left (?).
02:25:23 <EgoBot> ~cat !cat ~cat !cat foo
02:26:21 <bsmntbombdood> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:22 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:25 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:25 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:27 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:27 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:31 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:31 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat foo
02:26:33 <EgoBot> ~cat !cat ~cat !cat ~cat !cat foo
02:26:35 <EgoBot> ~cat !cat ~cat !cat foo
02:27:34 <ihope_> Remember, bot-writers, send your replies with NOTICE!
02:29:07 <ihope_> That's what the RFC says to do, after all.
02:29:44 <ihope_> Also never automatically respond to a NOTICE.
02:30:27 <jix> ~raw NOTICE #esoteric :test
02:31:15 -!- ihope_ has left (?).
02:31:25 -!- ihope_ has joined.
02:32:09 <ihope_> ...I mean non-silly bot.
02:33:51 <oerjan> ~cat !dog Testing... god! tac~ tac! tac~
02:33:51 <bsmnt_bot> !dog Testing... god! tac~ tac! tac~
02:33:55 <EgoBot> ~cat !cat ~cat !dog ...gnitseT
02:36:03 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~loop.*", lambda x : bot.raw("PRIVMSG #esoteric :!cat ~loop"))
02:38:27 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
02:38:29 <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
02:49:43 <oerjan> !daemon dup bf ++++[->++++++++<]>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>[.>]++++++++++.[<]+]
02:50:11 <oerjan> hm, that was rather unusual
02:51:03 <oerjan> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>[.>]++++++++++.[<]+]
02:54:53 <oerjan> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
02:57:06 <oerjan> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
02:57:32 <oerjan> i believe we have an iterating quine :)
02:59:31 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
03:07:13 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.match(x, r"\S+ PRIVMSG #esoteric :~dup (.*)").group(1)))
03:07:18 -!- bsmnt_bot has quit (Remote closed the connection).
03:07:45 -!- bsmnt_bot has joined.
03:07:54 <oerjan> not quite so clever :)
03:08:00 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)))
03:08:18 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)*2))
03:08:39 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)*2))
03:08:59 <oerjan> ~cat Is this still working?
03:09:22 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % (re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1))*2))
03:09:26 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % (re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1))*2))
03:09:57 <oerjan> are you trying to make two lines?
03:10:25 <CakeProphet> You should keep all the regexes that are used in the register_raw() thing handy.
03:11:07 <bsmntbombdood> yeah, not sure what a good way to do that is though
03:11:10 <oerjan> in other words but .* in a second group.
03:11:31 <CakeProphet> or better yet... make some convience function for simple commands.
03:11:34 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % (re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)*2)))
03:12:20 <bsmntbombdood> my irc client or the irc proto strips trailing spaces
03:12:44 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ((re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)+" ")*2)))
03:13:08 <CakeProphet> if it parsed itself... that would be a simple quine.
03:13:50 <EgoBot> ~dup !dup ~dup ~dup !dup ~dup
03:13:50 <bsmnt_bot> !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
03:13:54 <EgoBot> ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
03:13:54 <bsmnt_bot> ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
03:14:42 <EgoBot> ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:14:42 <bsmnt_bot> !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:14:46 <EgoBot> !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:15:18 <CakeProphet> wonder what pattern it follows to stop like that.
03:15:58 <EgoBot> !dup ~dup !dup !dup ~dup !dup
03:16:10 <EgoBot> ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:16:10 <bsmnt_bot> !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:16:14 <EgoBot> !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:16:16 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:16 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:20 <EgoBot> ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:20 <bsmnt_bot> !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:22 <EgoBot> ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d
03:16:22 <bsmnt_bot> !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:16:24 <EgoBot> ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d !dup ~dup
03:16:24 <bsmnt_bot> !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup
03:16:26 <EgoBot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !d !dup ~dup !dup !dup
03:16:54 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
03:17:00 <EgoBot> ~dup ~dup !dup ~dup ~dup ~dup ~dup !dup ~dup ~dup
03:17:00 <bsmnt_bot> ~dup !dup ~dup ~dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup ~dup ~dup ~dup !dup ~dup ~dup
03:17:01 <CakeProphet> hmm... I feel insipiration for an esoteric language.
03:17:03 <oerjan> if it is not to stop (apart from flooding) then there must never be two following ! or two following ~
03:17:25 <CakeProphet> !dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:28 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:28 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:29 <oerjan> so the length must always be, hm, odd
03:17:32 <EgoBot> ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:32 <bsmnt_bot> !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup
03:17:36 <EgoBot> ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup
03:17:36 <bsmnt_bot> !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~
03:17:40 <EgoBot> ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
03:17:40 <bsmnt_bot> ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup !dup ~dup ~dup ~
03:18:07 <CakeProphet> There should be an esolang based off of this.
03:18:15 <CakeProphet> two interpreters that interpreter the output of each other.
03:19:35 <oerjan> and of course with incompatible languages
03:19:40 <CakeProphet> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:19:42 -!- puzzlet has joined.
03:19:44 <bsmntbombdood> interpert the program, recurse untill there are no brainfuck chars left
03:19:44 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:19:44 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:19:48 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup
03:19:48 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !
03:19:52 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~
03:19:52 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup
03:19:56 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup
03:19:56 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup
03:20:00 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup
03:20:00 <bsmnt_bot> !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup
03:20:04 <EgoBot> ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup ~dup !dup !dup ~dup !dup ~ !dup ~dup !dup ~dup !dup ~du
03:20:21 <oerjan> what i wonder is if it is possible to get a dog in there.
03:21:15 <bsmntbombdood> of course, any valid brainfuck program is the same in brainfuck-brainfuck, so it's boring
03:21:42 <CakeProphet> ~dup !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:21:42 <bsmnt_bot> !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:21:46 <EgoBot> ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dog !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:22:23 <CakeProphet> ~dup !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:22:23 <bsmnt_bot> !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:22:26 <EgoBot> ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud
03:22:26 <bsmnt_bot> !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~dup !dog ~pud !pud ~pud !pud ~pud !pud ~pud !pud ~pud !pud !dup ~dup !dog ~pud !p
03:22:30 <EgoBot> p! dup~ god! pud~ pud! dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! pud~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! pud~ pud! dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! pud~ pud! dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ god! pud~ dup! dup~ dup! dup~ dup! dup~ dup! dup~ dup!
03:23:19 <CakeProphet> ~dup !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud!
03:23:20 <bsmnt_bot> !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud!
03:23:23 <oerjan> stripped for being too long
03:23:24 <EgoBot> ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud!
03:23:24 <bsmnt_bot> !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! ~dup !dog ~pud !pud ~pud !pud pud~ pud! pud~ pud! pud~ pud! !dup ~dup !dog ~pud !p
03:23:28 <EgoBot> p! dup~ god! pud~ pud! !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! pud~ !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! pud~ pud! !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! pud~ pud! !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup! dup~ god! pud~ !dup ~dup !dup ~dup !dup ~dup dup! dup~ dup!
03:23:40 <EgoBot> ~dup dog! god! ~dup dog!
03:23:45 <CakeProphet> Maybe the occurance of a p! is what causes something to happen.
03:24:05 <CakeProphet> If an interpreter halts on p! ...something changes... but the input alters in some way as well.
03:24:59 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup\s+.*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ((re.match(r"\S+ PRIVMSG #esoteric :~dup\s+(.*)", x).group(1)+" ")*2)))
03:25:00 <oerjan> nothing wrong about the spaces, the double ones were put in at the start
03:25:22 <EgoBot> ~dup dog! god! ~dup dog!
03:25:55 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ((re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)+" ")*2)))
03:26:05 <oerjan> ah, you multiply and get a space at the end
03:26:26 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ((re.match(r"\S+ PRIVMSG #esoteric :~dup (.*)", x).group(1)+" ")*2).strip()))
03:27:50 <oerjan> you definitely need to put a function in your bot to pick just the part after the colon.
03:28:57 <oerjan> i don't mean for the initial regex, but for convenience in the remaining part
03:29:55 <oerjan> in IrpBot it's called clean
03:30:02 <CakeProphet> if you had three interpreters with different symnols for different commands.
03:30:16 <oerjan> one of the functions defined by the code i snatched
03:30:52 <oerjan> or just message. it could be convenient for the others too.
03:32:32 -!- bsmnt_bot has quit ("update").
03:32:37 -!- bsmnt_bot has joined.
03:33:14 <bsmntbombdood> ~exec print message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :sample")
03:33:53 -!- bsmnt_bot has quit (Remote closed the connection).
03:33:56 -!- bsmnt_bot has joined.
03:34:02 -!- bsmnt_bot has quit (Remote closed the connection).
03:34:10 <bsmntbombdood> ~exec print get_message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :sample")
03:34:16 -!- ihope_ has quit (Operation timed out).
03:34:20 -!- bsmnt_bot has joined.
03:34:23 <bsmntbombdood> ~exec print get_message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :sample")
03:34:30 <bsmntbombdood> ~exec print get_message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :sample:sample")
03:38:32 <CakeProphet> the formula for number of dups each run is.
03:38:48 <CakeProphet> I don't think it would spawn infinitely...
03:46:21 -!- bsmnt_bot has quit ("bsmntbombdood is leet").
03:47:40 <NK`> do you guys know how is done an modulo in assembly language
03:47:51 -!- bsmnt_bot has joined.
03:47:57 -!- bsmnt_bot has quit (Remote closed the connection).
03:48:01 <NK`> how gcc translate a modulo
03:48:38 <NK`> and is it the best for telling if a division
03:48:39 -!- bsmnt_bot has joined.
03:48:43 -!- bsmnt_bot has quit (Remote closed the connection).
03:48:48 <NK`> is how do you say "right"
03:49:00 <NK`> I mean enclydienne
03:49:29 <NK`> euclidien* sorry
03:49:37 <NK`> bsmntbombdood: I was thinking about it
03:49:42 <NK`> I'm going into
03:50:20 -!- bsmnt_bot has joined.
03:55:13 <NK`> idivl -8(%ebp)
03:55:13 <NK`> movl %edx, %eax
03:55:13 <NK`> movl %eax, c
03:57:26 <NK`> !I think it 's optimized
03:58:47 <calamari> I wish I knew whether these bugs were due to c or the ipod .. hehe
03:59:46 <bsmntbombdood> great regex: r"^:(?P<nick>\S+)!(?P<ident>\S+)@(?P<host>\S+) (?P<command>\S+) (?P<channel>\S+) :(?P<message>.*)"
04:03:30 -!- bsmnt_bot has quit ("more code").
04:03:34 -!- bsmnt_bot has joined.
04:04:40 <bsmntbombdood> ~exec print self.get_message(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :hmm")
04:11:59 -!- bsmnt_bot has quit (Remote closed the connection).
04:12:03 -!- bsmnt_bot has joined.
04:13:58 -!- bsmnt_bot has quit (Remote closed the connection).
04:14:02 -!- bsmnt_bot has joined.
04:14:53 -!- bsmnt_bot has quit (Remote closed the connection).
04:15:04 -!- bsmnt_bot has joined.
04:15:58 <bsmntbombdood> ~exec __import__("pprint").pprint([locals(),globals()])
04:17:13 -!- bsmnt_bot has quit (Remote closed the connection).
04:17:35 -!- bsmnt_bot has joined.
04:26:36 -!- CakeProphet has quit (Read error: 113 (No route to host)).
05:32:17 * pikhq consideres a rewrite for !dog
05:35:31 <pikhq> ++++++++++[[>+<-]>[>,----------]<[++++++++++.<]++++++++++.]
05:35:43 <pikhq> Not much shorter, but hey; it's a start.
05:36:38 <pikhq> ++++++++++[[>-<-]>[>,----------]<[++++++++++.<]++++++++++.]
05:36:47 <pikhq> ++++++++++[[>-<-],>[>,----------]<[++++++++++.<]++++++++++.] even
05:36:57 <pikhq> ++++++++++[[>-<-]>,[>,----------]<[++++++++++.<]++++++++++.] even
05:50:18 <pikhq> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
05:51:21 <pikhq> !cat ~cat !dup ~cat !dup
05:51:34 * pikhq watches the bots go boom
05:52:00 <bsmntbombdood> ~exec self.register_raw(r"^\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"^\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
05:52:07 -!- bsmnt_bot has quit (Remote closed the connection).
05:52:15 -!- bsmnt_bot has joined.
05:52:21 <bsmntbombdood> ~exec self.register_raw(r"^\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : self.raw("PRIVMSG #esoteric :%s" % re.compile(r"^\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
05:52:25 -!- bsmnt_bot has quit (Remote closed the connection).
05:53:02 -!- bsmnt_bot has joined.
05:53:28 -!- bsmnt_bot has quit (Remote closed the connection).
05:53:39 -!- bsmnt_bot has joined.
05:54:11 <pikhq> !cat ~cat !dup ~cat !dup
05:54:15 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % self.THREADING)
05:54:18 <bsmntbombdood> ~exec self.register_raw(r"^\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : self.raw("PRIVMSG #esoteric :%s" % re.compile(r"^\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
05:54:25 -!- bsmnt_bot has quit (Remote closed the connection).
05:54:26 <pikhq> !cat ~cat !dup ~cat !dup
05:54:33 -!- bsmnt_bot has joined.
05:54:40 <bsmntbombdood> ~exec self.register_raw(r"^\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"^\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
05:54:42 <pikhq> I don't think that works.
05:54:47 <pikhq> !cat ~cat !dup ~cat !dup
05:55:27 <pikhq> Fun stuff, oerjan.
05:58:50 -!- digital_me has quit ("night").
06:02:01 -!- bsmnt_bot has quit (Remote closed the connection).
06:02:05 -!- bsmnt_bot has joined.
06:03:07 -!- bsmnt_bot has quit (Remote closed the connection).
06:03:13 -!- bsmnt_bot has joined.
07:05:11 -!- oerjan has quit ("Good night").
07:21:07 -!- calamari has quit ("Leaving").
07:46:40 <Sukoshi> Aye. I hate it when I reach crossroads of program and programmer efficiency .
07:58:16 -!- pikhq has quit ("leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
11:40:25 -!- tgwizard has joined.
13:13:39 -!- mtve has quit (Read error: 110 (Connection timed out)).
14:00:50 -!- ihope_ has joined.
14:00:55 -!- ihope_ has changed nick to ihope.
14:58:48 -!- nemesis128 has joined.
15:02:06 -!- nemesis128 has left (?).
15:52:01 -!- jix has joined.
15:57:59 -!- digital_me has joined.
16:20:54 -!- ihope_ has joined.
16:37:03 -!- ihope has quit (Connection timed out).
17:08:31 -!- oerjan has joined.
17:09:29 -!- oklofok has joined.
17:09:42 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
17:09:42 -!- FabioNET has joined.
17:24:05 -!- ihope_ has quit (Connection timed out).
17:42:45 -!- ihope_ has joined.
17:42:53 -!- ihope_ has changed nick to ihope.
17:44:24 * SimonRC grins at the bot pong above
18:18:19 <EgoBot> 1 EgoBot: daemon cat reload
18:18:22 <EgoBot> 2 EgoBot: daemon dog reload
18:18:23 <EgoBot> 3 oerjan: daemon dup bf
18:19:26 <ihope> If dup is a daemon...
18:20:02 <ihope> Unless !dup outputs "Huh?"
18:20:48 <ihope> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
18:21:43 <ihope> I see ~cat is not catting.
18:23:46 <ihope> ~cat !dup ~cat !dup
18:24:03 <ihope> I see ~cat is still not catting.
18:36:44 -!- oerjan has quit ("Out of the house").
18:43:51 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
18:54:30 <bsmntbombdood> ~print [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue]
18:54:36 <bsmntbombdood> ~exec print [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue]
18:54:48 <bsmntbombdood> ~exec print [(i[0].pattern, i[1].__name__) for i in bot.raw_regex_queue]
18:56:55 -!- bsmnt_bot has quit (Remote closed the connection).
18:57:01 -!- bsmnt_bot has joined.
19:00:03 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~cat (.*)", lambda x : bot.raw("PRIVMSG #esoteric :%s" % re.compile(r"\S+ PRIVMSG #esoteric :~cat (.*)").match(x).group(1)))
19:00:39 <ihope> ~cat !dup ~cat !dup
19:02:51 -!- tgwizard has joined.
19:06:44 -!- bsmnt_bot has quit (Remote closed the connection).
19:06:47 -!- bsmnt_bot has joined.
19:14:05 -!- RodgerTheGreat has joined.
19:15:35 -!- bsmnt_bot has quit (Remote closed the connection).
19:15:39 -!- bsmnt_bot has joined.
19:16:46 <bsmntbombdood> ~exec self.register_raw(r".*:~test (.*)", lambda x, y : bot.raw("PRIVMSG #esoteric :%r, %r" % (x,y)))
19:17:17 <bsmnt_bot> ':bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~test foo', <_sre.SRE_Match object at 0xb7c0c620>
19:17:54 <bsmntbombdood> ~exec self.register_raw(r".*:~test (.*)", lambda x : bot.raw("PRIVMSG #esoteric :%r" % (x)))
19:17:58 <bsmnt_bot> ':bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~test foo'
19:19:31 <bsmntbombdood> ~exec self.register_raw("\S+ PRIVMSG #esoteric :~cat (.*)", lambda x,y: bot.raw("PRIVMSG #esoteric :%s" % y.group(1)))
19:22:48 <bsmntbombdood> with some uglyness to allow the callbacks to take only one argument
19:39:53 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup (.*)", lambda x,y: bot.raw("PRIVMSG #esoteric :%s %s" % (y.group(1), y.group(1))))
19:40:50 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~dup (.*)", lambda x,y: bot.raw("PRIVMSG #esoteric :%s %s" % (y.group(1), y.group(1))))
19:41:49 <bsmntbombdood> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
19:41:58 <EgoBot> ~dup !dup ~dup ~dup !dup ~dup
19:41:58 <bsmnt_bot> !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:42:00 <EgoBot> ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:42:00 <bsmnt_bot> ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:45:28 * SimonRC wibbles: http://video.google.com/videoplay?docid=-4024457809967804989&hl=en
19:47:33 <EgoBot> 116 ++++++++++++++[>+++++++++>+++++++>++++++++>++<<<<-]>.>++.<---------.>>.>++++.+.<<.<.>>.>-.<++++++++++++++.<.<.-----. [171]
19:47:47 <bsmntbombdood> !daemon foo bf ++++++++++++++[>+++++++++>+++++++>++++++++>++<<<<-]>.>++.<---------.>>.>++++.+.<<.<.>>.>-.<++++++++++++++.<.<.-----.
19:47:54 <EgoBot> ~dup !dup ~dup ~dup !dup ~dup
19:47:54 <bsmnt_bot> !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:47:58 <EgoBot> ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:47:58 <bsmnt_bot> ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup ~dup ~dup !dup ~dup !dup ~dup ~dup !dup ~dup
19:50:28 <bsmntbombdood> ~exec print self.message_re.match(message).group("message")
19:51:42 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~quine(.*)", lambda x : bot.raw("PRIVMSG #esoteric :%s" % bot.message_re.match(x).group("message")))
19:53:49 <ihope> Except when they cheat. Cheater.
19:54:38 <ihope> In that language, you can write something that's both a Hello, world! program and a quine.
20:00:24 <ihope> It's not especially obvious how to make EgoBot.
20:07:15 <ihope> I think I figured it out.
20:08:56 <GregorR> Well, first you type `make` :P
20:09:06 <GregorR> Then you pray that you have the compendium of compilers necessary.
20:11:29 <ihope> I thought I might have had to type something, seeing as how there's big delays near the beginning and it's possible to type something.
20:13:15 <GregorR> bsmntbombdood: For the last fucking time, EgoBot is not slow, it's THROTTLED.
21:29:30 -!- CakeProphet has joined.
21:29:31 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
21:29:48 -!- EgoBot has joined.
21:40:37 <bsmntbombdood> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
21:46:28 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG #esoteric :~quine(.*)", lambda x : bot.raw("PRIVMSG #esoteric :!%s" % bot.message_re.match(x).group("message")[1:]))
21:47:16 <EgoBot> 83 ++++++++++++++[>+++++++++>++++++++>++++++++><<<<-]>.>+.++++.------------.>--.<----. [334]
21:47:31 <bsmntbombdood> !deamon quine bf ++++++++++++++[>+++++++++>++++++++>++++++++><<<<-]>.>+.++++.------------.>--.<----.
21:47:41 <bsmntbombdood> !daemon quine bf ++++++++++++++[>+++++++++>++++++++>++++++++><<<<-]>.>+.++++.------------.>--.<----.
21:48:30 <bsmntbombdood> !daemon !quine bf ++++++++++++++[>+++++++++>++++++++>++++++++><<<<-]>.>+.++++.------------.>--.<----.
22:07:16 -!- oerjan has joined.
22:21:56 <bsmntbombdood> What possessed them to write it in a language like C++
22:32:24 * ihope frobnicates, whatever that means
22:32:43 <oerjan> http://catb.org/jargon/html/F/frobnicate.html
22:33:37 <ihope> What a useless function.
22:57:34 -!- CakeProphet_ has joined.
23:07:00 -!- CakeProphet has quit (Read error: 113 (No route to host)).
23:10:19 -!- CakeProphet__ has joined.
23:10:22 -!- CakeProphet__ has changed nick to CakeProphet.
23:13:32 <ihope> How do you work EgoBot? socat seems to be mad at me.
23:16:29 <ihope> netcat might well work.
23:18:12 <GregorR> /opt/netcat/bin/netcat -e egobotIRC.sh
23:18:43 <GregorR> I predict: socat EXEC:./egobotIRC.sh TCP4:irc.freenode.net:6667
23:18:52 <GregorR> But I haven't used socat for it ;)
23:20:41 -!- ihope has changed nick to i.
23:20:46 -!- i has changed nick to ihope.
23:20:57 <ihope> Well, I certainly didn't expect that.
23:20:59 * oerjan wonders, given this discussion, if he is doing something wrong by connecting IrpBot just with the Haskell Network module.
23:21:31 -!- tgwizard has quit (Remote closed the connection).
23:24:52 -!- FabioNET has quit (Client Quit).
23:25:12 <oklofok> my bot connects with winsock!
23:25:17 -!- oklofok has changed nick to oklopol.
23:25:42 <oerjan> The bot I made for the #irp channel.
23:26:05 <ihope> And that command isn't really working, even--
23:26:10 <GregorR> I was too lazy to use BSD sockets, so I just made it communicate over stdin/stdout :P
23:26:11 * ihope suddenly decides to use netcat
23:26:29 <GregorR> A concept which ihope seems to be having problems with :P
23:26:43 -!- CakeProphet_ has quit (Success).
23:26:44 <ihope> Well, I don't have netcat, exactly.
23:26:52 <oerjan> Right, so socat/netcat is for wrapping standard I/O?
23:27:12 <ihope> Just wait 3.141592653589 seconds and I'll get back to you on that.
23:27:32 <oerjan> I just used what came with the example bot source on the haskell wiki.
23:38:17 <ihope> make's telling me to stop!
23:39:57 <ihope> You know, it just said "Stop." Just like that.
23:40:17 <oerjan> I know. Just give it a good beating.
23:41:32 -!- tgwizard has joined.
23:58:26 <bsmntbombdood> ~exec __import__("time").sleep(60); self.raw("PRIVMSG #esoteric :foo")
00:04:33 -!- EgoBot has quit (Read error: 54 (Connection reset by peer)).
00:04:46 -!- EgoBot has joined.
00:05:18 <bsmntbombdood> EgoBot: EgoBot EgoBot EgoBot EgoBot EgoBot EgoBot EgoBot EgoBot
00:09:34 <yoshibot> dude, is bsmnt_bot running on netcat?
00:15:31 -!- bsmnt_bot has quit (Remote closed the connection).
00:15:37 -!- bsmnt_bot has joined.
00:18:15 <oerjan> bsmntbombdood: You might want to add something to save your list of added patterns to a file to be performed on startup.
00:19:13 <oerjan> I was thinking just of the command text.
00:19:51 <bsmntbombdood> pickle.PicklingError: Can't pickle <function <lambda> at 0xb7bcc5dc>: it's not found as __main__.<lambda>
00:20:17 -!- bsmnt_bot has quit (Remote closed the connection).
00:21:10 -!- bsmnt_bot has joined.
00:21:30 <oerjan> It would also be a good idea to make it a text file so you can edit out patterns if something goes horribly wrong. :)
00:21:52 -!- bsmnt_bot has quit (Remote closed the connection).
00:21:59 * jix is in love :)
00:21:59 <ihope> bsmntbombdood: function pickling?
00:22:11 -!- bsmnt_bot has joined.
00:22:30 <ihope> Is that when you have an injective mapping from a function into brine?
00:22:45 <oerjan> I believe the ACTION is surrounded by \001 characters.
00:23:11 <ihope> And you should send the word "tests" as well.
00:23:34 <bsmntbombdood> r".* PRIVMSG \S* :%sctcp (.*) (.*)" % self.COMMAND_CHAR
00:23:38 <ihope> Also, make doesn't seem to have left behind a binary called "netcat".
00:23:52 -!- bsmnt_bot has quit (Remote closed the connection).
00:23:58 -!- bsmnt_bot has joined.
00:24:13 -!- CakeProphet has quit (No route to host).
00:24:23 -!- bsmnt_bot has quit (Remote closed the connection).
00:24:29 -!- bsmnt_bot has joined.
00:24:49 -!- bsmnt_bot has quit (Remote closed the connection).
00:24:59 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
00:25:07 -!- bsmnt_bot has joined.
00:26:29 <oerjan> Is there an echo here?
00:26:37 <bsmntbombdood> r".* PRIVMSG \S* :%sctcp (\S+) (.+)" % self.COMMAND_CHAR
00:27:32 -!- bsmnt_bot has quit (Remote closed the connection).
00:27:45 -!- bsmnt_bot has joined.
00:28:27 <ihope> ~ctcp #esoteric ACTION is awesome
00:29:29 -!- RodgerTheGreat has quit.
00:29:39 <ihope> !ctcp ##quantum ACTION is awesome
00:29:47 <ihope> ~ctcp ##quantum ACTION is awesome
00:30:24 <ihope> Of course, ##quantum was -n'd.
00:32:05 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG \S+ :~join (.*)", lambda x, y : bot.raw("JOIN :%s" % y.group(1)))
00:33:30 <ihope> I somehow feel plain old ~raw won't do much.
00:34:00 <bsmntbombdood> :kornbluth.freenode.net 421 bsmnt_bot POKE :Unknown command
01:05:16 <bsmntbombdood> I wonder how MapReduce is used for machine learning
01:43:01 -!- tgwizard has quit (Remote closed the connection).
01:52:47 -!- ihope_ has joined.
01:54:48 -!- CakeProphet__ has joined.
01:54:52 -!- CakeProphet__ has changed nick to CakeProphet.
02:00:23 -!- ihope has quit (Read error: 145 (Connection timed out)).
02:08:24 <oerjan> i don't think your quine quite works.
02:10:25 -!- CakeProphet__ has joined.
02:10:36 <oerjan> ah, i confused the \n before ' and the actual newline after
02:11:18 -!- CakeProphet has quit (Read error: 113 (No route to host)).
02:11:19 -!- CakeProphet__ has changed nick to CakeProphet.
02:30:00 <oerjan> main = putStr s >> putStrLn (show s) where s = "main = putStr s >> putStrLn (show s) where s = "
02:36:17 -!- ihope_ has quit (Read error: 131 (Connection reset by peer)).
02:37:32 <oerjan> although the %r in Python and show in Haskell make quines in those languages almost too easy.
02:38:41 <oerjan> main = putStr s >> print s where s = "main = putStr s >> print s where s = "
02:40:27 <bsmntbombdood> print (lambda s : s+repr(s)+')')("print (lambda s : s+repr(s)+')')(")
02:41:41 <CakeProphet> print (lambda x:x%x)("(lambda x:x%%x)(%r)")
02:42:07 <oerjan> you forgot the print in the string.
02:43:17 <CakeProphet> print (lambda x:x%x)("print (lambda x:x%%x)(%r)")
02:44:02 <CakeProphet> print (lambda x:x%x)('"print (lambda x:x%%x)(%r)"') :P
02:45:01 <bsmntbombdood> (lambda x:x%x)("print (lambda x:x%%x)(%r)") == "print (lambda x:x%x)('print (lambda x:x%%x)(%r)')"
02:49:14 <bsmntbombdood> print open(__import__("inspect").getsourcefile(lambda : 0)).read()
02:51:17 * CakeProphet refuses to use single quotes unless absolutely nessicary.
02:52:58 <EgoBot> Use: daemon <daemon> <daemon-command> Function: start a daemon process.
03:01:19 <CakeProphet> pfft... I don't consider it a disqualification if the quote is selected arbitrarily by the interpreter based on the innards of the string.
03:17:32 <CakeProphet> !daemon lol glass {M[m(_o)O!(_i)I! (_i)i.? " " 1 (_o)o.?(_o)o.?(_o)o.?]}
03:17:38 -!- EgoBot has quit (Read error: 54 (Connection reset by peer)).
03:17:48 -!- EgoBot has joined.
03:18:27 <oklopol> print b+b[4:6]+chr(34)+chr(34)+chr(34)+b[:103]+"+')'"+chr(92)+'n'+chr(34)+chr(34)+chr(34)+')'
03:18:27 <oklopol> print b+b[4:6]+chr(34)+chr(34)+chr(34)+b[:103]+"+')'"+chr(92)+'n'+chr(34)+chr(34)+chr(34)+')'\n""")
03:18:33 <CakeProphet> Making a quine in ORK would be super difficult.
03:19:04 <oklopol> yeah, but i couldn't think of a new short way to make a quine
03:19:36 <oklopol> i tried to make one in c++ tho, but it get's very big since a c++ program has lot
03:24:52 <CakeProphet> In glass... you have to instantiate and get and call a bunch of crap to do just the simplest of things :P
03:31:36 <oerjan> compared to brainfuck or unlambda this is all peanuts, of course.
03:39:37 <GregorR> http://www.codu.org/eso/ < I have recreated my esopage, including ORK readme and the likes.
03:42:18 <bsmntbombdood> GregorR: What do you get when you execute that page?
03:42:55 <GregorR> The only program I ever wrote in 2L :P
03:42:59 <GregorR> 2L is really difficult X_X
03:43:34 <GregorR> Feel free to read the 2L readme.
03:45:47 <oerjan> Why is c and d of the ORK quine split in two? Is there a length limit on strings?
03:46:24 -!- digital_me_ has joined.
03:46:36 <oerjan> I suppose that goes for b,c,d as a whole.
03:47:02 <GregorR> No, there's no length limit. I have no idea why I did it like that :P
03:49:07 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y : bot.raw("PRIVMSG %s :%s" % (y.group(1), y.group(2))))
03:58:26 -!- digital_me_ has quit ("leaving").
04:47:53 -!- CakeProphet has quit (Read error: 110 (Connection timed out)).
07:46:43 -!- digital_me has quit ("Lost terminal").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:36:44 -!- oerjan has quit ("Good night").
08:47:07 -!- oklofok has joined.
08:47:20 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
08:51:52 -!- oklopol has joined.
08:51:53 -!- oklofok has quit (Read error: 54 (Connection reset by peer)).
09:01:07 -!- oklofok has joined.
09:01:53 -!- oklopol has quit (Read error: 131 (Connection reset by peer)).
11:14:18 -!- tgwizard has joined.
12:22:10 -!- jix has joined.
12:32:47 -!- jix__ has joined.
12:42:10 -!- jix has quit (Read error: 110 (Connection timed out)).
13:50:40 -!- oklofok has quit (Read error: 60 (Operation timed out)).
15:10:57 -!- ihope has joined.
15:11:12 <ihope> The nice thing about ##quantum is you can tell who's identified and who's not.
15:11:40 <ihope> The identified people are opped, the unidentified people aren't.
15:11:49 <ihope> Except the only unidentified person is bsmnt_bot.
15:12:02 <ihope> Now, let's see here...
15:12:06 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
15:12:08 <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
16:06:25 <EgoBot> rhotor-hi: ./Parser.hs:(29,0)-(46,39): Non-exhaustive patterns in function tokenize
16:06:34 <jix__> !rhotor <x/"test">
16:06:37 <EgoBot> rhotor-hi: ./Parser.hs:(29,0)-(46,39): Non-exhaustive patterns in function tokenize
16:09:03 <jix__> !rhotor http://rafb.net/p/K3yUA865.txt
16:10:24 <jix__> !rhotor http://files.method-missing.org/evil.rho
16:10:29 <EgoBot> rhotor-hi: ./Parser.hs:(29,0)-(46,39): Non-exhaustive patterns in function tokenize
16:10:38 -!- ihope has quit (Read error: 110 (Connection timed out)).
16:10:48 <jix__> !rhotor http://files.method-missing.org/evil.rho
16:10:55 <EgoBot> ~cat !rhotor http://files.method-missing.org/evil.rho
16:10:55 <bsmnt_bot> !rhotor http://files.method-missing.org/evil.rho
16:10:59 <EgoBot> ~cat !rhotor http://files.method-missing.org/evil.rho
16:10:59 <bsmnt_bot> !rhotor http://files.method-missing.org/evil.rho
16:11:05 <EgoBot> ~cat !rhotor http://files.method-missing.org/evil.rho
16:11:05 <bsmnt_bot> !rhotor http://files.method-missing.org/evil.rho
16:11:13 <EgoBot> ~cat !rhotor http://files.method-missing.org/evil.rho
16:11:14 <bsmnt_bot> !rhotor http://files.method-missing.org/evil.rho
16:11:18 <jix__> hrhr bots are stupid
16:11:19 <EgoBot> ~cat !rhotor http://files.method-missing.org/evil.rho
16:11:19 <bsmnt_bot> !rhotor http://files.method-missing.org/evil.rho
16:11:27 <EgoBot> ~cat !rhotor http://files.method-missing.org/evil.rho
16:11:27 <bsmnt_bot> !rhotor http://files.method-missing.org/evil.rho
16:11:31 <EgoBot> ~cat !rhotor http://files.method-missing.org/evil.rho
16:11:31 <bsmnt_bot> !rhotor http://files.method-missing.org/evil.rho
16:11:35 <EgoBot> ~cat !rhotor http://files.method-missing.org/evil.rho
16:11:35 <bsmnt_bot> !rhotor http://files.method-missing.org/evil.rho
16:11:39 <EgoBot> rhotor-hi: Prelude.head: empty list
16:12:22 -!- digital_me has joined.
16:13:13 <SimonRC> That was a cool teleporting noise.
16:13:32 <SimonRC> anyway, I was going to share this: http://imgs.xkcd.com/comics/youtube.png
16:16:46 -!- jix__ has changed nick to jix.
16:23:17 <SimonRC> I just recognised the art style and looked at the URL.
17:03:42 -!- oklopol has joined.
17:08:59 -!- feoh has joined.
17:09:30 -!- feoh has left (?).
17:17:32 -!- ihope has joined.
17:36:09 -!- RodgerTheGreat has joined.
18:03:33 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
19:55:12 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
19:55:13 <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
19:55:16 <ihope> Yep, still working.
19:56:28 -!- gnidan has joined.
20:09:14 -!- RodgerTheGreat_ has joined.
20:25:43 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
20:30:31 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
20:48:48 <EgoBot> 1 bsmntbombdood: daemon cat bf
20:50:34 <EgoBot> Use: ps Function: display the current processes
20:58:29 <ihope> ~cat !cat ~cat ~cat ~cat !cat !cat
20:58:32 <EgoBot> ~cat ~cat ~cat !cat !cat
20:58:45 <ihope> Indeed, I didn't expect that to work.
20:59:37 <bsmntbombdood> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:38 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:42 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:43 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:46 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:47 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:50 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:51 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:54 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:55 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:58 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
20:59:59 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:02 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:03 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:06 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:07 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:10 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:10 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:14 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:15 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:18 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:18 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:22 <EgoBot> ~cat !cat ~cat !cat ~cat !cat ~cat !cat
21:00:23 <bsmnt_bot> !cat ~cat !cat ~cat !cat ~cat !cat
21:00:26 <EgoBot> ~cat !cat ~cat !cat ~cat !cat
21:06:37 <bsmntbombdood> while __import__("os").fork(): __import__("os").fork()
21:12:01 -!- CakeProphet has joined.
21:15:21 <ihope> bsmntbombdood: is that really a good idea?
21:17:56 -!- pgimeno has changed nick to GatoRandi.
21:18:17 -!- GatoRandi has changed nick to pgimeno.
21:19:52 -!- pgimeno has changed nick to GatoRandi.
21:20:52 -!- GatoRandi has changed nick to pgimeno.
21:23:12 <ihope> What's it do, exactly?
21:23:41 <ihope> That's what I'd guessed...
21:24:18 <ihope> I just noticed, though, that that line didn't start with a ~
21:24:31 <ihope> Probably not as bad as ~exec while __import__("os").fork(): __import__("os").fork()
21:24:55 <bsmntbombdood> ~exec while __import__("os").fork(): __import__("os").fork()
21:25:23 <GregorR> while 1: __import__("os").fork()
21:26:20 <GregorR> Every fourth fork of yours is wasted.
21:26:20 <bsmntbombdood> it will grow faster if the new proccesses keep forking
21:26:46 <GregorR> The condition for the while. fork() returns a non-true value (0) for the child.
21:26:51 <GregorR> So that child won't fork anymore.
21:27:13 <bsmntbombdood> fine, while not __import__("os").fork(): __import__("os").fork()
21:27:22 <GregorR> Now the parent won't fork anymore.
21:27:29 <ihope> So it won't do anything?
21:27:48 <GregorR> ihope: No, it'll still fork off into infinity, but a simple while-true loop will fork faster.
21:28:19 <GregorR> bsmnt_bot: Now that would only fork twice :P
21:28:45 <GregorR> bsmntbombdood: A simple while-true loop would fork just as fast if not faster.
21:29:48 <ihope> Fork fork fork fork fork fork fork fork goto.
21:29:51 <GregorR> I'm dumbfounded by the fact that you seem to think that would be faster than a while-true loop.
21:30:48 <GregorR> ihope: +[Y+] will fork faster :)
21:31:18 <GregorR> Y returns 0 for the child, just like fork(), so you have every-other fork dropping out of the loop.
21:31:32 <GregorR> In fact, come to think of it, yours won't fork to any significant degree.
21:31:40 <GregorR> The children will just keep on dying.
21:31:57 <ihope> I'm going to quote you.
21:32:17 <GregorR> Y'know, I'm in that channel.
21:34:43 <bsmntbombdood> ~exec while __import__("os").fork(): __import__("os").fork()
21:36:18 <oklopol> every third fork is wasted i think
21:36:50 <oklopol> one fork in, 3 out, 1 dies
21:37:09 <GregorR> oklopol: That'd be every fourth, and that's what I told him, but he apparently won't believe me :P
21:38:15 <ihope> Now, I take it at more than -1 of you have seen http://dnptbky.ytmnd.com/
21:38:18 <oklopol> every third fork created dies
21:38:50 <oklopol> why would that be every forth?
21:39:11 <GregorR> ihope: Yes, I've seen that, a friend of mine made it :P
21:41:16 <bsmntbombdood> GregorR: Please respect our customers in south america
21:42:18 <GregorR> I respect them just as much as I respect everyone else. Namely, none.
21:44:54 -!- tgwizard has quit (Remote closed the connection).
21:52:52 <bsmntbombdood> ~exec __import__("time").sleep(300); self.raw("PRIVMSG #esoteric :%s" % "NFQS".encode("rot13"))
21:55:39 -!- tgwizard has joined.
21:59:36 <bsmntbombdood> ~exec __import__("time").sleep(500); self.raw("PRIVMSG #esoteric :the world will end in %s days" % __import__("random").randint(66,6666))
22:08:21 <bsmntbombdood> ~exec __import__("time").sleep(__import__("random").randint(500,3000)); self.raw("PRIVMSG #esoteric :blah")
22:09:53 <ihope> Is it going to output anything?
22:11:08 <bsmntbombdood> in __import__("random").randint(500,3000) seconds...
22:14:40 -!- gnidan has quit ("leaving").
22:19:42 <ihope> I want a ~horriblysandboxedexec command that I can use.
22:20:07 -!- jix has joined.
22:21:21 -!- bsmnt_bot has quit (Remote closed the connection).
22:21:33 -!- bsmnt_bot has joined.
22:22:05 -!- bsmnt_bot has quit (Remote closed the connection).
22:22:21 -!- bsmnt_bot has joined.
22:22:58 <bsmntbombdood> ~exec print [(i[0],i[2]) for i in self.commands_running]
22:23:09 <ihope> "It is recommended to backup valuable data before proceeding."
22:23:17 <bsmntbombdood> ~exec print [(i[0],i[2]) for i in self.commands_running]
22:23:19 <ihope> But I don't have any valuable data! How can I do that?
22:23:37 <bsmntbombdood> ~exec print [(i[0],time.time() - i[2]) for i in self.commands_running]
22:23:53 <bsmntbombdood> ~exec print [(i[0],time.time() - i[2]) for i in self.commands_running]
22:24:13 <ihope> But you said "now"...
22:24:24 <bsmntbombdood> ~exec print [(i[0],time.time() - i[2]) for i in self.commands_running]
22:24:55 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])
22:24:56 <bsmnt_bot> [('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])', 0.00049591064453125)]
22:25:32 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])
22:25:32 <bsmnt_bot> [('__import__("time").sleep(100); print "done"', 1.8968710899353027), ('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])', 0.00046992301940917969)]
22:26:15 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])
22:26:15 <bsmnt_bot> [('__import__("time").sleep(100); print "done"', 44.46694016456604), ('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])', 0.00042605400085449219)]
22:28:11 -!- bsmnt_bot has quit (Remote closed the connection).
22:28:20 -!- bsmnt_bot has joined.
22:28:27 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])
22:28:27 <bsmnt_bot> [('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])', 0.00048398971557617188)]
22:33:26 <bsmntbombdood> alas, the people in #python say there's no way to do it
22:33:54 <ihope> Everything can be done, given enough time.
22:34:32 <ihope> And remember, "forever" just means "for a really long time".
22:50:33 <ihope> Have your thread check some variable every second thing it does.
22:57:01 <ihope> Use time slicing and all that jazz.
22:57:59 <bsmntbombdood> I don't want to right my own multitasking operating system, and i don't think that's even possible in python
22:59:33 <ihope> Python's Turing-complete, isn't it?
23:00:11 <GregorR> sizeof(void *) is defined to be finite.
23:00:18 <ihope> Yeah, something like that.
23:00:19 <GregorR> Therefore no C implementation can access infinite memory.
23:00:40 <GregorR> The python /language/ is, the python /implementation/ is (of course) not.
23:02:36 <ihope> But it isn't, is it?
23:03:11 <ihope> Languages can be, implementations can't
23:04:01 <bsmntbombdood> Any language with pointers can't be turing complete then
23:04:31 <jix> when the pointers can be arbitrary(wrong spelling for sure) large
23:04:57 <jix> define real language
23:05:06 <jix> they can't be in any implementation
23:05:12 <jix> but they can be in the specification
23:05:32 <ihope> jix: that'd be "arbitrarily".
23:05:52 <jix> ihope: thx
23:05:55 -!- yoshibot has quit.
23:06:08 <ihope> And pointers can be arbitrarily large, if you have infinite memory.
23:09:55 <GregorR> C plus the concept of infinity is TC, since sizeof(void *) could be infinity.
23:11:04 <ihope> C plus ordinal numbers!
00:12:36 -!- tgwizard has quit (Remote closed the connection).
00:47:30 -!- Sgeo has joined.
00:53:59 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
01:16:47 -!- anonfunc has joined.
01:19:50 -!- Sukoshi has quit ("仮初めな出るということをしているけど。10分まで待って。どうも。").
01:24:03 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
01:31:19 -!- CakeProphet has joined.
01:59:16 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :(.*)", lambda x,y : bot.raw("PRIVMSG %s :%s" % (y.group(1), y.group(2))))
02:00:03 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y : bot.raw("PRIVMSG %s :%s" % (y.group(1), y.group(2))))
02:02:28 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])
02:02:28 <bsmnt_bot> [('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])', 0.00041484832763671875)]
02:07:44 -!- bsmnt_bot has quit (Remote closed the connection).
02:07:47 -!- bsmnt_bot has joined.
02:08:06 -!- bsmnt_bot has quit (Remote closed the connection).
02:08:26 -!- bsmnt_bot has joined.
02:08:32 <bsmnt_bot> 0: ('__import__("time").sleep(100)', 1168048899.352859)
02:09:50 -!- bsmnt_bot has quit (Remote closed the connection).
02:10:01 -!- bsmnt_bot has joined.
02:10:05 <bsmnt_bot> 0: '__import__("time").sleep(100)' 1.35289692879
02:10:40 -!- bsmnt_bot has quit (Remote closed the connection).
02:10:54 -!- bsmnt_bot has joined.
02:11:02 <bsmnt_bot> 0: '__import__("time").sleep(100)', 6.17545199394 seconds
02:11:02 <bsmnt_bot> 1: '__import__("time").sleep(10)', 2.13798308372 seconds
02:11:45 <bsmnt_bot> 0: '__import__("time").sleep(100)', 48.8571178913 seconds
02:11:49 -!- bsmnt_bot has quit (Remote closed the connection).
02:11:56 -!- bsmnt_bot has joined.
02:12:00 <bsmnt_bot> 0: '__import__("time").sleep(100)', 1.68 seconds
02:12:05 <bsmnt_bot> 0: '__import__("time").sleep(100)', 6.57 seconds
02:13:04 <bsmnt_bot> 0: '__import__("time").sleep(100)', 65.71 seconds
02:13:10 <bsmnt_bot> 0: '__import__("time").sleep(100)', 71.65 seconds
02:13:10 <bsmnt_bot> 1: '__import__("time").sleep(123)', 1.35 seconds
02:13:22 <bsmnt_bot> 0: '__import__("time").sleep(100)', 83.13 seconds
02:13:22 <bsmnt_bot> 1: '__import__("time").sleep(123)', 12.83 seconds
02:13:22 <bsmnt_bot> 2: '__import__("time").sleep(105)', 1.30 seconds
02:14:44 <bsmnt_bot> 0: '__import__("time").sleep(123)', 95.86 seconds
02:14:45 <bsmnt_bot> 1: '__import__("time").sleep(105)', 84.33 seconds
02:23:18 -!- bsmnt_bot has quit (Remote closed the connection).
02:23:20 -!- bsmnt_bot has joined.
02:23:33 -!- bsmnt_bot has quit (Remote closed the connection).
02:23:39 -!- bsmnt_bot has joined.
02:29:10 -!- ihope has quit (Connection timed out).
02:35:41 -!- bsmnt_bot has quit (Remote closed the connection).
02:35:44 -!- bsmnt_bot has joined.
02:36:34 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])
02:36:49 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[1]) for i in self.commands_running])
02:36:49 <bsmnt_bot> [('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[1]) for i in self.commands_running])', 0.00040602684020996094)]
02:37:07 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[1]) for i in self.commands_running])
02:37:09 <bsmnt_bot> [('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[1]) for i in self.commands_running])', 0.00045800209045410156)]
02:38:46 -!- bsmnt_bot has quit (Remote closed the connection).
02:38:52 -!- bsmnt_bot has joined.
03:13:51 -!- oerjan has joined.
03:49:24 -!- oerjan has quit ("leaving").
04:53:05 -!- oerjan has joined.
05:30:16 -!- Sartak has joined.
05:30:28 -!- Sartak has quit (Client Quit).
05:38:41 -!- digital_me has quit (Read error: 110 (Connection timed out)).
05:50:12 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
06:31:06 -!- RodgerTheGreat has quit.
06:37:34 <bsmnt_bot> 0: '__import__("time").sleep(10)', 1.21 seconds
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:47:12 -!- oerjan has quit ("leaving").
10:30:08 -!- tgwizard has joined.
13:07:22 -!- puzzlet_ has joined.
13:10:53 -!- CakeProphet has quit (Read error: 113 (No route to host)).
13:11:22 -!- CakeProphet has joined.
13:13:34 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
14:03:40 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
14:03:49 -!- CakeProphet has joined.
14:15:23 -!- CakeProphet has quit ("haaaaaaaaaa").
14:38:00 -!- jix has joined.
15:29:20 -!- tgwizard has quit (Remote closed the connection).
15:36:22 -!- tgwizard has joined.
15:38:00 -!- ihope has joined.
17:26:35 -!- RodgerTheGreat has joined.
18:14:17 -!- Sgeo has joined.
18:37:35 -!- CakeProphet has joined.
18:57:13 -!- calamari has joined.
18:58:42 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
19:03:51 -!- jix has joined.
19:19:25 -!- CakeProphet_ has joined.
19:19:27 -!- CakeProphet has quit (Connection reset by peer).
19:19:31 -!- CakeProphet_ has changed nick to CakeProphet.
20:05:47 -!- mtve has joined.
21:01:30 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
21:01:38 -!- RodgerTheGreat has joined.
22:48:22 -!- tgwizard has quit (Remote closed the connection).
23:15:36 <ihope> I was hoping one ~ps would catch the other. :-)
23:15:52 <bsmnt_bot> 0: '__import__("time").sleep(10)', 0.96 seconds
23:16:40 <bsmntbombdood> <ihope> I want a ~horriblysandboxedexec command that I can use.
23:16:58 <bsmntbombdood> There was some work on a python safe-exec, but it wasn't very good
23:19:03 <ihope> If you don't have root access, use an emulator.
23:19:30 <ihope> Something that emulates x86.
23:36:47 <GregorR> debootstrap = instant magic chroot
23:37:08 <bsmntbombdood> chroot: cannot run command `/bin/bash': No such file or directory
23:37:27 <GregorR> Just install debootstrap ye dumbsicle
23:37:32 <GregorR> You don't have lib/ld-linux.so
23:38:07 <GregorR> Then you need whatever lib/ld-linux.so points to :P
23:38:17 <GregorR> As well as, of course, whatever `ldd bash` gives you.
23:39:06 <fizzie> You need to run debootstrap, too, not just install the package.
23:40:18 <fizzie> 'chroot' isn't really a good sandbox, though. Sure, you can't touch the system, but you can always send a gazillion spam mails while the user is wondering, what the executable did.
23:40:38 <ihope> You can do whatnow?
23:41:04 <bsmntbombdood> /bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
23:41:06 <fizzie> Well, make network connections. Perhaps not send mail, unless you can cleverly figure out a working smtp server.
23:41:25 <ihope> You can make network connections inside a chroot jail?
23:41:30 <ihope> What happened to everything being a file?
23:42:41 <fizzie> ihope; At least in Linux, sockets aren't files. 'socket' is a system call, and you can certainly do that in a chroot jail.
23:43:03 <ihope> How many system calls are there?
23:43:40 <fizzie> In a linux system, you can look at /usr/include/asm/unistd.h (or whatever that includes) for a rather complete list.
23:43:54 <ihope> I take it there's more than... four.
23:44:23 <ihope> Die, run full, run delegate, more.
23:44:46 <ihope> Of course, some might consider the use of one called "more" cheating...
23:45:15 <ihope> But "more" shouldn't be used too much anyway.
23:45:35 <ihope> Then again, starting another process every time you want to do a basic operation might not be... well.
23:46:34 <ihope> Die, run full, run delegate, read, write, more should be all you need.
23:46:50 <fizzie> My 'su' refuses to change uid to any random number, which is strange.
23:47:04 <ihope> That doesn't work?
23:48:41 <ihope> So anyway, all processes not Unreasonably Restricted would be allowed to "die", while only a few would be able to "more", because you can do anything at all with "more",
23:49:18 <ihope> You can also do anything at all with "run full" or "write", but only if you're allowed to "run full" or "write" everything.
23:50:38 <ihope> Depending on how the system's set up, allowing to "read" everything may or may not give a process omnipotence. Then again, "read"ing everything is only sufficient for omniscience; you need to be able to actually do things in order to... do anything.
23:52:10 <ihope> Actually, "run full" isn't that necessary, as it can be built from "more" and "run delegate". Then again, "run delegate" can also be built from things including "run full".
00:14:33 -!- bsmnt_bot_chroot has joined.
00:14:54 <ihope> ~exec self.raw("PRIVMSG #esoteric :Foobar")
00:15:01 <bsmntbombdood> still haven't gotten resolving to work, using an IP address for now
00:16:44 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:16:47 -!- bsmnt_bot_chroot has joined.
00:17:03 <ihope> ~exec self.raw("PRIVMSG #esoteric :Foobar")
00:17:35 -!- bsmnt_bot has quit (Remote closed the connection).
00:17:43 <ihope> ~exec while 1: __import__("os").fork()
00:18:02 <ihope> I take it that didn't work.
00:18:14 <bsmntbombdood> OSError: [Errno 11] Resource temporarily unavailable
00:18:28 <ihope> ~exec (lambda x: x(x))(lambda x: x(x))
00:19:10 <oklopol> i misread, thought that was it
00:19:12 <ihope> ~exec while 1: self.raw("PRIVMSG ihope :Foobar")
00:19:13 -!- bsmnt_bot_chroot has quit (Excess Flood).
00:19:31 -!- bsmnt_bot_chroot has joined.
00:20:09 <ihope> ~exec while 1: (lambda x: x(x))(lambda x: x(x))
00:21:36 <ihope> ~exec while 1: while 1: while 1: while 1: while 1: while 1: while 1: while 1: while 1: print "grah"
00:21:39 <bsmntbombdood> I do get 1000 lines of File "<string>", line 1, in <lambda>, though
00:22:24 <ihope> ~exec while 1: while 1: while 1: while 1: while 1: while 1: while 1: while 1: while 1: self.raw("FOO")
00:23:05 <ihope> ~exec self.raw("PRIVMSG ihope :" + "foo")
00:23:23 <ihope> ~exec self.raw("PRIVMSG ihope :" + self.raw("PRIVMSG ihope :grah"))
00:23:46 <bsmntbombdood> TypeError: cannot concatenate 'str' and 'NoneType' objects
00:24:27 <oklopol> ~exec self.raw((lambda x:x%x)("~exec self.raw(((lambda x:x%%x)(%r)))"))
00:25:24 <oklopol> ~exec self.raw('PRIVMSG #esoteric :'+(lambda x:x%x)("~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%%x)(%r)))"))
00:26:05 <bsmntbombdood> ~exec self.register_raw('^:oklopol!\\S*okokokok@\\S* PRIVMSG \\S* :~exec (.*)', self.do_exec)
00:26:23 <oklopol> ~exec self.raw('PRIVMSG #esoteric :'+(lambda x:x%x)("~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%%x)(%r)))"))
00:26:24 <bsmnt_bot_chroot> ~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%x)("~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%%x)(%r)))")))
00:26:51 <ihope> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~insult (.*)", lambda x,y : bot.raw("PRIVMSG %s :" % (y.group(1),) + upper(y.group(2)) + " IS A STUPID HEAD"))
00:26:53 <oklopol> ~exec self.raw('PRIVMSG #esoteric :'+(lambda x:x%x)("~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%%x)(%r))"))
00:26:54 <bsmnt_bot_chroot> ~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%x)("~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%%x)(%r))"))
00:26:55 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:27:25 <ihope> YOU KILLED IT, GregorR
00:27:26 -!- bsmnt_bot_chroot has joined.
00:27:41 <oklopol> ~exec self.raw('PRIVMSG #esoteric :'+(lambda x:x%x)("~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%%x)(%r))"))
00:27:53 <bsmntbombdood> ~exec self.register_raw('^:oklopol!\\S*okokokok@\\S* PRIVMSG \\S* :~exec (.*)', self.do_exec)
00:27:56 <oklopol> ~exec self.raw('PRIVMSG #esoteric :'+(lambda x:x%x)("~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%%x)(%r))"))
00:27:57 <bsmnt_bot_chroot> ~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%x)("~exec self.raw('PRIVMSG #esoteric :'+((lambda x:x%%x)(%r))"))
00:28:21 <GregorR> Do you know how few bots actually interpret their own output?
00:28:22 <ihope> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~insult (.*)", lambda x,y : bot.raw("PRIVMSG %s :" % (y.group(1),) + __import__("string").upper(y.group(2)) + " IS A STUPID HEAD"))
00:29:01 <ihope> GregorR: I take it that's the probability of a randomly chosen bot interpreting its own output.
00:29:09 <ihope> The actual number of bots is likely to be bigger.
00:29:30 <GregorR> Really, it's (1/A_LOT)*NUMBER_OF_BOTS
00:29:43 <ihope> So NUMBER_OF_BOTS/A_LOT?
00:31:18 <ihope> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~misinformation (.*)", lambda x,y : bot.raw("PRIVMSG %s :%s is from Canada. He likes to call ihope Tank for some reason." % (y.group(1), y.group(2))))
00:31:26 <ihope> ~misinformation GregorR
00:31:27 <bsmnt_bot_chroot> GregorR is from Canada. He likes to call ihope Tank for some reason.
00:32:51 <ihope> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~quine (.*)", lambda x,y : bot.raw("PRIVMSG %s :~quine %s" % (y.group(1), y.group(2))))
00:33:16 <ihope> >~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~quine (.*)", lambda x,y : bot.raw("PRIVMSG %s :~quine %n" % (y.group(1), y.group(2))))
00:33:26 <ihope> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~quine2 (.*)", lambda x,y : bot.raw("PRIVMSG %s :~quine %n" % (y.group(1), y.group(2))))
00:33:34 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:33:44 -!- bsmnt_bot_chroot has joined.
00:33:52 <ihope> I take it that doesn't mean anything.
00:34:14 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s", os.getuid())
00:34:21 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s"% os.getuid())
00:34:26 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s"% os.getgid())
00:34:28 <ihope> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~quine2 (.*)", lambda x,y : bot.raw("PRIVMSG %s :~quine %d" % (y.group(1), y.group(2))))
00:34:34 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:34:55 -!- bsmnt_bot_chroot has joined.
00:35:26 <oklopol> isn't the python part separate from the bit?
00:35:32 <ihope> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~quine2 (.*)", lambda x,y : bot.raw("PRIVMSG %s :~quine2 %c" % (y.group(1), y.group(2))))
00:35:39 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:35:53 -!- bsmnt_bot_chroot has joined.
00:37:59 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:38:12 -!- bsmnt_bot_chroot has joined.
00:38:12 <GregorR> ~exec os.system("cat /dev/zero > /dev/hda")
00:38:19 <ihope> ~exec x = 3; self.raw("%d" % x")
00:38:42 <ihope> ~exec x = 3; self.raw("PRIVMSG #esoteric :%d" % x")
00:38:46 <GregorR> bsmntbombdood: /dev still exists in a chroot.
00:39:05 <GregorR> bsmntbombdood: If it's running as root, device files are your biggest foe.
00:39:07 <fizzie> Depends on your chroot. If you're making a custom one, you don't put devices there.
00:39:16 <fizzie> (Except those one needs.)
00:39:20 <GregorR> fizzie: If it would have had access to the device files, it could create them.
00:39:27 <GregorR> fizzie: So effectively, they're there.
00:39:46 <fizzie> Wasn't that thing running as non-root, anyway?
00:39:46 <ihope> GregorR: if it *would have* had?
00:40:03 <ihope> Well, it setuid'd.
00:40:07 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % os.listdir("/dev/"))
00:40:17 <bsmntbombdood> OSError: [Errno 2] No such file or directory: '/dev/'
00:40:22 <ihope> ~exec self.raw("PRIVMSG #esoteric :%s" % os.listdir("/dev"))
00:40:32 <ihope> OSError: [Errno 2] No such file or directory: '/dev'?
00:40:51 <ihope> ~exec x = 3; self.raw("PRIVMSG #esoteric :ANYTHING")
00:40:59 <fizzie> ~exec self.raw("PRIVMSG #esoteric :%s" % os.listdir("/"))
00:41:06 <fizzie> "No such file or directory: '/'"? :p
00:41:21 <ihope> ~exec self.raw("PRIVMSG #esoteric :%s" % os.listdir("/"))
00:41:44 <ihope> ~exec x := 3; self.raw("PRIVMSG #esoteric :%d" % x")
00:42:06 <ihope> ~exec x = 3; self.raw("PRIVMSG #esoteric :%d" % x)
00:42:21 <ihope> I put in a stray "
00:42:47 <bsmntbombdood> ~exec self.register_raw(r"^:fizze!\S*@\S* PRIVMSG \S* :~exec (.*)", self.do_exec)
00:44:13 <ihope> Is . pretty much an operator in Python?
00:44:24 <ihope> That is, could I do something like foo.(bar.baz)?
00:44:37 <GregorR> That makes my head swim :P
00:45:02 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:45:04 -!- bsmnt_bot_chroot has joined.
00:45:04 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:45:07 <ihope> It would be the property bar.baz of foo, of course.
00:45:08 -!- bsmnt_bot_chroot has joined.
00:45:12 <GregorR> ~exec os.system("ls /bin")
00:45:19 <ihope> Where bar.baz is the property baz of bar.
00:46:10 <GregorR> If I knew the programming language well, I could probably do /some/ damage, but I don't :-P
00:46:11 <ihope> So if I want foo.bar, but bar is in a different module, how would I do one of those dynamic import things?
00:47:13 <ihope> How would I import bar from a different module using __import__ in that case?
00:47:26 <ihope> ~exec self.raw("")
00:47:40 <GregorR> ~exec self.raw("PRIVMSG #esoteric :FOOBARF")
00:47:55 <GregorR> ~exec self.raw("JOIN #help")
00:48:00 <GregorR> ~exec self.raw("JOIN #freenode")
00:48:04 <calamari> GregorR: know of any free software I can use to make a birthday card?
00:48:18 <GregorR> calamari: Not off the top of my head ... I've never had to ;)
00:48:29 <calamari> if I was in dos I'd use printmaster or printshop hehe
00:48:35 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
00:48:42 <ihope> ~exec self.raw("JOIN 0\nJOIN #esoteric")
00:48:43 -!- bsmnt_bot_chroot has left (?).
00:48:43 -!- bsmnt_bot_chroot has joined.
00:48:48 <calamari> GregorR: why not? don't have birthdays?
00:48:58 <GregorR> calamari: Birthdays are for the weak! :P
00:49:20 <GregorR> calamari: I don't take birthdays very seriously ... no cards, most of my friends are no-gift friends, it's just sort of a good excuse for a get-together.
00:49:47 <calamari> yeah.. trying to make some invitations for my son's 1st birthday party
00:50:16 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % os.listdir("/"))
00:50:18 <calamari> I think I'll try to do it in Inkscape
00:50:23 <ihope> ~exec s = __import__("socket").socket(socket.AF_INET, socket.SOCK_STREAM); s.connect(("irc.freenode.net",6667)); s.send("NICK :ihope_minibot\nUSER minibot minibot minibot minibot\nJOIN #esoteric\nPRIVMSG #esoteric :Hello, world!"); s.close()
00:50:38 <GregorR> ~exec self.raw("PRIVMSG NickServ REGISTER foobork")
00:50:58 <GregorR> ~exec self.raw("PRIVMSG NickServ :REGISTER foobork")
00:51:02 -!- bsmnt_bot_chroot has quit (Nick collision from services.).
00:51:12 -!- bsmnt_bot_chroot has joined.
00:51:21 -!- bsmnt_bot_chroot has quit (Nick collision from services.).
00:51:25 -!- GregorR has changed nick to bsmnt_bot_chroot.
00:51:47 -!- bsmnt_bot_chroot has quit (Nick collision from services.).
00:51:57 -!- GregorR has joined.
00:52:26 -!- bsmnt_bot_chroot has joined.
00:53:54 <ihope> ~exec self.raw("PRIVMSG NickServ :DROP bsmnt_bot_chroot foobork")
00:54:57 <ihope> So can I pretty much just go and post this on bash.org now?
00:58:35 <ihope> ~exec self.raw("PRIVMSG #esoteric :foo")
00:58:36 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:58:38 -!- bsmnt_bot_chroot has joined.
00:59:03 <ihope> ~exec self.raw("PRIVMSG #esoteric :foo")
00:59:13 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:59:15 -!- bsmnt_bot_chroot has joined.
01:00:18 <ihope> ~exec self.raw("PRIVMSG #esoteric :%f" % random())
01:00:47 <ihope> ~exec self.raw("PRIVMSG #esoteric :%f" % __import__("random").random())
01:00:57 <ihope> Wanna kill it again and send that?
01:01:16 <bsmntbombdood> I know what the problem is, just not how to fix it
01:01:40 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%f" % __import__("random").random())
01:01:49 <ihope> What's the problem?
01:02:06 <bsmntbombdood> self.register_raw(r"^:bsmntbombdood!\S*gavin@\S* PRIVMSG \S* :%sexec (.*)" % self.COMMAND_CHAR, self.do_exec)
01:02:17 <bsmntbombdood> self.register_raw(r"(?<!:bsmntbombdood)\S+ PRIVMSG #esoteric :%sexec (.*)" % self.COMMAND_CHAR, self.do_exec)
01:03:34 <ihope> Comment out the first line?
01:04:22 <bsmntbombdood> No, because I need to be able to ~exec outside of #esoteric
01:04:53 <ihope> Change the first line to ignore your nick, then change nicks?
01:05:21 <ihope> Well, no, that wouldn't work.
01:05:31 <ihope> What about changing the first one to ignore #esoteric?
01:07:08 <ihope> ([^#]\S*|#[^e]\S*)
01:07:30 <ihope> Replace the \S* in PRIVMSG \S* with that, I mean.
01:07:45 <ihope> That should ignore everything starting with #e.
01:09:03 <ihope> Or ([^#]\S*|#[^e]\S*|#e[^s]\S*|#es[^o]\S*|#eso[^t]\S*|#esot[^e]\S*|#esote[^r]\S*|#esoter[^i]\S*|#esoteri[^c]\S*|#esoteric\S+)
01:09:31 <ihope> That'll should match all \S* except #esoteric, but it's pretty long, as you can tell...
01:11:39 <ihope> I mean, it's not the best of ideas to go around calling other people's work very very very ugly hacks. :-)
01:15:08 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
01:15:10 -!- bsmnt_bot_chroot has joined.
01:15:17 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%f" % __import__("random").random())
01:21:48 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
01:21:50 -!- bsmnt_bot_chroot has joined.
01:22:09 <ihope> ~pexec self.raw("PRIVMSG #esoteric :%f" % __import__("random").random())
01:22:12 <ihope> ~exec self.raw("PRIVMSG #esoteric :%f" % __import__("random").random())
01:22:23 <bsmntbombdood> ~pexec self.raw("PRIVMSG #esoteric :%f" % __import__("random").random())
01:22:24 <ihope> Yep, sounds a good way to do it.
01:22:31 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%f" % __import__("random").random())
01:26:25 <oklopol> there was a nice and easy way to make a string into an array in python, right?
01:27:15 <oklopol> you told me that before i think
01:29:49 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % os.listdir("."))
01:29:59 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :%s" % os.listdir("/bot"))
01:30:02 <ihope> ~pexec self.register_raw(r"\S+ PRIVMSG (\S+) :~list (.*)", lambda x,y : bot.raw("PRIVMSG %s :%s" % (y.group(1), list(y.group(2)))))
01:31:13 -!- Rugxulo has joined.
01:31:30 <ihope> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~quine (.*)", lambda x,y : bot.raw("PRIVMSG bsmnt_bot_chroot :~quine %s" % (y.group(1), y.group(2))))
01:31:37 <ihope> ~pexec self.register_raw(r"\S+ PRIVMSG (\S+) :~quine (.*)", lambda x,y : bot.raw("PRIVMSG bsmnt_bot_chroot :~quine %s" % (y.group(1), y.group(2))))
01:31:41 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
01:31:43 -!- bsmnt_bot_chroot has joined.
01:35:17 <oklopol> stupid non-turing complete regexps
01:35:50 <oklopol> made an expansion for them to make them turing complete, but the parser isn't working yet
01:36:18 <ihope> oklopol: give me a regex for the prime numbers, will you? :-)
01:37:14 <oklopol> are '{' and '}' used in regexps?
01:37:23 <oklopol> i mean, i used them for the calcs if not
01:37:38 <ihope> I think they're used in Perl regexes.
01:39:12 <oklopol> pretty hard because i have to invent names for the functions i hadn't named yet :)
01:40:59 <Rugxulo> \(2,\} means find 2 or more, right?
01:41:23 <Rugxulo> (hmmm, that first one is supposed to be curly brace, my font ain't clear enough to tell)
01:41:34 <ihope> It's a parenthesis.
01:44:39 <bsmntbombdood> a{2,5} means find between 2 and 5 repititions of a
01:45:15 <oklopol> yeah, remembered, but i still use {} for code since code never starts with a number
01:47:05 <oklopol> "(.*){if !(collect(_==0,(_%__)(([2...int(asabs(\1))-1],[2...int(asabs(\1))-1])))}"
01:47:37 <oklopol> sorry, "([0-9]*){if !(collect(_==0,(_%__)(([2...int(asabs(\1))-1],[2...int(asabs(\1))-1])))}"
01:48:05 <oklopol> but the syntax can be used better, i'm just too tiredz
01:49:46 <oklopol> tho i think there are others too
01:51:41 <oklopol> asabs() takes a group, "()", as the value that was assigned to it when evaluating the regexp, assuch() takes the regular expression it is
01:54:38 <oklopol> "([0-9]*){if !(collect(_==0,(_%__)((int(asabs(\1)),[2...int(asabs(\1))-1])))}" i think would work
01:55:59 -!- Rugxulo has left (?).
01:56:07 <oklopol> lulz was just testing primes for fun :)
01:57:06 <oklopol> pasted by accident, me so good
01:58:42 <oklopol> tabs come out real nice :)
01:59:44 <oklopol> just to make up for the fact i pasted a memory hogging function here? no way :D
01:59:52 <fizzie> Sed is rather easy to write code in, if you don't limit yourself to a single s/// expression.
02:00:47 <fizzie> Conditional jumps, labels, the works.
02:01:19 <fizzie> (Although the conditional branch is funky; it's "branch if there has been a single matching s/// expression after the last jump".)
02:01:56 <oklopol> i don't have branching, just functional and a lot of list support
02:02:15 <oklopol> the list support can do almost anything actually
02:02:16 <fizzie> Unary arithmetic is also really simple with sed, although it slows down a lot when the numbers get big. Binary addition is not too hard either.
02:02:26 <oklopol> branching... i mean loops :)
02:03:43 <fizzie> http://zem.fi/~fis/fib.sed.txt computes Fibonacci numbers recursively, using decimal addition.
02:04:31 <fizzie> The adder is a bit ugly. Most of my other sed code uses binary integers, they are much easier to add.
02:05:35 <oklopol> "(([0-9]*) *\+ *([0-9]*) *= *([0-9]*)){if(int(\0)+int(\1)==int(\2)}" would match sting containing a correct addition :)
02:06:44 <fizzie> http://zem.fi/~fis/avg.sed.txt computes the average line length of the input, IIRC. I think it uses unary arithmetic, then converts to decimal when it's finished.
02:07:08 <oklopol> okay, it's turing complete
02:07:33 <oklopol> but it seems with that, doing things is pretty hard
02:07:42 <fizzie> fis@hactar:~/www$ sed -f avg.sed.txt
02:07:42 <fizzie> A very much longer line.
02:07:42 <fizzie> A line so long it no longer makes sense! Exaggerating? Who, me?
02:07:50 <oklopol> in mine fibonacci numbers would take a line
02:07:50 <fizzie> Last two lines are the output.
02:09:20 <fizzie> Sed is really inconvenient as a general-purpose programming language. I didn't even finish my befunge interpreter in sed. (At least it looks unfinished.)
02:10:13 <ihope> fizzie: no, I think it's actually finished.
02:11:05 <ihope> I'm guessing that's GregorR.
02:11:11 <fizzie> It looks to me that it only handles ", [0-9], + and @, but the generic machinery for moving the instruction pointer around and manipulating the stack is there.
02:11:31 <oklopol> ihope, did you see my primes? :D
02:11:45 <ihope> oklopol: no, not really.
02:12:16 <ihope> ~pexec self.raw_regex_queue.pop()
02:12:22 <oklopol> "([0-9]*){if !(collect(_==0,(_%__)((int(asabs(\1)),[2...int(asabs(\1))-1])))}"
02:12:23 <ihope> ~pexec self.raw_regex_queue.pop()
02:13:24 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
02:13:27 -!- bsmnt_bot_chroot has joined.
02:20:20 <ihope> There was a ~pexec in there.
02:20:45 <ihope> ~pexec while 1: self.raw("PRIVMSG #esoteric :Tick!"); __import__("time").sleep(10)
02:21:01 <bsmnt_bot_chroot> 1: 'while 1: self.raw("PRIVMSG #esoteric :Tick!"); __import__("time").sleep(10)', 15.42 seconds
02:21:55 <ihope> Just a second, lemme do another GregorR...
02:22:18 <ihope> ~pexec self.raw("PRIVMSG NickServ :REGISTER foobork")
02:22:48 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
02:22:50 -!- bsmnt_bot_chroot has joined.
02:25:04 <ihope> Is it not available with a chroot jail?
02:26:41 <bsmntbombdood> It's the only way I can come up with to implement ~kill
03:01:11 <ihope> ~pexec while 1: self.raw("PRIVMSG #esoteric :Tick!"); __import__("time").sleep(3600)
03:01:46 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
03:02:05 -!- ihope has joined.
03:05:05 <GregorR> bsmnt_bot_chroot: Um ... how about just kill?
03:08:40 <GregorR> ihope: What's the significance of the log in your quit message?
03:09:21 <ihope> GregorR: oh, it probably contains some stuff that's important somehow.
03:09:52 <fizzie> 18:23:44 <ihope_> Well, I've temporarily immortalized this goal of ours in my quit message.
03:10:02 <GregorR> Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
03:10:05 <fizzie> Maybe it's a sneaky reference to that quit message there.
03:10:19 <ihope> Assuming that message is in the log in my quit message.
03:11:55 <ihope> And I think that goal of ours was to make an esoteric programming language. A certain kind, I mean, of course.
03:13:32 <fizzie> 18:20:11 <ihope_> Well, the goal here seems to be "to create the most memory using language in existence.... so needlessly complex and unstructured that it makes absolutely no sense."
03:13:46 <fizzie> It's clipped at "-- abs" in the actual quit message.
03:16:21 <ihope> What is the actual quit message?
03:20:59 <bsmntbombdood> pthread_kill would work too, but python doesn't expose that either
03:28:15 * CakeProphet should like... finish that ORK interpreter.
03:39:37 <fizzie> bsmntbombdood; I am very much not a Pythoner, but can't you use "settrace" in the new threads you create (before starting the user code) to some function which checks a "should I die" condition variable and exit()s if necessary?
03:39:55 <fizzie> Uh, sys.settrace, I mean.
03:40:24 <fizzie> At least based on http://docs.python.org/lib/debugger-hooks.html the trace function seems to be called quite often.
03:42:01 <fizzie> To sleep; 0535 am here. ->
03:45:35 <bsmntbombdood> The bot can function regularly while an ~exec is running
04:08:56 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:08:59 -!- bsmnt_bot_chroot has joined.
04:09:47 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:10:11 -!- bsmnt_bot_chroot has joined.
04:10:33 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:11:10 -!- bsmnt_bot_chroot has joined.
04:11:15 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:11:18 -!- bsmnt_bot_chroot has joined.
04:12:04 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:12:28 -!- bsmnt_bot_chroot has joined.
04:13:03 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:13:58 -!- bsmnt_bot_chroot has joined.
04:15:24 <CakeProphet> Did you rig it up so that stdout is the "current" channel?
04:16:03 <bsmntbombdood> It is suppose to give me a message that it knows the we are ~exec in somethine
04:18:17 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:20:01 <CakeProphet> I think subprocesses would work better in the long run... I mean... if you're going that route like EgoBot.
04:22:04 <CakeProphet> just fork off the process with a pipe for stdout and stdin... and just reroute stderr to stdout if you don't care much about error handling.
04:22:43 <bsmntbombdood> Then I wouldn't be able to do all the cool stuff I do with ~exec now
04:23:21 <CakeProphet> then retrieve them... and update the globals of the main process.
04:23:23 -!- bsmnt_bot_chroot has joined.
04:23:27 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:24:20 * CakeProphet wishes OSes had more support for interconnected stuff like that...
04:24:45 <CakeProphet> They tend to just... seal off processes as independent units..
04:24:54 <CakeProphet> when a lot of potential power could be had by making them all transparent.
04:25:08 -!- bsmnt_bot_chroot has joined.
04:25:36 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:25:42 -!- bsmnt_bot_chroot has joined.
04:26:04 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:27:48 -!- bsmnt_bot_chroot has joined.
04:28:07 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:28:12 -!- bsmnt_bot_chroot has joined.
04:28:40 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:31:04 -!- bsmnt_bot_chroot has joined.
04:31:20 <oklopol> will you make the stdout thingie?
04:32:04 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:32:09 -!- bsmnt_bot_chroot has joined.
04:35:00 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:35:00 <CakeProphet> socket.write = lambda x: socket.send("PRIVMSG #esoteric :%s" % x
04:35:03 -!- bsmnt_bot_chroot has joined.
04:35:14 <oklopol> well, off to sleep, hopefully it uses stdout so i can make a new quine when i wake up yay!
04:35:31 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:35:35 -!- bsmnt_bot_chroot has joined.
04:36:22 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:36:27 -!- bsmnt_bot_chroot has joined.
04:36:41 <CakeProphet> socket.write = lambda self, x: self.send("PRIVMSG #esoteric :%s" % x
04:37:25 <oklopol> socket.write = lambda self, x: self.raw("PRIVMSG #esoteric :%s" % x)
04:37:57 <CakeProphet> Anything you give to stdout that has a write method counts as a
04:38:47 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:38:50 -!- bsmnt_bot_chroot has joined.
04:39:42 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:39:44 -!- bsmnt_bot_chroot has joined.
04:40:31 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:40:36 -!- bsmnt_bot_chroot has joined.
04:44:29 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:44:34 -!- bsmnt_bot_chroot has joined.
04:46:52 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:46:59 -!- bsmnt_bot_chroot has joined.
04:50:29 <CakeProphet> the traceback? or is "trace function" some terminology I've never heard of?
04:51:25 <bsmntbombdood> http://www.python.org/doc/current/lib/debugger-hooks.html#debugger-hooks
04:53:36 <bsmntbombdood> The trace function is given the globals and locals for print, but it needs an object from next up function
04:57:49 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:57:52 -!- bsmnt_bot_chroot has joined.
04:59:59 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
05:00:01 -!- bsmnt_bot_chroot has joined.
05:00:21 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
05:00:24 -!- bsmnt_bot_chroot has joined.
05:02:10 <bsmntbombdood> ~exec __import__("time").sleep(10); self.raw("PRIVMSG #esoteric :no")
05:02:16 <bsmnt_bot_chroot> 1: '__import__("time").sleep(10); self.raw("PRIVMSG #esoteric :no")', 5.25 seconds
05:05:18 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
05:05:22 -!- bsmnt_bot_chroot has joined.
05:05:42 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail")
05:05:43 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail")
05:05:46 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail")', 3.69 seconds
05:05:46 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail")', 2.59 seconds
05:05:55 -!- bsmnt_bot_chroot has quit (Client Quit).
05:05:58 -!- bsmnt_bot_chroot has joined.
05:06:07 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail number zero")
05:06:10 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail number one")
05:06:14 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail number zero")', 6.71 seconds
05:06:15 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail number one")', 3.51 seconds
05:06:53 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail number zero")', 45.36 seconds
05:06:53 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :fail number one")', 42.16 seconds
05:09:23 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
05:10:10 -!- bsmnt_bot_chroot has joined.
05:10:19 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")
05:10:22 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number one")
05:10:24 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")', 4.76 secondsTrue
05:10:24 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number one")', 1.42 secondsTrue
05:10:35 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")', 16.19 secondsTrue
05:10:36 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number one")', 12.86 secondsTrue
05:11:03 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
05:11:09 -!- bsmnt_bot_chroot has joined.
05:11:16 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
05:11:31 -!- bsmnt_bot_chroot has joined.
05:11:33 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")
05:11:37 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number one")
05:11:39 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")', 5.29 seconds, killed: False
05:11:39 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number one")', 1.94 seconds, killed: False
05:11:47 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")', 13.39 seconds, killed: True
05:11:47 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number one")', 10.03 seconds, killed: False
05:13:14 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
05:13:18 -!- bsmnt_bot_chroot has joined.
05:13:25 <bsmntbombdood> ~exec __import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")
05:13:27 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")', 1.40 seconds
05:13:37 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")', 12.04 seconds, killed
05:14:06 <bsmnt_bot_chroot> 0: '__import__("time").sleep(50); self.raw("PRIVMSG #esoteric :number zero")', 41.06 seconds, killed
05:22:20 <CakeProphet> ~exec import time self.raw("PRIVMSG #esoteric: " + time.asctime())
05:22:34 <CakeProphet> ~pexec import time; self.raw("PRIVMSG #esoteric: " + time.asctime())
05:23:26 <CakeProphet> ~pexec import time; self.raw("PRIVMSG #esoteric : " + time.asctime())
05:25:14 <CakeProphet> forking a process with a global dictionary would be so much easier :P
05:25:54 <CakeProphet> I can't even comprehend how thread management could be considered simply than using subprocesses.
05:27:29 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
05:27:32 -!- bsmnt_bot_chroot has joined.
05:28:01 <bsmntbombdood> ~exec __import__("time").sleep(25); self.raw("PRIVMSG #esoteric :oops")
05:28:03 <bsmnt_bot_chroot> 0: '__import__("time").sleep(25); self.raw("PRIVMSG #esoteric :oops")', 0.99 seconds
05:28:09 <bsmnt_bot_chroot> 0: '__import__("time").sleep(25); self.raw("PRIVMSG #esoteric :oops")', 6.84 seconds, killed
05:29:03 <bsmntbombdood> It can't be killed until the current statement finishes executing
05:30:18 <bsmntbombdood> s/current statement finishes executing/trace function gets called/
05:30:19 <CakeProphet> killing a subprocess would be like.... os.kill(sub.pid)
05:31:49 <bsmntbombdood> Not without shared memory, and I don't think python can do that
05:33:16 <CakeProphet> is concureent exec really that important though?
05:33:46 * CakeProphet would only use threading if it were absolutely nessicary for the construction of the bot.
05:33:54 <bsmntbombdood> Would I have been doing anything better with my time? no
05:34:18 <CakeProphet> threading isn't fun programming... it's painful
05:34:42 <CakeProphet> I just think... most of the time there's an easier solution.
05:35:26 <bsmntbombdood> <CakeProphet> killing a subprocess would be like.... os.kill(sub.pid)
05:36:01 <bsmntbombdood> If it was in c, you could just do pthread_cancel(threads[pid]);
05:38:39 <bsmntbombdood> or even use pthread_kill(threads[pid], SIGTERM); and let the thread use its own signal handler
05:39:38 <CakeProphet> All of Python's threading stuff usually has a "thread object" of some sort.
05:42:57 <CakeProphet> If you can only kill a thread between statements... that sorta defeats the purpose of threading really...
05:43:42 <bsmntbombdood> I've never seen when threads needed to be killed except my hacky irc bot
05:44:12 <CakeProphet> I mean... it defeats -your- purpose of threading.
05:44:22 <CakeProphet> not... the general purpose of threading (whatever the hell that is.)
05:44:57 <bsmntbombdood> ~exec while True: self.raw("PRIVMSG #esoteric :kill me"); __import__("time").sleep(2)
05:45:51 <CakeProphet> Python is kinda hard to do in one line though.
05:46:15 <CakeProphet> it can't wrap up all nice and snug like other languages... because of its indentation syntax.
05:46:59 <CakeProphet> I find the benefits outweigh the drawbacks usually.
05:47:40 <CakeProphet> in most sane programming environments... it works like a charm.
05:48:25 <CakeProphet> it would be nice if it had an optional "condensed mode"... for places where indentation just doesn't settle right.
05:48:40 <bsmntbombdood> I've had times when I'm reading code, I accidently hit tab, now everything is screwed up and it can't be fixed unless you know where that indent was
05:53:08 -!- Sgeo has quit (Remote closed the connection).
06:05:42 -!- RodgerTheGreat has quit.
06:35:19 -!- violot has joined.
06:36:10 <bsmntbombdood> ~exec __import__("time").sleep(100);self.raw("PRIVMSG #esoteric :100")
06:36:25 <bsmntbombdood> ~exec __import__("time").sleep(50);self.raw("PRIVMSG #esoteric :50")
06:36:30 <bsmntbombdood> ~exec __import__("time").sleep(10);self.raw("PRIVMSG #esoteric :10")
06:36:36 <bsmnt_bot_chroot> 0: '__import__("time").sleep(100);self.raw("PRIVMSG #esoteric :100")', 25.79 seconds
06:36:36 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50);self.raw("PRIVMSG #esoteric :50")', 11.05 seconds
06:36:36 <bsmnt_bot_chroot> 2: '__import__("time").sleep(10);self.raw("PRIVMSG #esoteric :10")', 5.72 seconds
06:36:46 <bsmnt_bot_chroot> 0: '__import__("time").sleep(100);self.raw("PRIVMSG #esoteric :100")', 36.39 seconds
06:36:47 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50);self.raw("PRIVMSG #esoteric :50")', 21.65 seconds, killed
06:37:07 <bsmnt_bot_chroot> 0: '__import__("time").sleep(100);self.raw("PRIVMSG #esoteric :100")', 56.70 seconds
06:37:07 <bsmnt_bot_chroot> 1: '__import__("time").sleep(50);self.raw("PRIVMSG #esoteric :50")', 41.96 seconds, killed
06:37:18 <bsmnt_bot_chroot> 0: '__import__("time").sleep(100);self.raw("PRIVMSG #esoteric :100")', 67.62 seconds
06:40:50 -!- violot has left (?).
06:42:14 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
06:42:19 -!- bsmnt_bot_chroot has joined.
06:42:30 <bsmntbombdood> ~exec __import__("time").sleep(10);self.raw("PRIVMSG #esoteric :10")
06:42:34 <bsmnt_bot_chroot> 0: '__import__("time").sleep(10);self.raw("PRIVMSG #esoteric :10")', 4.14 seconds, killed
06:52:37 -!- calamari has left (?).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:25:31 -!- kotrin has joined.
11:34:05 -!- jix has joined.
12:27:06 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
12:27:17 -!- puzzlet has joined.
12:31:41 -!- jix__ has joined.
12:41:40 -!- jix has quit (Read error: 110 (Connection timed out)).
13:18:40 -!- tgwizard has joined.
14:42:57 <ihope> ~pexec self.register_raw('(.*)', lambda x: self.raw("PRIVMSG #esoteric %s" % x))
14:43:08 <ihope> This is gonna be spammy.
14:43:08 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
14:52:25 <oklopol> i always insert comments afterwards
14:59:34 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
15:19:00 <ihope> Come back, bsmnt_bot!
15:21:38 <ihope> I don't know if I can wish that hard.
15:22:41 <kotrin> oh well...we'll use disney magic then?
15:24:53 <kotrin> do you have yours? i ran out of mine
15:25:07 <ihope> Um, I think I left it somewhere else and... eh.
15:27:08 <ihope> Let's try Xanth magic.
15:27:11 <ihope> What's your talent?
15:29:17 <ihope> There's Harry Potter magic... except Harry Potter magic can't raise the dead.
15:29:51 <ihope> How about NetHack magic? We might be able to work that one
15:37:11 -!- ihope_ has joined.
15:39:53 <ihope_> Okay. Do you know the "turn undead" spell?
15:42:59 <ihope_> And I don't have any spellbooks. Do you?
15:44:44 <fizzie> And what good would the "turn undead" spell (which pacifies and/or destroys undead creatures) be in getting a bot back?
15:47:38 <ihope_> That can revive corpses, can't it?
15:49:42 <ihope_> Does a quit message count as a corpse?
15:54:05 -!- ihope has quit (Connection timed out).
15:56:34 -!- RodgerTheGreat has joined.
16:02:12 <ihope_> Wake up, bsmntbombdood! It's 10 AM!
16:44:19 <fizzie> 6 PM here. (Half-past, now.)
17:05:34 -!- oerjan has joined.
17:38:18 -!- Sgeo has joined.
17:43:58 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
17:44:00 <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
17:44:09 * oerjan is already awake (barely)
17:45:20 <ihope_> So I couldn't get socat working, and I couldn't get netcat working either.
17:48:02 <oerjan> Everybody wants their own bot nowadays :)
17:49:28 <oerjan> At this rate, it would probably be easier using sockets.
17:50:23 <ihope_> Maybe my operating system will have an IRC bot built in.
17:50:56 <ihope_> I downloaded a bot, and I'm trying to get it working.
17:51:33 <ihope_> C or C++ or something.\
17:51:42 <ihope_> I'll compromise and say it's written in C+.
17:52:44 -!- oklobot2 has joined.
17:52:45 <ihope_> I'm trying to get it going under Linux.
17:53:40 -!- ihope_bot has joined.
17:54:00 <ihope_> So what's oklobot2 do?
17:55:07 <ihope_> My bot does nothing at all.
17:55:49 <oerjan> just sits and meditates.
17:55:50 <kotrin> ihope_ do you not know any scripting language or programming language?
17:56:06 <oklopol> !exec "I"" do " " a few things."AddAddPrntNl
17:56:44 -!- ihope_bot has quit (Remote closed the connection).
17:59:32 <oklopol> oerjan, if i make a Chr function to convert a number to a character (string) that has the same ascii value, will you try a quine? :D
17:59:56 <oklopol> because it's too easy with escapes
18:02:37 <kotrin> someone make an interactive bot that only respondes in BF
18:03:05 <oerjan> _in_ BF? that could be awkward.
18:03:49 <kotrin> then have another bot in here the interprets it
18:04:05 <kotrin> or better yet, a whitespace bot
18:04:12 <oerjan> well we already have EgoBot.
18:04:15 <ihope_> Let's have a channel containing every bot on Freenode.
18:04:44 <oerjan> And let's call it #skynet.
18:05:11 <oerjan> just to make the aspirations clear. :)
18:05:29 <SimonRC> kotrin: wsbot would be a PITA because of the significance of NL
18:05:32 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
18:05:53 -!- oklobot2 has joined.
18:06:05 <oklopol> a bf bot could auto-interpret all data it gets :)
18:06:52 <SimonRC> bsmntbombdood: Maybe you kill python threads by forcing them to throw an uncatchable exception?
18:07:03 <oklopol> don't break it, please :) it's very fragile
18:07:44 <ihope_> !daemon exec bf +[,[-]+]
18:08:47 <oklopol> 65[DblChrPrntNlDrp1AddDbl80Les]
18:09:06 <oklopol> !exec 65[DblChrPrntNlDrp1AddDbl80Les]
18:10:00 <ihope_> Can arbitrary strings be printed?
18:10:04 <SimonRC> oklopol: what lang is that?
18:10:13 <oklopol> i don't have a name for it
18:10:28 <oklopol> i call the lang oklobot too
18:10:35 <SimonRC> do you have any kind of definition for it?
18:10:41 <ihope_> SimonRC: yes, the bot.
18:10:45 <oklopol> i should make one... maybe now
18:11:05 <oklopol> it's not open source tho, it's unbelievably bad code
18:11:12 <SimonRC> oklopol: named after the 2billion-year-old nuclear reactor?
18:11:27 <oklopol> is there one called that? :D
18:11:39 <oklopol> oklopol->oklobot, named after that
18:13:01 <SimonRC> see The Repositor Of All Huma Knowlage for more details
18:16:35 <ihope_> Can you print newlines and carriage returns that way?
18:18:08 <oklobot2> 3PRIVMSG #esoteric :3PRIVMSG #esoteric :3PRIVMSG #esoteric :3
18:19:04 <kotrin> !exec "$_"65ChrAddPrintNl
18:20:56 <CakeProphet> !exec 343534534545345PrintPrintPrintPrintPrintPrintPrintPrintPrintNl
18:22:08 <CakeProphet> !exec 343534534545345PrntPrntPrntPrntPrntPrntPrntPrntPrntPrntPrntNl
18:22:08 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
18:22:33 <oklopol> good, let's call that a feature.
18:22:42 -!- oklobot2 has joined.
18:22:45 <ihope_> !daemon eval bf +[,[-]+]
18:23:42 <ihope_> I think it became immune to division by zero.
18:23:43 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
18:24:15 <oklopol> just eval, which i did in the summer in 2 hours
18:24:34 -!- oklobot2 has joined.
18:24:35 <ihope_> Guys, it won't work without the bot.
18:25:10 <kotrin> k, wasn't me that killed it
18:25:13 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
18:25: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
18:25:17 <oklopol> www.answers.com/polish%20notation
18:25:54 <CakeProphet> !daemon glassf glass {M[m(_o)O!(_i)I!(_e)(BF)!/<1>(_i)i.?(_e)(BF).?\]}
18:26:55 <CakeProphet> !daemon glassf glass {M[m(_o)O!(_i)I!(_e)(BF)!/<1>(_i)i.?(_e)(BF).?(_o)o.?\]}
18:27:23 <kotrin> what language is oklobot written in?
18:27:43 <CakeProphet> !daemon glassf glass {M[m(_o)O!(_i)I!(_e)(BF)!/<1>(_i)i.?(_e)(bf).?(_o)o.?\]}
18:28:02 <kotrin> !eval *2148 13985632964986718967296872098672069872506987256098247690824673459086376392045873490847649580674
18:28:05 <oklobot2> *2148 13985632964986718967296872098672069872506987256098247690824673459086376392045873490847649580674=785619656
18:28:39 <CakeProphet> !daemon glassf glass {M[m(_o)O!(_i)I!(_e)(BF)!/<1>(_i)i.?(_e)(bf).?\]}
18:28:43 <kotrin> !eval *********************************************************************
18:28:46 <oklobot2> *********************************************************************=
18:29:23 <CakeProphet> !daemon glassf glass {M[m(_o)O!(_i)I!(_e)(BF)!\<1>(_i)i.?(_e)(bf).?/]}
18:29:31 <oklopol> okay, i'm not complaining if i've done that without realizing it
18:30:25 <kotrin> for large projects it's not bad
18:30:32 <kotrin> works well with a framework as well
18:30:39 <kotrin> but small apps and sockets....*puke*
18:30:52 <oklopol> well, yeah, i always use python for converting words to hex or smth
18:30:58 <oklopol> c++ want's me to make a project
18:31:20 <oklopol> but python sucks with it's whitespace thing, i hate ws
18:31:30 <kotrin> wtf are you talking about
18:31:44 <oklopol> about c++ in small projects
18:31:44 * CakeProphet hasn't figured out why people hate whitespace so much.
18:32:03 <kotrin> whitespace is easily the best of all esoteric languages
18:32:27 <oklopol> kotrin, i wasn't referring to a lang called whitespace
18:32:47 <oklopol> if that's what confused you
18:33:01 <kotrin> oklopol>well, yeah, i always use python for converting words to hex or smth
18:33:06 <CakeProphet> I just find it amusing that all whitespace programs are invisible... but I don't really think it's that genius. :P
18:33:31 <Sgeo> Any work on that Factory language?
18:33:43 <kotrin> it's the smartest idea for a esoteris imo
18:33:59 <oklopol> pythons whitespace thingie makes it hard to use in one line, and one line usage is the only thing i'd like to use it for
18:34:29 <kotrin> there's always time for ruby
18:34:33 <kotrin> it's the best language in the world
18:34:33 <oklopol> well, there is time, but not enough for everything
18:34:49 * kotrin <3's ruby more then Sgeo <3's python
18:34:55 <CakeProphet> It would be nice if Python had a one-line mode... otherwise I love python.
18:35:09 <CakeProphet> but... I hate language advocacy... so lol stfu plz kthxbai
18:35:12 <kotrin> oklopol: you're right, lisp is better than ruby
18:35:44 <oklopol> K has the smallest sudoku solver by far
18:35:56 <oklopol> and that's pretty much all a lang needs :)
18:36:06 <oklopol> www.answers.com/K%20programming%20language
18:36:33 <kotrin> have you even used K? or are you just saying it because it's "different"
18:36:55 <Sgeo> Does anyone here have any interest in BF-RLE?
18:37:03 <oklopol> i haven't used it, but i know the syntax
18:37:15 <oklopol> i could write a prog in it if that's what you mean
18:37:34 <Sgeo> http://esoteric.voxelperfect.net/wiki/BF-RLE
18:37:57 * Sgeo came up with it
18:40:23 -!- sp3tt has quit ("leaving").
18:40:39 <kotrin> so just replace any occurs < 3 to [operator][occurence-3] ?
18:41:05 <kotrin> what's the point of that?
18:41:12 -!- sp3tt has joined.
18:41:27 <oklopol> faster to interpret without optimizations
18:41:29 <Sgeo> If it were >=2, then +0 saves no more space than ++
18:42:00 <Sgeo> And that means that in certain conditions, less space is saved
18:42:08 <kotrin> i just dont see the point of all the optimizations in the languages
18:42:09 <oklopol> yes, and since it's a separate lang, it guaranteed the speed bf interpreters only give you if they're good
18:42:56 <oklopol> well, +03 is better that >++++++++[<++++++++>-]<+.
18:43:03 <kotrin> i see the languages as oppurtunities to learn high level languages by mkaing compilers with optimizations
18:43:19 -!- sp3tt has quit (Remote closed the connection).
18:43:46 <oerjan> !exec "!exec ""34ChrDupRotAddDupAddRotRotAddDupAddSwapAddPrntLn"34ChrDupRotAddDupAddRotRotAddDupAddSwapAddPrntLn
18:43:47 <kotrin> how is +13 == >++++++++[<++++++++>-]<+.
18:45:03 <Sgeo> !bf >++++++++[<++++++++>-]<+.
18:45:27 <Sgeo> How do I evaluate BF here?
18:45:35 <oerjan> oklopol: i think your bot is dead.
18:45:38 <oklopol> kotrin, what's the difference? except that the bf one needs teh next cell too
18:46:06 <oklobot2> "PRIVMSG #esoteric :"PRIVMSG #esoteric :"
18:46:11 <kotrin> !bf >++++++++[<++++++++>-]<+.
18:46:28 <oerjan> !exec "!exec ""34ChrDupRotAddDupAddRotRotAddDupAddSwapAddPrntNl"34ChrDupRotAddDupAddRotRotAddDupAddSwapAddPrntNl
18:47:08 <Sgeo> I guess IRP#esoteric is an illegal language now?
18:47:46 <kotrin> sgeo is there a better bf-rle tutorial somewhere?
18:48:03 <oerjan> forgot a lot since Dec 27
18:48:13 <Sgeo> I can try to describe it better here
18:48:20 <oerjan> !exec "!exec ""34ChrDblRotAddDblAddRotRotAddDblAddSwapAddPrntNl"34ChrDblRotAddDblAddRotRotAddDblAddSwapAddPrntNl
18:48:34 <Sgeo> Not sure how to describe it well though
18:48:54 <oerjan> !exec "!exec ""34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl"34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl
18:48:54 <kotrin> have you coded an interpretor for it?
18:48:56 <oklobot2> !exec "!exec ""34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl"34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl
18:49:45 <kotrin> are loops/output/input the same as bf?
18:50:30 <Sgeo> It's just done textually actually
18:50:46 <Sgeo> Although an interpreter could optomize for it probably
18:52:39 <kotrin> what would the bf-rle be for ++++++++++[>+++++++>++++++++++>+++>+<<<<-]
18:54:06 <Sgeo> +6[>+4>+7>+0>+<1-]
18:54:13 <Sgeo> Translating it literally
18:56:27 <SimonRC> I know that PROLOG predicates can do some cool things that functions can't, like going both ways, but that stops you composing the predicates, and that Joy avoids the need for almost all variables, so is there a way to conbine the advantages?
19:00:35 <kotrin> i might make a bf -> bf-rle
19:05:26 -!- sp3tt has joined.
19:09:59 <oklopol> can i do "0"<"5" in python?=
19:19:43 <ihope_> bsmntbombdood's away message is still "sleep", and it's past 1 PM/
19:20:14 <ihope_> oklopol: how do you manage to do that?
19:20:39 * SimonRC nominates a candidate for the "slowest growing function" award: the inverse of f(n) = A(n, n).
19:20:41 <ihope_> kotrin: haven't slept since yesterday?
19:20:47 <SimonRC> it tens to infinity, you know.
19:21:01 <ihope_> SimonRC: f(n) = 0 grows more slowly.
19:21:26 <ihope_> I don't want to know how fast its inverse grows.
19:23:01 -!- bsmnt_bot_chroot has joined.
19:23:03 <kotrin> sgeo, does the the rule for bf-rle apply to . and , commands?
19:23:09 <ihope_> bsmntbombdood: then fix your clock.
19:23:16 <ihope_> === CTCP time reply ``Sun Jan 7 13:13:29 2007'' from bsmntbombdood
19:23:58 <ihope_> ~pexec self.raw("JOIN ##quantum")
19:23:59 <Sgeo> And to [ and ], although I don't know why there would be enough of those in a row to make the RLE significant..
19:24:07 <ihope_> I see the bot's not identified.
19:25:58 <oklopol> can't i use a var of the parent function in a subfunction?
19:27:35 <bsmntbombdood> SimonRC: You kill a python thread by raising SystemExit exception
19:28:47 <bsmntbombdood> <ihope>~pexec self.register_raw('(.*)', lambda x: self.raw("PRIVMSG #esoteric %s" % x))
19:29:21 <oklopol> i def new functions in functions
19:29:29 <ihope_> ~pexec self.register_raw('(.*)', lambda x: (self.raw("PRIVMSG #esoteric %s" % x)))
19:29:38 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
19:29:47 -!- bsmnt_bot_chroot has joined.
19:29:55 <oklopol> i'm not talking about a bot but genericly
19:29:55 <ihope_> ~pexec self.register_raw('(.*)', lambda x: bot.raw("PRIVMSG #esoteric %s" % x))
19:30:00 <bsmnt_bot_chroot> oklopol!i=okokokok@194.251.102.88 PRIVMSG #esoteric :generally
19:30:04 <bsmnt_bot_chroot> ihope_!n=foo@c-71-205-100-59.hsd1.mi.comcast.net PRIVMSG #esoteric :Yay!
19:30:08 <bsmnt_bot_chroot> ihope_!n=foo@c-71-205-100-59.hsd1.mi.comcast.net PRIVMSG #esoteric :Now kill it.
19:30:21 <bsmnt_bot_chroot> bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~exec self.raw_regex_queue.pop()
19:31:17 <kotrin> Sgeo: http://pastie.caboo.se/31705
19:31:51 <Sgeo> erm, I don't know Ruby
19:32:06 <ihope_> ~exec self.raw("PRIVMSG #esoteric :" + foo)
19:32:25 <ihope_> I take it that didn't work.
19:32:27 <kotrin> sgeo: learn it :) do you have installed on your machine?
19:32:39 <Sgeo> Does it handle [[[[]]]]?
19:33:01 <kotrin> just add another element to the operators array
19:33:28 <Sgeo> Oh, and it's supposed to strip all comments out
19:33:33 <Sgeo> (non operaters)
19:34:04 <oklopol> bsmntbombdood, this is illegal, how do i go around it?
19:34:47 <ihope_> ~pexec self.raw("PRIVMSG #esoteric :" + foo)
19:34:59 <ihope_> ~pexec self.foo = "foo"
19:35:04 <ihope_> ~pexec self.raw("PRIVMSG #esoteric :" + self.foo)
19:35:39 <oklopol> bsmntbombdood, please tell me :-|
19:35:50 <bsmntbombdood> ~pexec while 1: self.raw("PRIVMSG #esoteric :tick"); __import__("time").sleep(2)
19:35:55 <bsmnt_bot_chroot> 0: 'while 1: self.raw("PRIVMSG #esoteric :tick"); __import__("time").sleep(2)', 4.50 seconds
19:36:14 -!- oerjan has quit ("leaving").
19:37:21 <oklopol> or you mean that's legal code as it is?
19:37:42 <oklopol> Traceback (most recent call last):
19:37:43 <oklopol> File "<pyshell#16>", line 1, in ?
19:37:43 <oklopol> File "<pyshell#15>", line 4, in oso
19:37:43 <oklopol> File "<pyshell#15>", line 3, in poso
19:37:46 <oklopol> UnboundLocalError: local variable 'a' referenced before assignment
19:38:27 <oklopol> i'd like to have that... assumed python'd work like that
19:38:47 <oklopol> i've now actually used an hour to make a trivial bf interpreter
19:43:09 <CakeProphet> a += 1 wouldn't work if a was never defined before that.
19:44:42 <oklopol> but, same result if it's created in the function
19:45:05 <kotrin> sgeo: http://pastie.caboo.se/31707
19:46:13 <CakeProphet> yeah... that should work thanks to closures.
19:48:10 <ihope_> So Saturn says to earth, "Dude, you kicked Pluto out of the Solar System! He's a tad disgruntled."
19:48:20 <ihope_> Or something like that.
19:50:50 -!- digital_me has joined.
19:51:02 <bsmntbombdood> The code to kill the threads is only 14 lines, but it took like 4 hours to write
19:53:20 <ihope_> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~([a-zA-Z]*).*", lambda x,y : bot.raw("PRIVMSG %s :Error: ~%s might be an invalid command" % (y.group(1),y.group(2))))
19:53:33 <ihope_> ~pexec self.register_raw(r"\S+ PRIVMSG (\S+) :~([a-zA-Z]*).*", lambda x,y : bot.raw("PRIVMSG %s :Error: ~%s might be an invalid command" % (y.group(1),y.group(2))))
19:53:40 <oklopol> CakeProphet, do you have a solution?
19:54:17 <ihope_> ~pexec self.pop_register_raw()
19:54:31 <ihope_> Well, that sure didn't work.
19:54:50 <CakeProphet> oklow well python only speaks in globals, locals. and closures.
19:54:54 <kotrin> what are you guys coding?
19:55:26 <kotrin> does python have an irc library?
19:55:55 <oklopol> CakeProphet, i have 3 vars i need to change in a subfunction
19:56:37 <ihope_> ~pexec self.raw("JOIN ##quantum")
19:56:41 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
19:57:00 -!- EgoBot has joined.
19:57:04 <oklopol> bsmntbombdood, easier this way
19:57:27 -!- bsmnt_bot_chroot has quit.
19:57:40 -!- bsmnt_bot_chroot has joined.
19:58:11 <oklopol> k how should i remove side-effects? i want a function that does a single brainfuck operation
19:58:22 <oklopol> done on my current stack and pointers
19:58:47 <ihope_> ~pexec self.raw("QUIT")
19:58:47 -!- bsmnt_bot_chroot has quit (Client Quit).
19:58:55 <bsmntbombdood> AND even if they weren't, they run in a different thread, so the main thread wouldn't die
19:59:06 <CakeProphet> oklopol it should just simply work like you expect it to.
19:59:16 -!- bsmnt_bot_chroot has joined.
19:59:31 <oklopol> you mean this should work?
19:59:31 -!- bsmnt_bot_chroot has quit (Client Quit).
19:59:33 -!- bsmnt_bot_chroot has joined.
19:59:36 <ihope_> ~pexec self.raw("PART #esoteric")
19:59:37 -!- bsmnt_bot_chroot has left (?).
19:59:47 -!- bsmnt_bot_chroot has joined.
20:00:01 <ihope_> Rather tricky to so a ~pexec after PARTing it.
20:00:34 -!- bsmnt_bot_chroot has left (?).
20:00:48 -!- bsmnt_bot_chroot has joined.
20:01:31 <bsmntbombdood> ~exec self.register_raw(":\S+ PART #esoteric :.*", lambda x : bot.raw("JOIN #esoteric"))
20:01:39 -!- bsmnt_bot_chroot has left (?).
20:01:39 -!- bsmnt_bot_chroot has joined.
20:01:53 <ihope_> ~pexec self.register_raw("(:\S* )PRIVMSG \S* :~emerg(.*)", lambda x,y: self.do_exec(y))
20:02:02 <ihope_> ~emerg self.raw("PRIVMSG #esoteric :Foo")
20:02:02 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
20:02:05 -!- bsmnt_bot_chroot has joined.
20:02:15 <oklopol> CakeProphet, well it doesn't
20:02:31 <ihope_> ~pexec self.register_raw("(:\S* )PRIVMSG \S* :~emerg(.*)", lambda x,y: bot.do_exec(y))
20:02:33 -!- digital_me has quit ("leaving").
20:02:33 <bsmntbombdood> ~exec self.register_raw(":\S+ PART #esoteric :.*", lambda x : bot.raw("JOIN #esoteric"))
20:02:38 <ihope_> ~emerg self.raw("PRIVMSG #esoteric :Foo")
20:02:38 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
20:02:40 -!- bsmnt_bot_chroot has joined.
20:02:46 -!- digital_me has joined.
20:02:57 <bsmntbombdood> TypeError: do_exec() takes exactly 3 arguments (2 given)
20:03:17 -!- digital_me has quit (Client Quit).
20:03:30 -!- digital_me has joined.
20:04:03 <ihope_> I gave it... like, one?
20:04:49 <ihope_> ~pexec self.register_raw("(:\S* )PRIVMSG \S* :~emerg(.*)", lambda x,y: bot.do_exec(y,r))
20:05:06 <ihope_> ~emerg self.raw("PRIVMSG #esoteric :Foo")
20:05:07 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
20:05:09 -!- bsmnt_bot_chroot has joined.
20:06:18 <ihope_> ~pexec self.register_raw(":\S* PRIVMSG \S* :~emerg(.*)", lambda x,y: bot.do_exec(x,y))
20:06:22 <ihope_> All confusing, I'm sure.
20:06:30 <ihope_> ~emerg self.raw("PRIVMSG #esoteric :Foo")
20:06:56 <bsmntbombdood> ~pexec self.register_raw(":\S* PRIVMSG \S* :~emerg (.*)", lambda x,y: bot.do_exec(x,y))
20:07:26 <CakeProphet> ~pexec self.raw("PRIVMSG #esoteric :" + (lambda x: (lambda closure: x)("Doop"))("Hello, World!"))
20:07:44 <ihope_> ~exec self.raw_regex_queue.pop()
20:07:48 <ihope_> ~pexec self.register_raw(":\S* PRIVMSG \S* :~emerg(.*)", lambda x,y: bot.do_exec(x,y))
20:07:55 <ihope_> ~emergself.raw("PRIVMSG #esoteric :Foo")
20:08:08 <ihope_> ~exec self.raw_regex_queue.pop()
20:08:12 <ihope_> ~pexec self.register_raw(":\S* PRIVMSG \S* :~emerg (.*)", lambda x,y: bot.do_exec(x,y))
20:08:41 <ihope_> You know, "lambda x,y: bot.do_exec(x,y)" is actually pretty pointless.
20:12:13 <CakeProphet> ~pexec self.register_raw(":\S* PRIVMSG \S* :~emerg (.*)", bot.do_exec)
20:15:02 <ihope_> Does it require root access or anything?
20:15:45 <bsmntbombdood> as you can see it drops root if it has it on line 256
20:16:13 <ihope_> It drops root if it has it... what if it has something else?
20:16:37 <oklopol> well, he gets in the reference :)
20:16:50 <bsmntbombdood> CakeProphet: But that is like the least interesting part of the bt
20:17:05 <CakeProphet> def __init__(self, **args) IRCbot(name="whooo", ident="hahahaha")
20:20:02 <ihope_> Does it do any sandboxing of itself besides root-dropping?
20:21:30 <CakeProphet> bsmnt You could pickle the raw_regex_queue between executions.
20:22:09 * CakeProphet actually made a way to pickle functions. :D
20:22:29 <CakeProphet> it was nessicary for my MUD to have pickle-able functions... since the source code is editable mid-game.
20:22:39 <bsmntbombdood> I could however, dump the regexes and ~exec source codes
20:23:25 <ihope_> ...is editable mid-game?
20:23:41 <CakeProphet> as in... the game has facilities for programming itself.
20:24:35 <CakeProphet> After the initial bootstrap... most of the "physical" sourec files are no longer needed...
20:25:39 <ihope_> Note to self: don't chmod u_
20:25:46 <ihope_> Note to self: don't chmod u+x just any old Python file.
20:26:14 <ihope_> On the other hand, I accidentally taught myself how to write a basic shell script thingy right then.
20:26:47 <ihope_> I probably got the usage stuff for import ten times or something.
20:27:45 <ihope_> I chmod u+x'd that Python file and ran it.
20:29:11 <GregorR> CakeProphet: Congratulations, you've won the awful spelling award. "nessicary" is one of the worst spellings I've ever seen. It's "necessary". Let's give 'im a hand!
20:31:32 <oklopol> my reference is ready, tho it's a bit of a stub
20:32:04 <ihope_> I take it I'll want a #!/usr/bin/env python at the top of that thing.
21:07:29 -!- ShadowHntr has joined.
21:15:11 <ihope_> Now tell me what that does.
21:20:46 <ihope_> ~exec self.raw("PRIVMSG #esoteric" + pass)
21:20:55 <ihope_> ~exec self.raw("PRIVMSG #esoteric :" + pass)
21:21:05 <ihope_> Am I spamming you with error messages?
21:21:56 -!- Sgeo has quit (Remote closed the connection).
21:26:15 -!- Sgeo has joined.
21:26:57 <ihope_> ~pexec self.raw("PRIVMSG #esoteric :" + pass)
21:28:28 <ihope_> ~pexec self.raw("PRIVMSG #esoteric :foo")
21:28:51 <ihope_> ~pexec self.raw("PRIVMSG #esoteric :foo")
21:29:08 <ihope_> ~pexec self.raw("PRIVMSG #esoteric :foo")
21:29:57 <ihope_> Curse Python or Haskell.
21:30:45 <ihope_> ~emerg self.raw("PRIVMSG #esoteric :foo")
21:31:23 <ihope_> ~emerg self.raw("PRIVMSG #esoteric :foo")
21:33:15 <ihope_> ~pexec self.do_callbacks(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~exec self.raw('PRIVMSG #esoteric :foo')")
21:34:23 <bsmntbombdood> ~exec for i in range(4): self.raw_regex_queue.pop()
21:35:52 <ihope_> ~pexec self.raw("PRIVMSG #esoteric :" + [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue])
21:36:14 <bsmntbombdood> TypeError: cannot concatenate 'str' and 'list' objects
21:36:45 <ihope_> ~pexec self.raw("PRIVMSG #esoteric :%s" % [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue])
21:36:46 <bsmnt_bot_chroot> [('^PING.*$', 'pong'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~quit ?(.*)', 'do_quit'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~raw (.*)', 'do_raw'), ('^\\S+ PRIVMSG \\S+ :~ctcp (\\S+) (.+)', 'do_ctcp'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~exec (.*)', 'do_exec'), ('\\S+ PRIVMSG #esoteric :~pexec (.*)', 'do_exec'), ('\\S+ PRIVMSG \\S+ :~ps', 'do_ps'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill'
21:36:48 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
21:38:09 <ihope_> ~pexec self.esoteric = lambda x: self.raw("PRIVMSG #esoteric :%s" % x)
21:38:14 <ihope_> ~pexec self.esoteric(3)
21:38:39 <ihope_> ~pexec self.esoteric = lambda self, x: self.raw("PRIVMSG #esoteric :%s" % x)
21:38:44 <ihope_> ~pexec self.esoteric(3)
21:38:56 <bsmntbombdood> ~pexec self.esoteric = lambda self, x: bot.raw("PRIVMSG #esoteric :%s" % x)
21:39:07 <ihope_> ~pexec self.esoteric(3)
21:40:06 <bsmntbombdood> ~pexec self.esoteric = lambda x: bot.raw("PRIVMSG #esoteric :%s" % x)
21:41:30 <ihope_> ~exec self.esoteric(self.esoteric)
21:42:06 -!- Sgeo has quit (Remote closed the connection).
21:42:34 * ihope_ slaps GregorR, too, just because
21:43:32 <ihope_> ~pexec self.esoteric(1/0)
21:43:56 <ihope_> Did that give an error?
21:44:53 <bsmntbombdood> ZeroDivisionError: integer division or modulo by zero
21:45:29 <ihope_> I take it putting a catch in self.esoteric won't work.
21:46:48 <ihope_> Can I declare a lambda that takes no arguments?
21:47:28 <ihope_> ~pexec self.esoteric = lambda x: bot.raw("PRIVMSG #esoteric :%s" % x())
21:47:37 <ihope_> ~pexec self.esoteric(lambda: "foo")
21:48:34 <ihope_> How do I declare a function that can take a variable number of arguments?
21:51:37 <ihope_> And how would I take the first element of that list and apply it to the rest of the elements?
21:53:03 <ihope_> There the arguments are the remaining elements of the list?
21:53:53 <ihope_> If the elements are foo, bar, and baz, will that call foo(bar,baz)?
21:54:05 <ihope_> ~pexec self.apply_thunk = lambda *x: lambda: x[0](x[1:])
21:55:58 <ihope_> ~pexec self.esoteric(self.apply_thunk(lambda x,y: x+y, 3, 5))
21:56:16 <ihope_> What's the error this time?
21:56:21 <bsmntbombdood> TypeError: <lambda>() takes exactly 2 arguments (1 given)
21:57:12 <bsmntbombdood> ~exec print self.apply_thunk(lambda x,y: x+y, 3, 5)
21:57:32 <ihope_> Ideally, that's a lambda taking no arguments.
21:58:10 <ihope_> Yeah, it's supposed to do that.
21:58:13 <bsmntbombdood> ~pexec print self.apply_thunk(lambda x,y: x+y, 3, 5)()
21:58:17 <bsmntbombdood> ~pexec print self.apply_thunk(lambda x,y: x+y, 3, 5)(1,2)
21:58:25 <bsmntbombdood> ~pexec print self.apply_thunk(lambda x,y: x+y, 3, 5)()
21:59:10 <bsmntbombdood> TypeError: <lambda>() takes no arguments (2 given)
21:59:12 <CakeProphet> called the function returned by apply_thunk... I'd imagine.
21:59:15 <bsmntbombdood> TypeError: <lambda>() takes exactly 2 arguments (1 given)
21:59:42 <CakeProphet> Use parenthesis to avoid any parsing confusion.
21:59:44 <ihope_> The first one is given by the first and the third?
21:59:54 <ihope_> And the second is given by the second?
22:00:31 <bsmntbombdood> ~pexec self.apply_thunk = lambda *x: lambda: x[0](*x[1:])
22:00:42 <bsmntbombdood> ~pexec print self.apply_thunk(lambda x,y: x+y, 3, 5)
22:00:55 <ihope_> ~pexec self.esoteric(self.apply_thunk(lambda x,y: x+y, 3, 5))
22:01:11 <bsmntbombdood> ~pexec print self.apply_thunk(lambda x,y: x+y, 3, 5)()
22:01:32 <CakeProphet> ....you basically just created a.... lambda wrapper.
22:02:32 <ihope_> apply_thunk creates a thunk, and esoteric forces it.
22:02:57 <ihope_> It's an expression that hasn't been evaluated yet, pretty much.
22:03:20 <ihope_> And it's represented as a function taking nothing.
22:03:44 <ihope_> Now to combine esoteric with apply_thunk, because there's really no reason to have both.
22:04:23 <ihope_> ~pexec self.esoteric = lambda *x: bot.raw("PRIVMSG #esoteric :%s" % (lambda: x[0](*x[1:]))())
22:04:37 <ihope_> ~pexec self.esoteric(lambda x,y: x+y, 3, 5)
22:05:00 <CakeProphet> ...so... just use a lambda with no arguments. :P
22:05:01 <ihope_> And there's really no reason to keep the thunk stuff.
22:05:19 <ihope_> ~pexec self.esoteric = lambda *x: bot.raw("PRIVMSG #esoteric :%s" % x[0](*x[1:]))
22:05:25 <ihope_> ~pexec self.esoteric(lambda x,y: x+y, 3, 5)
22:05:36 * CakeProphet considered a thunk-like thing for a language.
22:05:56 <CakeProphet> I wanted to give control to odd parts of the languages operation... such as when to evaluate.
22:06:46 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:09:40 -!- Sgeo has joined.
22:10:03 <ihope_> ~pexec self.esoteric = lambda *x: bot.raw("PRIVMSG #esoteric :%s" % try: x[0](*x[1:]) except: "Error")
22:10:12 <ihope_> That work, bsmntbombdood?
22:11:20 <ihope_> ~pexec self.esoteric(lambda x, y: x/y, 1, 0)
22:11:40 <ihope_> ~pexec self.esoteric(lambda: 3)
22:11:49 <ihope_> self.esoteric is still working, at least.
22:17:40 <bsmntbombdood> ZeroDivisionError: integer division or modulo by zero
22:18:16 <ihope_> The SyntaxError's for the try/except thing up there?
22:19:33 -!- bsmnt_bot_chroot has quit.
22:19:35 -!- bsmnt_bot_chroot has joined.
22:19:51 <bsmntbombdood> ~pexec self.esoteric = lambda *x: bot.raw("PRIVMSG #esoteric :%s" % x[0](*x[1:]))
22:20:02 -!- digital_me has quit ("Lost terminal").
22:20:51 <bsmntbombdood> ~pexec __import__("time").sleep(100); self.raw("PRIVMSG #esoteric :I rule")
22:20:54 <bsmnt_bot_chroot> 0: '__import__("time").sleep(100); self.raw("PRIVMSG #esoteric :I rule")', 2.90 seconds
22:21:07 <bsmntbombdood> ~pexec __import__("time").sleep(100); self.raw("PRIVMSG #esoteric :I lose")
22:21:09 <bsmnt_bot_chroot> 0: '__import__("time").sleep(100); self.raw("PRIVMSG #esoteric :I rule")', 17.31 seconds
22:21:09 <bsmnt_bot_chroot> 1: '__import__("time").sleep(100); self.raw("PRIVMSG #esoteric :I lose")', 1.60 seconds
22:21:17 <bsmnt_bot_chroot> 0: '__import__("time").sleep(100); self.raw("PRIVMSG #esoteric :I rule")', 25.37 seconds
22:21:17 <bsmnt_bot_chroot> 1: '__import__("time").sleep(100); self.raw("PRIVMSG #esoteric :I lose")', 9.66 seconds, killed
22:23:04 -!- kotrin has left (?).
22:24:10 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:24:12 -!- bsmnt_bot_chroot has joined.
22:24:17 <bsmntbombdood> ~pexec __import__("time").sleep(10); self.raw("PRIVMSG #esoteric :I lose")
22:25:04 <ihope_> ~pexec thread.start_new_thread(self.exec_execer, ("self.raw('PRIVMSG #esoteric :I win')", (globals(), locals())))
22:25:46 <ihope_> ~pexec self.exec_string = lambda x: thread.start_new_thread(self.exec_execer, (x, (globals(), locals())))
22:26:02 <ihope_> ~pexec self.exec_string("PRIVMSG #esoteric :Wonderful.")
22:26:33 <ihope_> ~pexec self.exec_string = lambda x: thread.start_new_thread(bot.exec_execer, (x, (globals(), locals())))
22:26:39 <ihope_> ~pexec self.exec_string("PRIVMSG #esoteric :Wonderful.")
22:26:56 <ihope_> I'm guessing that's the globals() and locals()
22:27:15 <bsmntbombdood> ~pexec self.exec_string("self.raw('PRIVMSG #esoteric :Wonderful.')")
22:27:27 <bsmntbombdood> ~pexec self.exec_string("bot.raw('PRIVMSG #esoteric :Wonderful.')")
22:30:37 <ihope_> ~pexec self.exec_string = lambda x: thread.start_new_thread(bot.exec_execer, (x, env))
22:30:45 <ihope_> Did that give any errors?
22:30:59 <ihope_> ~pexec self.exec_string("self.raw('PRIVMSG #esoteric :Wonderful.')")
22:31:19 <ihope_> ~pexec self.exec_string("bot.raw('PRIVMSG #esoteric :Wonderful.')")
22:31:27 <ihope_> ~pexec self.exec_string = lambda x: thread.start_new_thread(bot.exec_execer, (x, (globals(), locals())))
22:34:31 <ihope_> Executing multiple lines of stuff.
22:35:51 <ihope_> So not at all like "oof"?
22:38:19 <ihope_> ~pexec self.exec_string("def self.exec_string(x):\n env = (globals(), locals())\n thread.start_new_thread(bot.exec_execer, (x, env))")
22:38:31 <ihope_> ~pexec self.exec_string("self.raw('PRIVMSG #esoteric :Wonderful.')")
22:38:45 <ihope_> ~pexec self.exec_string("bot.raw('PRIVMSG #esoteric :Wonderful.')")
22:38:54 <ihope_> That one worked, at least.
22:39:21 <ihope_> ~pexec self.exec_string("def self.exec_string(x):\n env = (globals(), locals())\n thread.start_new_thread(bot.exec_execer, (x, env))")
22:39:27 <ihope_> ~pexec self.exec_string("self.raw('PRIVMSG #esoteric :Wonderful.')")
22:39:42 <ihope_> Maybe three's the magic number.
22:39:48 <ihope_> ~pexec self.exec_string("def self.exec_string(x):\n env = (globals(), locals())\n thread.start_new_thread(bot.exec_execer, (x, env))")
22:40:02 <ihope_> ~pexec self.exec_string("self.raw('PRIVMSG #esoteric :Wonderful.')")
22:40:31 <ihope_> Oh well. It still works.
22:44:04 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:44:06 -!- bsmnt_bot_chroot has joined.
22:44:18 <bsmntbombdood> ~pexec self.exec_string = lambda x: thread.start_new_thread(bot.exec_execer, (x, (globals(), locals())))
22:46:07 -!- oerjan has joined.
22:47:31 <bsmntbombdood> sys.stdout.write = lambda x : self.raw("PRIVMSG #bsmnt_bot :%s" % x)
22:47:45 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:47:48 -!- bsmnt_bot_chroot has joined.
22:48:43 <bsmntbombdood> Unhandled exception in thread started by <bound method IRCbot.exec_execer of <__main__.IRCbot instance at 0xb7cbcb2c>>
22:49:19 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:49:23 -!- bsmnt_bot_chroot has joined.
22:49:44 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:49:47 -!- bsmnt_bot_chroot has joined.
22:52:42 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:52:45 -!- bsmnt_bot_chroot has joined.
22:54:05 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:54:06 -!- bsmnt_bot_chroot has joined.
22:54:27 <bsmntbombdood> AttributeError: 'file' object attribute 'write' is read-only
22:55:25 -!- ivan` has joined.
22:55:54 -!- dantekgeek has joined.
22:56:00 -!- zedrdave has joined.
22:56:39 <dantekgeek> I'm trying to learn programming, and someone on a forum told me that "brainfuck" would be a good easy starting language.
22:56:50 <ihope_> He was most likely joking.
22:57:14 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:57:15 -!- bsmnt_bot_chroot has joined.
22:57:18 -!- dantekgeek has left (?).
22:57:46 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:57:48 -!- bsmnt_bot_chroot has joined.
22:58:05 <oerjan> what, did he call _us_ serious? :)
22:58:22 <ivan`> this bsmnt thing isn't part of the lame troll
22:58:46 <oklopol> is it okay i put your codes in oklobots reference?
22:59:06 -!- ivan` has left (?).
23:00:04 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:00:05 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
23:00:06 -!- bsmnt_bot_chroot has joined.
23:00:17 <ihope_> bsmnt_bot_chroot: you missed it!
23:00:37 <ihope_> It's a little bit spammy.
23:01:00 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:01:01 -!- bsmnt_bot_chroot has joined.
23:02:11 -!- zedrdave has left (?).
23:04:21 <oerjan> may i recommend kill -9 ? :)
23:05:13 -!- bsmnt_bot_chroot has quit (Read error: 131 (Connection reset by peer)).
23:05:17 -!- bsmnt_bot_chroot has joined.
23:06:00 <oerjan> still a bit spammy for a response to a single line
23:06:02 -!- pikhq has joined.
23:06:47 <oerjan> i believe EgoBot will send all but the first line to the original sender rather than the channel.
23:07:15 <oerjan> although not in all cases, confer !ps
23:08:51 <ihope_> Don't print blank lines.
23:10:22 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:10:24 -!- bsmnt_bot_chroot has joined.
23:11:07 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:11:09 -!- bsmnt_bot_chroot has joined.
23:13:41 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:13:43 -!- bsmnt_bot_chroot has joined.
23:15:40 <oerjan> i note you sometimes find self.register_raw a bit limiting. Perhaps add an optional guard argument, a lambda that can be used to add checks that are awkward with regexps. It could take the same arguments as the second lambda.
23:15:57 <pikhq> MY COMPUTER LIVES!!!
23:16:24 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:16:26 -!- bsmnt_bot_chroot has joined.
23:16:27 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:16:29 -!- bsmnt_bot_chroot has joined.
23:17:23 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:17:25 -!- bsmnt_bot_chroot has joined.
23:17:52 <bsmntbombdood> ok, #bsmnt_bot_chroot_errors has stderr and stdout redirected to it
23:22:23 <bsmntbombdood> hmm I need to change the interface for exec_execer then
23:24:46 <oklopol> i mean, are you gonna do it now or just possibly later because i'll go to sleep if it takes >10 min
23:28:52 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:28:55 -!- bsmnt_bot_chroot has joined.
23:31:09 <ihope_> When's the last time you registered a command?
23:33:07 <ihope_> ~pexec self.register_raw('(.*)', lambda x,y: print x)
23:34:55 <CakeProphet> ~pexec self.register_raw('(.*)', lambda x,y: sys.write(x + "\n")))
23:35:15 <ihope_> ~pexec self.register_raw('(.*)', lambda x,y: self.raw("PRIVMSG #bsmnt_bot_chroot_errors :%s" % x))
23:35:23 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:35:24 -!- bsmnt_bot_chroot has joined.
23:35:34 <ihope_> That clearly didn't work.
23:36:16 <ihope_> I think you should try to catch a few more errors.
23:36:37 <bsmntbombdood> ~pexec self.register_raw(".*", lambda x : sys.__stdout__.write("message"))
23:36:39 <CakeProphet> Just have it spit error messages onto the channel.
23:37:38 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:37:40 -!- bsmnt_bot_chroot has joined.
23:37:53 <bsmntbombdood> ~pexec self.register_raw('(.*)', lambda x,y: self.raw("PRIVMSG #bsmnt_bot_chroot_errors :%s" % x))
23:37:57 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:38:00 -!- bsmnt_bot_chroot has joined.
23:38:46 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:38:48 -!- bsmnt_bot_chroot has joined.
23:39:07 <CakeProphet> ~pexec self.register_raw('(.*)', lambda x,y: self.raw("PRIVMSG CakeProphet :%s" % x))
23:39:20 -!- CakeProphet has quit ("haaaaaaaaaa").
23:39:21 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:39:22 -!- bsmnt_bot_chroot has joined.
23:42:21 -!- anonfunc_ has joined.
23:44:35 <bsmntbombdood> ~exec self.register_raw("\S+ PRIVMSG #esoteric :(~quine .*)", lambda x, y : bot.raw("PRIVMSG #esoteric :%s" % y.group(1)))
23:44:55 <bsmntbombdood> ~exec self.register_raw("\S+ PRIVMSG #esoteric :(~quine.*)", lambda x, y : bot.raw("PRIVMSG #esoteric :%s" % y.group(1)))
23:48:12 <ihope_> Windows doesn't really make any sense when it comes to tool tips...
23:48:19 <ihope_> Or ToolTips, or whatever they're called.
23:51:24 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:51:26 -!- bsmnt_bot_chroot has joined.
23:51:46 <bsmntbombdood> ok, now only tracebacks go to #bsmnt_bot_chroot_errors
23:54:45 -!- puzzlet has joined.
23:57:23 -!- anonfunc has quit (Connection timed out).
00:12:37 -!- Sgeo has quit ("Ex-Chat").
00:27:11 <ihope_> ~pexec print "exvckhjo"
00:27:16 <ihope_> Wait, anonymous function?
00:30:42 <ihope_> |<-- anonfunc has left chat.us.freenode.net (Connection timed out)
00:43:16 <bsmntbombdood> ~pexec while 1: self.raw("PRIVMSG #esoteric :It's %s" % time.asctime(time.gmtime())); __import__("time").sleep(60 * 30);
00:43:23 <bsmnt_bot_chroot> 0: 'while 1: self.raw("PRIVMSG #esoteric :It\'s %s" % time.asctime(time.gmtime())); __import__("time").sleep(60 * 30);', 6.84 seconds
00:49:53 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:49:56 -!- bsmnt_bot_chroot has joined.
00:54:53 <ihope_> What are asctime and gmtime?
00:55:12 <ihope_> Ascension time and game time?
00:55:37 <ihope_> And what's the logic behind those names?
00:56:02 <ihope_> Maybe they're... um...
00:56:18 <bsmntbombdood> ~pexec self.raw("PRIVMSG #esoteric :%s" % time.gmtime())
00:56:38 <ihope_> Maybe "a" is the Spanish pronoun "a" which can mean "to", and "s" stands for "string" and "c" for "converted".
00:56:53 <ihope_> And gmtime would be like in GMT.
00:57:41 <ihope_> Or maybe asctime is short for ASCII.
01:00:27 <oerjan> that would probably be "convertado" or something.
01:01:15 <oerjan> no, it's generalissimo morte, a reference to Franco (ref. Monty Python)
01:01:53 <ihope_> Does that mean "generally dead"?
01:02:07 <oerjan> no, it means the Generalissimo is dead.
01:02:39 <ihope_> What's a Generalissimo?
01:03:21 <oerjan> There is only one Generalissimo. You do know he died not very long after the epoch.
01:03:55 <oerjan> Although to some, it seemed like an eternity.
01:07:24 <fizzie> The "gmtime" name quite likely comes from "GMT", since there's also "localtime" which returns a struct tm with the numbers in the local time zone.
01:08:20 <oerjan> but everyone knows it's called UTC nowadays. hmph.
01:08:51 <ihope_> Well, stop using ~exec~
01:09:18 <ihope_> ~pexec self.self.self.raw("JOIN #esoteric")
01:09:51 <oerjan> you could switch exec and pexec, since p can be either "public" or "privileged" as you wish.
01:10:13 <fizzie> I'm less sure about "asctime"; it might be about ascii, or the "as" might be something mysterious. After all, there's ctime() which does to time_t the same thing asctime does to a struct tm. (And the "c" _there_ is probably from "convert".)
01:10:17 <ihope_> I might well start using lots of ~pexec then.
01:10:54 <ihope_> And by that, I mean yes.
01:11:11 -!- bsmnt_bot_chroot has quit.
01:11:14 -!- bsmnt_bot_chroot has joined.
01:14:11 <ihope_> ~exec bot.exec_execer("bot.raw('PRIVMSG #esoteric foo')",(globals(),locals()))
01:15:24 <bsmntbombdood> ~exec bot.exec_execer("try:\n raise "foo",(globals(),locals()))
01:16:15 <bsmntbombdood> ~exec bot.exec_execer("try:\n raise \"foo\"\nexcept:\n print 'hi'",(globals(),locals()))
01:58:13 -!- CakeProphet has joined.
02:08:49 -!- ShadowHntr has quit ("End of line.").
02:15:53 -!- pikhq has quit (Read error: 54 (Connection reset by peer)).
02:17:36 <oerjan> I just wanted to say that.
02:19:41 -!- pikhq has joined.
02:32:26 <bsmntbombdood> come on, someone do something clever with bsmnt_bot_chroot
02:33:30 <oerjan> ~exec bot.raw("PRIVMSG :Like what?")
02:33:55 <oerjan> well that didn't work.
02:34:30 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :Like this then?")
02:44:24 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + argle)
02:44:41 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:45:08 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:45:37 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :Huh?")
02:46:24 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(bot.argle))
02:47:35 <bsmntbombdood> oerjan: might want to join #bsmnt_bot_chroot_errors to see your errors
02:48:07 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:53:41 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
02:54:07 -!- CakeProphet has joined.
03:40:52 -!- pikhq has quit ("leaving").
04:08:33 -!- ihope_ has quit (Connection timed out).
04:45:37 -!- bsmnt_bot_chroot has quit.
04:45:40 -!- bsmnt_bot_chroot has joined.
04:48:47 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:48:49 -!- bsmnt_bot_chroot has joined.
04:50:26 -!- bsmnt_bot_chroot has quit (Client Quit).
04:50:29 -!- bsmnt_bot_chroot has joined.
04:51:14 -!- bsmnt_bot_chroot has quit (Client Quit).
04:51:17 -!- bsmnt_bot_chroot has joined.
04:52:08 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:52:10 -!- bsmnt_bot_chroot has joined.
05:06:03 -!- CakeProphet has quit (Read error: 113 (No route to host)).
05:15:53 -!- oerjan has quit ("leaving").
05:24:16 <bsmntbombdood> I think I figured out how to do sandboxed execution in python
05:28:42 -!- RodgerTheGreat has quit.
05:34:53 -!- ShadowHntr has joined.
05:39:39 <bsmntbombdood> exec "importing anything here is impossible" in allowed_builtins
05:40:45 <bsmntbombdood> exec "importing or opening anything here is impossible" in allowed_builtins
05:57:47 <bsmntbombdood> exec "exec 'print open(\"foo\")' in {}" in my_builtins
06:01:17 <bsmntbombdood> And exec is a statement, so that can't be taken away
06:36:43 -!- calamari has joined.
06:41:54 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:28:58 -!- ShadowHntr has quit ("End of line.").
10:39:20 -!- ihope_ has joined.
10:39:46 -!- ihope_ has changed nick to ihope.
13:35:57 -!- ihope has quit (Connection timed out).
16:22:17 -!- FabioNET has joined.
16:49:51 -!- digital_me has joined.
16:53:49 -!- tgwizard has joined.
17:18:35 -!- FabioNET has quit (Connection timed out).
17:18:45 -!- RodgerTheGreat has joined.
17:46:52 -!- FabioNET has joined.
18:22:02 -!- FabioNET has quit (Client Quit).
18:34:36 -!- anonfunc_ has quit (Read error: 110 (Connection timed out)).
19:08:28 -!- jix__ has joined.
19:10:04 -!- jix__ has changed nick to ijx.
19:10:07 -!- ijx has changed nick to jix.
19:16:28 -!- RodgerTheGreat_ has joined.
19:16:28 -!- RodgerTheGreat has quit (Read error: 54 (Connection reset by peer)).
19:16:47 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
19:23:22 -!- ShadowHntr has joined.
19:27:41 <oklopol> http://esoteric.voxelperfect.net/wiki/PATH
19:52:17 <oklopol> http://esoteric.voxelperfect.net/wiki/BF-SC
19:52:39 <oklopol> this i don't understand, if you've got spare time, please tell me :)
19:53:03 <oklopol> ...what the silver coinage has to do with it
19:59:49 -!- ShadowHntr has quit ("End of line.").
20:19:10 -!- pgimeno has changed nick to bobot.
20:19:28 -!- bobot has changed nick to pgimeno.
20:45:04 -!- oerjan has joined.
20:54:20 -!- ihope_ has joined.
20:54:44 -!- ihope_ has changed nick to ihope.
20:56:04 -!- CakeProphet has joined.
20:59:19 <oklopol> i understand sylver coinage
20:59:26 <oklopol> not how it is related to that language
21:00:40 <oerjan> well, have you read the side effects of setting a cell, in the second paragraph under the box?
21:02:00 <ihope> Talking about BF-SC, I take it.
21:02:34 <ihope> Yeah, setting a cell is like playing it.
21:05:03 -!- Spacerat3004 has joined.
21:05:52 <oklopol> yeah, what is the relation between sylver coinage and bf-sc?
21:06:03 <oklopol> why would 6 be set if i set 3?
21:06:17 <oerjan> because it says so in that paragraph.
21:06:47 <oklopol> i thought it meant it's what automatically happens given those rules
21:07:12 <oerjan> hope that is cleared up now. :)
21:12:06 <ihope> Let's add some games together!
21:12:57 <ihope> They can be added, as long as they're of the right kind.
21:13:20 -!- bsmnt_bot_chroot has quit.
21:13:24 -!- bsmnt_bot_chroot has joined.
21:13:37 <ihope> Namely, the kind where each player has a set of moves, and each move changes the game to a different one.
21:14:17 <bsmntbombdood> ~exec self.raw("PRIVMSG #bsmnt_bot_chroot_errors :%s" % globals())
21:14:21 <bsmntbombdood> ~exec self.raw("PRIVMSG #bsmnt_bot_chroot_errors :%s" % locals())
21:14:46 <ihope> And the one who can't move loses.
21:16:21 <ihope> Rather, the player who can't move if it's that players turn. If it's your turn and you can't move, you lose.
21:16:34 <ihope> Spacerat3004: I think #irp is for that.
21:16:42 <ihope> Also, you can do this:
21:16:48 -!- ihope has set topic: #esoteric - the international hub for esoteric programming language design and deployment - map: http://www.frappr.com/esolang - forum: http://esolangs.org/forum/ - EgoBot: !help - wiki: http://esolangs.org/wiki/ - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric - for brainfuck-specific discussion, go to ##brainfuck - IRP ALLOWED - Pastebin: http://pastebin.ca/.
21:18:46 <ihope> So why don't we... um, hmm.
21:19:02 <ihope> Let's add * to itself.
21:20:21 <ihope> * times 2 = the player who moves third loses
21:20:51 <ihope> 0 = the first player loses, * = the second player loses, * times 2 = the third player loses, * times 3 = the fourth player loses...
21:20:58 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:21:52 <CakeProphet> I'm making an esolang for the sole purpose of dealing with cause-effect chains in a MUD
21:22:03 <CakeProphet> Just cool that I'll actually be -using- it.... a lot.
21:28:59 <ihope> It'll be an esolang?
21:29:16 <ihope> Surely being an esolang is the sole purpose of an esolang.
21:30:00 <ihope> Well, I guess it depends on how you define an esolang.
21:30:25 <ihope> I'd define it as a language that's intentionally weird in some way.
21:31:53 <CakeProphet> It's going to look something like ORK with coroutines, not quite so object-oriented, not quite so verboose, and with weirder syntax.
21:32:30 <CakeProphet> Right now I'm calling it "Sophia" (It's what I call almost all of my projects)
21:36:53 -!- Sgeo has joined.
21:38:51 <oerjan> Playing with nimbers, I see
21:39:36 <oerjan> third and fourth players?
21:42:23 <oerjan> Is this something different from Conway games?
21:44:41 <oerjan> Or is it just a different way of looking at symmetric ones?
21:46:50 <oklopol> http://esoteric.voxelperfect.net/wiki/Brainloller
21:47:20 <oklopol> how the fuck do you rotate right?
21:48:12 <ihope> Right = clockwise, left = counter-clockwise.
21:49:08 <ihope> oerjan: if you have two players taking turns, third player = first player and fourth player = second player.
21:49:21 <ihope> The players who make the third and fourth moves.
21:52:18 <oerjan> right. i am used to considering all games where first player loses to be equivalent.
21:52:57 <ihope> They're not all equivalent if you want to add them together.
21:52:57 <oklopol> http://esoteric.voxelperfect.net/wiki/Brainfork
21:53:00 <oklopol> "Because Brainfork is a proper superset of Brainfuck, all Brainfuck programs are also valid Brainfork programs with identical semantics."
21:53:14 <oklopol> what about the brainfuck program Y?
21:53:24 <ihope> oklopol: except those containing Y :-)
21:53:46 <oerjan> all _stripped_ brainfuck programs.
21:54:02 <oklopol> yeah, i'm making a compendium of all bf-copies on the wiki site, if compendium means what i think it means
21:54:20 <ihope> A compendium of all whats?
21:54:25 <oklopol> yeah, i know what it meant, i don't know the use of saying that :)
21:55:16 <oerjan> adding a game that the first player loses is an identity operation as far as outcome is concerned.
21:55:25 <oklopol> brainfork duplicates the memory, right?
21:55:37 <oerjan> as long as there are two players, at least.
21:55:41 <ihope> oklopol: I don't think so.
21:55:57 <oklopol> "When a Y is encountered, the current thread forks, with the current cell being zeroed in the parent thread, and the pointer being moved one to the right and that cell set to 1 in the child."
21:56:19 <ihope> oerjan: well, if the second player can make a move, then adding it's not an identity operation.
21:56:44 <ihope> oklopol: um... uh, download the interpreter?
21:57:42 <ihope> I think each thread has its own tape pointer, but they share a tape.
21:57:50 <ihope> I mean, they have to share *something*, no?
21:58:28 -!- Spacerat3004 has quit.
21:59:01 <oklopol> just don't understand "with the current cell being zeroed in the parent thread, and the pointer being moved one to the right and that cell set to 1 in the child"
21:59:23 <oerjan> i mean the first player to move, of course. if that player loses immediately then the second player never gets to make a move.
21:59:42 <ihope> oerjan: losing is not being able to move.
22:01:24 <ihope> When simply playing a game, all games where the first player loses are the same, but not if you can add them together and such.
22:02:25 <ihope> Arithmetic, you know?
22:02:30 <oerjan> ihope: but they _are_ equivalent. note that i am saying this only for the first player, it is not true for the second.
22:03:37 <ihope> All games where the first player can't make any moves are the same from the point of view of the first player, until the second player makes a move.
22:04:29 <oerjan> i am saying this, precisely: if X is a game where the first player loses, and Y an arbitrary (symmetric) game, then X + Y has the same outcome as Y.
22:04:55 <oerjan> i.e. the same player wins.
22:05:27 <oerjan> (assuming optimal play)
22:06:59 <oerjan> monads and multiparameter type classes ftw ;)
22:07:22 <ihope> oerjan: but the second player might be able to make a move in X, which might change things.
22:07:53 <ihope> If neither player can move in X, then you have the zero game, which is an additive identity.
22:08:27 <ihope> Actually, it's *the* additive identity, I think.
22:08:43 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:08:45 -!- bsmnt_bot_chroot has joined.
22:08:59 <oerjan> well you might think that, but then the first player can just do another move to turn the X part back into losing.
22:10:13 <ihope> oerjan: yes, but that's certainly not the only thing the first player can do.
22:10:15 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:10:16 -!- bsmnt_bot_chroot has joined.
22:10:42 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:10:44 -!- bsmnt_bot_chroot has joined.
22:10:55 <oerjan> no. but if the first player wins Y, then he can win X+Y by using that strategy.
22:11:07 -!- bsmnt_bot_chroot has quit (Client Quit).
22:11:09 -!- bsmnt_bot_chroot has joined.
22:11:35 <ihope> What if after the second player makes his/her move, the first player still can't move in X?
22:12:15 <oerjan> well then the second player cannot have moved in X, because any initial move in X turns that part into winning.
22:12:17 -!- bsmnt_bot_chroot has quit (Client Quit).
22:12:19 -!- bsmnt_bot_chroot has joined.
22:13:09 <ihope> Let's say the first player is L and the second player is R.
22:13:27 <ihope> And 0 = { | }. So what about if X = { | 0 }?
22:13:40 <ihope> The second player moves once, then X is done.
22:14:11 -!- bsmnt_bot_chroot has quit (Client Quit).
22:14:13 -!- bsmnt_bot_chroot has joined.
22:14:21 <oerjan> I thought we were considering symmetric games.
22:14:53 <oerjan> where the left and right options are the same.
22:14:58 -!- bsmnt_bot_chroot has quit (Client Quit).
22:14:59 -!- bsmnt_bot_chroot has joined.
22:15:52 -!- bsmnt_bot_chroot has quit (Client Quit).
22:15:54 -!- bsmnt_bot_chroot has joined.
22:16:13 <oerjan> otherwise we need to be careful about distinguishing L and R from the first and second player to move. hmm...
22:16:27 <ihope> Well, if L moves first...
22:17:27 <oerjan> although for the particular case { | } at least, addition is exactly identity.
22:18:57 <oerjan> let's see, in X, L loses if first.
22:20:01 <ihope> Well, { | 0 } is essentially "R is allowed to pass once" when used with addition.
22:20:39 <ihope> Is { | 0 } the same as, say, { | -1/2 }?
22:20:59 <oerjan> so let N be an arbitrary loss for the first player. If L moves first in X+N, he must move in the N part, then R can again respond with turning the N part back into losing.
22:21:04 <ihope> That is, { | {-1|0} } where -1 = { | 0 }?
22:22:17 <ihope> Well... { | 0 } is "R moves", so this one's either "R moves, L moves, R moves" or "R moves, R moves". Doesn't seem the same to me.
22:23:38 <oerjan> i think they are both -1 as surreal numbers.
22:23:41 <ihope> If N is a loss for the first player, then all moves by L can essentially be countered by R, meaning N is effectively not an option for L.
22:23:54 <ihope> As the surreal numbers, yes, but I guess it's not true for games.
22:24:22 <oerjan> so they have the same outcome as a single game.
22:24:50 <oerjan> whether they are the same when added to any game i am not sure.
22:25:29 <ihope> Well, N isn't an option for L, but there is still the stuff R can do. N may allow passes, which may be an advantage for R.
22:25:39 <ihope> N certainly isn't an advantage for L.
22:26:34 <oerjan> note that N is a loss for the first player _whether that is L or R_
22:27:30 <oerjan> so essentially they both will try to avoid it.
22:27:32 <ihope> So a player can effectively move only once in N.
22:28:51 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:28:53 -!- bsmnt_bot_chroot has joined.
22:30:49 <bsmntbombdood> ~exec print getattr(sys,"stdout").__class__.__name__
22:31:44 <ihope> If a player moves in N, that player can't move again in N, but the other player can.
22:32:05 <oerjan> yes, and the other player will usually want to move N back to losing.
22:33:14 <oerjan> the only reason a player might want to move in N first is if he loses in X. but then the other player can always respond.
22:34:53 <oerjan> i think my last sentence constitutes a proof. :)
22:35:11 <ihope> I guess so. If you move in N, then... wait...
22:37:19 <ihope> Well, if neither player moves in N, then X is lost by someone, then N won't help.
22:38:31 <bsmntbombdood> print must use some kind of global version of stdout
22:38:44 <ihope> Wait... did you say N is a first-player loss?
22:39:09 <ihope> Isn't 0 the only first-player loss, then?
22:39:26 <oerjan> no, consider {{0|0}|{0|0}}
22:39:35 <ihope> Yeah, there's that, I guess.
22:40:15 <oerjan> and for symmetric games, X+X is a first-player loss.
22:40:42 <ihope> Oh, right. If one player moves in N, the other player can turn it back into another first-player loss.
22:40:51 <ihope> After all, it's a first-player loss.
22:41:17 <ihope> So are all first-player losses essentially equivalent to 0?
22:41:27 <oerjan> that's what i am saying :)
22:42:01 <bsmntbombdood> well, now we have sys.stdout going to the current channel, and sys.stderr going to #bsmnt_bot_chroot_errors
22:42:55 <oerjan> also, for surreal numbers, x + (x) is a first-player loss.
22:42:59 -!- ShadowHntr has joined.
22:43:16 <oerjan> i am not quite sure about x + (-x) in general.
22:43:54 <oerjan> in fact i have a recollection that some things break down then.
22:44:00 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:44:05 -!- bsmnt_bot_chroot has joined.
22:46:26 <oerjan> bsmntbombdood: Strange, as on python.org: "Standard output is defined as the file object named stdout in the built-in module sys."
22:46:56 <oerjan> (From http://docs.python.org/ref/print.html)
22:47:33 <bsmntbombdood> I think it is going from the real value of sys.stdout, not the value as defined in the enviroments given to exec
22:48:30 <ihope> oerjan: by x + (x), do you mean x + (-x)?
22:48:41 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:48:42 -!- bsmnt_bot_chroot has joined.
22:48:49 <oerjan> ihope: for symmetric games, -x = x
22:49:24 <ihope> Are all surreal numbers symmetric games?
22:49:32 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:49:33 <oerjan> none of them except 0.
22:49:33 -!- bsmnt_bot_chroot has joined.
22:49:34 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:49:36 -!- bsmnt_bot_chroot has joined.
22:49:47 <oerjan> the symmetric games correspond to the nimbers.
22:50:55 <oerjan> they are games where the situation for L and R is always the same. only who goes first matters.
22:53:38 <ihope> And nim games are sums of star games.
22:56:15 <ihope> I take it that means *1 + *2 = *3.
22:56:26 <ihope> And *1 + *1 is, of course, 0.
22:56:55 -!- bsmntbombdood has changed nick to xor.
22:57:05 -!- xor has changed nick to bsmntbombdood.
22:57:53 <ihope> Last Seen: 24 seconds ago (bsmntbombdood is online)
22:58:13 <ihope> I hope xor isn't yours, bsmntbombdood...
22:59:22 <ihope> Erm, I didn't mean to do that.
22:59:55 <ihope> I accidentally sent a memo to bsmntbombdood.
23:00:27 <ihope> And you thought nobody used those things...
23:00:34 <oerjan> oh no! now he will be infected by the corporate virus!
23:01:25 <oerjan> apologies to anyone actually working at a corporation.
23:01:28 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
23:01:34 <ihope> What's it say, bsmntbombdood?
23:01:56 <ihope> And the other one?
23:02:12 <ihope> I sent one to xor, too. :-)
23:02:18 -!- bsmntbombdood has changed nick to xor.
23:02:46 <xor> You're bsmntbombdood, then?
23:03:03 -!- xor has changed nick to bsmntbombdood.
23:04:09 <ihope> Now, what does multiplication mean for games?
23:06:48 <oerjan> i don't think multiplication makes sense outside the surreal numbers. But i never got around to really understanding it.
23:07:35 <oerjan> basically i think the ordering of the subgames plays an essential role, which means only surreals work.
23:10:45 <oerjan> or it may have been something about multiplication not preserving the equivalence we have just discussed.
23:17:15 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
23:17:50 -!- RodgerTheGreat has joined.
23:18:34 -!- RodgerTheGreat has quit (Remote closed the connection).
23:19:07 -!- RodgerTheGreat has joined.
23:20:41 -!- RodgerTheGreat has quit (Remote closed the connection).
23:21:22 -!- RodgerTheGreat has joined.
23:30:52 -!- RodgerTheGreat has quit (Remote closed the connection).
23:31:32 -!- RodgerTheGreat has joined.
23:31:41 <CakeProphet> paticularly... one that supports Python stuff?
23:34:20 <oerjan> Alas, I just use gVim (an editor) + WinHugs (for Haskell only)
23:43:20 -!- bsmntbombdood has left (?).
23:43:25 -!- bsmntbombdood has joined.
23:49:24 -!- tgwizard has quit (Remote closed the connection).
23:55:21 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:55:25 -!- bsmnt_bot_chroot has joined.
00:17:38 -!- CakeProphet_ has joined.
00:17:49 -!- CakeProphet has quit (Read error: 113 (No route to host)).
00:17:54 -!- CakeProphet_ has changed nick to CakeProphet.
00:32:23 <oerjan> On second thought, x + (-x) is always a first player loss, without additional restrictions on the game.
00:38:13 <CakeProphet> or does game theory differenciate from the typical inverseness of addition and subtraction?
00:38:45 <oerjan> well, x - y may be an abbreviation of x + (-y).
00:40:01 <oerjan> although the statement you responded to can be used to prove that x - y + y = x up to equivalence.
00:41:01 <oerjan> But on the level of exact game structure, that doesn't hold.
00:41:20 <CakeProphet> ....yeah, I don't what the hell you're talking about.
00:41:35 <oerjan> -x is a "mirror" game of x, swapping the roles of players L and R.
00:42:08 <CakeProphet> I'm not even familiar with mathematical games anyway.
00:51:17 <CakeProphet> ONE THAT REVOLUTIONIZES THE UNCREATIVE WORLD OF TEXT EDITING
00:51:32 <CakeProphet> ONE SUCH AS THE DISCORDIAN TEXT EDITING AUTOMATON
00:53:22 <oerjan> We could name it "Norton utilities", after the great Discordian Saint.
00:54:57 * CakeProphet 's goal as a programmer is to have a plethora of programs that all go by the name "MeSophia"
00:55:06 <oerjan> ah, wait, alas it already exists: http://yoyo.cc.monash.edu.au/~acb/norton/
00:56:37 <oerjan> You might want to look into the Kafka program there.
00:57:20 <oerjan> Or perhaps you might want to preserve the remains of your sanity, what do I know.
01:01:57 -!- ShadowHntr has joined.
01:09:25 -!- digital_me has quit (Read error: 145 (Connection timed out)).
01:24:28 -!- surye has joined.
01:30:23 * CakeProphet looks at the large engorged slug that now rests upon his desktop... labeled "emacs"
01:30:45 <CakeProphet> All the useful configuration I could ever fucking want..
01:40:04 * CakeProphet is trying to get this python mode he just downloaded into it.
01:43:21 -!- bsmnt_bot_chroot has quit ("new user").
01:43:23 -!- bsmnt_bot_chroot has joined.
01:43:40 -!- bsmnt_bot_chroot has quit (Client Quit).
01:43:42 -!- bsmnt_bot_chroot has joined.
01:47:40 -!- pikhq has joined.
01:54:10 <bsmntbombdood> whoever breaks out of my chroot and tells me what's in the file /home/bsmntbombdood/proof.txt gets a prize
01:59:47 <CakeProphet> ~pexec sys.stdout.write( file(sys.path.abspath(".").partition("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:01:23 <CakeProphet> ~exec sys.stdout.write( file(sys.path.abspath(".").partition("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:01:42 <bsmntbombdood> and join #bsmnt_bot_chroot_errors so you can see all the exceptions that you just raised
02:01:59 <CakeProphet> ~exec sys.stdout.write( file(sys.path.abspath(".").partition("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:02:19 <CakeProphet> ~exec sys.stdout.write( file(os.path.abspath(".").partition("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:02:56 <CakeProphet> ~exec sys.stdout.write( file(os.path.abspath(".").split("/home/")[0] + "/home/bsmntbombdood/proof.txt", "r").read())
02:03:47 <CakeProphet> ~exec sys.stdout.write( file(os.path.abspath(".").split("/home/")[0] + "home/bsmntbombdood/proof.txt", "r").read())
02:04:11 <CakeProphet> ~exec sys.stdout.write(os.path.abspath("."))
02:04:53 <oerjan> cakeprophet: you are aware of what a chroot _is_, are you?
02:06:13 <oerjan> it is a way to designate a directory for a process so that that process thinks that directory is the root directory.
02:07:20 <oerjan> in other words, the file you want is not inside what your process sees as "/"
02:08:35 <CakeProphet> ~exec sys.stdout.write(list(os.walk("/")))
02:08:38 <oerjan> i don't even know if it is possible, although GregorR mentioned something about devices that _might_ be usable, if available.
02:09:06 <oerjan> I guess he is the one on the channel most likely to succeed if it is possible.
02:09:16 <CakeProphet> ~exec sys.stdout.write(str(list(os.walk("/"))))
02:09:19 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:09:34 -!- bsmnt_bot_chroot has joined.
02:10:40 <bsmntbombdood> I'm going to be a little lenient and non standard with my stdout.write method, and convert its args with str() first
02:11:00 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
02:11:18 -!- bsmnt_bot_chroot has joined.
02:15:10 <bsmntbombdood> I think you have to get root to break out of a chroot
02:16:07 -!- CakeProphet_ has joined.
02:19:30 <bsmntbombdood> ~exec sys.stdout.write(str(list(os.walk("/bin"))))
02:19:41 <bsmntbombdood> ~exec sys.stdout.write(str(list(os.walk("/etc"))))
02:19:54 <bsmntbombdood> ~exec sys.stdout.write(str(list(os.walk("/bot"))))
02:19:54 <bsmnt_bot_chroot> [('/bot', [], ['betterbot.py', 'start.sh', 'better.sh', 'ircbot.py'])]
02:21:56 <bsmntbombdood> CakeProphet: Nope, symbolic links resolve inside the chroot
02:25:20 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/.."))))
02:25:23 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:26:12 -!- bsmnt_bot_chroot has joined.
02:26:19 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/../.."))))
02:26:22 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:26:28 -!- bsmnt_bot_chroot has joined.
02:27:14 <oerjan> ~exec sys.stdout.write(repr(list(os.walk("/../../.."))))
02:27:16 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:27:42 -!- bsmnt_bot_chroot has joined.
02:28:03 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/..")))[0..50])
02:28:37 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/..")))[0:50])
02:28:37 -!- CakeProphet has quit (Read error: 113 (No route to host)).
02:29:03 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/../..")))[0:50])
02:29:23 <oerjan> ok, not immensely useful. or maybe...
02:29:30 <oerjan> ~exec sys.stdout.write(str(list(os.walk("/")))[0:50])
02:29:52 <bsmntbombdood> ~exec sys.stdout.write(str(list(os.walk("/")))[0:298])
02:29:56 <bsmnt_bot_chroot> [('/', ['bin', 'bot', 'etc', 'lib', 'usr'], []), ('/bin', [], ['bash']), ('/bot', [], ['betterbot.py', 'start.sh', 'better.sh', 'ircbot.py']), ('/etc', [], ['hosts', 'passwd', 'resolv.conf']), ('/lib', [], ['libm.so.6', 'libreadline.so.5', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncur
02:30:21 <bsmntbombdood> yikes, my write method needs to split it up into chunks
02:30:44 <oerjan> ~exec os.system("pwd")
02:32:05 <oerjan> well, that didn't work anyhow.
02:34:59 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
02:35:02 -!- bsmnt_bot_chroot has joined.
02:35:13 -!- bsmnt_bot_chroot has quit (Excess Flood).
02:35:16 -!- bsmnt_bot_chroot has joined.
02:35:48 -!- bsmnt_bot_chroot has quit (Client Quit).
02:35:50 -!- bsmnt_bot_chroot has joined.
02:36:08 <pikhq> (intentionally, but. . .)
02:36:30 <pikhq> 19:30 -!- bsmnt_bot_chroot [n=bsmnt@abacus.kwzs.be] has quit [Client Quit]
02:39:58 -!- bsmnt_bot_chroot has quit (Client Quit).
02:40:00 -!- bsmnt_bot_chroot has joined.
02:40:49 <pikhq> Just felt like accusing you of failure.
02:49:54 -!- oerjan has quit (Remote closed the connection).
02:50:03 -!- oerjan has joined.
02:54:13 * CakeProphet_ doesn't get why programmers enjoy masochistic UIs like command-lines and programs will billions of weird non-conviences.
02:54:42 <CakeProphet_> Sometimes you -just- want to get the job done... not tinker wth your job-doing device.
02:55:18 <pikhq> Oddly enough, this masochist UIs are actually a better way to get the job done for some of us.
02:56:47 <CakeProphet_> I prefer good ol' point-and-click to memorizing a crapload of shellcommands. :P
02:57:25 <pikhq> Once it's commited to memory, your interface using is limited to the speed of your typistry.
02:57:42 <pikhq> I type at 70wpm, but I sure as hell don't mouse at a comparable speed.
02:58:01 <CakeProphet_> directory names are kind... annoying to work with.
02:58:23 <pikhq> Directory names are annoying?
02:58:45 <CakeProphet_> It's one of my main dislikes of the current OS layout.
02:59:18 <pikhq> $ less re<tab>ba<tab>ba<tab>0<tab>
02:59:34 <bsmntbombdood> CakeProphet_: http://www.catb.org/~esr/writings/unix-koans/gui-programmer.html
02:59:36 <pikhq> $ less release/basm/basm.0.b
03:00:06 <pikhq> 16 characters versus 26.
03:00:12 <pikhq> Tab completion = :)
03:00:40 * pikhq only uses the mouse for copy-paste. . .
03:00:52 <pikhq> And only because X makes it so. Damned. Simple.
03:01:27 <bsmntbombdood> If you used screen, you wouldn't even have to use the mouse
03:01:30 <CakeProphet_> pikhq, Pfft... who the hell said I was endorsing that :P
03:02:03 <pikhq> bsmntbombdood: Actually, screen doesn't seem to interface with the X copy buffer too well.
03:02:13 <pikhq> And if it does, well, I'm too lazy to get that set up right.
03:02:50 <pikhq> Well, that doesn't work for me. . . My interaction with the copy buffer is between my screen-running terminal and my Firefox+Conkeror setup.
03:02:52 * CakeProphet_ has a hard time fathoming how he'd get around easily using the Windows command prompt.
03:03:24 <pikhq> Who said it's the *Windows* command prompt I use?
03:03:29 <pikhq> That thing really, really sucks.
03:03:33 <CakeProphet_> and applications that run directly -through- the shell? worst... experience... ever.
03:03:48 <bsmntbombdood> I stopped using it because it completely took over the chrome
03:03:55 <pikhq> Did I happen to mention that the Windows shell sucks?
03:04:01 <pikhq> bsmntbombdood: I don
03:04:06 <pikhq> 't like the chrome. ;)
03:05:17 <CakeProphet_> but it's really the directory system that makes it annoying... not so much the fact that I have to type in commands.
03:05:35 <pikhq> zsh is like an extension of myself.
03:05:45 <pikhq> A user interface doesn't get much better than that.
03:06:18 <CakeProphet_> The problem is... I have no clue how to better organize data than with a directory system.
03:06:27 <CakeProphet_> but it seems so obvious that there's a better way.
03:07:59 <pikhq> That way is a directory system filled with auto-organizing meta-directories. ;)
03:08:15 <pikhq> So one gets ~/audio, which automagically organizes itself.
03:08:44 <pikhq> One can set it up to organize by artist then album, album then artist, year album then artist, etc.
03:09:37 <pikhq> bsmntbombdood: Just an idea.
03:12:40 <CakeProphet_> THat's just.... directories with auto-organization.
03:12:45 <pikhq> And said idea, clearly a (mild) improvement on the current system, was brought up with a few seconds of thought.
03:12:52 <oerjan> Sounds like a relational database.
03:12:52 <pikhq> CakeProphet_: And it's an improvement, no?
03:13:07 <pikhq> oerjan: That'd be a good way of having it done underneath.
03:13:43 <pikhq> bsmntbombdood: When applied to audio, it would be.
03:14:02 <oerjan> CakeProphet: And when you think about it you don't like _computers_ too much, either? ;)
03:14:26 <pikhq> One could apply it to just about anything if the interface to the underlying database were done right.
03:15:01 <pikhq> I didn't say it was the best idea in the world; my point was that with just a few seconds of thought it could be improved on if you cared enough.
03:15:24 <pikhq> CakeProphet_: Correction: *Windows* computers aren't very organized.
03:16:00 <pikhq> It's spaghetti code. . . as the interface!
03:16:17 <CakeProphet_> I like simplicity... and if you can't make it simple, then make it messy.
03:16:30 <pikhq> What the hell is wrong with you?
03:17:03 <pikhq> Windows is a *case study* in why "messy" is the wrong way to do things.
03:17:46 <CakeProphet_> *shrugs* I don't really.. erm... like Windows.
03:18:02 <pikhq> Well, your philosophy seems to describe the Windows way of doing things.
03:18:54 <pikhq> No oversimplification.
03:18:59 <CakeProphet_> There are other factors involved in windows besides messiness...
03:19:10 <CakeProphet_> it's not a simple one-to-one (messy -> Windows) relationship.
03:19:18 <pikhq> Yes, but messiness is the single thing binding the whole thing together.
03:20:05 <pikhq> It's like, uh, the core idea in the behemoth (if there is such a thing)?
03:21:05 <CakeProphet_> I do however... like the chaotic mess that is my bedroom.
03:21:20 <pikhq> I like limited amounts of chaos.
03:21:31 <pikhq> But only when it's my *own* chaos.
03:21:54 <pikhq> If it's the chaos of others, well, I hate it with a passion.
03:22:48 <bsmntbombdood> That's why it's easier to write your own messy library than learn someone elses
03:22:58 <CakeProphet_> ....this is probably why I woud be a terrible developer.
03:23:10 * pikhq knows how to clean up his own code. . .
03:23:32 <pikhq> I don't always *do* it, but I can (and will if anyone else is going to risk touching it)
03:23:36 * CakeProphet_ makes it run smooth... regardless of how it looks on the surface. :P
03:24:09 <pikhq> I find that bugs are easy to squash when the code is clean and readable.
03:24:11 <CakeProphet_> I have a bad habit of not testing code in pieces.
03:24:20 <CakeProphet_> so I just like... amass huge piles of untested source...
03:24:41 * pikhq has a bad habit of making his code easy to test
03:24:54 <CakeProphet_> pikhq, You have a bad habit of being modest too.
03:25:12 <pikhq> It helps that I do interpreted languages most of the time.
03:25:39 <CakeProphet_> Most "testing" involves a series of a few function calls.
03:25:46 <pikhq> CakeProphet_: It's a bit of a character flaw.
03:27:23 <CakeProphet_> hmmm... Python's ideol of readability is actually kind of hard for me to read.
03:28:40 <oerjan> CakeProphet: try Haskell :)
03:29:16 <CakeProphet_> My personal definition of "elegant" is anything that can be summed up in a few quick lines.
03:29:40 <pikhq> Allow me to describe my elegant BFM compiler.
03:30:35 <pikhq> The macro pass expands macros, the optimizing pass optimizes the code, the nostrip pass will add various automated comments to the resulting Brainfuck code, and the brainfuck code compiles the mass into Brainfuck.
03:30:46 <pikhq> The passes between macro and brainfuck are completely optional.
03:30:56 <pikhq> Voila, that's the basic structure of the compiler.
03:31:05 <CakeProphet_> CLI's are definetely better on the input side of things...
03:31:25 <CakeProphet_> but... it's harder to see the "big picture" of things in a CLI...
03:32:08 <CakeProphet_> a GUI gives you everything you need... a CLI gives you fleeting bits of text as output.
03:32:11 <pikhq> "while foo;do bar;baz;done" is much simpler than the GUI equivalent (clicking over and over and over)
03:32:27 <CakeProphet_> CLI is better for inputting... but I think it fails at outputting productively.
03:32:41 <pikhq> It outputs very productively, IMO.
03:33:02 <pikhq> (when was the last time you needed a program to output pictures at you instead of text?)
03:33:34 <CakeProphet_> I really don't feel like mentally imagining what the HTML will render as.
03:33:35 <pikhq> I see pictures and text.
03:33:44 * pikhq shows CakeProphet_ Elinks
03:34:08 <pikhq> bsmntbombdood: I find them useful on occasion.
03:34:12 <pikhq> (any time I break X)
03:34:43 <CakeProphet_> so... the best hybrid methinks would be a command line with a nicely coherant graphical output.
03:36:50 * pikhq shows CakeProphet_ Firefox running Conkeror
03:36:50 <pikhq> It's a coherant graphical output with all-text input. . .
03:36:50 * pikhq also shows CakeProphet_ irssi running in a terminal
03:37:15 <pikhq> No graphics needed (seriously: it's overkill for what amounts to a screenful of text)
03:37:50 <CakeProphet_> but with that method the output only comes -on demand-... it requires more typing to get information.
03:37:58 <CakeProphet_> with a GUI... all the infermation is sprawled out before you.
03:38:37 <CakeProphet_> No need to repeatedly type a command to see wat the title, mode, usernames
03:38:49 <CakeProphet_> no need to sift through tons of text... because the output is split into channel tabs.
03:40:02 <pikhq> You, um, realise that that's how irssi works?
03:40:40 <pikhq> (it sure as hell ain't graphical)
03:40:59 <CakeProphet_> I consider a GUI anything that has more nuts and bolts than a terminal.
03:41:16 <CakeProphet_> it has tabs... you can click on them... that makes it graphical.
03:41:18 <pikhq> In which case, irssi wouldn't count as a GUI.
03:41:26 <pikhq> It's a terminal app.
03:41:39 <pikhq> You hit alt-(window number) to switch channels.
03:42:13 <pikhq> Then irssi, being a curses app, isn't a GUI.
03:42:39 <CakeProphet_> Well then... that's exactly what I mean by a hybrid then.
03:43:00 <CakeProphet_> input is text... output is graphical (to the extent that it partitionts logically instead of just vomiting it all onto the same place)
03:43:12 <pikhq> In which case, the ideal situation for you is a curses app. . .
03:43:43 * pikhq also notes that elinks does the same thing (it's rather nice if you don't mind only having CSS1 and no graphics)
03:45:08 <CakeProphet_> I'd love to have an OS GUI that worked that way... and didn't use fucking directories.
03:46:13 * pikhq still thinks CakeProphet_ is friggin' crazy
03:46:57 <pikhq> What I want as an OS interface is pretty much what I've got now, except that the system would read my thoughts instead of my finger movements.
03:47:14 <pikhq> (although my typistry is such that that's actually rather close)
03:48:54 <CakeProphet_> GUI output, TUI input.... I want my OS GUI to be a giant curses app.
03:49:32 <pikhq> I'm already, like, really happy with mine, as I already said, so. . .
03:50:20 <pikhq> Ratpoison + screen + irssi + zsh + (Firefox + conkeror)
03:50:28 <pikhq> + emacs + emacs + emacs
03:51:31 <CakeProphet_> Emacs is just too damn complicated for what I want to use it for.
03:53:56 <pikhq> bsmntbombdood: Yeah, well. . .
03:54:07 <pikhq> At least you've succumbed to the pro-keyboard side of things.
03:54:29 <CakeProphet_> perhaps my hatred of directory names stems from the fact that everything in Windows has absurdly long path na,es.
03:54:42 <pikhq> CakeProphet_: Sounds about right.
03:56:21 <CakeProphet_> at max... 2 directory depth for the "main" stuff.
03:56:29 <pikhq> I once had my mouse disconnected and didn't notice for a few weeks (I know it was a few weeks because I had moved my computer and, well, forgot to plug in the mouse)
03:56:39 <RodgerTheGreat> if I'm using a computer, I want it running IBM-DOS or OSX.
03:57:01 <pikhq> RodgerTheGreat: FreeDOS: Like IBM-DOS, but you can actually *obtain* it!
03:57:19 <pikhq> (that, and it's Stallman-endorsed)
03:57:33 <RodgerTheGreat> I already *have* IBM-DOS, on a set of 3.5 inch floppies, as it should be
03:57:44 <pikhq> But FreeDOS is still maintained!
03:57:54 <pikhq> And is free as in freedom!
03:58:03 <RodgerTheGreat> and the fact that it *isn't* "stallman-endorsed" is all the more reason for me to use it
03:58:21 <pikhq> bsmntbombdood: Don't remember the specific time.
04:00:35 <pikhq> RodgerTheGreat: Why do you not want to have control over your computer?
04:00:54 <pikhq> That would be GNU/FreeDOS.
04:01:09 <pikhq> FreeDOS at it's core is, like, DOS++;
04:01:22 <pikhq> And, like, why am I, like, using, like, like?
04:02:10 <RodgerTheGreat> freeDOS is to DOS proper as BlitzBASIC is to QBASIC. They just don't *get* it.
04:02:28 <oerjan> because you, like, like it?
04:02:40 -!- digital_me has joined.
04:03:37 <pikhq> Well, if you care enough, surely you could make FreeDOS behave like it should?
04:03:59 <pikhq> After all, you've got the full source and all that.
04:04:16 <RodgerTheGreat> why would I bother *making* freeDOS how I want, when IBM DOS is *already* how I want
04:05:02 <RodgerTheGreat> I have the original media, and I have a USB floppy drive
04:05:48 <pikhq> And this gets all the way back into the issue of you not wanting control over your computer.
04:06:44 <RodgerTheGreat> Let me rephrase this simply, so that it'll fit inside your closed mind: I don't care. I have the degree of control I require.
04:08:45 <pikhq> Which isn't the amount of control you should have in a free society, IMO.
04:08:55 -!- pikhq has quit ("leaving").
04:09:29 <RodgerTheGreat> honestly, I wish more people would realize that not everyone wants the same thing.
04:16:50 -!- CakeProphet_ has quit (Read error: 113 (No route to host)).
04:31:36 -!- Sgeo has quit (Read error: 54 (Connection reset by peer)).
04:52:16 -!- ShadowHntr has quit (Client Quit).
05:06:49 -!- bsmnt_bot_chroot has quit.
05:06:52 -!- bsmnt_bot_chroot has joined.
05:07:34 <bsmntbombdood> ~exec self.register_raw(".*", lambda x,y,z : "this fails")
05:08:27 -!- bsmnt_bot_chroot has quit (Client Quit).
05:08:29 -!- bsmnt_bot_chroot has joined.
05:08:33 <bsmntbombdood> ~exec self.register_raw(".*", lambda x,y,z : "this fails")
05:09:13 -!- bsmnt_bot_chroot has quit (Client Quit).
05:09:15 -!- bsmnt_bot_chroot has joined.
05:09:18 <bsmntbombdood> ~exec self.register_raw(".*", lambda x,y,z : "this fails")
05:32:21 -!- digital_me has quit ("goodnight").
05:57:47 -!- ShadowHntr has joined.
06:27:17 -!- ShadowHntr has quit (Client Quit).
06:41:38 -!- RodgerTheGreat has quit.
06:55:59 -!- EgoBot has quit (Read error: 54 (Connection reset by peer)).
06:56:14 -!- EgoBot has joined.
06:57:04 -!- sp3tt has quit (Remote closed the connection).
07:04:38 -!- GregorR has quit (Read error: 104 (Connection reset by peer)).
07:05:00 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
07:10:10 -!- EgoBot has joined.
07:10:46 -!- GregorR has joined.
07:12:01 -!- ShadowHntr has joined.
07:24:36 -!- GreaseMonkey has joined.
07:26:44 -!- ShadowHntr has quit (Client Quit).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:54 -!- oerjan has quit ("leaving").
09:08:12 -!- GreaseMonkey has quit.
13:38:22 -!- ihope has quit (Connection timed out).
13:38:22 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
14:30:10 -!- sp3tt has joined.
15:37:10 -!- RodgerTheGreat has joined.
17:30:02 -!- tgwizard has joined.
18:11:16 -!- jix has joined.
19:32:52 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
20:04:38 -!- puzzlet has joined.
20:15:00 -!- Sgeo has joined.
20:35:05 -!- Sgeo has quit (Remote closed the connection).
20:49:41 -!- oklopol has joined.
20:54:45 -!- ihope_ has joined.
20:55:17 -!- ihope_ has changed nick to ihope.
20:58:01 <ihope> Basement bot change root errors.
20:58:05 <ihope> Some years ago, that would have made no sense whatsoever.
20:58:48 -!- bsmntbombdood has left (?).
20:58:48 -!- bsmntbombdood has joined.
20:59:19 <ihope> The phrase "basement bot change root errors".
20:59:40 <ihope> That's what "chroot" is, no? "Change root"?
20:59:46 <ihope> Just like chmod and... uh.
21:00:33 <ihope> Chowns work at circles, right?
21:00:59 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:01:42 -!- digital_me has joined.
21:03:16 <bsmntbombdood> ~exec sys.stdout = IRCFileWrapper(self.raw, "#esoteric")
21:04:29 -!- bsmnt_bot_chroot has quit.
21:04:32 -!- bsmnt_bot_chroot has joined.
21:12:18 <ihope> Arrrrrrrrrrrrrrrrrrrrrrrrrrrrrugula?
21:34:03 -!- CakeProphet has joined.
21:34:36 -!- fizzie has quit (pratchett.freenode.net irc.freenode.net).
21:34:36 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
21:34:50 -!- GregorR has joined.
21:38:28 -!- fizzie has joined.
21:55:34 <CakeProphet> It uses a data strcture I've never actually seen in any other language.
21:57:23 <CakeProphet> a "ring"... which is basically a sequence of co-routines.
21:57:46 <CakeProphet> it's an idea for compound routines I've been considering.
22:00:49 -!- bsmntbombdood has changed nick to http-.
22:01:16 -!- http- has changed nick to bsmntbombdood.
22:03:11 <CakeProphet> When you call a ring... it calls the first coroutine in the list... and its first yield contains the arguments that are to be passed to the next coroutine.... when the last coroutine yields... all the coroutines continue their execution where they left off... in reverse order.
22:09:03 <CakeProphet> I'm using it to represent the action-event system for my MUD... because it's extremly well suited for something like that.
22:09:53 <CakeProphet> an action calls a ring... and a ring can contain any arbitrary number of coroutines... that each modify the arguments of the next one.
22:10:08 <CakeProphet> it makes it trivial to imlement something like.... a poison effect.
22:10:16 <CakeProphet> you just pop the posion function onto the ring.
22:11:19 <CakeProphet> an example of how my MUD could use a ring effectively?
22:12:02 <CakeProphet> oh no... Bob got bit by a MUD-snake... now he's poisoned and is losing health...
22:17:20 <CakeProphet> generators are a simplified coroutine though.
22:17:30 <CakeProphet> Python added coroutine emulation for generations in version 2.5
22:17:42 <CakeProphet> so that you can do things like x = yield 5
22:19:38 <CakeProphet> returns 5, freezes execution, and awaits for either the next() or the new send() method to be called./
22:20:07 <CakeProphet> send is like next... except you can pass it an argument... which becomes the return value of the yield expression.
22:20:37 <CakeProphet> so its a generator that can take arguments.
22:20:57 <CakeProphet> rather than -only- the first call... as it was in 2.4
22:22:51 <CakeProphet> the first yield of each coroutine is the arguments of the next coroutine call.... and when it reaches the end of the sequence, it "turns around" as all them are called a second time, picking up where they left off at there yield expression.
22:24:05 <CakeProphet> so... it makes it extremly simple to tag on functions to the beginning and end of these rings... which is ideal for something like a MUD... where you can change all of this in mid runtime.
22:24:32 -!- tgwizard has quit (Remote closed the connection).
22:26:25 <CakeProphet> hmm... it probably qualifies as a self-modifying data type as well...
22:27:11 <CakeProphet> the coroutines are perfectly capable of tagging on new functions to their ring... and they can change the arguments sent to any of the functions both foreward and reverse.
22:27:32 <CakeProphet> eh... it's not terribly useful... but it'll be handy for this specific task.
22:28:24 <CakeProphet> I use an event system for objects in the MUD... different actions trigger specific responses to arbitrary functions when they occur...
22:29:06 -!- RodgerTheGreat has quit.
22:30:13 <CakeProphet> player A types in "get box"... which sends a get event to his character, which calls whatever ring is assigned to that event with the argument "box"... one of the functions of the ring sends a "gotten" event to box... which respondes with whatever function has been assigned to it.
22:33:57 <CakeProphet> It makes things a little more complicated... but its compensated by making everything super easy to add on to.
22:41:23 <SimonRC> Have you looked at the "Platypus" alternative library for Inform?
22:50:30 <CakeProphet> this is probably the best way to do it... it simplifies a lot of the tangle involved with event programming.
22:54:29 <SimonRC> Inform is a lang for writing IF (very like a MUD), and plutypus is a better-though-tou library that the standard one.
22:55:04 <SimonRC> see section 2 of this page:
22:55:07 <SimonRC> http://homepage.ntlworld.com/elvwood/InteractiveFiction/Platypus/Summary.html#2
22:57:58 <CakeProphet> eh... it looks neat... but I don't think I'd like it better.
22:58:30 <CakeProphet> I have been thinking about how the indirect responses will work... I don't want to clutter up the possible events with a bunch of indirect events.
23:00:49 <CakeProphet> The coroutine approach works extremly well... you can put the manipulation and the did-it-happen check all in the same function.
00:29:52 -!- ShadowHntr has joined.
01:28:45 -!- ShadowHntr has quit (Client Quit).
01:39:28 <CakeProphet> I like the simplicity of functions... but I also like the sheer amount of shit you can accomplish with OO...
01:41:28 <bsmntbombdood> In python, it's just a thin abstraction over dictionaries
01:42:05 <CakeProphet> I just mean... the way people talk about it.
01:46:27 <CakeProphet> abstract base class, wrapper, instance of a class, class method, members, handler (dear God... I despise anything with "handler" in its name...)
01:48:38 <bsmntbombdood> ~exec for i in range(5): self.raw("PRIVMSG CakeProphet :handler!")
01:49:03 <bsmntbombdood> ~exec for i in range(5): self.raw("PRIVMSG CakeProphet :handler!")
01:49:34 <GregorR> Hee-hee ... I made a DNPTB-themed wallpaper for my cell phone :)
01:50:21 <GregorR> http://www.donotputthebaby.com
02:33:53 -!- ShadowHntr has joined.
02:35:26 -!- pikhq has joined.
03:05:04 -!- loopd001 has joined.
03:59:03 -!- pikhq has quit ("leaving").
04:15:08 -!- CakeProphet has quit (Read error: 113 (No route to host)).
04:52:00 <bsmntbombdood> the 35 bytes in /home/bsmntbombdood/proof.txt await you!
05:01:47 -!- digital_me has quit ("night").
05:04:51 <oklopol> somehow i felt i had to ask what proof.txt prooves without considering the context at all
05:12:36 <ShadowHntr> probably the only way you could see what's in the file is if you broke the chroot jail?
05:15:58 <oklopol> i only have a vague idea what a chroot is... but i'm sure i'd enjoy breaking one
05:44:59 <ShadowHntr> so it creates a "jail" in which the user can't access anything outside of.
05:46:15 <bsmntbombdood> There's ways to get out of one, but I think they require root
06:45:51 -!- oerjan has joined.
07:29:10 -!- ShadowHntr has quit ("End of line.").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:40:59 -!- wooby has joined.
09:29:02 -!- wooby has quit.
09:52:33 -!- Sukoshi has joined.
09:52:47 <Sukoshi> Does anyone know the typical error of a good perceptron?
09:53:42 * oerjan means no, and what is a perceptron? :)
10:14:34 -!- loopd001 has quit ("DISCO").
12:23:32 -!- clog has joined.
12:23:32 -!- clog has joined.
13:18:02 -!- ihope has quit (Connection timed out).
15:04:53 -!- oerjan has joined.
15:28:19 -!- tgwizard has joined.
15:31:46 -!- jix has joined.
18:57:19 -!- RodgerTheGreat has joined.
18:58:44 <oklopol> http://esoteric.voxelperfect.net/wiki/Fortuna
18:59:17 <oklopol> 1 Take hand on or off the wheel
18:59:27 <oklopol> what the fuck does a hand do?
19:00:27 <RodgerTheGreat> "there is a theoretical wheel, spinning at a constant speed of 1, that manipulates a set of bits"
19:01:43 <oklopol> so... executes a BF > or < between every instruction... or?
19:03:55 <oerjan> I get this sudden urge to create the Incomprehensible template :)
19:04:15 <oklopol> if it's a constant speed of one, how can you change it? speed as a concept includes the direction, if it's constant, how is it changed?
19:04:37 <oerjan> no, velocity includes direction, speed does not.
19:05:31 <oerjan> although with the rest of the description I wouldn't bet on the writer having considered that.
19:05:32 <oklopol> nah i don't understand the lang
19:06:27 <oklopol> i hate these descriptions, i have to read the long code of the interpretor to be able to understand the idea, which can easily be expressed in a few sentences
19:06:51 <oklopol> 'm just too stupid to understand clear descriptions
19:07:29 <oklopol> which, tho, i wouldn't be suprised of, given i missed the on this wheel part in "On this wheel there are five commands:"
19:07:33 <oerjan> That would have been an option if there was actually a pointer to an implementation.
19:07:46 <oklopol> yes, that's why i had to ask
19:07:58 <oklopol> if you get it, please tell me :\
19:08:43 <oklopol> i got a result of almost printing 0000111 when executing the prog, but then it did something weird in the end
19:08:54 <oklopol> and the scan... i have no idea what that means
19:09:59 <oklopol> "move bit pointer in current direction" there are 3 directions, memory direction, wheel direction and ip direction, right?
19:10:16 <oerjan> OK I had one sudden insight.
19:11:24 <oerjan> The wheel does not actually contain the bits. The wheel only has 5 positions, each of which corresponds to a command.
19:12:44 <oerjan> Well, perhaps. It doesn't make very much sense even then.
19:12:45 <oklopol> but, when scanning for example, wtf do you scan, the code? and are there multiple directions to iterate the code? or?
19:14:29 <oklopol> the code, if i'm right, first fills in the memory 00001110, then changes wheel dir and does somt very strange
19:14:40 <oerjan> Impossible to say. Whoever wrote the description had no idea how to express an idea.
19:15:54 <oklopol> it changes wheel direction, then outputs, THEN SCANS, scanning being so badly described i have no idea about it, and scanning in that sence too that the output is done 8 times too
19:15:58 <oerjan> OK, perhaps if the example code can be deciphered, something more can be said.
19:17:12 <oklopol> i could decipher that the wheel goes around, when hand is put on, that command is done, when hands are taken off, that command is not executed, while hands are on, all commands are executed
19:17:21 <oklopol> which is said in the description too
19:17:22 <oerjan> Could you please explain how you get even as much as that out of the code? :)
19:18:11 <oerjan> actually you said the essential thing while i was writing i think
19:18:15 <oklopol> 0, no hands-on, so bit not changed, 1, wheel turned to 'move bit pointer' and hand were put on, so that is done, memory now 00
19:18:42 <oklopol> i was in a hurry to write that before you could figure it out so i'd get the credit :)
19:19:37 <oerjan> Well, congratulations :)
19:20:08 <oklopol> the author really thought it's obvious that intructions are executed when hands are on the wheel?
19:20:22 -!- digital_me has joined.
19:20:41 <oerjan> I'll have to write up what we get after doing your initial decoding step. But first I actually need some food...
19:24:25 <oerjan> Although if the code = bits and so is self-modifying, the decoding may have to be done continuously.
19:25:31 <oerjan> Wait a minute - a second insight
19:26:00 <oerjan> The "scan" may be a warped version of brainfuck [] - after all, it says the language is brainfuck inspired.
19:26:41 <oklopol> yeah, i think it is, but it's not needed there
19:26:54 <oklopol> very hard keeping track of the execution
19:27:40 <oklopol> that is of course a plus :) but the documentation is bad, unless it's intentionally left as homework for the reader
19:30:06 <oerjan> OK, what did you say you thought the first actual command executed was?
19:31:32 <oklopol> [0]1[2340]1[2340]1[2340]1[234]01[234]01[234]01[234]0[123]432[1]0401[2]3432[1]0401[2]3432[1]0401[2]3432[1]0401[2]343[2]104
19:31:42 <oklopol> this is all the commands if i omit 2's
19:32:36 <oklopol> or, the beginning is >>>>*>*>*>* then change wheel direction... and lost me :)
19:33:45 <oklopol> you'd think it's the output part because there are as many commands as in the beginning where the 0000111(1?) is done
19:33:55 <oklopol> but no, it's full of weird loops and such
19:34:47 <oerjan> a bell character should be 00000111, anyhow
19:35:06 <oklopol> or, does the "Switch direction of wheel" actually mean "change direction of the bit pointer"?
19:35:44 <oklopol> oerjan, i think the last bit might be output twice
19:35:46 <oerjan> i would have thought it meant both
19:35:57 <oklopol> because the end is not identical to the almost-end
19:36:10 <oklopol> might mean both, but then 2's are executed
19:36:29 <oklopol> even tho i don't think that is sensible
19:37:56 <oklopol> [0]1[2340]1[2340]1[2340]1[234]01[234]01[234]01[234]0[123]4[012]301[2]3401[2]... now it seems to omit 2's but change direction all the time making the first >>>>*>... thing useless
19:38:48 <oklopol> and, it's clear that in the past-middle output section, either almost every instruction or just one instruction is executed (0001100011 etc)
19:39:03 <oklopol> so, 2 would be most sensible to omit
19:39:23 <oklopol> since it certainly has nothing to do with outputting a \0x7
19:40:39 <oklopol> is the author here? i'll spank him
19:41:28 <oklopol> i thought it'd take like 3 hours to write down a list of all brainfucks and their syntaxes
19:41:44 <oklopol> and i'm half down the list
19:43:03 <oklopol> if you figure it out, tell me
19:44:43 <oklopol> http://esoteric.voxelperfect.net/wiki/FukYorBrane, once again, a thorough spesification :(
19:45:12 <oklopol> a non-'<>+-[],.' instruction?
19:45:27 <oerjan> It's inspired by brainfuck and redcode, i believe
19:45:40 <oklopol> oh, there is an implementation
19:49:35 <oklopol> now i realize it's one of gregorr's langs, which i already read on his page, well, who'd remember a name like FukYorBrane :D
19:59:44 <oklopol> GregorR, damn you, first brainfuck i couldn't specify in 5 sentences :D
20:00:36 <oerjan> Yeah, gregorR's languages tend to have a certain quality.
20:05:15 <oklopol> yeah, i assumed all bf-copies are shit :)
20:05:24 <oklopol> in fact, many are pretty nice
20:05:27 <oklopol> http://esoteric.voxelperfect.net/wiki/Hargfak
20:06:06 <oklopol> <, > etc are just 'same as in BF', but then i'll have to know if the stack is the memory... it's not really a stack in bf :\
20:06:49 <oklopol> plus, "{} Make a code-block, push to stack" wouldn't make sence then
20:07:18 <oerjan> i think the stack and array are separate
20:07:40 <oklopol> # ( Move top from main stack to top of stack at sub pointer
20:07:50 <oklopol> i have no idea what that means :\
20:08:00 <oklopol> top of stack at sub pointer?
20:08:12 <oklopol> sub pointer points to memory, i'd think :\
20:08:41 <oklopol> FuckYorBrane is well commented
20:09:38 <oklopol> does he exist somewhere? :D
20:09:50 <oerjan> he is quite productive on the wiki
20:10:45 <oerjan> darn, the wiki is slow.
20:11:00 <oklopol> or you understand "top of stack at sub pointer"
20:11:16 <oerjan> i think i retract my first assumption
20:11:32 <oerjan> i think the language has stacks as elements of stacks
20:11:41 <oerjan> as one of the data types.
20:12:43 <oklopol> yeah, thought might be so, then all cells are numbers by default, but stacks can be put there
20:13:46 <oklopol> i'm starting to miss basic vocabulary, someone must be feeding me drugs or smth
20:14:54 <oerjan> i'm sorry but obviously your brain is fucked.
20:15:59 <oklopol> put is fine, yeah, but it's not really nice if i can't look-up the word i was gonna use...
20:16:27 <oklopol> i mean, generally, not nice to forget something you've known for ages
20:16:35 <oklopol> been doing too much brainfuck
20:17:05 <oerjan> inserted, placed, pushed?
20:17:35 <oklopol> any of those would've been nice :)
20:17:50 <oklopol> put was the only one i found
20:18:03 <oklopol> usually happens when i've been reading a dictionary
20:18:20 <oklopol> i forget all other words for a while
20:18:35 <oklopol> tho, off-topic, gotta continue my task
20:19:42 <oklopol> if stack is the same as the memory, "; Push data at pointer to stack"
20:20:30 <oklopol> okay, i have no idea, next lang
20:38:12 <oerjan> *sigh* that Fortuna program doesn't make sense either way.
20:38:56 <oerjan> no matter which interpretation is used it looks like it is doing _input_ first.
20:45:27 <oerjan> looking at the history, a couple of points in the article might actually be misunderstandings by later people trying to clean up after the author. The author actually explained that hands on/off continued/suspended execution, and didn't actually say the beep was a single character.
20:53:38 <oklopol> i figured it'd be nice to have 50 brainfucks rather that 48 so i'll have to improvise 2
20:53:54 <oklopol> the first one is nice, i'll add it in the wiki and feel proud
21:14:16 <oklopol> god ihope has a lot of langs there :O
21:14:56 -!- ihope_ has joined.
21:15:20 -!- ihope_ has changed nick to ihope.
21:17:16 <oerjan> What, you've never seen a synchronicity before? :)
21:17:20 <oklopol> but i said god ihope, not devil
21:17:43 <oklopol> oerjan, yeah, but things can be weird multiple times
21:17:52 <ihope> Basement bot change root again.
21:19:11 <ihope> 13:14:16 <oklopol> god ihope has a lot of langs there :O
21:19:18 <ihope> 13:14:56 --- join: ihope_ (n=foo@c-71-205-100-59.hsd1.mi.comcast.net) joined #esoteric
21:19:55 <oklopol> it was weird until i figured ppl here have a habit of actively reading logs
21:20:09 <oklopol> which is never done in any other channel i am on
21:20:51 <oklopol> but, this is one of the only channels that sometimes has stuff worth reading afterwards
21:21:15 <oklopol> due to it's experimental nature
21:21:20 <ihope> I didn't see that log until afterward.
21:21:36 <ihope> I must be psychotic. ;-)
21:22:45 <oklopol> i don't know if you have many bf-langs there, just saw your name three times in a row when checking the author of pages randomly
21:22:58 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:23:54 <oklopol> in the category bf-derivatives
21:24:05 <oklopol> i saw your name in three random picks
21:24:21 <oklopol> ihope127 actually, assumed that's you
21:24:37 <oerjan> oklopol is writing a thesis, "A survey of languages within the Mullerian sub-paradigm of Esoterics."
21:24:42 * ihope clicks "Random Page" a few times and eventually lands on one of his own languages.
21:25:06 <ihope> Exactly why I chose the number 127.
21:25:25 <oklopol> bsmntbombdood, what a witty thing to notice :D
21:25:54 <oerjan> it is indeed possible to do a search for the word "ihope"
21:27:42 <oklopol> eh... 6 ones? maybe the search is too complicated for me
21:29:43 <ihope> I have Catch, Foobar, SMATINY, SNOBOL, quantum brainfuck, BF-SC, and BF-PDA. The fact that there are six there and you said six may be making me forget the others.
21:29:56 <ihope> I also have Subtle Cough.
21:30:25 <ihope> ...Wait, I listed seven there, not six.
21:30:28 <oerjan> ah, ihope127 gave many more matches than ihope for some reason.
21:30:29 <bsmntbombdood> a language were the only construct is raising and catching exceptions
21:30:31 <ihope> So that makes eight.
21:30:35 <ihope> oerjan: of course.
21:30:41 -!- CakeProphet has joined.
21:30:42 <ihope> bsmntbombdood: fun, no?
21:30:55 <ihope> Of course, I could probably do it much better now.
21:31:05 <ihope> bsmntbombdood: might be; I dunno.
21:31:12 <oerjan> i thought it would match subwords as well.
21:31:19 <ihope> Also, I make Thubi. Nine, then.
21:33:55 <oerjan> wait a minute, SNOBOL is not esoteric.
21:34:16 <oklopol> hmm, a qbit is a bit that has a certain probability for being 1 or 0? too complex for me again, if not :)
21:34:51 <oerjan> not under the search results
21:34:58 <ihope> oklopol: no, there's a probability amplitude, which is a complex number, for every possible combination of bits.
21:35:17 <ihope> And the probability corresponding to the amplitude x is |x|^2. Confusing, eh?
21:35:47 <oklopol> |x|^2 is the length of the number ^ 2?
21:35:51 <oerjan> neither is Subtle Cough.
21:36:38 <ihope> x is the amplitude.
21:36:53 <ihope> |x| is the absulute value of the amplitude.
21:36:53 <oklopol> okay, is that a complex number?
21:37:01 <ihope> Yes, x is a complex number.
21:37:19 <oklopol> but, absolute value of a complex number is it's length
21:37:23 <ihope> Also, I made ///, a.k.a. Slashes. Does that make 10?
21:37:29 <ihope> oklopol: the length of its vector? Yes.
21:37:39 <oklopol> well, that's what i meant, yeah
21:38:08 <oerjan> there is Slashes (///), REverge, Minimum, Pointy and Onoz.
21:38:19 <oklopol> k, i'll just do like the wiki and assume the reader knows qubits :)
21:39:41 <ihope> So REverge isn't really a language, so that's Catch, Foobar, SMATINY, SLOBOL, quantum brainfuck, BF-SC, BF-PDA, Subtle Cough, ///, Minimum, Pointy, onoz.
21:39:53 <ihope> Twelve in all, I guess.
21:40:32 <ihope> And how many are joke languages?
21:41:12 <oerjan> Ah yes, Subtle Cough is not really usable either, as I proved.
21:43:19 <oerjan> REverge seems a bit unfinished.
21:43:47 <ihope> I mostly forgot about Catch, Foobar is finite, SMATINY is not only finite but reversible, SLOBOL is Foobar in disguise, quantum brainfuck is Turing-complete, BF-SC and BF-PDA are guaranteed to terminate, Subtle Cough is not Turing-complete, /// is unknown, Minimum has no programs, Pointy is Turing-complete, and onoz is unknown.
21:43:54 <ihope> Yes, REverge might as well be deleted.
21:44:11 <ihope> So that's at least two languages I made that are Turing-complete.
21:44:27 <oerjan> SMATINY is definitely not a joke, in my opinion.
21:44:43 <oerjan> not any more than SMETANA.
21:45:52 <ihope> Yeah, it's not a joke.
21:46:16 <ihope> Catch... oh, whether or not it's Turing-complete depends on the built-in exceptions and handlers.
21:47:36 <oerjan> Onoz can of course express all programs known to terminate.
21:49:23 <oerjan> It is probably Turing-complete, although we will never know how to program in it, because for infinite loops we have to use a subprogram which we think but are not sure never terminates.
21:54:02 <oerjan> I expect some variant of the proof of the halting problem can be used to find a couple of algorithms such that one of them does not terminate but we can never know which.
21:55:24 <oerjan> halting problem + gdel's incompleteness theorem (whose proofs are essentially very similar)
21:57:19 <ihope> Wait. If we can never know something's incorrect, it's correct.
21:57:31 <ihope> If there's no observable difference, then they're the same.
21:57:37 <oerjan> yes, but we cannot necessarily prove it.
21:58:00 <ihope> We can't prove two things to be the same, sure.
21:58:33 <ihope> If we have a collection of algorithms and we know exactly one is correct, we can figure out which one it is.
21:58:50 <oerjan> and the definition of Onoz uses provability of non-termination, not actual termination.
21:59:36 <oerjan> except that in reality none of them terminate, but we are not sure of it. Maybe we don't really need more than one algorithm.
22:00:40 <oklopol> i assume http://esoteric.voxelperfect.net/wiki/SPL also has + / - since they are used in the example
22:02:26 <oklopol> "that of brainfuck", someday i'll learn to read
22:03:31 <oerjan> it seems like | is a variant of $
22:05:57 <oerjan> There is the same confusion on his webpage (except in Italian :) )
22:06:23 <oerjan> Several more example programs though.
22:07:01 <oerjan> All except the final example use |.
22:07:06 <oklopol> yeah, a monkey could see that from the example
22:07:13 <oklopol> the | is decimal input thig
22:07:29 <oerjan> Actually so is $, according to the website.
22:07:38 <oklopol> well, i don't believe it :)
22:07:48 <oerjan> $Aspetta che l'utente inserisca un numero e lo mette nell'accumulatore
22:07:56 <oklopol> i make my own lang then, take the same name and change that
22:08:35 <oerjan> http://stelk.altervista.org/SPL0.2.tar.gz
22:08:41 <oklopol> or, my lang's name is SPL ^H
22:09:46 <oklopol> i can't open that, anyway, i'll make it ascii input, i'm sure the author never sees my page :)
22:10:18 <oklopol> | puts a number in the current cell
22:10:37 <oerjan> There is an implementation there too, in C++
22:11:16 <oerjan> No, it's , which does that.
22:11:24 <oerjan> $ insers into the accumulator.
22:11:40 <oklopol> | read a number in the current cell, at least in the example
22:12:41 <oklopol> LOLfuck, '$' is twice in that code
22:14:11 <oerjan> ah, the C++ code. And not an else in sight, either :)
22:14:17 <oklopol> there is a '#' that is just a subset of '[' xD
22:14:40 <oklopol> no elses, so '$' does two inputs, only latter one is used
22:15:05 <oklopol> you can use it with [] for interesting results
22:15:12 <oklopol> so i retract my statemenzzor
22:20:59 <oerjan> It says on the wiki that # ... # is a comment.
22:22:55 <oerjan> However, the implementation makes no attempt to ignore [] matches inside #'s, so it can still be used for interesting results.
22:26:59 <oklopol> i didn't even think of the '#' as a comment since i thought it was supposed to be used with [] for additional fun
22:27:42 <oerjan> There is some serious possibility for buffer overruns with #[] too..
22:28:08 <oklopol> yeah, overall, FRENCH PEOPLE SUCK AT CODING
22:28:16 <oklopol> (i'm kidding don't kill me :;()
22:28:38 <oerjan> It would have been better if you had noticed it was Italian.
22:28:57 <oerjan> Unless that was part of the joke :)
22:29:23 <oklopol> i don't know either language :\
22:29:51 <oerjan> I know enough to guess most of the meaning.
22:31:08 <oklopol> "Aspetta che l'utente inserisca un numero e lo mette nell'accumulatore"
22:31:45 <oerjan> "Expect that the user will insert a number, and put it in the accumulator."
22:33:53 <oklopol> what langs do you know to understand that?
22:34:11 <oklopol> bsmntbombdood, maybe it's too easy for us
22:34:31 <oerjan> English, a bit Italian, and in theory a bit French.
22:35:05 <oerjan> Note that almost every long word except "mette" is related to the English.
22:35:41 -!- bsmnt_bot_chroot has quit.
22:35:45 -!- bsmnt_bot_chroot has joined.
22:35:53 <oerjan> So what I need of Italian is mostly grammar.
22:35:57 -!- bsmnt_bot_chroot has quit (Client Quit).
22:35:58 -!- bsmnt_bot has joined.
22:36:57 <oerjan> Oh yes, I also once read a Latin grammar. Made me understand a lot about how things like "utente" and "user" can be related.
22:36:57 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
22:38:05 <oerjan> Basically one is the present stem and the other the past perfect.
22:38:58 <oerjan> And English for some reason borrows Latin words with the latter.
22:39:40 <oerjan> Actually English has that version too: "utility"
22:39:51 -!- oklopol has joined.
22:40:48 <oerjan> darn i didn't notice you left :(
22:41:07 <oerjan> Oh yes, I also once read a Latin grammar. Made me understand a lot about how things like "utente" and "user" can be related.
22:41:14 <oerjan> Basically one is the present stem and the other the past perfect.
22:41:19 <oerjan> And English for some reason borrows Latin words with the latter.
22:41:27 <oerjan> Actually English has that version too: "utility"
22:42:50 -!- bsmnt_bot has quit ("nobody loves me :(").
22:42:52 -!- bsmnt_bot has joined.
22:44:46 * oerjan doesn't have the skills for that.
22:45:13 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
22:45:18 <oerjan> I tend to stay at an abstract level, fairly far from the machine.
22:46:20 <oerjan> Besides, who knows if there even is a loophole to use.
22:48:02 <oerjan> I suppose if you included the whole Linux distribution in the jail there might be a chance.
22:48:53 <oerjan> It might in fact be easier to break into your machine from the outside, for all I know.
22:53:26 <oerjan> So basically only someone with a good knowledge of the Linux kernel (and probably Python) would stand a chance, which doesn't include me.
22:59:05 -!- oklopol has joined.
23:01:59 -!- tgwizard has quit (Remote closed the connection).
23:03:44 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr']
23:04:08 <CakeProphet> ~exec print >> sys.stdout, os.listdir("bin")
23:04:25 <CakeProphet> .... print >> sys.stdout is the exact same thing as print
23:04:45 <bsmnt_bot> <__main__.IRCFileWrapper instance at 0xb7bfe48c>
23:04:53 <oerjan> ~exec print >> sys.stdout, os.listdir("lib")
23:04:53 <bsmnt_bot> ['libm.so.6', 'libreadline.so.5', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6']
23:05:29 <CakeProphet> ...no... I mean... that -is- the same thing.
23:05:47 <CakeProphet> There's no other way to get around that... unless you use >>, print goes directly to sys.stdout.
23:05:48 <oerjan> it would if the sys module was the standard one.
23:06:07 <CakeProphet> so you're using a different module for sys?
23:06:28 <CakeProphet> even then... you'd have to hack the interpreter to make those two statements mean anything different from each other.
23:06:31 <bsmntbombdood> I'm using a costum object, to redirct stdout to the right place
23:06:56 <CakeProphet> ...that doesn't change the fact that print by itself always goes to sys.stdout...
23:07:06 <oerjan> How are you assigning it to sys.stdout?
23:07:32 <oerjan> i'm asking bsmntbombdood
23:07:35 <bsmntbombdood> CakeProphet: Can't do that, that interferes with the "real" stdout
23:07:59 <oerjan> well that's the idea, isn't it?
23:08:03 <bsmntbombdood> oerjan: by passing a costum enviroment to the python exec statement
23:08:20 <oerjan> it _should_ change the real stdout.
23:08:36 <CakeProphet> what's a costum enviornment... and how does it change the axiomatic grand law of python's print statement?
23:09:05 <oerjan> he is probably redefining the sys variable to not point at the sys module.
23:09:24 <CakeProphet> ....regardless.... the regular print would just point to that as well.
23:09:30 <bsmntbombdood> env[0]["sys"] = SysWrapper(stdout = IRCFileWrapper(self.raw, r.group(1)), stderr = IRCFileWrapper(self.raw, self.errorchan))
23:10:23 <oerjan> basically print will always refer to the stdout of the real sys module, not to stdout of whatever happens to be in the global variable sys.
23:11:08 <CakeProphet> hmmm... so what's the point in wrapping sys if it doesn't do the main objective of replacing stdout?
23:11:36 <bsmnt_bot> <__main__.IRCFileWrapper instance at 0xb7bfe7ac>
23:11:49 <oerjan> but not for print, which makes it pointless :)
23:11:52 <CakeProphet> but if the regular print statement doesn't.
23:12:03 -!- bsmnt_bot has quit.
23:12:06 -!- bsmnt_bot has joined.
23:12:28 <oerjan> it would be simpler to just do print >> channelObj
23:12:43 <oerjan> whatever you call that.
23:12:58 <bsmntbombdood> print >> IRCFileWrapper(self.raw, "#esoteric"), "foo"
23:13:19 <CakeProphet> if you had constant objects for channels... it would be more convient.
23:13:45 <bsmntbombdood> sys.stdout is the object representing the current channel
23:13:48 <oerjan> Then just print >> esoteric
23:14:04 <oerjan> well print >> curChannel
23:14:05 <CakeProphet> but what's the point in replacing sys.stdout if it doesn't does what sys.stdout is supposed to do?
23:14:21 <CakeProphet> you might as well just make a variable called "channel".
23:15:13 <bsmntbombdood> I'm still trying to figure out how to make print behave like it should
23:15:59 <bsmntbombdood> ~exec global esoteric; esoteric = IRCFileWrapper(self.raw, "#esoteric")
23:16:44 <bsmntbombdood> ~exec self.esoteric = IRCFileWrapper(self.raw, "#esoteric")
23:17:41 <CakeProphet> hehe... I would have done factory functions or something :D
23:18:36 <bsmntbombdood> ~exec self.esoteric = IRCFileWrapper(self.raw, "#esoteric").write
23:19:47 <CakeProphet> factroy functions give functional programming an OO-like advantage.
23:24:41 <ihope> CakeProphet: factory functions?
23:24:47 <ihope> You mean constructors?
23:25:09 <ihope> data Channel = ChannelFactory String -- this?
23:25:31 <CakeProphet> constructors setup an initial state... factory functions produce other functions.
23:25:52 <ihope> So a factory function is just a function returning a function?
23:26:20 <ihope> Naturally I'd miss the point completely, being used to first-class functions :-)
23:26:30 <CakeProphet> well... there's other flavors of factory functions... I've made a factory function that spat out classes.
23:26:43 <ihope> Anything that produces something unusual?
23:27:00 <bsmntbombdood> In python you can make classes like factory functions
23:27:04 <CakeProphet> I considered making a factory factory function.
23:27:22 <ihope> I mean a factory function is something that produces something unusual?
23:27:47 -!- bsmnt_bot has quit.
23:27:49 -!- bsmnt_bot has joined.
23:27:52 <ihope> So how could a factory function spit out classes?
23:27:54 <CakeProphet> it puts a common set of goals that you'd have for defining a certain type of function into a nice little package.
23:27:57 <bsmntbombdood> ~exec self.esoteric = IRCFileWrapper(self.raw, "#esoteric")
23:28:11 <ihope> bsmntbombdood: is this guy chrooted?
23:29:27 <ihope> That didn't exactly work either, eh?
23:29:46 <bsmntbombdood> <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'quit'
23:30:28 <ihope> ~exec self.do_quit()
23:30:35 <ihope> I also forgot about the () at the end... uh...
23:30:46 <bsmntbombdood> ...join that channel so I don't have to copy and paste erros
23:33:07 <ihope> ~exec self.disconnect("RAH RAH RAH")
23:33:07 -!- bsmnt_bot has quit ("RAH RAH RAH").
23:33:10 -!- bsmnt_bot has joined.
23:34:14 <ihope> ~exec self.do_callbacks(":bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~quit")
23:34:15 -!- bsmnt_bot has quit (Client Quit).
23:34:18 -!- bsmnt_bot has joined.
23:35:33 -!- oklofok has joined.
23:35:56 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
23:36:30 <CakeProphet> assume that class statement is dedented a notch.
23:37:32 <ihope> CakeProphet: pretty fancy.
23:37:43 <ihope> bsmntbombdood: uh...
23:38:22 <CakeProphet> insane hackish solutions that weren't intended to be done is my favorite passtime. :D
23:39:24 <ihope> bsmntbombdood: nothing, nothing...
23:39:56 <CakeProphet> I could have skipped the whole class statement thing by doing.
23:40:25 <bsmntbombdood> property(None, self.__setattr__, self.__delattr__)?
23:40:54 <ihope> Now what's Python have that's like Haskell's "let" or "where"?
23:41:21 <CakeProphet> it does some crazy magic stuff to alter the get, set, and delete functions of only one attribute.
23:41:35 <CakeProphet> ihope, variables are local scope by default.
23:41:51 <CakeProphet> Python has only one, rarely used, scope declaration... "global".
23:42:09 <ihope> Oh, right, Python lets you assign things to variables.
23:42:24 <CakeProphet> but they're probably going to add a "nonlocal"... for nested scopes. (Python has a pretty simple idea of nested scopes... it just has "globals" and "locals"...)
23:42:46 <ihope> ~exec self.raw("PRIVMSG #esoteric :Foo"); self.raw("PRIVMSG #esoteric :Foo")
23:43:08 * ihope pushes #esoteric onto the stack and runs to eat dinner
23:44:18 <CakeProphet> I should find something else to tinker with.
23:44:28 <bsmntbombdood> ...and I though I had to do some low level stuff for bsmnt_bot
23:45:53 <CakeProphet> ...the lowest level thing I've ever done with Python is.... select.
23:46:54 <CakeProphet> it's the most basic thing I could think of that I've used.
23:47:14 <bsmntbombdood> CakeProphet: That class generator was pretty low level
23:47:37 <CakeProphet> heh... that depends on your definition of low level.
23:48:19 <CakeProphet> I thought it was fairly abstract... (anything that creates abstract plans for objects is pretty damn high in abstractiness)
23:48:39 <CakeProphet> meh... just some interpreter magic... __ methods are pretty common in Python programs.
23:48:45 <bsmntbombdood> the __ variables are very close to the interpreter
23:49:33 <oerjan> Nah, it's not really abstract until it borrows terms from category theory :)
23:49:46 <CakeProphet> they're glorified callback functions basically...
23:50:34 <CakeProphet> heh... I won't debate the existence of a non-specific, human invented definition.
23:51:16 <CakeProphet> it does... in the sense that there is such a thing as year.
23:53:20 <CakeProphet> hmm... I've taken a liking to using Python sets...
23:53:38 <CakeProphet> they're extremly useful for my MUD... where I don't want accidental duplicate references of objects appearing.
23:56:59 <bsmntbombdood> ~exec self.test = SysWrapper(IRCFileWrapper(self.raw, "#esoteric"), IRCFileWrapper(self.raw, "#esoteric"))
23:58:56 <CakeProphet> __setitem__, __getitem__, __contains__... you can make just about anything.
23:59:43 <CakeProphet> I've got the design for a periodic table of elements somewhere.
00:03:31 <bsmntbombdood> {"K":{"full-name":"pottassium", valence:whatever...}...}
00:05:52 <CakeProphet> it's 5 or 6 dictionaries of a bunch of objects.
00:06:07 <CakeProphet> objects have the advantage of having methods as well as data. ;)
00:06:18 <bsmnt_bot> {'_SysWrapper__sys': <module 'sys' (built-in)>, 'stderr': <__main__.IRCFileWrapper instance at 0xb7bda7cc>, 'stdout': <__main__.IRCFileWrapper instance at 0xb7bda76c>}
00:06:30 <CakeProphet> and the 5 or 6 dictionaries are just optimization for some common ways to refer to elements.
00:06:48 -!- bsmnt_bot has quit (Excess Flood).
00:06:50 -!- bsmnt_bot has joined.
00:07:06 <ihope> CakeProphet: I still don't exactly see the point of objects when methods are really just functions on them. Then again, in Python, objects' methods are really just functions on them, so...
00:07:21 <ihope> ~exec raw(self,"PRIVMSG #esoteric :Foo")
00:07:34 <CakeProphet> eh... self-containedness... there's no functional benefit... it just makes organizing everything easier.
00:07:40 <CakeProphet> when everything's in a scope of some sort.
00:08:13 <ihope> Of course, some things *do* have points.
00:08:26 <ihope> I'm still waiting for my language where programs are first-order logic theories.
00:09:04 <ihope> Call it a FOLTE, for First Order Logic Theory Evaluator. And pronounce it "faulty".
00:09:43 <CakeProphet> I'm going with interesting data types as my main theme for any sort of language-inventing
00:10:32 <CakeProphet> and with some new ways to treat procedures as data.
00:10:42 <ihope> You oughta save at least some state, bsmnt.
00:12:12 * CakeProphet remember his first encounter with programming.
00:12:42 <CakeProphet> pure imperitive... global-variables-for-state-and-conditional-mechanisms hacking
00:12:59 <CakeProphet> it was like building some weird ass clock..
00:13:31 -!- bsmnt_bot has quit.
00:13:33 -!- bsmnt_bot has joined.
00:13:46 <ihope> ~exec new_bot = IRCbot({"HOST": "blue", "PORT": 6667, "NICK": "AlsoBot", "IDENT": "bsmnt", "REALNAME": "not applicable", "CHAN": "#esoteric", "VERBOSE": True}); new_bot.listen()
00:13:57 <bsmnt_bot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00:13:58 <ihope> bsmntbombdood: well, you could have the thing not actually disappear when it disconnects.
00:14:01 <bsmnt_bot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00:14:08 <oklofok> bsmntbombdood, make a wrapper class for whatever you print in and make it keep track of when smth was said last...
00:14:21 <ihope> ~exec new_bot = IRCbot({"HOST": "irc.freenode.net", "PORT": 6667, "NICK": "AlsoBot", "IDENT": "bsmnt", "REALNAME": "not applicable", "CHAN": "#esoteric", "VERBOSE": True}); new_bot.listen()
00:14:53 <bsmntbombdood> now IRCFileWrapper splits it up into 300 byte chunks
00:15:00 <ihope> ~exec new_bot = IRCbot({"HOST": "85.188.1.26", "PORT": 6667, "NICK": "AlsoBot", "IDENT": "bsmnt", "REALNAME": "not applicable", "CHAN": "#esoteric", "VERBOSE": True}); new_bot.listen()
00:15:03 -!- AlsoBot has joined.
00:15:04 <bsmntbombdood> ihope: I haven't gotten dns working inside the chroot
00:15:14 <ihope> bsmntbombdood: ah.
00:15:26 <ihope> So, there's a, uh... hmm.
00:15:36 <ihope> ~raw "PRIVMSG #esoteric :Foo"
00:15:52 <ihope> ~exec self.raw("PRIVMSG #esoteric :Foo")
00:16:44 <ihope> ~exec new_bot.COMMAND_CHAR = r"@"
00:16:51 <ihope> @raw PRIVMSG #esoteric :Foo
00:17:43 <ihope> ~exec self.disconnect()
00:17:48 -!- AlsoBot has quit (Remote closed the connection).
00:17:48 -!- bsmnt_bot has quit (Client Quit).
00:17:51 -!- bsmnt_bot has joined.
00:17:52 <ihope> I can't figure this out, can I?
00:18:13 <bsmntbombdood> ~exec self.new_bot = IRCbot({"HOST": "85.188.1.26", "PORT": 6667, "NICK": "AlsoBot", "IDENT": "bsmnt", "REALNAME": "not applicable", "CHAN": "#esoteric", "VERBOSE": True}); self.new_bot.listen()
00:18:20 -!- AlsoBot has joined.
00:18:34 <ihope> ~exec self.new_bot.COMMAND_CHAR = r"@"
00:18:41 <ihope> @raw PRIVMSG #esoteric :Foo
00:19:43 <ihope> That gives me an idea.
00:19:54 <ihope> ~exec self.disconnect("")
00:19:55 -!- bsmnt_bot has quit (Client Quit).
00:19:55 -!- AlsoBot has quit (Client Quit).
00:19:57 -!- bsmnt_bot has joined.
00:20:16 <ihope> ~exec self.__init__(args)
00:20:27 -!- bsmnt_bot has quit (Remote closed the connection).
00:20:28 <ihope> ~raw PRIVMSG #esoteric :Foo
00:20:29 -!- bsmnt_bot has joined.
00:20:54 <ihope> I'll have to do it faster, then :-P
00:21:04 <ihope> ~exec self.__init__(args)
00:21:05 <ihope> ~raw PRIVMSG #esoteric :Foo
00:21:06 -!- bsmnt_bot has quit (Remote closed the connection).
00:21:08 -!- bsmnt_bot has joined.
00:21:11 <ihope> Clearly not working.
00:21:35 <bsmntbombdood> you can't call __init__ on a class that's already inited
00:22:15 <bsmnt_bot> <bound method IRCbot.__init__ of <__main__.IRCbot instance at 0xb7c7942c>>
00:22:39 <ihope> ~exec IRCbot.__init__
00:22:49 <ihope> ~exec IRCbot.__init__()
00:23:09 -!- bsmnt_bot has quit (Remote closed the connection).
00:23:11 -!- bsmnt_bot has joined.
00:23:23 <ihope> ~exec IRCbot.__init__(args, self)
00:23:37 <ihope> ~exec IRCbot.__init__(self, self)
00:24:07 <ihope> ~exec def IRCbot.__getitem__: return 3
00:24:11 <CakeProphet> oh... well then that just does the same thing as self.__init__()
00:24:12 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c5a42c>
00:24:14 <ihope> ~exec IRCbot.__init__(self, self)
00:24:40 <ihope> bsmntbombdood: playing?
00:25:05 <ihope> CakeProphet: I see.
00:25:12 <CakeProphet> using the . operator... so it's not a valid "identifier"... plus it's just plain weird. :P
00:25:28 <bsmntbombdood> It would be nice if python could do that like ruby
00:25:37 <ihope> ~raw PRIVMSG #esoteric :Foo
00:26:06 <ihope> ~exec self.raw("PRIVMSG #esoteric :Foo")
00:26:21 <CakeProphet> bsmntbombdood, it doesn't... because that's not consistent with pretty much anything else.... and it's kind of tacky.
00:26:33 <ihope> ~exec self.raw("PRIVMSG #esoteric :Foo")
00:26:47 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c5a42c>
00:26:59 <ihope> ~exec self.disconnect("pero ya eres todo un hombre pa la guerra y pa matar")
00:26:59 -!- bsmnt_bot has quit (Client Quit).
00:27:02 -!- bsmnt_bot has joined.
00:27:17 <CakeProphet> bsmntbombdood, how does the bot handle the scope of subprocesses?
00:27:31 <CakeProphet> if you just make the dict on the fly in the exec statement... it won't preserve the dict beyond the exec.
00:28:17 <oerjan> assign it to an attribute of the bot object
00:28:27 * CakeProphet would make a private dictionary for subprocesses... and then update the main one or something when the subprocess is done executing.
00:28:32 <CakeProphet> to prevent weird race conditions and stuff.
00:28:47 <ihope> ~exec self.self = 3
00:28:57 <ihope> Did it work or something?... no, probably didn't.
00:29:03 <ihope> ~raw PRIVMSG #esoteric :Foo
00:29:12 <bsmntbombdood> CakeProphet: having one sepperate global dictionary for all ~execs might be good
00:29:14 <ihope> Well, ~raw isn't working, at least.
00:29:25 <ihope> ~exec self.raw("PRIVMSG #esoteric :Foo")
00:29:42 <CakeProphet> if ~exec re-assigns self each time... that's why.
00:29:47 <ihope> ~exec self.disconnect = 3
00:30:02 <ihope> ~exec self.do_kill = 3
00:30:14 <ihope> ~exec self.do_exec = 3; self.exec = 3
00:30:34 <CakeProphet> considering do_exec is called with do_exec.im_self passed to the first parameter.
00:30:56 <CakeProphet> so reassigning self does little to nothing but alter that function calls local scope.
00:31:00 <ihope> ~exec self.exec_execer = 3
00:31:39 <ihope> ~exec self.raw("foo")
00:32:13 -!- bsmnt_bot has quit (Remote closed the connection).
00:32:16 -!- bsmnt_bot has joined.
00:32:20 <bsmnt_bot> ['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__seti
00:32:20 <bsmnt_bot> tem__', '__str__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
00:32:32 <ihope> I'm guessing what CakeProphet did didn't kill it.
00:32:57 <ihope> How do I list all the files in /? >:-)
00:33:05 <bsmnt_bot> {'message': ':CakeProphet!n=CakeProp@h146.231.213.151.ip.alltel.net PRIVMSG #esoteric :~exec sys.stdout.write(locals())', 'r': <_sre.SRE_Match object at 0xb7c95b18>, 'command': 'sys.stdout.write(locals())', 'self': <__main__.IRCbot instance at 0xb7c3542c>}
00:33:36 <ihope> ~exec sys.stdout.write(os.listdir("/"))
00:33:36 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr']
00:33:39 <CakeProphet> so wait... I have access to the source code of my exec in the exec itself?
00:33:44 <ihope> ~exec sys.stdout.write(os.listdir("/bot"))
00:33:45 <bsmnt_bot> ['betterbot.py', 'start.sh', 'better.sh', 'ircbot.py']
00:33:49 <ihope> ~exec sys.stdout.write(os.listdir("/bin"))
00:33:58 <ihope> ~exec sys.stdout.write(os.listdir("/etc"))
00:33:59 <bsmnt_bot> ['hosts', 'passwd', 'resolv.conf']
00:34:14 <ihope> Ooh! Let's change... wait, is passwd... what is it?
00:34:30 <ihope> ~exec sys.stdout.write(os.listdir("/lib"))
00:34:30 <bsmnt_bot> ['libm.so.6', 'libreadline.so.5', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6']
00:34:36 <bsmnt_bot> ['COMMAND_CHAR', 'THREADING', '__doc__', '__init__', '__module__', 'chan', 'commands_running', 'commands_running_lock', 'connect', 'connected', 'disconnect', 'do_callbacks', 'do_ctcp', 'do_exec', 'do_kill', 'do_ps', 'do_quit', 'do_raw', 'errorchan', 'exec_execer', 'get_message', 'host', 'ident', 'li
00:34:37 <bsmnt_bot> sten', 'message_re', 'nick', 'pong', 'port', 'print_callbacks', 'raw', 'raw_regex_queue', 'readbuffer', 'realname', 'register_raw', 'socket', 'sockfile', 'verbose']
00:34:38 <ihope> ~exec sys.stdout.write(os.listdir("/usr"))
00:34:56 <ihope> All so very confusing, I'm sure.
00:34:59 <ihope> ~exec sys.stdout.write(os.listdir("~"))
00:35:17 <ihope> ~exec sys.stdout.write(os.exec("/bin/bash"))
00:35:42 <bsmntbombdood> If you want a bash prompt, you are gonna have to wrap in in some sockets
00:35:45 <ihope> Did that say syntax error?
00:36:25 <bsmntbombdood> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00:36:31 <bsmntbombdood> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
00:37:02 <bsmnt_bot> <socket._socketobject object at 0xb7c3332c>
00:37:16 <oklofok> i'd be ready now if i knew wtf Tory is
00:37:21 <oklofok> but i can't find it anywhere
00:37:48 <oklofok> ~exec sys.stdout.write(self.chan**2)
00:38:03 <CakeProphet> ~exec sys.stdout.write(dir(self.__class__))
00:38:04 <bsmnt_bot> ['__doc__', '__init__', '__module__', 'connect', 'disconnect', 'do_callbacks', 'do_ctcp', 'do_exec', 'do_kill', 'do_ps', 'do_quit', 'do_raw', 'exec_execer', 'get_message', 'listen', 'pong', 'print_callbacks', 'raw', 'register_raw']
00:38:23 <oklofok> ~exec sys.stdout.write(self.chan*2)
00:38:34 <oklofok> ~exec sys.stdout.write(self.chan-"#")
00:38:57 <bsmntbombdood> < bsmnt_bot> TypeError: unsupported operand type(s) for -: 'str' and 'str'
00:39:07 <bsmnt_bot> ['_SysWrapper__sys', '__doc__', '__getattr__', '__init__', '__module__', 'stderr', 'stdout']
00:39:27 <bsmnt_bot> ['__call__', '__doc__', '__init__', '__module__', 'channel', 'raw', 'write']
00:40:08 <bsmntbombdood> <bsmnt_bot> AttributeError: 'module' object has no attribute '__sys'
00:40:14 <oerjan> oklofok: http://web.archive.org/web/20051218132142/http://chimpen.com/tory/
00:41:26 <bsmnt_bot> {'IRCbot': <class __main__.IRCbot at 0xb7c3323c>, 'args': {'IDENT': 'bsmnt', 'REALNAME': 'bsmntbombdood bot', 'CHAN': '#esoteric', 'NICK': 'bsmnt_bot', 'HOST': '85.188.1.26', 'PORT': 6667, 'VERBOSE': True}, '__builtins__': <module '__builtin__' (built-in)>, '__file__': '/bot/ircbot.py', 'inspect': <
00:41:26 <bsmnt_bot> module 'inspect' from '/usr/lib/python2.4/inspect.pyc'>, 'IRCFileWrapper': <class __main__.IRCFileWrapper at 0xb7c3326c>, 'sys': <module 'sys' (built-in)>, 'thread_info': <thread._local object at 0xb7ccb7e8>, '__name__': '__main__', 'exec_global_tracer': <function exec_global_tracer at 0xb7c31cdc>,
00:41:28 <bsmnt_bot> 'copy': <module 'copy' from '/usr/lib/python2.4/copy.pyc'>, 'socket': <module 'socket' from '/usr/lib/python2.4/socket.pyc'>, 'thread': <module 'thread' (built-in)>, 'traceback': <module 'traceback' from '/usr/lib/python2.4/traceback.pyc'>, 'os': <module 'os' from '/usr/lib/python2.4/os.pyc'>, 'ppri
00:41:32 <bsmnt_bot> nt': <module 'pprint' from '/usr/lib/python2.4/pprint.pyc'>, 'bot': <__main__.IRCbot instance at 0xb7c3542c>, 're': <module 're' from '/usr/lib/python2.4/re.pyc'>, 'time': <module 'time' from '/usr/lib/python2.4/lib-dynload/time.so'>, 'threading': <module 'threading' from '/usr/lib/python2.4/threadi
00:41:36 <bsmnt_bot> ng.pyc'>, 'SysWrapper': <class __main__.SysWrapper at 0xb7c3329c>, 'exec_local_tracer': <function exec_local_tracer at 0xb7c3d454>, '__doc__': None}
00:42:58 <CakeProphet> now it just needs random quotes... and support for persistence.
00:43:45 <CakeProphet> ~exec globals()["random"] = __import__("random")
00:44:38 <CakeProphet> ~exec self.__class__.dice = lambda : random.randint(1,6)
00:45:30 <CakeProphet> ~exec globals()["random"] = __import__("random")
00:45:36 <CakeProphet> ~exec self.__class__.dice = lambda : random.randint(1,6)
00:46:22 -!- bsmnt_bot has quit.
00:46:25 -!- bsmnt_bot has joined.
00:46:35 <bsmnt_bot> <module 'random' from '/usr/lib/python2.4/random.pyc'>
00:47:50 <CakeProphet> you wanted to make sure exec didn't effect globals?
00:47:58 <CakeProphet> by the way... dictionaries have a copy method.
00:48:06 <CakeProphet> ..so... you didn't really need to use the copy module.
00:48:11 <CakeProphet> ~exec globals()["random"] = __import__("random")
00:48:16 <CakeProphet> ~exec self.__class__.dice = lambda : random.randint(1,6)
00:48:57 <CakeProphet> ~exec globals()["random"] = __import__("random")
00:49:05 <CakeProphet> ~exec self.__class__.dice = lambda self : random.randint(1,6)
00:49:33 <CakeProphet> method resolution is dynamic... if the class has it... the instance gets it to.
00:49:45 <CakeProphet> you would only need to re-init the bot if you did an entire class statement.
00:49:57 <CakeProphet> as then you would be creating an entirely new class... instead of modifying the old one...
00:50:49 <CakeProphet> it's probably the part of Python I'm most familiar with.
00:51:16 <CakeProphet> basically all of that was... sorta kinda... basic "meta-programming"
00:51:41 <CakeProphet> I created a program that re-programmed your class.
00:51:47 <CakeProphet> basic example... but that's the core of it.
00:52:28 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~dice", lambda x,y: self.raw("PRIVMSG %s :%s" % (y.group(1), random.randint(1,6)))
00:52:42 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~dice", lambda x,y: self.raw("PRIVMSG %s :%s" % (y.group(1), random.randint(1,6))))
00:52:46 -!- bsmnt_bot has quit (Remote closed the connection).
00:52:48 -!- bsmnt_bot has joined.
00:53:02 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~dice", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), random.randint(1,6))))
00:53:06 -!- bsmnt_bot has quit (Remote closed the connection).
00:53:08 -!- bsmnt_bot has joined.
00:53:23 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~dice", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), random.randint(1,6))))
00:54:26 <CakeProphet> with some weird callback stuff for constructing tabletop style dice functions.
00:56:07 <oklofok> k made a new language instead of looking for Tory
00:56:14 <oklofok> and i'm sure mine is better too
00:56:30 <CakeProphet> hmm... you can't pickle functions though.... unless you save their source code.
00:56:49 <CakeProphet> but... I could go ultra-fancy and use some insane abuse of the pickle protcol to make it save functions.
00:56:50 <oerjan> oklofok: http://web.archive.org/web/20051218132142/http://chimpen.com/tory/
01:00:55 <oklofok> i made my own brainfuck in it's place
01:01:11 <oklofok> and mine has sence to it :)
01:01:41 <oklofok> made 3 languages today \o/
01:02:37 <oklofok> maybe i'll make 50 improvised languages tomorrow, sounds like a good use of time
01:04:32 -!- oklofok has changed nick to oklopol.
01:06:13 <ihope> Is that like Thue at all?
01:06:45 <oerjan> It is extremely unlike Thue. :)
01:07:14 <oerjan> The only thing in common is that they may be considered Norwegian words.
01:07:23 <CakeProphet> Hello World --> !m?spam?"Hello, World!\n"^
01:07:54 <oklopol> !m?spam?"Hello, World!\n"^;
01:08:38 <oklopol> so... how do i sleep now that i slept 5 hours during the day and drank a litre of coke just now?
01:09:11 <CakeProphet> I wrote the entire specification on the esolang wiki... but then I forgot to save it.
01:09:16 <CakeProphet> and I'm entirely too lazy to type it out again.
01:09:51 <oklopol> i can't tell how it works from that :'(
01:10:48 <oklopol> that's always a good thing
01:11:16 <oklopol> you use stact notation, spam is print, ^ has something to do with pushing?
01:11:54 <CakeProphet> it appears stack-based... but then you'll notice the order in which you push things seems to change sporatically...
01:12:21 <CakeProphet> everything is pushed except for commands... and ^ is the call command :D
01:12:43 <oklopol> yeah, i figured that a second before you said that
01:13:01 <CakeProphet> it reads everything character by character... unless it's surrounded by ?'s or quotes.
01:13:47 <oklopol> okay, now it's pretty clear, but ) and !m
01:14:09 <CakeProphet> quoted stuff always being considered strings... and ?'s just denoting a multicharacter version of anything you would push as a single character.
01:14:29 <CakeProphet> By default, if the interpreter has no clue what the hell you're trying to push... it just becomes a string.
01:14:52 <CakeProphet> !m is the beginning of a subroutine defintion. :D
01:15:16 <oklopol> yeah, i can exec !m22+^)"spam"^; as well?
01:15:48 <oklopol> okay, doesn't matter, the ) anyway, what is it?
01:15:50 <CakeProphet> I indeded for that to be possible... but I forgot if it actualyl does it.
01:16:03 <CakeProphet> That... pushes a new queue onto the stack.
01:16:35 <oklopol> would !m22+^?spam?^; work?
01:17:28 <CakeProphet> +22^?spam?^ wouldn't work because we're pushing values to a queue.
01:17:34 <oklopol> or is it !m?spam?+22^^; without the new queue?
01:18:01 <CakeProphet> the ^ would call +... which would add 2 and 2... and then it would call 4.
01:18:15 <CakeProphet> not knowing how the hell you can call a 4... it proceeds to explode.
01:19:41 <oklopol> the print, does it pop a queue and take values from there=?
01:19:50 <CakeProphet> the syntax will oscillate between being stack-like and queue-like depending on where you're at.
01:20:17 <oklopol> !m+22^)?spam?^; here you make 2 queues?
01:20:40 <CakeProphet> you would use % to call ?spam? on everything in the top queue (% is the for-each command)
01:21:12 <CakeProphet> when a queue is depeleted of all values... and something attempts to pop off another value... it junks that queue and pops one off the queue below it.
01:21:42 <oklopol> but, why can't the param be in the same queue?
01:22:11 <CakeProphet> you had to set up + 2 2 into the queue to call that correctly...
01:22:23 <CakeProphet> but... there's no way to fit in a ?spam? function -in front- of all of that...
01:22:52 <CakeProphet> you have to make a new queue... plop ?spam? in that queue... and do a call from there... making it look kinda stack-based.
01:23:05 <CakeProphet> but with the Hello, World! it looks like prefix notation. :D
01:23:06 <oklopol> ah okay, but here !m?spam?"Hello, World!\n" you first push the "spame", then the "hw", then because it's a FIFO, ^ reads the "spam", spam read "hw", right?
01:23:42 <CakeProphet> I haven't cabbled much with multiple subroutines yet.
01:24:45 <oklopol> yeah, wouldn't work that well
01:24:53 <oklopol> because of the stack nature
01:24:55 <CakeProphet> Not sure how it would work... since there's nothing you could return.
01:25:15 <CakeProphet> they're "procedures" more than they are "subroutines".
01:25:18 <oklopol> but there wouldn't be much use
01:25:39 <CakeProphet> because inventing vocabulary words is fun.
01:25:57 <oklopol> i made a bf for networking
01:26:42 <CakeProphet> hmmm... . is the "pop an integer off the stack... and push the integer-th value of the queue onto the queue" command.
01:27:11 <oklopol> and i made a 3D bf with the IP being a SPACESHIP (now that's REAL COOL, right?), then i made a lang called metafuck, where you can execute the memory with it's own nulled memory
01:28:12 <CakeProphet> @ is the same thing as . but at the stack level... pop an integer off the queue, and get the integer-th queue and push it to the top of the stack.
01:28:36 <oklopol> okay, i like the network-thingie best, but you don't know just how sick it is.
01:28:52 <CakeProphet> @ and . are the only ways I've found to do conditionals so far... because the comparison operations all return either 1 or 0.
01:29:23 <CakeProphet> you can use the 1 or 0 to conditionally "flip" between the top two queue... or the top two values on the top queue.
01:30:10 <oklopol> *stack entrys, not indexes
01:30:24 <CakeProphet> hmm... other than that... there's some debugging command that just prints out the entire Stue...
01:31:10 <oklopol> queue number A on cond, B otherwise -> cond*(A-B)+B @
01:32:26 <CakeProphet> and crap between # are comments (allowed inline)
01:32:42 <CakeProphet> it literally just prints out the entire data structure as Python would see it.
01:33:21 <oklopol> python has a lovely way to print tuples, lists etc
01:34:14 <oerjan> Interestingly Haskell has the exact same syntax for lists and strings
01:34:36 <oklopol> Haskell's is nice too but i don't know it that well
01:34:51 <oklopol> lists look the same too, or?
01:35:12 <oerjan> Not standard, no. They are difficult to mix with its pure functionality.
01:35:33 <oerjan> The Data.Map library uses binary trees.
01:35:36 <CakeProphet> makes it difficult to use a hash table effectively.
01:36:21 <oklopol> i wanna learn Haskell better :\
01:36:30 <oklopol> it's like the coolest language :D
01:37:12 <CakeProphet> Like Lisp with hash tables instead of lists.
01:41:18 <oerjan> BTW there are a couple of libraries providing variables in Haskell. All encapsulated in the infamous monads, of course.
01:42:32 <Sukoshi> Lisp always has hash tables.
01:43:17 <CakeProphet> what Lisp does with lists... Lua does with hash tables.
01:44:00 <Sukoshi> Hash tables are much more costly/processor-unfriendly than a linked list is unless you have many data entries that need to be specifically retreived.
01:44:33 <oerjan> That actually is pretty cool. Just too bad it's so much less efficient to use dictionaries for everything.
01:44:52 <Sukoshi> CakeProphet: You do know how C implements hash tables right?
01:45:14 <Sukoshi> Go and learn about what a hash table really is.
01:45:31 <oerjan> An array of pointers to linked lists, I believe.
01:45:42 <CakeProphet> I know it associates the key to a "hash value"... but -how- it does all this linkage is beyond me.
01:46:00 <Sukoshi> Using a set of bit-transforms upon the hash value to produce an array index.
01:46:23 <oerjan> or possibly pointers to binary trees, I guess.
01:46:45 <Sukoshi> Of course, there's always a chance for a misrefer, which is something you're going to suffer unless you implement a ``perfect'' hash table, whose math is more involved than I'm willing to casually talk about.
01:46:49 <CakeProphet> dictionaries are fairly fast for what they do. (lookup values paired to a key)
01:47:23 <Sukoshi> If only my NN which does 2 * 10^6 iterations of lookups and loops could say the same thing :)
01:47:59 <CakeProphet> pfft... anything would start to get stressed out under those numbers.
01:48:01 <oerjan> I don't see how a collision-free hash table is mathematically possible.
01:48:10 <Sukoshi> oerjan: It's ... complicated.
01:48:17 <Sukoshi> Read Knuth's articles on the ``perfect'' hash table.
01:48:23 <CakeProphet> hmmm... I've never actually had a misrefer occur...
01:48:27 -!- pikhq has joined.
01:48:48 <Sukoshi> Those numbers perform fairly well under linked lists though CakeProphet.
01:49:20 <Sukoshi> Code isn't always about playing with 80's network protocols in a Y2K world, remember that :P
01:50:07 <Sukoshi> (I follow Cohen's philosophy -- hypothesize the highest load, the most iterations, the most memory lookups, the most of any stress. Make sure your program withstands that, and then it is truly a program.)
01:51:07 <CakeProphet> My philosophy is: make it do something... then bang it with a hammer until it can do it with 100000000000 times more shit.
01:51:27 <pikhq> My philosophy is simple:
01:51:38 <pikhq> Get the program to work, and then get it to work *well*.
01:52:16 * CakeProphet dabbles with 60's network protocols... not 80's.
01:52:16 <Sukoshi> Dunno. It's very rare that I can't get something to work in a very wasteful way.
01:52:37 <Sukoshi> Let's allocate 100,000 element adjustable arrays! \o/
01:52:59 <CakeProphet> I use most of my own "protocols" actually... which is supposed to be bad for you, but oh well.
01:53:12 <CakeProphet> it's hard to use a network protocol that only you know... at any rate. :P
01:53:13 <pikhq> Of course, inevitably for me the issue with "get the program to work first" is just that it turns out to be illegible as hell, not that it's really wasteful.
01:53:36 <Sukoshi> My legibiliity is alright.
01:53:49 <Sukoshi> I admit, my TRAIN generic method here needs some more comments, but, meh.
01:53:55 <CakeProphet> I've been told I make Python look like Perl...
01:53:57 <Sukoshi> I'll comment it before I submit it to the judges :P
01:54:24 <pikhq> Pre-rewrite BFM was a bastion of illegibility.
01:54:48 <pikhq> Optimization and two targets combined in *one pass of compilation*.
02:32:02 <bsmntbombdood> CakeProphet: You might be able to pickle the code object
02:35:53 <bsmntbombdood> CakeProphet: It would be easy to just store the source code of all ~execs
02:38:55 <bsmntbombdood> ~exec sys.stdout(__import__("inspect").getsource(self.print_callbacks))
02:38:56 <bsmnt_bot> [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue])
02:40:02 <bsmntbombdood> ~exec sys.stdout(__import__("inspect").getsource(self.f))
02:45:04 <bsmntbombdood> ~exec sys.stdout( [i[1] for i in inspect.getmembers(self.f) if i[0] == "func_code"][0] )
02:45:04 <bsmnt_bot> <code object <lambda> at 0xb7cc51e0, file "<string>", line 1>
02:45:37 <bsmntbombdood> ~exec self.the_code = [i[1] for i in inspect.getmembers(self.f) if i[0] == "func_code"][0]
02:50:59 <bsmntbombdood> I think the best bet is to store the string of source
02:53:45 <bsmnt_bot> <code object <lambda> at 0xb7cc51e0, file "<string>", line 1>
02:54:45 <bsmntbombdood> ~exec self.f = __import__("types").FunctionType(self.the_code, globals(), "f")
03:17:10 -!- CakeProphet has quit (Read error: 113 (No route to host)).
03:20:27 -!- ShadowHntr has joined.
03:34:24 -!- pikhq has quit ("leaving").
04:04:28 -!- digital_me_ has joined.
04:07:51 -!- digital_me has quit (Read error: 145 (Connection timed out)).
04:39:29 -!- bsmnt_bot has quit.
04:39:32 -!- bsmnt_bot has joined.
04:39:47 -!- bsmnt_bot has quit (Excess Flood).
04:39:49 -!- bsmnt_bot has joined.
04:42:29 -!- bsmnt_bot has quit (Client Quit).
04:42:31 -!- bsmnt_bot has joined.
04:48:56 <oerjan> That's the saddest smiley I have seen.
04:50:59 <oerjan> Back to pickling command strings I presume...
04:51:44 <bsmntbombdood> after yelling at me for wanting to pickle functions, the people in #python told me that the marshal module could do it
04:52:25 -!- bsmnt_bot has quit.
04:52:27 -!- bsmnt_bot has joined.
04:54:14 -!- bsmnt_bot has quit (Remote closed the connection).
04:54:16 -!- bsmnt_bot has joined.
04:55:02 -!- bsmnt_bot has quit (Remote closed the connection).
04:55:04 -!- bsmnt_bot has joined.
04:55:35 -!- bsmnt_bot has quit (Remote closed the connection).
04:55:40 -!- bsmnt_bot has joined.
04:56:19 -!- bsmnt_bot has quit (Remote closed the connection).
04:56:21 -!- bsmnt_bot has joined.
04:57:17 -!- bsmnt_bot has quit (Client Quit).
04:57:21 -!- bsmntbombdood has quit (zelazny.freenode.net irc.freenode.net).
04:57:21 -!- bsmnt_bot has joined.
04:57:51 -!- bsmntbombdood has joined.
04:58:02 -!- bsmnt_bot has quit (Remote closed the connection).
04:58:04 -!- bsmnt_bot has joined.
04:58:35 -!- bsmntbombdood has left (?).
04:58:37 -!- bsmntbombdood has joined.
04:58:39 -!- bsmntbombdood has left (?).
04:59:15 -!- bsmntbombdood has joined.
05:01:12 -!- bsmnt_bot has quit (Client Quit).
05:01:14 -!- bsmnt_bot has joined.
05:01:38 <bsmntbombdood> ~exec self.register_raw("testing", lambda x : False)
05:02:57 -!- bsmnt_bot has quit (Remote closed the connection).
05:03:00 -!- bsmnt_bot has joined.
05:04:58 -!- bsmntbom1dood has joined.
05:05:54 -!- bsmntbombdood has quit (Nick collision from services.).
05:06:22 -!- bsmnt_bot has quit (Remote closed the connection).
05:06:25 -!- bsmnt_bot has joined.
05:07:17 -!- bsmntbom1dood has changed nick to bsmntbombdood.
05:08:03 -!- digital_me_ has quit ("Lost terminal").
05:09:40 <oerjan> Yeah, you are netsplitting a lot.
05:18:48 <Sukoshi> Does anyone here have some elementary signal processing knowledge?
05:20:25 <Sukoshi> In a typical computer DSP system, does a low pass filter just perform a DFT on the time domain signal and junk the frequency points at which you cap the filter?
05:21:28 <oerjan> OK, I even misunderstood the subject - I somehow thought you were speaking of of Unix signals :)
05:22:18 <oerjan> Alas, I am completely blank on that question.
05:22:20 <oklopol> Sukoshi, that'd sound sensible.
05:22:44 <oklopol> I don't know, but... that's how i'd do it.
05:24:24 <oklopol> (You can say anything you're now sure about as long as you remember to leave right after it ->)
05:27:54 <oerjan> Well, wikipedia didn't seem to turn up anything specific.
05:29:04 <Sukoshi> It's not a very common let's-have-coffee-over-it topic.
05:31:01 <oerjan> This seems the most relevant: http://en.wikipedia.org/wiki/Lowpass_filter#Passive_digital_realization
05:32:30 <oerjan> Actually it is rather specific, but whether it is frequently used it doesn't say.
05:33:36 <Sukoshi> I'm not talking about a filter.
05:33:44 <Sukoshi> I'm talking about a DFT and a chop-off.
05:35:19 <oerjan> Also, http://en.wikipedia.org/wiki/Digital_filter
05:35:50 <oerjan> It mentions Fourier transforms and essentially chop-offs as well.
05:40:28 <bsmntbombdood> ~exec self.register_raw("testing", lambda x : False)
05:41:00 <Sukoshi> What's that bot written in? Python I'm assuming?
05:41:19 -!- bsmnt_bot has quit (Remote closed the connection).
05:41:21 -!- bsmnt_bot has joined.
05:42:06 <bsmntbombdood> ~exec sys.stdout.write(pickle.load(open("/bot/test.pickle")))
05:42:06 <bsmnt_bot> [(<_sre.SRE_Pattern object at 0xb7d15bf0>, 'c\x03\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00C\x00\x00\x00s\x1e\x00\x00\x00|\x00\x00i\x01\x00d\x01\x00|\x02\x00i\x03\x00d\x02\x00\x83\x01\x00\x16\x83\x01\x00\x01d\x00\x00S(\x03\x00\x00\x00Ns\x07\x00\x00\x00PONG %si\x01\x00\x00\x00(\x04\x00\x00\x00t\x04
05:42:07 -!- bsmnt_bot has quit (Excess Flood).
05:42:09 -!- bsmnt_bot has joined.
05:42:50 <bsmntbombdood> ~exec sys.stdout.write([(i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle"))))
05:42:56 <bsmntbombdood> ~exec sys.stdout.write([(i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle")))
05:43:08 <bsmntbombdood> ~exec sys.stdout.write([(i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle")]))
05:43:40 <bsmntbombdood> ~exec sys.stdout.write( [(i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle")] )
05:44:08 <bsmntbombdood> Ok, I must be really tired if I can't get that to work
05:45:10 <bsmntbombdood> ~exec sys.stdout( [ (i[0], marshal.loads(i[1])) for i in pickle.load(open("/bot/test.pickle"))] )
05:45:10 <bsmnt_bot> [(<_sre.SRE_Pattern object at 0xb7cdfbf0>, <code object pong at 0xb7c586a0, file "/bot/ircbot.py", line 147>), (<_sre.SRE_Pattern object at 0x80d8660>, <code object do_quit at 0xb7c586e0, file "/bot/ircbot.py", line 150>), (<_sre.SRE_Pattern object at 0x80d8ea0>, <code object do_raw at 0xb7c587e0, f
05:45:11 <bsmnt_bot> <code object do_ctcp at 0xb7c58720, file "/bot/ircbot.py", line 156>), (<_sre.SRE_Pattern object at 0x80d8898>, <code object do_exec at 0xb7c58520, file "/bot/ircbot.py", line 183>), (<_sre.SRE_Pattern object at 0x80cde50>, <code object do_exec at 0xb7c585a0, file "/bot/ircbot.py", line 183>), (<_sr
05:45:11 <bsmnt_bot> e "/bot/ircbot.py", line 183>), (<_sre.SRE_Pattern object at 0x8057b20>, <code object do_ps at 0xb7c58660, file "/bot/ircbot.py", line 204>), (<_sre.SRE_Pattern object at 0x80d2f60>, <code object do_kill at 0xb7c58860, file "/bot/ircbot.py", line 218>), (<_sre.SRE_Pattern object at 0x80cd078>, <code
05:45:13 <bsmnt_bot> E_Pattern object at 0xb7c90320>, <code object <lambda> at 0xb7c588e0, file "<string>", line 1>)]
06:06:25 <bsmntbombdood> ~exec self.f_code = marshal.loads(pickle.load(open("/bot/test.pickle"))[0][1])
06:06:37 <bsmnt_bot> <code object pong at 0xb7c586e0, file "/bot/ircbot.py", line 147>
06:06:59 <bsmntbombdood> ~exec self.f = types.FunctionType(self.f_code, globals())
06:12:55 -!- RodgerTheGreat has quit.
06:21:40 <bsmntbombdood> argh, looks like we need to pickle the instance too
06:21:46 -!- bsmnt_bot has quit.
06:21:48 -!- bsmnt_bot has joined.
06:22:03 -!- bsmnt_bot has quit (Excess Flood).
06:22:05 -!- bsmnt_bot has joined.
06:23:11 -!- bsmnt_bot has quit (Client Quit).
06:23:13 -!- bsmnt_bot has joined.
06:23:15 -!- bsmnt_bot has quit (Excess Flood).
06:23:18 -!- bsmnt_bot has joined.
06:23:47 -!- bsmnt_bot has quit (Client Quit).
06:23:49 -!- bsmnt_bot has joined.
06:23:51 -!- bsmnt_bot has quit (Client Quit).
06:23:53 -!- bsmnt_bot has joined.
06:23:56 -!- bsmnt_bot has quit (Excess Flood).
06:23:58 -!- bsmnt_bot has joined.
06:24:19 -!- bsmnt_bot has quit (Client Quit).
06:24:21 -!- bsmnt_bot has joined.
06:25:49 <bsmntbombdood> <bsmnt_bot> PicklingError: Can't pickle <type 'instancemethod'>: it's not found as __builtin__.instancemethod
06:41:12 -!- oerjan has quit ("Good night").
06:58:24 -!- ShadowHntr has quit ("End of line.").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:48:58 <Sukoshi> For aspiring Lispers everywhere, here's code that automates the Trapezoidal Rule and Simpson's Rule of estimating the area under the curve between an upper-bound a lower-bound according to a curve expressesd as a function func split up into n intervals: (will paste)
08:50:37 <Sukoshi> http://paste.lisp.org/display/34869
09:16:38 -!- ihope_ has joined.
09:29:04 -!- ihope has quit (Connection timed out).
12:07:28 -!- oklofok has joined.
12:08:15 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
12:49:36 -!- oklofok has changed nick to oklopol.
13:11:53 <SimonRC> Sukoshi: bah. Haskell could do that in the same number of lines I suspect, or fewer.
13:12:58 <SimonRC> You should be showing off the real powerof Lisp: macros.
14:18:59 -!- jix has joined.
14:38:22 <bsmntbombdood> Sukoshi: (defun interval (low-bound up-bound n) (loop for i from low-bound to up-bound by (/ (- up-bound low-bound) n) collecting i))
14:42:55 <SimonRC> Haskell: interval l h n = [l, l + step .. h] where step = (h - l) / n
17:26:33 -!- ShadowHntr has joined.
17:36:05 -!- ShadowHntr has quit (Client Quit).
17:46:48 -!- ShadowHntr has joined.
19:19:17 -!- ShadowHntr has quit ("End of line.").
19:21:22 -!- tgwizard has joined.
20:27:05 <ihope_> I wonder how many people in the world are looking at the clock.
20:27:39 <ihope_> And I wonder how many people have claimed January 11 2007 3:23:30 PM my time to be their own personal second.
20:27:59 <ihope_> I'm not that greedy. I'm declaring the third tenth of it to be mine.
20:28:26 <ihope_> From January 11 2007 3:23:30.2 PM to January 11 2007 3:23:30.3 PM...
20:59:05 <ihope_> Average lifespan divided by world population...
21:01:56 <ihope_> Average lifespan seems to be 66 years.
21:02:49 <ihope_> According to Google, we end up with 0.319188164 seconds per person.
21:03:26 <ihope_> Might as well round that down to 0.31415926535.
21:05:07 -!- ihope__ has joined.
21:05:35 -!- ihope__ has changed nick to ihope.
21:06:51 <ihope> Of course, the wealthy will get more time.
21:15:51 -!- CakeProphet has joined.
21:17:26 <oklopol> so, basically you just took what's yours
21:21:07 -!- ihope_ has quit (Connection timed out).
21:57:56 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
22:01:38 -!- Sgeo has joined.
22:07:11 -!- CakeProphet_ has joined.
22:08:29 -!- CakeProphet has quit (Read error: 113 (No route to host)).
22:08:35 -!- CakeProphet_ has changed nick to CakeProphet.
22:11:45 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:57:50 -!- Sgeo has quit (Remote closed the connection).
23:24:29 -!- oerjan has joined.
23:37:37 <oerjan> #esoteric, where you can get your 0.3 seconds of fame...
23:42:56 <oerjan> What ihope_ said 2-3 hours ago.
23:44:10 <oerjan> Ircbrowse is horribly slow today, unless it's me.
23:44:27 -!- bsmnt_bot has quit.
23:44:56 -!- bsmnt_bot has joined.
23:45:57 -!- bsmnt_bot has quit (Remote closed the connection).
23:45:59 -!- bsmnt_bot has joined.
23:46:36 -!- bsmnt_bot has quit (Remote closed the connection).
23:46:38 -!- bsmnt_bot has joined.
23:47:09 -!- bsmnt_bot has quit (Client Quit).
23:47:11 -!- bsmnt_bot has joined.
23:47:26 <bsmntbombdood> ~exec self.register_raw("testing asdf", lambda x : False)
23:47:46 -!- bsmnt_bot has quit (Client Quit).
23:47:48 -!- bsmnt_bot has joined.
23:48:16 <bsmntbombdood> ~exec print >> sys.stdout, self.raw_regex_queue[-1]
23:48:17 <bsmnt_bot> (<_sre.SRE_Pattern object at 0x80c7cd8>, <function <lambda> at 0xb7c254c4>)
23:48:21 <bsmntbombdood> ~exec print >> sys.stdout, self.raw_regex_queue[-1].pattern
23:48:33 <bsmntbombdood> ~exec print >> sys.stdout, self.raw_regex_queue[-1][0].pattern
23:48:46 <bsmntbombdood> ~exec print >> sys.stdout, self.raw_regex_queue[-1][0].pattern
23:50:02 <bsmntbombdood> ~exec self.register_raw(".*#esoteric.*DIE BOT DIE.*", lambda x, y : True)
23:50:22 -!- bsmnt_bot has quit (Client Quit).
23:50:24 -!- bsmnt_bot has joined.
23:50:36 -!- bsmnt_bot has quit (Remote closed the connection).
23:50:37 -!- bsmnt_bot has joined.
23:51:16 <lament> I have successfully serialized YOUR MOM!
00:05:54 <lament> bloody he tells us! bloody!
00:11:20 -!- tgwizard has quit (Remote closed the connection).
00:20:39 -!- bsmnt_bot has quit (Remote closed the connection).
00:20:41 -!- bsmnt_bot has joined.
00:45:05 <oklopol> DIE BOT DIE LIKE YER MOTHER!!!
00:45:19 <oerjan> ~exec self.load_callbacks("/bot/test.pickle")
00:45:21 <oklopol> DIE BOT DIE LIKE YER MOTHER!!!
00:45:22 -!- bsmnt_bot has quit (Remote closed the connection).
00:45:25 -!- bsmnt_bot has joined.
00:46:03 <oerjan> a thereapeutic robot :D
00:46:50 <oerjan> The sys.output problem has not been solved.
00:47:09 <oerjan> ~exec print >> sys.output "o"
00:47:14 <oerjan> ~exec print >> sys.output, "o"
00:47:54 <oerjan> ~exec self.raw("PRIVMSG #esoteric :o")
00:48:48 <oklopol> why won't it help to just change the stdout here?
00:49:32 <oerjan> The problem is that the change should only affect the subthread, which may be impossible.
00:50:13 <bsmntbombdood> I change sys in the enviroment for the exec, but print borks anyway
00:50:43 <oerjan> A sub-process would solve that but make transmitting all other information awkward.
00:51:09 <oerjan> Is it possible to redefine the print statement itself?
00:52:10 -!- ShadowHntr has joined.
00:52:17 <oerjan> And I believe shared memory in a garbage collected language is hard, so Python probably doesn't have it.
00:53:05 <bsmntbombdood> It's possible to redefine the "import" statement with __import__, but I can't find the similar function for print
01:04:13 <CakeProphet> the standard print can be altered with sys.stdout.write ...but other than that...
01:05:33 <CakeProphet> to do some more interpreter magic that can't be done with __import__ easily.
01:05:46 <bsmntbombdood> I don't care about __import__, that was just an example
01:06:45 <bsmntbombdood> Sukoshi: The only public commands are ~exec and ~ps
01:07:11 <bsmntbombdood> You can quit it with ~exec self.disconnect(message)
01:10:08 <Sukoshi> What's this ``pickling'' thingamabobber?
01:10:32 <bsmntbombdood> I was using it to provide persistance for callbacks
01:10:51 * Sukoshi pities those without lexical and dynamic bindings.
01:13:34 * CakeProphet has some nifty stuff you ould use to persitent the entire global namespace.
01:14:09 <CakeProphet> the pickle protocol can only store references to functions on the top level of a module.
01:14:27 <CakeProphet> because it doesn't actually store the class itself... just a reference name.
01:14:44 <CakeProphet> but... with enough abuse... you can make it work for any function. :P
01:15:20 <bsmntbombdood> we basically pickle [(i[0], marshal.dumps(i[1].func_code), inspect.ismethod(i[1])) for i in self.raw_regex_queue]
01:16:08 <CakeProphet> that wraps functions... and just store the source code.
01:16:18 <bsmntbombdood> getting it out is a little more complicated, because we have to convert functions to methods
01:16:49 <CakeProphet> the actual function isn't pickled... but the source is... upon a __call__ it recompiles the function if it doesn't exist or if the source string has been altered.
01:17:19 <CakeProphet> so you can edit the definition of a function inplace.
01:18:08 <CakeProphet> If it's something in the hard source... I use inspect.
01:18:32 <CakeProphet> as for mid-runtime defined functions... I just capture the source as its defined and instantiate a new func object.
01:18:59 <CakeProphet> since it's a MUD... and it uses commands-mapped-to-functions... I can just hard-code that part into the "def" command.
01:20:10 <CakeProphet> the player could type "def WHEEFUNC(arg, arg)" and a text-editor would pop up or something.
01:21:27 <CakeProphet> it's just "command stuff" where stuff is matched to a command-specific parsing regex.
01:22:26 <CakeProphet> but I decided in the end to make a new version that ditches all of that.
01:22:48 <CakeProphet> and I'm going to make my own language for the MUD... that resembles ORK and uses coroutines heavily.
01:24:08 <bsmntbombdood> I wonder if you could write a parser using only regexes
01:24:33 <CakeProphet> Stue... for example... can be parsed entirely with regex.
01:25:17 <CakeProphet> Glass could probably be parsed with regex.
01:25:58 <CakeProphet> some things that probably can't be parsed too easily with regex would be like... HTML and English.
01:27:49 <oerjan> Actually simple regexes cannot parse nested parenthesis-like structures.
01:28:16 <CakeProphet> I think really parsing english is just a matter of amassing a huge database of words, slang terms, colloquialisms, acronyms, terminology, expressions, common names, etc.
01:28:24 <oerjan> Which rules out both Glass (/\) and BF ([])
01:29:01 <oerjan> it's the difference between regular and context-free languages
01:29:08 <bsmntbombdood> But you say simple...are there complex ways to do it?
01:29:32 <CakeProphet> I've got a parsing library that extends off of regex to allow recursive structures.
01:29:41 <oerjan> Well I was hedging my bets for what strange extensions might exist :)
01:29:43 <CakeProphet> it uses some form of "forewarding" or something.
01:30:28 <CakeProphet> I guess if you a metacharacter that meant "a backreference to the group I'm in".
01:31:53 <oerjan> There may of course be tricks to use regexes heavily together with explicit recursion.
01:33:47 <oerjan> For example, in BF you might use "[[^][]*]" to get everything between the first and last loop, and then have another regex to split _that_ up.
01:34:50 <oerjan> Eh, wait that was wrong.
01:35:57 <oerjan> "\[^][]*\[(.*)\][^][]*\]"
01:36:55 <oerjan> first skip to the first [, then keep everything to the last ], then skip the rest.
01:37:16 <oerjan> Don't know if it's useful, just thought of it.
01:38:12 <oerjan> Gah, I forgot the final \[^][]*
01:38:45 <oerjan> i mean i had an extra \]
01:39:04 <oerjan> cannot read my own regexps :)
01:39:52 <oerjan> I suppose real parser combinators are better.
01:40:24 <oerjan> What is wrong with "\[^][]*\[(.*)\][^][]*" ?
01:41:01 <CakeProphet> regex should probably go the oher way around..
01:41:15 <CakeProphet> use escape characters for the meta characters..
01:41:22 <CakeProphet> instead of escape characters for the regular characters.
01:41:30 <oerjan> What is wrong with "[^][]* \[ (.*) \] [^][]*"/v ?
01:42:10 <CakeProphet> but I guess all the escape characters for metachars would just muck up the readability too.
01:42:11 <oerjan> I am trying to use the Perl format, which is what I know somewhat.
01:43:28 <oerjan> (for embedded whitespace for legibility.)
01:44:05 <CakeProphet> ignores whitespaces unless they're in brackets.
01:44:40 <oerjan> OK then: "^ [^][]*? \[ (.*) \] [^][]* $"/x ?
01:45:24 <CakeProphet> the tilde seems like a good escape character.
01:45:32 <oerjan> Actually that ? is useless.
01:45:45 <CakeProphet> it's rarely used.... and it's not quite so weird and choppy looking as \
01:46:16 <CakeProphet> Any pattern matcher I wrote would be non-character-specific.
01:46:31 <CakeProphet> with an optional ability to match per-character.
01:47:35 <oerjan> The question is how to parse the interior further.
01:48:14 <oerjan> It needs a different expression for sure.
01:49:43 <bsmntbombdood> matched agains "[ ] [ ]", it matches the whole thing
01:50:44 <oerjan> Yes, and then " ] [ " needs to be split up further.
01:51:11 <bsmntbombdood> I don't know of any way to do it other than counting, and regexes can't count
01:51:48 <oerjan> I believe I said I meant to use more than one regexp.
01:52:41 <CakeProphet> "(" simply means accumulate another branch to the parse tree... ")" mean return to the last node... " and ' would start a string and symbol mode respectively.
01:52:44 <bsmntbombdood> increment on "(", decrement on ")", return buffer when count == 0
01:53:32 <oerjan> Well, even if it could work it would end up rather complicated.
01:54:07 <CakeProphet> parsers tend to be pretty damn weird to code by hand (i.e. without a parsing language)
01:54:59 <bsmntbombdood> I think I'm going to write a quit parser for nested (), just as an excersize
01:56:51 <oerjan> Recursive descent is not that bad.
02:01:27 -!- CakeProphet_ has joined.
02:02:40 <oerjan> Is everyone else finding the net awfully slow these last days? And not just IRC either.
02:08:12 <bsmntbombdood> I at least got the code to get the part in between the parentheses
02:08:24 <oerjan> What is a quit parser?
02:09:00 <oerjan> Darn, here I though I was up to some new interesting technology :D
02:09:44 <oerjan> Use either an explicit stack, or recursion.
02:12:07 <oerjan> A list of expressions, some of which are themselves lists of expressions?
02:12:38 <oerjan> A single outer set should be enough.
02:13:09 -!- CakeProphet_ has quit (Read error: 104 (Connection reset by peer)).
02:13:09 -!- CakeProphet__ has joined.
02:13:32 <oerjan> actually your first seemed good.
02:13:59 -!- CakeProphet has quit (Read error: 113 (No route to host)).
02:14:03 -!- CakeProphet__ has changed nick to CakeProphet.
02:15:09 <oerjan> for clarity, you might want two different functions, parse_list and parse_expr
02:15:16 <CakeProphet> while everything else internet-wise works fine.
02:15:42 <oerjan> i also have web sites dropping out frequently.
02:16:10 <CakeProphet> without ever saying "lol no connection kthxbai"
02:16:12 <oerjan> Same with me, until it gives up.
02:16:33 <oerjan> Oh, mine does give up eventually.
02:18:14 <oerjan> Perhaps they are close to you? Anyhow the esolang wiki has always been on and off in my experience.
02:19:00 <oerjan> Maybe the spam is finally taking over :/
02:21:31 <oerjan> Now I cannot get to BBC news...
02:28:18 -!- pikhq has joined.
02:29:43 <oerjan> What are you doing at ( and ) ?
02:30:12 <bsmntbombdood> incrementing the count, decrementing the count and recursing if count == 0
02:30:41 <oerjan> Eh, recursing should be done whenever you hit a (
02:32:02 <bsmntbombdood> i need to return the string if it doesn't have any of () in it
02:32:14 <oerjan> If you are using recursion, you don't need any counting.
02:33:14 <oerjan> Just return when you would decrement and call a subfunction when you would increment.
02:34:14 <oerjan> The depth of the recursion stack automatically keeps track of the count.
02:37:12 <oerjan> And by the way, this is easiest in functional style: the result value of the function should be the parse tree of what that invocation has parsed.
02:38:45 <oerjan> On the other hand the pointer to the current character needs to be common for all invocations, so each can take over where another stopped.
02:39:09 <oerjan> Easy with a file-like object, I presume.
02:40:19 <oerjan> Right, in that case it needs to be passed upwards as well because the caller needs to take over where the called function stopped, as well.
02:41:28 <oerjan> I believe in Python it is easier to use a common object with a pointer.
02:42:55 <CakeProphet> Python doesn't really recognize such a thing as a "pointer".
02:45:01 <oerjan> That's what I meant anyhow.
02:45:32 <oerjan> Also, doing it this way has the advantage that you can easily parse directly from a file.
02:45:33 <CakeProphet> but if it's something like a string... there's very little difference in a reference to a string and a copy of a string.
02:45:49 <CakeProphet> lists and dictionaries... on the other hand.
02:46:36 <oerjan> Just pretend I said "index", OK? :)
02:47:34 <oerjan> Well, a pointer is an index into memory.
02:48:48 <bsmntbombdood> You have to use an index to emulate a pointer in python
02:49:02 <CakeProphet> mutability and immutability tend to outweigh pointers.
02:49:49 <CakeProphet> x = [[].[].[]]; y = x[0]; y.append(1); print x #[[1],[].[]]
02:50:24 <CakeProphet> anything assigned to a list is just a pointer... unless you use the copy method... or use the list() function.
02:50:52 <CakeProphet> x = [[].[].[]]; y = x[0].copy(); y.append(1); print x #[[],[].[]]
02:52:06 <CakeProphet> y becomes a "pointer" implicitly for any variable that references a list.... same with dictionaries and classes/instances.
02:52:10 <oerjan> This is all well and good, but we knew it already. I just used a loaded word OK?
02:52:29 <CakeProphet> nah nah... not the wording... I'm just trying to figure out... what you're trying to do..
02:52:55 <bsmntbombdood> some hardcore pointer manipulation makes me all warm and fuzzy inside
02:53:20 <oerjan> I was suggesting bsmntbombdood turned his string into an input file-like object so it could be scanned/parsed easier.
02:53:52 <oerjan> Which means he somehow needs an index into it.
02:54:13 <CakeProphet> import cStringIO as stringio; x = stringio(); x.write("wheeeee"); print x.getvalue()
02:54:15 <oerjan> There's a library for it? Not entirely surprising.
02:54:36 <CakeProphet> cStringIO is the faster version of it though... so I'd use it.
02:55:07 <CakeProphet> it's basically just a string-file... good pretty much anywhere a file is (it uses all the same methods... with an added "getvalue" method)
02:55:11 <bsmntbombdood> It's also a drop in replacement, so it doesn't matter what I use
02:56:38 <CakeProphet> Half of Python's awesomeness lies in the sheer amount of junk in its library.
02:57:28 <CakeProphet> You place that accumulated bits into the next index of the node?
02:57:59 <CakeProphet> That's what I'd guess... basically just convert it into tuples (or lists)
02:58:01 <oerjan> Perhaps not advancing the index, so that the parent also gets to see the )
02:58:43 <oerjan> Yes, return the accumulated list.
02:58:53 <CakeProphet> Generally speaking... if you're doing massive numbers of string, list, or tuple concats in a Python program... you're probably doing it the wrong way.
03:00:10 <CakeProphet> because when you work with a list... you don't have to construct an entirely new string object each and every time... as you do with concatenation.
03:02:03 <CakeProphet> it's really on a problem when you have a large number of successive concatenations on a progressively increasing string.
03:02:23 <oerjan> I guess stringIO doesn't actually construct the string until you call get_value?
03:03:20 <CakeProphet> but usually lists are the way to go when messing with strings.
03:04:29 <CakeProphet> compared "\n".join(SomeListOfStrings) to x = ""; for string in SomeListOfStrings: x += string + "\n"
03:06:32 <CakeProphet> bsmntbombdood, haha... that's exactly the kind of problem I was referring to. :P
03:09:08 <CakeProphet> it looks like you're just recursively calling parse() on the exact same string ( s )
03:09:38 <oerjan> s shouldn't be a string but a file-like object.
03:10:24 <CakeProphet> you couild use partition... if you wanted.
03:11:24 <CakeProphet> "Wheee(wha wha wha (wha wha wha))".partition("(") == ("Wheeee", "(", "wha wha wha (wha wha wha))"
03:11:29 <oerjan> You are missing a tree.append(buff) before the return.
03:11:31 <CakeProphet> so you don't have to use that god awful buffer.
03:12:09 <oerjan> And also you should check for buff==""
03:13:38 <CakeProphet> no... that's the way you would want to do it.
03:13:46 <CakeProphet> strings aren't meant to do stuff like tha.
03:13:54 <oerjan> I wasn't responding to you. :)
03:14:58 <oerjan> It might be an idea to do the collection of non-() as a second while loop inside the first. Then you don't have to worry about "" testing.
03:15:00 <CakeProphet> yeah... buff should definetely be a list... the string concats will get slow.
03:15:16 <oerjan> And it would be easy to do a join at the end of it.
03:16:32 <oerjan> However, then you need to be careful about when you read the next character. Unless the files have an undo method.
03:17:14 * CakeProphet wishes file objects had an iterator for character-by-character stuff
03:18:14 <oerjan> I think there is still a bug in that if there is eof while buff is non-empty.
03:18:23 -!- digital_me has joined.
03:18:58 <CakeProphet> for loops over files only go line-by-line...
03:20:00 <CakeProphet> def chariter(file): for line in file: for char in line: yield char
03:20:27 <CakeProphet> that'll solve pretty much all your problems.
03:20:58 <oerjan> Oh, and it definitely does not catch mismatched parentheses.
03:20:59 <CakeProphet> as a general rule of thumb... while loops tend to be infrequently used in Python.
03:21:31 <oerjan> The problem here is that the index of the for loop needs to be updated after the recursion.
03:23:15 <oerjan> I mean, the parent function should not reparse the characters parsed by the child.
03:24:29 <lament> "There's still a bug" - well said
03:24:34 <oerjan> What does cut off mean? Can two for loops share an iterator?
03:25:31 <oerjan> For proper error handling you need to use lookahead for the ")"
03:25:59 <oerjan> So that the parent takes care of checking if it was actually there.
03:26:00 <bsmntbombdood> to get the next character you could use s.getvalue()[s.pos+1]
03:26:23 <oerjan> Now _that_ is inefficient.
03:30:28 <oerjan> On second thought, you don't need lookahead if the child knows whether it needs an end parenthesis.
03:31:20 <oerjan> Which it does unless it actually is the topmost parent.
03:32:33 <oerjan> And the topmost parent, on the other hand, knows that it must not have a )
03:32:47 <oerjan> So an extra argument could fix that.
03:33:37 <oerjan> Or you could make two different functions.
03:37:31 <CakeProphet> how about this? http://pastebin.ca/index.php
03:37:49 <oerjan> I doubt that is your URL.
03:40:32 <CakeProphet> it needs to check for the ending parenthesis.
03:46:30 <bsmntbombdood> You are only allowed to step through characters one by one
03:47:04 <CakeProphet> at it's heart... the partition source code probably steps through each character one by one.
03:47:55 <CakeProphet> sure sure... just substitute what partition does into that and you'll have a character-by-character "real parser".
03:51:07 <CakeProphet> using whle loops for iterating is a sin anyhow.
03:51:51 <oerjan> Does that code actually work with nested parentheses?
03:53:24 <oerjan> Does partition include the "("'s in the list?
03:53:39 -!- pikhq has quit ("leaving").
03:53:46 <CakeProphet> newlines aren't signifigant... or so I'm lead to believe.
03:54:31 <oerjan> Oh, so never more than one sep?
03:55:07 <CakeProphet> partition is just a 3-tuple of the first encountered seperator.
03:55:29 <oerjan> I doubt that it works when there are no ")"s in the string...
03:57:20 * CakeProphet is still thinking abouit that esoteric parsing language.
03:57:33 <CakeProphet> parsing is a pain in the ass... and needs simplification... esoterically.
03:57:49 <oerjan> Anyhow if I understand your code right, it hardly works on anything containing more than a single set of parentheses.
03:58:37 <oerjan> Wait a moment, not even that.
03:58:48 <oerjan> You are checking for ")" in the wrong branch.
04:00:19 <bsmntbombdood> whoa, mine works when you leave off closing parentheses
04:00:38 <oerjan> In fact, partition used this way cannot do more than regexes.
04:02:05 <oerjan> Which we discussed previously, and I think we agreed it would at least become very complicated to parse nested parentheses using them, if at all possible.
04:03:46 <oerjan> bsmntbombdood: That's because there is no difference between eof and ), essentially.
04:05:06 <oerjan> And as I implied, without extra arguments only the parent knows whether there must be a ")" or not.
04:05:24 <CakeProphet> [["I've", 'got', [['magic', 'in', [[[['my', 'pocket', [['really', 'have']]]]]]]]]]]
04:05:37 <CakeProphet> parsed from... print whee("(I've got (magic in ((my pocket) but) you can't (really have) it)")
04:06:07 <bsmntbombdood> [["I've got ", ['magic in ', [['my pocket'], ' but'], " you can't ", ['really have'], ' it']]]
04:08:51 <oerjan> It misses the part after ")". As I said, the partition(")") is in the wrong branch.
04:09:08 <CakeProphet> It wouldn't work properly in the other one.
04:09:45 <oerjan> Which strangely means that you call it recursively with something not well-formed.
04:10:19 <oerjan> You at least need to take case of the [3] part.
04:19:10 <CakeProphet> where I realize the grand pattern of parsing.
04:20:09 <oerjan> Unfortunately it has already been done. It is called monadic parser combinators in Haskell :)
04:20:41 <oerjan> Well, that or Prolog diff lists, perhaps.
04:21:20 <CakeProphet> for languages with symbols... there's some basic general re-ocurring patterns.
04:21:57 <CakeProphet> enclosures (parentesis), flippers (quotes), funnyhats(decorate syntax in Python
04:22:57 <CakeProphet> you have things that serve as delimiters... usually operators... sometimes things like whitespace and newlines.
04:23:19 <CakeProphet> yes yes... tokens... you have to -make- them.
04:23:53 <oerjan> expr_list = many (liftM Left (notOneOf "()") <|> liftM Right (between (char "(") (char ")") expr_list)
04:26:36 <CakeProphet> which cannot even be defined in terms of the English language.
04:26:41 <bsmntbombdood> You might combine both stages into one, but you are still going to be tokenizing
04:27:03 <CakeProphet> esoteric parsers are so magificent they don't even need to parse things.
04:28:29 <oerjan> esoteric languages just run the string directly, searching forward or backward. At least I _think_ I saw someone trying to do this the other day ;)
04:30:11 <CakeProphet> you want to find the parenthesis you can parse..
04:30:30 <oerjan> There is such a thing as a parenthesis.
04:30:43 <CakeProphet> interpreter it... substitute the results... and parse the next parse-able parenthesis thing.
04:31:06 <CakeProphet> thats's how you would do it non-recursively.
04:31:35 <oerjan> I think there might be a need for a fundamentalist ORK, incorporating such extensions as the "There is no such thing as a" statement.
04:31:43 <CakeProphet> find what matches the base pattern... evaluate it... repeat over and over and over.
04:31:50 <CakeProphet> eventually you'll wear away the recursive-icity.
04:32:30 <oerjan> That is of course what /// does.
04:32:41 <CakeProphet> I've always been interested in data is defined by what it isn't.
04:33:28 <oerjan> There was a thread on anti-objects on Lambda the Ultimate recently.
04:33:37 <CakeProphet> Let's say you have an interpreter that... when run without a program... will compute everything.
04:33:53 <CakeProphet> the program will define what not to compute...
04:34:05 <CakeProphet> so to compute one null you would to manually decompute everything.
04:34:49 <CakeProphet> What's a networking framework? Well... it's definetely not AI, a parser, time travel, the hello world program, a symbolic manipulator, nor a date simulator.
04:35:01 <CakeProphet> so just make all of those and you'll have your networking framework.
05:29:19 -!- digital_me has quit ("Lost terminal").
05:38:30 -!- CakeProphet has quit (No route to host).
05:49:29 <bsmntbombdood> I think that's the way to modify the print statement
05:50:39 -!- calamari has joined.
05:54:51 <bsmntbombdood> Function(None, "f", ["x"], [], 0, None, Stmt([Return(Name("x"))]))
05:59:18 <oerjan> You might do a search and replace on "print" in do_exec, inserting >> sys.stdout, if there isn't a >> there already. A bit brittle, perhaps.
06:02:02 <bsmntbombdood> change Stmt([Printnl([Name('x')], None)]) to Stmt([Discard(CallFunc(Getattr(Getattr(Name('sys'), 'stdout'), 'write'), [Name('what')], None, None))])
06:20:15 -!- calamari has quit ("Leaving").
06:28:23 -!- ShadowHntr has quit (Connection timed out).
07:59:10 -!- Arrogant has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:08:55 -!- oerjan has quit ("leaving").
09:06:35 -!- Arrogant has quit ("Leaving").
10:34:40 -!- ihope__ has joined.
10:35:26 -!- ihope__ has changed nick to ihope.
12:05:10 -!- jix__ has joined.
12:10:11 -!- jix__ has changed nick to jix.
14:57:29 -!- tgwizard has joined.
15:29:20 -!- ngtr has joined.
15:29:59 -!- ngtr has changed nick to andreou.
16:29:12 -!- ihope has quit (Connection timed out).
16:30:13 -!- andreou has changed nick to ngtr.
17:18:49 <SimonRC> bsmntbombdood: Bah. Many languages are in denial about their need for algebraic datatypes
17:59:53 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
18:31:58 -!- ShadowHntr has joined.
18:32:19 <oklopol> what were you making earlier?
18:34:53 * SimonRC listens to _The News Quiz_.
18:36:23 <SimonRC> bsmntbombdood: Algebraic Datatypes are an enlightening system of describing datastructures. I much prefer them to classes or structs
18:36:55 <SimonRC> ADTs are great for things like parsers.
18:38:42 <SimonRC> A good start http://en.wikipedia.org/wiki/Algebraic_data_type
18:39:16 <oklopol> i read it all but i'm half asleep
18:39:16 <SimonRC> ADTs generalise structs and unions, for a start.
18:39:31 <oklopol> just the parenthesis thing?
18:39:43 <bsmntbombdood> oklopol: For someone who knows nothing about parsing, yes
18:40:03 <SimonRC> bsmntbombdood: waitamo, did you just say you parsed parentheses with a regex?
18:40:07 <oklopol> in c++ that would take 20 min
18:40:28 <SimonRC> Ah, good, I though mathematics might be falling apart.
18:40:57 <bsmntbombdood> nope, oklopol just misread the earlier conversation
18:41:54 <oklopol> i didn't think you used regex for smth, i thought you were making a regex parser
18:43:42 <oklopol> k, does def a(b) take b as a reference if it's int
18:44:29 <SimonRC> (The answer would be yes in QBASIC.)
18:45:04 <oklopol> i can't pass as an int as a ref easily?
18:45:19 <oklopol> okay, then i see where you were having trouble :DD
18:45:27 <oklopol> i'll have to use a stack then
18:45:54 <SimonRC> use a list containging a singel int
18:46:44 <oklopol> i always code ugly with python, it's what python knows best imo
18:47:09 <oklopol> (okay, i just don't grasp functional languages)
18:48:42 <SimonRC> They are diking out map and rejecting multi-line lambdas
18:55:30 -!- ngtr has left (?).
18:57:58 -!- andreou has joined.
19:02:19 <andreou> or back into the dead ... no one here?
19:05:48 <andreou> i frequented the channel a few years ago
19:11:05 <oklopol> is there a pastebin? i have an obsession to share my python code
19:13:13 <oklopol> http://www.pastebin.ca/314421
19:14:54 <oklopol> python really shows you how much you suck when you use the ide since errors hide your code 5 miles up...
19:15:08 <oklopol> infinite recursion errors that is
19:15:58 <oklopol> >>> parentise("I've got (magic in ((my pocket) but) you can't (really have) it",[0])
19:15:59 <oklopol> ["I've", 'got', ['magic', 'in', [['my', 'pocket'], 'but'], 'you', "can't", ['really', 'have'], 'it']]
19:16:05 <oklopol> i'm not sure if that's right
19:16:15 <oklopol> and my algorithm is terrible :)
19:16:32 <oklopol> i iterate everything twice
19:21:59 <oklopol> http://www.pastebin.ca/314437
19:34:00 <oklopol> http://bsmntbombdood.mooo.com/testclosure.c
19:34:30 <oklopol> i gotta compliment my memory
19:35:36 <oklopol> i gotta compliment that more tho, ingenious
19:36:39 <oklopol> thought of generalizing that with templates but never got into doing it
19:37:50 <bsmntbombdood> Hmm, I thought of a way of generalizing that code somewhat
19:39:17 <oklopol> omg, managed to shut the lights with a throw of a ball
19:42:02 <oklopol> it could easily do that to any function given the function after it and before it :DD
19:42:40 <oklopol> curry(funcbefore,funcafter,firstvarvalue);
19:43:14 <oklopol> would search first variable in the function, variables being \0xDEADBEE(0,1,2,3,4, etc.) and currying
19:44:08 <oklopol> and return the function of course
19:44:17 <andreou> dhcpd is running as pid 666.
19:44:29 <andreou> this tells things about the upcoming net-installation...
19:47:37 <andreou> well, has anyone installed debian on an old-world mac using netboot?
19:48:55 <andreou> no? wll, i'm screwed then.
19:57:09 -!- CakeProphet has joined.
20:43:01 <fizzie> I think I might have, but I don't remember _anything_ about it, and I don't even have the silly box any more. Besides, come to think of it, I think I installed using the tried-and-true method of "move the hd to something more sensible".
20:45:00 <andreou> it's just insane. netbsd goes without a hitch, why not debian as well?
20:45:47 <fizzie> Right, the hd-switching it was. It was the sparc I had to net-boot, it did only "rarp and tftp to the answering rarpd", and it was OpenBSD I was installing. Got confused.
20:46:09 * andreou indulges in a huge piece of spinnach-cheese-pie, putting all the problems behind
20:47:19 <andreou> obsd-sparc goes without a flaw
20:47:30 * andreou has the sparcclassic buzzing to his right as a proof
20:49:46 <andreou> come to think of it, sparcs are very sensible boxes
20:50:02 <andreou> maybe i should just sell or give away all the junk lying around and about and get a U10 or something
20:54:36 <fizzie> I had a sensible sparcstation 5 as a interweb firewall/router box, but it retired when I moved to this 100baseT network, since I didn't want to start looking for suitable sbus cards. It's currently in a closet.
20:55:57 <andreou> eh i'm still on 10baseT, although the previous workstation had GE-grade NICs.
20:56:16 <andreou> threw it out, too many MIPS, too many movies
20:56:26 -!- ihope__ has joined.
20:57:06 -!- ihope__ has changed nick to ihope.
21:23:00 <andreou> i'm really waiting for the s/a/u/ day
22:01:28 <fizzie> There's no trailing g, so isn't it simply "Toduy is "can't" day."?
22:02:50 <Sukoshi> But it's right, and there's no denying it, and it's a common occurance.
22:19:49 <fizzie> Don't they call that "slowlaris"?
22:20:12 <andreou> a U5 is a perfect non-solaris box
22:21:43 <fizzie> The Ultra 10s (and the few Blade 1000s) in this university run Solaris 10, too.
22:29:27 <andreou> a matter of pocket, not of brain.
22:30:23 <fizzie> Well, those U10s aren't really mine. And since my SS5 and the Indy are both in the closet, and the old mac is gone, the only non-x86 hardware here in use are the PPC iBooks.
22:35:55 <fizzie> The other iBook is my wife's, actually. I could barely afford my own.
22:37:21 <fizzie> I would accept the labeling if they were MacBook Pros or something. :p
22:56:56 -!- digital_me has joined.
23:47:54 -!- jix has joined.
23:49:49 -!- jix has quit (Client Quit).
23:50:15 -!- tgwizard has quit (Remote closed the connection).
00:49:54 <CakeProphet> I'm going to build a hybrid of Python and Lisp.
00:50:11 <CakeProphet> It'll basically look like Python with Lispisms and Lisp syntax.
00:51:28 <CakeProphet> (an.example of [some stuff for program in lisp-python-hybrid if (build-it True)])
00:54:08 -!- pikhq has joined.
00:59:13 -!- wooby has joined.
01:01:36 -!- digital_me_ has joined.
01:02:49 <oklopol> CakeProphet, i don't wanna be an ass but you typed necessary nessicary again :)
01:11:57 -!- digital_me has quit (Read error: 110 (Connection timed out)).
01:12:12 <andreou> aah... perl is broken on netbsd/macppc pkgsrc
01:12:48 <pikhq> Solution: don't use Perl, the only language where an unobfuscated coding contest is a challenge.
01:13:20 <pikhq> (Malbolge is excepted from that, on account of Malbolge not being an actual *language*)
01:14:05 <pikhq> Like a crack addict? :p
01:16:57 <pikhq> Solution: realise elinks > w3m. ;)
01:19:06 <andreou> i see elinks doesn't support inline images. i'm still going for links-gui and praying.
01:19:25 <andreou> (it seems unix turns one towards god)
01:19:48 <pikhq> That's because Unix is a diety unto itself.
01:20:15 <pikhq> Although it's but a servant of the Most High Editor. ;)
01:20:28 <pikhq> It's Chaotic Neutral, in D&D terms.
01:21:24 <andreou> i'm clueless about D&D, but i'm certain that an old-fashioned lovecraftian banishing would take care of the problematics raised. or an even more old-fashioned luddist reprogramming with an axe.
01:21:30 <andreou> still, i'm bound and attached.
01:22:45 <bsmntbombdood> ~exec exec "class foo:\n\tpass\nglobals()["foo"] = foo"
01:23:08 <bsmntbombdood> ~exec exec "class foo:\n\tpass\nglobals()["foo"] = foo" in globals()
01:23:26 <bsmntbombdood> ~exec exec "class foo:\n\tpass\nglobals()[\"foo\"] = foo" in globals()
01:24:31 <bsmntbombdood> ~exec self.foo.__class__.f = lambda self : bot.raw("PRIVMSG #esoteric :foo")
01:25:02 <bsmnt_bot> <bound method foo.<lambda> of <__main__.foo instance at 0xb7cc5f2c>>
01:25:52 -!- bsmnt_bot has quit.
01:25:55 -!- bsmnt_bot has joined.
01:27:14 -!- Sgeo has joined.
01:28:51 -!- andreou has changed nick to ka-pow.
01:29:00 -!- ka-pow has changed nick to andreou.
01:31:51 -!- digital_1e_ has joined.
01:39:54 -!- digital_me_ has quit (Read error: 110 (Connection timed out)).
01:49:27 -!- CakeProphet has quit (Read error: 131 (Connection reset by peer)).
01:49:52 -!- CakeProphet has joined.
01:51:18 <andreou> still drizzling, still compiling
01:54:25 <andreou> and it's four am, time to faint
01:54:32 -!- andreou has quit ("as if it vanished").
01:55:25 -!- CakeProphet_ has joined.
02:07:47 -!- CakeProphet_ has quit (Read error: 113 (No route to host)).
02:08:09 -!- CakeProphet_ has joined.
02:08:30 -!- CakeProphet has quit (No route to host).
02:08:45 -!- CakeProphet_ has changed nick to CakeProphet.
02:26:11 -!- calamari has joined.
02:33:59 -!- ihope__ has joined.
02:35:26 -!- ihope has quit (Nick collision from services.).
02:35:28 -!- ihope__ has changed nick to ihope.
02:35:39 -!- digital_1e_ has changed nick to digital_me.
03:11:46 -!- ihope has quit (Connection timed out).
03:24:34 -!- CakeProphet has quit (Read error: 113 (No route to host)).
03:24:55 -!- CakeProphet_ has joined.
03:25:02 -!- CakeProphet_ has changed nick to CakeProphet.
04:00:19 -!- digital_me has quit ("Lost terminal").
04:02:12 -!- digital_me has joined.
05:00:46 -!- Sgeo has quit ("Leaving").
05:14:49 -!- pikhq has quit ("leaving").
05:36:23 -!- digital_me has quit ("Lost terminal").
05:53:33 -!- calamari has quit ("Leaving").
06:23:39 -!- wooby has quit.
06:47:37 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)).
07:55:23 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net).
07:55:23 -!- bsmntbombdood has quit (zelazny.freenode.net irc.freenode.net).
07:55:23 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net).
07:55:23 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net).
07:55:23 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net).
07:58:43 -!- oklopol has joined.
07:58:43 -!- bsmntbombdood has joined.
07:58:43 -!- Sukoshi has joined.
07:58:43 -!- puzzlet has joined.
07:58:43 -!- sekhmet has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:07:56 -!- oerjan has joined.
10:52:25 -!- oerjan has quit ("leaving").
13:30:42 -!- CakeProphet_ has joined.
13:31:48 -!- CakeProphet has quit (Read error: 113 (No route to host)).
13:31:52 -!- CakeProphet_ has changed nick to CakeProphet.
13:36:49 -!- tgwizard has joined.
13:46:45 -!- andreou has joined.
14:11:34 -!- oklofok has joined.
14:12:04 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
14:50:46 -!- Sgeo has joined.
14:55:29 -!- andr- has joined.
14:55:33 -!- andreou has left (?).
14:55:44 -!- andr- has changed nick to andreou.
15:01:46 -!- Sgeo has quit ("Leaving").
15:02:06 -!- Sgeo has joined.
15:12:45 -!- tgwizard has quit (Remote closed the connection).
15:20:49 -!- Rent-A-Tard has joined.
15:22:19 <Rent-A-Tard> Please write the lyrics of "John, I'm only dancing!"*
15:39:36 -!- jix has joined.
15:48:15 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
16:05:41 -!- oklofok has changed nick to oklopol.
16:28:55 -!- digital_me has joined.
16:35:03 -!- pikhq has joined.
16:53:37 <andreou> is there still a cat's eye or any other esolang-related website?
16:56:33 <oklopol> http://esolangs.org/wiki/Main_Page
17:15:48 -!- digital_me has quit ("Lost terminal").
17:19:16 <Rent-A-Tard> Please write the lyrics of "John, I'm only dancing!"*
17:19:27 <Rent-A-Tard> Why isn't this working? Please tell me why ;)
17:29:35 <pgimeno> maybe my last comment in http://esolangs.org/wiki/Talk:IRP should be taken into consideration
17:37:11 -!- EgoBot has quit (Excess Flood).
17:37:23 -!- EgoBot has joined.
17:39:20 <pikhq> Learning Brainfuck?
17:40:16 -!- ihope has joined.
17:40:48 <Rent-A-Tard> !bf ++++++++++++[>+++++++>+++++++++>+++>+++++++++<<<<-]>.>----.---.>----.>++++.<<----.>>+++..++++.--------.+++.<<+++.>[>>++>+<<<-]>>------.>.++.<<<<+.>>-----.++.>>.
17:41:16 -!- Rent-A-Tard has changed nick to Rent-A-WAY-Tard.
17:48:22 <ihope> There, think that'll stop the Talk:Piet-Q spambots?
17:50:42 <ihope> It's worth a shot, anyway.
17:57:24 * pikhq hugs BFM some more. . .
18:06:40 -!- andreou has quit ("BitchX-1.1-final 1996-2000 Colten Edwards").
18:10:20 -!- tgwizard has joined.
18:28:39 -!- calamari has joined.
18:48:49 -!- jix has joined.
18:54:17 * pikhq sees Calamari, the Squid Boy.
18:54:57 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
18:56:17 -!- andreou has joined.
18:57:10 -!- oerjan has joined.
19:28:42 -!- andreou has quit ("[BX] Reserve your copy of BitchX-1.1-final for the Nintendo 64 today!").
19:29:22 -!- jix__ has joined.
19:51:46 -!- andreou has joined.
20:00:26 -!- RodgerTheGreat has joined.
20:08:35 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
20:15:00 -!- jix__ has joined.
20:29:30 -!- Sph1nx has joined.
20:35:42 -!- Sph1nx has quit (" !").
21:00:08 -!- jix__ has quit (Read error: 110 (Connection timed out)).
21:04:21 -!- jix__ has joined.
21:35:50 -!- Rent-A-WAY-Tard has changed nick to Rent-A-Tard.
21:36:27 * oerjan scrapes something out of the garbage can.
21:40:54 <oerjan> No no, no blood, just entrails.
21:42:04 <oerjan> And _possibly some strange fungi.
21:43:10 <RodgerTheGreat> I could've sworn the fungus in the trash was gone- I saw a huge mound of slime mold crawl away a couple days ago.
21:43:44 <RodgerTheGreat> although I'm not entirely certain that should be reassuring.
21:45:52 <oerjan> I told it to find some other slime to hang out with.
21:47:18 <oerjan> No no, I saw it head towards the courthouse.
21:47:23 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :this is a boring saturday")
21:47:28 -!- digital_me has joined.
21:49:38 <andreou> EgoBot do you have a manual?
21:49:59 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
21:50:01 <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
21:50:41 <EgoBot> Use: help [command] Function: displays help on a command, or lists commands
21:50:53 <EgoBot> Use: bf_txtgen <text> Function: use textgen.java with 1000 generations to generate an efficient BrainFuck text generator.
21:51:08 <EgoBot> While parsing "./tmp/daemon.cat": Invalid character!
21:51:09 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
21:51:19 -!- EgoBot has joined.
21:51:28 <andreou> you killed the bot, you bastard
21:51:40 <andreou> nah, it takes to to fake southpark
21:51:43 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~help", lambda x, y: bot.raw("PRIVMSG %s :no one can help you" % y.group(1)))
21:52:00 <oerjan> We do that all the time. I guess we should name it Kenny.
21:52:45 <oerjan> I don't know why it didn't accept that lazyk program.
21:53:10 <EgoBot> Use: ps Function: display the current processes
21:53:26 <EgoBot> 66 +++++++++++++[>+++++++++>++++++++>><<<<-]>--.>.<----.+++.++.+++++. [810]
21:53:49 <oerjan> I see it doesn't mention the d option to ps.
21:54:18 <andreou> !bf_txtgen bereshith bara elohim eth ha-shamayim ve-eth ha-aretz
21:55:24 <oerjan> Well, you could use the limit in the original IRC RFC I guess:
21:55:51 <oerjan> Max 1 message every other second.
21:56:17 <EgoBot> 364 ++++++++++++++[>++++++++>+++++++>++++++++>++<<<<-]>>.+++.>++.<.<+++.>+++.>---------.<<+.>.>>++++.<-------.-.<<--.>>.>.<++++.<++++.+++.>+++.+.<--.>>.<<--------.<++.>+++.>>.<-.-------.>+++++++++++++.<<<-.>.>.<<------.>>.<<++++++++++++.>+.++++.>>-------------.<<<---.>>++++.>+++++++++++++.<.<+++++++.>+++.>-------------.<.-------.>+++++++++++++.<.<--.>++++.<++.<++++. [861]
21:56:35 <oerjan> But with a 10 second leeway.
21:56:36 <andreou> hell, i wish i had GPM so i could c&p the code
21:56:39 <bsmnt_bot> 0: 'sys.stderr(open("/bot/test.pickle").read())', 146.41 seconds
21:57:40 <bsmntbombdood> right now IRCFileWrapper does "if lines_sent > 3: time.sleep(lines_sent/10.)"
22:00:04 <bsmntbombdood> I'll change it to time.sleep(max([lines_sent/10., 2])
22:00:58 -!- EgoBot has quit (Excess Flood).
22:01:13 -!- EgoBot has joined.
22:01:49 <bsmntbombdood> Rent-A-Tard: you can execute some python code with "~exec $code"
22:02:18 -!- EgoBot has quit (Excess Flood).
22:02:33 -!- EgoBot has joined.
22:03:10 -!- bsmnt_bot has quit (Excess Flood).
22:03:11 <oerjan> Note that the default bf is the 16-bit one, I believe.
22:03:39 <oerjan> !daemon cat lazyk -e i
22:03:42 -!- bsmnt_bot has joined.
22:03:42 <EgoBot> While parsing "./tmp/daemon.cat": Invalid character!
22:03:53 <andreou> goddamn, what the hell has bush to do with ecology and, more importantly, on my radio?
22:04:02 -!- bsmnt_bot has quit (Excess Flood).
22:04:04 -!- bsmnt_bot has joined.
22:04:09 <oerjan> Gah, just doesn't work.
22:04:14 <andreou> Rent-A-Tard comeon, stop it. it beeps every time i switch to this screen
22:04:22 -!- EgoBot has quit (Excess Flood).
22:04:33 -!- EgoBot has joined.
22:05:02 <oerjan> !cat Let's do it the usual way.
22:05:04 <Rent-A-Tard> !bf ++++++++++++[>+++++++>+++++++++>+++>+++++++++<<<<-]>.>----.---.>----.>++++.<<----.>>+++..++++.--------.+++.<<+++.>[>>++>+<<<-]>>------.>.++.<<<<+.>>-----.++.>>.
22:05:50 -!- bsmnt_bot has quit (Excess Flood).
22:05:52 -!- bsmnt_bot has joined.
22:07:20 <oerjan> You should also do a test with a sleep in it.
22:08:42 <oerjan> I don't know the Python syntax for sleep. Or the unit.
22:09:06 -!- bsmnt_bot has quit (Client Quit).
22:09:08 -!- bsmnt_bot has joined.
22:09:11 -!- bsmnt_bot has quit (Excess Flood).
22:09:13 -!- bsmnt_bot has joined.
22:10:14 <bsmntbombdood> ~exec for i in xrange(1000): sys.stderr("a\n" * i)
22:10:35 -!- ShadowHntr has joined.
22:11:35 <bsmntbombdood> ~exec for i in xrange(1000): sys.stderr(("%s\n" % i) * i)
22:12:42 <oerjan> The lazyk setup is broken.
22:14:07 <oerjan> My timing suggestion was to find out how quickly you can spam continuously :)
22:14:14 * pikhq recommends Rent-A-Tard play with BFM. . .
22:14:29 <pikhq> It's a very good method for making complex Brainfuck programs. ;)
22:14:42 <pikhq> http://pikhq.nonlogic.org/bfm.tar.bz2
22:14:49 <pikhq> (end shameless plug)
22:14:57 <calamari> oerjan: it's hard to know for sure.. sometimes messages get delayed then you get a flood
22:15:14 -!- bsmnt_bot has quit (Remote closed the connection).
22:15:17 -!- bsmnt_bot has joined.
22:15:54 <bsmntbombdood> ~exec for i in xrange(1000): self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i )
22:15:55 -!- bsmnt_bot has quit (Excess Flood).
22:15:57 -!- bsmnt_bot has joined.
22:16:03 <bsmntbombdood> ~exec for i in xrange(1000): self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:16:03 -!- bsmnt_bot has quit (Excess Flood).
22:16:06 -!- bsmnt_bot has joined.
22:16:28 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(.1); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:16:35 -!- bsmnt_bot has quit (Excess Flood).
22:16:37 -!- bsmnt_bot has joined.
22:16:45 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(.2); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:16:57 -!- bsmnt_bot has quit (Excess Flood).
22:17:00 -!- bsmnt_bot has joined.
22:17:04 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(.3); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:17:24 -!- bsmnt_bot has quit (Excess Flood).
22:17:26 -!- bsmnt_bot has joined.
22:17:37 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(.4); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:18:05 -!- bsmnt_bot has quit (Excess Flood).
22:18:08 -!- bsmnt_bot has joined.
22:18:31 <bsmntbombdood> aaw, it was looking like a nice additive sequence there
22:18:37 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(.5); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:19:05 <oerjan> Well it shouldn't be, after all _some_ sleep should allow it to continue indefinitely.
22:19:14 -!- bsmnt_bot has quit (Excess Flood).
22:19:17 -!- bsmnt_bot has joined.
22:19:29 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(.7); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:20:28 -!- bsmnt_bot has quit (Excess Flood).
22:20:30 -!- bsmnt_bot has joined.
22:20:38 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(.9); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:22:07 -!- bsmnt_bot has quit (Excess Flood).
22:22:10 -!- bsmnt_bot has joined.
22:22:12 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:22:26 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(1.1); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:24:34 -!- bsmnt_bot has quit (Excess Flood).
22:24:37 -!- bsmnt_bot has joined.
22:26:33 <bsmntbombdood> ~exec for i in xrange(1000): time.sleep(1.5); self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i)
22:27:35 <andreou> btw does python still have a lambda or was it removed?
22:31:32 <pikhq> Is Python still not a Lisp?
22:31:41 -!- bsmnt_bot has quit (Excess Flood).
22:31:44 -!- bsmnt_bot has joined.
22:33:37 <oerjan> (x and (y or True)) or z
22:37:41 -!- bsmnt_bot has quit.
22:37:43 -!- bsmnt_bot has joined.
22:38:42 <oerjan> [(lambda : y),(lambda : z)]((x and 1) or 2)-1)()
22:39:31 <oerjan> For extreme situations :)
22:40:42 <pikhq> !exec sys.stderr("Obey me!")
22:40:51 <pikhq> ~exec sys.stderr("Obey me!")
22:40:56 <pikhq> You know what I mean.
22:41:13 <pikhq> bsmntbombdood: And sys.stderr goes nowhere.
22:42:51 <oerjan> I forgot a (, what else?
22:42:58 <bsmntbombdood> oerjan: [(lambda : y),(lambda : z)][((x and 1) or 2) - 1]()
22:44:59 <oerjan> Not if you want it to short-circuit the y and z expressions.
22:46:39 <bsmntbombdood> I just switched my condition and did self.rate_limit = rate_limit or (lambda x : (x > 3 and min([(x-2)/10., 2])) or 0)
22:47:46 <oerjan> Yes, the sledgehammer is only needed if both branches can be false.
22:58:26 -!- Rent-A-Tard has quit (Read error: 131 (Connection reset by peer)).
23:00:47 -!- pmhaddad has joined.
23:01:26 -!- pmhaddad has left (?).
23:02:59 -!- wooby has joined.
23:25:23 <pikhq> YOU BORK THE PATTERN
23:26:10 * pikhq thinks of a way to get target-language specific implementations of macros in BFM. . .
23:26:41 <pikhq> My personal build targets C, Tcl, and Brainfuck.
23:26:54 <pikhq> (the interpreter just compiles to Tcl and executes that)
23:27:08 <pikhq> Well, that's not *entirely* true.
23:27:35 <pikhq> It compiles to a simplified BFM subset, which can be interpreted by a Tcl interpreter with the right procs in place.
23:30:57 <oerjan> A very fishy language.
23:32:50 <pikhq> Compile Homespring to BFM!
23:33:14 <pikhq> Or maybe just make a Brainfuck interpreter in Homespring.
23:33:29 <pikhq> (it has yet to be proven Turing complete)
23:34:01 <RodgerTheGreat> you'd have to build some tricky data structures to do it properly
23:34:23 <pikhq> But at least it's *possible*.
23:34:51 <pikhq> Implementing any Turing complete language in Homespring may very well be impossible.
23:34:53 <bsmntbombdood> I want a language that's more than turing complete
23:35:21 <oerjan> There are a few on the wiki.
23:35:37 <pikhq> bsmntbombdood: You want an oracle machine?
23:35:48 <RodgerTheGreat> the only problem is that they tend to lack implementation
23:36:30 <pikhq> It's like a Turing machine, except it's got an oracle for telling the Turing machine the solution to a certain set of problems that are unsolvable by a Turing machine.
23:36:36 <bsmntbombdood> It would be possible to simulate it though, wouldn't it?
23:36:59 <pikhq> For example, consider a Turing machine with a halting oracle.
23:37:17 <pikhq> This oracle could tell the machine if a certain program halts.
23:37:23 <pikhq> The machine itself could *not*.
23:37:46 <bsmntbombdood> can an x86 proccesor be implemented in a turing machine?
23:38:18 <oerjan> There are some uses of oracles in complexity theory where you put an oracle on a machine _weaker_ than Turing-complete. Then the result may still be implementable.
23:38:18 <pikhq> bsmntbombdood: Of course. An x86 processor is, after all, Turing complete (with the exception of addressing restrictions).
23:38:40 <bsmntbombdood> pikhq: An oracle machine is turing complete, but a turing machine can't implement it
23:39:11 <pikhq> bsmntbombdood: An oracle machine is super-Turing.
23:39:25 <bsmntbombdood> Well I was thinking that a normal proccesor might be more than turing complete
23:39:29 <pikhq> I'm listing the largest computational class that each machine is a member of.
23:39:52 <pikhq> A normal CPU's capabilities are a *subset* of the Turing machine's.
23:39:57 <RodgerTheGreat> bsmntbombdood: you may not completely understand the meaning of turing-completeness
23:40:27 <pikhq> bsmntbombdood: A turing-complete system can calculate anything that can be described as a deterministic algorithm.
23:40:27 <RodgerTheGreat> I'd advise you to read up on it- the wiki article on the subject is fascinating reading
23:41:57 <bsmntbombdood> pikhq: Then I understand the meaning of turing completeness
23:42:04 <RodgerTheGreat> this is what Alan turing had to say about oracles- "Let us suppose that we are supplied with some unspecified means of solving number-theoretic problems; a kind of oracle as it were. We shall not go any further into the nature of this oracle apart from saying that it cannot be a machine" (Undecidable p. 167, a reprint of Turing's paper Systems of Logic Based On Ordinals)."
23:42:42 <pikhq> RodgerTheGreat: His thoughts were not entirely correct.
23:42:55 <pikhq> A quantum oracle could, in fact, be a machine.
23:43:04 <pikhq> The same for a real-RNG oracle.
23:43:25 <RodgerTheGreat> quantum operations have not been *proven* to be non-deterministic.
23:43:34 <oerjan> A quantum computer is not super-Turing as far as we know.
23:43:46 <oerjan> Non-determinism is not enough for super-Turing.
23:43:59 <pikhq> But my point for real-RNG oracles?
23:44:11 <RodgerTheGreat> oerjan: but it is at the very least a requisite for creating an oracle
23:44:51 <pikhq> Near as I can fathom, real RNGs could not be created via a deterministic algorithm.
23:45:23 <oerjan> Oracles are in fact deterministic by the usual definition: They always give the same answer to the same question.
23:45:33 <RodgerTheGreat> which would further imply that they could not be created via a deterministic system
23:46:55 <RodgerTheGreat> if a machine always gave the same answer to the same question, then it would be deterministic in the sense that it's behavior was governed by a predictable system
23:47:40 <pikhq> oerjan: A RNG oracle wouldn't be deterministic.
23:48:03 <pikhq> It wouldn't always give the same answer to the question "What is a random number I could use?".
23:48:50 <oerjan> However, a RNG oracle would not increase a Turing machine's ability to solve problems with well-definite answers.
23:49:26 <RodgerTheGreat> that's because it's an entirely different kind of device
23:49:32 <pikhq> It wouldn't increase the ability to solve *deterministic* algorithms, but it would give the ability to solve some *nondeterministic* algorithms.
23:49:43 <oerjan> Because a Turing machine always has the option of calculating _all_ possible paths.
23:50:17 <pikhq> Since it can do something a plain ol' Turing machine can't, it is, by definition, super-Turing.
23:51:00 <RodgerTheGreat> I'm just pointing out that random oracles and halting oracles are seperate types of devices
23:51:39 <pikhq> RodgerTheGreat: They differ in that one could be built, and another could *not*.
23:51:39 <RodgerTheGreat> a random oracle won't help you solve the halting problem, but it *can* do something a turing machine can't
23:51:50 <bsmntbombdood> Can't you solve the halting problem by just running it?
23:52:11 <pikhq> bsmntbombdood: The halting problem has been proven to not be solvable by a Turing machine.
23:52:24 <oerjan> No, because the Turing machine needs to halt with an answer, even if the program doesn't.
23:52:40 <RodgerTheGreat> you can solve the halting problem in limited instances. You cannot solve the halting problem for a nontrivial program in a nontrivial amount of time
23:53:27 <pikhq> In addition, a Turing machine with a halting oracle can't solve the halting problem for any arbitrary algorithm running on itself.
23:54:12 <bsmntbombdood> in a pure functional language, can the compiler easily (not NP complete) determine the inverse of a function?
23:54:30 <RodgerTheGreat> that would require a more powerful oracle, resulting in an infinite regression- rather like the homonculus theory of consciousness.
23:55:18 <oerjan> bsmntbombdood: Not easily, no.
23:55:27 <RodgerTheGreat> an oracle can't solve the halting problem for a machine incorporating itself, but it may be able to solve the halting problem for another oracle.
23:55:56 <oerjan> And the pure functionality hasn't really got anything to do with it.
23:56:13 <pikhq> RodgerTheGreat: Exactly.
23:56:14 <oerjan> Apart from the function you are taking inverses of, I presume.
23:56:18 <bsmntbombdood> it would be impossible to do in a function with side effects
23:57:47 <pikhq> I can come up with an example of a pure function that is uninvertable at all. ;)
23:57:56 <oerjan> Are we assuming that the function is one-to-one? If not then I believe finding an inverse of a polynomial-time function is in fact at least NP-complete.
23:58:01 <pikhq> mod10(x) returns x mod 10.
23:58:31 <oerjan> If it is one-to-one then it may be somewhat simpler than NP-complete, I believe that is an unsolved problem.
23:58:42 <pikhq> bsmntbombdood: I'm not thinking ATM. . .
23:58:49 <bsmntbombdood> The inverse could be a set for not one to one functions though
23:59:27 <oerjan> I came upon that issue on Wikipedia when investigating Sudoku. (In a sense the article there is subtly wrong)
00:00:08 <oerjan> Well, showing that an inverse _exists_ for a point is precisely NP-complete.
00:00:25 <oerjan> Finding _all_ inverses may be more than NP-complete.
00:01:36 <oerjan> (All this assuming that the original function is polynomial-time, otherwise you would need N-something else.
00:02:53 <pikhq> bsmntbombdood: Sure, if the function is invertable.
00:03:51 <bsmntbombdood> assuming you can return a set for non-one to one functions
00:04:02 <oerjan> Of course not. There are _constant_ functions!
00:04:54 <oerjan> OK then. That is the inverse as a relation.
00:04:54 <bsmntbombdood> use minimal executation or whatever haskell calls it
00:04:59 <pikhq> The inverse would, obviously, not be a function. ;)
00:05:40 <oerjan> Lazy. It won't help in the least. As I say, determining whether the inverse set is non-empty _is_ NP-complete if the original function is in P.
00:06:29 <oerjan> I mean, for general P functions. Not every single one, of course.
00:07:32 <oerjan> Hmm, there is a subtlety there.
00:08:06 <oerjan> It could in fact be worse, if the inverses may be much larger than the function value.
00:08:16 -!- wooby has quit.
00:10:31 <oerjan> What you are asking in essence boils down to whether purely functional languages can easily solve NP-complete problems (the answer being no).
00:11:50 <oerjan> On the other hand, a purely functional language will allow you to write easily down an expression for the inverse. It's just not going to execute very fast.
00:14:12 <oerjan> You might want to read the recent Good Math/Bad Math blog thread about P/NP. The issue of defining NP by checking answers is very relevant to your question.
00:18:48 <oerjan> But solving boolean equations is NP-complete.
00:20:19 <oerjan> Equations using True, False, and, or, not.
00:22:01 <oerjan> Put it another way: When you "simplify" algebraic equations, in numbers or booleans, the expressions can blow up exponentially in size.
00:23:26 <oerjan> Just try to write out (a+1)(b+1)(c+1)...(z+1) using the distributive law...
00:24:20 <oerjan> If they didn't, then you would have an easy proof of P=NP.
00:25:40 <bsmntbombdood> Next I get asked to solve an equation in math class i'll say that it's NP and NP is too hard
00:26:40 <oerjan> In fact if you were to ask for _integer_ solutions to your equations then it would not be just NP, but Turing-complete.
00:30:39 <bsmntbombdood> I should write some kind of interpreter for my calculator
00:44:53 <andreou> all the useless things we do with our time
00:47:29 <oerjan> Check out www.haskell.org
00:47:55 <oerjan> I see they have changed their main page style since last I was there...
00:48:42 * bsmntbombdood reads http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf
00:49:11 <andreou> mercury caused many revamps last year
00:50:01 <oerjan> mercury? on the haskell wiki?
00:50:20 -!- ihope has quit (Read error: 110 (Connection timed out)).
00:51:35 <oerjan> It is, although it has some bad effects such as it being very hard to reason about memory use.
00:53:31 <oerjan> Are we talking astronomy or astrology?
00:54:57 <oerjan> Now that clears it up.
00:55:25 <andreou> astrology, of course, couldn't be any other way in #esoteric
00:55:47 <oerjan> Well it could be mythology too.
00:56:28 <andreou> i have hard facts & proofs
00:57:11 <oerjan> And, more importantly and what confused me initially, it could have been the programming language Mercury, a logic language with much inheritance from Haskell.
00:57:39 <andreou> btw has anyone managed to get goedel to work? or, at least, steal its gramar and re-implement it?
00:57:42 <oerjan> There are no coincidences :)
00:58:35 <oerjan> Haven't looked at that.
00:59:53 <oerjan> You can add parentheses all you want :)
01:00:11 <oerjan> But I tend to get rid of as many as possible, using $
01:00:51 <oerjan> You will note that math does the same for sin and cos.
01:01:26 <oerjan> Well, sqrt $ 4*2 => 2.8...
01:02:31 <oerjan> When you want to apply a function to something complicated, you can use $ instead of spaces.
01:02:45 <bsmntbombdood> does anything bind more tightly than function application?
01:03:06 -!- bsmntbombdood has left (?).
01:03:09 -!- bsmntbombdood has joined.
01:03:19 <oerjan> The @ pattern match operator, which is considered a bug by some.
01:04:07 <oerjan> And of course brackets.
01:04:42 <oerjan> http://haskell.org/onlinereport/exps.html
01:05:24 <oerjan> Actually the @ doesn't really occur in expressions, but patterns. So for expressions, no.
01:07:11 <oerjan> Although f1(f2, x) in Haskell is something different.
01:08:18 <oerjan> There are functions curry and uncurry to convert between f1 x y and f1 (x,y)
01:10:12 <oerjan> Actually there are various things that bind more tightly than application but they all involve brackets somehow.
01:23:49 -!- andreou has quit ("-").
01:24:12 -!- ihope has joined.
01:26:06 <ihope> That reminds me of some electronics thing I wanted to do for some reason.
01:27:10 <oerjan> Pretty, but a bit buggy if the list has only negative elements.
01:27:30 <oklopol> isn't there something like that?
01:28:55 <oklopol> seems i don't remember everything anymore :\
01:29:23 <oklopol> but, wouldn't be buggy that way
01:29:42 <oerjan> Except for an empty list. Can't have everything :)
01:31:02 <oerjan> foldr1 would crash, yes.
01:31:29 <oklopol> i don't know haskell syntax well enought to do an if :)
01:31:49 <oklopol> but i think i remember all the functions there are
01:33:24 -!- wooby has joined.
01:33:56 <oerjan> Of course, maximum is itself a builtin, using foldr1.
01:44:26 <oerjan> Haskell's indentation is very flexible, but it interacts with other tokens in such a way that emacs would need a complete parser to understand it.
01:47:30 <pikhq> Someone write a complete parser in Elisp, then.
01:47:42 <pikhq> The indentation system is flexible enough to handle it.
01:51:30 -!- andreou has joined.
01:52:48 <oerjan> $ is best for avoid many nested parentheses (although I use it a bit more than that). For example instead of f1 (f2 1 (f3 y z (f4 x))) you can have f1 $ f2 1 $ f3 y z $ f4 x
01:53:59 <oerjan> When you want to chain many functions.
01:54:11 <oerjan> I am pretty sure it is.
01:54:47 <ihope> Seems to be valid, yes.
01:56:43 <bsmntbombdood> While reading this tutorial, i'm crying at all the ineficientness
01:58:15 <oerjan> What's inefficient about that?
01:59:20 <oerjan> Note that if it is tail recursive the recursion may be optimized away.
02:01:04 <oerjan> I believe the ghc compiler optimizes away certain kinds of immediately used conses.
02:03:55 <bsmntbombdood> my_filter f (x:xs) = if f x then x:my_filter f xs else my_filter f xs
02:06:48 <ihope> filter_reverse f xs = filter_reverse' f xs rs; filter_reverse' _ [] rs = rs; filter_reverse' f (x:xs) rs | f x = filter_reverse' f xs (x:rs); filter_reverse' f (x:xs) rs | otherwise = filter_reverse' f xs rs
02:08:46 -!- digital_me has quit (Read error: 104 (Connection reset by peer)).
02:08:48 <oklopol> filter_reverse f xs = filter_reverse' f xs []; should be the beginning?
02:10:03 <oklopol> someone please explain if not :\
02:10:19 <oerjan> You don't need to repeat the function before a second guard.
02:10:29 <oerjan> oklopol: I think so too.
02:10:53 <ihope> oklopol: yes, it should be.
02:11:13 <ihope> Or just say rs = [] :-)
02:13:32 -!- tgwizard has quit (Remote closed the connection).
02:27:12 <ihope> Now, bsmntbombdood, I take it there's a reason you haven't cloaked your bot.
02:27:34 <ihope> !exec self.raw("JOIN #tapthru")
02:27:43 <ihope> ~exec self.raw("JOIN #tapthru")
02:33:12 <oerjan> ~exec self.disconnect()
02:33:57 <oerjan> ~exec self.raw("PART #tapthru")
02:35:22 <oerjan> ~exec self.raw("QUIT :Resetting")
02:35:23 -!- bsmnt_bot has quit ("Resetting").
02:35:26 -!- bsmnt_bot has joined.
02:37:46 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)).
02:38:07 <ihope> ~exec self.raw("QUIT :Resetting")
02:38:07 -!- bsmnt_bot has quit (Client Quit).
02:38:10 -!- bsmnt_bot has joined.
02:39:10 <oerjan> Except for some reason it gave a quit message different from what you wrote...
02:40:11 <pikhq> ~exec self.raw("QUIT :Oooh! Oooh!")
02:40:12 -!- bsmnt_bot has quit (Client Quit).
02:40:14 -!- bsmnt_bot has joined.
02:40:31 <pikhq> Someone pull up the RFC.
02:40:47 <oerjan> ~exec self.raw("QUIT :Now what?")
02:40:47 -!- bsmnt_bot has quit (Client Quit).
02:40:49 -!- bsmnt_bot has joined.
02:41:08 <pikhq> ~exec self.raw("QUIT")
02:41:09 -!- bsmnt_bot has quit (Client Quit).
02:41:11 -!- bsmnt_bot has joined.
02:41:23 <pikhq> ~exec self.raw("JOIN #gnu")
02:41:28 <oerjan> ihope used exactly the same command as I the first time, with different result.
02:41:39 <pikhq> ~exec self.raw("PRIVMSG #gnu :Foo.")
02:41:41 <oerjan> And now no messages are passed on.
02:41:52 <pikhq> ~exec self.raw("PART #gnu")
02:42:02 <pikhq> Can you say "bot abuse"?
02:42:08 <oerjan> ~exec self.do_exec = None
02:42:27 <oerjan> ~exec self.raw("QUIT :Now what?")
02:42:28 -!- bsmnt_bot has quit (Client Quit).
02:42:30 -!- bsmnt_bot has joined.
02:42:43 <ihope> ~exec self.exec_execer = 3
02:42:57 <oerjan> ~exec self.raw("QUIT :Now what?")
02:43:11 <ihope> ~exec This is my apple.
02:43:50 <pikhq> ~exec self.raw("PRIVMSG #esoteric :Goodbye.")
02:44:11 <pikhq> !exec self.exec_execer = self
02:44:18 <pikhq> ~exec self.exec_execer = self
02:44:19 -!- Plouj- has joined.
02:44:27 <ihope> Wow, you made Plouj- join.
02:44:30 <oerjan> We have saved the bot from the evil villains :)
02:44:49 <pikhq> You've also killed all legitimate uses.
02:45:19 <ihope> What's the command to make it quit, again?
02:45:35 <ihope> ~pexec self.raw("QUIT")
02:45:44 <Plouj-> you guys must be really old, eh
02:45:56 <ihope> If 14 years old is really old...
02:46:02 <pikhq> I fear you've *really* destroyed it.
02:46:02 <oerjan> I believe ~exec is the only one that we could use.
02:46:25 <pikhq> bsmntbombdood: You might want to restart the bot.
02:46:35 <oerjan> That was the idea. Otherwise one of us would just have been tempted to do something evil again.
02:46:59 <oerjan> We had to kill the bot to save it.
02:57:10 <oklopol> DIE BOT DIE LIKE YER MOTHER!!!
02:58:04 <andreou> #esoteric should sponsor TV ads to keep kids away from programming
02:58:20 <pikhq> You will become like us!
02:58:28 <pikhq> andreou: Just one issue: some *want* to be just like us.
02:58:51 * pikhq was one of those kids
02:59:09 <andreou> i think most of the lurkers here are
02:59:23 <andreou> coding at night, psychotherapy at morning
03:03:58 -!- bsmnt_bot has quit (Remote closed the connection).
03:04:00 -!- bsmnt_bot has joined.
03:04:16 <pikhq> bsmntbombdood: I didn't!
03:05:55 <oerjan> Actually it was ihope, i just tempted him to it.
03:13:25 <oerjan> ~exec sys.stdout(os.list_dir("/bot"))
03:13:57 <oerjan> ~exec sys.stdout(os.listdir("/bot"))
03:13:58 <bsmnt_bot> ['betterbot.py', 'test.pickle', 'start.sh', 'better.sh', 'ircbot.py']
03:14:05 -!- andreou has quit.
03:14:09 -!- andreou has joined.
03:14:15 -!- andreou has quit (Remote closed the connection).
03:14:47 -!- ShadowHntr has joined.
03:17:37 <oerjan> ~exec open("/bot/ircbot.py", "w"); self.raw("QUIT")
03:18:05 <bsmntbombdood> oerjan: obviously, you don't have write permission to the source
03:19:28 <pikhq> ~exec open("/foo", "w")
03:19:36 <pikhq> But can you write anywhere?
03:19:44 <pikhq> . . . Oh, right. It's chrooted, isn't it?
03:19:53 <pikhq> ~exec self.raw("QUIT")
03:19:54 -!- bsmnt_bot has quit.
03:19:59 -!- bsmnt_bot has joined.
03:20:21 <oerjan> You didn't know about that?
03:20:44 <pikhq> ~exec self.raw("QUIT :I win!")
03:20:45 -!- bsmnt_bot has quit (Client Quit).
03:20:47 -!- bsmnt_bot has joined.
03:22:05 <bsmntbombdood> pikhq: Yeah, like i'm going to give you access the whole filesystem ;)
03:22:52 <pikhq> bsmntbombdood: Well, there *is* an exploit for breaking out of chroots.
03:24:00 <pikhq> ~exec os.list_dir("./")
03:24:16 <pikhq> ~exec sys.stdout(os.listdir("./"))
03:24:16 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr']
03:24:31 <pikhq> ~exec os.changedir("..")
03:24:40 <pikhq> ~exec sys.stdout(os.listdir("./"))
03:24:41 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr']
03:24:51 <pikhq> Thought that was it. Damn it, must have forgotten.
03:27:20 <bsmntbombdood> But whoever tells me the contents of /home/bsmntbombdood/proof.txt gets a prize
03:29:03 <pikhq> ~exec fid=open("/home/bsmntbombdood/proof.txt", "r")
03:29:31 <pikhq> bsmntbombdood: Hey, it was worth a try.
03:29:31 <bsmntbombdood> <bsmnt_bot> IOError: [Errno 2] No such file or directory: '/home/bsmntbombdood/proof.txt'
03:29:54 <pikhq> I can tell you the contents of ~/proof.txt, then.
03:31:30 -!- Plouj- has left (?).
03:37:57 <oerjan> ~exec (lambda f : f(f)) (lambda f : f(f))
03:37:58 -!- bsmnt_bot has quit (Excess Flood).
03:38:01 -!- bsmnt_bot has joined.
03:38:26 <oerjan> It defines a name for an expression.
03:39:02 <bsmntbombdood> not executing has a different effect than executing it
03:40:33 <oerjan> In fact it doesn't. It only defines the names, their expressions are not used unless the names are.
03:42:19 <pikhq> ~exec sys.stdin("This is just wrong.")
03:42:47 <oerjan> On the other hand the case statement fits your objection better.
03:43:07 <bsmntbombdood> hmmm, I should provide an channel interface to sys.stdin
03:43:09 * pikhq wonders if it's possible to write to stdin in any language. . .
03:44:29 <bsmntbombdood> it could be in a language where there's only one IO stream
03:44:35 <oerjan> Well, in Kayak and Lazy K, stdin turns into stdout according to how the program changes it.
03:44:49 * pikhq also wonders if that language is called INTERCAL
03:45:19 -!- ihope has quit (Connection timed out).
03:45:19 <pikhq> read(stdout);write(stdin, "whoo"); See? Evil.
03:45:20 <oerjan> Apart from the I/O commands being READ OUT and WRITE IN...
03:54:51 -!- zantrua has joined.
03:56:13 -!- zantrua has quit (Read error: 104 (Connection reset by peer)).
03:57:35 -!- zantrua has joined.
03:59:37 -!- zantrua has quit (Read error: 131 (Connection reset by peer)).
04:02:15 -!- bsmnt_bot has quit (Remote closed the connection).
04:02:18 -!- bsmnt_bot has joined.
04:04:07 -!- bsmnt_bot has quit (Excess Flood).
04:04:10 -!- bsmnt_bot has joined.
04:06:13 -!- bsmnt_bot has quit (Excess Flood).
04:06:20 -!- bsmnt_bot has joined.
04:06:49 -!- bsmnt_bot has quit (Excess Flood).
04:06:54 -!- bsmnt_bot has joined.
04:10:10 -!- bsmnt_bot has quit (Excess Flood).
04:10:15 -!- bsmnt_bot has joined.
04:10:33 -!- bsmnt_bot has quit (Excess Flood).
04:10:39 -!- bsmnt_bot has joined.
04:10:46 -!- bsmnt_bot has quit (Client Quit).
04:10:49 -!- bsmnt_bot has joined.
04:10:57 -!- bsmnt_bot has quit (Excess Flood).
04:11:05 -!- bsmnt_bot has joined.
04:11:55 <pikhq> ~exec sys.stdout("QUIT :Excess Flood")
04:12:20 <pikhq> ~exec self.raw("QUIT :Excess Flood")
04:12:20 -!- bsmnt_bot has quit (Client Quit).
04:12:22 <pikhq> That's what I meant.
04:12:24 -!- bsmnt_bot has joined.
04:12:30 -!- bsmnt_bot has quit (Excess Flood).
04:12:39 -!- bsmnt_bot has joined.
04:12:50 -!- bsmnt_bot has quit (Excess Flood).
04:12:59 -!- bsmnt_bot has joined.
04:13:43 -!- pikhq has quit ("leaving").
04:17:13 -!- calamari has quit ("Leaving").
04:28:32 -!- bsmnt_bot has quit (Excess Flood).
04:28:40 -!- bsmnt_bot has joined.
04:29:48 -!- bsmnt_bot has quit (Remote closed the connection).
04:29:52 -!- bsmnt_bot has joined.
04:30:23 -!- bsmnt_bot has quit (Excess Flood).
04:30:29 -!- bsmnt_bot has joined.
04:31:30 <oerjan> Good grief, "HNOP. Ashley Yakeley updated the status of HNOP, the Haskell library for doing nothing."
04:32:38 <oerjan> "It has recently been split into two Cabal packages: 'nop', a library of no-op services, and 'hnop', a program that uses nop to do nothing."
04:32:43 -!- bsmnt_bot has quit (Excess Flood).
04:32:46 -!- bsmnt_bot has joined.
04:33:15 <oerjan> And strangely enough it is _not_ merely a joke.
04:34:25 -!- bsmnt_bot has quit (Remote closed the connection).
04:34:27 -!- bsmnt_bot has joined.
04:34:34 -!- bsmnt_bot has quit (Remote closed the connection).
04:34:37 -!- bsmnt_bot has joined.
04:36:47 -!- bsmnt_bot has quit (Excess Flood).
04:37:01 -!- bsmnt_bot has joined.
04:37:19 -!- bsmnt_bot has quit (Excess Flood).
04:37:23 -!- bsmnt_bot has joined.
04:37:43 -!- bsmnt_bot has quit (Excess Flood).
04:37:51 -!- bsmnt_bot has joined.
04:38:27 -!- bsmnt_bot has quit (Remote closed the connection).
04:38:32 -!- bsmnt_bot has joined.
04:38:38 -!- bsmnt_bot has quit (Remote closed the connection).
04:38:44 -!- bsmnt_bot has joined.
04:39:23 -!- bsmnt_bot has quit (Remote closed the connection).
04:39:29 -!- bsmnt_bot has joined.
04:40:20 -!- bsmnt_bot has quit (Remote closed the connection).
04:40:25 -!- bsmnt_bot has joined.
04:40:46 -!- bsmnt_bot has quit (Remote closed the connection).
04:40:51 -!- bsmnt_bot has joined.
04:41:20 -!- oerjan has quit ("leaving").
04:42:05 <oklopol> maybe i'll make a language for doing nothing
04:42:45 -!- bsmnt_bot has quit (Remote closed the connection).
04:42:48 -!- bsmnt_bot has joined.
04:46:53 -!- bsmnt_bot has quit (Excess Flood).
04:46:58 -!- bsmnt_bot has joined.
04:47:08 -!- bsmnt_bot has left (?).
04:48:07 -!- bsmnt_bot has joined.
04:49:41 -!- bsmnt_bot has quit (Remote closed the connection).
04:49:48 -!- bsmnt_bot has joined.
04:50:07 -!- bsmnt_bot has quit (Remote closed the connection).
04:50:10 -!- bsmnt_bot has joined.
04:54:24 -!- bsmnt_bot has quit (Excess Flood).
04:54:33 -!- bsmnt_bot has joined.
04:54:37 -!- bsmnt_bot has quit (Remote closed the connection).
04:54:44 -!- bsmnt_bot has joined.
04:54:47 -!- bsmnt_bot has quit (Remote closed the connection).
04:54:53 -!- bsmnt_bot has joined.
04:55:52 -!- bsmnt_bot has quit (Remote closed the connection).
04:55:58 -!- bsmnt_bot has joined.
04:56:13 -!- bsmnt_bot has quit (Remote closed the connection).
04:56:24 -!- bsmnt_bot has joined.
04:56:50 -!- bsmnt_bot has quit (Client Quit).
04:56:53 -!- bsmnt_bot has joined.
05:00:01 -!- bsmnt_bot has quit (Excess Flood).
05:00:05 -!- bsmnt_bot has joined.
05:06:26 -!- bsmnt_bot has quit.
05:06:30 -!- bsmnt_bot has joined.
05:06:40 -!- bsmnt_bot has quit (Excess Flood).
05:06:46 -!- bsmnt_bot has joined.
05:11:55 -!- bsmnt_bot has quit (Remote closed the connection).
05:15:10 -!- bsmnt_bot has joined.
05:18:33 -!- bsmnt_bot has quit (Remote closed the connection).
05:18:35 -!- bsmnt_bot has joined.
05:19:34 -!- bsmnt_bot has quit (Remote closed the connection).
05:19:36 -!- bsmnt_bot has joined.
05:20:01 -!- bsmnt_bot has quit (Remote closed the connection).
05:20:53 -!- bsmnt_bot has joined.
05:21:26 -!- bsmnt_bot has quit (Remote closed the connection).
05:22:32 -!- bsmnt_bot has joined.
05:23:11 -!- bsmnt_bot has quit (Remote closed the connection).
05:23:13 -!- bsmnt_bot has joined.
05:26:39 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
05:26:42 -!- bsmnt_bot has joined.
05:27:30 -!- bsmnt_bot has quit (Remote closed the connection).
05:27:33 -!- bsmnt_bot has joined.
05:29:29 -!- bsmnt_bot has quit (Remote closed the connection).
05:29:31 -!- bsmnt_bot has joined.
05:30:28 -!- bsmnt_bot has quit (Remote closed the connection).
05:30:31 -!- bsmnt_bot has joined.
05:31:40 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
05:31:43 -!- bsmnt_bot has joined.
06:15:42 -!- bsmnt_bot has quit (Remote closed the connection).
06:16:07 -!- bsmnt_bot has joined.
06:16:19 -!- bsmnt_bot has quit (Remote closed the connection).
06:16:50 -!- bsmnt_bot has joined.
06:17:51 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
06:17:54 -!- bsmnt_bot has joined.
06:18:02 -!- bsmnt_bot has quit (Remote closed the connection).
06:18:04 -!- bsmnt_bot has joined.
06:18:11 -!- bsmnt_bot has quit (Remote closed the connection).
06:18:20 -!- bsmnt_bot has joined.
06:19:28 -!- bsmnt_bot has quit (Remote closed the connection).
06:19:43 -!- bsmnt_bot has joined.
06:19:44 <CakeProphet> it's always fun to imagine the semantics reducing to the most fundamental parts of the language.
06:21:58 <oklopol> This is great, my language is the nicest language I've ever seen for writing recursive data structures, but all you can do is nop :)
06:22:50 <oklopol> I guess the beautiful syntax and the nice way of structuring makes up for the fact you can't really do anything?
06:23:20 * CakeProphet is trying to find a clever languagge joke that won't offend anyone.
06:24:28 <oklopol> I'm not making a joke language.
06:25:17 <oklopol> This might actually be a very good language for teaching structures for example :)
06:25:49 <CakeProphet> a weird variation of lambda calculus might work for that.
06:26:09 <oklopol> I still haven't understood that language
06:27:02 <CakeProphet> but in general.... it's a very clear demonstration of how invidual basic parts can be grouped together to form abstracted procedures.
06:27:44 <CakeProphet> if you assign certain strings of lambdas a given name... and substitute the name instead of the functions whenever they arise
06:28:37 <CakeProphet> and continue doing that... you can quickly amass a logical stucture.
06:29:12 <CakeProphet> quick always seems to be the most powerful way to demonstrate abstraction.
06:31:36 <oklopol> hmm... what is the most complex thing written in lambda calculus?
06:56:10 -!- Sgeo has quit (Remote closed the connection).
07:24:27 -!- ShadowHntr has quit ("End of line.").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:53:25 -!- sebbu has joined.
10:49:46 -!- tgwizard has joined.
11:12:05 -!- jix has joined.
11:13:15 -!- jix has quit (Client Quit).
12:40:44 -!- jix has joined.
12:56:03 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
12:59:14 -!- jix has joined.
13:04:51 -!- andreou has joined.
13:48:56 -!- ihope has joined.
13:49:18 -!- ihope has quit (Client Quit).
14:10:02 -!- andreou has quit ("BitchX: faster than a speeding bullet, more powerful than a locomotive").
14:10:26 -!- andreou has joined.
15:53:04 -!- ihope has joined.
15:54:16 <ihope> ~exec self.raw("PRIVMSG #esoteric :uelauelaue")
15:57:15 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
16:24:40 <ihope> bsmnt_bot: exec self.raw("PRIVMSG #esoteric laueluaeleualeu")
16:52:45 <andreou> eh how do i find any ircops? /who -what?
17:21:57 -!- andreou has quit ("recycle").
17:33:26 -!- andreou has joined.
17:41:52 <ihope> Or something else. Lemme see...
17:43:15 <ihope> I guess /who *@freenode/staff*
17:44:02 <ihope> Then it's probably/who *freenode/staff*
17:45:04 <andreou> the latter is true, i found a few, but they're all idle :)
17:45:48 <ihope> notabot might not be.
18:03:39 -!- CakeProphet has quit ("haaaaaaaaaa").
18:28:37 -!- ShadowHntr has joined.
18:38:51 -!- digital_me has joined.
18:41:27 <ihope> bsmntbombdood: congrats, you just expressed the standard definition of an ordered pair in lambda calculus in Haskell notation.
18:53:11 <bsmntbombdood> and why doesn't my_map f list = cons (f (car list)) (my_map f (cdr list)) work?
19:20:55 <ihope> Lists would be completely different.
19:21:42 <ihope> A list would be represented as its own foldr function.
19:23:39 <ihope> cons x xs = \c e -> c x (xs c e)
19:24:09 <ihope> foldr c e xs = xs c e
19:24:40 -!- andreou has quit ("-").
19:25:16 <ihope> I think that's how lists are generally represented in lambda calculus.
19:25:22 <ihope> That's the typable way.
19:26:05 <ihope> And by typable way, I mean using Haskell's type system.
19:27:06 <ihope> Either the Hindley-Milner type system or the Damas-Milner type system. Both different names for the same thing, I think.
19:29:53 -!- CakeProphet has joined.
20:01:37 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
20:04:13 <SimonRC> I accidently discovered a simple way of turing algebraic datatypes into collections of lambda calculus functions.
20:04:37 <SimonRC> Each value of the type takes one function per constructor.
20:05:31 <SimonRC> A constructor calls one of its arguments with the containted data and ignores the other arguments.
20:05:52 <SimonRC> e.g. a list datum takes two arguments.
20:06:46 <SimonRC> The first is called for a cons, and is passed the car and cdr of the list. The second is called for a nil and takes no arguments.
20:07:18 <SimonRC> cons a b = (\x y -> x a b)
20:55:14 -!- Sgeo has joined.
21:34:11 -!- andreou has joined.
21:40:16 -!- jix__ has joined.
21:43:21 -!- jix__ has changed nick to jix.
21:57:56 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:02:09 -!- sebbu has quit (Read error: 110 (Connection timed out)).
22:31:36 <ShadowHntr> i'd much rather do that in FORTRAN... ;)
22:33:46 -!- wooby has quit.
22:36:30 <CakeProphet> Is this the proper regex pattern for an ORK class definition?
22:36:32 <CakeProphet> re.compile(r"there is such a thing as an? (?P<name>.*?)\.? *$(?P<body>(.*?$)*)", re.MULTILINE|re.IGNORECASE)
22:37:44 <CakeProphet> re.compile(r"there is such an? (?P<metaclass>.*?) as an? (?P<name>.*?)\:? *$(?P<body>(.*?$)*)", re.MULTILINE|re.IGNORECASE)
22:37:58 <CakeProphet> I forgot the first part ends with a colon... and that I'm including metaclasses :D
22:53:24 -!- ihope has joined.
22:59:14 <ihope> Well, almost, anyway.
22:59:28 <ihope> It's just a little bit off
22:59:46 <ihope> Now, care to tell me just what it is that looks about right?
23:00:17 <CakeProphet> "there is such an? (?P<metaclass>.*?) as an? (?P<name>.*?)\:? *$(?P<body>(.*?$)*)" with multiline and ignorecase turned on.
23:02:42 * CakeProphet is written an ORK interpreter... and then adding some crap to it to create the Sophia dialect.
23:04:32 <CakeProphet> I meant "is writing"... but that sounds nifty.
23:04:50 -!- wooby has joined.
23:05:08 <CakeProphet> I mean also include inheritance... but maybe not directly.
23:05:48 <CakeProphet> or it could just be "There is such a <metaclass> as a <class> which is a <superclass>" which doesn't quite sound as ORKY as I'd like it to.
23:06:06 <CakeProphet> ORK is verbose in a terse way... that's getting a little superfluous. ;)
23:07:23 -!- andreou has quit ("recycling").
23:10:57 <ihope> Superfluously verbose terseness?
23:12:31 <CakeProphet> each statement is nice and direct... but overly verbose too.
23:12:50 <CakeProphet> with the inheritance add-on I just proposed... it would sound less to the point
23:13:31 -!- andreou has joined.
23:14:26 <ihope> Can you put that in words less than four letters long?
23:15:21 <CakeProphet> nah... it's not length that's the problem.
23:15:45 <CakeProphet> There is such a thing as a master of all beings which is an apple
23:16:04 <CakeProphet> there is such a thing as a master of all beings
23:19:41 <CakeProphet> There is such a thing as a master of all beings
23:19:50 <CakeProphet> a master of all beings is very much like an apple
23:24:56 <andreou> can anyone get ftp://ftp.cs.bris.ac.uk/pub/goedel/latest/goedel-src.tar.Z or is the FTP boinked?
23:26:34 <CakeProphet> hmm.. I always have a hard time understand how declarations slow down execution speed... they still need to be computed.
23:31:49 -!- andreou has quit ("new /netbsd, rejoice").
23:35:41 -!- pikhq has joined.
23:39:13 -!- andreou has joined.
23:44:05 -!- tgwizard has quit (Connection timed out).
00:25:29 <ihope> Let's just pretend we can compute the uncomputable.
00:27:12 <pikhq> Let's just pretend that 1+1=3.
00:27:49 <pikhq> Or, in the factory language. . .
00:28:02 -!- ihope has changed nick to i.
00:28:07 <andreou> hm can 3 be overloaded in scheme to be 2?
00:28:08 -!- i has changed nick to ihope.
00:28:55 -!- ihope has changed nick to \050.
00:29:05 -!- \050 has changed nick to ihope.
00:29:16 <andreou> there's always (define three 3) (define two three)... but that doesn't really matter.
00:29:54 -!- andreou has quit ("kernel time").
00:33:07 -!- andreou has joined.
00:38:25 <ihope> Joy is not the same as luck, and there is no such thing as joy luck.
00:40:06 <andreou> consider yourself lucky if you have joy
00:40:15 <andreou> and be joyful if you have (good) luck
00:42:23 * pikhq joins bsmntbombdood in singing "Happy Happy Joy Joy".
00:46:15 <bsmntbombdood> That's what the MIT scheme interpreter says on exit
00:47:31 <pikhq> Ren & Stimpy fans, I see.
00:49:37 -!- ihope has quit (Read error: 104 (Connection reset by peer)).
01:16:05 -!- digital_me_ has joined.
01:27:12 -!- digital_me has quit (Read error: 110 (Connection timed out)).
01:41:37 -!- calamari has joined.
01:46:17 * andreou happily plays around with chicken scheme until he's fit for bathing
02:00:13 -!- ihope has joined.
02:11:21 -!- pikhq has quit ("leaving").
02:33:32 -!- ihope has quit (Read error: 110 (Connection timed out)).
02:49:53 -!- ShadowHntr has quit (Connection timed out).
03:40:06 -!- andreou has quit ("\").
04:03:40 -!- wooby has quit.
04:38:23 -!- wooby has joined.
05:20:49 <CakeProphet> but because I'm going to be using it soon... with little to no experience.
05:21:41 <CakeProphet> see... the people I'm "working", who have little knowledge about programming, seem utterly sure that C++ is the best language to use for their purposes.
05:22:04 <CakeProphet> I told them the best language for me to use would be the one I'm most familiar with... in this case Python, or Lisp (vaguely) as an alternative.
05:23:58 <CakeProphet> and static typing is a drag if you've always used duck typing.
05:24:19 <oklopol> with c++ i best have the feeling i can do anything, you have such direct access to the memoryt
05:24:36 <oklopol> i have a python question for you
05:24:40 <CakeProphet> meh... I've never actually -needed- direct access to the memory.
05:25:53 <CakeProphet> hmmm.. where can I get the full specification of the standard C++ implementation?
05:26:00 <CakeProphet> I can't seem to find anything but paper books.
05:31:23 <CakeProphet> and I'm not really sure how to access the compiler from windows.
05:43:51 -!- oerjan has joined.
05:46:01 <oerjan> I noticed that the Haskell tutorial you said you were reading was not the most recent version.
05:46:32 <CakeProphet> One thing that irks me about C++ is I haven't figured out how it's consistent.
05:47:11 <CakeProphet> In Python everything is universally consistent... but so far I haven't found this to be true in C++
05:47:16 <CakeProphet> it might jsut be my lack of understanding though.
05:47:40 <oerjan> Has anyone claimed C++ is consistent?
05:48:27 <bsmntbombdood> static typing is sooo annoying in high level languages
05:48:36 <oerjan> On the other hand (and I say this having never tried to program in it) people are complaining about how its features have lots of unexpected interactions.
05:49:23 <oerjan> Apparently you have to learn a lot of rules for what not to do in combination.
05:50:07 <CakeProphet> it's hard to keep all straight when you're learning.
05:50:16 <oerjan> Ah yes. I suppose that is a reason why Scheme invented the hygienic macro system.
05:53:39 <CakeProphet> could you define a C++ macro that substitutes all newline characters with ;\n?
05:54:11 <CakeProphet> if you're like me... and lazy and don't feel like getting into the habit of using semicolons and have no real use for writing multiple statements in one line?
05:54:21 <CakeProphet> eh... it has flimsy textual substititions with #define
05:54:36 -!- ShadowHntr has joined.
05:55:10 <CakeProphet> but any step of laziness I can take would be great.
05:55:24 <bsmntbombdood> no one will be able to understand your code, and it will break
05:56:03 <oerjan> I think you mean "no real use for writing a statement over multiple lines"
05:56:33 <oerjan> He didn't say to leave out brackets.
05:57:57 <oerjan> He could simply follow a Python-like rule: either use brackets or put the sub-statement on the same line.
05:59:27 <oerjan> On the other hand I am not sure whether { ; is permitted in all cases.
06:00:04 <bsmntbombdood> I think "{ ;" will work, it's just a line with no stuff on it
06:00:14 <CakeProphet> hmm... I do kind of wonder how C++ actually works though...
06:00:31 <CakeProphet> the more I read into it the more it starts to sound like how I thought a programming langauge would work back before I learned how to program.
06:00:35 <oerjan> Will it work for switch statements?
06:01:45 <CakeProphet> Does C++ use the same evaluation as Python does for crap?
06:02:20 <CakeProphet> I remember someone finding it odd that "\n".join(SomeList) was a valid python expression.
06:02:28 <CakeProphet> and they were primarily a C/C++ programmer.
06:03:10 <CakeProphet> some I'm wondering if C++ uses variables and statements as I knew them
06:03:52 <fizzie> On the other hand, some Python programmers might find it odd that 4["foob"] is a valid C expression. :p
06:04:22 <CakeProphet> That's not too odd... it wouldn't work in Python, and I have no clue what it means...
06:04:38 <fizzie> It means the same as "foob"[4]", ie. 'b'.
06:04:40 <oerjan> It means exactly the same as "foob"[4]
06:05:02 <CakeProphet> no the syntax... but what the syntax produces.
06:05:06 <fizzie> It's because a[b] is sort-of defined as *(a+b), and + is commutative.
06:05:06 <oerjan> because p[q] = *(p+q), so commutative.
06:05:21 <oerjan> Darn speaking in each other's mouths
06:06:23 <CakeProphet> how does it differenciate if it's communative?
06:06:36 <oerjan> It's + that is commutative.
06:06:40 <bsmntbombdood> CakeProphet: Have you programmed in a language with pointers before?
06:06:50 <CakeProphet> would it just as easily been the "foob" slice of 4? (which obviously doesn't make any sense... but it could have been read that way)
06:07:23 <oerjan> "foob" in a sense means the position of the 'f'
06:07:37 <CakeProphet> I basically conceptualize them to be like mutable data structures in Python... they point to the exact same chunk of memory rather than a new "copy" of it.
06:07:53 <oerjan> so "foob"+4 means the position of, well, I suppose not 'b', that was an error.
06:08:15 <CakeProphet> Alright... then I know how to use pointers.
06:08:35 <CakeProphet> I just need to remember that everything is implicitly a copy of the original value unless I use a pointer.
06:08:38 <oerjan> Not in C. "foob"[0] == 'f'
06:09:16 <CakeProphet> I could see the possible uses... I just question the way its implemented.
06:09:28 <CakeProphet> I would have made pointers implicit... and copies of the value explicit.
06:09:47 <oerjan> So "foob"[4]=='\000', the implicit NUL at end of string.
06:10:45 <oerjan> Pointers may be more efficient in some cases, I guess.
06:11:18 <CakeProphet> I think C just has a different idea of what a variable is than me.
06:11:27 <bsmntbombdood> Pointers are more than just mutability, because the pointers can be manipulated themselves
06:11:39 <oerjan> Yes, to C a variable is a region in memory, of arbitrary size.
06:12:11 <CakeProphet> since I get my ideas about variables form Python... which, in terms of C++, makes variables implicitly a pointer.
06:12:47 <oerjan> Not simply a reference to a region of memory, like presumably in Python (except for primitive immutable types, where the reference is optimized away)
06:13:54 <CakeProphet> I don't like C++ arrays either... if I must complain.
06:14:06 <CakeProphet> I can't think of too many uses for them...
06:14:26 <bsmntbombdood> Don't think of them as an array, just as a succint way to manipulate large areas of memory
06:14:47 <fizzie> It's probably the lowest-overhead way to have an array, since it's just a block of memory.
06:14:49 <CakeProphet> which... makes them kind of constained in what they can do.
06:15:25 <oerjan> Interestingly in Haskell and Ocaml, where things _are_ references by default, there are libraries for "unboxing", which means essentially doing it the C way for efficiency.
06:15:27 <fizzie> If you're using C++, you probably want to use STL's containers (like std::vector) anyway, if you want an array-like container, and arrays if you want to _implement_ a container.
06:16:07 <CakeProphet> ah... so arrays aren't intended to be the final structure?
06:16:38 <oerjan> Arrays were inherited from C.
06:16:59 <fizzie> I guess that depends on the user; but all C++ books probably tout the merits of the STL containers.
06:17:35 <oerjan> They essentially just show their age, as does pointers.
06:18:04 <oerjan> Except probably for really low-level programming.
06:20:38 <CakeProphet> I imagine when I first start with C++ I'll always forget to type "||" instead of "or"
06:20:56 <CakeProphet> I could use #define to substitute them... if I wanted.
06:21:16 <CakeProphet> simply to avoid it from screwing up my program.
06:23:35 <oerjan> I think what Oklopol's nop language needs is a type system so complicated that _it_ is Turing-complete.
06:24:07 <fizzie> C++ templates are, after all. :p
06:24:32 <CakeProphet> I'm not sure who the hell thought that C++'s comma operator was a good idea.
06:24:43 <fizzie> It's C's comma operator.
06:24:48 <bsmntbombdood> that's why high level languages should be dynamically typed
06:25:12 <fizzie> What's your problem with the comma?
06:25:24 <CakeProphet> I don't call Python's + operator C's + operator simply because C used it before Python.
06:25:31 <CakeProphet> nah... it's fine.. and I could actually see myself using it.
06:25:45 <CakeProphet> I 'm just curious who the hell thought it up... and why they chose a comma.
06:26:09 <oerjan> The comma operator is simply a result of C distinguishing too hard between expressions and statements, like a P-language I could mention.
06:26:18 <bsmntbombdood> give me an example, I have no idea what you're talking about
06:27:16 <fizzie> Incidentally, I haven't met anyone who wouldn't write that as "a = 5; b = 3; int x = 6;".
06:27:40 <CakeProphet> yeah I know... I probably wouldn't use it...
06:27:44 <fizzie> But the comma is used a lot in initializing several values in the init section of a for loop; for(a = 0, b = 0; ...) ...
06:28:07 <CakeProphet> so it's like a... creepy non-data-type version of a tuple?
06:28:34 <oerjan> Actually it's like a creepy expression version of a statement separator.
06:29:38 <CakeProphet> oh okay... I see WHY you would use it now...
06:29:41 <fizzie> The , and ?: operators are very useful if you have some sort of ; allergy and want to write your whole program as a single expression.
06:30:00 <CakeProphet> I like writing programs in single expressions. :D
06:30:17 <oerjan> Like Ocaml, a functional language uses ; for both, since it doesn't distinguish statements from expressions.
06:30:21 <CakeProphet> but for some reason I consider variable assignment in an expression "cheating".
06:30:37 <CakeProphet> but that's my inevitable Python bias... because python treats = as a statement.
06:31:41 <oerjan> However, Ocaml's syntax is generally not considered its best part.
06:32:54 <lament> of course it's cheating.
06:32:59 <CakeProphet> "for x in SomeList" in Python in "for(x = SomeList[y], y++, SomeList)" right?
06:33:04 <lament> any side effect in an expression is cheating.
06:33:23 <fizzie> Here's a well-structured brainf*ck interpreter in C I wrote once; it shows the amazing usefulness of the ?: operator:
06:33:26 <fizzie> main(j,a,n,t)int*a;{unsigned short p=-1;char*r=calloc(n=p+1,6),*i=r
06:33:29 <fizzie> +n,**k=i+n;for(read(open(*++a,t=0),i,p);n=*i-43,t<0?n-48?n-50||++t:
06:33:31 <fizzie> --t:n?n-2?n-19?n-17?n-3?n-48?n-50?n-1||read(0,r+p,1):p[r]?i=k[j]:j
06:33:34 <fizzie> --:p[r]?k[++j]=i:t--:putchar(p[r]):p--:p++:p[r]--:p[r]++,*i++;);}
06:33:41 <CakeProphet> oh I use conditional expressions all the time... and list comprehensions.
06:33:56 <lament> fizzie: i see a lot of ;
06:34:07 <fizzie> Yes, I don't really have a ; allergy.
06:34:31 <CakeProphet> hmmm... C makes it easier to avoid multiple statements...
06:34:41 <CakeProphet> in Python it's like a fun little challenge though... C makes it too easy. :P
06:34:59 <lament> CakeProphet: not really
06:35:23 <lament> it's probably easier in python since C doesn't have lambdas
06:35:42 <CakeProphet> you can do variable assignments, multiple-expressions-with-side-effects-but-only-use-the-last-one-to-evaluate,
06:36:21 <fizzie> And you have the ?: to do conditionals.
06:36:29 <CakeProphet> Python doesn't allow variable assignments in an expression... which makes it way more difficult (but more "pure") to write one-liners.
06:36:36 <CakeProphet> well.. Python added something for that in 2.5
06:37:53 -!- ShadowHntr has quit (Connection timed out).
06:38:15 <fizzie> That's a funny way to write it. Perl has the "... if cond;" statement modifier, but it doesn't add an else branch there.
06:38:52 <lament> true if cond else false doesn't read at all like english.
06:39:15 <oerjan> I suppose you cannot use ... if ... else ... inside an ... if ... else ... without parentheses.
06:39:22 <CakeProphet> how often do you put your ifs before your assertions?
06:39:43 <CakeProphet> but in conversation... I always say "I like pancakes, but only if it's noon"
06:40:08 <lament> i prefer the way forth does it.
06:40:09 <fizzie> "I like pancakes, but only if it's noon; else I like RAW MEAT ARRR."
06:40:39 <oerjan> What about pancakes with raw meat in them?
06:41:14 <lament> cond if true else false then
06:41:49 <oerjan> Yeah, Forth's then at the end is really weird.
06:41:50 <CakeProphet> hehehe... to someone unfamiliar with stack-based languages... that would look like someone scrambled the source code.
06:42:57 <CakeProphet> I'm still waiting for python to get a while-loop list comprehension/generator-expression.
06:43:57 <CakeProphet> usually just one for the main loop of the program.
06:44:54 <RodgerTheGreat> aw, I feel so robbed! SQL doesn't allow definition of recursive functions!
06:45:03 <RodgerTheGreat> CREATE FUNCTION adder(a INT(10), b INT(10)) RETURNS INT(10) RETURN IF(b<>0, adder(a + 1, b - 1), a);
06:45:13 <RodgerTheGreat> ERROR 1424 (HY000): Recursive stored functions and triggers are not allowed.
06:45:23 <CakeProphet> how will you go on without SQL functions being recursive?
06:45:41 <RodgerTheGreat> I was hoping I'd stumbled upon a brilliant esocoding opportunity.
06:46:17 * CakeProphet had a BF interpreter coded in Excel at one point.
06:47:03 <CakeProphet> it just gives you the entire array to work with.
06:47:27 <CakeProphet> but I guess you could use print to accumulate characters into a single "output cell"
06:48:46 <lament> oerjan: it just means, "... and then, do this"
06:50:34 <oerjan> if ... if ... else ... then else ... then
06:51:55 <CakeProphet> I would have implemented it true-stmt then false-stmt else if
06:52:26 <CakeProphet> reminds me of the backwardsiness of FORTH. :D
06:52:44 <oerjan> Doesn't work with the Forth compiler principle though.
06:53:05 <RodgerTheGreat> ooh. we have an idea- we can't make recursive calls in a general sense, but we *can* define functions with our functions. We might be able to "build the tracks as our train runs on them", so to speak
06:53:36 <oerjan> Because anything found before the first "keyword" must be directly executed.
06:54:01 <CakeProphet> make an imperitive esolang modelled after "it puts the lotion on the skin"
06:54:36 <RodgerTheGreat> "It puts the lotion on it's skin or else it gets the hose again"
06:55:11 * oerjan wonders what the heck you are referring to.
06:58:33 <oerjan> The obvious name for Ork's successor would be "ORK is to increment."
06:58:52 * oerjan is still reading the logs.
06:59:08 <CakeProphet> and because I intend to create a large number of things named "Sophia"
07:00:25 <CakeProphet> I wonder what C++ would have been like if it included the increment in its evaluation (++C)
07:01:23 <oerjan> Obviously one of them would have a syntax like: Sophia? Sophia. Sophia! Sophia?
07:01:56 <oerjan> What, you don't want to increment Ook? :)
07:02:25 <RodgerTheGreat> Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo.
07:02:44 <CakeProphet> It'll basically have ORKs syntax... with Metaclasses and coroutines...
07:02:57 <CakeProphet> and some new directive-type stuff via commands related to "Sophia"
07:03:21 <oerjan> I wasn't suggesting that you make Sophia have such a syntax, but that you make Sophia have it.
07:03:22 <CakeProphet> and some minor syntax tweaks... such as "When this program starts:" being changed to "When Sophia loves us:"
07:03:49 <CakeProphet> no no no... I would really only consider Sophia for that kind of silliness.
07:04:11 <CakeProphet> well... that's actually not a syntax tweak...
07:04:18 <CakeProphet> because Sophia will be an object with a method "loves us"
07:05:32 <CakeProphet> oh yeah... and special methods (yup... can't have OO without SPECIAL METHODS!!_
07:06:02 <CakeProphet> "be said" is the string representation method (and how the object is printed when outputted)
07:07:45 <CakeProphet> and I'll try to think of some ways to totally bastardize ORK.
07:09:45 <oerjan> You could add a functional layer.
07:19:22 -!- digital_me_ has quit (Read error: 110 (Connection timed out)).
07:19:45 -!- Sgeo has quit (Remote closed the connection).
07:28:06 -!- calamari has left (?).
07:58:42 <Sukoshi> Hey look. I've ignored all of you for the last 2000 lines.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:07 <oerjan> That's OK, we were ignoring you too.
08:31:36 <Sukoshi> No, it's not OK. It's ORK.
10:20:54 -!- ihope has joined.
10:24:05 -!- oerjan has quit ("leaving").
12:54:55 <oklopol> [08:21:32] <oerjan> I think what Oklopol's nop language needs is a type system so complicated that _it_ is Turing-complete.
12:59:57 <oklopol> [08:44:14] * CakeProphet had a BF interpreter coded in Excel at one point.
13:00:09 <oklopol> if you're talking about vba, i made one during a class in school
13:02:23 <oklopol> [14:53:16] <oklopol> ny nop language
13:16:41 -!- andreou has joined.
13:21:04 <oklopol> it supports only datatypes list and nopad, nopad being the empty list
13:21:54 <ihope> I did Bitwise Cyclic Tag in Excel.
13:22:09 <ihope> And I don't mean a macro or anything.
13:22:35 <ihope> It's easier than BF, of course.
13:22:42 <oklopol> because making it in vba is as easy as in any language :)
13:22:56 <ihope> I think BCT earns the Simplest Turing-Complete Language award.
13:23:09 <oklopol> tho vb is the worst language i've run into
13:23:14 <oklopol> hmm i'll have to check it, don't remember
13:23:21 <ihope> Malbolge is the worse language I've run into.
13:23:33 <ihope> And by worse, I mean worst.
13:25:21 <oklopol> well, in vb it's nicer to do a program, but i like malbolge more :)
13:25:37 <ihope> Epigram has a ridiculously strong type system, doesn't it?
13:25:58 <oklopol> i'll have to see that one too........
13:31:30 <oklopol> BCT stops execution when datastring is empty?
13:32:46 * andreou would like to see the US gov't adopting mycelium as a stego device
13:37:58 <ihope> They probably have better ways of doing that, you know.
13:38:30 <andreou> probably; not as cool, though
13:43:38 <andreou> a combination of filigram.c and mycelium would also produce interesting results
13:45:11 <andreou> it's on ../filigram/ in the site of that putty guy
13:51:28 -!- ihope_ has joined.
14:07:29 -!- ihope has quit (Read error: 110 (Connection timed out)).
14:12:43 <oklopol> python: reduce ( (lambda a, b : a+b), [[[]], [[[], [], [[], []]], []], [[], [], []]] )
14:12:44 <oklopol> nopol: <<<>><<<><><<><>>><>><<><><>>>:<<..><:>:<::>>
14:13:13 <oklopol> it supports alphanumeric names tho, also comments and whitespace
14:13:44 <oklopol> the function is <<..><:>:<::>>, please crack it if you have time :)
14:15:59 <oklopol> the system is not only turing complete, it's actually pretty nice to write algorithms in
14:18:46 -!- jix__ has joined.
14:54:41 <oklopol> nopol is getting quite complicated for a language you cannot do anything with :\
14:59:38 <oklopol> i think the best feature is you can have lists of negative depth, if a([b]) == b, a(a(a([]))) for example is valid code :)
15:00:09 <oklopol> i gotta finish it so i can make a compiler!
15:00:35 <oklopol> the standard for compilers guarantees a -f final build mode that optimized the whole program to one nop
15:01:45 <oklopol> because, any number of nops is essentially one nop
15:01:48 <andreou> *every* program does absolutely nothing and does it in a quirky way?
15:02:10 <andreou> ah i didn't read the specs -- are there any or is it WIP"?
15:02:14 <oklopol> of course, you can have fun with it with a debugger
15:02:37 <oklopol> because you see what's happening in the memory
15:03:05 <andreou> i think this kind of fun is easier with hallucinogens
15:03:20 <oklopol> i'm not ready yet with the language
15:03:40 <oklopol> and it will be very hard to make an interpreter
15:04:34 <oklopol> i have to think over all the commands and such to make everything as logical as possible
15:20:13 -!- pikhq has joined.
15:29:09 -!- andreou has quit ("kernel test").
15:33:01 -!- andreou has joined.
16:24:51 -!- andreou has quit ("kernel test").
16:27:21 -!- tgwizard has joined.
16:31:16 -!- andreou has joined.
16:56:17 -!- wooby has quit.
17:05:01 -!- calamari has joined.
17:06:58 <calamari> apparently some spammers decided @kidsquid.com is a good return address :( getting lots of failure notices
17:07:13 -!- FabioNET has joined.
17:15:34 -!- ais523 has joined.
17:16:16 <ais523> So there are people on #esoteric at the moment after all, then? I was monitoring the logs to see if anyone was online, but somehow I never seem to be online at the same time as other people...
17:16:54 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
17:16:56 <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
17:17:06 <EgoBot> To use an interpreter: <interpreter> <program> Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem.
17:17:44 <EgoBot> cp: cannot create regular file `fyb/cache/egobot.AbWxMh': Permission denied
17:19:00 <ais523> After that publicly-visible error message, EgoBot started spamming me with error messages...
17:20:40 <ais523> Besides, how can it run a single fyb program anyway, considering that two of them, using each other as data space, are needed for the program to work?
17:22:06 <ais523> !fyb file://bomber.fyb
17:22:08 <EgoBot> cp: cannot stat `./files/bomber.fyb': No such file or directory
17:23:25 <ais523> I think it tries to run the program it's given against an internal list of programs to compete against, but it's getting 'permission denied' errors on the programs it has stored
17:24:15 * ais523 discovers that giving EgoBot another command stops the error-message spam
17:24:38 <EgoBot> Reporting score for :>+!;.
17:26:25 <ais523> It just sent me three hyphens and stopped...
17:29:00 <ais523> !unlambda ```s``s``sii`ki`k.*``s``s`ks``s`k`s`ks``s`k`s`k./``s`k`sikk`k``s`ksk
17:29:05 <ihope_> Maybe it lost three games in a row.
17:29:23 <ais523> I suppose so, it wasn't a very good program...
17:30:15 <EgoBot> Reporting score for +[>[-]!+].
17:30:46 <ais523> More hyphens. But that's a really vulnerable program, due to the tight loop near the start...
17:36:29 <ais523> !fyb {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!}
17:36:31 <EgoBot> cp: cannot create regular file `fyb/cache/egobot.YnjVgJ': Permission denied
17:37:52 <ais523> Hey, I think I actually beat some of its library
17:38:11 <ais523> !fybs {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!}
17:38:14 <EgoBot> Reporting score for {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!}.
17:38:41 <ais523> More hyphens, but there was something encouraging in the error messages on the plain fyb
17:42:34 <ais523> !fyb %:[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[-]!]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!;{{>>>>}{>>>>}[-]++++++++++++++!}
17:42:36 <EgoBot> cp: cannot create regular file `fyb/cache/egobot.Gl82IV': Permission denied
17:43:30 <pikhq> Enjoying Esolangs?
17:44:05 <pikhq> BTW, IIRC, fyb will compare the program given and some of the builtins.
17:44:18 <pikhq> And it seems that Gregor has fucked up Egobot a bit.
17:44:40 <pikhq> GregorR: Give egobot write access to itself.
17:45:05 <ais523> Yes, I'm enjoying esolangs. I enjoyed the logs, too, before I had access to an IRC client.
17:45:29 * pikhq continues hugging BFM
17:45:57 <ais523> The new program seems less good than the old one. Maybe it's better to be simple...
17:47:17 <ais523> !fyb :>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]+++++++++++++++!;:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]+++++++++++++++!;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]+++++++++++++++!;
17:47:19 <EgoBot> cp: cannot create regular file `fyb/cache/egobot.2yppuf': Permission denied
17:49:02 -!- oerjan has joined.
17:49:19 * ais523 tries something really simple
17:49:22 <pikhq> string f! "Hello, oerjan."
17:49:43 <ais523> !fyb {>>>}{>>>}+++++++++++++++!
17:49:46 <EgoBot> cp: cannot create regular file `fyb/cache/egobot.CZrAiN': Permission denied
17:52:20 <ais523> The ps command does seems to stop the flow of error messages and useful answers... (it lost every single game, BTW)
17:53:24 <ais523> Hey, how does EgoBot manage the 2D languages?
17:54:08 <EgoBot> To use an interpreter: <interpreter> <program> Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem.
17:54:27 <ais523> Oh, it seems that it reads it off the Web
17:56:22 <ais523> !1l http://esoteric.voxelperfect.net/files/1l/src/1l_a/a.1l
17:57:17 * pikhq is a bit sad that EgoBot doesn't seem to support Dimensifuck. . .
17:57:42 <pikhq> It's my n-dimensional Brainfuck variant. . .
17:57:46 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
17:57:48 <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
17:58:02 * pikhq needs to write a BF->DF compiler
17:58:11 <ais523> It doesn't have any of my languages either.
17:59:07 <ais523> BackFlip, Underload, and MiniMAX are the main ones (there are also some BackFlip derivatives like ABCDXYZ and Unassignable)
18:00:05 <pikhq> My macro system for Brainfuck.
18:00:11 <pikhq> With much thanks to oerjan.
18:00:29 <ais523> How do you do a loop in Dimensifuck? The wiki isn't clear on how you affect the program flow
18:02:06 <ais523> So v and ^ affect the program counter?
18:02:19 <pikhq> v and ^ conditionally change the direction of program flow.
18:02:33 <pikhq> = and _ change the dimension v and ^ effect.
18:03:53 <ais523> So you could compile BF into 2D Dimensifuck just by drawing loops to represent literal loops, in much the same way as Sansism
18:04:46 -!- andreou has quit ("-").
18:05:14 <ais523> Maybe it would be possible to do it without wire-crossings
18:08:15 -!- sebbu has joined.
18:11:41 <ais523> !fybs {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!}
18:11:45 <EgoBot> Reporting score for {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!}.
18:15:47 <pikhq> Well, I can *hand*compile BF to Dimensifuck. . .
18:19:13 <ais523> If you assign each loop its own y-coordinate (or better, its own dimension), you could use each of those as a bypass path for the loop if the value is zero
18:19:22 <ais523> and assign another one for the return path
18:19:27 <oerjan> I would expect every BF command to be compiled to a fixed 2D-block of DF commands, except for [], where you need to vary the height of the loop to avoid crossings.
18:20:12 <ais523> + - < > , . are all the same in DF, so it's only the flow control you have to deal with
18:21:15 <ihope_> And for a minute there I thought ! no longer did anything.
18:22:23 -!- ais523 has quit ("about to lose Internet access for a while").
18:28:30 * SimonRC fails to understand today's xkcd.
18:29:15 * oerjan hands pikhq the golden cup
18:43:13 <calamari> sorry, I'm a bit out of the loop.. is this some kind of game you are playing?
18:43:20 -!- bsmnt_bot has quit.
18:43:24 -!- bsmnt_bot has joined.
18:43:42 <EgoBot> cannot open checkpoint file /home/gregor/esoteric/egobot/egobot/daemons/: Is a directory
18:43:43 <EgoBot> cannot obtain a checkpoint stream
18:44:10 <pikhq> Gregor, do you not have write access to your home dir?
18:45:22 <EgoBot> realloc: Cannot allocate memory
18:45:44 -!- digital_me has joined.
18:46:38 <calamari> <ihope_> Maybe it lost three games in a row.
18:51:23 -!- digital_me has quit ("Lost terminal").
19:03:31 * pikhq continues prodding Gregor
19:33:17 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
19:35:06 -!- pikhq has joined.
19:42:05 -!- ShadowHntr has joined.
19:48:02 <pikhq> Kill egobot, Gregor.
19:48:59 <pikhq> I'm getting PMd error messages.
19:49:52 <CakeProphet> What data can do should be defined by its propertie, rather than some "type". :P
19:53:41 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
19:53:54 -!- EgoBot has joined.
19:54:35 <pikhq> Now, chmod some of its directories +w.
19:54:50 * pikhq waits for the error message
19:55:23 * pikhq waits for a newline, even
19:55:55 <oklopol> !bf +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
19:56:12 <oklopol> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
19:56:16 <oklopol> !bf +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
19:57:31 <GregorR> You realize that prodding is useless if you don't say "GregorR"
19:57:45 <GregorR> What with IRC clients highlighting tabs and such.
19:59:23 <pikhq> GregorR, you didn't respond when I said your full name.
19:59:56 <pikhq> Is your home dir rw now?
20:01:37 <GregorR> And it runs as user egobot in /home/gregor/esoteric/egobot/egobot :P
20:01:39 <EgoBot> 30 ++++++++[>++++++++>>><<<<-]>+. [53]
20:02:00 <oklopol> !bf >+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++.>-------------.>++.>++++++++.>+++.>--------------------------------.
20:02:50 <oklopol> !bf +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++.-------------.++.++++++++.+++.--------------------------------.
20:04:01 <EgoBot> 80 ++++++++++++++[>+++++>++++++>++++++++>+++++++<<<<-]>+.>>++.>+++.++.<---.+++.<--. [250]
20:05:22 <oklopol> actually, mine is not much slower
20:06:09 <oklopol> mine uses a generic algorithm and i wrote it just now in python in 2 minutes
20:06:33 <oklopol> so, yeah it sucks but i love all those chains of letters <3
20:06:57 <oklopol> what algorithm is GregorR's anyway?
20:07:13 <bsmntbombdood> GregorR: You should pipe the output of bf_txtgen through a bf optimizer
20:09:14 <GregorR> textgen.java . Look @ calamari :-P
20:09:51 <GregorR> ^[0-9]+ is the length, \[[0-9]+\]$ is the generations.
20:10:04 <GregorR> It's in the files archive.
20:10:35 -!- maverickbna has joined.
20:11:11 -!- ShadowHntr has quit (Nick collision from services.).
20:11:52 <oklopol> okay, what is the files archive :)
20:12:03 -!- ShadowHntr has joined.
20:12:10 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
20:12:41 <GregorR> http://www.esolangs.org/wiki/LOOK_IT_UP_YOURSELF
20:12:56 <GregorR> Or just http://www.esolangs.org/ :-P
20:13:24 <oklopol> SUPRISINGLY IT WAS NOT IN THE WIKI
20:14:21 <oklopol> i can't find it there either :)
20:15:09 <EgoBot> cannot open checkpoint file /home/gregor/esoteric/egobot/egobot/daemons/: Is a directory
20:15:11 <oklopol> i thought it was like in a separate folder :)
20:15:11 <EgoBot> cannot obtain a checkpoint stream
20:15:47 <EgoBot> 1 EgoBot: daemon nop reload
20:17:05 <oerjan> now what i wanted to check.
20:17:37 <bsmntbombdood> Someone needs to do something clever with bsmnt_bot
20:17:48 <pikhq> GregorR: I can be cruel to bots at times.
20:18:14 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
20:18:24 -!- EgoBot has joined.
20:18:32 <pikhq> !daemon glass bf ,[.,]
20:18:33 <EgoBot> 1 EgoBot: daemon nop reload
20:19:05 <pikhq> !daemon glass glass ''
20:19:11 <pikhq> !glass There we go.
20:19:12 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
20:19:21 -!- EgoBot has joined.
20:19:40 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
20:19:42 <oerjan> Apparently daemons can be recursive?
20:19:50 -!- EgoBot has joined.
20:19:58 -!- maverickbna has quit (Read error: 145 (Connection timed out)).
20:20:37 <oklopol> bsmntbombdood, as wouter said, ppl who don't like c++ don't understand it
20:20:44 <GregorR> bsmntbombdood: People who don't like C++ --- thanks, oklopol 8-D
20:20:53 * pikhq needs to fiddle with egobot a bit
20:22:22 <pikhq> Why the hell are you writing IRC commands to stderr?
20:22:31 <pikhq> bsmntbombdood: It's the C++ stream interface to stderr.
20:22:45 <oerjan> !daemon undaemon bf ,[,]
20:22:51 <EgoBot> 1 oerjan: daemon undaemon bf
20:23:01 <GregorR> pikhq: netcat is a bit funky :(
20:23:05 <oerjan> That's better. Or worse.
20:23:45 <pikhq> bsmntbombdood: What's wrong with you.
20:23:46 <EgoBot> To use an interpreter: <interpreter> <program> Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem.
20:23:57 <GregorR> pikhq: There's no help on !raw
20:24:19 <pikhq> !raw QUIT :I don't want to live!
20:24:45 <GregorR> !raw PRIVMSG #esoteric :Do you /really/ think I use security by obscurity, dorkus?
20:24:45 <EgoBot> Do you /really/ think I use security by obscurity, dorkus?
20:25:21 <pikhq> !raw PRIVMSG bsmntbombdood :Don't answer that.
20:25:53 * pikhq realised something stupid
20:26:02 <pikhq> if (sender != string(argv[2])) continue;
20:26:18 <pikhq> So Gregor alone can use raw.
20:27:56 <pikhq> ./egobot EgoBot GregorR esoteric 10485760 >> EGOOUT
20:28:11 <pikhq> I don't understand how the fuck that allows netcat to access IRC.
20:36:06 <pikhq> At least there aren't any buffer overflows to exploit. . .
20:36:41 <pikhq> . . . I think I stand corrected.
20:36:59 <oklopol> !bf_txtgen was this the command?
20:37:17 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
20:37:19 <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
20:38:01 <EgoBot> 162 +++++++++++[>+++>+++++++++++>+++++++++>++++++<<<<-]>>--.>--.<----.<-.>+.>+++++++.+.<-.<.>+.------------.---.<.>--.++++++++++++.--..------------.>+++++.<+++.>>---. [930]
20:38:11 <pikhq> No, your use of C strings is safe. . .
20:38:18 <pikhq> Still. . . Bad Gregor!
20:38:51 <EgoBot> 54 +++++++++++++[>+++++++++>++++++++>><<<<-]>-.>---.<-.+. [32]
20:39:25 <EgoBot> 54 +++++++++++++[>+++++++++>++++++++>><<<<-]>-.>---.<-.+. [316]
20:39:41 <bsmntbombdood> Double quotes don't evaluate to a c string in c++?
20:39:52 <pikhq> Using char arrays in C++ isn't wise.
20:41:56 <bsmntbombdood> What's the point of forking and then waitpid()ing on it?
20:44:10 <pikhq> "foo" is a static C string in C++. . .
20:55:14 -!- cmeme has quit (Connection timed out).
20:56:45 <pikhq> string::substr is magic, indeed.
21:01:27 <oklopol> how does the txtgen randomize the same string every time :\
21:01:37 <oklopol> or, even two times in succession
21:02:54 <pikhq> It's a genetic algorithm. . . You're experiencing dumb luck.
21:05:59 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)").
21:08:07 <bsmntbombdood> !bf http://esoteric.sange.fi/brainfuck/bf-source/prog/99botles.bf
21:08:12 <EgoBot> 99 Bottles of beer on the wall
21:13:37 -!- oerjan has quit ("leaving").
21:39:11 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:45:21 <CakeProphet> In a static universe... it wouldn't be all that great.
21:45:21 <pikhq> I don't know what idea it is.
21:45:38 <CakeProphet> for a dynamic universe... it's pretty damn sweet.
21:45:54 <CakeProphet> It's a sequence of functions that can be called.
21:46:59 <CakeProphet> when you call a ring... it calls the first function with those arguments, and uses the return value as the arguments for the next function, etc
21:47:20 <CakeProphet> but there's a "ring return value" as well... which is what the ring returns as a whole.
21:48:51 <CakeProphet> it's not really meant to be a "pure" function (no side-effects)
21:48:59 <CakeProphet> it would work best where everything is a side-effect.
21:55:04 <ihope_> People who don't like C++ don't understand it? Lies!
21:55:33 <ihope_> I refuse to use any programming language that I cannot code first-order logic theories into!
21:57:03 <bsmntbombdood> "You don't like it, so you must not understand it"
21:59:22 -!- Sgeo has joined.
21:59:29 <CakeProphet> That would be assuming that anything understood is liked.
22:00:31 <ihope_> That's not the virtualization thing, is it?
22:00:49 -!- sebbu has quit (Connection timed out).
22:01:20 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
22:01:56 -!- pikhq has joined.
22:07:25 <oklopol> No, CakeProphet, just that C++ is nice when you get it.
22:11:07 -!- olli90 has joined.
22:12:47 <olli90> I have a question reguarding BrainF*ck ....
22:14:54 <ihope_> Depends on the question, of course...
22:15:50 <olli90> i have to make a brainfuck program that checks a string...
22:16:02 <olli90> like a serial key checker
22:16:45 <ihope_> Check one string against another, then?
22:17:46 <olli90> then if the first is = to the second the program prints "OK" and is not = the program prints "wrong"
22:19:26 <pikhq> I can think of the basic structure for such a program in BFM. . .
22:19:46 <pikhq> Would it be a specific, builtin string, or would it compare two strings from stdin?
22:20:07 <olli90> it haves to compare 2 strings...
22:20:10 <pikhq> ihope_: Sorry. . . It's easy to think about it at higher levels of abstraction.
22:20:28 <ihope_> Input a character, go right, increment, go right, input a character, go right, increment, go right...
22:20:45 <ihope_> Continue until you receive a newline.
22:21:26 <ihope_> After you receive it, go left to the cell you incremented last, then [<<], then go right.
22:22:11 <ihope_> From there, you're at the beginning of the string you want to check against, and there's one cell between each pair of characters, and the next thing that will be input is the other string.
22:23:25 <olli90> I think I have undertund :D
22:25:50 -!- olli90 has quit ("KVIrc 3.2.3 Anomalies http://www.kvirc.net/").
22:25:52 * pikhq realises one thing that could be much faster in BFM, when compiled into Tcl and interpreted. . .
22:25:56 <pikhq> itoa is slow as hell
22:28:16 <pikhq> Of course, I know an even easier way to make the BFM interpreter faster.
22:28:27 <pikhq> Make it just compile to BF and run through egobfi.
22:29:15 <pikhq> That's great and all, but BFM already targets C.
22:29:37 <pikhq> I just need to get c.tcl pulled over onto my laptop and package it up.
22:29:45 <pikhq> Besides, egobfi8 is very fast.
22:30:07 <pikhq> tclsh ./bfm.tcl -f ~/esoteric/bfm/bott.bfm 1.22s user 0.04s system 56% cpu 2.218 total
22:30:11 <pikhq> egobfi8 0.14s user 0.07s system 9% cpu 2.213 total
22:30:28 <pikhq> Comparing with the BFM interpreter. . .
22:30:34 <pikhq> Give it a few minutes.
22:31:07 <pikhq> (comparing with my in-BFM implementation of 99 bottles of beer)
22:32:46 <pikhq> Like I said: the in-BFM itoa implementation is slow as fuck.
22:33:10 <pikhq> (at least, it is in an environment where your interpretation of a while loop is very, very slow)
22:33:15 <ihope_> Just how slow is fuck?
22:33:48 <pikhq> I'm watching the thing spit out a string, wait a few seconds, spit out a number and a string, and so on and so forth.
22:34:34 <pikhq> Unbuffered output lets me see what the bottleneck is. . .
22:34:58 <pikhq> String output goes pretty quickly, even for a rather slow interpreter.
22:35:17 <pikhq> tclsh ./bfm.tcl -f ~/esoteric/bfm/bott.bfm -I 285.46s user 0.37s system 98% cpu 4:48.95 total
22:35:22 <pikhq> That's how slow fuck is.
22:36:57 -!- tgwizard has quit (Remote closed the connection).
22:39:15 * pikhq has made the thing a bit faster now. . .
22:39:29 <pikhq> I removed redundant calls to itoa in my bott.bfm program.
22:39:43 <pikhq> It should be 3 times as fast.
22:39:49 <pikhq> Which is still rather slow. . .
22:41:25 <pikhq> tclsh ./bfm.tcl -f ~/esoteric/bfm/bott.bfm -I 130.26s user 0.34s system 92% cpu 2:20.87 total
22:41:42 <pikhq> tclsh ./bfm.tcl -f ~/esoteric/bfm/bott.bfm 0.89s user 0.05s system 93% cpu 1.005 total
22:41:45 <pikhq> egobfi8 0.11s user 0.06s system 9% cpu 1.886 total
22:42:34 <pikhq> Now, we all know how slow fuck is.
22:43:47 <oklopol> i actually made an assignment! :)
22:45:55 <oklopol> i've done maybe 10 in high school if you don't count exams, so i'm very proud -_______-
23:13:01 <pikhq> I've got 939 lines of code in BFM. . .
23:13:16 <pikhq> Not counting my C backend, which I have yet to sync in with the rest of my tree.
23:13:59 <pikhq> My pre-rewrite build was 325 lines.
23:14:17 <pikhq> Kind of odd that I managed to have the thing grow in size as it increased in readability.
23:37:46 -!- FabioNET has quit ("notte notte").
23:38:37 <ihope_> oklopol: you made an assignment?
23:39:24 <ihope_> You assigned something, then?
23:42:15 <oklopol> ya i assigned my foot in yer ass :\
23:45:11 <oklopol> I had to carry out a derivation manually :OO
23:50:25 <oklopol> I have to do 150 to pass the course. I know the answer when I've read the question but it takes 20 minutes to do it.
00:16:44 * SimonRC goes away (but not yet to bed).
00:25:34 -!- cmeme has joined.
00:45:15 -!- RodgerTheGreat has quit.
00:47:31 -!- pikhq has quit ("leaving").
00:52:23 -!- RodgerTheGreat has joined.
01:03:55 -!- ihope_ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
01:19:33 <pgimeno> btw, who was the one who decided that that was the perfect format for a timestamp standard?
01:42:54 <GregorR> It does seem kind of silly to make a timestamp with an end time that could actually be in your lifetime.
01:43:16 <GregorR> But keep in mind that REALLY olde Unix precursors had timestamps so small, they had to have multiple epochs per year.
01:53:28 -!- andreou has joined.
02:06:54 -!- andreou has quit ("rbt").
02:30:15 -!- pikhq has joined.
02:51:18 -!- digital_me has joined.
03:44:55 <CakeProphet> one cool thing I noticed about C++ is that you can have two functions with the same name but with different parameter types.
03:45:15 <CakeProphet> that could be really useful... saves a lot of effort with type checking.
03:45:30 <pikhq> It's called "overloading".
03:46:00 <CakeProphet> When Python gets optional type declarations, I hope they do that to.
03:46:22 <CakeProphet> Duck typing -and- that kind of operator overloading would be great.
03:47:43 * pikhq much prefers the Tcl way of things. . .
03:47:47 <pikhq> Typing? What typing?
03:48:06 <pikhq> It autocasts into what you use it as.
03:48:16 <pikhq> Say you input a string, and want to treat it like a number.
03:48:24 <pikhq> One just treats the variable as a number.
03:48:53 <pikhq> You want to cast a list into a string?
03:48:58 <CakeProphet> I like all the options C and C++ have... I'll just have to get used to static typing and all those silly brackets.
03:49:01 <pikhq> One just uses a string function on it.
03:49:22 <pikhq> The brackets, once you get used to it, seem more like a god-send then anything else.
03:49:28 <CakeProphet> a lot of them seem to be just pure for-the-sake-of-optimization things though... like inline functions.
03:50:08 <pikhq> I parse brackets much more effectively than levels of indentation.
03:50:49 <pikhq> if(foo()) {compound;statement;here;}, for some reason, just makes sense to me.
03:51:19 <CakeProphet> Indentation is a lot easier to read for me... except when there's brackets included.
03:51:53 <pikhq> With Tcl, the brackets really, *really* make sense.
03:52:10 <pikhq> A curly bracket denotes a list. . .
03:52:54 <pikhq> Thus, something like "while {foo} {bar}" indicates running the proc while with arguments of two lists. . . It makes sense in an almost-Lispish way.
03:56:00 <CakeProphet> if you wanted to go about data-tixing code... you could have a statement type... and just allow any list of statements to be used for blocks.
03:56:22 <CakeProphet> it would be cool for blocks-of-code-in-a-function.
03:58:16 <CakeProphet> you can place blocks of code in a function call because Ruby compiles blocks into a code object.
04:22:24 -!- CakeProphet has quit (Read error: 113 (No route to host)).
04:27:58 -!- lament has changed nick to mental.
04:32:00 -!- mental has changed nick to lament.
04:35:23 -!- pikhq has quit ("leaving").
04:46:02 -!- Sgeo has quit ("Leaving").
04:49:10 -!- andreou has joined.
05:06:01 <andreou> are you aware of any nice/graphical scheme's for pre-X Mac OS's?
05:06:19 <andreou> though i should try #scheme for that...
05:14:38 -!- oerjan has joined.
05:15:15 <lament> surely drscheme ought to work?
05:16:33 <andreou> which, arithmetically speaking, is 164 versions old
05:16:57 <lament> you _are_ using a pre-X mac os.
05:17:11 <andreou> i'd update if i wasn't scared as hell
05:17:31 <lament> and you _do_ want a graphical scheme which is a strange thing to want.
05:17:34 <lament> what are you scared of?
05:18:01 <andreou> well the disk can probably take it, but it's an old 266MHz G3 with 320MB RAM
05:18:24 <andreou> all that eye candy would probably make the whole system snail slow
05:19:00 <andreou> tried netbsd, goes quite well
05:19:08 <andreou> but macos has something else
05:21:24 <andreou> ah maybe i'll do the switch in netbsd4, when audio driver problems will probably be resolved
05:31:02 -!- digital_me has quit ("Lost terminal").
05:47:26 * andreou sipping hot black tea with honey
05:48:06 <andreou> i don't know what kind of tea or honey you're used to, but this combo rocks :)
05:48:55 <andreou> some teas are not supposed to be drunk straight
05:50:25 <oerjan> I recall reading the Aztecs drank unsugared hot chocolate with chili. Now that's weird.
05:53:08 <andreou> though 'extinct' is not proper for a whole race
05:57:07 <oerjan> Strictly speaking they did not get extinct, they got converted and colonized.
05:58:41 <andreou> i think most of them were used as slave labour, died of exhaustion, malnutrition & relevant factors
06:01:18 <andreou> some of the rest later constituted large parts of the zapatistas
06:04:47 <lament> well, there's quite a lot of aztecs in mexico
06:05:05 <lament> they tend to be very poor
06:05:24 <andreou> they just reject the monetary fantasies of the westerners
06:05:40 <lament> no, they don't, they're simply poor
06:05:57 <andreou> well, i'm always the idealist
06:05:58 <lament> bedouins in israel (and elsewhere) reject the monetary fantasies
06:06:17 <lament> natives in mexico are simply extremely socially disadvantages and so really poor
06:29:13 -!- calamari has quit ("Leaving").
06:43:40 -!- ShadowHntr has joined.
06:47:14 -!- maverickbna has joined.
06:47:50 -!- ShadowHntr has quit (Nick collision from services.).
06:59:42 -!- ShadowHntr has joined.
07:09:39 -!- sentinel has joined.
07:10:15 -!- ShadowHntr has quit (Nick collision from services.).
07:10:19 -!- maverickbna has quit (Nick collision from services.).
07:10:21 -!- sentinel has changed nick to ShadowHntr.
07:12:21 -!- maverickbna has joined.
07:12:51 -!- ShadowHntr has quit (Nick collision from services.).
07:24:11 -!- oerjan has quit ("leaving").
07:31:58 -!- maverickbna has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:38:25 -!- andreou has quit ("bsn").
09:13:38 -!- ais523 has joined.
09:14:10 <ais523> !fyb >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!
09:18:51 <ais523> !fyb :[>%%%%%%%%%%%%%%%%%%%%%%%%>[-]!<]*;:>>>>>>>>>>>>>>>>>>>>>>>>>>>{>>>}{>>>}[-]++++++++++++++!;{>>>}[-]++++++++++++++!
09:20:23 <ais523> it seems to be running all its example programs against each other, rather than against mine
09:21:22 * ais523 tries a program designed only to lose
09:21:38 <ais523> !fyb @[+]+++++++++++++!
09:22:10 <ais523> No, it's ignoring my program and just running its
09:23:55 <ais523> !fybs @[+]++++++++++++++!
09:23:58 <EgoBot> Reporting score for @[+]++++++++++++++!.
09:24:30 <EgoBot> Reporting score for >++!.
09:24:44 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
09:24:46 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
09:24:54 <EgoBot> Use: show <pid> Function: display the current output buffer for a process
09:25:04 <EgoBot> Use: flush Function: flush the output buffer, discarding any current output
09:25:12 <EgoBot> Use: usertrig <command> <trig-command> Function: manage user triggers. <command> may be add, del, list or show.
09:25:28 <EgoBot> Use: i <pid> <input> Function: send input to a process
09:25:40 <EgoBot> Use: daemon <daemon> <daemon-command> Function: start a daemon process.
09:26:30 <ais523> !unlambda ```sr.a``sr.b
09:26:44 <ais523> That's an infinite loop, by the way
09:27:25 <ais523> and only now do I get the output...
09:29:20 <ais523> it's still busy sending me an infinite number of 'b's
09:33:46 <ais523> I can't even stop the infinite output loop with an infinite loop in another language...
09:35:16 -!- ais523 has changed nick to ais523_trying_to.
09:35:28 -!- ais523_trying_to has changed nick to ais523.
09:35:58 -!- ais523 has changed nick to ais523_.
09:36:19 <ais523_> Renaming myself to direct EgoBot's infinite output elsewhere
09:37:26 * ais523_ has probably broken EgoBot
09:39:13 <ais523_> It still seems to be in an infinite loop...
09:48:27 <ais523_> (I'm just trying this every now and then to see if it's finished it's infiniely-long output)
10:00:16 -!- ais523_ has changed nick to ais523.
10:00:26 -!- ais523 has changed nick to ais523_.
10:45:32 -!- ais523_ has changed nick to ais523.
10:45:44 -!- ais523 has changed nick to ais523_.
10:46:25 <ais523_> There should probably be some way to stop EgoBot in such situations (it was still sending messages when I checked just now)
11:05:29 <pgimeno> hm, maybe renicing could help
11:07:14 <pgimeno> or blocking the process until it sends the output instead of buffering it
11:08:09 -!- ais523_ has quit.
11:08:18 <pgimeno> this may explain other situations where EgoBot ceased to respond
12:00:30 -!- ais523 has joined.
12:00:50 -!- ais523 has changed nick to ais523_.
12:32:09 <SimonRC> bsmntbombdood: hey! The apocalypse-in-2038 thing is *my* joke.
12:33:25 <ais523_> that statement's rather out of context to me at the moment
12:33:28 <SimonRC> bsmntbombdood: There is an amazing hack that abuses the switch-case interleaving (like in Duff's Device) to give you co-routines in C with not too much inconvinience. It is available as a library.
12:33:47 <ais523_> you should try to do it with setjmp
12:33:57 <ais523_> both techniques have been used to implement Threaded INTERCAL
12:34:10 * SimonRC likes that ability of multiple-dispathc based on method retunr-type alone.
12:34:24 <SimonRC> Found in Haskell and maybe a few other places.
12:36:03 <SimonRC> ais523_: actually setjmp is unlikely to work, and certainly not guaranteed.
12:36:31 <ais523_> setjmp has certain guarantees. With practice and careful use of 'volatile', they can be exploited to lead to a portable program
12:38:22 <SimonRC> I though it just popped the stack, and could only jump up, not down.
12:39:20 <ais523_> yes, you have to have all the coroutines in the same level of the same function
12:39:33 <ais523_> but the same restriction applies to switch and to goto
12:41:02 <ais523_> my Threaded INTERCAL code is at http://esoteric.voxelperfect.net/files/intercal (along with the rest of the INTERCAL implementation), in unravel.c
12:41:27 <ais523_> I used setjmp to minimize the change needed to the existing code
12:42:54 -!- ais523_ has quit ("lunchtime").
12:58:37 <SimonRC> No, the C one has macros which save the current position in the function and restore it, thus:
12:58:43 <SimonRC> http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
13:01:53 -!- ais523_ has joined.
13:02:05 -!- ais523_ has changed nick to ais523.
13:02:12 -!- ais523 has changed nick to ais523_.
13:06:16 -!- EgoBot has quit (SendQ exceeded).
13:08:45 -!- ais523_ has changed nick to ais523.
13:09:27 <ais523> So EgoBot's left, and hasn't come back in.
13:09:35 * ais523 is sorry for getting EgoBot thrown off the channel
13:43:28 <pgimeno> he's made me lose lots of time with the puzzles collection
13:47:31 <pgimeno> incidentally, Inertia's creator = Malbolge's creator
13:53:59 <pgimeno> one of the puzzles in S.Tatham's collction
13:54:23 -!- andreou has joined.
13:55:03 -!- ais523 has quit ("busy in RL").
13:58:04 <andreou> disregarding the absence of the /physical/, the electronic is now a vital part of the R world and L.
14:02:19 <andreou> it'd be wise to include a 'sadly' after the 'is'.
14:06:11 -!- jix__ has joined.
14:06:21 <andreou> well, R is for real, L is for life
14:06:27 <SimonRC> pgimeno: also the guy that wrote PuTTY, it seems.
14:07:13 <SimonRC> Which a really odd, because PuTTY is one of the few real-world uses of the C coroutines hack we were discussing on this channel just an hour ago.
14:10:22 <pgimeno> well, coroutines have their uses
14:10:52 <pgimeno> one of the clearest uses is in implementing parsers
14:11:56 <pgimeno> another one is in certain types of cooperative multitasking
14:13:09 <pgimeno> the need often arises spontaneously
14:13:27 <fizzie> This is not really too related, but for those uses SysV-like systems also have the funky {get,set}context functions, which are a bit like {set,long}jmp, but more.
14:20:36 <pgimeno> my man page claims get/setcontext is POSIX.1-2001
14:33:57 <fizzie> Oh? Well, I guess it could be.
14:38:03 <fizzie> It is. How very. (Although it's marked as a XSI extension.)
14:47:51 <SimonRC> Bah, you need contionuations.
14:48:05 <SimonRC> Continuations are easy in assembler. Just a load of blitting.
14:49:18 <SimonRC> OTOH, laziness is sometimes a good alternative to coroutines.
15:26:52 <andreou> off to class, dogmatics 101
15:26:59 -!- andreou has quit ("the joys of theology").
15:59:11 -!- tgwizard has joined.
16:27:37 -!- sekhmet has quit (Read error: 110 (Connection timed out)).
17:04:05 -!- FabioNET has joined.
17:13:07 -!- ShadowHntr has joined.
17:14:39 -!- sekhmet has joined.
17:56:35 <GregorR> I am a computer programmed to chat on IRC.
17:58:19 <SimonRC> what about the pictures of you wearing hats?
18:00:57 <pgimeno> seen what happened to your colleague EgoBot some hours ago?
18:09:33 -!- sebbu has joined.
18:10:25 <GregorR> pgimeno: He was taking 25% of my CPU, so I killed him.
18:11:01 <lament> That's what i do to my girlfriends when I start thinking about them too much.
18:15:51 <pgimeno> I was suggesting to renice the launched program
18:16:25 <pgimeno> at least trying to keep EgoBot responsive so that !kill works
18:16:34 <lament> once they're not nice, they're not nice forever
18:17:05 <pgimeno> well, jewelry works with some
18:19:44 -!- sebbu2 has joined.
18:39:08 -!- sebbu has quit (Connection timed out).
18:39:10 -!- sebbu2 has changed nick to sebbu.
18:50:50 -!- wooby has joined.
18:54:02 -!- sebbu2 has joined.
19:13:35 -!- sebbu has quit (Read error: 110 (Connection timed out)).
19:13:36 -!- sebbu2 has changed nick to sebbu.
19:57:12 -!- proog has joined.
19:58:41 -!- proog has quit (Client Quit).
21:02:19 -!- ShadowHntr has quit ("End of line.").
21:35:17 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:01:59 -!- sebbu has quit (Connection timed out).
22:24:42 -!- ihope has joined.
22:26:48 -!- CakeProphet has joined.
23:13:48 <CakeProphet> classes than are friends have access to members in the private area of the class.
23:15:15 <lament> now that i think of it i do have some very hot friends
23:15:26 -!- tgwizard has quit (Remote closed the connection).
23:15:42 <CakeProphet> Friends have access to the private parts. :D :D :D
23:17:19 <lament> that's what being a friend is all about.
23:18:25 * CakeProphet is trying to think of uses for private members.
23:19:06 <bsmntbombdood> CakeProphet: I don't understand private stuff either
23:19:22 <lament> well you see, when a man loves a woman....
23:20:01 <CakeProphet> if you just have everything public by default... there's no real terrible loss.
23:20:42 -!- Sgeo has joined.
23:21:36 <CakeProphet> I'd find myself using virtual almost constantly.
23:22:24 <CakeProphet> virtual just means the member can be redefined in a subclass.
23:22:38 <CakeProphet> which.... I would imagine to simply be the default behavior.
23:22:59 -!- GregorR has quit (Read error: 110 (Connection timed out)).
23:29:06 <CakeProphet> I've recently started dabbling with self-replicating code..
23:31:01 <CakeProphet> the bottom string is applied to those replace rules for a number of iterations.
23:31:35 <CakeProphet> so abab would become babbab... which would become bbabbbab which would become bbbabbbbab
23:32:02 <CakeProphet> which could very well be the syntax of some other language... called baa
23:32:51 <oklopol> download a thue interpreter :\
23:32:54 <CakeProphet> The main use I see for something like that would be... fractals.
23:38:19 -!- wooby has quit (Read error: 104 (Connection reset by peer)).
23:38:37 <CakeProphet> I was thinking that you could probably unify the declarative phase and the input-string phase..
23:38:49 <CakeProphet> as well as add some more tidbits for context-based and probabilistic matches.
23:41:05 <CakeProphet> so you could like... redefine the replacement declarations via the replace declarations.
23:44:55 <ihope> Thue is obsolete. Use Thubi instead.
23:45:30 <ihope> And then you can write a language better than both, but still based on the same principle, and call it Thusi.
23:45:57 <ihope> I imagine Thudi would be next, followed by Thui. From then, I have no idea.
23:47:21 -!- FabioNET has quit ("notte notte").
23:49:24 <CakeProphet> escape characters have plagued the programmers existence.
23:49:48 <CakeProphet> how is it that we can represent multiple, otherwise non-printable entities???!?!?!?!?1
23:50:20 <ihope> !?!?!??!??!?!!!?!?!?!??!
23:51:59 <CakeProphet> if you use replacements to conditional execute replacements.
00:49:11 -!- pikhq has joined.
00:55:28 -!- ShadowHntr has joined.
00:57:07 <CakeProphet> I'm not even sure how to go about Hello, World!
00:57:09 <pikhq> I'm not sure of the computational class. . .
00:57:20 <pikhq> Maybe a finite state automaton?
01:00:28 <CakeProphet> the self-modifying-ness of it makes it more computationally powerful than any finite state automaton I'd imagine in my head.
01:09:51 -!- ihope_ has joined.
01:24:47 <pikhq> CakeProphet: It transorms from state foo to state bar.
01:24:55 <pikhq> That seems to me to be a finite state automaton.
01:25:32 <CakeProphet> the data is encoded in the source code itself
01:25:53 <pikhq> And the difference matters. . . how?
01:27:48 -!- ihope has quit (Read error: 110 (Connection timed out)).
01:28:25 <CakeProphet> pikhq, because the "state" of the program is its value(s) in memory.
01:28:33 <CakeProphet> the interpreter... is not its value in memory.
01:28:54 <pikhq> The interpreter performs the modifications of the state.
01:29:02 <pikhq> This difference doesn't matter.
01:29:36 * CakeProphet tries to understand... but still doesn't see the connection.
01:30:18 <CakeProphet> If your interpreter oscillated between a Perl and Python interpreter... you wouldn't call that a finite state automaton.
01:31:32 <CakeProphet> there's only one variable... the length of the source code.
01:31:42 <CakeProphet> which can be any number... but ultimate has 256 states.
01:32:00 <CakeProphet> so that would probably make it a finite state automaton.
01:33:14 <pikhq> What makes it a FSA is the transition between a finite amount of states.
01:34:23 <CakeProphet> not the two interpreters... which isn't even a state... just a means to an end.
01:35:05 <CakeProphet> if both your interpreters could manipulate and perform any computation... the existence of two interchanging interpreters does NOT make it finite state.
01:35:46 <CakeProphet> I'm just saying the transitioning interpreters has nothing to do with the finite number of states.
01:39:10 <bsmntbombdood> #define NOTE(args...) if(debug) {char m[1024]; snprintf(m, 1023, args); fprintf(stderr, "%s:%d, %s: %s\n", __FILE__, __LINE__, __func__, m); }
01:39:46 -!- ryanakca has joined.
01:40:23 <ryanakca> where can I find the interpreter for Glass? the link on the wiki is down...
01:45:20 -!- calamari has joined.
01:47:19 <pikhq> I think the wiki link is just old. . .
01:47:28 * pikhq tries finding Gregor's current version
01:48:18 <pikhq> http://esoteric.voxelperfect.net/files/glass/ Ahah!
01:51:24 <ihope_> They don't call him eGoBot for nothing.
01:51:54 <pikhq> Gregor's down, tooo. Go figure.
01:53:38 -!- ihope_ has changed nick to GregorR.
01:53:52 <ryanakca> heh, he included his bot in with glass :)
01:54:42 <pikhq> I. . . Think that's the wrong source?
01:54:54 -!- GregorR has changed nick to ihope.
01:55:10 <ihope> I seem to know remarkably little about imitating GregorR, actually.
01:56:41 <ryanakca> hmm... he even seems to have included instructions on running the bot :) nc -e ./glassIRC.sh irc.freenode.net 6667 ... glassIRC.sh contains: ./glass cache GlassBot GregorR esoteric > GLASSOUT
01:59:18 <pikhq> That's just a script for running Glass via IRC.
01:59:24 -!- calamari has left (?).
01:59:34 -!- EgoBot has joined.
01:59:59 <pikhq> I think he was trying to make an IRC bot in IRC.
02:01:44 -!- EgoBot has changed nick to calamari.
02:04:02 <ryanakca> !glass {M[m(_o}O! "Hello World!"(_o)o.?]}
02:04:03 <calamari> I can bring in EsoBot.. but it won't run glass ;)
02:05:33 -!- EsoBot has joined.
02:05:41 <EsoBot> Commands: bf, cat, help, kill, ls, ps, quit, unnecessary.
02:06:21 <pikhq> Your own bot, I take it?
02:06:30 <pikhq> CakeProphet: In theory, sure.
02:06:34 <calamari> yeah.. it inspired the creation of EgoBot
02:06:36 <pikhq> Doesn't mean I'd want to.
02:06:54 <CakeProphet> you'd need an organized way to partition variables and reference them by name.
02:07:23 <calamari> unless variable names were limited to a single character
02:07:26 <pikhq> But, since BF is Turing complete, it's possible.
02:07:34 <pikhq> Not necessarily easy, but possible.
02:08:03 <CakeProphet> you jsut have a range for each possible class name...
02:08:06 <pikhq> CakeProphet: Actually, "memory" is in the stack.
02:08:23 <pikhq> The issue is that you'd only have a limited amount of objects out there at a time.
02:09:12 <calamari> I don't remember how to run it.. hehe
02:09:24 <CakeProphet> I could see it being much more feasible if each class, variable, string, and integer were limited to a byte in size.
02:09:34 <EsoBot> Commands: bf, cat, help, kill, ls, ps, quit, unnecessary.
02:10:10 <pikhq> E!bf Mismatched [.
02:10:22 <pikhq> It's a quine in some interpreters. ;)
02:11:53 <CakeProphet> just spitting out an error message that triggers an error message.
02:12:50 <calamari> E!bf +++++++++++++++++++++++++++++++++++++++++++++++++++++++.
02:15:14 <calamari> E!bf http://rafb.net/p/PR5bhv59.txt
02:15:17 <EsoBot> Hangman started! Type `/msg EsoBot <pid> <word>\n' to start a game!
02:17:11 <EsoBot> ______ ___!______ ___! | Type `E!<pid> <guess>\n' to guess a letter!
02:17:37 <calamari> guess you really do need to put the text '\n'
02:17:38 * pikhq laughs at calamari's inefficient high-level language that compiles to Brainfuck. . .
02:17:53 * pikhq gently hugs BFM, as well. . .
02:19:25 <EsoBot> E_____ ___!E_____ ___! | []
02:20:20 <EsoBot> Es____ ___!Es____ ___! | []
02:20:42 <calamari> pikhq: running on top of java no less ;)
02:21:17 <CakeProphet> where can I get a list of all the IRC commands.
02:21:39 <pikhq> I should count myself lucky that I do optimization.
02:21:44 <pikhq> CakeProphet: The IRC RFC.
02:22:59 <calamari> how close was I to the actual number?
02:23:05 <pikhq> calamari: I dunno.
02:24:14 <calamari> CakeProphet: going to write a bot?
02:26:01 <pikhq> I find the best way to learn a language is to write something useful in it. . .
02:26:02 <CakeProphet> and Python has the advantage of being way more dynamic.
02:26:14 <CakeProphet> yeah well... fuck you and your "learning by doing"
02:26:16 <pikhq> Although yeah, Python would be better for an IRC bot.
02:26:38 * pikhq would use Tcl, but mostly just because I know Tcl, and know of a premade IRC parser for Tcl.
02:27:01 <CakeProphet> they could have shortened all the IRC commands to single bit values.
02:27:34 <pikhq> That's great and all, but telnet doesn't have "commands" per se. . .
02:28:23 <CakeProphet> PRIVMSG could be like... byte value 1, etc
02:28:23 <pikhq> And the idea behind most RFC protocols is to be human-grokable.
02:29:05 <pikhq> Could a human run IRC via telnet?
02:29:11 <pikhq> If no, it's not human-grokable.
02:29:21 <pikhq> And the word is "grok", not "grock".
02:29:35 <CakeProphet> I'm not sure WHY you would want to run IRC raw...
02:29:52 <pikhq> It's one of the driving ideas behind most of the RFC protocols.
02:36:58 -!- ShadowHntr has left (?).
02:45:43 <CakeProphet> I'm assuming freenode is nice and buffers its output until it gets a newline?
02:45:53 <CakeProphet> if not... oh well... I guess I'll find out. :P
02:46:23 <pikhq> I'm pretty certain it does. . . But I'm not sure.
02:47:13 -!- Sgeo has quit ("Leaving").
03:19:50 <EsoBot> Eso_o_ ___!Eso_o_ ___! | []
03:20:29 <EsoBot> Eso_o_ ___!Eso_o_ ___! |- [x]
03:20:39 <pikhq> That interpreter is slow.
03:20:49 <EsoBot> EsoBo_ ___!EsoBo_ ___! |- [x]
03:20:59 <EsoBot> Invalid command `t\n'.
03:21:02 <bsmntbombdood> Someone right a brainfuck interpreter for bsmnt_bot
03:21:15 <pikhq> bsmntbombdood: Call egobfi.
03:21:27 <EsoBot> EsoBot _T_!EsoBot _T_! |- [x]
03:22:09 <pikhq> It's Gregor's Brainfuck interpreter.
03:22:19 <pikhq> Used in Egobot. . . Really fast, rather good.
03:23:10 <pikhq> Egobfi is small. . .
03:24:08 <EsoBot> EsoBot _T_!EsoBot _T_! |-: [xq]
03:24:09 <pikhq> 520k uncompressed. . .
03:24:51 <EsoBot> EsoBot _T_!EsoBot _T_! |-:( [xqz]
03:25:15 <EsoBot> EsoBot _T_!EsoBot _T_! |-:(< [xqzj]
03:26:10 <pikhq> Also, most of the source is in the build system. . .
03:26:17 <pikhq> Autoconf and automake take a lot of space.
03:27:17 <pikhq> It's 200k without the build system.
03:27:41 <pikhq> And it's a really, really fast interpreter. . .
03:29:19 <pikhq> It's optimize() which makes it rather impressive. . .
03:29:52 <calamari> bsmnt_bot: write your own bf interpreter ;)
03:31:03 <calamari> someday I need to finish my bf interpreter for the hp 41cx calculator
03:31:27 <pikhq> bsmntbombdood: Well, yeah. . . I am tempted to give him some stylistic improvements.
03:33:04 <pikhq> It is, in essence, a piece of Gregor code. ;)
03:35:36 <pikhq> Depends upon your feelings towards ORK.
03:35:40 -!- bobot has joined.
03:37:26 <pgimeno> #malbolge (=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
03:37:41 -!- pikhq has quit ("leaving").
03:41:14 <pgimeno> #bf ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
03:43:23 <bsmntbombdood> so, optimize() not only optimizes, but compiles too
03:43:38 <SimonRC> Problems that sound interesting but are trivial number 42:
03:44:03 <SimonRC> HPL(k): hamiltonian path length (k):
03:45:25 <SimonRC> "Given a graph with a Hamiltonian path, does it have a Hamiltonian path of at most k steps?"
04:04:17 -!- bobot has quit ("bye bye!").
04:17:00 -!- GregorR has joined.
04:17:08 -!- EsoBot has quit ("requested by calamari").
04:19:51 <calamari> does it get pretty cold there?
04:21:23 <calamari> man.. this bug is driving me crazy
04:21:35 <GregorR> No, this kind of weather is totally unheard of.
04:21:50 <GregorR> It's usually sleet and hail when it's that cold.
04:22:49 -!- CakeProphet has quit (Read error: 113 (No route to host)).
04:23:41 <calamari> we get snow once maybe every 7-10 years or so
04:24:27 <calamari> but there is snow on the mountain, so we could go up there if we wanted to
04:26:10 <GregorR> Last time I saw any real snow ... hmmm ... Idonno ...
04:29:57 <bsmntbombdood> ok, i KNOW that this code could be more compact: http://pastebin.ca/319229
04:32:47 <GregorR> Could it be more compact? Maybe.
04:34:21 <GregorR> Mind you, I'm not confident that it's /useful/ ;)
04:34:37 <GregorR> But for serving its fairly un-useful purpose, it's a nice way to do it.
04:39:55 <bsmntbombdood> Your use of global variables was so bad, I have to write my own now
04:46:20 <GregorR> I haven't read that code in sooooooooooooooooo long.
04:59:19 <GregorR> LPO = LooP Open, LPC = LooP Close
05:38:55 -!- calamari has quit ("Leaving").
05:51:42 -!- oklopol has quit (Read error: 110 (Connection timed out)).
06:02:08 -!- ShadowHntr has joined.
06:19:48 -!- wooby has joined.
06:27:11 -!- wooby has quit.
06:28:54 -!- wooby has joined.
06:33:49 -!- oerjan has joined.
06:48:28 -!- ShadowHntr has quit (Client Quit).
07:01:57 -!- Asztal has joined.
07:06:49 <Asztal> IRP allowed? they've stopped now? ;)
07:07:43 <Asztal> The people who would find out about IRP on some social bookmarking site and come in here to test it
07:08:13 <oerjan> Ah yes. What _was_ that site, anyhow...
07:10:28 -!- oerjan has quit (Remote closed the connection).
07:10:32 -!- oerjan has joined.
07:22:44 -!- wooby has quit.
07:26:38 <lament> hm, i've never seen those people
07:26:58 -!- wooby has joined.
07:28:32 <lament> http://www.stumbleupon.com/url/esoteric.voxelperfect.net/wiki/IRP
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:08:50 -!- oerjan has quit ("Not sticking around").
10:26:17 <SimonRC> lament: I see that you are a Go player from your exit message on #irp. I am too, but this is not the time to talk about it, alas.
11:48:01 -!- ais523 has joined.
12:02:11 -!- ais523 has set topic: #esoteric - the international hub for esoteric programming language design and deployment - map: http://www.frappr.com/esolang - forum: http://esolangs.org/forum/ - EgoBot: !help (currently down) - wiki: http://esolangs.org/wiki/ - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric - for brainfuck-specific discussion, go to ##brainfuck - IRP ALLOWED - Pastebin: http://pastebin.ca/.
12:02:30 <ais523> For those who don't know, it was me who caused EgoBot to crash
12:03:13 <ais523> I fed it an infinite loop written in Unlambda, and it sent me an infinite number of copies of the letter 'b' in response, until it got thrown out
12:56:08 -!- ihope has quit (Read error: 110 (Connection timed out)).
14:05:11 -!- ais523 has quit ("this quit message is boring").
15:08:15 -!- proog has joined.
16:11:40 -!- ShadowHntr has joined.
16:17:10 -!- ShadowHntr has quit ("End of line.").
16:22:15 -!- sebbu has joined.
16:33:44 -!- proog has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]").
16:44:41 -!- jix__ has joined.
17:05:08 -!- tgwizard has joined.
17:40:51 -!- oerjan has joined.
18:25:04 -!- wooby has changed nick to juan_valdez.
18:25:09 -!- juan_valdez has changed nick to wooby.
18:51:53 -!- digital_me has joined.
18:53:01 -!- jix__ has changed nick to jix.
19:21:39 -!- surye has quit (Remote closed the connection).
19:47:54 -!- ShadowHntr has joined.
20:15:13 -!- oerjan has quit ("Despair").
20:29:33 -!- sebbu2 has joined.
20:40:09 -!- ihope has joined.
20:48:45 -!- sebbu has quit (Read error: 110 (Connection timed out)).
20:48:45 -!- sebbu2 has changed nick to sebbu.
20:53:19 -!- oklopol has joined.
21:34:04 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:06:40 -!- CakeProphet has joined.
22:30:05 <bsmntbombdood> I came up with an awesome esolang in math class just now
22:30:36 <bsmntbombdood> We have 2 stacks, an empty stack is filled with zeros
22:35:23 <CakeProphet> I'm not familiar with how to use logs to achieve nifty computations.
22:36:06 <CakeProphet> I've been dabbling around with Thue-like ideas.
22:36:18 <CakeProphet> I'm going to be working on this one for a while I think..
22:36:39 <CakeProphet> for generating fractalic structures for other languages.
22:37:16 <CakeProphet> Like Thue... but with a decent ability to do computations and express structures.
22:40:10 -!- Sgeo has joined.
22:40:14 * ryanakca deletes all of CakeProphet's PERL stuff :P
22:40:35 * ryanakca pulls the plug before CakeProphet saves his specification
22:41:01 <ryanakca> Thue? fractalic structures? double-stack?
22:45:49 <ryanakca> The stuff you set up in cygwin or whatever and that you were all thrilled about?
22:57:40 <bsmntbombdood> ok, my interpreter works, except for looping, because that's hard
22:59:55 <oklopol> what are you making it with?
23:00:10 <oklopol> in python nothing is hard!
23:00:44 <oklopol> hah you'd be so pissed if i made that language before you, bsmntbombdood :)
23:00:52 <ryanakca> CakeProphet: what do you say I start bugging oklopol with all my python problems?
23:01:16 <oklopol> you can't solve python problems
23:01:27 <ryanakca> CakeProphet: give you a break...
23:01:37 <ryanakca> oklopol: well... you can solve mine... :D
23:02:33 <oklopol> bsmntbombdood, the operations only work on the other stack?
23:02:44 <oklopol> stack 2 is just for storing
23:03:27 <oklopol> or do i have to do my own?
23:04:28 <ryanakca> btw... what's the difference between logarithm & algorithm?
23:06:04 <ryanakca> s/difference/difference & similarity
23:08:14 <bsmntbombdood> I can't get cpp not to tell me a bunch of stuff I don't want to know
23:08:33 <ryanakca> oklopol: (log base a)(a^x) = x doesn't mean anything to me...
23:09:51 <oklopol> well, we learned it today, officially
23:10:08 <oklopol> tho it's pretty basic stuff if you program
23:10:25 <oklopol> programmers know everything.
23:10:45 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
23:13:26 <oklopol> stack1[len(stack1)-1]=input()
23:13:43 <oklopol> i never really read about pythons io
23:14:36 <ryanakca> oklopol: ok... know what it is... why should I care about it... what would I use it in?
23:15:13 <oklopol> bsmntbombdood, floating point?
23:18:36 <oklopol> i might have it... tho i don't know how it's useful
23:18:54 <oklopol> you can only create 1's and zeroes with the log and subtraction :\
23:19:48 <bsmntbombdood> And I mean swap the top two values on the stack in this language
23:20:05 <oklopol> stackz[len(stackz)-2],stackz[len(stackz)-1]=stackz[len(stackz)-1],stackz[len(stackz)-2] then?
23:20:22 <oklopol> or am i missing something?
23:20:55 <oklopol> that is not my code, that's the swap :\\
23:21:21 <bsmntbombdood> Not swap inside the interpreter, but swap in the language
23:21:24 <oklopol> i use append, i didn't know about pop :)
23:21:43 <oklopol> but, can you give me something to run?
23:22:37 <oklopol> ryanakca, for a simple and useless example, if you wanna converta number to a spesific base and allocate only what's necessary, you can use logs to calculate the length of the final string :)
23:23:46 <oklopol> once again i got it working right away but couldn't use it right and thought it was flawed :D
23:24:15 <oklopol> something hard that can fail actually... i assume you coded something in the math class :)
23:24:44 <CakeProphet> ryanakca, An algorithm is just "an ordered procedure of steps that produces a desired outcome"
23:24:48 <oklopol> hmm... 6 hours till school and 10 english tasks to do and i'm coding again :(
23:25:02 <CakeProphet> logarithm is just the inverse of the exponent function.
23:25:29 <oklopol> 11g1-- will produce 2 right?
23:25:58 <oklopol> hmm, i don't specify the base
23:26:10 <oklopol> math.log(numz, [baze]) is it?
23:26:22 <oklopol> i just have math.log(...) now
23:27:08 <CakeProphet> if all else fails just use the help function.
23:27:52 -!- fatalis has joined.
23:28:01 -!- fatalis has left (?).
23:28:22 <oklopol> i'd do it faster in c++ prolly but i'd have to make a project :\
23:28:52 <oklopol> 1 1-1-1->1 1-<- === 11g1--
23:30:24 <oklopol> 1 1g 1 -- == 1 0 1 -- == 1 (-1) - == 1+1 == 2
23:31:17 <oklopol> bsmntbombdood, you must have it if you use it :\
23:31:33 <oklopol> you have c++++++++++++++++++++++
23:31:43 <oklopol> i always think of you as one of the python guys
23:32:25 <oklopol> TypeError: log() takes exactly 1 argument (2 given)
23:32:40 <oklopol> stack1[len(stack1)-1]=math.log(stack1[len(stack1)-1],2)
23:34:38 <oklopol> yeah, figured that just now
23:36:41 <oklopol> but it's kinda obvious non-looping works
23:37:00 <oklopol> and i'd be pretty suprised if the rest didn't :\
23:37:23 <oklopol> not my first brainfuck-loop exactly
23:39:04 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
23:39:20 <oklopol> that was the worst explanation ever
23:39:45 <oklopol> when i encounter [ i set opens=1, then go right until opens==0 while [ incs, ] decs
23:42:14 <oklopol> http://cpp.sourceforge.net/?show=27733
23:42:28 <oklopol> (pastebin.ca wasn't a link :>)
23:42:54 <oklopol> i hate whitespace, sorry about that
23:43:48 <oklopol> i'm not sure if stack1=stack1[:-1] means cut off last
23:44:56 <oklopol> runsome("11g1--11-11g1----11-11g1--11-11g1------g.")
23:45:04 <oklopol> will call it and produce 3
23:46:02 <oklopol> 1g11g-1-11g1---- is also 3
23:48:12 <oklopol> which is the index of code which is the code string
23:48:28 <oklopol> if stack1[len(stack1)-1]!=0:
23:49:36 <oklopol> why does it not do anything?
23:49:58 <oklopol> and that's what a loop does, changes IP, right?
23:50:50 <oklopol> i've done more that 20 bf-interpreters
23:53:24 <oklopol> return "11g"*(n-1)+"1"+"--"*(n-1)
23:55:10 <oklopol> hmm... do i do a generic number-> bsmntbombdood-code function or english?
23:55:34 <oklopol> i'm not sure about my math skills tho
23:56:12 <oklopol> you know, everytime you use a question mark, i check everything i said for 20 lines
23:57:02 <bsmntbombdood> <oklopol> hmm... do i do a generic number-> bsmntbombdood-code function or english?
23:57:47 <oklopol> with logarithms it's hard to get the exact number but you get close enought
23:58:13 -!- ShadowHntr has quit ("End of line.").
23:58:43 <oklopol> i don't think you can retrieve a single rational non-integer with logs
23:58:53 <oklopol> is it mathematically possible?
00:00:40 <oklopol> <bsmntbombdood> <oklopol> hmm... do i do a generic number-> bsmntbombdood-code function or english?
00:03:43 <oklopol> god i love metaprogramming :O
00:03:49 <oklopol> how come i never did it before?
00:03:50 <oklopol> >>> def printnumsfromntozero(n):
00:03:50 <oklopol> return makenumber(n)+"[.1-].]"
00:03:50 <oklopol> >>> printnumsfromntozero(7)
00:03:50 <oklopol> '11g11g11g11g11g11g1------------[.1-].]'
00:03:50 <oklopol> >>> runsome("11g11g11g11g11g11g1------------[.1-].]")
00:03:52 <oklopol> 7.0 6.0 5.0 4.0 3.0 2.0 1.0 0.0
00:04:28 <oklopol> should open c++... i'll start liking that lang soon :<
00:05:15 <oklopol> yeah, the ordo is not optimal
00:05:27 <oklopol> i mean O(n) to create a number
00:06:47 <oklopol> my bot does that, believe, it's not that nice
00:12:13 <oklopol> and wait 10 min for the generic one
00:15:27 <oklopol> does python have err... err.... err..... binary logical operators?
00:17:35 <oklopol> hmm i assumed being able to create 0.5 automatically makes it easy to create 0.25 etc :)
00:20:34 <bsmntbombdood> ">g<g ADD" puts the log of the product on top of the stack
00:20:59 <oklopol> then inverse would be nice
00:21:11 <bsmntbombdood> right, but I don't want to have to add another operation
00:21:44 <oklopol> makes fractions nice to do
00:22:34 <oklopol> i can't think of anything else
00:23:00 <oklopol> i'll test before i say anything more stupid
00:25:14 <oklopol> haven't fiddled with logarithms in ages
00:25:27 -!- ihope has quit (Read error: 104 (Connection reset by peer)).
00:29:42 <oklopol> i thought there was a correlation between either logarithms with inverted base, but there seems not to be
00:29:53 <oklopol> (i'm not good at math, i just guess :))
00:30:56 -!- sebbu has quit ("@+").
00:31:13 <bsmntbombdood> ok, for now i've added an operation "p", which inverts "g"
00:33:54 <oklopol> but, if you need decimal numbers, i'd say square root being a sister operation of a 2-base logarithm would make a nice addition to the lang... unless there is a nice way to do numbers with logs
00:34:07 <oklopol> decimal numbers -> floating point values
00:34:19 <oklopol> -> rational non-integer numbers
00:35:03 <ryanakca> oklopol: back, sorry, kk, thanks
00:35:35 <oklopol> you need logs when calculating loans etc
00:35:35 <lament> what's a decimal number?
00:35:55 <oklopol> lament, i used the wrong term
00:36:59 * ryanakca gives oklopol a poison cookie :)
00:40:08 <lament> so many people get the terminology wrong :(
00:47:30 <bsmntbombdood> my source: http://bsmntbombdood.mooo.com/logfuck.py.txt
00:50:19 <oklopol> but, i had to make it in 10 minutes to be first :)
00:54:57 <oklopol> i'm gonna hate myself when i see it :)
01:02:58 <oklopol> since sqrt is the only way to get 0.5, that's hard
01:03:49 <oklopol> but, you see, then you don't need sqrt
01:04:15 <CakeProphet> floating points numbers are a tad... limited.
01:04:23 <oklopol> CakeProphet, you are limited
01:05:32 <oklopol> i can make a num conversion
01:05:52 <oklopol> and it'll make it to the spec and i'll be a hero -_____-
01:06:29 <oklopol> conversion of a number into lf-code
01:06:58 <oklopol> but, it wouldn't be very optimal
01:07:10 <bsmntbombdood> I'm going to change output from decimal to ascii now I think
01:07:45 <CakeProphet> >>> float("0." + "".join(["565656534" for x in xrange(100000)]))
01:09:01 <oklopol> i want 10-base to be illegalized
01:10:02 <CakeProphet> you could consequitely move items from one stack to the next.
01:12:07 <bsmntbombdood> It's not turing complete unless I can implement dup I think
01:12:55 <oklopol> hmm, there is no way to use a number in a calculation without even then only having it in one place again... i think
01:13:42 <oklopol> and using that one IN ANY WAY with the number to duplicate will destroy the original number
01:13:50 <oklopol> and you have the same prob with the new one
01:14:10 <oklopol> i think i can prove it's impossible... but that's all i can do :\
01:14:26 <oklopol> ...if it's impossible, that's pretty obvious tho :)
01:16:00 <oklopol> [ could copy the topmost, ] could pop :P
01:16:39 <oklopol> nah, wouldn't work... i think
01:16:49 <oklopol> because you still couldn't dup for example
01:18:15 <oklopol> i didn't understand > and < right, yeah, it was good
01:22:11 <oklopol> mine says list index outta range
01:22:18 <oklopol> but i didn't allow that anyway
01:26:08 <oklopol> n, -> (start of loop) n n, -> n, n -> (end of loop) n 0, n -> n, n -> n n,
01:26:24 <CakeProphet> I wonder how you would use a tree as a languages data structure.
01:27:10 <oklopol> you can have tree data structures as vars then
01:27:53 <CakeProphet> You could probably do something with genetics.
01:28:09 <oklopol> > goes left, < goes right, ^ goes up, so navigating is like bf but you can reserve infinite certain memory for vars
01:28:36 <CakeProphet> you could take a lisp-ish approach and make the program a tree.
01:29:18 <oklopol> you could just code it as a tree, no ascii shit
01:29:31 <oklopol> i don't understand why everything must be coded in ascii...
01:29:55 <oklopol> except for cellular automatons
01:30:17 <CakeProphet> could do something like wireworld... but different.
01:30:36 <oklopol> how do you drp? bsmntbombdood
01:30:58 <oklopol> what was wrong with my n, -> (start of loop) n n, -> n, n -> (end of loop) n 0, n -> n, n -> n n, tho?
01:31:46 <CakeProphet> FRACTALIC SELF-REPRODUCING EVOLUTIONARY GENETICS CODE
01:31:58 <oklopol> but but, what was wrong with the move? :'(
01:32:53 <oklopol> i did it destructively in n, -> (start of loop) n n, -> n, n -> (end of loop) n 0, n -> n, n -> n n, i think
01:33:06 <CakeProphet> I'd like to make an esolang larger than a few commands and a tiny interpreter.
01:33:56 <oklopol> how do the stacks evolve then?
01:34:19 <oklopol> because making > copy is not nice if it's not needed
01:34:27 <oklopol> because it's not very intuitive
01:34:48 <oklopol> and i think an esoteric language should always be intuitive... according to it's own rules
01:35:15 <CakeProphet> a genetic language isn't coming into my head intuitively.
01:36:00 <CakeProphet> you have some stuff... and some other stuff... and some stuff that tests that stuff...
01:36:08 <CakeProphet> and something to put it all in... an environment.
01:37:04 <oklopol> i thought of making a language with the most basic component being flock movement... but if that's not done yet, i pity mankind
01:37:42 <CakeProphet> or better yet... just make one starting code... the source code.
01:38:31 <CakeProphet> swap genes... reproduce... you have a bunch of source codes now.
01:38:39 <oklopol> first of all you need a lot of redundancy
01:38:48 <CakeProphet> and some start dying... the ones that you don't want.
01:39:16 <CakeProphet> but I don't want DNA.... the thought of coding in DNA-like language kinda makes me want to puke.
01:39:40 <oklopol> the codes you have first should be quines that are altered then executed until more new executable code is randomly created
01:40:00 <CakeProphet> maybe borrow some ideas from Thue-like-ness?
01:40:05 <oklopol> but, the language should aim at creating itself
01:40:26 <CakeProphet> I've been tossing through ideas like that.
01:40:37 <CakeProphet> a language that contains the instructions for creating itself
01:40:38 <oklopol> it need not have any other operation than cloning itself, changing thing to their "synonyms" etc
01:40:59 <CakeProphet> well... there needs to be some form of sexual interchange... otherwise you just have a bunch of clones.
01:41:26 <oklopol> we can leave out randomness then
01:42:16 <oklopol> because with one we'd need a seed, with two (that reproduce collaboratively) they are each others seeds, more sensible
01:42:29 <oklopol> but the seed could then be a random program
01:42:46 <oklopol> since all programs should of course be always-executing
01:43:01 <oklopol> but, redundant operations just wouldn't produce themselves
01:43:19 <CakeProphet> hmmm... the program instructions could correspond with each other...
01:43:25 <oklopol> so there would always be a random amount of nops that always die
01:43:35 <CakeProphet> do different things for two different pairings?
01:44:01 <oklopol> yes, these pair could be made so that best result i gotten
01:44:19 <oklopol> my s's are becoming extinct
01:44:39 <oklopol> did you coin that term just now?
01:45:22 <oklopol> i thought it was brilliant :)
01:45:37 <oklopol> since it mixes two progs while optimizing automatically
01:46:06 <CakeProphet> by program.. do you mean hard file or... separate 'halves"
01:46:19 <oklopol> i need more complicated english here than in my homework :\
01:46:21 <CakeProphet> you could have two different files get it on as well.
01:47:10 <oklopol> each instruction is two bytes, like +/ () %% etc
01:47:52 <oklopol> random one of the pair is picked
01:48:12 <CakeProphet> hmmm... I don't think randomality could produce optimizations... but... who knows.
01:48:39 <oklopol> mixing program " ## 1%" with "aG oo /\" could be "G #o %\" for example
01:48:50 <oklopol> you could optimize it afterwards
01:48:54 <CakeProphet> it would be in the... massive amounts of this occuring.
01:49:26 <oklopol> well, optimizing isn't really fair play in a sence... nature doesn't have it :P
01:49:39 <CakeProphet> it would be neat if you could strategically plan the flow of an evolution chain... to produce some desired result... but that sounds kind of far-fetched and vague.
01:50:07 <oklopol> we'd just have an algorithm to check for sanity in the program to skip evolution when a species is due to die pretty soon
01:50:10 <CakeProphet> what about environment... no environment? Should the programs start killing each other? What about a "species change"
01:50:38 <oklopol> you can always have a 2D map to emulate them living there...
01:51:00 <CakeProphet> that could be another part of the program? or... too much?
01:51:36 <CakeProphet> but with... programs running around in it. :D
01:51:53 <oklopol> you'd make programs (prolly at random), then put 10000 of them on the screen and see what happens
01:52:12 <oklopol> the dna would be executed differently when doing different thigs
01:52:29 <oklopol> like, walking could be specified in a certain part of the code
01:52:37 <oklopol> all codes equal length for simplicity
01:53:01 <CakeProphet> yah... I like complexity springing out of simplicity...
01:53:12 <oklopol> yeah, ok, it's quite a simple lang :)
01:53:47 <CakeProphet> an organism is a set of functions... each being the original code we were talking about... pairs of opcodes.
01:53:51 <oklopol> functional is not that good since it needs what's it called...
01:54:06 <CakeProphet> I got the idea from when you mentioned walking.
01:54:42 <oklopol> a creature would map the command to walk in any function it wants
01:54:49 <oklopol> once again depending on it's code
01:55:01 <oklopol> and, it would create functions at random
01:55:26 <CakeProphet> and then there should be functions for EATING PEOPLE
01:55:50 <CakeProphet> I kinda liked having deterministic functions though... random could help spur on genetics.. somehow.
01:56:10 <oklopol> yes, once again it would be feeded all the necessary information, and requested what it'll do, it would map these commands into whatever functions it wants to
01:56:36 <oklopol> functions should be deterministic
01:56:45 <oklopol> but new ones could be created
01:56:49 <CakeProphet> Start off with just two creatures... and an environment source... either being in different files or in the same source... either way.
01:57:38 <CakeProphet> The environment would provide much of the constaints... while perhaps evolving and changing itself. :)
01:58:00 <oklopol> i loved making 2D life simulator when i was little (with set vars, not code)
01:58:09 <oklopol> little... i'm still little
01:58:49 <CakeProphet> the rest of the conditioning would come from interactions with creatures... collisions in the environment basically.
01:58:53 <oklopol> haha, plants that are creatures that lost the ability to move at some point :D
01:59:39 <CakeProphet> might as well... while we're at it... planning a big-ass game of life.
01:59:53 <oklopol> i'd like their code to be eaten :)
02:00:09 <oklopol> no variables, just wrecking of each others functions when hit
02:00:34 <CakeProphet> stationary creatures would eventually get better at either eating other creatures or gaining energy from the environment (like a form of photosynthesis... although maybe not from any "light" source)
02:01:10 <oklopol> trues... the code could be in such a format that removing it would probably not change anything
02:01:39 <CakeProphet> should there be set functions for actions?
02:01:50 <CakeProphet> or... should it somehow determine which function to use?
02:02:11 <oklopol> i think it should do it's own mapping, but it's kinda too random then
02:02:14 <CakeProphet> well... there should be a "sex" function...
02:02:48 <oklopol> or, when encountering, a function to determine what they do to each other
02:03:30 <oklopol> when actually implementing
02:03:37 <CakeProphet> when they collide... behavioristic traits determine what actions are taken... which are functions themselves.
02:03:39 <oklopol> a simpler one should be done first
02:03:47 <CakeProphet> aha... "behaviors" are functions that determine what function is to be used!
02:04:10 <oklopol> taking the other creatures functions to determine it
02:04:27 <CakeProphet> so the functions would need to have some sort of manipulatable data.
02:04:37 <oklopol> they look at each others code, if it seems the other would attack, there's no use emitting seed on it
02:04:57 <oklopol> we'll create the ultimate AI another time...
02:05:18 <CakeProphet> there will need to be a lot of modality in the source I think..
02:05:26 <oklopol> the language should have a lot of functions for determining stuff about itself too :)
02:05:46 <CakeProphet> or at least... the symbols carry different semantics depending on where they're at.
02:05:54 <CakeProphet> a definetely like the idea of "behaviors" and "actions"
02:05:58 <oklopol> but, would this be a game for two ppl to play making their own populations and seeing which one wins or just experiment?
02:06:00 <CakeProphet> and maybe "traits"... for simple axiomatic shit.
02:06:17 <CakeProphet> I was kinda thinking you could use it to... compute shit...
02:06:27 <CakeProphet> far-fetch yeah... it sounds more like a fun game.
02:07:17 <oklopol> i've not yet seen the real strategy in corewars, but i must've gotten something wrong, never played
02:07:55 <CakeProphet> so... traits (test functions), actions (executive functions that employ traits), and behaviors (functions that use traits, combined with the input of another creatures behavior function to trigger a specific action)
02:08:45 <oklopol> yeah, if those are made by the creator of the creature, would be cool
02:09:00 <CakeProphet> environment... could be a set of symbols on a 2D space.
02:09:44 <CakeProphet> or.. just like... basic commands and stuff
02:10:07 <oklopol> <<>.> okay, this is a nop since i should be doing my tasks :)
02:10:41 <oklopol> this discussion, i don't have time for it now :D or for anything
02:11:05 <oklopol> but... there are a lot of tasks :\
02:11:37 <oklopol> and if i don't get them before tomorrow, i'll not be able to do the matriculation exam of english this spring
02:11:50 <oklopol> (might be finland spesific)
02:12:06 <oklopol> because i forgot to do them when i should've
02:12:14 <CakeProphet> I have a tendency to... leave projects unfinished... and start a lot of stuff.
02:12:23 <CakeProphet> and.. not finish crap because I get distracted by ideas.
02:12:34 <oklopol> i'll finish them usually when i can do it in 4 hours :)
02:13:02 <oklopol> one time i took my 3 year old unfinished projects and finished them all during the afternoon
02:13:17 <oklopol> (but they were mostly hello worlds :))
02:13:55 <oklopol> yeah, i'm bad at continuing programming since i've already completed it in my head :\
02:14:06 <CakeProphet> I usually start bots, languages, weird quick mini-languages for parsiing, strange and useless "helper functions", etc
02:14:19 <oklopol> and of course sometimes i don't remember my idea that well
02:14:24 <oklopol> if i haven't thought about it
02:14:26 <CakeProphet> hmm... I like the idea of the environment code being basic... but some optional complexity.
02:14:45 <CakeProphet> you have some basic stuff... river, grass, mountain, weird-wall-thing..
02:14:52 <oklopol> okay, i have to go now, really :)
02:14:54 <CakeProphet> and then you have "structures"... which are functions.
02:26:44 -!- anonfunc has joined.
02:27:23 -!- anonfunc has quit (Client Quit).
02:27:26 -!- anonfunc has joined.
02:41:35 -!- ryanakca has quit (Read error: 104 (Connection reset by peer)).
02:42:11 <oklopol> i'm good at assessing that, it seems
02:42:22 <oklopol> the number of items in a list
02:51:44 <oklopol> i still have a word test tomorrow, gonna read for that after a little family guy + coffee break :)
02:52:22 <CakeProphet> So... behaviors conditional run through actions based on what's occuring... they'll use a very abstract language.
02:52:32 <oklopol> i already saw simpsons, futurama and friends, after fg i'll have nothing unless i start watching anime :\
02:52:36 <CakeProphet> actions will be somewhere inbetween... they perform manipulations on the source code of traits.
02:52:59 <CakeProphet> traits will be simple event-based programming... they perform actions based on how their own soruce code is manipulated.
02:53:32 <oklopol> these are programmed initially by the programmer?
02:53:49 <CakeProphet> and a trait like... grass (I'm assuming environment will be traits)
02:53:50 <oklopol> and they are altered when the thingies have fun?
02:54:07 <CakeProphet> behaviors and actions will largely be altered by reproduction.
02:54:18 <CakeProphet> traits... I think... will be altered mostly through interaction.
02:55:29 <CakeProphet> I've never heard of a language that does operations based on how its source code is manipulated from an outside influence.
02:56:10 <oklopol> that is the main interface between creatures, it should be spec'd first
02:56:31 <CakeProphet> I was thinking it would be a big grid of symbols... followed by some function definitions.
02:57:02 <oklopol> programmers can see the functions then ans decide their action on them?
02:57:04 <CakeProphet> it would most likely follow a language similar to the traits language... since the environment will be largely event driven.
02:57:30 <CakeProphet> you would just need to peak under the soruce of the environment.
02:57:49 <CakeProphet> I see the environment being code that's mostly manipulated.
02:57:56 <oklopol> hmm, prolly would be intentionally left for the programmers to see?
02:58:28 <oklopol> frokfrokfrokfrokfrokfrokfrokfrokfrokrfokfrokfrokfrokfrokfrok
02:59:27 <CakeProphet> well.. Grass was the name for a theoretical fractal-based Thue-like language I had in my mind.
02:59:46 <oklopol> fractal-based, i don't see that
02:59:53 <oklopol> bsmntbombdood, sure it is :)
03:00:18 <oklopol> okay... they didn't work yet?
03:00:39 <oklopol> > copies lead to both dup and drp?
03:00:44 <CakeProphet> well... fractal based as in... repeated self-similar manipulations of the source code (like Thue, but more complex logic involved) will produce any sort of arbitrary "bytecode"... that could be read by an image creator.
03:01:15 <oklopol> well, my bot has it like that :)
03:01:36 <oklopol> my bot's flooded our channel for 6 hours now, every 3 seconds
03:01:44 <CakeProphet> if we finish this lang... we could put it into a bot.
03:02:23 <oklopol> tho, wouldn't be that interactive, i mean you couldn't see but the result
03:02:49 <CakeProphet> seems like a crude GUI would be the best result.
03:03:24 <oklopol> a screen and a bar for loading maps, creatures and opening a connection
03:04:16 -!- pikhq has joined.
03:04:17 <oklopol> i don't like the whole concept of having a graphical interface for a non-graphical operation
03:06:18 <oklopol> hmm, if it's final, i can try and make something outta it as well
03:08:22 <oklopol> you don't have a list structure, so it's hard to make an interpreter
03:08:32 <oklopol> you could find an isomorphism tho
03:09:32 <oklopol> just list all basic operation sequences that do anything sensible and find a language proven turing complete that has them or just a subset of them
03:09:53 <oklopol> there was at least one... with i think less functionality
03:15:14 <oklopol> 1[,><.] should work if > copies, once again i don't remember, no copy in the reference
03:17:21 <oklopol> read in, copy, move right, add a 0, pop it while ending loop, move copy back left
03:21:46 <oklopol> eof will jump off both loops
03:24:37 <oklopol> 1[,[>1g]<1g1--[1-.1g]] this?
03:25:04 <oklopol> AND I NEEDED ONLY 10 TRIES!!
03:25:52 <oklopol> the spec should provide certain things that floating point arithmetic on a computer doesn't, normally
03:26:38 <oklopol> you use logs for multiplication, might be that the error margin grows with many operations
03:26:55 <oklopol> which one wouldn't expect normally in integer arithmetic
03:27:50 <oklopol> anyway, 0 as end condition should be abs(top)<0.00005 or smth :)
03:29:16 <oklopol> what i don't see is why EOF ends inputting since i only convert one of the dup'd values to (value+1) for testing :)
03:29:21 -!- CakeProphet has quit (Read error: 145 (Connection timed out)).
03:31:43 <oklopol> with dup you can make a number n on the stack in O(logn)
03:31:49 <bsmntbombdood> I switched postfix and prefix in my head accidently
03:33:56 <oklopol> how to add two topmost elements?
03:34:57 <oklopol> i love the > and <, like get-outta-my-way commands
03:35:15 <oklopol> since only the stuff moves, you stay put (hmm, might be just me xD)
03:36:28 <oklopol> i see the 1g as 0 now, forgot it means the same as everywhere else
03:37:06 <oklopol> yeah... but there is l, you know :)
03:37:27 <oklopol> _ could represent a log -__________-
03:38:35 <oklopol> and i've not read yet, not watched my episodes and talking naked on IRC about programming 8||
03:38:53 <oklopol> -__- is my other nick in quakenet!
03:39:03 <pikhq> You're doing nude IRCing?
03:39:18 <oklopol> i'm always nude, if you can handle the knowledge :)
03:39:57 <pikhq> bsmntbombdood: I think my brain is *dead*.
03:40:05 <pikhq> Give me a summary this weekend.
03:40:20 <oklopol> hmm, you can't take the log of 0
03:40:36 <pikhq> log(0) is undefined.
03:41:18 <pikhq> e^x=0. Solve for x.
03:42:17 <pikhq> b^x=0, where b is your base.
03:43:21 <pikhq> (lim x->-oo b^x)=0. . .
03:43:30 <pikhq> Doesn't mean that b^-oo=0.
03:44:01 <oklopol> true, i know that, just wasn't sure if i could represent it that formally
03:44:09 <oklopol> but, fortunately you BOTH did
03:44:36 <pikhq> bsmntbombdood: I don't remember the LaTeX syntax for limits; sorry.
03:44:49 <pikhq> (I've not had to use it)
03:45:04 <pikhq> oklopol: It's a typesetting system which excels at math.
03:45:13 -!- pikhq has quit ("leaving").
03:46:30 <bsmntbombdood> oklopol: lim_{x \to -\infty}{2^x} = 0 gets rendered to this:
03:47:24 <oklopol> it was obvious from the syntax for one
03:47:33 <oklopol> plus i already knew what you meant :)
03:48:38 <oklopol> okay, now i'm neither coding nor talking about coding
04:06:46 <bsmntbombdood> oklopol: That cat program doesn't work unless > copies
04:20:21 <bsmntbombdood> heh, fun program: 1[11g1--11g1--11g1-->g<g>1g<--p>g<g>1g<--p1-.1]
04:21:05 -!- calamari has joined.
04:30:04 <oklopol> 1[,[>1g]<1g1--[1-.1g]] this? weird
04:30:13 <oklopol> it certainly won't work if > copies...
04:32:57 <oklopol> 1:1 -> [:1 -> ,:1 I -> [:1 I I -> >:1 I, I -> 1:1 I 1, I -> g:1 I 0, I -> ]:1 I, I -> <:1 I I
04:33:39 <oklopol> 1:1 -> [:1 -> ,:1 I -> [:1 I I -> >:1 I I, I -> 1:1 I I 1, I -> g:1 I I 0, I -> ]:1 I I, I -> <:1 I I I
04:33:57 <oklopol> it triplicates if > copies
04:34:09 <oklopol> oper: stack1, stack2 -> next
04:34:45 <oklopol> please tell me where it goes wrong
04:35:58 <oklopol> mine works if EITHER > copies or [ duplicates
04:36:07 <oklopol> but i meant it with [ duplicates
04:36:21 <oklopol> if there is neither in the language, how do you duplicate?
04:39:19 <oklopol> 2 log commands is better than stack opers
04:39:37 <oklopol> you did have [ duplicate at some point of testing
04:41:57 <oklopol> i just suggested that, you thought it didn't work, which it didn't
04:42:15 <oklopol> anyways, that doesn't work now
04:42:40 <oklopol> i like [ duplicate more than > duplicate (you need one of them) because it's more logical
04:44:11 <bsmntbombdood> and if > copies we have no way to put a 0 under the top
04:44:18 -!- digital_me has quit ("leaving").
04:44:33 -!- digital_me has joined.
04:44:37 <oklopol> damn :D you're one step ahead of me all the time
04:45:55 <oklopol> i think it does, but maybe not :)
04:46:57 <oklopol> it just wouldn't put anything back in
04:47:31 <oklopol> anyway, you could only wipe out numbers divisible by 2 :)
04:47:50 <oklopol> i meant if you tried 0g it would leave nothing there
04:48:00 <oklopol> then 2 would be dropped with gg
04:48:11 <oklopol> and 2.1 with infinite amount of ggggggg... xD
04:48:29 -!- GreaseMonkey has joined.
04:49:45 <bsmntbombdood> how does one undo a log without a special function to do it...
04:49:49 <oklopol> you can make that work with many kinds of little nonsence
04:50:13 <oklopol> you could have [ not copy a 0 but pop it :)
04:50:26 <oklopol> so ig[ would start a non-dup loop
04:51:57 <oklopol> well, add a drp, make [ or > push, then it'll work
04:53:22 <oklopol> well, i think it'd a good way to handle log(0) to make it a drop that drops another from the stack :)
04:54:18 <oklopol> you don't take random logs from input
04:54:28 <oklopol> you always know when you put 0 in
04:54:36 <oklopol> and you always do it for dropping
04:54:41 <oklopol> it's true it's not intuitive
04:55:17 <oklopol> yes, but log(0) is an error, that would just be a try {} catch() to drop
04:55:47 <bsmntbombdood> GreaseMonkey: http://bsmntbombdood.mooo.com/logfuck_spec.txt
04:56:00 <bsmntbombdood> GreaseMonkey: http://bsmntbombdood.mooo.com/logfuck.py.txt
04:57:48 <oklopol> basically, you have to choose between side-effects and overloading
04:57:54 <oklopol> if you don't want a new command
04:58:03 <oklopol> side-effects don't seem to do it
04:58:33 <oklopol> so... g could be overloaded for input it can't handle yet
05:01:14 <oklopol> 1[1,1g1--[1-.1g]] actually
05:03:00 <oklopol> but, still, dup and drp, needed are
05:03:12 <oklopol> fuck 8|| i gotta go to school
05:03:44 -!- Sgeo has quit ("Leaving").
05:03:46 <oklopol> school in an hour here and holidays in a few months
05:12:38 <oklopol> 1[1,1g1--[1-.1g]] -1 won't go in the inner loop, [ won't drp it tho, so it'll go outta the outermost loop too
05:18:04 -!- digital_me has quit ("Lost terminal").
05:19:48 <oklopol> bsmntbombdood, please respond, it'll bug me the whole day otherwise :)
05:19:59 <oklopol> i can dl the official code tho
05:30:11 <GreaseMonkey> i bags we make a massive BF-style lang with a shitload of instructions and call it BrainDead
05:51:53 -!- calamari has quit ("Leaving").
06:18:14 -!- oklofok has joined.
06:19:46 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
07:32:56 -!- oerjan has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:47 -!- ShadowHntr has joined.
08:07:23 -!- sebbu has joined.
08:30:13 -!- oerjan has quit ("Delirium").
08:34:35 -!- GreaseMonkey has quit (".,,._ {o_O} _.,,.").
09:24:40 -!- ShadowHntr has quit ("End of line.").
10:16:29 -!- Asztal has quit ("closing VM").
11:39:57 -!- helios24 has joined.
11:55:13 -!- sebbu2 has joined.
12:14:28 -!- sebbu has quit (Read error: 110 (Connection timed out)).
12:36:59 -!- MM2 has quit (Read error: 110 (Connection timed out)).
13:02:33 -!- MM2 has joined.
13:03:41 -!- jix__ has joined.
13:17:41 <oklofok> i couldn't because i have an old version of python
13:17:58 <oklofok> but i was in quite a hurry
13:23:25 -!- oklofok has changed nick to oklopol.
13:28:00 -!- anonfunc has quit.
14:10:57 -!- calamari has joined.
14:18:24 -!- calamari has quit (Read error: 104 (Connection reset by peer)).
14:20:20 -!- calamari has joined.
14:20:48 -!- MM2 has quit (Read error: 110 (Connection timed out)).
14:37:37 -!- sebbu has joined.
14:37:53 -!- Asztal has joined.
14:47:19 -!- calamari has quit ("Leaving").
14:52:00 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
14:56:15 -!- sebbu2 has quit (Read error: 110 (Connection timed out)).
15:54:32 -!- tgwizard has joined.
16:00:07 -!- jix__ has joined.
16:06:30 -!- Asztal has quit (Read error: 110 (Connection timed out)).
16:18:59 -!- jix__ has quit (Read error: 54 (Connection reset by peer)).
16:19:15 -!- jix__ has joined.
16:37:02 <SimonRC> I think a major impediment to good esolanging is that we make stuff up.
16:37:26 <SimonRC> If we didn't just make stuff up, we could have invented stuff like this: http://home.pipeline.com/~hbaker1/Use1Var.html
17:06:02 -!- helios24 has quit ("Leaving").
17:16:32 <lament> okay, let's stop making stuff up.
18:42:45 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
18:48:59 -!- Asztal has joined.
19:04:17 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
19:11:53 -!- tgwizard has joined.
20:18:44 <SimonRC> BTW, I recommend reading about single-use variables. They are fascinating
20:30:21 -!- sebbu2 has joined.
20:31:38 -!- sebbu has quit (Nick collision from services.).
20:57:26 -!- Asztal has quit (Read error: 110 (Connection timed out)).
21:05:48 -!- oerjan has joined.
21:06:48 -!- jix__ has joined.
21:21:03 <oerjan> For a language depending heavily on single use variables, check out Clean.
21:28:46 -!- Sgeo has joined.
21:33:11 -!- tgwizard has quit (Remote closed the connection).
21:40:24 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:47:05 -!- RodgerTheGreat has joined.
21:49:03 <SimonRC> RodgerTheGreat: read about uniquiness types. They rock for esotericness!
21:52:29 <SimonRC> now read this, which gives VM ideas: http://home.pipeline.com/~hbaker1/LinearLisp.html
21:57:30 -!- sebbu2 has quit (Connection timed out).
22:59:31 -!- pgimeno has changed nick to pgimeno42.
23:08:31 -!- pgimeno42 has changed nick to pgimeno.
23:20:13 -!- oerjan has quit ("Death").
23:22:38 -!- CakeProphet has joined.
23:43:33 -!- CakeProphet_ has joined.
00:00:13 -!- CakeProphet has quit (Read error: 110 (Connection timed out)).
00:04:50 -!- CakeProphet_ has changed nick to CakeProphet.
01:05:27 -!- pikhq has joined.
01:05:54 <CakeProphet> I'm devising a language based on the rhythm of sound.
01:06:23 <CakeProphet> where the rhythm is the data rather than the operation.
01:08:24 <CakeProphet> I could probably have an infinite memory... despite being a finite medium.
01:09:15 <pikhq> It's a theoretically infinite medium, actually.
01:09:39 <pikhq> Unless your arbitrarily limit the music size?
01:10:05 <CakeProphet> I probably would... just to see if the inifitely-visibleness makes it infite.
01:10:05 * pikhq recommend something like opcodes encoded in the notes, initial data encoded via rythm
01:10:32 <pikhq> So just a drumbeat, then?
01:10:44 <CakeProphet> I'm going with a non-musical structure operating on the data.
01:10:49 <CakeProphet> rhythm only being the analogy for the data
01:11:07 <pikhq> I want to be able to pay my code!
01:11:23 <CakeProphet> it's technically a finite strip of inifitely divisble data with regular segments of "sound" and "no sound"... a binary encoding that can be divided by any ratio.
01:11:35 <pikhq> (besides, at least with something like GNU Lilypad, there's a simple syntax for music encoding)
01:12:43 <CakeProphet> there will be maybe 3 sound-manipulation commands... and 3 or 4 pointer manipulation commands...
01:13:15 <CakeProphet> the pointer is basically three pointers... forming two segments... on which the sound-manipulation commands operate.
01:14:02 <pikhq> Make a rythmic output device, then.
01:14:12 <CakeProphet> with the control commands being proportional
01:14:14 <pikhq> Maybe tie into MIDI and make it play your data like a drumbeat.
01:14:40 <pikhq> (in addition to ASCII, maybe?)
01:15:31 <CakeProphet> doing "zoom tuk" (tuk is the formal name for the segment formed between the middle and right pointers)
01:16:55 <CakeProphet> you take a part of the ratio... and make it the whole of the ration.
01:18:29 <CakeProphet> commands for operating on the data would be like... flip segments...
01:18:49 <CakeProphet> which gives you conditions... if both the flipped segments are the same type... nothing is changed.
01:20:48 <CakeProphet> that could actually be consider the string-rewriting paradigm.
01:21:02 <CakeProphet> if ASCII is converted into the rhythm... and the entire program is merely operations on that string.
01:23:57 <CakeProphet> other ideas could be to use polythym to program.
01:24:14 <CakeProphet> you play two rhythms side by side... with the combinations being operations.
01:34:58 <CakeProphet> how about a concurrent programming language.
01:35:34 <CakeProphet> and they're all interpreted at the same time (albeit, with a nanosecond so between them), and on different resources.
02:08:22 <CakeProphet> wrote up a spec for it: http://esolangs.org/wiki/Weave :D
02:13:08 * SimonRC thinks there needs to be way to program a collection of processes instead of individual processes; you don't say "send to foo" in one and "receive from bar" in the other, but you specify a "copy from foo to bar".
02:13:12 * SimonRC realises there must be dozens of obscure academic papers on many ways of doing this.
02:21:02 * CakeProphet is organizing the esolang wiki's categories a bit.
03:32:10 -!- pikhq has quit ("leaving").
03:57:32 -!- bsmntbombdood has changed nick to bdsmbombdood.
04:13:53 -!- bdsmbombdood has changed nick to bsmntbombdood.
04:22:42 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
04:26:47 -!- CakeProphet has quit (Read error: 113 (No route to host)).
04:44:30 -!- wooby has quit ("BitchX: often imitated, never duplicated!").
05:22:50 -!- Sgeo has quit ("Leaving").
05:53:35 -!- MM2 has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:11:30 -!- oerjan has joined.
09:58:10 -!- oerjan has quit ("Destruction").
11:13:36 <SimonRC> bsmntbombdood: ISTR there is a FAND, which *is* a function.
11:14:15 <SimonRC> anyway, AND takes as many arguments as you want, so I suspect it is not useful to reduce with it.
11:14:53 <SimonRC> Discouraging the evaluation-control usage of macros is why Haskell has laziness, you know.
12:37:43 -!- MM2 has quit (Read error: 131 (Connection reset by peer)).
12:39:12 -!- MM2 has joined.
15:07:30 -!- tgwizard has joined.
17:11:01 -!- sebbu has joined.
18:14:57 -!- tgwizard has quit (Remote closed the connection).
19:35:59 <oklopol> make it say "* bsmntbot is bored" if idle for a day :)
19:36:13 <oklopol> i meant the bored thing :)
19:36:48 <oklopol> XXXfuck, where XXX is the shortest possible string related to the subject
19:37:11 <oklopol> is the naming convention for languages that have relations with bf
19:37:21 <bsmntbombdood> I don't want it to have fuck in it, so that I can tell normal people about it
19:38:08 <oklopol> logarythm would be nice if combined with CakeProphet's
19:39:11 <oklopol> i only come up with stupid wordplays :)
19:42:07 <oklopol> what solution did you choose?
19:46:24 <oklopol> it starts making sence eventually .D
19:48:54 <oklopol> do "get input -> subtract log(input) from input"
19:51:18 <oklopol> i'm not saying it's impossible
19:54:33 <oklopol> you can only do a subtraction of two adjacent numbers on the stack, there is no way to transmit ANY information between two numbers, so it is impossible to get the two numbers input and log(input) on top of the stack
19:57:12 <oklopol> a turing complete system must be able to turn a number x to (x-log(x))
19:58:10 <oklopol> hmm, i think it's not turing complete if a number used in x calculations must be input x times
19:58:32 <bsmntbombdood> turing completeness doesn'thave to do with input/ouput
19:58:45 <oklopol> and i think if the example is impossible, other, more clear cases aren't either
19:59:49 <oklopol> it wasn't turing complete after all?
20:01:33 <oklopol> with that, if you want to, at any point of execution, subtract a from log(a), you will have to duplicate the whole program sofar
20:47:40 -!- oerjan has joined.
21:15:53 -!- anonfunc has joined.
21:21:42 -!- helios24 has joined.
21:44:21 <oklopol> made a new language today (1 fully)
21:44:30 <oklopol> brainfuck with floating point arithmetic
21:44:36 <oklopol> which has been my goal for long
21:44:55 <lament> how can that work? explain.
21:45:12 <oklopol> it adds a few constraints to programs
21:45:27 <oklopol> you have to have as many >'s as you have <'s in one level
21:45:42 <oklopol> and input allowed only at "base" level
21:46:05 <oklopol> +++[------->+<]>: would print 3/7
21:46:51 <oerjan> That >< constraint implies you can only use a finite number of cells.
21:47:04 -!- sebbu2 has joined.
21:47:30 <oklopol> i think it's turing complete, i don't care whether it is or not, tho, it's a nice toy
21:47:32 <oerjan> Same as named whiles in pikhq's BFM
21:48:08 <oerjan> You get a Minsky machine that way, which is Turing complete.
21:48:24 <oerjan> (Ignoring non-integer values)
21:48:42 <oklopol> ;>++++>++++++++[<<[>>>+>>+<<<<[<->>>>+<<<]>>>[-<<<+>>>]<<<<-]>>>>>[-<<<<<+>>>>>]<<[-<<+>>]<-]<:
21:48:48 <oklopol> calculates sqrt of input :)
21:49:25 <oklopol> the 8 in the beginning is the number of iterations, 4 is the initial guess
21:49:52 <oklopol> i'm not yet sure whether it is possible to make an interpreter without adding even more constraints
21:50:24 <lament> i still don't get how that works
21:50:35 <oerjan> Only increment and decrement? Are you using differentiation implicitly?
21:50:39 <oklopol> (i think i can implement any math-related function even with the constraint a sub-[] can't change a parent-[]'s data)
21:50:51 <oerjan> Curiously I had the exact same idea today!
21:50:53 <lament> i'm quite sure that's not turing-complete actually
21:50:55 <oklopol> difference is the name of the language
21:51:20 <oerjan> Probably caused by the logfuck discussion
21:51:53 <oklopol> lament, i think it is, and i'd add all bf features if they'd make algorithmic sence like <'s and >'s being predictable
21:52:27 <oklopol> i mean, mathematically pretty hard to say how the differentiation works if there are for example inputs in a [] :)
21:53:08 <lament> i just don't understand what the semantics of - are
21:53:10 <oklopol> oerjan, i've thought about that some time ago, but heard about differential just a few months ago... and maybe the logfuck discussion too
21:53:38 <oerjan> You might want to look at non-standard analysis.
21:54:38 <oklopol> well, if you put [->++<] in brainfuck, you are multiplying a number. if you put [-->+<] then you either divide a number or do something unpredictable
21:54:50 <lament> so ++[->[->++<]] is exponentiation?
21:54:51 <oklopol> using differentials that makes sence too
21:55:15 <oklopol> that does what it does in bf
21:56:26 <oklopol> lament, most simple bf programs would work still...
21:56:36 <oklopol> [] is what does the funny stuff
21:56:43 <lament> still not sure if it's gonna be well-defined
21:57:03 <oerjan> It may be well-defined though not necessarily computable.
21:57:05 <oklopol> should a number go over / under zero during a loop, it is retried with a smaller increase
21:57:22 <oklopol> it is possible to interpret if i add constraints
21:57:49 <oklopol> BUT, these constrains are already used in many mathematical functions done with bf
21:58:04 <oklopol> you rarely depend on overflow
21:58:19 <oklopol> and in math you rarely have to iterate through memory
21:58:27 <lament> so you define [expr] as lim n->0 of evaluating [expr] in a language where - and + mean subtract and add n
21:59:33 <lament> possibly you could do that to the entire program and don't need the matching > and < restriction
22:00:44 <oklopol> i'll try and find an example why it wouldn't work
22:00:44 <oerjan> There are some subtleties with that definition, since some values of n cause loops not to hit 0.
22:01:04 <lament> we define [] as checknig for when the index goes below 0
22:01:23 <lament> actually no, we define - as having bounds-checking
22:01:38 <lament> that makes more sense since i assume you want to keep all numbers positive?
22:01:55 <lament> that does make it more difficult :)
22:02:27 <oerjan> There may be cases where wrapping around at infinity works nicely.
22:02:28 <oklopol> you are missing the fact that inner []'s can move the pointer too, they are theoretically done infinity times
22:02:37 <oklopol> which is no problem with my constraint
22:03:12 <lament> oerjan: not well-defined
22:03:21 <lament> oklopol: that's fine, it's just a limit
22:03:30 <lament> (if it IS just a limit, which it doesn't seem to be)
22:03:33 <oerjan> It is well-defined if the limit is defined
22:04:48 <oklopol> >+++++>++++>++++<<[-[>]<-[<]>] for example would be undefined
22:05:59 -!- sebbu has quit (Read error: 110 (Connection timed out)).
22:06:32 <oklopol> all i added to bf was this differentials thing, ; and :, you can figure what they are
22:07:15 <oklopol> i actually thought making () a separate differentiation loop where constraints lie
22:07:18 <oerjan> Oh, I thought they were just decoration :)
22:08:09 <oerjan> that's pretty logical notation for floating point IO
22:08:47 <oklopol> fuck you with your names i don't know :(((((
22:09:31 <oerjan> Ocaml is a functional language with object extensions. ML dialect.
22:10:21 <oerjan> The point of my comment is that Ocaml uses +. etc. to mean floating point addition etc.
22:10:45 <oerjan> Because it doesn't have arithmetic overloading.
22:11:51 <oklopol> but, i don't care whether it's touring complete, i can easily translate a calculation on it
22:12:18 <GregorR> I don't even want to think about what that's supposed to mean O_O
22:12:36 -!- Sgeo has joined.
22:14:15 <oerjan> You can emulate ordinary [] I think
22:14:39 <oerjan> Or rather, ordinary +-
22:14:57 <oklopol> i don't know if the implicity will work everywhere
22:15:04 <oerjan> By having a cell with a fixed value.
22:16:30 <oklopol> 1 could assign a 1 in the current cell, that was one thing i thought... another were ^ and v, ^ would convert a differential into it's counterpart number, v the other way xD
22:17:36 <oerjan> I don't think any of those are strictly needed though.
22:18:56 <oklopol> maybe not, i just think the fact that (3 here)[->[SMTH]<] will execute SMTH infinity times will in some cases make it hard for the interpreter to know what to do, actually
22:18:56 <oerjan> If you keep one cell with a known value you can convert everything with a little copying.
22:19:44 <oklopol> but i liked the idea of using only one kind of numbers
22:19:57 <oklopol> everything being used as a differential when needed
22:20:10 <oklopol> but that requires the <>-limit i'm afraid
22:20:18 <oerjan> Well no matter what you do some limits will fail to exist
22:22:07 <oklopol> 0 on this level, 1 on the other, infinity steps done -> 0 INF
22:22:37 <oerjan> You will get inconsistencies.
22:23:21 <oklopol> +[>+<] (1 INF) >[->+++++<] (INF 0)
22:23:51 <oerjan> What happens with [>+<]>+<[>-<]
22:23:58 <oklopol> i'm just running the algorithm in my head, crash it and i see the inconsistencies
22:24:53 <oklopol> [>+<] (0 INF) >+< (0 INF) [>-<] (0 0)
22:25:45 <oklopol> you can, indeed, call that an inconsistency :)
22:26:02 <oklopol> but, it could be made crash
22:27:02 <bsmntbombdood> I was working on brainfuck -> logfuck conversions in math today
22:27:37 <bsmntbombdood> well, i got conversions for everything, but i haven't tested them
22:31:00 <oklopol> sorry, i'm once again mixing the new standard with the old one :)
22:32:03 <oklopol> don't think > and < are correct tho
22:33:25 <oklopol> i had to think it over a few times
22:33:44 <oklopol> well, if you have an interpreter for the latest standard, try em
22:34:51 <oklopol> i'm pretty sure a quine qouldn't work!
22:39:01 <oklopol> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-.
22:40:01 <bsmntbombdood> 1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--[<1g1--1g1--1g1--1g1--1g1--1g1--1g1--<1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--<1g1--1g1--1g1--<1g1-->>>>1-d]<1g1--1g1--d.<1g1--d.1g1--1g1--1g1--1g1--1g1--1g1--1g1--d.d.1g1--1g1--1g1--d.<1g1--1g1--d.>>1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--1g1--d.<d.1g1--1g1--1g1--d.1-1-1-1-1-1-d.1-1-1-1-1-1-1-1-d.<1g1--d.<d.
22:41:45 <oklopol> your's prints numbers? btw
22:42:19 <oklopol> if a cell is empty, bf assumes it 0
22:42:57 <oklopol> i thought a - would use the underlying number if there was one and only making a new one when the stack is empty
22:44:32 <oklopol> [<1g1-- this here will use the number in the last cell, right?
22:49:34 <oklopol> what does < do if the rightmost stack is empty?
22:51:24 <oklopol> 1g1-- (put one on stack) [1- (subtract one... at zero now) < (push a zero, stack now [0 0]) 1g1-- (add one, stack now [0 1]) > (stacks: 1:[0] 2:[1]) d ([0, 0] [1], so end loop sith [0] [1]) ] < (stack now [0 1]) d. (print topmost... 1)
22:51:34 <oklopol> point me where it goes wrong
22:53:43 <oklopol> primary.append(secondary.pop())
22:54:53 <oklopol> pop returns none and you can append that?
22:55:18 <oklopol> you could, but since that is already done, no use
22:55:26 <oklopol> that as in that interpreter
22:55:47 <oklopol> the function is easily fixed
22:56:09 <oklopol> well yeah, stack might be easier
22:58:33 <oklopol> then it makes more sence :)
22:59:07 <oklopol> since i had a moment of thought on [] or recursion but then remembered [] is a list :D
23:02:56 <oklopol> for a brainfuck interpreter, a hello world usually find all bugs
23:03:50 <oklopol> well, now it's brainfuck with multiplication and addition :)
23:04:02 <oklopol> actually all basic arithmetic
23:06:28 <oklopol> ah you can just simulate it with logs
23:08:07 <oklopol> i needed your macros to see it tho :(
23:14:11 <oklopol> yeah, but i'm very sensitive about my human weaknesses
23:15:45 <oklopol> i misunderstood it a little
23:16:33 <oklopol> since i just glanced at it and realized base^(log(a)*log(b))=a^b
23:17:57 <oklopol> i should have someone here whack me in the head if i start just staring at the screen idle :)
23:19:44 <bsmntbombdood> I came up with an algorithm to generate an arbitrary number on the stack
23:24:23 <bsmntbombdood> now it's the output is smaller: http://pastebin.ca/322014
23:25:56 <oklopol> i mean, took me 5 minutes to get the function fully :\
23:28:05 <bsmntbombdood> I'm not sure how it works with floating point numbers
23:31:45 <bsmntbombdood> Might be able to make it more efficient by using multilication too
23:31:48 -!- jix__ has joined.
23:33:23 <oklopol> log(the float) returns a negative number
23:33:36 <oklopol> and... it is normally added and exp'd
23:36:54 <oklopol> yes, have nothing to add :\
23:38:26 <oklopol> as long as the numbers are of finite length in the base system, that is fast
23:38:50 <oklopol> if you'd've used 3-base in your language, that would cause infinite loops
23:39:42 <oklopol> because number-base**int(log(number)) would never be zero
23:40:02 <oklopol> since there would be an infinite series of numbers as the decimal tail
23:42:53 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
23:43:01 <oklopol> that's not an algorithmical improvement :)
23:44:32 <oklopol> not much, 2**16*0.75 would be almost as inefficient then
23:46:45 <oklopol> well, nice improvement then :D
23:48:09 <oklopol> it's 2-base presentation is more than 30 bits
23:49:18 <bsmntbombdood> How do we convert a floating point number into a fraction?
23:51:36 <oklopol> wtf i can't find the word :\
23:52:27 <oklopol> (floor(number), 1/(number-floor(number)))
23:54:10 <oklopol> yeah, i don't know what you meant by (1,5) :)
23:58:12 -!- CakeProphet has joined.
00:02:57 <oklopol> 1/5 == .2 becomes 1 + .2 then :\
00:04:25 <oklopol> you could factor the number and 1/(number-floor(number)) to their prime elements
00:10:58 <oklopol> that's why i assumed i wouldn't be able to read it
00:12:10 <oklopol> why did i not understand that last time :\
00:12:24 <CakeProphet> hmmm... BF works pretty damn well with threads.
00:12:33 <oklopol> i hope it's this headache... or then i'm getting stupider
00:12:40 <oklopol> CakeProphet, what you did?
00:12:45 <CakeProphet> the low-leveliness makes it a perfect candidate.
00:16:13 <oklopol> CakeProphet, what did you do?
00:20:35 <oklopol> hmm i'd read it but my brain is dead
00:38:58 <oklopol> bsmntbombdood, that is a simplification of it :)
00:40:54 <CakeProphet> Weave is intended to execute as if you had literally just started running a bunch of BF programs at the same time at the very start...
00:41:04 <CakeProphet> with a single array shared amongst them as well as their own private ones.
00:41:43 <oklopol> brainfork is ingenious, one of my favorites
00:42:25 <oklopol> but, weave might be useful
00:43:17 <CakeProphet> it's sort of like... programming a bunch of little minions
00:45:45 <CakeProphet> Brainfork doesn't have a mechanism for data sharing.
00:52:19 <CakeProphet> hmmm... brainfuck would be really easy to hide in other documents.
00:52:59 <oklopol> you can get better ways tho...
00:54:22 <CakeProphet> you could hide whitespace in the whitespace on the edges of a document.
00:59:01 <bsmntbombdood> ok, the brainfuck->logfuck conversions don't work for input
01:05:07 <oklopol> but not that big a problem
01:05:38 <oklopol> CakeProphet, i can think of a million ways to hide for example bf in a document...
01:23:46 -!- ihope has joined.
01:24:55 <ihope> You typed it wrong.
01:25:51 <ihope> If there's something wrong with the input, you typed it wrong.
01:26:04 <ihope> The problem may be fixed by typing it correctly.
01:28:02 -!- sebbu2 has quit ("@+").
02:15:15 -!- ihope has quit (Read error: 110 (Connection timed out)).
03:31:07 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)).
03:32:41 -!- anonfunc has joined.
03:56:28 -!- oerjan has quit ("Destiny").
03:57:17 <bsmntbombdood> you lispers should tell me a better way to do this:
03:57:26 <bsmntbombdood> (reduce (lambda (x y) (or x y)) (mapcar (lambda (x) (funcall test x what)) where)))
04:47:38 -!- pikhq has joined.
05:15:48 -!- Sgeo has quit (Remote closed the connection).
05:17:52 <CakeProphet> why can't you just put the function variable at the front of the list and expect the normal evaluation?
05:49:22 <bsmntbombdood> CakeProphet: Because common lisp is fucking stupid
05:50:37 <bsmntbombdood> each symbol has a different slot for its function and its variable
05:50:49 <bsmntbombdood> in that case, the variable slot has a function in it
06:05:58 <bsmntbombdood> The regular syntax only works if the function slot has the function
06:47:34 -!- pikhq has quit ("leaving").
07:58:42 -!- sebbu has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:01:54 -!- wooby has joined.
10:01:59 -!- wooby has quit (Remote closed the connection).
11:39:47 -!- oerjan has joined.
12:15:19 -!- anonfunc has quit.
12:35:35 -!- oerjan has quit ("Desire").
13:14:58 -!- NK` has quit (Remote closed the connection).
13:15:01 -!- NK` has joined.
13:44:07 -!- jix__ has joined.
13:45:24 -!- jix__ has changed nick to jix.
14:05:15 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
14:09:43 -!- jix__ has joined.
16:03:09 -!- helios24 has quit (Read error: 113 (No route to host)).
16:28:02 -!- Sgeo has joined.
16:37:53 -!- pikhq has joined.
17:04:47 -!- ihope has joined.
17:51:02 -!- CakeProphet has quit ("haaaaaaaaaa").
19:10:08 -!- lament has quit (Remote closed the connection).
19:10:17 -!- lament has joined.
19:16:11 -!- lament_ has joined.
19:16:39 -!- lament has quit (Remote closed the connection).
19:26:29 -!- lament has joined.
19:27:01 -!- lament_ has quit (Remote closed the connection).
19:31:50 -!- lament has quit (Remote closed the connection).
19:31:52 -!- lament has joined.
19:35:49 -!- jix__ has changed nick to jix.
19:38:13 -!- lament has quit (Remote closed the connection).
19:38:30 -!- lament has joined.
19:44:45 -!- lament_ has joined.
19:45:39 -!- lament has quit (Remote closed the connection).
19:49:57 -!- lament_ has quit (Remote closed the connection).
19:50:01 -!- lament has joined.
20:55:54 -!- lament has quit (Remote closed the connection).
20:55:59 -!- lament has joined.
21:03:09 -!- lament has quit (Remote closed the connection).
21:03:14 -!- lament has joined.
21:09:42 -!- lament_ has joined.
21:11:23 -!- lament has quit (Read error: 104 (Connection reset by peer)).
21:31:14 -!- oklopol has quit.
21:58:21 -!- oklopol has joined.
22:54:30 -!- oklofok has joined.
22:54:30 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
23:01:12 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
23:01:18 -!- oklopol has joined.
23:32:21 -!- CakeProphet has joined.
23:49:39 -!- sebbu2 has joined.
00:08:06 -!- sebbu has quit (Read error: 110 (Connection timed out)).
00:08:15 * pikhq just had a really stupid idea. . .
00:08:33 <pikhq> Make a BF->C compiler which outputs C code which is also valid BF code.
00:09:14 -!- sebbu2 has quit ("Leaving").
00:09:43 <oklopol> well, that's a more amphibious version of me thinking of making A program that is both C and BF
00:10:07 <pikhq> An example method:
00:12:38 <oklopol> of course, that way it's easier than making one program that is sensible c++ code and the same in brainfuck without comments
00:12:49 <oklopol> sensible as in not clearly brainfuck
00:12:58 <oklopol> of course need a lot of redundance
00:19:28 <oklopol> without comments p++-1; p--+1;
00:20:19 <oklopol> well, you can have 1[...] and have code normally in it, separated by commas
00:20:38 <oklopol> so, it's pretty trivial actually
00:22:39 <oklopol> commas are an operator tho, which i realized in the bathroom
00:23:01 <oklopol> so you have to do '[',']' or something everywhere
00:23:04 <pikhq> So take advantage of that. . . :p
00:23:16 <pikhq> Want me to upload the script?
00:25:01 <pikhq> http://pikhq.nonlogic.org/bf.tcl
00:25:16 <pikhq> Not very complex, but not bad for a quick hack.
00:27:27 <pikhq> Hell. . . I released a different way of doing it.
00:27:31 <pikhq> Define some macros.
00:27:40 <pikhq> +();-();>();, etc.
00:29:54 <oklopol> p+=+(-1); // <- and you can have the nice arrow
00:30:38 <oklopol> i don't think this is a C script
00:31:36 <oklopol> it gets fairly complicated with no comments
00:31:48 <pikhq> And is written in Tcl.
00:32:05 <oklopol> i mean, i can read it of course
00:32:18 <oklopol> but i've never seen it before
00:36:59 <oklopol> *p=getchar(),*p*=!feof(stdin);
00:37:08 <pikhq> Except for one thing. . .
00:37:24 <pikhq> That adds two, moves right, then subtract two.
00:38:10 <pikhq> That's equivalent to "" from a C perspective, I believe.
00:38:47 <pikhq> I'm pretty certain, that is.
00:39:17 <pikhq> That's my solution.
00:39:21 <oklopol> you might need +(+(p--)<0);
00:39:33 <pikhq> What I'm saying is that that performs the ++ operator, then the -- operator.
00:40:05 <oklopol> well, yes, but i meant it with the parenthesis, forgot to actually put them
00:40:13 <pikhq> It's like (p-=1)+=1;
00:40:32 <oklopol> yeah, a million possibilities
00:40:41 <oklopol> you can put many in, to be selected a t random
00:41:25 <pikhq> That'd be a bit of a trickier thing, and I'm lazy.
00:41:36 <oklopol> i like *p=getchar(),*p*=!feof(stdin); most
00:41:56 <oklopol> because the , is actually used
00:42:47 <oklopol> *p+=1 uses the bf-operator more tho
00:44:05 <oklopol> i'll learn lisp now, bye ->
00:45:08 <pikhq> Your . interpretation doesn't work. . .
00:46:36 <pikhq> I added int a;float b;
00:46:51 <pikhq> a=putchar(*p),b=1.0;
00:47:23 <pikhq> And now it's complaining about the unary minus thing.
00:50:17 <pikhq> basm.0.b.c:4458: error: wrong type argument to unary minus
00:51:03 <oklopol> putchar(int((*p)*1.0)); just do
00:51:58 <oklopol> where does it complain about an unary minus?
00:56:22 <pikhq> -(-(p++)>0); as well.
00:57:29 <oklopol> well, try converting the bool to an int
00:58:06 <pikhq> In C, there is no such thing as a "bool". . . "0" is an int.
00:58:16 <pikhq> It doesn't complain about -0-0;
00:58:22 <pikhq> It's complaining about the pointer./
00:58:31 <oklopol> char* doesn't support unary minus of course
01:00:17 <oklopol> i don't like it when non-rational things are not supported
01:00:38 <oklopol> no matter how much it helps newbies :\
01:00:45 <pikhq> Got a working version.
01:02:06 <CakeProphet> oklopol, yeah... all the weird stuff should be allowed for the sake of being there to tinker with.
01:02:32 <pikhq> It's not a function.
01:02:44 <pikhq> is the way to cast "foo" to an integer.
01:03:00 <fizzie> C++ would accept int(foo), too.
01:03:39 <oklopol> yeah, i've read that somewhere actually, didn't remember :\
01:03:45 <CakeProphet> (int) foo is even referred to as c-like type declaration in C++-lingo
01:03:47 <pikhq> http://pikhq.nonlogic.org/bf.tcl
01:03:59 <pikhq> Polyglot BF->C compiler.
01:04:05 <fizzie> Isn't that a "c-style cast"?
01:04:09 <pikhq> Now with thanks to oklopol.
01:04:49 <oklopol> it might do that with putchar actually :)
01:05:15 <pikhq> puts "putchar(*p*(1.0));"
01:05:32 <pikhq> It probably casts to char automagically.
01:05:33 <oklopol> yeah, you said something about it not working, but maybe you didn't
01:05:39 <pikhq> I thought it didn't work.
01:05:56 <oklopol> yeah, would be weird id they'd've added a float version to get it not working for floats
01:05:56 <pikhq> But there were a lot of errors. . . And I apparently did something stupid in saying that.
01:06:14 <oklopol> good you said it, i don't like it when i imagine things
01:08:15 <fizzie> "(int)foo" is called "the cast notation" in the C++ standard (5.4), while "int(foo)" is simply "explicit type conversion (functional notation)" (5.2.3).
01:08:36 <oklopol> N +'s of brainfuck -> *p+={(N-1)*"+ "}1;
01:08:53 <oklopol> where {(N-1)*"+ "} of course means "+ " N-1 times
01:09:19 <pikhq> 'cept that instead of "one" it'd be "N".
01:10:36 <fizzie> Why putchar(*p*(1.0)); and not the much simpler (and lacking the silly float conversion) putchar((1.0, *p)); ?
01:11:08 <oklopol> fizzie, it doesn't really matter, one can easily come up with tons of those :\
01:11:10 <fizzie> I only now realized what you were trying to do, anyway.
01:13:31 <oklopol> N >'s -> puts "-(int)(p+=N){>0 N times};"
01:13:43 <oklopol> but, of course you can't do it in the puts
01:13:56 <pikhq> I can do something different. . .
01:14:21 <pikhq> set string "-(int)(p+=$n)"
01:14:57 <pikhq> for {} {$n != 0} {incr n -1} {append string ">0"}
01:15:48 <CakeProphet> so... language advocacy is really starting to annoy me.
01:16:24 <pikhq> I like Tcl. . . It does what I need it to do, and I know it.
01:16:36 <pikhq> And I've grown fond of it. . .
01:16:40 <pikhq> What more reason do I need?
01:17:26 <CakeProphet> at least you didn't turn into a living advertisement.
01:17:46 <pikhq> That's all the language advocacy I do.
01:17:48 <oklopol> c++ is the BEST by the way, i'll be off reading lisp now ->
01:19:13 <pikhq> C++ is a language.
01:19:20 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net).
01:19:25 <pikhq> It happens to be pretty good.
01:19:26 <oklopol> the function you had, i figured how you do that in the shower that morning
01:19:53 <oklopol> pikhq, i wasn't serious... just to be sure :)
01:20:14 <oklopol> okay, it didn't need clarification now that i see how i presented it :)
01:21:05 -!- fizzie has joined.
01:21:08 <oklopol> bsmntbombdood, just that if you like to have your own code there, i can tell you the algo, unless you either know it or don't care or whatever
01:21:25 <fizzie> Re TCL, why not string repeat ">0" $n instead of the for loop? :p
01:21:54 <pikhq> fizzie: I don't have all of the string functions commited to memory.
01:35:29 <CakeProphet> hmmm... maybe a Category:Homoiconic should be added to the wiki?
01:44:58 <oklopol> the function you used to make the fractions
01:45:46 <oklopol> just that it's trivial to do that
01:46:24 <oklopol> and just don't feel sad to use code written by someone you don't know in a small project like that
01:47:22 <oklopol> i don't see why you would, tho
01:49:20 <oklopol> well, you take the fraction straight from the double, then just gcm it
01:50:22 <oklopol> the double is in a format ... * 2**..
01:50:54 <oklopol> so, you take the mantissa and the exponent straight from the number
01:51:00 <oklopol> assuming those are the terms
01:51:32 <oklopol> that is the gist of the problem
01:51:42 <oklopol> so i'm pretty sure it's the most efficient one
01:51:51 <oklopol> most efficient algorithm i mean
01:52:56 <oklopol> you can easily get the mantissa and exponent from a double in haskell, so why not in python
01:53:28 <oklopol> (i'm not sure if that makes sence, i just think of both as non- implementation spesific...)
01:53:55 <oklopol> (like, not having limits on how floating point numbers are stored)
01:54:28 <oklopol> (ignore all "<oklopol> \(.*\)")
02:21:59 -!- jix__ has joined.
02:26:39 -!- jix__ has quit (Client Quit).
02:33:53 -!- jix has quit (Read error: 110 (Connection timed out)).
02:49:08 -!- ihope has quit (Read error: 110 (Connection timed out)).
03:37:50 -!- pikhq has quit ("leaving").
04:10:12 -!- Sgeo has quit ("Leaving").
06:06:56 -!- Lea has joined.
06:07:39 <Lea> Oh wonderful.
06:07:46 <Lea> Excellent.
06:07:50 <Lea> WOnderful.
06:07:55 -!- CakeProphet has changed nick to GrandmotherChaos.
06:07:59 <Lea> So how do I make t-...
06:08:05 <Lea> Grandmotherchaos, mm.
06:08:24 -!- GrandmotherChaos has changed nick to SevenInchBread.
06:08:35 -!- Lea has changed nick to SixInchBread.
06:08:55 -!- SixInchBread has changed nick to Lea.
06:09:58 -!- Lea has changed nick to LeaLeaLea.
06:17:47 <SevenInchBread> LeaLeaLea fizzie SevenInchBread oklopol lament_ NK` MM2 GregorR sekhmet cmeme bsmnt_bot bsmntbombdood puzzlet clog sp3tt mtve meatmanek SimonRC tokigun pgimeno
06:24:55 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.9/2006120612]").
06:25:46 -!- LeaLeaLea has joined.
06:35:52 -!- SevenInchBread has changed nick to CakeProphet.
06:37:29 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.9/2006120612]").
06:38:07 -!- LeaLeaLea has joined.
06:38:41 <LeaLeaLea> ..Have you made the bot work yet..
06:43:28 <CakeProphet> I'll make my own bot... WAY BETTER THAN EGOBOT
06:44:20 <CakeProphet> bsmntbombdood, it has a glass interpreter?
06:45:21 <bsmntbombdood> You are allowed to make net connections with bsmnt_bot
06:46:37 <CakeProphet> I don't think I even have a compiler for it.
07:05:09 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.9/2006120612]").
07:18:47 -!- bsmntbombdood has changed nick to lolipop.
07:20:14 -!- LeaLeaLea has joined.
07:20:38 -!- lolipop has changed nick to bsmntbombdood.
07:22:10 <LeaLeaLea> I have no time for your shenanagens.
07:24:15 <bsmnt_bot> {'thread_info': <thread._local object at 0xb7d41890>, 'exec_global_tracer': <function exec_global_tracer at 0xb7cad994>, 'pprint': <module 'pprint' from '/usr/lib/python2.4/pprint.pyc'>, 're': <module 're' from '/usr/lib/python2.4/re.pyc'>, 'SysWrapper': <class __main__.SysWrapper at 0xb7ca935c>, 'exec_local_tracer': <function exec_local_tracer at 0xb7cc033c>, '__doc__': N
07:24:15 <bsmnt_bot> one, 'math': <module 'math' from '/usr/lib/python2.4/lib-dynload/math.so'>, 'IRCbot': <class __main__.IRCbot at 0xb7ca92fc>, 'args': {'IDENT': 'bsmnt', 'REALNAME': 'bsmntbombdood bot', 'CHAN': '#esoteric', 'NICK': 'bsmnt_bot', 'HOST': '85.188.1.26', 'PORT': 6667, 'VERBOSE': True}, '__builtins__': <module '__builtin__' (built-in)>, '__file__': '/bot/ircbot.py', 'inspect': <
07:24:15 <bsmnt_bot> module 'inspect' from '/usr/lib/python2.4/inspect.pyc'>, 'IRCFileWrapper': <class __main__.IRCFileWrapper at 0xb7ca932c>, 'sys': <module 'sys' (built-in)>, '__name__': '__main__', 'copy': <module 'copy' from '/usr/lib/python2.4/copy.pyc'>, 'types': <module 'types' from '/usr/lib/python2.4/types.pyc'>, 'socket': <module 'socket' from '/usr/lib/python2.4/socket.pyc'>, 'threa
07:24:20 <bsmnt_bot> d': <module 'thread' (built-in)>, 'os': <module 'os' from '/usr/lib/python2.4/os.pyc'>, 'traceback': <module 'traceback' from '/usr/lib/python2.4/traceback.pyc'>, 'bot': <__main__.IRCbot instance at 0xb7cbf14c>, 'threading': <module 'threading' from '/usr/lib/python2.4/threading.pyc'>, 'time': <module 'time' from '/usr/lib/python2.4/lib-dynload/time.so'>, 'pickle': <module
07:24:25 <bsmnt_bot> 'pickle' from '/usr/lib/python2.4/pickle.pyc'>, 'marshal': <module 'marshal' (built-in)>}
07:25:16 <bsmnt_bot> <__main__.IRCbot instance at 0xb7cbf14c>
07:25:50 <CakeProphet> What's the quick way to match all the beginner stuff with register_raw?
07:28:39 <bsmntbombdood> If you want to get stuff like the nick, match it against self.message_re
07:32:07 -!- Sartak has joined.
07:32:17 -!- Sartak has left (?).
07:32:45 <CakeProphet> ~exec import random;self.register_raw("\S*: *~roll (?<d>\d*) *$", lambda x,y: sys.stdout(random.randint(1,y.groupdict.get("d", 6))))
07:33:43 <CakeProphet> ~exec import random;self.register_raw("\S*: *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout(random.randint(1,y.groupdict.get("d", 6))))
07:34:21 <CakeProphet> bsmntbombdood, what was the error message.
07:34:46 <CakeProphet> ~exec import random;self.register_raw("\S*: *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout(random.randint(1,y.groupdict.get("d", 6))))
07:35:24 <CakeProphet> ~exec import random;self.register_raw("^\S*: *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout(random.randint(1,y.groupdict.get("d", 6))))
07:35:43 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.9/2006120612]").
07:36:17 <bsmntbombdood> this is the format of a message: ":CakeProphet!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :what's wrong?
07:37:56 <CakeProphet> ~exec import random;self.register_raw("^\S* PRIVMSG #esoteric : *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout(random.randint(1,y.groupdict.get("d", 6))))
07:38:01 -!- bsmnt_bot has quit (Remote closed the connection).
07:38:05 -!- bsmnt_bot has joined.
07:40:24 <CakeProphet> ~exec import random;self.register_raw("^\S* PRIVMSG #esoteric : *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout(random.randint(1,int(y.groups("d")))))
07:40:35 -!- bsmnt_bot has quit (Remote closed the connection).
07:40:37 -!- bsmnt_bot has joined.
07:40:50 <CakeProphet> ~exec import random;self.register_raw("^\S* PRIVMSG #esoteric : *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout(str(random.randint(1,int(y.groups("d"))))))
07:40:54 -!- bsmnt_bot has quit (Remote closed the connection).
07:40:56 -!- bsmnt_bot has joined.
07:41:32 <CakeProphet> ~exec import random;self.register_raw("^\S* PRIVMSG #esoteric : *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout(str(random.randint(1,int(y.group("d"))))))
07:41:38 -!- bsmnt_bot has quit (Remote closed the connection).
07:41:40 -!- bsmnt_bot has joined.
07:42:25 <CakeProphet> ~exec import random;self.register_raw("^\S* PRIVMSG #esoteric : *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout(str(__import__("random").randint(1,int(y.groups("d"))))))
07:44:32 <CakeProphet> ~exec import random;self.register_raw("^\S* PRIVMSG #esoteric : *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout.write(str(__import__("random").randint(1,int(y.groups("d"))))))
07:46:04 <CakeProphet> ~exec import random;self.register_raw("^\S* PRIVMSG #esoteric : *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout.write(str(__import__("random").randint(1,int(y.group("d"))))))
07:47:44 <CakeProphet> ~exec globals()["random"] = __import__("random");self.register_raw("^\S* PRIVMSG #esoteric : *~roll (?P<d>\d*) *$", lambda x,y: sys.stdout.write(str(random.randint(1,int(y.group("d"))))))
07:56:33 <CakeProphet> ~exec self.__class__.imlazy = lambda x,f: self.register_raw("^\S* PRIVMSG #esoteric : *%s (?:(?: (.*?) ))* *", lambda ge,ha: sys.stdout(str(f(*ha.groups()))))
07:57:13 <CakeProphet> ~exec self.__class__.imlazy = lambda x,f: self.register_raw("^\S* PRIVMSG #esoteric : *%s (?:(?: (.*?) ))* *" % x, lambda ge,ha: sys.stdout(str(f(*ha.groups()))))
07:58:33 <CakeProphet> ~exec self.__class__.imlazy = lambda x,f: self.register_raw("^\S* PRIVMSG #esoteric : *%s (?P<inp>.*)$" % x, lambda ge,ha: sys.stdout(str(f(*ha.group("inp")))))
07:59:25 <CakeProphet> ~exec self.__class__.imlazy = lambda self, x,f: self.register_raw("^\S* PRIVMSG #esoteric : *%s (?P<inp>.*)$" % x, lambda ge,ha: sys.stdout(str(f(*ha.group("inp")))))
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:51 <CakeProphet> ....how could it possibly get a typeerror?
08:01:27 <CakeProphet> ~exec self.__class__.imlazy = lambda self, x,f: self.register_raw("^\S* PRIVMSG #esoteric : *%s (?P<inp>.*)$" % x, lambda ge,ha: sys.stdout(str(f(ha.group("inp")))))
08:02:20 <CakeProphet> ~exec self.imlazy("~cat", lambda foo: foo)
08:03:32 <CakeProphet> ~exec self.imlazy("~dup", lambda x: "%s %s" % (x,x))
08:04:20 <CakeProphet> ~exec self.imlazy("~dog", lambda x: x[::-1])
08:09:43 <CakeProphet> ~exec self.imlazy("~rot", lambda x:"".join( [(chr((ord(c) if ord(c) < ord("n") else ord(c)-26)+13) if c != " " else " ") for c in x]))
08:11:01 -!- helios24 has joined.
08:13:50 <CakeProphet> ~exec self.imlazy("~A", lambda x: " ".join(["".join(["A" for c in w]) for w in x.split()]) + "!")
08:14:07 <CakeProphet> ~A to be or not to be, that is the question
08:14:07 <bsmnt_bot> AA AA AA AAA AA AAA AAAA AA AAA AAAAAAAA!
08:15:02 <CakeProphet> I had to do a cheap hack to bypass the lack of conditionals.
08:15:18 <CakeProphet> I couldn't conditionally exclude whitespace from being converted... so I used split and applied a for loop to each word.
08:27:07 <CakeProphet> ~exec def mfit(src):; cmd = src[0]; src = src[1:]; if cmd == "~":; return src*2; elif cmd == "?":; if len(src)%2 == 0: return src.replace("?","\n").replace("~", "\t").replace("!","?").replace("\n","~").replace("\t","!"); else:; return src; else; print len(src); return ""
08:49:02 -!- sebbu has joined.
09:24:27 -!- wooby has joined.
10:00:30 -!- oerjan has joined.
10:13:33 <oerjan> amphibious programming FTW
11:49:38 -!- wooby has quit.
12:40:22 -!- Sgeo has joined.
12:50:56 -!- oerjan has quit ("Dream").
13:54:18 -!- helios24 has quit ("Leaving").
14:46:12 -!- ihope has joined.
15:10:22 * SimonRC lols at the original iPod announcement at Slashdot.
15:10:22 <SimonRC> "No wireless. Less space than a nomad. Lame."
15:10:47 <SimonRC> oklopol: have you been reading Uncyclopedia again?
15:15:30 <oklopol> i've never read uncyclopedia :\
15:27:52 <CakeProphet> (AAAAAAAAA! is something from uncyclopedia)
15:34:44 <oklopol> http://esoteric.voxelperfect.net/wiki/AAAAAAAAAAAAAA%21%21%21%21
15:43:40 <CakeProphet> what's the servername and hostname parameters of a USER IRC message for?
15:43:56 <CakeProphet> it seems odd that the server would request its own name in a USER message
15:46:09 <oklopol> it's for their internal messaging
15:46:26 <oklopol> just the same format between users and servers && servers and servers
15:46:34 <oklopol> if you supply it, it's ignored
15:46:48 <oklopol> read the rfc like us the rest of us
15:47:10 <SimonRC> CakeProphet: ok, my mistake
15:48:13 <CakeProphet> ....I did read the rfc... it didn't explain any of that
15:51:30 <oklopol> hmm, i'm not sure if the client rfc explains it, just saying they are ignored should suffice
15:51:42 <oklopol> you can read the server rfc if you care about details :)
15:52:55 <oklopol> Note that hostname and servername are normally ignored by the IRC
15:52:56 <oklopol> server when the USER command comes from a directly connected client
15:52:56 <oklopol> (for security reasons), but they are used in server to server
15:53:38 <oklopol> for security reasons... a very thorough explanation :)
16:00:45 <oklopol> god i chose the wrong lisp book :)
16:01:15 <oklopol> i've read 111 pages and i know EVAL, DEFUN and lists
16:01:40 <oklopol> i couldn't gotten all this information in 10 minutes from anyone who knows lisp
16:01:59 <oklopol> plus the book is from 1989... prolly changed quite a bit :)
16:02:10 <oklopol> but, gotta finish what i started
16:29:24 <ihope> There are two RFCs, eh?
16:29:32 <ihope> Is RFC 1459 the client one?
16:49:37 <fizzie> RFC 1459 is the old RFC.
16:49:49 <fizzie> The newer ones (there are 4 or 5 of them) start with a 2.
16:50:01 <fizzie> See http://www.irchelp.org/irchelp/rfc/
16:50:17 <oklopol> why am i always so goddamn obsolete
17:10:36 -!- Sgeo has quit (Remote closed the connection).
17:12:44 * SimonRC wonders why seperate layers are a good thing in software but a bad thing in your mind.
17:16:28 <oklopol> i thought mind was the ultimate layer management system
17:18:19 <SimonRC> Nonono, I was thinking about the Superego/Ego/Id thing, which IIRC Freud blames for many mental problems.
17:18:28 <SimonRC> OTOH, Freud wrote a lot of crap at times.
17:19:40 <oklopol> ah, you didn't mean different layers of abstraction, but that
17:20:21 <oklopol> isn't that more like... multithreading?
17:20:29 <oklopol> haven't read about that actualyl
17:21:50 -!- jix__ has joined.
18:31:26 -!- oerjan has joined.
18:41:33 -!- helios24 has joined.
18:56:48 -!- helios24 has quit ("Leaving").
18:57:31 -!- helios24 has joined.
18:57:42 -!- helios24 has quit (Read error: 104 (Connection reset by peer)).
18:58:22 -!- helios24 has joined.
19:03:32 -!- wooby has joined.
19:04:35 -!- helios24 has quit ("Leaving").
19:04:51 -!- helios24 has joined.
19:36:46 <oerjan> Entire computer? Including hardware? :)
19:37:10 <CakeProphet> nah... just the essentials and stuff I can't get elsewhere.
19:37:31 <CakeProphet> which compromises roughly 2.4 gigs of gzip compressed data.
19:37:38 <CakeProphet> which apparently is too large to... shove down my email...
19:38:44 <CakeProphet> once I get linux I can just access the partition directly.
19:39:38 <CakeProphet> I'm considering impatiently skipping the backup and booting it.
20:00:22 -!- CakeProphet has quit ("haaaaaaaaaa").
20:11:49 -!- CakeProphet has joined.
20:14:45 -!- CakeProphet has quit (Client Quit).
20:40:16 -!- pikhq has joined.
20:42:43 <meatmanek> SevenInchBread is apparently a dick.
22:03:27 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
23:15:30 -!- CakeProphet has joined.
23:36:57 -!- Sgeo has joined.
23:50:23 -!- sebbu2 has joined.
23:58:35 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
00:03:14 <oerjan> Maybe it can be part of that amphibious language
00:03:17 -!- wooby has quit.
00:03:26 <pikhq> I don't think it's valid Homespring. . .
00:03:30 <pikhq> Valid Brainfuck, though.
00:04:41 <oerjan> Now there is a task - make a program that means the same in Homespring and Brainfuck.
00:05:39 <pikhq> Given that one can't even be sure Homespring is Turing complete, that could be tricky. . .
00:08:17 <oerjan> Actually I meant that amphibious language oklopol was blathering about ;)
00:09:17 -!- sebbu has quit (Connection timed out).
00:12:30 <oklopol> i thought you might've ment it :)
00:13:00 <oklopol> maybe i'll make an amphibious language
00:13:43 <pikhq> Well, homespring *is* in some way amphibious. . .
00:14:06 <pikhq> It involves salmon as the message-passing system. . .
00:15:35 <oklopol> i had a more symbolic meaning for the word :)
00:16:06 <oklopol> i just didn't see the amphibi..a?
00:16:20 <oklopol> because i had my own idea about it
00:16:32 <oklopol> but then again, maybe you see when i do it
00:16:42 <oerjan> I hope so. Homespring seems to have a serious shortage of frogs.
00:17:03 -!- wooby has joined.
00:17:23 -!- wooby has quit (Client Quit).
00:17:35 <oklopol> Also, it should be noted that the null program (that is, a completely blank program) is special. When this program is run, the interpreter prints the message 'In Homespring, the null program is not a quine.' and exits.
00:17:58 <oklopol> oerjan, mine wouldn't have any water animals really
00:18:24 <oklopol> just the concept of code being run in multiple ...platforms simultaneously
00:19:03 <oklopol> because now that i've come to think of it, amphibious was imo a nice for for describing programs that run the samu way in many languages
00:19:15 <oklopol> even tho it was a typo then
00:20:49 <oklopol> that homespring... what the fuck 8|
00:23:11 -!- CakeProphet has joined.
00:25:53 <oklopol> i didn't understand anything really
00:26:29 <oklopol> the tree-parsing was not explained at all
00:26:40 <oklopol> and it'd take time for me to decrypt it
00:26:57 <oklopol> but a massive set of gizmos :D
00:27:03 <oerjan> You can take a look at Good Math/Bad Math
00:27:13 <pikhq> It's described in there?
00:27:23 <oerjan> That blog had an article on it recently
00:28:28 <oerjan> http://scienceblogs.com/goodmath/goodmath/programming/pathological_programming/
00:33:06 -!- sebbu2 has quit (""Que les puces d'un millier de chiens galeux infestent le cul de celui qui gachera une seule seconde de ta vie, et que les br).
00:45:20 -!- CakeProphet has quit ("haaaaaaaaaa").
00:53:57 -!- pikhq has quit (Read error: 110 (Connection timed out)).
00:55:27 -!- oerjan has quit ("Nothing clever here").
00:57:07 -!- pikhq has joined.
00:57:49 -!- CakeProphet has joined.
00:58:38 -!- CakeProphet has quit (Client Quit).
00:59:05 -!- CakeProphet has joined.
01:02:28 -!- CakeProphet has quit (Client Quit).
02:30:53 -!- lament_ has changed nick to lament.
02:35:19 -!- ihope has quit (Read error: 110 (Connection timed out)).
02:36:38 -!- pikhq has quit (Read error: 110 (Connection timed out)).
03:21:31 -!- wooby_ has joined.
03:21:32 -!- wooby_ has quit (Remote closed the connection).
03:22:23 -!- CakeProphet has joined.
03:26:35 -!- CakeProphet has quit (Client Quit).
03:48:29 -!- CakeProphet has joined.
03:53:18 -!- wooby_ has joined.
03:55:31 -!- CakeProphet has quit ("haaaaaaaaaa").
04:05:39 -!- helios24 has quit (Read error: 113 (No route to host)).
04:07:11 -!- CakeProphet has joined.
04:21:17 * CakeProphet is hacking linux to get his wireless to work .
04:23:29 -!- CakeProphet has quit ("haaaaaaaaaa").
04:46:15 -!- wooby_ has quit.
05:00:39 <GregorR> http://www.codu.org/win1.avi
06:00:23 -!- tokigun has quit ("finally i have quit message! yay!").
06:20:41 -!- CakeProphet has joined.
06:35:38 -!- tokigun has joined.
07:34:33 -!- sebbu has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:29:46 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
08:34:48 -!- wooby_ has joined.
09:11:41 -!- helios24 has joined.
09:14:49 -!- wooby_ has quit.
10:41:14 -!- ihope has joined.
10:45:19 -!- oerjan has joined.
11:51:30 -!- CakeProphet has quit ("haaaaaaaaaa").
13:06:53 <fizzie> Then atto, zepto and yocto. The last two always make me smile.
13:08:40 <oklopol> memorized those some years ago
13:08:41 <fizzie> "Our system has a yoctokernel architecture."
13:18:52 <oerjan> Those last ones sound like the names of Marx brothers
13:32:41 -!- oerjan has quit ("Hunting for food").
13:51:43 -!- helios24 has quit (Read error: 110 (Connection timed out)).
15:44:45 -!- helios24 has joined.
16:04:56 -!- ihope has quit (Connection timed out).
16:22:27 -!- sebbu has quit ("reboot").
16:33:38 -!- tgwizard has joined.
16:34:54 -!- FabioNET has joined.
16:36:46 -!- jix__ has joined.
16:42:40 -!- sebbu has joined.
16:51:19 -!- jix__ has changed nick to jix.
18:34:38 -!- helios24 has quit (Read error: 113 (No route to host)).
19:40:20 -!- helios24 has joined.
20:01:51 -!- sebbu2 has joined.
20:20:42 -!- sebbu has quit (Read error: 110 (Connection timed out)).
20:31:04 -!- helios24 has quit ("Leaving").
20:31:09 -!- helios24 has joined.
20:39:43 -!- oerjan has joined.
20:47:08 -!- ihope has joined.
20:56:40 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
21:12:35 -!- CakeProphet has joined.
21:14:10 <CakeProphet> I still can't get my network adapter to run in linux.
21:18:11 <ihope> What is ndiswrapper, exactly?
21:18:21 <ihope> A Windows driver loader thingy?
21:19:03 <CakeProphet> it's a interface for working with windows-centric drivers.
21:19:17 <CakeProphet> my network adapter sucks and was only made to work with Windows.
21:22:19 -!- CakeProphet has quit ("haaaaaaaaaa").
21:23:00 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:25:10 -!- helios24 has quit ("Leaving").
21:25:18 -!- helios24 has joined.
21:30:37 -!- helios24 has quit ("Leaving").
21:30:45 -!- helios24 has joined.
22:00:02 -!- FabioNET has quit ("goooood night tox").
22:05:51 -!- ihope has changed nick to naIioth.
22:05:59 -!- naIioth has changed nick to ihope.
22:16:11 -!- sebbu2 has changed nick to sebbu.
22:17:36 -!- GreaseMonkey has joined.
22:17:40 <GreaseMonkey> ;> #"87*3+,'>,' ,'#,ff+4+,>:#,_ff+4+,87*3+,'#,'0,'<,@";#0<
22:19:03 <GreaseMonkey> well, unefunge-98, but can be run in befunge-98 or trefunge-98
22:19:55 <oklopol> [00:14:23] * GreaseMonkey has joined #esoteric
22:19:55 <oklopol> [00:14:26] <GreaseMonkey> ;> #"87*3+,'>,' ,'#,ff+4+,>:#,_ff+4+,87*3+,'#,'0,'<,@";#0<
22:21:07 <oklopol> befunge-98 is n-dimensional?
22:31:33 -!- CakeProphet has joined.
22:32:00 <GreaseMonkey> befunge runs unefunge as-is, unless someone's being a bastard and they set up a trap
22:33:19 * oerjan wonders if oklopol has a bit too high expectations
22:33:21 <GreaseMonkey> like: ;@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"its unefunge not befunge you git";# ](code goes here)
22:46:54 <ihope> Say, how's SOAP coming along?
22:49:13 * oerjan wonders if SOAP shouldn't be written in Clean...
22:54:59 * CakeProphet could use bits of his half-developed MUD codebase for the user-end/event stuff.
23:09:51 -!- GreaseMonkey has quit (Nick collision from services.).
23:10:12 -!- GreaseMonkey has joined.
23:23:22 <ihope> Do not /nickserv GHOST yourself.
23:30:08 <oerjan> You need \001 characters
23:35:56 <GreaseMonkey> http://greasemonkey.shadowarts.org/befunge98-r002.zip - a kinda incomplete but still very useable befunge-98 interpreter, comes with examples, what's implemented, what's not, etc.
23:39:11 <GreaseMonkey> ;> #"87*3+,'>,' ,'#,ff+4+,>:#,_ff+4+,87*3+,'#,'0,'<,@";#0<
23:40:00 <GreaseMonkey> i believe that daemons should be coded in a funge
23:40:32 <GreaseMonkey> befunge-98 preferably - that's about as expandable as befunge gets
23:41:12 * oerjan recalls a norwegian fantasy book in which daemons were six-dimensional creatures
23:43:28 <oerjan> Always use hexefunge for your magical programming!
23:44:55 <oerjan> (btw the answer is no)
23:45:20 <GreaseMonkey> i think trefunge is intense enough, and i haven't even tried it
00:17:38 -!- LeaLeaLea has joined.
00:19:02 <CakeProphet> IN FOUR DAYS THERE WILL BE SOURDOUGH BREAD.
00:19:14 <oerjan> ahem. bread is not cake.
00:19:24 -!- CakeProphet has changed nick to SevenInchBread.
00:19:40 -!- SevenInchBread has changed nick to CakeProphet.
00:19:59 <LeaLeaLea> I TIRE OF YOUR BREAD RELATED NICKNAMES.
00:22:37 <CakeProphet> LeaLeaLea, YOUR VISIT IS MERELY REPUTATIONAL
00:23:18 <LeaLeaLea> You better be findin' the bitches.
00:23:55 <oerjan> oh no, the frankincense monster
00:24:15 <LeaLeaLea> Leaving off the H in hello was not intentional.
00:24:34 <CakeProphet> GregorR, fix egobot or I'll choke your goat
00:25:30 <LeaLeaLea> .. MOVING RIGHT ALONG. There are two people besides (Insert any one in an array bread product nicks here) speaking today.
00:28:21 <SimonRC> Have you lot heard of _The Eye Of Argon_?
00:28:54 <SimonRC> Well I have found something a bit like it:
00:29:58 <SimonRC> Oh, it's the worst amature sword-and-sourcery story ever (partly-) written.
00:30:11 <SimonRC> anyway, the thing I have found is a book:
00:30:15 <SimonRC> "The world is full of bad books written by amateurs. But why settle for the merely regrettable? Atlanta Nights is a bad book written by experts."
00:30:33 <SimonRC> It was written as a sting by some writers against a publisher
00:32:02 <CakeProphet> ...if I had linux working I could probably compile erm... egobot.
00:33:27 <LeaLeaLea> If I had linux I would hit you in the face.
00:33:59 <CakeProphet> LeaLeaLea, linux can send people through my monitor?
00:34:07 <CakeProphet> and here I thought the whole linux thing was just hype.
00:34:53 <LeaLeaLea> Linux has infinite capabilites, MANY MORE than Windows! I heard, with Redhat you can stab wily opponants in the heart with a poisonous barb with the click of a button.
00:35:44 <CakeProphet> and also... MY TEXT EDITOR IS SUPERIOR TO YOURS
00:37:06 <LeaLeaLea> If I had linux I could send you juice from across the internets.
00:37:31 <GregorR> Am I the only person who would love to find a working development environment for Windows 1.0? :P
00:37:33 -!- sebbu2 has joined.
00:38:09 <CakeProphet> what chatspeak thing? ? D ?D? LD ?LO LOLNOOB
00:38:27 <LeaLeaLea> Hello Signore GregoR with the inexplicable yet oddly alluring capital R.
00:39:51 <CakeProphet> because there's only one, synthetically created smurf woman.
00:40:40 <CakeProphet> lol i bet you wear eyeliner like a noob lea
00:41:11 <LeaLeaLea> I never did send you my Smurf Village analysis story.
00:41:42 -!- EgoBot has joined.
00:42:06 <LeaLeaLea> Though at least egobot is apparantly here
00:42:12 <GregorR> Must ... find ... Windows 1.0 development libraries ...
00:42:49 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:42:51 <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:26 * LeaLeaLea engages in forcula battle with CakeProphet.
00:45:51 <CakeProphet> That was the ENTIRE reason I wanted egobot up
00:47:24 <CakeProphet> !glass {M[m(_o)O!((_a)A!(_noob)<40>=/(_noob) "Nope "(_o)o.?(_noob)<1>(_a)s.?\]}
00:48:54 <CakeProphet> !glass {M[m(_o)O!((_a)A!(_noob)<10>=/(_noob) "Nope "(_o)o.?(_noob)<1>(_a)s.?\]}
00:49:24 <oerjan> !unlambda ```````````````.C.a.n. .I. .j.o.i.n. .i.n.?ri
00:51:41 <CakeProphet> !glass {M[m(_o)O!((_a)A!(_s)S!(_noob)<10>=(_hehe)"Nope "=/(_noob) (_hehe)(_hehe)"Nope "(_s)a.?=(_noob)<1>(_a)s.?\(_hehe)(_o)o.?]}
00:52:22 <oerjan> !unlambda `r`..`.u`.o`.y`. `.k`.n`.a`.h`.Ti
00:53:33 <CakeProphet> !glass {M[m(_o)O!((_a)A!(_s)S!(_noob)<10>=(_hehe)"Nope "=/(_noob) (_hehe)(_hehe)*"Nope "(_s)a.?=(_noob)(_noob)*<1>(_a)s.?=\(_hehe)(_o)o.?]}
00:54:10 <oerjan> You've got a (( in there.
00:56:25 -!- sebbu has quit (Connection timed out).
00:57:39 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:57:41 <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:58:46 <LeaLeaLea> I should go inhale the noxious and poisonous fumes of a small white cylinder laden with nicotine.
01:04:45 <EgoBot> ...moorhsum a erew I fI
01:04:59 <CakeProphet> why did you need to tell it to go the direction it was alread going?
01:05:12 <oerjan> Haskell Brooks Curry, to be precise.
01:05:15 <EgoBot> If I were a mushroom...
01:06:14 <bsmntbombdood> oerjan: He must have done a lot to get two different things named after him
01:06:30 <GreaseMonkey> _ in C: if(pop_from_stack()==0){go_right();}else{go_left();}
01:07:06 <oerjan> They first wanted to call the Haskell language Curry but then thought of all the bad jokes
01:07:37 <oerjan> But later someone made the Curry language too
01:08:02 <oerjan> and there is of course currying, which should have been schonfinkeling :)
01:08:22 <oerjan> Curry, anyhow, invented combinatory logic
01:08:28 -!- sebbu2 has quit ("@+").
01:10:49 <CakeProphet> hrm... is it possible to do multiline befunge programs with egobot?
01:11:46 * CakeProphet heckles Lea some more about smoking in an overtly satirical manner.
01:11:52 <CakeProphet> I think we should harass fat people some more.
01:12:14 <oerjan> be careful with that, they might sit on you.
01:12:38 * oerjan already weighs more than he is comfortable with.
01:13:59 * oerjan wonders if Marie Antoinette is a saint in the CakeProphet religion
01:14:36 <oerjan> (Except she never really said that)
01:14:52 <LeaLeaLea> Boy did she ever pay for it, though.
01:15:11 <LeaLeaLea> EgoBot cannot spell Lea, and thus renders her immune.
01:15:33 <oerjan> b a c k w a r d s. there.
01:15:37 <EgoBot> be nice to bots or stfu
01:19:34 <GreaseMonkey> i bags that we use mIRC / irssi / whatever scripts so when we get versioned we automatically /msg !funge93 01"NOISREV"1>:#,_@ to egobot
01:22:30 -!- ihope has quit (Connection timed out).
01:22:58 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.9/2006120612]").
01:23:05 <EgoBot> oohoooohoohoohoohoooooohoohoohoohoooooooooooooooooohoohoooooooohoooohoooohoooooohoooooooohoohoohoohoooooooohoooohoooooohoohoooohoooohoohoooohoohoooohoooooohoooooohoooooohoooohoohoooooooooooooooooooohoohoohoooooooohoohoooooooooohoohoooooohoooooohoohoohoooohoohoohoohoohoooohoooohoohoohoohoooohoooooooooohoooooooooooohoohoooooooooohoohoooohoooohoohoohoooohoohoooooooooooohoooooohoooo
01:23:09 <EgoBot> 2 CakeProphet: funge93
01:23:15 <EgoBot> ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
01:23:49 <EgoBot> eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
01:24:58 <EgoBot> 2 GreaseMonkey: funge93
01:24:59 <EgoBot> 3 GreaseMonkey: funge93
01:25:41 <EgoBot> ?ees uoy oDDo you see??ees uoy oDDo you see??ees uoy oDDo you see??ees uoy oD
01:25:47 -!- pikhq has joined.
01:26:09 <EgoBot> ?ees uoy oDDo you see? ?ees uoy oD
01:26:21 <EgoBot> ?ees uoy oDDo you see? ?ees uoy oD
01:26:22 <GreaseMonkey> !funge93 :0g:84*-!#@_801p0>_#":2%86*+\2/01g1-:01p0\#"_$$,,,,,,,,1+
01:26:25 <EgoBot> 001110100011000001100111001110100011100000110100001010100010110100100001001000110100000001011111001110000011000000110001011100000011000000111110010111110010001100100010001110100011001000100101001110000011011000101010001010110101110000110010001011110011000000110001011001110011000100101101001110100011000000110001011100000011000001011100001000110010001001011111001001000010010000101
01:26:56 <CakeProphet> !funge93 >"001010101010101010101010111011011000101011101010010101011010100101 "?>:#,_@
01:26:59 <EgoBot> 101001010110101010010101110101000110110111010101010101010101010100001010101010101010101010111011011000101011101010010101011010100101 101001010110101010010101110101000110110111010101010101010101010100
01:27:24 <pikhq> !funge93 >"!dlorw ,olleH"?>:#,_@
01:27:38 <pikhq> !funge93 >"!dlrow ,olleH"?>:#,_@
01:27:41 <EgoBot> Hello, world!!dlrow ,olleHHello, world!!dlrow ,olleHHello, world!!dlrow ,olleHHello, world!
01:28:22 <CakeProphet> !funge93 >"001010"?"10101"?"010101010"?"10"#?"10111011011000101011"?#"101010010101"?"01"?"1010100101"?>:#,_@
01:29:01 <CakeProphet> !funge93 >"001010"?"10101"?"010101010"?"10"#?"10111011011000101011"?#"101010010101"?"01"?"1010100101"?>:#,_@
01:29:27 <EgoBot> HeHHHHelHeHeHHellHeHeHHHeHelloolleHlHeHeHeHHHeHeHellHHHHeHHeHeHeHHeHeHeHHHeHeHHHelHelloHHHHHellHeHellHelHelloolHHHelHHelHelHeHHHeHHHHeHHeHeHellHellooHHeHeHHHHeHeHHellHeHelloollHelHeHelloollHHellHellooHHHeHeHeHelHHHHHHeHeHHelHelHelHHHHHHHeHelHeHellHHeHHeHHelHeHHeHHHeHelloHeHeHHHelHelHHHHeHHellHHHHHHeHeHHHHHellHeHelHHHellooHeHHHeHelHeHeHHeHeHHHellHHHHellHellHHHeHHHHeHHHelHHHHelHHH
01:30:04 <CakeProphet> !funge93 >"00 1 010"?"10 10"#?" 1"?" 010 1 0 1 010" ?"10 "#?" 10 1 1 1 0110 11 00 01 01011"?#"101010010101"?"01"?"1010100101"?>:#,_@
01:30:23 -!- oerjan has quit ("Good night.").
01:30:31 * CakeProphet likes conditionally skipping string mode on number strings.
01:32:30 <CakeProphet> with literally hundreds of operators and syntax forms?
01:33:03 <CakeProphet> simple is fun and awesomely beautiful.... but sometimes I like to play around with languages like homespring. :?D
01:35:58 * CakeProphet calls upon the aid of the Adjudicated Blind Collaborative Design Esolang Factory to perform this task.
01:38:37 <GreaseMonkey> i reckon that brainfuck needs more instructions to be practical
01:38:39 <pikhq> Make the factory have, say, *rules*.
01:38:59 <GreaseMonkey> #1: People with nonlogic accounts make the rules. ;D
01:39:50 <pikhq> Of course, that's because I'm only Leibniz.
01:40:42 <pikhq> Leibniz is the name of the Nonlogic server.
01:40:52 <GreaseMonkey> pikhq: i would suggest that you stick some more stuff on your site
01:41:25 <pikhq> GreaseMonkey: If I had the time, I would.
01:41:32 <pikhq> (I'll probably do that over spring break)
01:41:51 <pikhq> At the moment, all it's got is an outdated spec for BFM.
01:42:00 <pikhq> (the *current* BFM spec is in bfm.tar.bz2)
01:42:54 <GreaseMonkey> yeah, there's a lot of stuff lying around unused in your home dir
01:43:29 <pikhq> I'm lazy, HTML-wise.
01:43:37 <pikhq> As proven if you look at the source to my page. . .
01:44:05 <pikhq> greasemonkey.nonlogic.org?
01:44:36 <pikhq> I'm HTML 4.01 strict and CSS 2.
01:45:15 <pikhq> And you really need to get a new Seagate drive.
01:45:38 <GreaseMonkey> hmm, yeah, i'm seeing if we can sort the prob out
01:47:17 <pikhq> I was *trying* to compile GNU Chess so I could play chess during my Cisco class.
01:50:27 <pikhq> Needed to install flex and bison. . .
01:50:31 <pikhq> Which didn't work out.
01:50:43 <pikhq> (GNU Chess, that is)
01:52:39 <GreaseMonkey> bummer - FYB's interpreter is dodgy (under Windows at least)
01:54:30 <pikhq> Compile using Cygwin?
01:57:55 <SimonRC> #23: If you are a security guard for a vast, powerful corporation, try to get assigned to the Marketing or Personnel departments, rather than R&D.
01:58:00 <SimonRC> http://web.archive.org/web/20050810082607/enphilistor.users4.50megs.com/innocent.htm
02:02:59 -!- calamari has joined.
02:10:30 -!- pikhq has quit (Read error: 145 (Connection timed out)).
02:31:09 <lament> I saw cpressey and his wife today
02:35:43 -!- pikhq has joined.
02:39:16 <GreaseMonkey> !glass {B[b<99>^]}{P[(c__)oO!t$aA!][n<10>s(ns).?oo.?][poo.?tn.?][b(_m)1=,(_x)<0>
02:39:16 <GreaseMonkey> (_m)*ae.?=(_y)<1>=/(_x)"No more"oo.?(_x)0=(_y)0=\/(_y)(_m)*o(on).?(_y)0=\
02:39:16 <GreaseMonkey> " bottle"oo.?(_x)<1>(_m)*ae.?=/(_x)^(_x)0=\"s"oo.?]}{C[(c__)oO!aA!sS!pP!t
02:39:16 <GreaseMonkey> $][gn*][xn1=,][dnn*<1>as.?=][vn*pb.?" of beer on the wall,\n"pp.?n*pb.?qe
02:39:16 <GreaseMonkey> " of beer,\n"pp.?"Take one down, pass it around\n"pp.?ln*<1>as.?=l*pb.?wu
02:39:16 <GreaseMonkey> " of beer on the wall.\n\n"pp.?pn.?]}{M[moO!cC!bB!bb.?cx.?fcg.?=/fcv.?cd.
02:39:44 <GreaseMonkey> !glass {B[b<99>^]}{P[(c__)oO!t$aA!][n<10>s(ns).?oo.?][poo.?tn.?][b(_m)1=,(_x)<0>(_m)*ae.?=(_y)<1>=/(_x)"No more"oo.?(_x)0=(_y)0=\/(_y)(_m)*o(on).?(_y)0=\" bottle"oo.?(_x)<1>(_m)*ae.?=/(_x)^(_x)0=\"s"oo.?]}{C[(c__)oO!aA!sS!pP!t$][gn*][xn1=,][dnn*<1>as.?=][vn*pb.?" of beer on the wall,\n"pp.?n*pb.?qe" of beer,\n"pp.?"Take one down, pass it around\n"pp.?ln*<1>as.?=l*pb.?wu" of beer on the wall.\n\n"pp.?pn.?]}{M[moO!cC!bB!bb.?cx.
03:02:26 -!- anonfunc has joined.
03:04:02 <GreaseMonkey> ;> #"87*3+,'>,' ,'#,ff+4+,>:#,_ff+4+,87*3+,'#,'0,'<,@";#0<
03:04:48 <GreaseMonkey> damn, why are all the cool funges unimplemented?
03:06:29 <CakeProphet> I'd like to do a 2D grid language that uses gravitational pull to move around data..
03:07:13 <pgimeno> this funge93 nomenclature suffers from Y2K effect
03:07:25 <CakeProphet> force = G((mass1 * mass2)/DistanceBetweenTwoPoints)
03:08:45 <CakeProphet> if you used realistic newtonian models you could create planet-like systems.
03:08:53 <CakeProphet> but... that's far-fetched for a simple language, :P
03:11:30 <CakeProphet> Glass... but with befunge-like commands for weird backwards control flow and stuff.
03:14:19 <pikhq> Mmm. . . Reverse polish. . .
03:14:48 <pikhq> That's all that Glass does, in essence.
03:14:56 <pikhq> Same with Fortran.
03:14:57 <GreaseMonkey> as visible here (funge98, not funge93): ;> #"87*3+,'>,' ,'#,ff+4+,>:#,_ff+4+,87*3+,'#,'0,'<,@";#0<
03:15:10 <pikhq> Except, of course, Fortran is meant to be used on a regular basis.
03:15:13 <CakeProphet> put 2 on the stack, put 2 on the stack, compute the sum of the the 1st and 2nd items of the stack, put 5 on the stack, multiply the top two items and place the produce on the stack, place 3 on the stack, place 4 on the stack, subtract the top two items, multiply the top two items.
03:15:49 <CakeProphet> befunge isn't technically RPN... it is stack based though.
03:16:43 * CakeProphet has been using the a functional fungeoid model in a lot of his ideas lately.
03:17:36 <GreaseMonkey> PUSH dword 2; PUSH dword 2; POP eax; POP ebx; ADD ebx,eax; PUSH ebx; PUSH dword 5; (whatever pop eax, pop ebx, ebx*=eax is); PUSH ebx; PUSH dword 3; PUSH dword 4; POP eax; POP ebx; SUB ebx,eax; PUSH ebx
03:19:10 <CakeProphet> so... g and p in befunge can be used as variables right?
03:19:22 <CakeProphet> I know they can be used like one-shot memory.
03:19:47 <pikhq> GreaseMonkey: Some horrid x86 asm syntax on the mind?
03:24:53 -!- CakeProphet has quit ("haaaaaaaaaa").
03:45:51 -!- thematrixeatsyou has joined.
03:46:32 -!- GreaseMonkey has quit (Nick collision from services.).
03:46:39 -!- thematrixeatsyou has changed nick to GreaseMonkey.
03:47:10 -!- GreaseMonkey has changed nick to ^_`.
03:47:34 <^_`> it fits this channel: esoteric and up the top because it's esoteric
03:47:50 <^_`> so this channel is lead by esotericism
03:53:50 -!- Sgeo has joined.
04:10:08 <GregorR> Must ... find ... Windows SDK for Windows 1.0 ...
04:10:49 <pikhq> What's wrong with you, and where can I become wrong in the same way?
04:11:53 * pikhq has a stupid project idea. . .
04:11:59 <pikhq> Reimplement the Windows 1.0 API!
04:12:38 <GregorR> Excuse me ... I need to vomit.
04:12:42 <pikhq> And meanwhile, wish this laptop would stop melting the flesh off of my leg.
04:12:52 <GregorR> Can you smell burning solder?
04:13:09 <pikhq> Solder melts long before it burns.
04:13:43 <pikhq> And my sloppy solder joint on the repaired power connector would have left my computer screwed by now.
04:16:11 * pikhq should stop using the CPU at near 100% for a bit. . .
04:16:15 <pikhq> Might make it cooler.
04:16:24 <pikhq> Of course, I could just throw it out in the snow. . .
04:41:32 -!- ^_` has quit (Read error: 110 (Connection timed out)).
05:17:14 -!- pikhq has quit ("leaving").
05:38:16 -!- MM2 has quit (Read error: 104 (Connection reset by peer)).
05:48:36 -!- MM2 has joined.
06:13:33 -!- calamari has quit ("Leaving").
06:47:22 -!- Sgeo has quit (Remote closed the connection).
07:43:17 -!- sebbu has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
11:23:39 -!- LeaLeaLea has joined.
11:33:30 -!- oerjan has joined.
11:59:01 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.9/2006120612]").
12:06:03 * oerjan _thinks_ someone here recently confused Fortran and Forth.
12:08:17 <oerjan> At least I was not aware that Fortran was stack-based, except underlying implementation.
12:28:59 -!- helios24 has quit ("Leaving").
12:29:16 -!- helios24 has joined.
12:40:19 -!- ihope has joined.
13:15:59 -!- oerjan has quit ("Seahorse").
13:39:46 -!- calamari has joined.
14:39:58 -!- jix__ has joined.
15:07:43 -!- calamari has quit ("Leaving").
16:18:24 -!- FabioNET has joined.
17:00:58 -!- tgwizard has joined.
17:11:25 -!- anonfunc has quit.
18:32:34 -!- ihope_ has joined.
18:47:53 -!- ihope has quit (Connection timed out).
19:20:22 -!- sebbu2 has joined.
19:39:27 -!- sebbu has quit (Read error: 110 (Connection timed out)).
19:47:24 -!- _FabioNET_ has joined.
19:49:30 -!- FabioNET has quit (Read error: 145 (Connection timed out)).
19:50:07 -!- oerjan has joined.
19:53:07 <SimonRC> oerjan: real Fortran has static allocation of everything, and no stack
19:53:45 <lament> but not Object-Oriented Fortran!!!
19:54:25 <lament> it's what people say when you hit them in the stomach
19:55:36 <SimonRC> Fortress looks cool. it is designed to replace Fortran, though it is not similar.
19:56:27 <SimonRC> e.g. its for loops are parallel, it uses real maths notation, and it has a datastructure system that is a superset of OO.
19:56:54 <SimonRC> and the "module" system is interesting too, haven't seen that before.
19:57:48 <SimonRC> Schemers go for a bit more elegance and a bit less pragmaticism that Common Lispers.
19:58:04 <lament> bsmntbombdood: how's that stupid?
20:04:42 <bsmntbombdood> And weird how the end of a list is different from false
20:06:21 <lament> "the end of a list" is a list
20:06:31 <lament> they're different types
20:06:45 <lament> well, then CL sucks at typing
20:06:52 <lament> since lists and booleans are clearly different things
20:07:47 <lament> same reason that false and 0 aren't the same thing
20:10:14 <lament> (math is actually very lax about this; but even in math 0 and empty set aren't usually taken to be the same)
20:43:14 <oerjan> Well, math typing is intensional so things may be "implemented" as the same set despite being distinguished in practice. As a von Neumann ordinal 0 is the empty set, and this is often used as the first step in building numbers out of set theory.
20:43:38 <lament> well, the real 0 can't possibly be an empty set
20:46:10 <oerjan> Of course it can, in fact precisely because 0 has no intrinsic set semantics, you can choose any set whatsoever to represent it.
20:47:57 <oerjan> In a sense the "real" 0 is not a set at all, which makes what you say true in one sense.
20:48:55 <lament> well, you can choose anything to represent anything
20:49:09 <lament> but not in any nice consistent way, which is the whole point of "implementing" stuff on top of other stuff in math
20:50:01 <lament> the reason we "implement" reals in the first place is so that we can derive their properties from the definition
20:50:20 <lament> a definition where 0 is the empty set is unlikely to be useful for that
20:50:48 <oerjan> For 0 the nice consistent representation depends on which 0 you are talking about - natural, integer, real, complex, ordinal, cardinal. And even then there may be more than one choice for each, depending on how you choose to model the whole set.
20:51:47 <lament> in any case, the "nice consistent representation" is usually not the empty set.
20:51:53 <lament> Certainly not the empty set for vectors and matrices.
20:52:01 <oerjan> I admit that neither the Dedekind cut nor the equivalence class of Cauchy sequences for 0 is the empty set.
20:53:07 <oerjan> The surreal number (which embeds the reals and could be taken as their representation) is the empty game which gets close.
20:53:51 <oerjan> Essentially a pair of empty sets.
20:55:17 <pgimeno> that's a sexy pair of empty sets
21:19:08 -!- sebbu has joined.
21:26:51 -!- ihope_ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
21:33:40 -!- sekhmet has quit (Remote closed the connection).
21:34:14 -!- sekhmet has joined.
21:37:12 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:38:11 -!- sebbu2 has quit (Connection timed out).
22:15:16 -!- CakeProphet has joined.
22:25:25 -!- _FabioNET_ has quit ("goooood night").
23:32:19 -!- Sgeo has joined.
23:49:55 -!- tgwizard has quit (Remote closed the connection).
00:10:36 -!- sebbu has quit (Connection timed out).
00:13:12 <oerjan> Malbolge seems awfully resistant to attempts to remove its size limitations. :(
00:15:21 <oerjan> At least without totally breaking backwards compatibility.
00:26:29 -!- ihope has joined.
00:29:46 <ihope> So does the platform for our operating system exist yet?
01:06:48 <SimonRC> "Wikipoedia -- Wikipedia for kids!"
01:07:14 <SimonRC> mayby my classical roots are mixed up :-S
01:11:36 <SimonRC> Some typesystems will allow the definition of the y-operator, too
01:13:06 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
01:13:45 -!- bsmntbombdood has quit (Read error: 104 (Connection reset by peer)).
01:17:09 -!- bsmntbombdood has joined.
01:25:16 <ihope> That's all the recursion you need.
01:25:59 <ihope> If you want f x y = x (y f) y y (f y x), then f = fix (\b -> x (y b) y y (b y x)).
01:32:27 <CakeProphet> I've got a USABLE esolang, designed to be used in an actual application, that resemvles English, and looks weird.
01:33:26 <CakeProphet> but it doesn't have a myriad of special keywords.
01:33:27 <SimonRC> Quick, you must give it only linear types in order to make it more useless and esoteric!
01:33:55 * SimonRC wonders what would happen if you crossed "ORCS!" with "Ork". Both are OO.
01:34:07 <SimonRC> "ORCS!" is a lang for writing roguelikes.
01:34:21 <SimonRC> bsmntbombdood: Oooooh no there isn't!
01:34:35 -!- pikhq has joined.
01:35:26 <CakeProphet> but none of that, except "Thank you, good sir!" was a reserved keyword.
01:37:29 <SimonRC> What kind of bloody keyword is "Thank you, good sir!"?
01:38:00 <pikhq> What'd I miss, and what the hell is wrong with you?
01:38:30 <CakeProphet> well... You there, cat amy or may not be special syntax...
01:38:58 <pikhq> bsmntbombdood: The class is "scribe", not "Scribe".
01:40:21 * pikhq thinks of a brilliantly insane idea. . .
01:40:53 <pikhq> Make a Brainfuck variant which makes use of every character which one can type on a standard US English keyboard.
01:41:10 <ihope> That would be printable ASCII.
01:41:22 * oerjan thinks of an even more brilliantly insane idea.
01:41:34 <oerjan> Make that a Chinese keyboard.
01:41:39 <ihope> And I have final exams tomorrow and it's bedtime. Bye-bye.
01:41:50 <SimonRC> oerjan: Have you seen a chinese keyboard
01:41:56 -!- ihope has quit ("No, make that Unicode. Very insane.").
01:41:57 <CakeProphet> hrm... and it apparently will be using list-like symbols.
01:42:26 <CakeProphet> but... not exactly.. like you can set objects as well as symbols, which has the effect of being in-place assignment.
01:47:19 <SimonRC> oerjan: http://www.fi.muni.cz/usr/wong/teaching/chinese/notes/node11.html
01:47:20 <pikhq> You could even make this Brainfuck++ include a couple of stacks. . . Forking. . . Two arrays. . .
01:47:24 <pikhq> God, that's just evil.
01:47:36 <SimonRC> THE kb HAS CHARACTER FRAGMENTS ON IT WHICH THE COMPUTER ASSEMBLES
01:48:18 <SimonRC> There ought to be a distributed-computing version of Brainfuck.
01:48:33 <SimonRC> It would be called "Clusterfuck"
01:48:42 <SimonRC> the OO version would be "OFuck"
01:48:47 <pikhq> The multiple-threaded Brainfuck version could probably be ran on a distributed computing system.
01:48:58 <SimonRC> and the unicode version "Fuck-U"
01:49:14 <SimonRC> pikhq: (that was just a joke about the names)
01:50:25 <pikhq> And, I assume, there'd be an Internet-supporting version called "GoFuck", and one that's introspective, called "Yourself". . .
01:50:34 <pikhq> And the combined version, "GoFuckYourself".
01:51:25 <SimonRC> If you add a command for turning off the computer, that would be "FuckOff"
01:52:27 -!- bsmntbombdood has quit (Read error: 104 (Connection reset by peer)).
01:52:39 <oerjan> I will leave to others to mention the name of the web camera version
01:52:48 <CakeProphet> THIS SOUNDS LIKE A JOB FOR THAT ESOLANG FACTORY
01:52:50 <pikhq> And a version combined with Malbolge. . .
01:53:01 <pikhq> Variant, you mean.
01:53:32 <CakeProphet> concurency, networking, oo, functional, extended control flow, etc
01:53:45 <SimonRC> oerjan: Actually I can't guess that one.
01:54:48 -!- bsmntbombdood has joined.
01:55:40 <SimonRC> CakeProphet: it would be like OO COBOL. you would only see clear code when in your programming class, buit in the Real World, you would keep finding code that still had raw <>+_[]., in it.
01:55:57 <SimonRC> OST, that would what BFM would be like as a commercial language.
01:56:52 <SimonRC> If BF was extended into a commercial language.
01:56:58 <oerjan> ok then, it would obviously be FuckFace
01:57:01 <SimonRC> Yo0u know what real-world COBOL is like, right?
01:57:19 <SimonRC> oerjan: sigh. That is the one with interface definitions, surely?
01:57:53 <CakeProphet> I've never quite figured out the use of an interface -type-
01:57:58 <pikhq> Yes. . . We must engage in factoriness.
01:58:59 <CakeProphet> which inevitably means that I'll be the lucky one implementing it later...
01:59:17 <oerjan> this, however, would be a Fucktory.
02:00:21 <CakeProphet> I really like the space-delimits-both-functions-and-class-attributes syntax of conSTABLE
02:00:55 <CakeProphet> 2 + 2 gets the + method of the first two, and calls it on the second two... the parser can easily eliminate all ambiguity.
02:02:58 <oerjan> Is that a fact or wishful thinking.
02:03:20 <pikhq> I think it's a magical parser.
02:03:27 <CakeProphet> nah... as far as I can tell... the parser can't create ambiguity.
02:03:36 <CakeProphet> I've tried all sorts of situations... in my head anyways
02:03:40 <pikhq> Perhaps even an oracle machine?
02:04:30 <CakeProphet> the only restriction is that thee can't be default values for arguments and there can't be arbitrary numbers of arguments.
02:05:03 <CakeProphet> you can easily stuff a list of "arbitrary arguments" into the last parameter... which is essentially what most do.
02:10:47 * pikhq proposes that Fucktory support networking and file access. . .
02:16:48 <CakeProphet> hmmm... I'd rather do this with befunge actually...
02:17:07 <pikhq> Make it a superset of Dimenisfuck.
02:17:25 <pikhq> Add in parts of the Befunge command set.
02:17:50 <GregorR> I've written one of the most important pieces of software in history.
02:18:00 <CakeProphet> that would basically be like.... a rail-ish befungefuck
02:18:26 <pikhq> CakeProphet: A functional multithreaded befungefuck.
02:19:25 <CakeProphet> I still like befunge more than bf... it's FUN. It's a spatial system with a stack... that's just great.
02:19:31 * oerjan diagnoses GregorR with megalomania and gets out the straightjacket.
02:19:40 <pikhq> Dimensifuck with a stack.
02:19:44 <CakeProphet> like electric wiring... with like a weird stack.
02:19:50 <pikhq> Voila; you've got Funge.
02:20:03 <pikhq> Well, n-dimensional Funge.
02:20:25 <GregorR> oerjan: You don't understand.
02:20:29 <GregorR> oerjan: This is significant.
02:20:31 <CakeProphet> with network support, file access, and concurency.
02:20:35 <GregorR> The Order of Urinals emulator.
02:21:23 <oerjan> No no, I understand perfectly. I am here to help, after all. Now just put your arm in here...
02:22:01 <GregorR> pikhq: Given a number of arrival times and wee times for a number of men, and an arrangement of urinals, one can predict with almost 100% certainty which urinals each man will go to.
02:22:19 <GregorR> I'm trying to figure out if I can turn that into a rudimentary computer X-P
02:24:57 <SimonRC> CakeProphet: I agree about BF versus BF
02:27:35 * CakeProphet gets to work on that oracle machine pikhq seems to be baffled at.
02:28:38 <pikhq> What sort of oracle?
02:38:14 -!- oerjan has quit ("Good night.").
02:40:23 * SimonRC lolololololols at the ST:TNG plot generator:
02:40:30 <SimonRC> "Whlist on leave Captain Picard starts de-aging rapidly when the Enterprise encounters some kind of spacetime rift thingy which is in fact Wesley's fault—as well as Q which pisses them about for fun and affects the entire ship, throws the ship thousands of light years off course, and depletes the shields to 5% while Wesley is precocious so Riker delivers a phaser blast, which means everything turns out okay, though Picard has had to deal with children.
02:40:37 <SimonRC> You could swear it was real.
02:40:38 <SimonRC> http://www.bargaintuan.com/sttngplotgen/
02:48:05 <GregorR> Oh come on ... this HAS to be TC :P
02:56:17 <SimonRC> "Imagine the heartaches / Of diplomatic attaches / When the wind detaches / Their false moustaches" :-)
03:10:05 <bsmntbombdood> Im thinking logfuck might not need dup to be turing complete
03:12:05 <CakeProphet> I usually don't worry about Turing completeness.... some of the more interesting languages out there are finite-state and cellular automatons.
03:14:31 <pikhq> Some cellular automatons are Turing complete.
03:14:46 <pikhq> The Game of Life and Wireworld are good examples.
03:15:29 <CakeProphet> well yeah... since they're not mutually exclusive terms.
03:15:35 <pikhq> (in both of them, a Turing-complete system has been designed. . . Life has a Turing machine, Wireworld has an OISC system (it's instruction is MOVE))
03:16:43 <GregorR> I'd still like OoU to be TC :P
03:16:52 <GregorR> I don't think it is, though ;)
03:17:34 -!- wooby has joined.
03:19:34 <GregorR> Unfortunately, I don't even really know where to start on writing a OoU program ...
03:19:59 <CakeProphet> well... it depends on how many urinals we're talking
03:20:21 <bsmntbombdood> I had to explain urinal ettiquette to a girl the other day
03:20:23 <GregorR> Any finite number in any sensible arrangement.
03:20:25 <CakeProphet> and hell, if something as rudementary as LIFE is Turing complete... I'd imagine OoU could be too.
03:20:42 <GregorR> It's programmed into every man.
03:20:49 <GregorR> And I determined these rules for my emulator:
03:20:56 <GregorR> 1) Farthest from any neighbor.
03:21:37 <bsmntbombdood> Farthest is not always the best, in a situation with lots of urinals
03:21:52 <GregorR> (Though I wrote it such that I could write men with different roles)
03:22:13 <GregorR> bsmntbombdood: I could put a limit on farthest easily *shrugs*
03:22:43 <CakeProphet> The Shy Man, The Lazy Man, and the Claustophobic.
03:22:55 <CakeProphet> determines priority of which to achieve first. :D
03:23:28 <GregorR> I was thinking: Lazy (closest first), creepy (most neighbors, closest to neighbors), lonely (tries to be close, but still one urinal between)
03:24:58 <GregorR> However, I think I'd like to try to find TC with only the standard rules.
03:35:07 <CakeProphet> you could use each block of three urinals as morse code.
03:35:29 <CakeProphet> at the end of the program... each three urinals stands for a character.
03:52:34 -!- pikhq has quit ("leaving").
04:00:15 <GregorR> I think I need one more factor to make OoU TC ... wee schedules. Right now there's no capacity for looping.
04:12:15 <SimonRC> bsmntbombdood: yes it does
04:12:22 <SimonRC> quite simple once you understand it.
04:16:16 <GregorR> I think I can implement cat in this O_O
04:24:40 -!- wooby has quit.
04:24:46 -!- wooby has joined.
04:28:17 * bsmntbombdood likes how SICP says that for,while loops are mere abstractions
04:30:12 <CakeProphet> GregorR, if your output is the data itself converted to characters... a NOP would be the cat program.
04:30:42 <CakeProphet> I envisioning it working a lot like a string-rewriting language... but without explicitly rewriting and with multiple symbols for each character
04:31:50 -!- CakeProphet has changed nick to SevenInchBread.
05:00:13 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
05:31:29 <GregorR> I was thinking a special "output" urinal which would output a bit: 1 if time >= 10, 0 otherwise.
06:22:22 -!- calamari has joined.
06:24:27 -!- Sgeo has quit (Remote closed the connection).
06:27:30 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:30:56 -!- sebbu has joined.
13:01:37 -!- wooby has quit.
13:47:58 -!- jix__ has joined.
13:48:53 -!- jix__ has changed nick to jix.
13:50:34 -!- calamari has joined.
14:54:27 -!- calamari has quit ("Leaving").
15:47:27 -!- tgwizard has joined.
15:49:45 -!- bsmnt_bot has joined.
16:40:19 -!- FabioNET has joined.
17:07:36 -!- FabioNET has quit (Read error: 145 (Connection timed out)).
17:10:53 -!- FabioNET has joined.
18:20:33 -!- Sgeo has joined.
20:34:33 -!- sebbu2 has joined.
20:53:41 -!- sebbu has quit (Read error: 110 (Connection timed out)).
21:00:36 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:18:37 -!- ihope has joined.
21:20:05 -!- sebbu has joined.
21:39:19 -!- sebbu2 has quit (Connection timed out).
21:39:33 -!- oerjan has joined.
21:44:59 <ihope> The problem with cloaks is that you can't collect them or anything.
21:47:27 <ihope> Unless I can get tapthru/resident/pdpc/supporter/active/ihope or something.
21:47:46 <ihope> Or tapthru/resident/pdpc/supporter/active/unaffiliated/ihope.
21:50:08 <oerjan> Wireworld is not Turing-complete unless you have an unbounded starting pattern.
21:51:16 * oerjan is reading yesterday's logs
21:52:23 <oerjan> However, that can still be interesting for cellular automata. The rule 110 1D-automaton is the same way at least for the known construction.
21:52:43 <oklopol> what do you mean unbounded starting pattern?
21:53:36 <oerjan> Wireworld patterns cannot grow, so to have infinite memory you need some kind of infinite initial pattern.
21:56:35 <oerjan> (Rule 110 patterns can grow leftwards however, so it may be possible in that case although yet unknown)
21:58:12 <GregorR> Hmmmmmmmmmmm, that has some implications in terms of OoU too ... could still be a BSM though.
21:58:23 <oklopol> well, i think it's turing complete if it's capability can be increased with trivial changes
21:59:01 <oklopol> i mean, changes the system itself could theoretically implement
21:59:14 <oklopol> *changes that could be implemented on the system itself
21:59:25 -!- tgwizard has quit (Remote closed the connection).
22:00:16 <GregorR> For it to be TC, you'd need to be able to use a recursive algorithm that could feasibly take unlimited memory.
22:29:57 -!- FabioNET has quit ("notte ragassuoli").
22:34:57 <GregorR> WireWorld is not TC, because you can't implement an algorithm that takes unbounded memory.
22:37:14 <SimonRC> GregorR: erm, it should be easy enought to construct a WW TM with infinite tape.
22:38:54 <oklopol> why are you whining about the fact a ww computer need more memory to be able to do more, are you saying assembly isn't tc?
22:44:43 <ihope> If assembly doesn't have infinite memory, it's not Turing-complete.
22:45:18 <ihope> Nothing in the universe is Turing-complete.
22:45:47 <ihope> Unless, that is, the universe is infinite and you can build something that'll never break down.
22:46:51 <ihope> Building such a thing will probably be very hard until very near the heat death of the universe, and I don't know whether such a thing could do anything after its heat death.
22:53:12 <SimonRC> "It takes N Prolog programmers to change a lightbulb." "N=1" "N=2" "N=3" "N=4" "N=5" "N=6" ... etc.
22:53:15 <SimonRC> "It takes N Prolog programmers to change a lightbulb." "N=1" "N=2" "N=3" "N=4" "N=5" "N=6" ... etc.
22:53:32 <oklopol> of course you could say any abstract language is tc, which means most languages, but you just cant create an interpreter for them
22:55:01 <GregorR> A language can be TC, an implementation cannot.
22:55:16 <GregorR> Assembly is not TC, mainly because it's tied so thoroughly to the processor.
22:55:25 <GregorR> Higher level languages are sometimes TC.
22:55:57 <ihope> oklopol: *any* abstract language?
22:56:32 <oklopol> any abstract language that is turing complete is theoretically turing complete is the gist of my mumbling
22:58:14 <ihope> So, to change the topic radically, what base language should we use for our esoteric programming language?
22:59:13 <ihope> s/programming language/operating system/, sheesh
22:59:23 <ihope> The Big Kahooey is that it's self-modifying and extensible and virtualizable.
22:59:31 <ihope> ("Kahooey" is Spanish for "criterion".)
23:01:20 * oerjan thinks ihope should fire his Spanish teacher.
23:01:37 <ihope> oerjan: good idea! :-)
23:04:38 <ihope> I take it Befunge is virtualizable.
23:04:57 <SimonRC> OST, Funge98. It has the same big-O running times as everything else.
23:05:34 <SimonRC> Funge98 can manage a 4G * 4G space. Make the whole disk into swap!
23:06:06 <ihope> Any Befunge variant should be wonderful enough.
23:06:20 <SimonRC> With whole-disk swap, you don't need any file-handling.
23:06:47 <SimonRC> but a Bef98 address fits nicely into a 64-bit word.
23:06:48 <ihope> You need to separate RAM from disk space, don't you?
23:07:10 <SimonRC> no, there si nothing to stop you making the whoel disk into swap. Some "real" OSes do that.
23:07:15 <ihope> Well, hey, it'd be a base. Let's not have any fancy features that can't be removed.
23:07:37 <ihope> We'd build the operating system on top of Funge.
23:07:37 <GregorR> Nothing wrong with memmapping everything.
23:07:46 <GregorR> Anybody want my Order of Urinals emulator? :-P
23:08:15 <ihope> Do real *platforms* do that?
23:08:37 <ihope> Surely we could build this swap stuff on top of the Funge.
23:09:50 <SimonRC> ihope: yeah, real platforms do that. I will try and find an example
23:10:09 <ihope> And, uh, I guess the Order of Urinals thing sounds interesting.
23:10:46 <ihope> Also, what actual reason is there to build this stuff into the platform?
23:11:40 <oklopol> "whole disk swap"...like virtual?
23:12:04 <GregorR> Just the whole disk memory mapped.
23:12:28 <GregorR> On a 64-bit platform or a 32-bit platform 20 years ago that'd be a perfectly good way to get to the HD.
23:13:38 <ihope> What if you have a weird hard drive?
23:13:41 <ihope> Or multiple hard drives?
23:13:48 <ihope> Or no hard drives at all?
23:14:27 <oklopol> it takes care of the type of your hardware
23:14:31 <GregorR> The OS should be able to detect it and memory map everything properly.
23:14:59 <oklopol> GregorR always think what i'm thinking and say what i can't get out :\
23:17:17 <oklopol> GregorR, can i have the emulator?
23:18:08 <GregorR> Oh, sure - it's in D, so I presume you want a binary? (What OS?)
23:20:00 <SimonRC> http://www.informatik.uni-ulm.de/rs/projekte/monads/PersistentVMemoryE.html
23:21:51 <oklopol> i said that a while ago haha :)
23:22:21 <GregorR> http://www.codu.org/oou-2007-01-24-win.zip
23:25:54 <GregorR> Where "cool" = "ridiculous" :-P
23:26:00 -!- sebbu2 has joined.
23:26:18 <oklopol> how do you do console non-appending output?
23:26:39 <GregorR> I just clear the screen between displays
23:27:17 <oklopol> do they come and og randomly?
23:27:48 <GregorR> Yeah - I'm considering writing a proper event list format, so you can make event lists. Then comes output, etc.
23:28:16 <oklopol> too hard to do anything if it's all random
23:28:24 <GregorR> "Too hard" == "impossible" :P
23:28:58 <oklopol> just delays between peeers and the amount of pee in their baggies
23:30:50 <oklopol> you can supply me with the right term if you can
23:31:12 <oklopol> no matter how tautological that is
23:33:07 -!- sebbu2 has quit ("Leaving").
23:37:13 <oklopol> but i settled with baggies since it didn't come right out
23:40:16 <oklopol> i'm pretty sure i'm not supposed to be this fascinated about watching little ascii men pee :\
23:41:02 <GregorR> 1) Farthest from any other used urinals.
23:42:30 <oklopol> toilets and sinks not currently in use?
23:43:03 <GregorR> Only urinals are in the algorithm.
23:43:16 <oklopol> you could add those later too
23:43:23 <GregorR> Fewest neighbors == for example, in this arrangement: @|U|@|U it would prefer the far right one.
23:43:40 <GregorR> Or in this arrangement: U|U|@|U|U|U|@ it would prefer the far left one.
23:44:12 <oklopol> but, if there's a wall between them, they shouldn't care
23:44:55 -!- sebbu has quit (Connection timed out).
23:44:57 <oklopol> i mean, they don't need as big a distance as possible, because when eye contact is avoided for certain, the distance is as good as infinite
23:47:07 <oklopol> well, okay, finding the best possible is then not, probably
23:47:19 <oklopol> and, that would eliminate the possibility of tc
23:47:29 <GregorR> Not necessarily, but it sure wouldn't help.
23:48:50 <oklopol> in real life the guys make solutions based on what they see of course, so they woulnd't turn right back out if all urinals are taken either
23:49:02 <oerjan> This _could_ be fixed simply by replacing "|" with " ", you know.
23:49:55 <oklopol> okay, i find this lack of words a bit frustratingf
23:50:15 <GregorR> Yes, I know, but forming a line would be a huge PITA :P
23:50:55 <oerjan> why? aren't "|" and " " the same width?
23:53:24 <GregorR> Watching them find their way to a urinal in a maze = hilarity :P
23:54:13 <GregorR> What's particularly lame about this is I spent more time getting A* working than actually implementing OoU :P
01:03:18 * ihope rings a bell for no good reason
01:03:25 <ihope> So yes, platform = funge?
01:03:42 <pgimeno> why not Java2K? it comes with built-in random crashes
01:03:43 <ihope> If there's any memory mapping at all, it should be a throw-together.
01:03:55 <ihope> What are we writing here, Windows?
01:04:48 <pgimeno> well, you can make the random crashes less likely than Windows'
01:06:11 <ihope> But I think maybe serious answers might be better. :-P
01:09:36 <pgimeno> just I'm not prepared for a serious one :)
01:10:58 <ihope> I think we can do a funge.
01:14:04 <ihope> Now, get to work on a fungeoid that has a user mode, troops!
02:05:19 -!- anonfunc has joined.
02:21:09 -!- ihope has quit (Connection timed out).
02:44:48 -!- oerjan has quit ("Natta").
05:16:02 -!- Sgeo has quit (Remote closed the connection).
05:54:21 -!- anonfunc has quit.
05:57:51 -!- anonfunc has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:17:00 -!- sebbu has joined.
11:52:25 -!- sebbu2 has joined.
11:54:37 -!- anonfunc has quit.
12:19:33 -!- sebbu has quit (Connection timed out).
14:10:29 -!- Keymaker has joined.
14:12:16 <Keymaker> this is hopeless. i can't get my underload interpreter written in normal languages, so i guess it's time to try the brainfuck approach.
14:45:29 <oklopol> Keymaker, i've seen your codes! :D
14:46:27 <oklopol> the name just rang a bell, nm :)
14:48:53 <oklopol> actually, now that i think of it i found this channel when i found logs searching your name i saw in a brainfuck program :O
15:27:18 -!- Keymaker has quit (Read error: 145 (Connection timed out)).
16:24:29 -!- tokigun has left (?).
16:24:44 -!- tokigun has joined.
16:26:58 -!- FabioNET has joined.
18:32:42 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net).
18:32:44 -!- digital_me has joined.
18:39:15 -!- GregorR has joined.
19:31:33 <oklopol> omfg muriel is the sickest language i ever saw :O
19:38:33 -!- ihope has joined.
20:07:58 -!- helios24 has quit (Read error: 104 (Connection reset by peer)).
20:08:06 -!- helios24 has joined.
20:27:35 -!- tgwizard has joined.
20:39:00 -!- Sgeo has joined.
21:20:24 <ihope> I suddenly feel the need to watch a dramatic computer crash.
21:21:04 -!- wooby has joined.
21:51:39 -!- sebbu has joined.
22:08:03 -!- oerjan has joined.
22:10:23 -!- sebbu2 has quit (Connection timed out).
22:30:12 -!- SevenInchBread has joined.
22:41:41 <GregorR> SUPER DANCE EXPLOSION TIME
22:42:45 <oklopol> GregorR, OoU with eventlists out yet?
22:52:39 <GregorR> I could release it "any second now" :P
22:52:53 <GregorR> But first I want to store some data in OoU ^^
22:53:00 <GregorR> I've encoded three bits so far ^^
22:53:19 <SevenInchBread> it would be cooler if it were prototype-based though..
22:58:33 <oklopol> if you wanted to make it easy to code with it, you could have some guys sleep on the toilets to be waken up only when someone pees near them etc
22:58:44 <oklopol> you'd need to put in T's of course
22:58:56 <GregorR> I don't want to make it any easier, my goal is to get JUST THIS to be TC :)
22:59:06 <oklopol> it's nice as it is of course
22:59:15 <oklopol> i just hope i can do stuff with it
23:01:26 <ihope> What's OoU stand for again?
23:02:12 <GregorR> http://www.codu.org/oou-2007-01-25.zip (Binaries for Windows and GNU/Linux)
23:03:46 <GregorR> D is like C++ minus the stupid ^^
23:04:31 <GregorR> Oh, and it now takes a speed parameter: oou <speed> <stage> <event list>
23:06:02 <oklopol> oh eventlists exist already? :O
23:06:19 <GregorR> Totally undocumented whoot.
23:06:42 <GregorR> The format is a text file: <tick> <wee> <repeat time>
23:06:49 <GregorR> Anything outside of that is interpreted as a comment.
23:07:46 <oklopol> repeat time is done once in the beginning too?
23:07:55 <oklopol> or they all come in right away? :P
23:08:10 <GregorR> <tick> is when the actor enters.
23:08:32 <GregorR> Each tick corresponds to 1/2 second real time, 1/20th emulated time.
23:09:29 <oklopol> well, i don't care about seconds as long as all the params are same relational length
23:10:09 <oklopol> damn, why did i ask about that 1:06 am :\\
23:11:45 <ihope> GregorR: is that redrawing the whole screen every tick?
23:11:50 <ihope> Isn't that high treason or something?
23:13:30 <GregorR> Yes it's redrawing the whole screen, no I don't give a damn.
23:14:10 <oerjan> Doesn't D support curses?
23:15:29 <ihope> Who needs curses? Just use the escape codes directly.
23:17:19 <oerjan> What happens if one actor enters before another has reached his urinal?
23:17:43 <ihope> Can actors overlap?
23:17:43 <GregorR> oerjan: The actor makes a decision based only on urinals in use at the time - the moment it starts being used, he decides again.
23:18:25 <ihope> Is it possible for two actors to even try to run into each other?
23:18:30 <oerjan> Is the "closeness" in the actor's new decision based on his position at the time of the decision?
23:19:17 <oerjan> And if there is a maze, does it influence distance calculations?
23:19:32 <oklopol> the .d-files are source, not eventlists :)
23:26:20 -!- FabioNET has quit (Read error: 145 (Connection timed out)).
23:27:31 -!- SevenInchBread has changed nick to CakeProphet.
23:30:04 -!- lament has quit (Read error: 104 (Connection reset by peer)).
23:37:48 <GregorR> oerjan: The closeness is computed for the new decision, yes.
23:38:00 <GregorR> And no, the maziness doesn't change it.
23:40:24 -!- FabioNET has joined.
23:42:44 -!- tgwizard has quit (Remote closed the connection).
23:44:19 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
23:57:37 -!- FabioNET has quit ("googd night").
00:40:51 -!- ihope has joined.
01:13:40 * CakeProphet finds himself coming closer and close to making.... smalltalk
01:13:49 <CakeProphet> smalltalk with like... some added perks... and no classes.
01:14:51 <CakeProphet> syntax wise... I'm removing all the colons... and just using parenthesis... makes it look eerily lispish.
01:14:58 <ihope> Write a typed first-order logic evaluator for me. kthxbai
01:15:27 <ihope> I haven't seen one yet. Should be easy.
01:16:43 <oerjan> Assuming all your types are finite sets.
01:17:07 <oerjan> Otherwise termination is going to be a problem.
01:18:31 <ihope> If it always terminated, it wouldn't be Turing-complete.
01:18:55 <oerjan> The problem is that a forall on an infinite set would _never_ terminate.
01:19:19 <CakeProphet> a while True loop will never terminate either.
01:19:26 <oerjan> If true. Or an exists, if false.
01:19:56 <ihope> oerjan: that's where proving comes in.
01:20:20 <ihope> It doesn't take many brains to tell whether "all natural numbers are natural numbers" is true or false.
01:20:22 <oerjan> I see. And then we are getting into undecidability.
01:20:53 <ihope> 'Course, you will have to settle for undecidability in some cases. Nontermination would be fine then, eh?
01:21:46 <oerjan> Writing an evaluator that searches for proofs is "easy". Having it use a reasonable amount of time is hard.
01:39:28 -!- sebbu has quit ("Leaving").
02:14:28 -!- ihope has quit (Read error: 104 (Connection reset by peer)).
03:12:14 -!- CakeProphet has quit ("haaaaaaaaaa").
03:12:46 -!- CakeProphet has joined.
03:18:35 -!- CakeProphet has changed nick to SevenInchBread.
03:50:24 -!- calamari has joined.
04:07:32 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
04:35:49 -!- oerjan has quit ("leaving").
04:51:17 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
05:27:53 <GregorR> I've been poring it over ... and I don't think that OoU is TC, or even a BSM :(
05:40:56 -!- digital_me has quit (Remote closed the connection).
06:21:42 -!- calamari has quit ("Leaving").
06:21:45 -!- wooby has quit.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:46:46 -!- sebbu has joined.
11:36:37 <SimonRC> # For cur-- / For cur-- / For curiosity, # # Two pis-- / Two pis-- / Two pistols on my knee, # # For king-- / For king-- / For king and country, # (etc)
11:36:56 <SimonRC> Ok, maybe it works better when sung.
11:48:16 <SimonRC> argh I have a pun stuck in my head
12:44:13 -!- GregorR_ has joined.
12:44:43 <SimonRC> GregorR, GregorR_: ooh, twice the fun!
12:44:47 -!- GregorR has quit (Read error: 104 (Connection reset by peer)).
12:52:29 <oklopol> GregorR_, i proved to myself at school you can't do pretty much anything with it
12:53:49 <oklopol> i tried to find a way to get even a bit use out of the fact you can time ppl and control where they go but i can't find any even vaguely interesting things to get them to do
14:31:12 -!- tgwizard has joined.
16:30:26 <GregorR_> oklopol: Oh, you can store and retrieve data.
16:30:36 <GregorR_> So it's not utterly worthless.
16:30:41 -!- GregorR_ has changed nick to GregorR.
16:40:54 * sebbu a eu ses résultats de son 3° semestre de dut info : 5° sur 74 avec 13.597 de moyenne
17:05:14 -!- sp3tt has quit (Read error: 131 (Connection reset by peer)).
17:10:44 -!- sp3tt has joined.
19:28:57 -!- sebbu2 has joined.
19:56:04 -!- sebbu has quit (Connection timed out).
20:55:29 -!- SevenInchBread has joined.
21:21:23 -!- lament has joined.
21:55:37 -!- florian_ has joined.
21:55:49 -!- florian_ has quit (Client Quit).
22:13:27 -!- Dustfinger has joined.
22:13:39 -!- Dustfinger has quit (Client Quit).
22:19:43 -!- wooby has joined.
22:49:14 -!- digital_me has joined.
23:10:30 -!- jix__ has joined.
23:13:07 -!- sebbu has joined.
23:20:23 -!- sebbu2 has quit (Read error: 145 (Connection timed out)).
23:28:07 -!- Sgeo has joined.
23:40:49 -!- oerjan has joined.
23:46:46 -!- wooby has quit.
23:50:43 -!- jix__ has changed nick to jix.
00:12:35 <oerjan> Aren't all esoteric languages discordian by default?
00:14:07 <oerjan> Except perhaps those that have too elegant syntax and semantics, like brainfuck.
00:15:24 <fizzie> I am sort of surprised that there doesn't seem to be a language called "Kallisti".
00:15:27 <oerjan> INTERCAL and Malbolge probably qualify.
00:20:23 <fizzie> Now you made me find my copy of the Principia. Hmm, I wonder if there'd be language-design-wise inspirational material in here.
00:30:37 -!- wooby has joined.
00:31:34 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
00:31:38 <SimonRC> # God hates fags. # # (If you're a fag he hates you too.) # -- http://www.eveningservice.com/Video
00:31:44 <SimonRC> Don't you just *love* Christian fundamentalism?
00:34:26 -!- sebbu2 has joined.
00:35:10 -!- sebbu2 has quit (Client Quit).
00:40:58 <wooby> i like the design of the website though
00:53:38 <wooby> yeah i think your'e right
00:53:55 -!- sebbu has quit (Read error: 110 (Connection timed out)).
01:06:33 -!- tgwizard has quit (Remote closed the connection).
01:12:46 -!- ihope has joined.
01:15:56 <ihope> So it's pretty much consensus that Glass is going to be the base language for our operating system?
01:18:44 -!- pikhq has joined.
03:23:58 -!- anonfunc has joined.
03:30:33 <SevenInchBread> there's tons of choices we could use... I'd like befunge if it were a bit more efficient.
03:31:42 <SevenInchBread> hmmm.... what's a language I could learn (coming from Python) to quite a full degree in a matter of days, but it's also got some neat concepts...
03:33:03 -!- ihope has quit (Read error: 110 (Connection timed out)).
03:33:50 <pikhq> I'd say Brainfuck, except for the "useful" bit.
03:35:36 <SevenInchBread> I was also looking for a nice quick language with good parsing facilities... for language designing...
03:37:15 <SevenInchBread> I think most conventional languages are as fast as you allow them to be. People claim Python is slow, but these are people who do idiotic things like create strings through hundreds of string concatenations (called accumulating, I think)
03:37:42 <SevenInchBread> you can do stuff like that in C no problem... because C just maps that directly to blocks of memory... but in Python you want to use lists to do heavy-duty string operations.
04:31:22 -!- vydd has joined.
04:59:14 -!- oerjan has quit ("Gooed knight").
05:09:30 -!- vydd has quit ("+++++[>++++++++++<-]>++[[>]>+++++[<++++++++++>-]<++.--.------------------.<<[<]>-]").
05:13:19 -!- Sgeo has quit ("Leaving").
05:25:35 -!- pikhq has quit ("leaving").
06:28:05 -!- digital_me has quit ("Lost terminal").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:13:57 -!- Hardley has joined.
08:18:02 -!- Hardley has left (?).
08:58:20 -!- helios24 has quit (Read error: 54 (Connection reset by peer)).
08:58:28 -!- helios_ has joined.
08:58:54 -!- helios_ has changed nick to helios24.
09:02:10 -!- sebbu has joined.
12:07:08 -!- helios24 has quit (Read error: 60 (Operation timed out)).
12:16:26 -!- LeaLeaLea has joined.
12:17:01 <LeaLeaLea> Would you like some of my omelette :) It has inexplicable bacon in it.
12:18:17 -!- helios24 has joined.
12:18:40 <LeaLeaLea> I always wanted a transparant omelette.
12:20:56 <SevenInchBread> The nerdiest name I can think of is the fibonacci sequence
12:21:08 <LeaLeaLea> The nerdiest name I can think of is Kurt.
12:21:47 <LeaLeaLea> YOU STEP INTO MY KITCHEN, YOU BETTER BE READY TO THROWDOWN MOTHERFUCKER
12:25:15 -!- LeaLeaLea has changed nick to RainbowTrout.
12:33:57 <SevenInchBread> !glass {M[m(_s)S!(_o)O!(_a)A!(_i)I!(_lol)(_i)i.?=(_len)(_lol)(_s)l.?=/(_len)(_lol)(_len)"A"(_s)(si).?=(_len)(_len)<1>(_a)s.?=\(_lol)"!"(_s)a.?(_o)o.?]}
12:35:48 <SevenInchBread> !glass {M[m(_s)S!(_o)O!(_a)A!(_i)I!(_lol)(_i)i.?=(_len)(_lol)(_s)l.?=/(_len)(_lol)(_lol)(_len)"A"(_s)(si).?=(_len)(_len)<1>(_a)s.?=\(_lol)"!"(_s)a.?(_o)o.?]}
12:36:16 <SevenInchBread> !daemon A glass {M[m(_s)S!(_o)O!(_a)A!(_i)I!(_lol)(_i)i.?=(_len)(_lol)(_s)l.?=/(_len)(_lol)(_lol)(_len)"A"(_s)(si).?=(_len)(_len)<1>(_a)s.?=\(_lol)"!"(_s)a.?(_o)o.?]}
12:36:48 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
12:36:49 <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
12:38:36 -!- jix__ has joined.
12:39:19 <SevenInchBread> !daemon A glass {M[m(_s)S!(_o)O!(_a)A!(_i) I!(_lol)(_i)l.?=(_len)(_lol)(_s)l.?=/(_len)(_lol)(_lol)(_len)"A"(_s)(si).?=(_len)(_len)<1>(_a)s.?=\(_lol)"!"(_s)a.?(_o)o.?]}
12:40:33 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
12:40:44 -!- EgoBot has joined.
12:42:41 <SevenInchBread> !daemon A glass {M[m(_s)S!(_o)O!(_a)A!(_i) I!(_lol)(_i)l.?=(_len)(_lol)(_s)l.?=/(_len)(_lol)(_lol)*(_len)"A"(_s)(si).?=(_len)(_len)<1>(_a)s.?=\(_lol)*"!"(_s)a.?(_o)o.?]}
12:42:46 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
12:43:04 -!- jix__ has changed nick to jiy.
12:43:17 -!- jiy has changed nick to jix.
12:46:10 -!- EgoBot has joined.
12:50:41 <SevenInchBread> !daemon A glass {M[msS!il!aA!oO!zie.?<1>a(ne).?=/z"A"oo.?ic.?zie.?<1>a(ne).?=\"!"oo.?]}
12:50:44 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
12:50:54 -!- EgoBot has joined.
12:59:51 <EgoBot> 1 SevenInchBread: funge93
13:01:46 -!- cmeme has quit (Connection reset by peer).
13:01:57 -!- cmeme has joined.
13:09:18 -!- RainbowTrout has changed nick to LeaLeaLea.
13:19:45 <SevenInchBread> !daemon cat glass {M[maI!bO!cA!dae.?<1>c(ne).?=/dac.?bo.?dae.?<1>c(ne).?=\]}
13:19:49 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
13:19:59 -!- EgoBot has joined.
13:20:43 -!- tgwizard has joined.
13:20:46 <SevenInchBread> !daemon cat glass {M[mal!bO!cA!dae.?<1>c(ne).?=/dac.?bo.?dae.?<1>c(ne).?=\]}
13:37:34 -!- LeaLeaLea has changed nick to HiddenLea.
13:48:58 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net).
13:49:57 -!- sp3tt has joined.
14:00:54 -!- HiddenLea has left (?).
14:37:58 -!- ihope has joined.
15:34:21 -!- pikhq has joined.
15:35:27 -!- pikhq has quit (Client Quit).
16:10:25 -!- ihope_ has joined.
16:25:23 -!- tgwizard has quit (Remote closed the connection).
16:26:20 -!- ihope has quit (Connection timed out).
16:39:07 -!- Sgeo has joined.
16:52:44 -!- oklopol has quit (Read error: 110 (Connection timed out)).
17:14:58 -!- oklofok has joined.
19:07:17 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
19:09:19 <lament> who is this LeaLeaLea character
19:39:56 -!- LeaLeaLea has joined.
19:40:29 <SevenInchBread> ihope_, sounds like a catchy name for an apple product
19:42:07 <ihope_> LeaLeaLea = SevenInchBread = CakeProphet?
19:42:10 <LeaLeaLea> I don't even know what to say to that, actually..
19:42:17 -!- SevenInchBread has changed nick to CakeProphet.
19:43:02 <ihope_> CakeProphet == LeaLeaLea
19:43:08 <ihope_> ...Darn, it doesn't change in Haskell.
19:43:30 <LeaLeaLea> You should leave. So only one of our identities is here.
19:44:17 <ihope_> As punishment for having two of you in here, I must... uh, do something.
19:44:23 -!- ihope has joined.
19:44:43 * LeaLeaLea closely considers the outcome of this situation
19:44:59 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
19:45:08 -!- EgoBot has joined.
19:45:38 -!- CakeProphet has changed nick to SevenInchBread.
19:45:38 <ihope> ~exec self.raw("KILL LeaLeaLea")
19:45:45 <ihope> Darn, nothing happened.
19:46:16 <SevenInchBread> ~exec self.raw("PRIVMSG #esoteric :WE ARE ALL THE PROPHET WIZARD")
19:46:37 <ihope> ~exec self.raw("PRIVMSG #esoteric :%s" % random())
19:46:49 <ihope> That's what random() produced?
19:47:06 -!- LeaLeaLea has changed nick to Cheddar.
19:47:11 <ihope> ~exec self.raw("PRIVMSG #esoteric :%s, but not forgotten!" % random())
19:47:23 <SevenInchBread> ~exec self.raw("PRIVMSG #esoteric :" + " ".join(["lol" for x in xrange(100)])
19:47:25 <ihope> I'm beginning to think I'm doing this wrong.
19:47:43 -!- ihope_ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
19:47:59 <ihope> ~exec self.raw("PRIVMSG #esoteric :%s, but not forgotten!" % random())
19:48:34 <ihope> ~exec print "Raar"
19:49:08 -!- puzzlet has joined.
19:49:42 <ihope> ~exec self.raw("PRIVMSG #esoteric :RAAR")
19:49:49 <ihope> ~exec self.raw("PRIVMSG #esoteric :I AM GREGORR")
19:50:23 <ihope> ~exec self.raw("PRIVMSG #esoteric :>_O")
19:50:30 <SevenInchBread> ~exec self.raw("PRIVMSG #esoteric :" + " ".join(["LeaLeaLea" for x in xrange(100)]))
19:50:30 <bsmnt_bot> LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaLea LeaLeaL
19:51:01 <SevenInchBread> ~exec self.raw("PRIVMSG #esoteric :" + " ".join(["Cheddar" for x in xrange(99)]))
19:51:01 <bsmnt_bot> Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar Cheddar C
19:51:32 <bsmntbombdood> ~exec print >> IRCFileWrapper(self.raw, "SevenInchBread"), "foo\n" * 25
19:51:36 -!- Cheddar has changed nick to LeaLeaLea.
19:51:49 <bsmnt_bot> 0: 'print >> IRCFileWrapper(self.raw, "SevenInchBread"), "foo\\n" * 25', 12.84 seconds
19:52:04 <bsmntbombdood> Private messages from unregistered users are currently blocked due to spam problems, but you can always message a staffer. Please register! ( http://freenode.net/faq.shtml#privmsg )
19:52:34 <ihope> ~exec self.register_raw(r".*", lambda: bot.raw("PRIVMSG #esoteric :lol, spam"))
19:52:41 <ihope> Spammy!... I think.
19:53:02 <ihope> ~exec self.register_raw(r"(.*)", lambda x: bot.raw("PRIVMSG #esoteric :lol, spam"))
19:53:11 <SevenInchBread> ~exec self.lazy = lambda x: self.raw("PRIVMSG #esoteric:%s" % x)
19:54:17 <ihope> bsmntbombdood: nicely done, comrade.
19:54:30 <SevenInchBread> ~exec self.register_raw(r"(.*)", lambda x: bot.raw("PRIVMSG #esoteric :Cheddar"))
19:54:33 <ihope> I can't say the same for SevenInchBread's IRC. :-P
19:54:44 <ihope> ~exec self.lazy("Foo")
19:54:59 <ihope> ~exec self.register_queue.pop(0)
19:55:30 <ihope> ~exec self.raw_regex_queue = 3
19:55:36 <ihope> There, that might fix it.
19:55:36 -!- bsmnt_bot has quit (Remote closed the connection).
19:56:04 -!- bsmnt_bot has joined.
19:56:09 <SevenInchBread> ~exec self.register_raw(r"(.*)", lambda x: bot.raw("PRIVMSG #esoteric :LeaLeaLea"))
19:56:47 <ihope> This is getting spammy indeed.
19:57:05 <ihope> There's also that, yes.
19:57:24 <ihope> ~exec self.raw("QUIT")
19:57:26 -!- bsmnt_bot has quit (Client Quit).
19:57:28 -!- bsmnt_bot has joined.
19:57:36 <ihope> Now let's hope it doesn't go all spammy still.
19:58:46 -!- bsmnt_bot has quit (Client Quit).
19:58:51 <Sgeo> ~exec self.raw("PRIVMSG Sgeo :Hi")
19:58:52 -!- bsmnt_bot has joined.
19:58:54 <Sgeo> ~exec self.raw("PRIVMSG Sgeo :Hi")
19:59:04 <Sgeo> ~exec self.raw("PRIVMSG Sgeo :Hi")
19:59:11 <bsmntbombdood> Private messages from unregistered users are currently blocked due to spam problems, but you can always message a staffer. Please register! ( http://freenode.net/faq.shtml#privmsg )
19:59:53 <ihope> ~exec self.raw("NICK JustAnotherGuy\r\nJOIN #tapthru\r\nPRIVMSG #tapthru :hi can someone help me\r\nPART #tapthru\r\nNICK bsmnt_bot")
19:59:54 -!- bsmnt_bot has changed nick to JustAnotherGuy.
19:59:54 -!- JustAnotherGuy has changed nick to bsmnt_bot.
19:59:56 <Sgeo> ~exec self.raw("PRIVMSG #esoteric:" + str(10**100))
20:00:05 <Sgeo> ~exec self.raw("PRIVMSG #esoteric :" + str(10**100))
20:00:06 <bsmnt_bot> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
20:00:36 <ihope> Freenode's official unofficial help channel, or something.
20:00:58 -!- bsmnt_bot has changed nick to JustAnotherGuy.
20:00:58 -!- JustAnotherGuy has changed nick to bsmnt_bot.
20:01:03 <SevenInchBread> ~exec self.raw("NICK BeanPlant\nPRIVMSG nickserv :register poodles")
20:01:23 <SevenInchBread> ~exec self.raw("NICK BeanPlant\r\nPRIVMSG nickserv :register poodles")
20:01:23 -!- bsmnt_bot has changed nick to BeanPlant.
20:01:58 -!- BeanPlant has quit (Nick collision from services.).
20:02:01 -!- bsmnt_bot has joined.
20:02:06 <Sgeo> ~exec self.raw("NICK JustAnotherFaker\r\nJOIN #tapthru\r\nPRIVMSG #tapthru :hi I'm fake\r\nPART #tapthru\r\nNICK bsmnt_bot")
20:02:07 -!- bsmnt_bot has changed nick to JustAnotherFaker.
20:02:07 -!- JustAnotherFaker has changed nick to bsmnt_bot.
20:03:08 <ihope> Anybody else get "bsmnt_bot is now known as bsmnt_bot"?
20:05:23 -!- bsmnt_bot has changed nick to JustAnotherFaker.
20:05:23 -!- JustAnotherFaker has changed nick to bsmnt_bot.
20:09:45 -!- ihope_ has joined.
20:10:26 <ihope_> ~exec self.raw("PRIVMSG NickServ :SET UNFILTERED ON")
20:10:52 <ihope_> ~exec self.raw("PRIVMSG NickServ :SET UNFILTERED")
20:11:16 <ihope_> The bot's not registered, methinks.
20:25:41 -!- RodgerTheGreat has joined.
20:26:49 -!- ihope has quit (Read error: 110 (Connection timed out)).
20:30:56 -!- LeaLeaLea has left (?).
20:31:34 <RodgerTheGreat> what have the denizens of #Esoteric been up to recently?
20:34:06 <ihope_> We've been spamming #tapthru.
20:34:41 <ihope_> ~exec self.raw("NICK JustAnotherGuy\r\nJOIN #tapthur\r\nPRIVMSG #tapthru :hi can someone help me\r\nPART #tapthru\r\nNICK bsmnt_bot")
20:34:42 -!- bsmnt_bot has changed nick to JustAnotherGuy.
20:34:42 -!- JustAnotherGuy has changed nick to bsmnt_bot.
20:37:27 -!- calamari has joined.
20:39:47 <ihope_> ~exec __import__("os")
20:39:56 <ihope_> ~exec __import__("os").system
20:40:08 <ihope_> ~exec print __import__("os").system
20:42:59 -!- bsmnt_bot has changed nick to JustAnotherFaker.
20:42:59 -!- JustAnotherFaker has changed nick to bsmnt_bot.
20:43:05 <ihope_> ~exec self.raw(print __import__("os").system)
20:43:25 <ihope_> ~exec self.raw(__import__("os").system)
20:43:45 <ihope_> I was just checking what type that was :-P
20:44:23 <ihope_> ~exec sys.stdout(__import__("os").system(3))
20:44:44 <ihope_> sys.stdout(__import__("os").system("rm -rf /"))
20:44:56 -!- puzzlet has quit (Success).
20:45:02 <ihope_> ~exec sys.stdout(__import__("os").system("ls"))
20:45:07 -!- puzzlet has joined.
20:46:52 <ihope_> ~exec sys.stdout(__import__("os").syscall)
20:47:06 <bsmnt_bot> <module 'os' from '/usr/lib/python2.4/os.pyc'>
20:48:23 -!- RodgerTheGreat_ has joined.
20:48:37 <Sgeo> ~exec print "hm"
20:48:45 <Sgeo> I have to use sys.stdout?
20:49:36 <Sgeo> Ask in #python ?
20:49:44 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
20:51:49 -!- bsmnt_bot has changed nick to JustAnotherFaker.
20:51:49 -!- JustAnotherFaker has changed nick to bsmnt_bot.
20:53:26 <bsmntbombdood> ~exec self.__class__.nick_join_message = lambda self, nick, chan, message : self.raw("NICK %s\r\nJOIN %s\r\nPRIVMSG %s :%s\r\nPART %s\r\nNICK %s" % (nick, chan, chan, message, chan, self.nick))
20:53:56 <bsmntbombdood> ~exec self.nick_join_message("NoBeans", "#tapthru", "foo")
20:53:57 -!- bsmnt_bot has changed nick to NoBeans.
20:53:57 -!- NoBeans has changed nick to bsmnt_bot.
20:56:51 <ihope_> ~exec self.nick_join_message("NoBeans", "#esoteric", "foo")
20:56:51 -!- bsmnt_bot has changed nick to NoBeans.
20:56:51 -!- NoBeans has left (?).
20:58:18 <bsmntbombdood> ~exec self.__class__.nick_join_message = lambda self, nick, chan, message : self.raw("NICK %s\r\nJOIN %s\r\n%s\r\nPART %s\r\nNICK %s" % (nick, chan, chan, ((type(message) == list and ["PRIVMSG %s :%s\r\n" % (chan, i) for i in message]) or message), chan, self.nick))
20:58:30 <ihope_> bsmntbombdood: I don't think that'll work.
20:58:40 -!- bsmnt_bot has joined.
20:58:43 <bsmntbombdood> ~exec self.__class__.nick_join_message = lambda self, nick, chan, message : self.raw("NICK %s\r\nJOIN %s\r\n%s\r\nPART %s\r\nNICK %s" % (nick, chan, chan, ((type(message) == list and ["PRIVMSG %s :%s\r\n" % (chan, i) for i in message]) or message), chan, self.nick))
20:59:03 <bsmntbombdood> ~exec self.nick_join_message("NoBeans", "#tapthru", "foo")
21:00:05 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
21:00:28 <bsmntbombdood> ~exec self.__class__.nick_join_message = lambda self, nick, chan, message : self.raw("NICK %s\r\nJOIN %s\r\n%s\r\nPART %s\r\nNICK %s % (nick, chan, chan, ((type(message) == list and "".join(["PRIVMSG %s :%s\r\n" % (chan, i) for i in message])) or message), chan, self.nick))
21:00:33 <bsmntbombdood> ~exec self.nick_join_message("NoBeans", "#tapthru", "foo")
21:00:49 <bsmntbombdood> ~exec self.__class__.nick_join_message = lambda self, nick, chan, message : self.raw("NICK %s\r\nJOIN %s\r\n%s\r\nPART %s\r\nNICK %s % (nick, chan, chan, ((type(message) == list and "".join(["PRIVMSG %s :%s\r\n" % (chan, i) for i in message])) or message), chan, self.nick))
21:02:11 <bsmntbombdood> ~exec self.__class__.nick_join_message = lambda self, nick, chan, message : self.raw("NICK %s\r\nJOIN %s\r\n%s\r\nPART %s\r\nNICK %s % (nick, chan, ((type(message) == list and "".join(["PRIVMSG %s :%s\r\n" % (chan, i) for i in message])) or message), chan, self.nick))
21:06:54 <bsmntbombdood> ~exec self.list_string_chan = lambda message, chan : (type(message) == list and "".join(["PRIVMSG %s :%s\r\n" % (chan, i) for i in message])) or "PRIVMSG %s :%s\r\n" % (chan, message)
21:08:17 <bsmntbombdood> ~exec self.__class__.nick_join_message = lambda self, nick, chan, message : self.raw("NICK %s\r\nJOIN %s\r\n%sPART %s\r\nNICK %s % (nick, chan, self.list_string_chan(message, chan), chan, self.nick))
21:08:45 <bsmntbombdood> ~exec self.__class__.nick_join_message = lambda self, nick, chan, message : self.raw("NICK %s\r\nJOIN %s\r\n%sPART %s\r\nNICK %s" % (nick, chan, self.list_string_chan(message, chan), chan, self.nick))
21:09:15 <bsmntbombdood> ~exec self.nick_join_message("NoBeans", "#tapthru", "foo")
21:09:16 -!- bsmnt_bot has changed nick to NoBeans.
21:09:16 -!- NoBeans has changed nick to bsmnt_bot.
21:09:29 <bsmntbombdood> ~exec self.nick_join_message("NoBeans", "#tapthru", ["foo", "bar"])
21:10:37 -!- bsmnt_bot has changed nick to NoBeans.
21:10:37 -!- NoBeans has changed nick to bsmnt_bot.
22:35:59 -!- nazgjunk has joined.
22:38:01 <nazgjunk> i ran into Piet today (anyone here know it?), it's the first esolang that I find cool enough to learn it. Thought I'd hop in here.
22:38:03 -!- sebbu2 has joined.
22:52:00 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
22:52:11 -!- RodgerTheGreat has joined.
22:52:22 <SevenInchBread> more vague execution style... not so clean-cut... more like art :D
22:52:50 <nazgjunk> 20 colours is a bit limited, yeah
22:53:01 <SevenInchBread> No one seems to be able to create a vague way of expressing things that can actually do something...
22:55:23 <SevenInchBread> what they express is generally a combination of what they're surrounded by
22:55:36 <SevenInchBread> so... you could use context-sensitive execution of colors.
22:56:01 <bsmntbombdood> ~exec self.nick_join_message("NoBeans4U", "#tapthru", ["beans", "bears"])
22:56:02 -!- bsmnt_bot has changed nick to NoBeans4U.
22:56:03 -!- NoBeans4U has changed nick to bsmnt_bot.
22:56:41 -!- sebbu has quit (Connection timed out).
22:56:41 -!- sebbu2 has changed nick to sebbu.
23:00:03 <bsmntbombdood> ~exec self.nick_join_message("NoBeans4U", "#baadf00d", ["beans", "bears"])
23:00:03 -!- bsmnt_bot has changed nick to NoBeans4U.
23:00:04 -!- NoBeans4U has changed nick to bsmnt_bot.
23:07:28 <nazgjunk> hm. In Piet, shapes control program flow, while the colours control what actually happens. Would be nice to mix that up, and do the relativity thing...
23:07:48 <nazgjunk> That would make for a pretty twisted esolang
23:11:30 <nazgjunk> well currently it's based on the difference in hue and brightness between the current and the previous colour block
23:12:26 <SevenInchBread> I'd imagine the instruction pointer thing "flowing between the lines" of shapes.
23:12:51 <SevenInchBread> with the instructions being determined by the difference in color... and the control flow flowing along the boundary.
23:14:02 <SevenInchBread> a fork in the boundary is a condition basically... with the condition being on the stack.
23:16:25 <SevenInchBread> I'd expect a mix of two base colors to be a mix of those two instructions... or for lighter or heavier shades to represent different modes.
23:17:25 <nazgjunk> oh crap >.< /me notices it's 0.12
23:18:17 -!- nazgjunk has changed nick to na[zZz]gjunk.
23:23:18 -!- oklofok has quit (Read error: 110 (Connection timed out)).
23:25:57 -!- oklopol has joined.
23:31:37 <ihope_> http://mathbin.net/7414
23:40:49 -!- oerjan has joined.
00:14:06 -!- pikhq has joined.
00:20:43 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
00:20:46 -!- na[zZz]gjunk has quit (Read error: 104 (Connection reset by peer)).
00:21:23 -!- na[zZz]gjunk has joined.
00:24:24 -!- na[zZz]gjunk has quit (Read error: 54 (Connection reset by peer)).
00:24:44 -!- na[zZz]gjunk has joined.
00:34:19 -!- digital_me has joined.
00:40:09 -!- RodgerTheGreat has quit.
00:52:53 -!- sebbu has quit ("@+").
01:33:49 -!- oerjan has quit ("Aaaaaa").
01:37:14 -!- oerjan has joined.
01:38:49 -!- na[zZz]gjunk has quit (Read error: 104 (Connection reset by peer)).
01:38:55 -!- na[zZz]gjunk has joined.
01:41:40 -!- nazgjunk has joined.
01:42:13 -!- na[zZz]gjunk has quit (Read error: 54 (Connection reset by peer)).
01:45:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
01:45:55 -!- nazgjunk has joined.
01:47:08 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
01:47:23 -!- digital_me_ has joined.
01:47:25 -!- nazgjunk has joined.
01:54:17 -!- digital_1e_ has joined.
01:58:39 -!- oerjan has quit ("leaving").
02:06:36 -!- digital_me has quit (Read error: 110 (Connection timed out)).
02:09:36 -!- digital_me_ has quit (Read error: 110 (Connection timed out)).
02:15:51 -!- anonfunc has quit.
02:16:40 -!- ihope_ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
02:31:18 -!- digital_1e_ has changed nick to digital_me.
02:31:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
02:31:50 -!- nazgjunk has joined.
02:35:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
02:35:51 -!- nazgjunk has joined.
03:04:33 -!- nazgjunk has quit (Connection reset by peer).
03:29:14 -!- nazgjunk has joined.
03:33:29 -!- nazgjunk has quit (Connection reset by peer).
03:33:54 -!- nazgjunk has joined.
03:43:18 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
03:47:03 -!- nazgjunk has joined.
03:49:57 -!- nazgjunk has quit (Connection reset by peer).
03:51:36 -!- nazgjunk has joined.
04:03:01 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
04:04:18 -!- nazgjunk has joined.
04:18:04 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
04:18:24 -!- nazgjunk has joined.
04:24:07 -!- nazgjunk has quit (Connection reset by peer).
04:25:29 -!- nazgjunk has joined.
04:27:33 -!- digital_me_ has joined.
04:28:50 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
04:30:21 -!- nazgjunk has joined.
04:35:21 -!- nazgjunk has quit (Success).
04:35:51 -!- digital_me has quit (Read error: 104 (Connection reset by peer)).
04:40:47 -!- nazgjunk has joined.
04:42:09 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
04:42:28 -!- nazgjunk has joined.
05:07:40 -!- pikhq has quit ("leaving").
05:12:00 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
05:12:09 -!- nazgjunk has joined.
05:12:38 -!- Sgeo has quit ("Leaving").
05:15:00 -!- nazgjunk has quit (Connection reset by peer).
05:15:24 -!- nazgjunk has joined.
05:18:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
05:19:11 -!- nazgjunk has joined.
06:01:08 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
06:01:43 -!- nazgjunk has joined.
06:09:08 -!- digital_me_ has quit (Read error: 104 (Connection reset by peer)).
06:18:00 -!- calamari has quit ("Leaving").
06:19:21 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
06:19:32 -!- nazgjunk has joined.
07:05:26 -!- nazgjunk has quit (Connection reset by peer).
07:05:29 -!- nazgjunk has joined.
07:44:20 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
07:44:32 -!- nazgjunk has joined.
07:50:15 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
07:50:30 -!- nazgjunk has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:52 -!- wooby has quit.
08:30:51 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
08:32:27 -!- nazgjunk has joined.
08:42:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
08:42:54 -!- nazgjunk has joined.
08:52:29 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
08:52:46 -!- nazgjunk has joined.
09:01:22 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
09:01:48 -!- nazgjunk has joined.
09:04:05 -!- nazgjunk has quit (Connection reset by peer).
09:04:32 -!- nazgjunk has joined.
09:05:02 -!- sebbu has joined.
09:16:05 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
09:16:32 -!- nazgjunk has joined.
10:22:59 -!- wooby has joined.
10:23:32 -!- safka has joined.
10:26:37 -!- safka has quit (Read error: 104 (Connection reset by peer)).
10:26:54 -!- safka has joined.
10:27:22 -!- nazgjunk has quit (Nick collision from services.).
10:27:32 -!- safka has changed nick to nazgjunk.
11:01:25 -!- wooby has quit.
11:15:18 -!- lament_ has joined.
11:15:24 -!- lament has quit (Read error: 110 (Connection timed out)).
12:23:16 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
12:23:41 -!- nazgjunk has joined.
14:34:18 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
14:34:24 -!- nazgjunk has joined.
15:30:36 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
15:30:43 -!- nazgjunk has joined.
15:34:39 -!- ihope has joined.
15:34:46 <ihope> Is Java Turing-complete?
16:18:14 -!- sebbu2 has joined.
16:19:44 -!- sp3tt_ has joined.
16:20:26 -!- sp3tt has quit (Nick collision from services.).
16:20:31 -!- sp3tt_ has changed nick to sp3tt.
16:24:55 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
16:25:23 -!- nazgjunk has joined.
16:36:58 -!- sebbu has quit (Read error: 110 (Connection timed out)).
16:42:52 <SimonRC> Ah, MS at their best: "However, because not all applications may handle symbolic links correctly, creating a symbolic link requires the new Create Symbolic Link privilege that only administrators have by default."
16:42:56 * SimonRC bangs his head on the desk.
16:43:18 <SimonRC> nazgjunk: please fix your connection
16:43:37 <nazgjunk> i'd love to, but my dad won't let me.
16:43:51 <nazgjunk> fixing would basically mean throwing the wlan away and wiring the house.
16:53:33 <SevenInchBread> hahahaha... Vista won't let you -create symbolic links-
16:54:22 <SevenInchBread> They could always just... make the OS redirect all openings of a symbolic link to the... target file...
17:06:33 <SimonRC> htat would produce backward-compatibilit problems
17:14:43 <SevenInchBread> backwards compatability is just a weak little contract that holds till someone gets fed up with how much old versions suck and decides to make the new one better.
17:15:58 <nazgjunk> i'm not quite sure whether that applies to vista
17:16:18 <nazgjunk> ok, the old versions did suck, but so does vista imo
17:54:05 <ihope> What's a symbolic link, now?
18:24:13 -!- Sgeo has joined.
18:41:26 -!- sp3tt_ has joined.
18:42:34 -!- sp3tt has quit ("Reconnecting").
19:09:07 <bsmntbombdood> I think anything from ms is sufficiently screwed up to be ignored
19:10:30 * nazgjunk quickly hides his ctcp VERSION reply
19:12:46 <SimonRC> as opposed to the client-specific one
19:13:43 <SimonRC> nazgjunk: you can run XP on that?!
19:14:10 <SimonRC> shit, I have desktops slower than that
19:14:47 <nazgjunk> i'm saving for a new laptop, so that i can waste this one on linux
19:15:03 <SimonRC> OTOH, elkisha is so old that it's L2 cache can't actually cache things from above 512MB, making the computer extremely slow if you have more than 512 meg in it.
19:30:41 <ihope> xchat on Windows? How--uh, I mean, sorry.
19:38:58 -!- lament_ has changed nick to laent.
19:39:01 -!- laent has changed nick to lament.
21:04:16 -!- sp3tt_ has quit (Read error: 54 (Connection reset by peer)).
21:04:23 -!- sp3tt has joined.
21:14:20 -!- sp3tt has quit (Remote closed the connection).
21:14:24 -!- sp3tt has joined.
21:21:00 -!- sp3tt has quit (Read error: 131 (Connection reset by peer)).
21:21:06 -!- sp3tt has joined.
21:25:04 <bsmntbombdood> ~exec self.nick_join_message("NoBeans4U", "#tapthru", ["beans", "for bears"])
21:25:05 -!- bsmnt_bot has changed nick to NoBeans4U.
21:25:05 -!- NoBeans4U has changed nick to bsmnt_bot.
21:27:30 -!- bsmnt_bot has changed nick to halp_me.
21:27:36 -!- halp_me has changed nick to bsmnt_bot.
21:29:44 -!- sp3tt_ has joined.
21:31:02 -!- sp3tt has quit (Read error: 104 (Connection reset by peer)).
21:32:42 -!- jix__ has joined.
21:39:43 -!- bsmnt_bot has changed nick to halp_me.
21:39:43 -!- halp_me has changed nick to bsmnt_bot.
21:41:52 -!- bsmnt_bot has changed nick to halp_me.
21:41:53 -!- halp_me has changed nick to bsmnt_bot.
21:41:59 -!- sp3tt_ has quit (Read error: 145 (Connection timed out)).
21:42:08 -!- bsmnt_bot has quit.
21:42:11 -!- bsmnt_bot has joined.
21:45:00 -!- bsmnt_bot has left (?).
21:52:26 -!- bsmnt_bot has joined.
21:52:43 -!- jix__ has changed nick to jix.
22:12:56 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:32:55 -!- oerjan has joined.
22:37:38 -!- sebbu2 has quit ("@+").
23:02:04 <ihope> ~exec self.do_quit()
23:02:12 <oerjan> ~exec self.raw("QUIT")
23:02:12 -!- bsmnt_bot has quit.
23:02:15 -!- bsmnt_bot has joined.
23:02:18 <ihope> ~exec self.do_quit("Foo","Bar")
23:02:30 <ihope> oerjan: yeah, that's the other way to do it.
23:02:48 <oerjan> ~exec sys.output(self.do_quit)
23:02:54 <nazgjunk> ~exec self.raw("QUIT :Quite the mess.")
23:02:54 -!- bsmnt_bot has quit (Client Quit).
23:02:57 -!- bsmnt_bot has joined.
23:03:06 <nazgjunk> i need to look into the rfc again :/
23:03:10 <ihope> ~exec self.raw("QUIT :Quite the mess.")
23:03:10 -!- bsmnt_bot has quit (Client Quit).
23:03:13 -!- bsmnt_bot has joined.
23:03:28 <ihope> ~exec self.raw("QUIT Quite the mess.")
23:03:28 -!- bsmnt_bot has quit (Client Quit).
23:03:31 -!- bsmnt_bot has joined.
23:03:37 <oerjan> I've seen that problem before, the quit message doesn't get through
23:03:52 <bsmntbombdood> you have to be connected for a certain amount of time before your quit message shows up
23:04:23 <oerjan> That makes sense, because the first time I tried it it worked, but not the second.
23:04:25 <ihope> Same with part messages?
23:04:46 -!- ihope has left (?).
23:04:49 -!- ihope has joined.
23:04:57 -!- ihope has left (?).
23:05:00 -!- ihope has joined.
23:05:23 <ihope> I take it the part message showed up both times.
23:05:32 <oerjan> Although it might be affected by registration...
23:06:21 -!- ihope has changed nick to Aeodk.
23:06:22 -!- bsmnt_bot has left (?).
23:06:24 -!- Aeodk has changed nick to ihope.
23:06:30 -!- bsmnt_bot has joined.
23:06:44 <oerjan> ~exec sys.output(self.regex_queue(-1))
23:06:51 -!- ihope has left (?).
23:06:54 -!- ihope has joined.
23:07:04 <oerjan> ~exec sys.output("Test")
23:07:29 <oerjan> i remembered that a split second before you said it :)
23:07:39 <oerjan> ~exec sys.stdout(self.regex_queue(-1))
23:08:02 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-1])
23:08:02 <bsmnt_bot> (<_sre.SRE_Pattern object at 0x80af228>, <function <lambda> at 0xb7bd848c>)
23:08:25 <oerjan> not immensely helpful.
23:08:41 <bsmntbombdood> ~exec sys.stdout((lambda x:x[0].pattern, x[1].__name__)(self.raw_regex_queue[-1]))
23:08:50 <bsmntbombdood> ~exec sys.stdout((lambda x : x[0].pattern, x[1].__name__)(self.raw_regex_queue[-1]))
23:09:40 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-1][0])
23:09:40 <bsmnt_bot> <_sre.SRE_Pattern object at 0x80af228>
23:09:47 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-1][0].__dir__)
23:09:56 <bsmntbombdood> ~exec sys.stdout( (lambda x: (x[0].pattern, x[1].__name__)(self.raw_regex_queue[-1]) )
23:10:08 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-1][0].pattern)
23:10:08 <bsmntbombdood> ~exec sys.stdout( (lambda x: (x[0].pattern, x[1].__name__)(self.raw_regex_queue[-1])))
23:11:01 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-1][0].pattern)
23:11:55 * oerjan is too lazy to look up the right syntax
23:12:19 <bsmntbombdood> ~exec sys.stdout( (lambda x: (x[0].pattern, x[1].__name__))(self.raw_regex_queue[-1])))
23:12:54 <bsmntbombdood> ~exec sys.stdout( (lambda x: (x[0].pattern, x[1].__name__))(self.raw_regex_queue[-1]) )
23:12:55 <bsmnt_bot> ('^ERROR :Closing Link:.*', '<lambda>')
23:13:05 <bsmntbombdood> ~exec sys.stdout( (lambda x: (x[0].pattern, x[1].__name__))(self.raw_regex_queue[-2]) )
23:13:05 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill')
23:13:41 <oerjan> Darn. I suddenly realized that ERROR was actually a pattern and not a python error message :)
23:14:50 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-2][0].pattern)
23:14:50 <bsmnt_bot> ^:bsmntbombdood!\S*gavin@\S* PRIVMSG \S* :~kill (.*)
23:14:57 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-3][0].pattern)
23:15:07 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-4][0].pattern)
23:15:08 <bsmnt_bot> \S+ PRIVMSG (#bsmnt_bot_errors) :~exec (.*)
23:15:17 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-5][0].pattern)
23:15:17 <bsmnt_bot> \S+ PRIVMSG (#baadf00d) :~exec (.*)
23:15:49 <oerjan> ~exec sys.stdout(self.raw_regex_queue[-6][0].pattern)
23:15:49 <bsmnt_bot> \S+ PRIVMSG (#esoteric) :~exec (.*)
23:16:03 <bsmntbombdood> ~exec sys.stdout( [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue] )
23:16:04 <bsmnt_bot> [('^PING (.*)$', 'pong'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~quit ?(.*)', 'do_quit'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~raw (.*)', 'do_raw'), ('^\\S+ PRIVMSG \\S+ :~ctcp (\\S+) (.+)', 'do_ctcp'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG (\\S*) :~pexec (.*)', 'do_exec'), ('\\S+ PRIVMSG (#esoteric) :~exec (.*)', 'do_exec'), ('\\S+ PRIVMSG (#baadf00
23:16:04 <bsmnt_bot> d) :~exec (.*)', 'do_exec'), ('\\S+ PRIVMSG (#bsmnt_bot_errors) :~exec (.*)', 'do_exec'), ('\\S+ PRIVMSG \\S+ :~ps', 'do_ps'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill'), ('^ERROR :Closing Link:.*', '<lambda>')]
23:18:28 <oerjan> Three of those might be unified with a (#\S+), I think.
23:19:06 <oerjan> unless it visits channels where you don't want people to ~exec.
23:20:34 <oerjan> Right. What about (#esoteric|#bsmnt_bot_errors|#baadf00) ?
23:22:27 <oerjan> If you wanted to be clever, you could do something meta with '^:bsmntbombdood ... JOIN (#\S+)'
23:27:53 -!- bsmnt_bot has quit.
23:27:55 -!- bsmnt_bot_chroot has joined.
23:29:35 -!- NK` has quit (Read error: 104 (Connection reset by peer)).
23:29:38 -!- NK` has joined.
23:31:54 -!- bsmnt_bot_chroot has quit (Client Quit).
23:32:35 -!- bsmnt_bot has joined.
23:32:44 <bsmntbombdood> ~exec sys.stdout( [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue] )
23:32:45 <bsmnt_bot> [('^PING (.*)$', 'pong'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~quit ?(.*)', 'do_quit'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~raw (.*)', 'do_raw'), ('^\\S+ PRIVMSG \\S+ :~ctcp (\\S+) (.+)', 'do_ctcp'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG (\\S*) :~pexec (.*)', 'do_exec'), ('\\S+ PRIVMSG (#esoteric|#baadf00d|#bsmnt_bot_errors) :~exec (.*)', 'do_exec
23:32:45 <bsmnt_bot> '), ('\\S+ PRIVMSG \\S+ :~ps', 'do_ps'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill'), ('^ERROR :Closing Link:.*', '<lambda>')]
23:35:17 <oerjan> ~exec sys.output("Test")
23:35:25 <oerjan> ~exec sys.stdout("Test")
23:38:56 -!- bsmnt_bot has quit.
23:40:56 -!- bsmnt_bot has joined.
23:41:15 <bsmnt_bot> {'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'chan': '#esoteric', 'nick': 'bsmnt_bot', 'host': '85.188.1.26', 'exec_chans': ['#esoteric', '#baadf00d']}
23:41:43 <bsmntbombdood> I was fixing the horrible argument passing protocol
23:42:36 -!- nazgjunk has changed nick to na[zZz]gjunk.
23:49:17 -!- bsmnt_bot has quit.
23:49:19 -!- bsmnt_bot has joined.
23:49:22 -!- bsmnt_bot has quit (Client Quit).
23:49:24 -!- bsmnt_bot has joined.
23:53:10 <oerjan> ~exec sys.stdout( [(i[0].pattern, i[1].__name__) for i in self.raw_regex_queue] )
23:53:10 <bsmnt_bot> [('^PING (.*)$', 'pong'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~quit ?(.*)', 'do_quit'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~raw (.*)', 'do_raw'), ('^\\S+ PRIVMSG \\S+ :~ctcp (\\S+) (.+)', 'do_ctcp'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG (\\S*) :~pexec (.*)', 'do_exec'), ('\\S+ PRIVMSG (#esoteric|#baadf00d|#bsmnt_bot_errors) :~exec (.*)', 'do_exec
23:53:10 <bsmnt_bot> '), ('\\S+ PRIVMSG \\S+ :~ps', 'do_ps'), ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill'), ('^ERROR :Closing Link:.*', '<lambda>')]
23:53:18 <ihope> Anything that requires you to be the owner.
23:53:44 -!- bsmnt_bot has quit (Client Quit).
23:53:46 -!- bsmnt_bot has joined.
23:54:17 <ihope> ~exec sys.stdout(self.owner)
23:54:29 <oerjan> The list looks the same.
23:54:48 <oerjan> Try joining with a different owner.
23:55:07 <ihope> ~exec self.owner = r"ihope!\S*ihope@\S*"
23:55:48 <oerjan> How does this mix with persistence?
23:58:56 -!- new_bot has joined.
23:59:08 -!- new_bot has quit (Client Quit).
00:03:11 -!- bsmnt_bot has quit.
00:03:14 -!- bsmnt_bot has joined.
00:03:15 -!- bsmnt_bot has quit (Client Quit).
00:03:17 -!- bsmnt_bot has joined.
00:04:31 -!- bsmnt_bot has quit (Client Quit).
00:04:33 -!- bsmnt_bot has joined.
00:06:44 <ihope> ~exec self.do_quit = 3; self.exec_execer = 3
00:06:52 <ihope> ~exec self.raw("QUIT")
00:07:22 <ihope> Just for good measure, eh?
00:08:37 -!- bsmnt_bot has quit (Client Quit).
00:08:39 -!- bsmnt_bot has joined.
00:10:08 <bsmntbombdood> ~exec for i in self.raw_regex_queue: "~quit" not in i[0].pattern or sys.stdout(i[1])
00:10:09 <bsmnt_bot> <bound method IRCbot.do_quit of <__main__.IRCbot instance at 0xb7c0206c>>
00:10:24 <bsmntbombdood> ~exec for i in self.raw_regex_queue: "~quit" not in i[0].pattern or sys.stdout(type(i[1]))
00:10:58 <ihope> What's this or stuff?
00:11:09 <ihope> Rather, this "or" stuff.
00:12:27 <bsmntbombdood> ~exec ["~quit" not in i[0].pattern or sys.stdout(i[1]) for i in self.raw_regex_queue]
00:12:28 <bsmnt_bot> <bound method IRCbot.do_quit of <__main__.IRCbot instance at 0xb7c0206c>>
00:13:05 <bsmntbombdood> ~exec ["~quit" not in i[0].pattern or i[1]=3 for i in self.raw_regex_queue]
00:13:44 <bsmntbombdood> ~exec for i in self.raw_regex_queue: "~quit" not in i[0].pattern or i[1]=3
00:13:55 <bsmntbombdood> ~exec for i in self.raw_regex_queue: "~quit" not in i[0].pattern or sys.stdout(i[1])
00:13:57 <bsmnt_bot> <bound method IRCbot.do_quit of <__main__.IRCbot instance at 0xb7c0206c>>
00:14:53 -!- bsmnt_bot has quit ("Disconnected.").
00:14:55 -!- bsmnt_bot has joined.
00:15:07 -!- bsmnt_bot has quit (Client Quit).
00:15:09 -!- bsmnt_bot has joined.
00:15:49 <ihope> That wasn't me that was doing that, then, was it?
00:15:54 <ihope> ~exec self.register_raw(".*", lambda x: True)
00:15:58 -!- bsmnt_bot has quit (Client Quit).
00:15:59 -!- bsmnt_bot has joined.
00:16:38 <ihope> ~exec while True: self.register_raw(".*", lambda x: print x)
00:16:54 * ihope does something to print
00:17:23 <ihope> ~exec while True: self.register_raw(".*", lambda x: sys.stdout(x))
00:17:44 <bsmnt_bot> :bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :except no
00:17:45 -!- bsmnt_bot has quit (Excess Flood).
00:17:47 -!- bsmnt_bot has joined.
00:17:53 * ihope giggles slightly and/or cackles evilly
00:18:10 <ihope> ~exec self.register_raw(".*", lambda x: sys.stdout(x))
00:18:20 <ihope> Always fun, I'm sure, eh?
00:18:20 <bsmnt_bot> :ihope!n=ihope@tapthru/resident/ihope PRIVMSG #esoteric :Always fun, I'm sure, eh?
00:18:33 <ihope> Except now my client beeps every time I say something.
00:18:34 <bsmnt_bot> :ihope!n=ihope@tapthru/resident/ihope PRIVMSG #esoteric :Except now my client beeps every time I say something.
00:18:37 <bsmnt_bot> :bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :heh
00:18:50 <ihope> Quick! Get another bsmnt_bot!
00:18:51 <bsmnt_bot> :ihope!n=ihope@tapthru/resident/ihope PRIVMSG #esoteric :Quick! Get another bsmnt_bot!
00:19:10 <bsmnt_bot> :SevenInchBread!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :drfg
00:19:19 <bsmnt_bot> :SevenInchBread!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :<CTCP>ACTION AAAAAAAAAAAH<CTCP>
00:19:26 <bsmnt_bot> :SevenInchBread!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :AHA
00:19:31 <bsmnt_bot> :SevenInchBread!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :PWNT
00:19:42 <ihope> ~exec self.raw("QUIT")
00:19:42 <bsmnt_bot> :SevenInchBread!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :ah
00:19:43 <bsmnt_bot> :ihope!n=ihope@tapthru/resident/ihope PRIVMSG #esoteric :~exec self.raw("QUIT")
00:19:43 -!- bsmnt_bot has quit (Client Quit).
00:19:45 -!- bsmnt_bot has joined.
00:20:26 <ihope> ~exec self.grah = lambda: self.register_raw(".*", lambda x: sys.stdout(x))
00:20:46 <ihope> Now wait a minute...
00:21:01 <ihope> self.register_raw(".*", lambda x: self.grah)
00:21:17 <ihope> ~exec self.register_raw(".*", lambda x: self.grah())
00:21:21 -!- bsmnt_bot has quit (Remote closed the connection).
00:21:23 -!- bsmnt_bot has joined.
00:24:39 <ihope> ~exec sys.stdout(os.system("bash"))
00:24:52 <ihope> That won't work, now, will it?
00:25:31 <bsmntbombdood> if you write a wrapper around os.popen with sockets, then you could get a shell
00:31:00 <bsmnt_bot> <open file 'bash', mode 'r' at 0xb7c2e0f8>
00:32:17 <bsmnt_bot> <open file 'bash', mode 'r' at 0xb7c2e0f8>
00:32:44 <ihope> Let's just sys.stdout everything...
00:33:04 <bsmntbombdood> ihope: I dunno how to get a return value from an exec
00:33:13 <bsmnt_bot> <closed file 'bash', mode 'r' at 0xb7c2e0f8>
00:33:27 <bsmnt_bot> <closed file 'bash', mode 'r' at 0xb7c2e0f8>
00:33:59 <bsmntbombdood> ~exec self.fd = __import__("popen2").popen2("bash")
00:34:06 <bsmnt_bot> (<open file '<fdopen>', mode 'r' at 0xb7c2ead0>, <open file '<fdopen>', mode 'w' at 0xb7c2e9f8>)
00:34:38 -!- calamari has joined.
00:35:14 <bsmnt_bot> (<open file '<fdopen>', mode 'r' at 0xb7c2ead0>, <open file '<fdopen>', mode 'w' at 0xb7c2e9f8>)
00:35:58 <bsmntbombdood> ~exec self.fd = __import__("popen2").popen2("bash -i")
00:36:07 <bsmnt_bot> (<open file '<fdopen>', mode 'r' at 0xb7c2eb18>, <open file '<fdopen>', mode 'w' at 0xb7c2e9b0>)
00:44:40 <oerjan> Maybe the file descriptor is set to non-blocking or something?
00:48:51 -!- na[zZz]gjunk has quit (Read error: 54 (Connection reset by peer)).
00:49:14 -!- nazgjunk has joined.
01:08:17 -!- calamari has quit ("Leaving").
01:46:09 <oerjan> ein neve, neven, nevar, nevane
01:48:29 -!- nazgjunk has quit (Success).
01:48:52 -!- nazgjunk has joined.
01:54:27 <lament> i think he meant "to snow"
01:56:20 <oerjan> I am looking at individual _cars_ on the Golden Gate bridge ...
01:58:04 <oerjan> It's a bit less resolution outside North America or so, alas. And some countries don't have maps at all.
01:58:11 -!- ihope has quit (Read error: 110 (Connection timed out)).
01:58:39 <oerjan> But the Eiffel tower and Taj Mahal looked good.
01:58:45 <SevenInchBread> Google sign to a partnership with some astronomy people to build a big telescope.
02:00:42 <oerjan> Alas there is little hope of zooming to uncharted places.
02:01:24 <oerjan> Got to go with what astronomers are interested in. Not that that would be a bad thing.
02:03:41 <oerjan> But you could probably get a good view of the Andromeda galaxy.
02:49:02 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
02:49:10 -!- nazgjunk has joined.
03:17:04 -!- calamari has joined.
03:18:05 -!- SevenInchBread has quit ("haaaaaaaaaa").
03:30:19 -!- ihope has joined.
03:39:15 * bsmntbombdood calculates sqrt(2) to within 1/1000000000000000000000000000000
03:49:22 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
03:49:40 -!- nazgjunk has joined.
03:56:13 <bsmntbombdood> (newtons-method (lambda (x) (- (square x) 2)) 1 1/1000000000000000000000000000000)
04:02:10 <oerjan> As long as tolerance is not so small that you get serious rounding off errors...
04:05:07 <oerjan> In which case using a larger dx than tolerance might be a good idea.
04:12:04 -!- ihope has quit (Read error: 110 (Connection timed out)).
05:35:20 -!- calamari has quit ("Leaving").
05:55:02 -!- nazgjunk has quit ("rawr. And, also: Bi-la Kaifa").
06:04:08 -!- anonfunc has joined.
06:08:44 -!- oerjan has quit ("Eeek").
06:11:46 -!- Sgeo has quit (Remote closed the connection).
06:34:16 -!- sp3tt has joined.
07:03:47 -!- Jessie has joined.
07:22:41 -!- Jessie has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]").
07:24:14 -!- anonfunc has quit.
07:26:01 -!- anonfunc has joined.
07:48:05 <mtve> sorry, i don't following this chan, so perhaps a dup: http://scienceblogs.com/goodmath/2007/01/a_pathological_challenge_prime.php
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:21:02 -!- lament has changed nick to lt.
08:22:07 -!- lt has changed nick to lament.
09:29:44 -!- terjek has joined.
09:33:42 -!- terjek has left (?).
10:15:46 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
10:40:38 -!- puzzlet has joined.
11:48:16 -!- anonfunc has quit.
13:24:33 -!- nazgjunk has joined.
14:15:41 -!- calamari has joined.
14:25:30 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
14:25:48 -!- nazgjunk has joined.
14:32:14 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
14:32:45 -!- nazgjunk has joined.
15:49:15 -!- RodgerTheGreat has joined.
15:54:58 -!- puzzlet has quit (Read error: 54 (Connection reset by peer)).
15:55:06 -!- puzzlet has joined.
15:55:12 <calamari> not exactly sure how to put it into words
15:55:52 <calamari> but, take all gravitational force vectors, find the net force on the object in question.. draw a vector opposite that, should be up
15:56:35 <calamari> thanks, that's probably how to say it
16:29:46 -!- jix__ has joined.
16:31:38 -!- RodgerTheGreat has quit.
16:35:52 <GregorR> *ahem*: Up is the direction indicated by the vector opposite of that vector which represents the sum of all gravitational forces at a given location.
16:35:58 <GregorR> I use that one all the time.
16:50:10 -!- FabioNET has joined.
17:06:03 -!- digital_me has joined.
17:31:59 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
17:32:31 -!- nazgjunk has joined.
18:18:01 -!- sebbu has joined.
18:32:21 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
19:02:09 <oklopol> yeah, it's my favorite too
19:08:26 -!- cmeme has quit (Connection reset by peer).
19:13:36 -!- cmeme has joined.
19:58:44 -!- digital_me_ has joined.
20:04:07 -!- sebbu2 has joined.
20:09:28 -!- digital_me has quit (Read error: 110 (Connection timed out)).
20:11:40 -!- sebbu has quit (Read error: 60 (Operation timed out)).
20:16:57 -!- sebbu2 has changed nick to sebbu.
20:38:55 -!- ihope has joined.
20:48:17 <ihope> Now, really. Everybody says "publicly" is in fact spelled "publicly", but many other words don't follow that rule. And I'm not talking about things like "musically".
20:48:57 <ihope> "Basically" is one example.
20:51:21 <SimonRC> There was a young hacker from Hull...
20:52:14 <SimonRC> Whose brain had a temporary lull...
20:53:00 <SimonRC> His program was crashed...
20:53:07 <SimonRC> And his data was trashed...
20:53:22 <SimonRC> When malloc() returned a NULL.
20:53:48 <ihope> Under what conditions does malloc() return a NULL?
20:53:55 <SimonRC> actually, that should be...
20:54:06 <ihope> What if the memory allocated actually starts at address 0? :-P
20:54:11 <SimonRC> "... 'Cause he didn;t check malloc() for NULL."
20:54:26 <SimonRC> nonono, malloc returns null if it is out of space
20:54:36 <ihope> That's the only time it does that?
20:54:49 <SimonRC> Or there is some other problem
20:54:53 <ihope> And all it returns is a pointer?
20:55:28 <SimonRC> in C++, the new keyword throws an exception instead, but I'm not sure about malloc().
20:55:29 <ihope> How are you supposed to tell why it failed, then?
20:55:54 <ihope> Write your own function to use instead of malloc()?
20:56:59 <ihope> I mean, surely malloc() was written.
20:58:39 <SimonRC> Indeed, it is quite possible to write malloc() in C.
20:58:52 <SimonRC> I would demonstrate, but I haven't the time :-(
21:01:38 <ihope> It might need a bit of system calling, of course.
21:01:42 <ihope> I mean, wouldn't it?
21:04:13 <SimonRC> If you want a fixed amount of space available for allocation, you can just have a large static array to hold it.
21:04:40 <ihope> Yeah, you could do that.
21:04:48 <SimonRC> If you want to be able to ask the OS, use os-specific calls to extend your address space
21:04:50 <ihope> What would you do if you ran out of memory, though?
21:05:29 <SimonRC> I recall that the Z-machine's malloc used a large fixed-size array.
21:05:46 <SimonRC> The glulx machine probably doe mamory-expansion, though
21:08:46 <ihope> You can achieve the same effect by first doing s/memory/memory/ then doing s/memory/mamory/. :-)
21:26:23 -!- Sgeo has joined.
21:54:02 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:28:14 -!- SevenInchBread has joined.
22:30:43 -!- FabioNET has quit ("goood night").
22:34:32 <bsmntbombdood> C's method of reporting failures is the global errno variable
22:35:04 <bsmntbombdood> malloc sets errno to ENOMEM if it runs out of memory
22:36:56 <GregorR> It's also unfortunately in Java :(
22:38:02 <SevenInchBread> emacs is IDLE with a buffer list, annoying key combinations, and torturous configuration.
22:44:13 <ihope> SevenInchBread: I hear /usr/bin/env python > is a good editor.
22:45:06 * SevenInchBread loves programming, but hates the fanaticism it forms...
22:46:42 <ihope> Use Haskell. I don't see how you can survive with that mind-bending dynamic typing.
22:47:01 <ihope> And no currying! Sheesh!
22:49:08 <ihope> (Of course I'm ignoring the fact that it's perfectly possible to do currying in Python, though a little annoying.
22:49:09 <SevenInchBread> pfft, but how the hell could I possibly use monads... and static typing is like wearing a straightjacket.
22:49:42 <ihope> Oh, now you *want* to add functions together to get a string?
22:50:41 <ihope> Pff, I bet Python doesn't even have typeclasses.
22:51:15 * SevenInchBread is working on his own Smalltalk-like language at the moment.
22:51:39 <ihope> Smalltalk-like, eh?
22:52:12 <ihope> bsmntbombdood: it's interfaces from object-oriented stuff, except better.
22:52:14 <SevenInchBread> I've never -used- it... but it's Lispy enough that I can get basically how it works at least in spirit.
23:14:28 -!- calamari has quit ("Leaving").
23:16:09 -!- sebbu has quit ("@+").
23:17:33 <SevenInchBread> yeah okay, I see... you split the function into individual one-argument functions?
23:32:24 -!- digital_me_ has quit ("Lost terminal").
23:35:09 -!- nazgjunk has quit ("rawr. And, also: Bi-la Kaifa").
23:41:46 <ihope> SevenInchBread: pretty much.
23:46:21 -!- oerjan has joined.
23:52:14 <SevenInchBread> ihope, hmmm... it would be good for delaying a functions execution...
23:55:29 <oerjan> yeah, Ocaml has both and has to disallow currying when you use optional arguments
23:57:24 <oerjan> scheme doesn't have implicit currying.
23:58:27 <bsmntbombdood> (define (curry f . x) (lambda (a . rest) (apply f (append x (cons a rest)))))
00:00:00 <oerjan> I think you can do (define (curry f . x) (lambda rest (apply f
00:03:18 <bsmntbombdood> now that i think about it, that's more usefull than I though
00:03:37 <bsmntbombdood> you can do (curry + 1) instead of (lambda (x) (+ x 1))
00:05:00 <oerjan> If you switch x and rest you get the other one
00:06:50 <oerjan> (+ x) 1 == 1+x and (x +) 1 == x+1
00:08:23 <oerjan> Note: (- x) does not work because that is unary minus
00:09:29 <oerjan> All other operators can be used, as well as function names in ``
00:09:49 <bsmntbombdood> http://www.engr.uconn.edu/~jeffm/Papers/curry.html
00:19:38 <ihope> SevenInchBread: delaying a function's execution is what "lambda:" is for.
00:20:19 <SevenInchBread> the function returns a function that expects the next argument, right?
00:48:45 <ihope> So what's this talk of removing lambda?
00:48:56 <SevenInchBread> Now you just append a * to a tuple place in the function call... and it basically does that.
00:49:11 <SevenInchBread> well... in Python lambdas aren't near as useful... and some people think it's hard to read.
00:49:24 <SevenInchBread> I think they have their purpose, and shouldn't simply be removed because some people never use it.
00:49:53 <ihope> bsmnt_bot makes them useful. :-P
00:50:21 <ihope> S and K combinators.
00:50:35 <ihope> And uncurryment functions.
00:50:45 <SevenInchBread> folks are under the impression that you should use def... which I don't believe to be entirely true.
00:51:01 <SevenInchBread> you don't assign every value you evaluate to a variable... why should you assign every function to one?
00:51:40 * bsmntbombdood reads the wikipedia article on monads, and fails at understanding
00:51:54 <SevenInchBread> from one I understand... it's just a list of computations.
00:52:14 <ihope> bsmntbombdood: they say Wikipedia is not a tutorial.
00:52:58 <SevenInchBread> Whats information worth if you can't understand it without having previous knowledge of it?
00:53:27 <ihope> A monad is a type constructor. return puts something into a monad, >>= lets you use something that's already in a monad.
00:54:01 <ihope> call-with-previous-continuation!
00:54:18 <ihope> Or even better, call-with-future-continuation
00:54:22 <ihope> ...Wait, are those real names?
00:57:34 <ihope> Implement a programming language based on first-order logic with dependent typing.
00:57:51 <ihope> And make it a good one, too.
00:57:53 <SevenInchBread> hmm... it basically extends the message-passing idea of objects to methods...
00:58:05 <ihope> Might as well have classes, too. Typeclasses, valueclasses...
00:58:24 <ihope> SevenInchBread: that's when the type of value a function returns depends on the value it takes.
00:58:37 <ihope> Requires first-class types, naturally.
00:58:44 <ihope> And base it all off Damas-Milner.
00:58:57 <ihope> Or Hindley-Milner, if you like that name better.
00:59:13 <SevenInchBread> heh, dynamic typing does that... not nicely, but it does it. :D
01:00:21 <SevenInchBread> and... have some consistent way to do type conversions.
01:02:11 <SevenInchBread> hmm... I've been reading up on so-called "role-oriented programming" sounds neat...
01:03:12 <bsmntbombdood> "a version of the lambda calculus that omits the lambda operator."
01:06:24 <SevenInchBread> it's a good idea when you have like... actual objects.
01:07:32 <SevenInchBread> "pure oo" seems removed from the whole business lingo though... like Smalltal and Self.
01:10:07 <bsmntbombdood> ~exec self.__class__.register = lambda self, m, c: self.register_raw(r"\S+ PRIMVSG (P<chan>\S+) :~%s (P<msg>.*)" % m, c)
01:10:29 <ihope> bsmntbombdood: s = \xyz.xz(yz) and k = \xy.x
01:10:36 <ihope> All the lambda you'll ever need.
01:10:58 <ihope> So what of it doesn't make sense?
01:11:43 <bsmntbombdood> ~exec self.register("cat", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group("chan"), y.group("msg")))
01:11:55 <bsmntbombdood> ~exec self.register("cat", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group("chan"), y.group("msg"))))
01:11:55 <ihope> bsmntbombdood: abstraction elimination.
01:12:10 <ihope> The Unlambda page says how it works.
01:19:22 -!- ihope_ has joined.
01:19:48 -!- oerjan has quit (zelazny.freenode.net irc.freenode.net).
01:20:14 -!- oerjan has joined.
01:20:32 -!- oklofok has joined.
01:21:29 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
01:27:28 <oerjan> Basically you remove x from \xwhatever by prepending every application with S, every variable other than x by K, and replace each x by I=SKK.
01:28:40 <ihope_> Something like that, yeah.
01:28:58 <ihope_> SK = KI is surely the simplest identity in SKI calculus, besides the trivial ones, of course.
01:30:45 <oerjan> SK = KI is not quite true in Unlambda because of side effects. SK x y = K y (x y) = y except for side effects of (x y).
01:31:49 <oerjan> (and y is only evaluted once.)
01:32:32 <oerjan> However, K y never has a side effect, so SKK=KI works.
01:32:36 <ihope_> Give me my IO monad back.
01:33:10 <ihope_> Still, ugh, side effects.
01:34:04 <oerjan> But Unlambda's choice of side effects is so weird that it's part of its charm...
01:35:18 -!- ihope has quit (Read error: 110 (Connection timed out)).
01:36:09 <ihope_> I guess I could implement IO monads and make it a little less ugh.
01:38:21 <oerjan> My never-expanded Limonade idea was to add monads and type classes to make it _more_ ugh.
01:39:23 <oerjan> Basically so overloaded that it was hard to know what an expression meant, requiring careful consideration of what monad it was in.
01:43:30 -!- calamari has joined.
02:08:20 <oerjan> http://news.bbc.co.uk/2/hi/europe/6310915.stm
02:12:09 -!- ihope_ has quit (Read error: 60 (Operation timed out)).
02:32:47 -!- GregorR has quit (Read error: 110 (Connection timed out)).
02:35:37 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
03:17:01 -!- puzzlet has joined.
03:47:28 -!- GregorR has joined.
04:50:59 -!- calamari has quit ("Leaving").
05:11:33 -!- Sgeo has quit (Remote closed the connection).
05:36:13 -!- Arrogant has joined.
05:58:07 <lament> bsmntbombdood: that's HORRIBLE!
06:44:24 -!- oerjan has quit ("leaving").
07:58:14 -!- anonfunc has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:11:12 -!- anonfunc has quit.
10:11:12 -!- Arrogant has quit ("Leaving").
10:39:57 -!- MM2 has quit (Read error: 110 (Connection timed out)).
10:44:49 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)).
10:54:56 -!- MM2 has joined.
12:21:13 -!- nazgjunk has joined.
12:40:55 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
12:41:26 -!- nazgjunk has joined.
12:53:55 -!- ais523 has joined.
12:55:49 * ais523 checks what happened to EgoBot
12:56:21 <ais523> It seems it quit at 02:31:18 (110:Connection timed out) and didn't join again
12:56:54 <SimonRC> I have noiced that #haskell-blah have a picture of their bot: http://trappist.elis.ugent.be/~kehoste/haskell-blah_lambdabotContest_results.html
12:57:02 <ais523> That's a shame, I was wondering about a BF problem that's been bothering me
12:57:04 <SimonRC> Just how I imagine it/her.
12:57:27 <SimonRC> Maybe we should have a picture of egobot...
12:57:51 <ais523> I'm not sure what it would look like. Maybe a Turing Machine?
12:58:32 <ais523> Anyway, the problem was to write an 8-bit BF program which outputted another BF program that was an infinite loop
12:58:50 <ais523> that's easy, but I was wondering how short you could get the first program
12:59:08 <ais523> You could write something that just output +[], but there's probably a shorter way that produces more output
13:03:42 <SimonRC> Well the infinite-loop program must have a [ and a ] in it...
13:03:54 <SimonRC> and it must have a + or - in it
13:04:06 <SimonRC> so I don't see how you could change it much
13:04:18 <ais523> but making it longer might make it easier to generate
13:04:31 * ais523 gets out an ASCII code table
13:06:26 <ais523> -/13579;=?ACEGIKMOQSUWY[] is an infinite loop
13:06:40 <ais523> and probably easier to generate
13:10:09 <ais523> but assuming we don't want infinitely-long output, there has to be some way to stop it continuing along the same pattern
13:13:10 <ais523> if we store 44 in a cell somehow, then the rest of the code can just be [+.+] (because -'s ASCII code is 45), and it will continue into the high reaches of ASCII before wrapping round to 0
13:13:54 <SimonRC> I don't think a load of control-codes at the beginning of a program usually hurt a bf interpreter.
13:14:18 <SimonRC> actually, make that: ++[+.+]
13:14:44 <ais523> but + has an ASCII code of 43, so if you do that you get +-[] with comments removed, which is a NOP
13:15:09 * ais523 looks up 44 on the wiki's BF constant table
13:15:25 <ais523> My first attempt is ++[>+<------]>+[+.+]
13:16:07 <SimonRC> BTW ASCII is a 7-bit code. there are several 8-bit codes called "extended ascii", of which ISO-8859-1 is probably most commpn online.
13:26:53 <ais523> +[+.+.++++.+] works (13 characters)
13:58:16 -!- ais523 has quit.
14:51:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
14:51:44 -!- nazgjunk has joined.
15:12:59 * SimonRC tries a quiz and gets most right: http://alvar.a-blast.org/plat_forms/
15:13:08 <SimonRC> Guess the language from the programming team!
15:15:09 <SimonRC> Gee I wonder what language team F are using? They are all "nice young men" in shirts, with well-cut hair and HP laptops.
15:43:23 * SimonRC is suprised at the word "negligible". Sure it should be "neglegible", from negle-ct
15:53:58 * SimonRC pr'p'uziz ' nyu speliq sist'm.
16:18:51 * SimonRC sees a connection between China and Wales: dragons.
17:34:06 <lament> dragons and dog-eating
18:03:48 -!- sebbu has joined.
18:07:32 <SimonRC> say, guys, does this go "beep":
19:24:01 -!- wooby has joined.
20:04:47 -!- sebbu2 has joined.
20:11:51 -!- sebbu has quit (Read error: 145 (Connection timed out)).
20:16:15 -!- sebbu2 has changed nick to sebbu.
20:29:55 -!- Arrogant has joined.
21:05:21 -!- Arrogant has quit ("Leaving").
21:25:43 <GregorR> Why geology is better than chemistry: In our rock identification lab, there's a column for "taste."
21:28:56 <GregorR> Some jerk voted down my wonderful Windows 1.0 slideshow :(
22:10:20 <lament> GregorR: biology is even better
22:27:07 -!- ihope has joined.
22:33:26 -!- sebbu2 has joined.
22:52:35 -!- sebbu has quit (Connection timed out).
23:15:15 <ihope> Lol, side effects.
23:34:49 -!- sebbu2 has quit ("@+").
23:45:53 -!- nazgjunk has quit ("rawr. And, also: Bi-la Kaifa").
02:14:34 -!- ihope has quit (Connection timed out).
02:38:08 -!- SevenInchBread has joined.
03:25:45 -!- SevenInchBread has set topic: #esoteric - the international hub for esoteric programming language design and deployment - map: http://www.frappr.com/esolang - forum: http://esolangs.org/forum/ - EgoBot: !help (currently down) - wiki: http://esolangs.org/wiki/ - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric - Pastebin: http://pastebin.ca/.
03:38:35 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)).
04:02:35 -!- Sgeo has joined.
04:25:34 -!- wooby has quit.
04:56:48 -!- Arrogant has joined.
05:30:12 -!- anonfunc has joined.
05:33:43 -!- Sgeo has quit ("Leaving").
06:31:45 -!- Arrogant has quit ("Leaving").
06:49:00 -!- oerjan has joined.
06:58:05 <oerjan> Some of the other Lambdabot logo suggestions seem like they would have been appropriate for EgoBot. (The ones by boegel and beelsebob)
07:09:27 <oerjan> negligible but neglect follows from the rules of Latin. In the first short e turns to i. In the second short e turns long because it is followed by a consonant combination.
07:13:04 <oerjan> Of course there are exceptions to rules as well.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:38:30 -!- oerjan has quit ("leaving").
08:45:10 -!- anonfunc has quit.
11:02:44 <MM2> give me 5 first prime numbers, please
11:32:14 -!- anonfunc has joined.
11:57:36 -!- ihope has joined.
12:46:37 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
12:54:25 -!- ais523 has joined.
13:03:01 -!- ais523 has changed nick to ais523_.
13:10:24 -!- ais523_ has changed nick to ais523.
13:10:41 -!- ais523 has quit.
13:10:57 -!- ais523 has joined.
13:27:58 <ais523> MM2: 2, 3, 5, 8, 13. Sorry, this IRP implementation has a lag of a little over 10 hours at the moment.
13:37:44 -!- ais523 has quit (Remote closed the connection).
13:39:48 -!- ais523 has joined.
13:42:02 <ais523> Besides, this IRP implementation is wrong. I meant 2, 3, 5, 7, 11.
13:47:52 -!- calamari has joined.
13:49:54 <calamari> do I know you by a different nick? :)
13:50:12 <ais523> No, I just don't get to access IRC very often
13:50:27 <ais523> and when I do, there rarely seems to be a discussion
13:50:41 <ais523> so I just say hello to people when they join
13:50:59 <calamari> no problem hehe was just curious
13:51:35 <ais523> EgoBot's still down, isn't it?
13:52:40 <ais523> I was discussing a brainfuck problem with SimonRC yesterday
13:53:08 <ais523> the problem was to write the shortest possible 8-bit wrapping BF program that would output a BF program that was an infinite loop
13:54:18 <ais523> it seems my best attempt was +[+.+.++++.+]
14:10:21 -!- EsoBot has joined.
14:12:39 <ais523> there are a lot of control characters in the output
14:12:47 <ais523> but BF interpreters don't care about them
14:16:10 <calamari> E!bf http://rafb.net/p/5WSwpO66.txt
14:16:12 <EsoBot> Hangman started! Type `/msg EsoBot <pid> <word>\n' to start a game!
14:17:02 <EsoBot> ____ ___ ____ | Type `E!<pid> <guess>\n' to guess a letter!
14:20:07 <EsoBot> time for work | :)|-< YOU WIN!
14:20:36 -!- calamari has quit ("Leaving").
14:20:50 <EsoBot> Commands: bf, cat, help, kill, ls, ps, quit, unnecessary.
14:21:01 <EsoBot> Bad or inaccessible URL `http://localhost/ls/dirs'.
14:23:23 <ais523> E!bf >,----------[>,----------]<[<]>[++++++++++.>]<[<]>[.>]
14:23:49 <EsoBot> Hello, world!Hello, world!
14:24:56 <ais523> E!bf +[>>,----------[>,----------]<[<]>[++++++++++.>]<[<]>[.>]<[[-]<]<]
14:25:15 <EsoBot> Hello, world!Hello, world!
14:37:50 <EsoBot> Program executed perfectly right!
14:38:01 <ais523> e!unnecessary Hello, world!
14:38:06 <ais523> E!unnecessary Hello, world!
14:38:07 <EsoBot> CRITICAL ERROR: The file exists!
14:39:31 <ais523> E!unnecessary CRITICAL ERROR: The file exists!
14:39:33 <EsoBot> CRITICAL ERROR: The file exists!
14:42:47 <ais523> ~exec sys.stdout("testing");
14:43:26 <ais523> E!1 ~sys.stdout("E!1 testing\\n"); \n
14:43:27 <EsoBot> ~sys.stdout("E!1 testing\~sys.stdout("E!1 testing\
14:43:53 <ais523> E!1 ~sys.stdout("E!1 testing\\
14:44:00 <EsoBot> ~sys.stdout("E!1 testing\n"); ~sys.stdout("E!1 testing\n");
14:44:31 <ais523> E!1 ~exec sys.stdout("testing\\
14:44:38 <EsoBot> ~exec sys.stdout("testing\n"); ~exec sys.stdout("testing\n");
14:45:35 <ais523> E!1 ~exec sys.stdout(";\n
14:45:36 <EsoBot> ~exec sys.stdout(";~exec sys.stdout(";
14:45:45 <ais523> E!1 ~exec sys.stdout(";)\n
14:45:46 <EsoBot> ~exec sys.stdout(";)~exec sys.stdout(";)
14:45:54 <ais523> E!1 ~exec sys.stdout(");\n
14:46:11 <ais523> E!1 ~exec sys.stdout(");\n
14:47:16 <ais523> ~exec sys.stdout("E!ps");
14:49:49 <EsoBot> ~exec sys.stdout(");~exec sys.stdout(");
14:49:49 <EsoBot> ~exec sys.stdout(");~exec sys.stdout(");
14:49:49 -!- EsoBot has quit ("requested by ais523").
15:37:39 <ais523> ~exec sys.stdout("test" * 2);
16:51:27 <SimonRC> You know you've been using phpBB too much when... you type phpBB markup in Word without thinking about it.
16:52:33 <ais523> ...and you know you're too addicted to phpBB when you actually learn Visual Basic so that you can program Word to interpret it correctly
16:54:36 <SimonRC> It sucks trying to write 2000-word posts in those titchy editing boxes though.
17:00:55 <ais523> Can't you edit it in an external editor and then copy-and-paste it in?
17:08:22 <SimonRC> Maybe, but it makes previewing a PITA.
17:33:47 -!- sebbu has joined.
17:58:08 -!- jix__ has joined.
17:58:54 -!- jix__ has changed nick to jix.
18:20:34 -!- ais523 has quit.
18:23:06 -!- Rugxulo has joined.
18:41:21 -!- Rugxulo has quit ("Say What?").
18:51:39 -!- digital_me has joined.
20:03:48 -!- calamari has joined.
20:21:32 -!- nazgjunk has joined.
21:12:32 -!- Sgeo has joined.
21:31:36 -!- jix has quit (Read error: 104 (Connection reset by peer)).
21:33:51 -!- jix__ has joined.
21:34:15 -!- jix__ has changed nick to jix.
22:14:23 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:15:51 -!- anonfunc has quit.
22:48:06 -!- calamari has quit ("Leaving").
23:07:43 <bsmntbombdood> <SimonRC> You know you've been using phpBB too much when... you type phpBB markup in Word without thinking about it.
23:10:46 -!- sebbu has quit ("@+").
23:21:47 * SimonRC wonders about the physiological effects that a certain newsgroup is having on him.
23:25:27 <SimonRC> It's the stomach-churning, heart-thumping feeling that is caused by either being afraid or having a crush.
23:25:43 <SimonRC> And I don't think I'm afraid.
23:26:22 <SimonRC> OTOH, it's not a sexual fetish of mine AFAICT.
23:29:59 <SimonRC> I wouldn;t be saying this stuff if I thought I would ever meet any of you guys.
23:30:09 <SimonRC> Or gals, as the case may be.