←2008-03 2008-04 2008-05→ ↑2008 ↑all
2008-04-01
00:23:57 -!- ihope has quit (Read error: 110 (Connection timed out)).
00:46:44 -!- olsner has quit ("Leaving").
01:21:07 -!- sebbu has quit ("@+").
01:48:06 <wildhalcyon> ehird, smalltalk is pretty cool.
01:54:34 <lament> heh :)
01:58:22 <wildhalcyon> I'm starting to understand the syntax better, but I still think there are some superfluous semicolons.
01:58:50 <wildhalcyon> I haven't figured out how to change syntax in squeak
02:00:12 <lament> which semicolons are superfluous?
02:02:00 <wildhalcyon> For instance: Transcript show: 'hello world'; cr. (quoted from the Squeak By Example documentation, pg 12)
02:02:19 <lament> what does cr mean?
02:02:35 <lament> carriage return?
02:02:39 <wildhalcyon> I believe so, yes
02:03:22 <lament> well.. compare that to what you would have in some other language
02:03:29 <lament> Transcript.show("hello world")
02:03:33 <lament> Transcript.cr()
02:04:04 <wildhalcyon> I'm not saying its not better, or wicked cool. Because it is, on both counts.
02:04:23 <lament> the thing the semicolon does is called "cascade"
02:04:27 <wildhalcyon> Maybe I should spend some more time on it
02:04:32 <wildhalcyon> cascade?
02:04:49 <lament> both the message show: and the message cr are sent to Transcript
02:05:05 <wildhalcyon> ohh, okay
02:05:06 <lament> ; is shortcut for "send to the same receiver the previous message was sent to"
02:06:05 <wildhalcyon> Alright
02:06:24 <wildhalcyon> I guess that makes sense
02:08:32 <wildhalcyon> I was hoping something cool would happen if I typed in 3 + 4; + 2
02:08:36 <wildhalcyon> but.. nothing exciting happened
02:09:54 <lament> right, you want side-effecty messages for that to make any sense
02:10:12 -!- ehird_ has quit (Read error: 113 (No route to host)).
02:10:46 <wildhalcyon> I guess so, either that or I shouldn't have used a constant
02:11:10 <lament> self-modification is a side effect
02:12:10 <wildhalcyon> Oh, well that makes sense from a purely functional perspective
02:13:54 <lament> ; makes you lose the return value of the first message
02:14:11 <lament> so if there were no side effects, nothing happens
02:16:05 <wildhalcyon> Alright
02:27:27 -!- oklopol has quit (No route to host).
02:31:41 <wildhalcyon> Thanks lament. Im off to bed now
02:31:43 <wildhalcyon> g'night
02:32:20 -!- wildhalcyon has left (?).
02:43:10 -!- pikhq has quit (Read error: 110 (Connection timed out)).
02:49:44 -!- marshmallows has joined.
02:53:48 -!- kwertii has joined.
03:32:19 -!- okopol has joined.
03:38:47 -!- GreaseMonkey has joined.
03:45:09 -!- adu has joined.
03:59:45 -!- kwertii has quit ("bye").
03:59:57 -!- kwertii has joined.
04:04:42 -!- calamari has joined.
05:42:12 <RodgerTheGreat> http://veroz.vox.com/library/photo/6a00b8ea0717ec1bc000c2251f6997f219.html
05:53:09 -!- calamari has quit ("Leaving").
06:11:00 <adu> hi
06:18:43 <RodgerTheGreat> 'night folks
06:18:47 <RodgerTheGreat> cya adu
06:18:58 <adu> cya
06:19:04 -!- RodgerTheGreat has quit.
07:33:29 -!- adu has quit (Client Quit).
07:33:48 -!- kwertii has quit ("bye").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:03:53 -!- GreaseMonkey has quit ("getting off, has headache").
08:33:00 <AnMaster> does halting problem ask: "will halt in finite time" vs. "will run forever", where that may include infinite loop or such?
08:33:37 <AnMaster> if that is the case, you can partially solve the halting problem for befunge, any befuge program not containing, @, q, p or s will never halt I think
08:33:47 <AnMaster> any program with one of those may halt
08:33:49 <AnMaster> or may not
08:55:00 <marshmallows> you can also partially solve the problem by running the program and waiting to see if it halts or not
08:59:01 -!- immibis has joined.
08:59:33 <immibis> What happened to XKCD?
09:03:21 <marshmallows> attacked by a bear
09:04:52 <immibis> seriously?
09:29:12 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to).
10:15:12 <AnMaster> marshmallows, a 1 april joke I guess
10:17:01 <AnMaster> just front page joke
10:22:13 -!- AnMaster_ has joined.
10:36:55 -!- AnMaster has quit (Connection timed out).
10:37:20 -!- Iskr has joined.
10:55:58 <AnMaster_> marshmallows, there?
10:56:01 <AnMaster_> I finally got it
10:56:07 <AnMaster_> the xkcd thing
10:56:12 <AnMaster_> three web comics have rotated
10:56:14 -!- AnMaster_ has changed nick to AnMaster.
10:57:13 <Iskr> eheh yes
10:57:31 <Iskr> today it's on qwantz.com
10:57:37 <Iskr> =)
10:58:12 <AnMaster> basically three different webcomics are mixed up, so xkcd's front page display another comic, that other comic's front page display a third and the third one display xkcd
10:58:16 <AnMaster> Iskr, exactly
11:00:07 <AnMaster> Iskr, as I only read xkcd and userfriendly it took a while to find out
11:01:01 <SimonRC> have you seen the thing about the penguins yet?
11:01:13 <SimonRC> DOES NOT APPROVE
11:01:15 <AnMaster> SimonRC, eh what?
11:01:15 <SimonRC> PLEASE STOP MAKING COMICS
11:01:20 <SimonRC> um, oops, wrong button
11:01:30 <AnMaster> what are you talking about
11:01:35 <SimonRC> http://www.telegraph.co.uk/news/main.jhtml?xml=/news/2008/04/01/npenguin101.xml
11:01:44 <SimonRC> http://www.youtube.com/watch?v=23qDl1aH9l4
11:01:53 <SimonRC> 2 correct urls ^^
11:02:01 * SimonRC curses the X clipboards
11:03:10 <AnMaster> SimonRC, oh seen the google one?
11:03:14 <AnMaster> and the youtube one?
11:03:57 <AnMaster> for youtube. click on any "featured video" on front page
11:04:02 <SimonRC> the star wars rube golberg machine?
11:04:04 <AnMaster> http://www.google.com/virgle/index.html for google one
11:04:08 <AnMaster> SimonRC, just click on any
11:04:12 <AnMaster> see what happens
11:04:14 <SimonRC> ah
11:04:34 <AnMaster> I think it is some silly meme iirc?
11:04:42 <SimonRC> yes
11:18:14 <SimonRC> heh, the beeb have an iPlayer video about Rickrolling
12:12:34 <AnMaster> I decided to try some fuzz testing
12:12:40 <AnMaster> cat /dev/urandom | tr -Cd -- '-[:lower:][:digit:]\n\\ ;",.+*[](){}^<>@'\' | head -n 100 > fuzz.tmp
12:12:46 <AnMaster> for befunge, just playing around
12:12:58 <AnMaster> amzingly it turned out the program halted and produced output
12:13:06 <AnMaster> "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 i0 0 0 44 0 0 i32 0 0 0 44 0 0 0 i32 49 0 0 0 0 44 99 0 0 0 0 0 i32 49 \0 0 0 0 44 99 0 0 0 0 0 i32 49 \>0 0 0 0 0 0 44 99 108 0 0 0 0 0 0 i32 49 \>123 0 0 0 0 0 0 "
12:14:55 <AnMaster> I ran it in sandbox mode of course
12:15:47 <AnMaster> 121 threads
12:19:12 <AnMaster> hm and here is one producing a pattern like:
12:19:13 <AnMaster> 11 11
12:19:14 <AnMaster> 11 11
12:19:17 <AnMaster> and so on
12:26:59 <AnMaster> hah was useful found one that caused segfault, now to find out why
12:38:48 -!- sebbu has joined.
12:42:53 -!- marshmallows has quit ("Leaving").
13:26:36 -!- jix has joined.
13:46:07 <AnMaster> Deewiant, consider a program that is is just: 7kt
13:46:12 <AnMaster> now that cause issues
13:46:20 <AnMaster> valgrind screaming
13:46:30 * AnMaster wonders if ccbi handles that
13:46:56 <AnMaster> $ ~/ccbi/ccbi_linux/ccbi tests/wtf.b98
13:46:57 <AnMaster> Exited due to an error: at :0
13:47:00 <AnMaster> Deewiant, seems like it didn't
13:47:01 <AnMaster> hehehe
13:52:18 <Deewiant> probably runs out of memory, what's there to 'handle'? :-P
13:52:33 <AnMaster> Deewiant, hm would reflecting on that be allowed?
13:52:41 <Deewiant> no?
13:52:45 <AnMaster> hm
13:52:48 <Deewiant> if you put something smart after that it's fine
13:52:55 <AnMaster> eh?
13:53:02 <Deewiant> 7kt@
13:53:20 <Deewiant> perfectly valid
13:53:26 <AnMaster> hm
13:54:08 <Deewiant> makes 8 IPs, 7 of them go through the '7' before wrapping to the @, the original goes straight to the @, one goes through k7@
13:55:54 <AnMaster> hrrm
13:56:00 * AnMaster add kludges to k
13:58:28 <Deewiant> if you put something smart on the stack beforehand and put some #s and branches there so that the IPs separate that's an OK way of making a bunch of threads
14:05:02 <AnMaster> hrrm
14:12:13 -!- Judofyr has quit.
14:20:30 <AnMaster> Deewiant, in the case of k, what ip should execute next?
14:21:18 <AnMaster> Deewiant, because should it work as original ip spawned each time or as each new ip gets spawned?
14:25:19 <Deewiant> "this duplicate is added to the IP list such that it is executed for the first time before the parent IP is next executed. "
14:25:29 <AnMaster> yes indeed
14:25:36 <Deewiant> among all those that are added by k, I suppose the order is undefined
14:25:41 <AnMaster> indeed
14:25:43 <Deewiant> as long as they're all before the one that came to the k
14:25:44 <AnMaster> and would it matter?
14:25:53 <AnMaster> Deewiant, yes that they should be
14:25:58 <Deewiant> don't think it can matter
14:26:25 <AnMaster> Deewiant, I'm doing fuzz testing atm btw:
14:26:32 <AnMaster> cat /dev/urandom | tr -Cd -- '-[:lower:][:digit:]\n\\ ;",.+*[]{}^<>@`_|?:%$#!'\' | tr -d 'mhlior' | head -n 100 > fuzz.tmp
14:26:32 <AnMaster> valgrind --leak-check=full ./cfunge -St 9 fuzz.tmp
14:26:34 <AnMaster> over and over
14:26:43 <Deewiant> yep, I saw that above :-)
14:26:44 <AnMaster> aborting if the program gets into infinite loop
14:26:52 <AnMaster> Deewiant, found two bugs so far
14:26:57 <Deewiant> heh
14:26:58 <AnMaster> of about 50 tests or so
14:27:08 <Deewiant> what kind of stuff
14:27:23 <AnMaster> one where I checked for (unsigend int - other unsigned int) > 0
14:27:25 <AnMaster> XD
14:27:30 -!- Sgeo has joined.
14:27:31 <AnMaster> the other the t in k
14:27:48 <AnMaster> aiee
14:27:52 <AnMaster> ▒┴␋␍@├┤│ ·/␌/␌°┤┼±␊/├┤┼┐ $
14:27:55 <AnMaster> my terminal now
14:27:59 * AnMaster uses reset to reset it
14:29:20 <Deewiant> I'd make a script which runs that repeatedly, piping cfunge to /dev/null, and only stopping when you hit a segfault
14:30:14 <AnMaster> Deewiant, well some programs do have issues like infinite loop
14:30:20 <AnMaster> so I'd need a timeout of some kind
14:30:37 <Deewiant> of course
14:30:38 <Deewiant> run for 1 second
14:30:47 <AnMaster> Deewiant, also the t in k wasn't a segfault, it was just valgrind "invalid read"
14:30:55 <Deewiant> ah
14:31:01 <Deewiant> well, you can check for whatever of course
14:31:07 <Deewiant> run once normally, check for segfault
14:31:12 <Deewiant> run once under valgrind, check for segfault or errors
14:31:22 <Deewiant> and any other mem/whatever testers you want
14:31:26 <AnMaster> things do segfault under valgrind too normally
14:31:40 <AnMaster> I haven't seen valgrind ever preventing a segfault from happening?
14:32:23 <Deewiant> I have
14:32:29 <AnMaster> hm
14:32:34 <Deewiant> and programs that segfault only in valgrind
14:32:39 <Deewiant> weird stuff
14:32:56 <AnMaster> well the latter yes
14:33:09 <AnMaster> if I link against boehm-gc it will segfault under valgrind
14:33:20 <AnMaster> not odd considering both mess with memory in odd ways
14:34:34 <AnMaster> tix=0 tid=0 x=324 y=0: (32)
14:34:34 <AnMaster> tix=0 tid=0 x=325 y=0: (32)
14:34:36 <AnMaster> huh
14:34:39 <AnMaster> that shouldn't happen
14:34:58 <AnMaster> it is a known issue that is does not print several space in row currently
14:34:59 <AnMaster> so wtf
14:35:26 <AnMaster> oh wait
14:35:30 <AnMaster> it was in a string
14:35:32 <AnMaster> that explains it
14:37:33 <AnMaster> Deewiant, btw some output quite funny stuff
14:37:35 <AnMaster> this was one:
14:37:36 <AnMaster> http://rafb.net/p/ZtwV5r41.html
14:37:45 <AnMaster> looks like a hillside viewed from the side IMO
14:37:51 <Deewiant> heh
14:38:13 <Deewiant> wait long enough and you'll get the works of Shakespeare ;-)
14:38:14 <AnMaster> http://rafb.net/p/qq4XGt40.html was another such
14:38:17 <AnMaster> Deewiant, XD
14:38:59 <AnMaster> Deewiant, I wonder, you know, those that study evolving programs, using simulated genetics thing?
14:39:06 <AnMaster> how would that work on befunge?
14:39:11 <AnMaster> maybe a project for you?
14:39:16 <Deewiant> :-P
14:39:33 <Deewiant> I've got enough work as it is :-)
14:39:36 <AnMaster> oh one that prints a endless stream of "ggggggggggggggggggggg" and so on
14:39:59 <AnMaster> using a few thousands instructions for each g
14:40:10 <Deewiant> hah
14:40:52 <AnMaster> tix=64 tid=66 x=20 y=1: N (1128682830) <- the thing inside () is the ASCII code, I guess (char) wraps around heh
15:07:23 <Sgeo> Well, I really have to go now. Bye all!
15:10:06 <AnMaster> Deewiant, so I made an option to compile with alarm that causes program abort in case of too long running program
15:10:12 <AnMaster> but yes I made a script now
15:10:36 <AnMaster> Deewiant, ulimit -t didn't really work for a very simple reason: valgrind summary was not showed then
15:11:33 <AnMaster> whoa another segfault
15:12:05 <AnMaster> ==23783== Warning: client switching stacks? SP change: 0x7FEFFF1D0 --> 0x5E4CD4740
15:12:06 <AnMaster> ==23783== to suppress, use: --max-stackframe=9029462672 or greater
15:12:06 <AnMaster> ==23783== Invalid write of size 8
15:12:06 <AnMaster> ==23783== at 0x4046E6: StackStackBegin (stack.c:364)
15:12:06 <AnMaster> ==23783== Address 0x5e4cd4738 is on thread 1's stack
15:12:06 <AnMaster> huh
15:13:03 <AnMaster> err wtf
15:13:10 <Deewiant> heh
15:13:27 <AnMaster> Deewiant, random crash or infinite loop
15:13:38 <AnMaster> a ? instruction duh
15:13:54 -!- Sgeo has quit ("Ex-Chat").
15:14:52 <AnMaster> ah *replaces with <*
15:21:08 <AnMaster> Deewiant, ccbi gives "Exited due to an error: at :0" at that thing
15:21:45 <AnMaster> at same point that cfunge segfaults
15:21:55 <AnMaster> Deewiant, oh wait on { does ccbi allocate stuff on the stack?
15:22:01 <AnMaster> while copying elements?
15:23:35 <AnMaster> Deewiant, this cause the issue for both ccbi and cfunge:
15:23:37 <AnMaster> yy$c{{{
15:24:42 <Deewiant> well hmm, I wonder why
15:24:58 <Deewiant> trying to move 1128481353 elements
15:25:05 <AnMaster> Deewiant, yes indeed
15:25:26 <AnMaster> Deewiant, mine allocates a variable length array on the stack and then overflows it
15:25:38 <AnMaster> not sure if the heap would help
15:25:47 <AnMaster> it would run out of memory either way right?
15:27:41 <Deewiant> of course
15:27:52 <Deewiant> mine uses the heap in all such cases
15:28:10 <AnMaster> Deewiant, according to the specs you should reflect
15:28:14 <Deewiant> nope
15:28:20 <Deewiant> { may act like r if no more memory is available for another stack.
15:28:24 <Deewiant> two things
15:28:26 <AnMaster> right may
15:28:27 <Deewiant> first, 'may'
15:28:35 <Deewiant> second, there is mem for the other stack
15:28:45 <Deewiant> the problem is the way I do {
15:28:46 <AnMaster> actually why the temp storage hrrm
15:28:55 <Deewiant> If the SOSS contains k elements, where k is less than n, the k elements are transferred as the top k elements and the remaining bottom (n-k) elements are filled in with zero-value cells.
15:28:56 <AnMaster> I don't need it in fact
15:29:10 <Deewiant> what I do is I just pop n elements from the SOSS
15:29:29 <Deewiant> and they'll become zeroes after the SOSS is emptied, of course
15:30:11 <Deewiant> but they need to be put in temp storage and allocating a 4-gigabyte array doesn't work
15:30:18 <Deewiant> but in any case, it doesn't matter
15:30:27 <Deewiant> since they wouldn't fit on the stack
15:30:30 <AnMaster> actually if I can't allocate temp storage, there is no space for the new stack either
15:30:35 <Deewiant> as growing the stack to 4 gigabytes doesn't work either :-P
15:34:41 <AnMaster> hm what about } then
15:35:01 <AnMaster> transfering 1128481353 elements that way doesn't work either
15:35:13 <AnMaster> but can you reflect on that?
15:35:14 <AnMaster> Deewiant, ?
15:35:21 <Deewiant> up to you
15:35:30 <Deewiant> can you detect whether the host machine has enough mem for that?
15:36:57 <AnMaster> Deewiant, well other programs can use memory, then linux will overcommit memory and so on
15:37:03 <AnMaster> so hard to say if it will work in advance
15:37:20 <AnMaster> but I will make it reflect in both cases
15:37:30 <AnMaster> Deewiant, I *can* check if malloc returns NULL
15:37:54 <Deewiant> AnMaster: you'd have to check every time you grow the stack
15:38:02 <Deewiant> if you want to, I guess that's fine
15:38:06 <Deewiant> the alternative is to crash hard.
15:38:14 <Deewiant> the specs, as usual, say nothing.
15:38:16 <AnMaster> well yes I mean, I can check on allocating temp storage
15:38:18 <AnMaster> for transfer
15:38:29 <Deewiant> but you'd have to check on growing the stack as well
15:38:36 <Deewiant> because you need to move all that temp to the stack :-P
15:38:47 <AnMaster> I do that already
15:39:00 <AnMaster> in that case I simply abort()
15:39:20 <AnMaster> because no funge program will ever be coded to accept reflect on, say, 5
15:39:31 <Deewiant> you can't know that
15:39:32 <Deewiant> :-P
15:39:35 <AnMaster> so normally reflecting on push is just pointless
15:39:41 <AnMaster> and will mess up stuff even more
15:39:50 <AnMaster> I just perror and abort
15:40:02 <AnMaster> on stack transfer however
15:41:10 <AnMaster> Deewiant, the thing that really confused me was valgrind's cryptic message when I overflowed stack space
15:41:24 <Deewiant> seems clear enough to me
15:41:29 <AnMaster> I think it is possible some kernel internals reallocated stack to make it grow
15:41:34 <AnMaster> first time at least
15:48:34 <AnMaster> there mine is fixed
15:48:35 <AnMaster> hehe
15:48:37 <AnMaster> Deewiant, ^
15:49:13 <Deewiant> AnMaster: ?
15:49:24 <AnMaster> Deewiant, as in "does not crash"
15:49:35 <AnMaster> oh and why does CCBI give such cryptic errors?
15:49:52 <Deewiant> I /think/ it's an error thrown by the RTS
15:50:03 <AnMaster> RTS?
15:50:10 <Deewiant> since it's an OutOfMemoryError there's no guarantee that there's enough memory to allocate an error message
15:50:13 <Deewiant> so it has no data
15:50:18 <Deewiant> run-time system
15:50:20 <AnMaster> aha
15:50:51 <AnMaster> a lot of programs/libraries pre-allocates stuff for that in a static array
15:51:02 <Deewiant> well there's not really much to say
15:51:14 <Deewiant> you know it's an OOM exception since it has no msg :-)
15:52:35 <Deewiant> and like said, I could fix CCBI (would be trivial, wrap try {} around the whole func instead of just the new stack creation bit), but I don't think there's much point
15:53:05 <Deewiant> what should be done is checking it for every instruction
15:53:17 <AnMaster> which would be slow
15:53:24 <Deewiant> which would be mostly pointless
15:53:44 <Deewiant> at this point, I defer to people: if somebody wants to use CCBI with an app using that much memory, I'll implement it
15:53:44 <AnMaster> ah a false positive
15:53:47 <Deewiant> but not until then :-P
15:53:59 <AnMaster> I check if exit code is greater than 100, and not the one of alarm
15:54:09 <AnMaster> so false positives can happen
15:54:22 -!- ehird has joined.
15:54:46 <AnMaster> Deewiant, still a good script
15:55:18 <Deewiant> I know, it was my idea ;-)
15:55:33 <AnMaster> yeah but my implementation
15:55:34 <AnMaster> ;P
15:56:36 <ehird> installing realplayer on linux at the last minute is not fun
15:56:58 <ehird> hurry UP you stupid computer
15:58:06 -!- ais523 has joined.
15:58:30 <ehird> hello, ais523
15:58:36 <ais523> hi, ehird
15:58:46 <ehird> DID YOU KNOW: bbc's online radio player is hell to get working on linux
15:59:10 * ehird should probably rant about it other places than #esoteric though
15:59:11 <ehird> ;)
16:01:57 <AnMaster> Deewiant, want the script? it depends on the interpreter existing with the return code of alarm to detect "time out"
16:03:16 <AnMaster> also I haven't tested if return codes for those are same on other systems
16:06:17 <Deewiant> nah, I'm good as long as you test whatever crashes cfunge on CCBI as well ;-)
16:07:42 <SimonRC> http://www.nethack.org/2008-04-01.html
16:07:48 <SimonRC> ooh, new NH release
16:08:17 <AnMaster> wow
16:08:24 <ehird> is it at 1.0 yet
16:08:26 <ehird> :p
16:08:29 <AnMaster> or joke?
16:08:33 <ehird> web integration?
16:08:33 <AnMaster> ehird, duh it is 3.x
16:08:34 <ehird> hah
16:08:35 <ehird> april fools
16:08:44 <AnMaster> yeah
16:08:54 <AnMaster> ehird, I just opened it
16:08:56 <ehird> internet jackass day is fun!
16:09:11 <AnMaster> ehird, ah yes inspircd's one was very fun
16:09:27 <ehird> http://mail.google.com/mail/help/customtime/index.html Brilliant!
16:09:28 <AnMaster> http://www.inspircd.org/forum//showthread.php?t=2978
16:09:31 <AnMaster> err
16:09:37 <AnMaster> http://www.inspircd.org/forum/showthread.php?p=4972
16:09:39 <AnMaster> I meant
16:09:47 <AnMaster> ehird, yes and saw the Virgle thing?
16:09:53 <AnMaster> Virgel
16:09:54 <AnMaster> I mean
16:09:56 <ehird> hmm
16:09:58 <ehird> where's slashdots
16:09:59 <AnMaster> err spelling
16:10:04 <ehird> AnMaster: no i just got online
16:10:09 <AnMaster> ehird, I don't read slashdot
16:10:13 <ehird> neither do i
16:10:14 <AnMaster> ehird, anyway google did several this year
16:10:15 <ehird> except on april 1
16:10:23 <AnMaster> ehird, Virgle was one
16:10:31 <ehird> AnMaster: uuugh, i hate that inspircd community
16:10:32 <ehird> 'For those of you who didn't figure out already, (DUH) this is an April Fools joke :-)'
16:10:44 <ehird> for everyone too retarded to be of any use to anyone, this was a joke! ha! ha! ha!
16:10:47 <ehird> :D
16:11:01 <AnMaster> ehird, you know both w00t and Brain are developers btw
16:11:11 <ehird> it's still lame to point out april fools jokes :<
16:11:16 <AnMaster> that comment wasn't there this morning though
16:11:21 <AnMaster> and Brain should have waited
16:11:25 <AnMaster> until tomorrow IMO
16:13:11 <ehird> should've never posted, its more fun when people still don't get it days later
16:13:48 <ehird> HAHA wow
16:13:50 <ehird> youtube wins
16:13:54 <ehird> try one of the featured videos
16:14:21 <AnMaster> ehird, already know that
16:14:30 <AnMaster> waiting for the RFC
16:14:37 <ehird> oh joy, the rfc!
16:14:48 <ehird> it may be after 12am here, but on the internets the fools have only just begun :D
16:15:00 <AnMaster> it isn't out yet
16:15:01 <AnMaster> sigh
16:15:04 <AnMaster> tis apr 1 17:15:03 CEST 2008
16:15:07 <AnMaster> already late here
16:15:07 <AnMaster> :/
16:15:15 <ehird> 16:15
16:15:21 <ehird> no problem though
16:15:28 <ehird> i can still enjoy the ones
16:15:39 <AnMaster> the ones?
16:16:15 <ehird> AnMaster: on the internets
16:16:57 <AnMaster> ah
16:17:02 <AnMaster> internets ....
16:17:03 <AnMaster> :/
16:17:50 <ehird> hmm
16:17:55 <ehird> ais523: did you see the bbcs april fool?
16:17:57 <ehird> the flying penguins
16:18:08 <ais523> ehird: I haven't seen any of them yet
16:18:16 <ais523> but I hope that's a Linux joke
16:18:17 <ehird> ais523: it was on bbc1 or something earlier today
16:18:23 <ehird> ais523: and no, unfortunately
16:18:26 <ehird> obviously not
16:18:30 <ehird> it was on the BBC's main tv channel
16:18:31 <ehird> ;p
16:19:24 <ehird> ais523: http://www.bbc.co.uk/iplayer/page/item/epeng001.shtml?src=ip_potpw
16:19:51 <AnMaster> "Sorry, this programme is only available to play in the UK (Why?)"
16:19:53 <AnMaster> that's all?
16:19:54 <AnMaster> ehird, ?
16:20:05 <ehird> AnMaster: uh, because it's the bbc
16:20:12 <AnMaster> so most ppl can't see it
16:20:15 <ehird> legal issues etc with broadcasting
16:20:18 <AnMaster> I read about it on another site though
16:20:20 <ehird> BBC = british broadcasting corporation
16:20:25 <ehird> they are a non-profit
16:20:26 <AnMaster> ehird, I know what BBC is
16:20:29 <ehird> well
16:20:30 <ehird> kind of non-profit
16:20:35 <ehird> a little bit is non-profit
16:20:36 <AnMaster> it's public service yes
16:20:37 <AnMaster> ..
16:20:37 <ehird> pretending to be, at least
16:20:51 <ehird> but with all the corporation on top of it i actually have no idea how you can define the BBC's status exactly
16:20:51 <AnMaster> we got public service TV/radio in Sweden too
16:21:21 <ais523> the reason being that all British people have to pay tax to the BBC to be allowed to watch their programs
16:21:25 <ehird> yeah, ais523
16:21:30 <ais523> you can get out of it, but only if you can prove that you don't have a television
16:21:32 <AnMaster> ok I know how to work around that
16:21:37 <AnMaster> tor exit node in UK
16:21:38 <AnMaster> :)
16:21:46 <ehird> AnMaster: that'll be sooo good for streaming videos..
16:21:51 <ehird> lovely and zippy and fast
16:21:54 <AnMaster> ehird, yeah that's the downside :(
16:23:06 <ehird> can you listen to bbc streaming radio outside of uk?
16:23:07 <ehird> i imagine not
16:23:14 <AnMaster> yes I think you can
16:23:17 <AnMaster> or could at least
16:23:20 <AnMaster> a year ago or so
16:23:40 <AnMaster> and you could watch TV outside UK before too, at lower resolution
16:23:47 <ehird> Rights agreements mean that BBC iPlayer television programmes are only available to users to download or stream (Click to Play) in the UK. However, BBC Worldwide is working on an international version, which we will make available as soon as possible.
16:23:47 <ehird>
16:23:47 <ehird> Radio programmes are available outside the UK in addition to podcasts at http://www.bbc.co.uk/radio/podcasts/directory/. Many BBC News programmes are available for viewers outside the UK at http://news.bbc.co.uk/2/hi/video_and_audio/default.stm, BBC Sport highlights are available at http://news.bbc.co.uk/sport and BBC Radio stations are available at http://www.bbc.co.uk/radio/
16:24:17 <AnMaster> yeah it was news I watched
16:24:27 <ais523> iPlayer has massive DRM, though
16:24:33 <AnMaster> I see
16:24:38 <AnMaster> so won't ever work on linux?
16:24:46 <ais523> well, all the Linux people complained
16:25:00 <ais523> so they made a 'streaming' version using Flash, which can of course be captured by tech-savvy people
16:25:09 <AnMaster> ah
16:25:19 <AnMaster> yeah, of course it can :)
16:25:26 <ais523> but that doesn't work on the iPhone, so they also made a completely DRM-free version with a user-agent check to see if you're an iPhone
16:25:32 <ais523> guess how well that secures it...
16:25:44 <ehird> ais523: probably the drm was required
16:25:46 <ehird> beyond their control
16:25:51 <ais523> ehird: yes
16:25:55 <ehird> btw: PHP is funny! "9999999999999999" == "10000000000000000", "0xa" == "1e1"
16:25:58 <ais523> but they shouldn't have asked Microsoft to design it
16:26:16 <ehird> ais523: meh. the flash version works ok for me
16:26:20 <ehird> and i can always rip em
16:26:36 <AnMaster> whoo, make install of libxslt fails with make -j2
16:26:36 <AnMaster> heh
16:26:50 <ehird> AnMaster: lots of things do
16:26:52 <ehird> recursive make, etc
16:27:03 <ehird> not like 'make' takes a long time ..
16:27:03 <AnMaster> ehird, well I have seen recursive make that works with it
16:27:11 <Deewiant> ehird: "0" == false == "" != "0"
16:27:18 <AnMaster> ehird, depend on what you are building
16:27:26 <AnMaster> ehird, say, firefox?
16:27:34 <AnMaster> or qt?
16:27:38 <ais523> AnMaster: C-INTERCAL also fails with make -j2, probably because the dependencies on header files generated by bison are slightly wrong
16:28:03 <AnMaster> hm I wonder if I can make something not build without -j2
16:28:13 <AnMaster> and not "work sometimes" with -j2
16:28:17 <AnMaster> but always work with it
16:28:27 <ehird> Deewiant: yeah, but ... "0xa" == "1e1"
16:28:32 <ais523> AnMaster: just write the dependencies in such a way that there are hidden dependencies that are implied by the dependencies you've written, but not stated
16:28:46 <AnMaster> ais523, yes but that could fail under -j2 too
16:28:48 <ais523> ehird: 0xa==1e1 is true in C too
16:28:52 <Deewiant> ehird: each integer in a PHP array takes 68 bytes of storage
16:28:58 <ehird> ais523: not in strings
16:29:00 <Deewiant> ais523: yeah, but these are strings.
16:29:05 <ehird> Deewiant: yeah, i read reddit too ;)
16:29:11 <ais523> AnMaster: sorry, I misread your question
16:29:31 <ais523> Deewiant: I noticed, but string comparison of numbers is fine if you have a separate compare-as-strings operator
16:29:42 <ais523> in perl, "02" == "2", but "02" ne "2"
16:29:54 <AnMaster> ais523, so would it be possible?
16:30:06 <ais523> I'm thinking
16:30:19 <ais523> what about writing a hidden dependency
16:30:27 <ehird> ais523: === compares type&value in php
16:30:28 <ehird> but...
16:30:28 <AnMaster> yes you will always need that
16:30:29 <ais523> but having the file that's needed rmd at the end of the step
16:30:32 <ehird> "0xa" == "1e1"!!!!!!
16:30:46 <AnMaster> ais523, hm still I think order may fail
16:30:57 <AnMaster> unless maybe build an app, and have make run it wait for a file to exist or something like that
16:30:58 <ais523> so I have thing3:thing1 and thing2:thing1
16:31:21 <ais523> thing3 creates thing2.h at the start of the instructions and deletes it at the end
16:31:22 <AnMaster> ais523, still you can't know in what order they will be exectued
16:31:34 <ais523> and thing2 needs thing2.h somewhere in the middle
16:31:50 <AnMaster> ais523, hm you would still need some kind of mutex
16:32:06 <ais523> you can't know for certain, but if those are the only two things that depend on thing1 and everything else depends on one of those, then make would be stupid not to put things in the order where the -j2 works
16:32:14 <AnMaster> maybe building an app first and have that app called in both rules to sync them in some way?
16:32:24 <ais523> AnMaster: named pipes
16:32:30 -!- Judofyr has joined.
16:32:33 <AnMaster> ais523, uhu?
16:32:37 <ais523> have one rule write to a named pipe
16:32:41 <ais523> and another rule read from it
16:32:43 <AnMaster> a fifo?
16:32:45 <ais523> yes
16:32:52 <AnMaster> hm
16:32:54 <AnMaster> ok
16:32:54 <ais523> they'll both block until they're in sync
16:32:56 <AnMaster> interesting
16:33:05 <ais523> but without -j2 you'll get an infinite loop, because the one rule will block forever
16:33:10 <AnMaster> yeah
16:33:23 <AnMaster> ais523, and all package maintainers will forever curse me ;)
16:33:35 <Deewiant> ehird: in essence, == in PHP is crap, never use it
16:33:51 <AnMaster> Deewiant, not even when comparing numbers?
16:34:01 <ehird> Deewiant: In essence, PHP is crap, never use it
16:34:05 <AnMaster> say a=3; if ($a == 3)
16:34:14 <ehird> AnMaster: you mean $a=3
16:34:17 <ehird> ha! ha! ha!
16:34:21 <Deewiant> AnMaster: only if you're 110% sure they're both numbers
16:34:22 <AnMaster> oh
16:34:24 <ehird> yes, you must prefix every variable, everywhere with $
16:34:27 <ehird> it isn't even a sigil
16:34:28 <AnMaster> ehird, I'm not PHP programmer
16:34:28 <Deewiant> AnMaster: but if you are, might as well use ===...
16:34:29 <ehird> like % or @
16:34:30 <ehird> it's $
16:34:33 <ehird> for no reason
16:34:36 <ehird> every variable must start with $
16:34:37 <AnMaster> Deewiant, eh ===?
16:34:38 <ehird> oh
16:34:41 <ehird> and variable variables!
16:34:48 <Deewiant> AnMaster: essentially, typesafe ==
16:34:50 <ehird> $$foo, where $foo = 'hello', is $hello
16:34:51 <ehird> :D
16:34:56 <ehird> i believe they can nest
16:35:12 <AnMaster> oh god
16:35:15 <ehird> yep
16:35:18 <ehird> its so funny
16:35:42 <Deewiant> AnMaster: or rather, returns false if they're of differing types, so not really 'safe' but at least it's always right
16:35:56 <AnMaster> hm the fuzz test isn't finding anything new any longer
16:36:22 <AnMaster> anyway it isn't useful for fingerprints or IO
16:37:01 <Deewiant> you can test fingerprints, too, just prepend "ASDF"4( to the program
16:37:05 <ehird> oh god this REM song again
16:37:07 <ehird> bloody hell
16:37:19 * ehird should shout at mplayer instead of konversation
16:37:21 <ehird> probably.
16:37:21 <AnMaster> Deewiant, true
16:37:53 <AnMaster> Deewiant, need to know what fingerprint I want to test, not easily to do randomly though
16:38:31 <AnMaster> Deewiant, and for IO I'm too lazy to set up a chroot for this
16:38:34 <Deewiant> AnMaster: just run a couple (dozen/hundred/whatever) times for each print
16:38:41 <ehird> hmm
16:38:45 <ehird> i have a file in ~ called 1
16:38:51 <ehird> another called _#84*\\1-:0\\:0\\#_5553ppppppppppppppppppppppppp
16:39:00 <ehird> and one called ,,,,,[-
16:39:13 -!- cherez has quit (Read error: 113 (No route to host)).
16:39:15 <AnMaster> ehird, those latter look like funge
16:39:17 <ais523> ehird: I often accidentally create files called 1
16:39:27 <ais523> it's easy to type 2>1 rather than 2>&1 by mistake
16:39:37 <AnMaster> ehird, yeah but that doesn't explain the other two
16:39:58 <AnMaster> eh
16:39:59 <AnMaster> ais523, ^
16:40:18 <ais523> hmm... the second one looks very like a Funge program in some ways, but the backslashes seem to imply it isn't
16:40:18 <ehird> the second-last looks like funge
16:40:20 <ehird> the last is brainfuck
16:40:27 <AnMaster> yeah
16:40:41 <ais523> ,,,,, isn't very useful Brainfuck anyway in most cases
16:40:46 <AnMaster> ais523, \ exists in funge
16:40:53 <AnMaster> and well ls may escape \
16:40:54 <AnMaster> iirc
16:40:56 <ais523> AnMaster: always in pairs?
16:41:02 <ais523> oh
16:41:09 <AnMaster> ais523, as I said, something may have escaped it
16:41:25 <ais523> what's the betting that there were < or > characters at the ends of the Brainfuck or (presumably Unefunge) programs?
16:41:28 <AnMaster> ais523, but no, \ is used to swap top items of stack
16:41:58 <AnMaster> ais523, for funge, why not, befunge at least
16:42:01 <ais523> so yes, the second one is probably Unefunge assuming that the \ have been doubled by something
16:42:03 <AnMaster> to wrap
16:42:15 <ais523> because it would be unlikely to type Befunge in on the command line...
16:42:18 <AnMaster> eh
16:42:20 <ehird> ais523: Wow. apparently BBC Northwest rickroll'd the news.
16:42:34 <ehird> that's just crazy
16:42:47 <AnMaster> ais523, to me it looks quite like that "sucide program" someone made
16:42:51 <AnMaster> not exactly but close
16:42:58 <AnMaster> ie, it removed itself from memory
16:43:01 <ais523> the row of ps is what makes it look like that
16:43:06 <AnMaster> indeed
16:43:34 <ehird> wow...
16:43:38 <AnMaster> ehird, what?
16:43:39 <ehird> webcomics are redirecting to each other
16:43:43 <ehird> that's confusing
16:43:45 <AnMaster> ehird, ah yes
16:43:50 <AnMaster> xkcd and two other
16:43:51 <AnMaster> hehe
16:43:52 <ehird> xkcd.com takes 3 hops to actually get to xkcd
16:44:03 <ehird> xkcd redir> questionablecontent redir> dinosaur comics redir> xkcd
16:44:13 <AnMaster> ehird, I found out hours ago
16:44:34 * ais523 checks to see what Wikipedia are doing
16:44:36 <ehird> i just got on the interwebs earlier this hour
16:44:37 <ehird> :(
16:44:42 <AnMaster> ais523, they do something?
16:44:47 <AnMaster> haven't noticed before
16:45:10 <ehird> Ima Hogg
16:45:11 <ehird> lmao
16:45:11 <ais523> AnMaster: generally they feature an article with the Main Page summary written to look like it's an April Fools' joke, but is actually true
16:45:11 <ehird> AnMaster: featured article
16:45:18 <ais523> last year they featured George Washington
16:45:27 <ehird> ais523: not the president, though
16:45:29 <ais523> but it was a different person with that name, not the American president
16:45:29 <AnMaster> and?
16:45:43 <ehird> jesus
16:45:46 <ehird> Talk:Main_Page
16:45:48 <ehird> has a notice about it
16:45:53 <ehird> i hate the world :(
16:47:09 <ais523> some admins are trying harder: see http://en.wikipedia.org/w/index.php?title=MediaWiki:Tagline&diff=next&oldid=202527747 for instance
16:47:19 <ais523> for those who don't know, that line's on every page on the entire wiki
16:47:59 <AnMaster> yeah I know
16:48:09 <AnMaster> it's in the MediaWiki namespace after all
16:48:50 <ais523> heh, the on this day is quite good as well
16:48:53 <ehird> ais523: hmm
16:48:56 <ehird> that revert is :(
16:49:06 <ais523> there have been edit wars there all day
16:49:11 <ais523> and admins are getting blocked, as usual
16:49:19 <AnMaster> eh
16:49:19 <ais523> April 1 must be the record day for admin blocks
16:49:20 <AnMaster> what?
16:49:24 <ehird> bureaucracy..
16:49:27 <AnMaster> oh?
16:49:29 <AnMaster> weird
16:49:30 <ais523> they're normally given an expiry time of 00:01 April 2
16:49:38 <AnMaster> ah
16:52:38 <ehird> oh yay, I Might Be Wrong
16:56:54 <ais523> wow: http://www.channelregister.co.uk/2008/03/31/microsoft_india_tax_ruling/
16:57:01 <ais523> it's dated March 31, so is hopefully true
16:58:20 <ehird> march 31 is popualr for april fools
16:58:21 <ehird> unfortunately
16:58:29 <ehird> its not like the Register is often accurate though
16:59:28 <SimonRC> the BBC have an iPlayer thing about Rick "Roll" Astley
17:00:32 <SimonRC> http://news.bbc.co.uk/player/nol/newsid_7320000/newsid_7323500/7323544.stm?bw=bb&mp=wm&news=1&bbcws=1
17:01:46 <ehird> SimonRC: apparently bbc northwest rickrolld the news
17:02:05 <ehird> maybe that's it
17:02:06 <SimonRC> um, how?
17:02:10 <ehird> not watching, busy listening to the radio
17:02:17 <ehird> SimonRC: um, by showing rickroll on the news
17:02:31 <SimonRC> surely it doesn't count unless you are tricked into clicking it?
17:02:51 <SimonRC> BTW, all YouTube's featured videos redirected to rr too
17:02:56 <ehird> HAHAHA
17:02:57 <SimonRC> on the fron page, at least
17:03:01 <ehird> Now playing: 'Radio Head by Talking Heads'
17:03:05 <ehird> that's just teasing
17:03:56 <SimonRC> then there're the flying penguins...
17:04:09 <SimonRC> including video on YouTube
17:05:12 <SimonRC> of course, the bbc news rr is on YT: http://www.youtube.com/watch?v=spOOo0oyM5U
17:05:31 <ehird> i haven't seen the usual stupid ones yet
17:05:32 <ehird> thank god
17:37:16 -!- timotiis has joined.
17:38:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
17:53:26 -!- okopol has changed nick to oklopo.
17:53:28 -!- oklopo has changed nick to oklopol.
18:10:58 -!- RodgerTheGreat has joined.
18:11:12 <RodgerTheGreat> hey everyone
18:11:20 <ehird> hi
18:11:25 <ais523> RodgerTheGreat: hi
18:11:37 <RodgerTheGreat> hi ehird, ais523- what's up, guys?
18:11:47 <ais523> ok, what I'm going to do is this:
18:12:16 <ais523> C-INTERCAL 0.28 has just been released, so I'm going to announce the rival compiler CLC-INTERCAL instead
18:12:35 <ais523> the latest version available at http://www.intercal.ukfsn.org/download/CLC-INTERCAL-1.-94.-2/ and claims to be dated today
18:12:42 <ais523> I'm then going to let ehird announce the compiler I wrote
18:13:57 <ehird> haha
18:14:09 <ehird> that will be confusing :D
18:14:31 <ehird> that will be my first comp.lang.intercal post
18:14:33 <ehird> scary
18:14:57 <ais523> oh, I thout you were just goign to announce it here
18:15:05 <ehird> ah, that's a good point
18:15:11 <ehird> but you've just told everyone
18:15:14 <ais523> and it's actually alt.lang.intercal because nobody seriously thought the Big 8 would approve it
18:15:17 <ais523> ehird: that was the joke
18:15:21 <ehird> ah
18:15:22 <ehird> :D
18:15:23 <ais523> but I didn't say where it was
18:15:27 <ais523> so it isn't really released
18:15:28 <ehird> that's a good point
18:15:50 <ehird> but isn't the joke kind of thin now, after me just misunderstanding it and you explaining what's funny about it? :p
18:16:22 <ais523> yes
18:16:45 <ais523> wait a moment
18:17:53 <ehird> actually, even if you had suggested usenet, i'd have to post through google groups and that would be embarrasing ;)
18:17:59 <ehird> don't think my isp offers usenet
18:18:56 <ais523> C-INTERCAL is available at <http://www.intercal.ukfsn.org/download/ick-0-28.tgz>, <http://intercal.freeshell.org/download/ick-0-28.tgz>, and <http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz>
18:19:31 <ehird> heh, did they just put it on freehsell?
18:19:31 <ehird> :D
18:19:48 <ais523> the changelog is at <http://elliotthird.org/mirror/c-intercal/ick-0.28/NEWS.txt>
18:19:50 <ais523> ehird: yes
18:19:59 <ais523> but it's nice to have multiple mirrors
18:20:00 <ehird> i am fasterr! ;)
18:20:02 <ehird> yes
18:20:03 <ehird> it is
18:20:13 <ais523> now I have to compose a witty message
18:20:29 <ehird> ais523: you have donated C-INTERCAL to the gnu project
18:20:31 <ais523> quoting continuation.i will probably be good
18:20:34 <ais523> ehird: where?
18:20:40 <ehird> ais523: i meant as a witty message
18:20:43 <ehird> not really that funny though
18:21:01 <ehird> hmm
18:21:04 <ais523> ESR got there first:
18:21:07 <ais523> "
18:21:07 <ais523> Someday, maybe, this will be made part of GNU.
18:21:07 <ais523> ;; But probably not unless they take many mind-eroding drugs first.
18:21:09 <ais523> "
18:21:11 <ehird> i'll put a README.txt on my site
18:21:18 <ais523> comment in http://elliotthird.org/mirror/c-intercal/ick-0.28/etc/intercal.el
18:21:22 <ehird> in case anyone wonders who the hell this elliotthird guy is
18:21:30 <ehird> and what he's doing hosting c-intercal expanded tarballs
18:21:51 <ehird> ais523: ah :)
18:22:06 <ehird> ais523: you could say that you are going to reimplement seaside in it
18:22:15 <ehird> but that probably won't be familiar with most a.l.intercal people
18:22:34 <ehird> maybe just something along the lines of C-INTERCAL being a pioneer in the next generation of web development as you can use continuations with them?
18:22:43 <ais523> I'll say that you challenged me to write a continuation library in INTERCAL
18:22:47 <ehird> and a blurb about productivity benefits over Java & COBOL ("two other well-known web languages")
18:22:48 <ais523> and that I managed it in 24 hours
18:22:53 <ais523> nobody will believe that
18:22:53 <ehird> ais523: yes!
18:23:09 <ehird> 'INTERCAL is 10x more rapid than Java and COBOL, and 3x faster than Ruby.'
18:23:17 <ehird> also a crap joke
18:23:21 <ehird> (Ruby is slow as molasses)
18:23:25 <ehird> make your own jokes
18:23:26 <ehird> ;)
18:23:47 <ehird> ais523: hmm, should i serve .doc as text/plain?
18:23:51 <ehird> right now it's serving as a word file
18:23:54 <ais523> probably
18:24:02 <ais523> that extension scheme wasn't my fault
18:24:09 <ais523> it's legacy stuff
18:24:17 <ais523> probably dates from before Word became popular...
18:24:32 <ehird> http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/t_tet
18:24:33 <ehird> what is 'tet'?
18:24:40 <ais523> not sure
18:24:48 <ais523> that file has no extension
18:24:57 <ais523> and is a data file either for the Intercal FFT, or for the Game of Life program
18:24:57 <ehird> Content-Type: application/msword
18:24:58 <ehird> i'll fix that
18:25:13 <ehird> my server is ready to handle just about anything right now though
18:25:17 <ehird> so feel free to post any urls publically
18:26:36 <ehird> ais523: hmm
18:26:39 <ehird> i can host the html documentation
18:26:40 <ehird> if you want
18:27:05 <ais523> that's being hosted at freeshell, but good idea
18:27:23 <ais523> you'll have to regenerate it first, but doc/Makefile can do that easily enough
18:27:34 <ehird> ais523: what directory name, though?
18:27:40 <ehird> perhaps i should make a directory name for each release
18:27:53 <ehird> http://elliotthird.org/mirror/c-intercal/0.28/ick-0.28
18:27:56 <ehird> http://elliotthird.org/mirror/c-intercal/0.28/ick-0-28.tgz
18:28:02 <ehird> http://elliotthird.org/mirror/c-intercal/0.28/docs
18:28:12 <ais523> decide quickly, before I finish writing this announcement!
18:28:18 <ehird> ais523: haha, well
18:28:25 <ehird> if you can give me a good name for a documentation url
18:28:27 <ehird> without one like that
18:28:30 <ehird> then i won't chang eit
18:29:02 <ais523> c-intercal/doc-0.28 would be one way to do it
18:29:36 <ehird> ais523: well, you decide. depends how you'd like it layed out, really
18:29:49 <ais523> I don't really mind
18:30:04 <ehird> ais523: yes, but there's no real distinction, and it's your compiler, so i'm going to let you decide :p
18:30:16 <ais523> go for doc-0.28 then
18:30:20 <ehird> okay
18:30:35 <ehird> ais523: how would i go about building it without trashing the source tree?
18:31:20 <ais523> easiest to copy the makefile, *.txi, and *.css from doc into a separate directory, and doing it there with make ickhtml
18:31:31 <ais523> wait, you also need to copy *.pl across
18:31:43 <ais523> because I use Perl to do a bit of formatting and touching-up
18:32:02 <ehird> ais523: then just 'make'?
18:32:09 <ais523> make ickhtml
18:32:19 <ais523> there are different targets for each possible version
18:32:26 <ehird> ais523: the other kinds of documentation are already in the source tree, right?
18:32:28 <ehird> so i just need the html
18:32:42 <ais523> ehird: only the .txt and .info are built by default
18:32:48 <ais523> there's make all to generate it in all formats
18:32:57 <ehird> ais523: what others are there?
18:33:03 <ehird> pdf
18:33:05 <ehird> and html i guess
18:33:07 <ais523> PDF, info, plain text, two HTML formats
18:33:11 <ehird> two?
18:33:12 <ehird> ah
18:33:15 <ehird> single file & multi file
18:33:19 <ehird> i'll only do multi file
18:33:23 <ehird> seems like the only useful one to me
18:33:43 <ehird> make: *** No rule to make target `tidy.cfg', needed by `html/index.htm'. Stop.
18:33:56 <ehird> copied that over too
18:33:56 <ais523> that's in the dir too, I forgot it was needed
18:34:04 <ais523> even though I remembered that tidy was
18:34:12 <ais523> (texinfo produces lousy HTML, it badly needs the tidy)
18:34:43 <ehird> ais523: i'll put it at http://elliotthird.org/mirror/c-intercal/doc-0.28/html/ in case i ever need new formats
18:34:45 <ehird> actually, wait
18:34:53 <ehird> i doubt i'll ever publish more formats
18:34:53 <ehird> so.
18:35:34 <ehird> ais523: so it'll just be
18:35:36 <ehird> http://elliotthird.org/mirror/c-intercal/doc-0.28/
18:35:40 <ehird> OK?
18:35:41 <ais523> OK
18:36:05 <ehird> ok
18:36:07 <ehird> have a canonical url
18:36:08 <ehird> http://elliotthird.org/mirror/c-intercal/doc-0.28/
18:36:09 <ehird> WITH the slash
18:36:16 <ehird> since it's a directory
18:36:23 <ais523> yes
18:36:31 <ehird> okay
18:36:32 <ehird> i think that's it
18:36:49 <ehird> okies
18:36:51 <ehird> now i'll announce here
18:36:54 <ehird> *a-hem*
18:37:08 * Iskr claps
18:37:36 <ehird> C-INTERCAL 0.28 is available at http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz. The changelog is at http://elliotthird.org/mirror/c-intercal/ick-0.28/NEWS.txt, and documentation at http://elliotthird.org/mirror/c-intercal/doc-0.28/.
18:37:57 <ehird> It is also available at http://www.intercal.ukfsn.org/download/ick-0-28.tgz and http://intercal.freeshell.org/download/ick-0-28.tgz.
18:38:01 * Iskr reclaps
18:38:10 <ehird> *end of release.txt
18:38:18 <ehird> Iskr: i know, isn't it brilliant
18:38:41 <Iskr> well i wanted to ask
18:38:52 <ehird> ais523: haha:
18:38:53 <ehird> 'RELEASE NOTES FOR THE RELEASE NOTES FOR C-INTERCAL VERSION 0.27'
18:38:53 <Iskr> does someone here use prolog?
18:39:01 <ehird> Iskr: yeah quite a few
18:39:24 <ais523> Iskr: I've read the manuals for a decades-old Prolog compiler, from which I learnt the language, but have never used it
18:39:32 <Iskr> #prolog channel seems dead
18:39:52 <ehird> ais523: I can't wait for the continuation.i stuff
18:40:04 <ehird> I bet people will think it's an infinite loop or something
18:40:16 <ehird> Or something that spews garbage characters
18:40:23 <ehird> But you can certainly use it as an advertising point
18:40:30 <ais523> ehird: how do you suggest that I advertise it?
18:40:51 -!- Judofyr has joined.
18:40:52 <ais523> for the time being I'm going to say that I wrote a continuation library in 24 hours, give lots of impossible-sounding details about how it was done which aren't very useful, and not link to it
18:40:56 <ehird> ais523: INTERCAL is a tried-and-tested (since 70s), well-maintained language that can be used to rapidly develop new features like continuations
18:41:13 <ais523> ehird: everyone on alt.lang.intercal know what INTERCAL is already
18:41:25 <Iskr> (if someone has used flora-2 or logtalk or other oo prolog please let me know)
18:41:26 <ehird> ais523: yeah, but release notes often include things like that
18:41:29 <ais523> but I'll paste my announcement so you can look at it and suggest improvements before sending it
18:41:32 <ehird> i was just summarizing the joke
18:41:52 <ehird> because most languages wouldn't let you implement continuations in them, let alone that fas
18:41:53 <ehird> t
18:42:10 <ehird> its a crap joke though
18:42:11 <ehird> ignore me
18:42:12 <ehird> :)
18:43:22 <ehird> ais523: I wonder how many people have found it already
18:43:41 <ais523> maybe Debian have, they have a bot watching intercal.freeshell.org for new releases
18:43:53 * SimonRC admires the new CodingHorror theme
18:43:59 <ehird> SimonRC: codinghorror is a bunch of crap
18:44:01 <ehird> on another note
18:44:04 <ehird> i am tail -f'ing my log
18:44:09 <SimonRC> ehird: huh?
18:44:11 <ehird> 91.105.71.115 =ais?
18:44:27 <SimonRC> very nice, though visited links are rather similar in colour to plain text
18:44:28 <ehird> SimonRC: never seen good content there
18:44:52 <ais523> ehird: don't recognise the IP
18:44:59 <ais523> I normally start with 147
18:45:12 <ehird> ah
18:45:14 <ehird> you have hits ther too
18:45:15 <ehird> must be me
18:45:20 <SimonRC> ehird: odd, I do find interesting stuff there
18:45:21 <ehird> SimonRC: hah, the latest post is hilarious
18:45:29 <ehird> jwz uses OS X on his personal computer
18:46:32 <ehird> ais523: I am refreshing a.l.intercal in anticipation. ;)
18:46:40 <ais523> ehird: haven't finished writing it yet
18:46:47 <SimonRC> anything engineered, where mass-production is not a factor, will keep becoming harder and harder until humans can only just manage it
18:47:00 <SimonRC> see: software, any buisness, spacecraft
18:48:29 <ehird> ais523: ... http://groups.google.com/group/alt.lang.intercal/browse_thread/thread/5a0696843eeeb5b6/65b0d4a066a4c544#65b0d4a066a4c544
18:48:39 <ehird> you are evil
18:48:43 <SimonRC> hmm, maybe I am overstretching this
18:48:45 <ais523> not implemented anywhere yet
18:48:51 <ais523> it's still a drawing-board idea
18:49:36 -!- olsner has joined.
18:49:52 <ehird> ais523: will c-intercal ever get a 1.0?
18:49:57 <ehird> or is 0.99 followed by 0.100
18:50:03 <ais523> ehird: it has a 1.27
18:50:09 <ais523> the minor version number comes before the .
18:50:22 <ais523> with the major version number afterwards
18:50:45 <ehird> wow
18:51:00 <ehird> ais523: i have a suggestion when you get to 9.99
18:51:18 <ehird> invent a TC programming language for expressing version numbers
18:51:25 <ehird> and make it fully alphanumeric
18:51:30 <ehird> oh, and .
18:51:31 <ehird> and -
18:51:32 <ehird> so the release fater 9.99
18:51:34 <ehird> migth be:
18:51:41 <ehird> Da9-f.7
18:51:48 <ehird> and you'd have to run the interpreter to find out what it is
18:51:57 <ehird> :D
18:51:58 <ais523> ehird: Debian would really like that!
18:52:08 <ehird> ais523: isn't that a plus point? :D
18:52:12 <ais523> they have to invent version number mangling schemes for INTERCAL as it is
18:52:21 <ais523> so this will be 28:0.28-1 on Debian
18:52:37 <ais523> you should see what they do to CLC-INTERCAL version numbers, though
18:52:54 <ehird> ais523: when you release an Extra Special Release of some kind
18:53:00 <ehird> it should be a program that outputs pi in increasing accuracy
18:53:04 <ehird> so it starts
18:53:07 <ehird> 2,3,3.1
18:53:08 <ehird> etc
18:53:14 <ehird> or maybe just one that outputs pi
18:53:17 <ehird> so its
18:53:19 <ehird> 3.14......
18:53:21 <ais523> there's a pi.i already
18:53:27 <ehird> and the program never terminates because it keeps calculating
18:53:33 <ehird> i propose that the program for that version should be
18:53:36 <ais523> oh, for a version number
18:53:46 <ehird> Da90df98asdDFa0sa.D-a048aASd-ASd--A..asdAS89d82axpA0i92
18:53:52 <ehird> and then debian will kill themselves
18:53:56 <ehird> because they can't mangle it sanely
18:54:04 <ehird> well, they could try 3.14
18:54:13 <ehird> but that would clash with a real release
18:54:17 <ais523> ehird: they'll just stick a sequence number on the start
18:54:17 <ehird> whose version evaluates to 3.14
18:54:22 <ehird> ais523: that's true
18:54:27 <ehird> ais523: but i still love my idea :D
18:54:31 <ais523> hey, you've given me a great idea for an esolang
18:54:36 <ehird> of course the version evaluator would be in INTERCAL
18:54:40 <ehird> using C-INTERCAL extensions
18:54:42 <ehird> and each version,
18:54:43 <ais523> all programs and their results are stored in a central repository
18:54:47 <ehird> you update it to require features from the latest one
18:54:54 <ehird> so to find out the version, you have to download the tarball
18:54:56 <ehird> compile it
18:54:58 <ehird> compile version.i
18:55:00 <ehird> then feed it through
18:55:14 <ais523> to write a program, you just pick a random string of characters like Da90df98asdDFa0sa.D-a048aASd-ASd--A..asdAS89d82axpA0i92 that nobody has used yet, and define the result
18:55:39 <ais523> that way programs have no resemblence at all to what they do
18:55:56 <ehird> ais523: can you compose together programs?
18:55:59 <ehird> then primitives are simple
18:56:07 <ehird> just make a program ';'
18:56:11 -!- jix has quit (Nick collision from services.).
18:56:12 <ehird> and define the result via a primitive function
18:56:21 -!- jix has joined.
18:56:27 <ais523> ehird: writing two programs in a row in INTERCAL normally has the effect of running the first and then quitting, unless they happen to have line numbers in common or use computed COME FROM
18:56:46 <ais523> ah, you're talking about the new idea I had
18:56:54 <ais523> the answer is maybe
18:57:59 <ehird> ais523: make it graphical
18:58:05 <ehird> you tag a value with a name
18:58:08 <ehird> and that uploads it to the repository
18:58:14 <ehird> but the value can also be the feeding of one program into another
18:58:25 <ehird> so if you have an if, passing to several functions, it's a tree structure
18:58:33 <ehird> and you have to come up with names for each 'if' or similar you write
18:58:40 <ais523> ehird: http://pastebin.ca/966339
18:58:45 <ais523> that's my draft for the announcement
18:58:56 <ais523> what do you think, and have I spelt your name correctly?
18:59:18 <ehird> ais523: Elliott
18:59:25 <ehird> the URL does have it in it, you know
18:59:38 <ehird> ais523: also, a link to the docs on mine may be helpful, since freeshell haven't updated yet
18:59:40 <ehird> last i checked
18:59:47 <ais523> yes
19:00:20 <ais523> and about your name: I nearly always get it wrong first time for some reason
19:00:29 <ehird> Everyone does :)
19:00:30 <ais523> I think my fingers have memorised something else
19:00:59 <oklopol> elliot third
19:01:13 <oklopol> elliot III
19:01:24 <ehird> ais523: also, you have no link to the changelog
19:01:35 <ehird> which is available on mine (i think the only one, since i am the only one to expand afaik)
19:01:39 <ais523> ehird: I don't normally, maybe I should
19:01:51 <ehird> ais523: it's customary, but your call
19:01:53 <ehird> http://elliotthird.org/mirror/c-intercal/ick-0.28/NEWS.txt if so
19:01:59 <ais523> actually, I will, so as to give an idea of the expanded version
19:02:06 <ais523> and to give people a chance of finding continuation.i
19:02:13 <ais523> Any other changes needed?
19:03:19 <ehird> ais523: you might want to link to continuation.i directly
19:03:25 <ehird> though it may be a bit of an 'easter egg hunt'
19:03:34 <ehird> but yeah, apart from that it looks OK
19:03:36 <ais523> the easter egg hunt was the whole point
19:03:40 <ehird> apart from using < as the first character on a line
19:03:43 <ehird> looks kind of odd
19:03:48 <ais523> why?
19:04:07 <ehird> Not sure. Think it's just pastebin.ca's font.
19:04:37 <ais523> OK, I'll submit the message, then
19:05:40 <ais523> grr, Google Groups screwed up the line breaks
19:05:40 <ehird> ais523: 'thttpd/2.23beta1 26may2002'
19:05:48 <ehird> funny
19:05:50 <ehird> a beta
19:05:53 <ehird> is the most stable web server out there
19:06:00 <ehird> ais523: aww
19:06:12 <ehird> ais523: you can cancel google groups posts iirc
19:06:13 <ehird> if you do it fast
19:06:31 <ais523> nah, I'll just post an unmangled version
19:06:58 <ehird> cool
19:07:00 <ehird> TWO links to my site
19:07:01 <ehird> ;)
19:07:45 <ehird> ais523: did you link to my html docs?
19:07:49 <ais523> yes
19:07:53 <ehird> ah
19:07:55 <ehird> didn't read it properly
19:07:55 <ehird> :)
19:08:01 <ehird> yeah, i see
19:08:17 <ehird> i'm surpised my server's that fast
19:08:34 <ehird> its pretty darn good for $20/mo
19:08:45 <ehird> 256mb ram, 10gb storage, 100gb bandwidth
19:08:49 <ehird> root access and all that
19:08:52 <ais523> oh well, it mangled some on the correction, but they're /different/ URLs, so all the URLs have some correct version now
19:09:21 <ehird> ais523: you could post it with 'Revised^3' in the title
19:09:25 <ehird> that's probably not funny to intercalers though
19:09:27 <ehird> the joke:
19:09:38 <ehird> scheme's latest standard is Revised^6 Report On the Algorithmic Language Scheme
19:09:41 <ehird> originally it want
19:09:47 <ehird> Revised Report on the Algorithmic Language Scheme
19:09:50 <ehird> Revised Revised Report on the Algorithmic Language Scheme
19:09:56 <ehird> but then it got too cumbersome
19:09:59 <ehird> so to expand in full...
19:10:11 <ehird> Revised Revised Revised Revised Revised Revised Report on the Algorithmic Language Scheme
19:10:12 <ais523> ehird: I won't try again, there'd just be too much of a chance of a further messup
19:10:51 <ehird> yeah
19:11:28 <ehird> ais523: maybe you should tell the debian people?
19:11:32 <ehird> might speed up the flow of versions
19:11:50 <ais523> ehird: as I said, they have a bot watching intercal.freeshell.org for new versions
19:11:56 <ehird> ah
19:11:57 <ehird> ooh
19:12:00 <ais523> so generally you only have to tell them if you change the version number scheme
19:12:01 <ehird> someone on Fedora just requested my site
19:12:07 <ais523> not me
19:12:20 <ehird> yeah
19:12:23 <ehird> think it's an a.l.intercal
19:12:24 <ais523> you have tail -f on the logs, presumably
19:12:27 <ehird> yep
19:12:28 <ehird> :D
19:12:40 <ehird> unlikely that i'll get a flood of traffic though
19:13:30 <ehird> speaking of which
19:13:34 <ehird> it'd be helpful if I installed ick myself..
19:13:34 <ehird> :D
19:13:42 <ehird> well, i have an EXCELLENT place to download it from..
19:15:49 <ehird> ais523: MAJOR BUG
19:15:50 <ehird> ./config.sh: 910: Syntax error: "(" unexpected (expecting "fi")
19:16:01 <ais523> oh no
19:16:05 <ais523> let me try over here
19:16:30 <ais523> works fine for me
19:16:42 <ais523> and I generated it using the normal methods
19:16:47 <ais523> what shell are you using, and what OS?
19:17:00 <ehird> ais523: os - ubuntu 7.10
19:17:01 <ehird> shell - bash
19:17:05 <ehird> all i did was untar
19:17:05 <ais523> so am I
19:17:07 <ehird> then ./config.sh
19:17:16 <ais523> and that's all I did too, on the exact same file
19:17:17 <AnMaster> ais523, link so I can try it?
19:17:29 <ehird> AnMaster: my server has it
19:17:34 <AnMaster> ehird, and where si that?
19:17:35 <ehird> http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz
19:17:36 <AnMaster> is*
19:17:38 <ehird> that's where
19:17:45 -!- Tritonio_ has quit (Excess Flood).
19:18:01 <ais523> ehird: there isn't a ( on line 910
19:18:23 <ehird> INFODIRFILE=(irrelevant)
19:18:24 -!- Tritonio_ has joined.
19:18:25 <ehird> the next line
19:18:34 <ehird> echo "configure: warning: Could not find Info directory file, set infodirfile in the Makefile by hand" 1>&2
19:18:38 <ehird> else
19:18:42 <ehird> echo "$ac_t""$INFODIRFILE" 1>&6
19:18:42 <ehird> fi
19:18:42 <ehird> else
19:18:42 <ehird> INFODIRFILE=(irrelevant)
19:18:42 <ehird> fi
19:18:42 <ehird> relevant context
19:18:49 <ais523> yes, there's a ( on line 911
19:18:55 <ehird> so, what's up?!
19:18:56 <ais523> but then why would it report a bug on 910
19:19:11 <AnMaster> ais523, is config.sh configure?
19:19:15 <AnMaster> by autotools?
19:19:19 <ais523> yes
19:19:25 <AnMaster> configure generated by autoconf version 2.13
19:19:26 <AnMaster> old
19:19:31 <ehird> AnMaster: boo hoo
19:19:39 <ehird> AnMaster: but does i twork for you?
19:19:40 <AnMaster> autoconf-2.61 is what I got locally
19:19:51 <ehird> ais523: because shlels often get that wrong
19:19:52 <ais523> ehird: I just downloaded it from your server a second time, untarred, cd and config.sh, and it worked
19:20:03 <ehird> sdfsddfgdfghfh
19:20:03 <AnMaster> ./config.sh --prefix=$HOME/local/ick works yes
19:20:07 <AnMaster> ehird, ^
19:20:15 <ehird> maybe it's just be
19:20:21 <ehird> GNU bash, version 3.2.25(1)-release (i486-pc-linux-gnu)
19:20:24 <ais523> ehird: are you sure you were using bash? The default /bin/sh on Ubuntu is dash
19:20:31 <AnMaster> GNU bash, version 3.2.17(1)-release (x86_64-pc-linux-gnu)
19:20:38 <AnMaster> ehird, ah yes that may be it
19:20:40 <ehird> ais523: ahh
19:20:44 <AnMaster> another ubuntu mess up
19:20:45 <ais523> Try bash ./config.sh
19:20:47 <AnMaster> ubuntu is crap indeed
19:20:48 <ehird> manually change config.sh
19:20:53 <ehird> to /usr/bin/env bash
19:20:59 <ehird> that's my suggestion
19:21:00 <ais523> I set it to bash wonce I discovered dash was buggy
19:21:01 <ehird> (for the next release)
19:21:12 <ehird> AnMaster: ehm, depending on bash and saying '/bin/sh' is what is crap
19:21:15 <ais523> s/w//
19:21:21 <ais523> ehird: I don't depend on bash
19:21:24 <AnMaster> ais523, file a bug for ubuntu or autoconf then?
19:21:26 <ais523> it works on other shells too
19:21:27 <ehird> ais523: ok, just non-dash
19:21:28 <ehird> ?
19:21:36 <ehird> add a check at the start
19:21:37 <ais523> I know dash is buggy, but am not sure how
19:21:45 <ehird> ais523: shouldn't be hard
19:21:47 <AnMaster> ais523, file a bug against ubuntu!
19:21:49 <ehird> check $SHELL for 'dash'
19:21:52 <ais523> it went and added -e on lots of lines at random when I used it for a makefile elsewhere
19:22:00 <ehird> and say 'please use a non-dash shell' and exit if it is
19:22:03 <ais523> and I haven't pinned down the bug
19:22:07 <AnMaster> ais523,
19:22:08 <AnMaster> $ make install
19:22:08 <AnMaster> cp bin/ick bin/convickt /home/arvid/local/ick/bin
19:22:08 <AnMaster> cp: target `/home/arvid/local/ick/bin' is not a directory
19:22:08 <AnMaster> make: *** [install-common] Error 1
19:22:12 <AnMaster> mkdir first....
19:22:25 <ehird> ais523: '-DICK_HAVE_' is that.. intentional? :p
19:22:30 <ais523> ehird: yes
19:22:37 <ais523> not the -DICK, sorry
19:22:42 <ehird> :p
19:22:44 <ais523> I thought you were asking if I wrote that line in the first place
19:22:45 <ehird> software naming
19:22:46 <ehird> what fun
19:22:49 <AnMaster> ais523, well your make install is broken
19:22:57 <ehird> liboser.so
19:22:58 <ehird> -loser
19:23:01 <ehird> liburk.so -lurk
19:23:07 <ais523> AnMaster: it expects the --prefix to be layed out like a typical /usr
19:23:15 <ais523> so it needs to have a /bin, /share subdir, etc
19:23:18 <ehird> gnu's libiberty is -liberty
19:23:23 <AnMaster> ais523, all other software seem to be able to create those if missing
19:23:23 <olsner> how about a libick that requires ICK to be defined :P
19:23:29 <AnMaster> ais523, so I'd suggest it is a bug
19:23:33 <ais523> AnMaster: I wasn't aware that people did that elsewhere
19:23:39 <ais523> so I agree that it's a bug
19:23:39 <ehird> olsner: -lick
19:23:42 <AnMaster> ais523, well automake does iirc
19:23:44 <ais523> a simple mkdir -p should sort it
19:23:46 <olsner> ehird: -DICK
19:23:48 <AnMaster> and cmake does and so on
19:23:57 <AnMaster> ais523, except -p may not work on really old systems iircv
19:23:58 <ehird> olsner: well, yeah
19:23:59 <AnMaster> iirc*
19:24:03 <ehird> olsner: but ick is the intercal compiler
19:24:05 <ais523> AnMaster: yes, but I use it anyway
19:24:07 <ehird> and it already defines stuff starting with ICK
19:24:11 <ehird> so that joke is already done :)
19:24:18 <ehird> -DICKDATADIR etc
19:24:24 <ais523> I use ICK_ and ick_ as name-mangling prefixes for all externally-visible symbols in this version
19:24:26 <olsner> beh
19:24:33 <AnMaster> sh -c "(test -f /home/arvid/local/ick/info/ick.info.gz && install-info --quiet --dir-file=/usr/share/info/dir /home/arvid/local/ick/info/ick.info.gz) || true"
19:24:34 <AnMaster> /usr/share/info/dir: Permission denied
19:24:37 <AnMaster> ais523, another one
19:24:48 <ehird> AnMaster: uhh
19:24:49 <ehird> you need to sudo
19:24:51 <AnMaster> you don't use --prefix at all?
19:24:55 <ehird> or using sh
19:24:56 <ais523> ah, a --prefix bug
19:24:57 <ehird> oh
19:24:58 <ehird> i see
19:24:59 <AnMaster> ehird, I'm installing in my home dir using --prefix
19:24:59 <ehird> yeah
19:25:00 <AnMaster> ...
19:25:00 <ehird> that's a bug
19:25:07 <ehird> ais523: I'm happy to host 1.28 :p
19:25:20 <ais523> that bug was in 0.27, anyway
19:25:28 <AnMaster> ais523, oh and tell me wtf is this meant for:
19:25:29 <AnMaster> sh -c ": -q"
19:25:30 <ais523> it's just nobody caught it before
19:25:38 <ais523> AnMaster: it does nothing
19:25:42 <AnMaster> ais523, why?
19:25:45 <ehird> it's a nice smiley
19:25:46 <ais523> it would have updated the man database on a system that needed it
19:25:53 <AnMaster> oh I see
19:25:59 <ais523> but autoconf noticed that youre system didn't need that, and commented out the line
19:26:05 <ais523> s/youre/you're/
19:26:10 <AnMaster> ah yes
19:26:12 <ais523> well, coloned it out
19:26:35 <ehird> unlambda.i is weird
19:26:38 <ehird> ' PLEASE NOTE THAT IMMORTALITY IS TREASON'
19:26:41 <AnMaster> ais523, what is convickt for?
19:26:53 <ais523> AnMaster: converting INTERCAL files between different character sets and syntaxes
19:27:03 <ais523> because some operators are written differently in different versions
19:27:04 <AnMaster> ah
19:27:05 <AnMaster> I see
19:27:08 <AnMaster> also:
19:27:10 <AnMaster> -b :reduce the probability of IE774 to zero
19:27:11 <AnMaster> eh?
19:27:21 <ais523> that's a typo, it should say E774
19:27:22 <ehird> convickt.c -- translate between various INTERCAL formats
19:27:28 <ais523> there's a random bug in the compiler
19:27:35 <ehird> AnMaster: intercal specifies a random bug in the compiler
19:27:42 <AnMaster> I see...
19:27:47 <ehird> by N probability, the E774 will be trigggered
19:27:47 <AnMaster> and what is that random bug?
19:27:55 <ehird> AnMaster: random bug = E774 is triggered
19:27:59 <AnMaster> I see
19:28:04 <ehird> so basicall ify ou don't use -b it might randomly fail to compile
19:28:06 <ehird> with E774
19:28:08 <ehird> which is the random bug error
19:28:13 <ais523> ehird: not fail to compile, E774 is runtime
19:28:26 <ehird> ah, yes
19:28:30 <AnMaster> $ bin/ick -b pit/continuation.i
19:28:30 <AnMaster> ICL555I FLOW DIAGRAM IS EXCESSIVELY CONNECTED
19:28:36 <AnMaster> ais523, you wrote the code, explain
19:28:43 <ais523> you need to give -am as command-line options
19:28:50 <ehird> i get
19:28:51 <ehird> ICL017I DO YOU EXPECT ME TO FIGURE THIS OUT?
19:28:51 <ehird> ON THE WAY TO 20
19:28:52 <ehird> which is funnier
19:29:04 <ais523> ehird: that's bad
19:29:06 <ehird> ais523: -am is not valid
19:29:08 <ehird> :\
19:29:13 <ais523> are you sure you're compiling with 0.28 and not 0.27?
19:29:21 <ais523> it would have produced E017 on that file
19:29:23 <AnMaster> ais523, god, it took over 10 seconds for ick to run on that file?!
19:29:26 <ais523> but E017 has been toned down a lot
19:29:29 <ehird> oh duh
19:29:31 <ehird> i didn't make install
19:29:32 <ehird> heh
19:29:41 <ais523> AnMaster: most of it's gcc
19:29:45 <ehird> yeah
19:29:46 <ehird> gcc is slow
19:29:50 <ehird> and the c files are huge
19:29:53 <AnMaster> ah
19:29:55 <ehird> AnMaster: try compiling with -c
19:29:57 <ehird> that'll dump the c file
19:29:59 <ehird> and you can take a look at it
19:30:03 <ehird> that should help you understand ;)
19:30:05 <AnMaster> ehird, I don't want to
19:30:12 <ais523> or -g, which will dump the C file but complete the compilation anyway
19:30:14 <AnMaster> ICL633I PROGRAM FELL OFF THE EDGE ?
19:30:21 <AnMaster> ie how do I use ./continuation
19:30:32 <ais523> you just use ./continuation, I thought, it's a test program
19:30:42 <AnMaster> $ ./continuation
19:30:43 <AnMaster> ICL633I PROGRAM FELL OFF THE EDGE
19:30:43 <AnMaster> ON THE WAY TO THE NEW WORLD
19:30:43 <AnMaster> CORRECT SOURCE AND RESUBNIT
19:30:45 <AnMaster> really?
19:30:50 <ais523> it should just output a bunch of roman numerals
19:30:55 <AnMaster> it outputs that
19:31:00 <ais523> hmm... maybe the test program was deleted by mistake
19:31:07 <ais523> what's the very last line of your continuation.i?
19:31:20 <AnMaster> DO RESUME #1
19:31:22 <ehird> ais523: its fine for me
19:31:22 <oklopol> i don't really know anything about intercal, how did you make continuations?
19:31:24 <ehird> :/
19:31:34 <AnMaster> ais523, ^
19:31:39 <ehird> oklopol: he wrote stuff that uses multithreading to do them
19:31:47 <ehird> and used his compiler's CREATE to define syntax for them
19:31:55 <oklopol> oh
19:31:58 <ais523> AnMaster: there shouldn't be an error 633 if there's a RESUME #1 as the last line
19:31:59 <oklopol> extendable syntax
19:32:09 <ehird> oklopol: he just implemented it
19:32:09 <AnMaster> ais523, well explain it then?
19:32:09 <oklopol> i really should learn it
19:32:10 <ais523> that doesn't make any sense
19:32:23 <ehird> AnMaster: uh you effed up
19:32:25 <ehird> try redownloading
19:32:27 <ehird> 'cause it works for me
19:32:34 <AnMaster> ehird, you got x86_64?
19:32:47 * AnMaster runs that platform
19:32:53 <AnMaster> no idea if that would cause an issue
19:33:13 <ehird> AnMaster: it wouldn't
19:33:17 <ehird> just try redownloading
19:33:26 <AnMaster> ehird, can I get md5sum for the tarball
19:33:27 <ais523> AnMaster: use ick -abgm continuation.i, then tell me what's on line 4489 of continuation.c
19:33:49 <AnMaster> bin/ick -abgm pit/continuation.i to correct for paths
19:33:51 <ehird> 67459c1a46e016d25de7c30968b676d7
19:33:53 <ehird> md5sum
19:33:56 <AnMaster> I assume that would not be an issue
19:34:03 <ais523> no
19:34:06 <ehird> oh, i should pubilsh .sum
19:34:08 <ehird> shouldn't i?
19:34:11 <AnMaster> $ md5sum ../ick-0-28.tgz
19:34:11 <AnMaster> 67459c1a46e016d25de7c30968b676d7 ../ick-0-28.tgz
19:34:17 <AnMaster> ehird, same here
19:34:20 <ehird> ick-0-28.sum is the filename to use right
19:34:21 <AnMaster> so not a download error
19:34:31 <ehird> AnMaster: beats me
19:34:39 <AnMaster> ais523, what line did you say?
19:34:42 <ais523> 4489
19:34:58 <AnMaster> ick_skipto = ick_resume(0x1); goto top;
19:35:00 <ehird> should i publish an md5sum?
19:35:07 <ais523> OK, that's correct
19:35:25 <AnMaster> ais523, want md5sum for the c file?
19:35:36 <ais523> no, I've just had another idea
19:35:43 <AnMaster> oh?
19:35:54 <ehird> nobody? :p
19:36:00 <ais523> maybe the kill-all-threads code is being invoked early and turning off the RESUME
19:36:07 <ais523> ehird: I thought it was .md5, but am not sure
19:36:22 <ais523> normally the md5 sums are in the release message, not in the directory itself
19:36:27 <ehird> ais523: ick-0-28.md5
19:36:29 <ehird> 67459c1a46e016d25de7c30968b676d7 ick-0-28.tgz
19:36:30 <AnMaster> .md5 is the usual
19:36:33 <ehird> and i think lots of mirrors include it
19:36:44 <AnMaster> I think
19:36:51 <ais523> yes, it's worthwhile having it in the same directory as that's where people will check
19:36:53 <ehird> AnMaster: so 'ick-0-28.md5'?
19:36:56 <AnMaster> ais523, well I didn't understand the "<ais523> maybe the kill-all-threads code is being invoked early and turning off the RESUME"
19:36:58 <AnMaster> ehird, not sure
19:37:22 <ais523> AnMaster: I'm trying to figure out how the hell that code managed to error out with 663 when it had a RESUME as the last line
19:37:37 <ais523> the only thing I can think of is that the RESUME got ABSTAINed from by mistake
19:37:45 <AnMaster> ehird, gentoo use .DIGESTS
19:37:46 <ais523> AnMaster: compile with -abgmw
19:37:50 <AnMaster> http://ftp.ing.umu.se/linux/gentoo/releases/amd64/current/stages/stage1-amd64-2007.0.tar.bz2.DIGESTS
19:37:52 <AnMaster> as in that
19:38:11 <AnMaster> ais523, and then?
19:38:20 <ais523> then run the code with +printflow (as in ./continuation +printflow), capture stdout, and paste it somewhere
19:38:28 <ais523> I'll compare it to what I get over here
19:38:41 <ehird> ais523: http://elliotthird.org/mirror/c-intercal/ick-0-28.md5
19:38:47 <ehird> feel free to post that url somewhere
19:38:49 <ehird> if you want
19:39:01 <AnMaster> ais523, http://rafb.net/p/uc3S5q93.html
19:39:02 <ais523> ehird: it's pretty obvious, I think just having it in the same directory will be enough
19:39:06 <ehird> okay
19:39:10 <ehird> should I do CURRENT-doc?
19:39:13 <ehird> and CURRENT.md5
19:39:23 <ehird> i guess the advantage of version directories
19:39:27 <ehird> is that i could just have one CURRENT
19:39:28 <ehird> to the directory
19:39:31 <AnMaster> ehird, hm http://ftp.ing.umu.se/linux/gentoo/releases/amd64/current/stages/stage1-amd64-2007.0.tar.bz2.DIGESTS
19:39:32 <ehird> and then collect all of these inside it
19:40:22 <AnMaster> ais523, any idea?
19:40:35 <ais523> AnMaster: I'm comparing the files at the moment
19:41:01 <AnMaster> ais523, what gcc options do you use?
19:41:03 <ehird> ais523: however i won't switch to a different format until several releases forward
19:41:08 <ehird> and even then i'll maintain redirects
19:41:11 <AnMaster> because I tried to compile the c file by hand
19:41:12 <ehird> for backwards compatibility
19:41:14 <AnMaster> it didn't work
19:41:21 <ais523> AnMaster: a bunch of -D and -I, -o and -O2
19:41:23 <ehird> AnMaster: he links with his cmpiler
19:41:30 <AnMaster> ok forget it then
19:41:40 <ais523> AnMaster: the very top of the C file gives the compile command you need to use
19:41:40 <AnMaster> ais523, was thinking of testing -m32
19:41:52 <ais523> oh, and -l as well
19:41:59 <ais523> because it links against the INTERCAL runtime library
19:42:03 <AnMaster> ah then it won't work
19:42:10 <AnMaster> can't link 32-bit and 64-bit objects
19:42:49 <ehird> AnMaster: compile ick with -m32
19:42:56 <AnMaster> ehird, too much work
19:43:05 <AnMaster> $ echo $CFLAGS
19:43:05 <AnMaster> -pipe -march=k8 -O2 -msse3
19:43:06 <AnMaster> btw
19:43:07 <AnMaster> sane ones
19:43:14 <ehird> oh
19:43:16 <ehird> undo that
19:43:18 <ehird> while compiling ick
19:43:20 <AnMaster> undo what?
19:43:21 <ehird> actualy
19:43:24 <ehird> $CFLAGS is a dumb idea
19:43:28 <AnMaster> not really
19:43:30 <ehird> projects require wildly different stuff
19:43:37 <ehird> setting it is making far too many assumptions
19:43:45 <ehird> i suggest trying CFLAGS='' make clean all
19:44:06 <AnMaster> ehird, it still uses those btw
19:45:42 <ais523> AnMaster: I'm pretty confused at this point
19:46:01 <ais523> the two programs ran exactly the same, until your program just errored out with E663 at random
19:46:12 <ais523> despite the two programs doing the same thing up to that point
19:46:28 <ais523> the only thing that stands out about that point was that it was the first place where I access a function pointer
19:46:49 * ais523 checks something
19:46:56 <AnMaster> ais523, want me to pastebin the C file?
19:47:10 <ehird> ahh wait, ais523
19:47:11 <ais523> AnMaster: no, I'm pretty sure it's identical to mine
19:47:16 <ehird> AnMaster uses stack protection and stuff
19:47:22 <ehird> maybe the function pointer was on the stack or.. i don't know
19:47:23 <AnMaster> yes
19:47:26 <AnMaster> I got a hardened system
19:47:30 <AnMaster> using PaX and so on
19:47:45 <ais523> ehird: a function pointer on the stack should still work, though
19:47:52 <AnMaster> as for function pointer on stack it would still work
19:47:56 <ais523> but I'm wondering if the function's prototype was accidentally wrong
19:48:06 <AnMaster> ais523, so want the c file?
19:48:07 <ehird> which is to say: AnMaster prefers the silly comfort of non-executable stack in favour of programs that work
19:48:21 <AnMaster> ehird, very few programs fail
19:48:29 <ais523> AnMaster: just tell me its md5 sum, and I'll compare it to the one I have over here
19:48:49 <AnMaster> ais523, the first line will differ as it contains "-I/home/arvid/local/ick/include/ick-0.28"
19:48:55 <AnMaster> so I can't see how that would work
19:48:59 <ehird> AnMaster: remove the first line
19:49:00 <ais523> oh, of course
19:49:05 <ehird> might help
19:49:17 <ais523> given that the lines far down the file were the same, I suspect the compiler produced the same output
19:49:29 <AnMaster> so I remove the first line?
19:49:44 <AnMaster> with first line removed: 43410b9d29f3e79ce17b80ff1dc972a1
19:50:42 <ais523> it differs, pasting the .c file may be useful
19:50:56 <ais523> AnMaster: what is sizeof(int) on x86_64?
19:50:58 <AnMaster> http://rafb.net/p/1q4ZNK43.html
19:51:01 <AnMaster> ais523, it is 4
19:51:07 <AnMaster> long and long long are both 8
19:51:16 <AnMaster> size_t and void* are also 8
19:51:19 <ais523> OK, so that isn't the problem
19:51:34 <ais523> I just noticed a typedef unsigned int ick_type32; that someone else had written
19:51:36 <AnMaster> ais523, see the paste
19:51:40 <ehird> debugging intercal compilers is so exciting
19:51:43 <AnMaster> ais523, use int32_t
19:51:49 <AnMaster> ehird, hahahr
19:51:53 <ehird> woah
19:51:54 <ehird> googlebot
19:51:55 <ehird> on my site?
19:51:57 <ehird> :O
19:52:01 <ehird> thanx google groups
19:52:04 <ehird> but i don't have content yet
19:52:09 <ehird> i really should have put my site up before ;)
19:52:20 <ais523> AnMaster: I know why it was different, the second line has the directory name of the file in
19:52:23 <ehird> hahah wow
19:52:26 <ehird> it's going to my dead links
19:52:29 <ais523> as does the last one
19:52:35 <AnMaster> ais523, ah ok
19:52:39 <AnMaster> ais523, otherwise the same?
19:52:44 <AnMaster> I did run from top directory yes
19:52:50 <ais523> AnMaster: I think so
19:53:03 <ais523> there are other things that differ to, as it uses randomish numbers for the names of function pointers
19:53:03 <AnMaster> ais523, otherwise no differences?
19:53:13 <AnMaster> ah
19:53:43 <ehird> ais523: non-deterministic compiler output
19:53:44 <ehird> I love you
19:53:45 <ehird> :D
19:54:05 <ais523> ehird: the numbers are actually pointers returned from malloc and written as hex
19:54:16 <AnMaster> ew
19:54:19 <AnMaster> ewwwwwwww
19:54:20 <ais523> I could explain why if you wanted
19:54:43 <ehird> brilliant
19:54:46 <AnMaster> ais523, want the binary then?
19:54:48 <ehird> AnMaster: why say 'ew' it's INTERCAL
19:54:49 <ehird> jez
19:54:51 <ehird> *jeez
19:54:55 <ais523> AnMaster: I couldn't run it over here
19:54:58 <ais523> I'm only on x86
19:55:04 <AnMaster> ais523, oh and those pointer names?
19:55:14 <AnMaster> are they cast to 32-bit?
19:55:22 <AnMaster> because they look a bit short for being 64-bit ones
19:55:28 <ais523> they're cast to unsigned long IIRC
19:55:38 <AnMaster> ais523, size_t is the correct one
19:55:56 <ais523> actually, intptr_t is the correct one, but it's C99
19:55:58 <olsner> [u]intptr_t
19:56:10 <AnMaster> hm
19:56:18 <ais523> and most compilers don't have a printf size specifier for it
19:56:19 <AnMaster> yeah indeed
19:56:28 <AnMaster> ais523, I'm quite certain gcc does
19:56:35 <AnMaster> ick_lose(IE000, 121, "PLEASE NOTE This double assignment is actually correct,\n\
19:56:35 <AnMaster> because :1602 is overloaded.");
19:56:36 <AnMaster> huh
19:56:44 <ais523> but pointer values tend to be 'small' for user programs on x86_64
19:56:46 <AnMaster> why is a comment in the generated file?
19:56:57 <ais523> AnMaster: in case it was execute
19:57:01 <ais523> s/execute/executed/
19:57:05 <AnMaster> *blink*
19:57:08 <ais523> there are no 'comments' in INTERCAL
19:57:16 <ais523> but syntax errors happen at runtime, as E000
19:57:17 <ehird> just invalid statements
19:57:20 <ehird> that you make sure not to be executed
19:57:21 <ehird> :)
19:57:28 <AnMaster> god
19:57:36 <ais523> so you write PLEASE NOT at the start and then they are ignored by default
19:57:41 <ehird> AnMaster: it's INTERCAL, are you expecting it to be an elegant amazing language?
19:57:49 <ais523> if you write PLEASE REINSTATE COMMENTS then your program will crash the next time it reaches a comment
19:58:01 <AnMaster> no. I'm just amazed it is so silly
19:58:23 <ais523> I thought you were complaining about what I put in the comment, which is also somewhat silly
19:58:26 <AnMaster> ais523, oh and why pit and not examples
19:58:29 <olsner> intercal is elegant for very small values of elegance
19:58:44 <ais523> AnMaster: not entirely sure, that predates me by years
19:59:26 <AnMaster> hm
19:59:29 <olsner> hmm, so PLEASE NOTE in the "comment" is actually PLEASE NOT followed by an E?
19:59:33 <ais523> olsner: yes
19:59:34 <AnMaster> ais523, ok so got any idea what happened?
19:59:36 <ais523> it's idiomatic
19:59:41 <ais523> AnMaster: not yet
20:00:30 <olsner> actually, that *is* kind of elegant
20:02:36 <ais523> AnMaster: what's confusing me now is that for a PROGRAM FELL OFF THE EDGE is basically impossible to get when you're using the standard library (as continuation.i does), because it's appended to the program
20:02:45 <ais523> and E663 is caused by falling off the end of the program
20:03:01 <AnMaster> ais523, no clue then
20:03:04 <ais523> falling off the program when the standard library is there gives you E000 PLEASE KNOCK BEFORE ENTERING intstead
20:03:11 <AnMaster> ais523, beer.i example work
20:04:02 <AnMaster> life2.i works
20:04:12 <ais523> AnMaster: comment out line 33 of continuation.i by changing CREATE to DON'T CREATE
20:04:13 <AnMaster> life.i is just odd not sure if it works
20:04:15 <ais523> what happens then?
20:04:53 <AnMaster> ICL777I A SOURCE IS A SOURCE, OF COURSE, OF COURSE
20:04:54 <AnMaster> ON THE WAY TO 1
20:04:54 <AnMaster> CORRECT SOURCE AND RESUBNIT
20:04:55 <AnMaster> ??+
20:04:55 <AnMaster> ????
20:04:59 <AnMaster> did not compile
20:05:02 <ais523> AnMaster: that means you wrote the wrong filename
20:05:06 <AnMaster> ah thank you
20:05:10 <ais523> that's 'Cannot read input file' in INTERCAL-speak
20:05:17 <AnMaster> I see
20:05:26 <AnMaster> ais523, is there a wimp mode for errors?
20:05:27 <Deewiant> you must resubnit
20:05:38 <ais523> AnMaster: no, but they're explained in plain language in the documentation
20:05:45 <ais523> Deewiant: that typo's been preserved since 1972
20:05:50 <AnMaster> ais523, still ICL633I PROGRAM FELL OFF THE EDGE
20:05:53 <Deewiant> ais523: yes, I know :-)
20:06:09 <AnMaster> ais523, assuming it did compile as well as create the C file?
20:06:17 <AnMaster> when doing:
20:06:18 <AnMaster> ../bin/ick -abgmw continuation.i
20:06:19 <AnMaster> ?
20:06:22 <ais523> AnMaster: yews
20:06:51 <AnMaster> ais523, it did it seems
20:06:51 <ais523> AnMaster: what happens when you delete lines 256 to 268 inclusive, and then try running again?
20:07:18 <AnMaster> PLEASE DO REINSTATE (8205) AGAIN
20:07:18 <AnMaster> to
20:07:19 <AnMaster> PLEASE GIVE UP
20:07:20 <AnMaster> ?
20:07:27 <ais523> yes
20:07:46 <AnMaster> same error
20:07:50 <ais523> ???
20:07:51 <AnMaster> but compiled WAY faster
20:08:16 <AnMaster> ais523, unless ick decided to not overwrite file if it existed?
20:08:24 <ais523> AnMaster: it does overwrite existing files
20:08:29 <AnMaster> good
20:08:34 <AnMaster> can't be sure with intercal
20:08:37 <ais523> you could delete the executable and .c and try again to check if that's the problem
20:09:03 <AnMaster> no indeed not the issue
20:09:43 <ais523> do you have gdb?
20:09:54 <AnMaster> of course I do
20:10:01 <ais523> try looking at the C file for the line where that error happens
20:10:11 <ais523> (search for the string IE663)
20:10:22 <ais523> then putting a breakpoint on it in gdb
20:10:35 <ais523> (the -g option makes the output debuggable, for certain values of 'debuggable')
20:10:40 <AnMaster> string "IE663" not found?
20:10:56 <ais523> it should be near the bottom of main()
20:11:02 <ais523> oh, and no quotes
20:11:08 <ais523> it's a #defined constant
20:11:22 <AnMaster> I didn't have quotes
20:11:30 <AnMaster> kate had in "not found" message
20:11:34 <ehird> ais523: he's deleted the lines
20:11:35 <ehird> remember?
20:11:38 <AnMaster> and no it isn't in main()
20:11:44 <ais523> ehird: that wasn't in the deleted lines
20:12:00 <ais523> AnMaster: what's the last occurence of ick_lose
20:12:09 <ehird> 192.139.27.18 - - [01/Apr/2008:19:06:01 +0000] "GET /mirror/c-intercal/ick-0.28/ HTTP/1.0" 200 50000 "http://groups.google.com/group/alt.lang.intercal/browse_thread/thread/9e9ad7d6875e9582/d930aa96e48e2f11" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET "
20:12:12 <ehird> a real person
20:12:18 <ehird> unfortunately their software sucks
20:12:19 <ehird> but \o/
20:12:24 <ais523> IE6?
20:12:25 <AnMaster> ais523, in ick_os687760
20:12:27 <ais523> not me, then
20:12:29 <AnMaster> ick_lose(IE277, ick_lineno, (char*) NULL);
20:12:33 <AnMaster> that is the last in the file
20:12:35 <ais523> AnMaster: what's the last occurence inside main?
20:12:49 <ais523> I forgot about the errors about assigning to constants when I asked that
20:12:58 <AnMaster> ais523, there are none?
20:13:15 <ais523> and yet you're still getting error 663 when you run?
20:13:17 <AnMaster> or do you mean ick_main ?
20:13:23 <AnMaster> instead of main()?
20:13:32 <ais523> is there an ick_main?
20:13:38 <AnMaster> ICK_EC_FUNC_START(ick_main)
20:13:41 <AnMaster> is there at least
20:13:45 <ais523> AnMaster: that's #ifdeffed out
20:13:54 <ais523> that's why I forgot about it
20:14:00 <AnMaster> ais523, maybe, kate fails at the complexities of that file
20:14:23 <ais523> OK, inside what appears to be ick_main due to kate not understanding #ifdef
20:14:48 <AnMaster> ais523, it does handle #ifdef
20:14:55 <AnMaster> just not that complex huge C file you got
20:15:13 <ais523> if you paste your new version, I'll take a look and tell you which line I'm talking about
20:15:27 <AnMaster> ais523, http://rafb.net/p/9rIGxf57.html
20:15:34 <AnMaster> yeah I can't see where your ick_main ends
20:15:52 <ais523> line 3824
20:15:57 <ais523> sorry about the indentation
20:16:13 <ais523> (that's the line to put a breakpoint on)
20:16:14 <AnMaster> you said IE663 not IE633
20:16:17 <AnMaster> <ais523> (search for the string IE663)
20:16:22 <ais523> ah
20:16:37 <ais523> I must have remembered it incorrectly
20:16:50 <AnMaster> Breakpoint 1, main (argc=<value optimized out>, argv=0x401fb0) at continuation.c:3824
20:16:50 <AnMaster> 3824 ick_lose(IE633, 575, (char *)0);
20:16:54 <AnMaster> right?
20:16:57 <AnMaster> now what?
20:17:05 <ais523> what does a backtrace say?
20:17:13 <AnMaster> (gdb) bt
20:17:13 <AnMaster> #0 main (argc=<value optimized out>, argv=0x401fb0) at continuation.c:3824
20:17:19 <ais523> and what's the value of the ick_next array?
20:17:20 <AnMaster> as it is in main, what else *could* it say?
20:17:25 <ais523> AnMaster: you'd be surprised
20:17:31 <AnMaster> (gdb) print ick_next
20:17:32 <AnMaster> $1 = (unsigned int *) 0x630320
20:17:38 <AnMaster> (gdb) print *ick_next
20:17:38 <AnMaster> $2 = 166
20:17:43 <ais523> seems reasonable
20:17:57 <ais523> the abstain status of the line before will be useful
20:17:58 <AnMaster> what next?
20:18:06 <AnMaster> ais523, how do I get that ...
20:18:07 <ais523> wait a moment while I figure out what variable it is
20:18:22 <AnMaster> you know, why not write a intercal debugger?
20:18:32 <ais523> ick_abstained[464]
20:18:39 <ais523> AnMaster: I did, but it can't handle the continuations code
20:18:48 <AnMaster> (gdb) print ick_abstained[464]
20:18:48 <AnMaster> $3 = 0
20:18:52 <ais523> in much the same way that gdb can't handle longjmp
20:19:05 <AnMaster> and longjmp *is* evil
20:19:24 <ais523> I know, that's why I use it
20:19:29 <AnMaster> -_-
20:19:56 <ais523> OK, so the issue is that the if immediately above where you are ran
20:19:59 <ais523> and ends with a goto
20:20:07 <ais523> so there's no way that control could have reached that line
20:20:19 <AnMaster> um
20:20:22 <ais523> what's ick_lineno, by the way?
20:20:31 <AnMaster> 52
20:20:56 <AnMaster> also telling me what the issue is won't help, 1) I do know C, but not this autogenerated *MESS* 2) I don't know intercal
20:21:15 <AnMaster> I will be happy to run commands as long as they aren't along the lines of rm -rf /
20:21:48 <ais523> you know enough C to see that switch(...){... if(1){... goto x} /* no labels here */} /*error*/ shouldn't reach the error line
20:21:57 <ais523> ah, except if the switch finds no labels
20:22:08 <ais523> I forgot to put an erroring default() in there as a paranoia check
20:22:12 <ais523> what's the value of ick_skipto?
20:22:24 <AnMaster> (gdb) print ick_skipto
20:22:24 <AnMaster> $5 = 4294901750
20:22:38 <ais523> that explains what's happened
20:22:46 <AnMaster> well why didn't it fail for you then?
20:22:48 <ehird> ais523: how come only AnMaster has the problem?
20:22:49 <ais523> a negative number has been stored in an unsigned 32-bit integer
20:22:54 <ehird> 64-bit overf-
20:22:55 <ehird> ah
20:22:58 <ais523> and then assigned to a signed 64-bit integer
20:23:01 <GregorR> I wrote an implementation of MISC at least a year ago and never published it - it's still marked as unimplemented on the wiki :P
20:23:01 <AnMaster> I see
20:23:02 <ehird> ahaaaaaaa
20:23:07 <ais523> and so has ended up with the wrong value
20:23:14 <AnMaster> ais523, so you are broken on 64-bit?
20:23:15 <ehird> GregorR: JSMMIX going anywhere?
20:23:21 <AnMaster> GregorR, what is MISC?
20:23:24 <ais523> AnMaster: presumably, but only very slightly
20:23:29 <ehird> ais523: am I about to have to upload 1.28? )
20:23:30 <ehird> *;)
20:23:34 <AnMaster> ais523, hope you can make a patch soon
20:23:37 <GregorR> AnMaster: A concrete OISC design, see wiki.
20:23:38 <ais523> ehird: I'll collect some bugfixes soon
20:23:49 <GregorR> ehird: It's so slow it became insufferable.
20:23:54 <ais523> AnMaster: it'll be a one-liner for that particular bug
20:24:11 <AnMaster> ais523, ok, where should I change a line?
20:24:21 <ais523> I'm trying to find it at the moment
20:24:55 <ais523> line 89 of ick-wrap.c
20:25:00 <ais523> cast ick_skipto to (int)
20:25:27 <AnMaster> $ find . -iname ick-wrap.c
20:25:27 <AnMaster> ./lib/ick-wrap.c
20:25:27 <AnMaster> ./src/ick-wrap.c
20:25:29 <AnMaster> which one?
20:25:34 <ais523> the one in src
20:25:39 <ais523> the one in lib is a temporary copy
20:25:45 <ais523> which will be copied over by the makefile
20:25:53 <ehird> GregorR: :(
20:26:16 <ais523> GregorR: which instruction does it use?
20:26:26 <AnMaster> ais523, oh and consider running astyle or some such tool to clean up your indention
20:26:34 <ais523> AnMaster: I have considered it
20:26:38 <AnMaster> {
20:26:39 <AnMaster> case 0:
20:26:39 <AnMaster> $G
20:26:39 <AnMaster> <tab>}
20:26:41 <AnMaster> the rest are spaces
20:26:48 <AnMaster> that is just fuubared
20:27:01 <AnMaster> also wtf "$G"?
20:27:02 <ehird> I love how AnMaster always complains about style in possibl ythe most hacky, ugly language in existance
20:27:03 <ais523> AnMaster: the generated code is mostly inside strings in feh2.c
20:27:06 <ais523> making it hard to indent
20:27:09 <ehird> 'Your *C* contains *tabs*!'
20:27:19 <ehird> AnMaster: its the SKELETON... $G is a placeholder
20:27:22 <ais523> and that code is C plus placeholders for 'compiler generate things here'
20:27:26 <AnMaster> ehird, either tabs or spaces
20:27:29 <AnMaster> but not a MIX
20:27:36 <ais523> ehird: it isn't particularly consistent
20:27:37 <AnMaster> I use pure tabs for indention myself
20:27:38 <ehird> AnMaster: boo hoo
20:27:46 <ais523> I'll have to try to get the newlines fixed, first
20:27:53 <AnMaster> ais523, I got a script for such
20:27:58 <ais523> only once I've done that will the start-of-line indentation work better
20:28:00 <ehird> i don't see a problem really.
20:28:05 <ais523> and yes, I know I could just run the output through indent
20:28:16 <AnMaster> ais523, can't really pastebin it as it contains a literal CR to be able to remove them
20:28:18 <ais523> but as it's only an intermediate file I don't see what the point is
20:28:24 <AnMaster> I'll upload it somewhere
20:28:28 <AnMaster> ais523, it uses ed
20:28:48 <ais523> if I'm going to regularise .c output, I'll write my own program
20:28:57 <AnMaster> ais523, oh and still that error
20:28:58 <ais523> because things like {;} aren't particularly useful in real life
20:29:01 <AnMaster> did a make clean all
20:29:13 <ais523> AnMaster: what's the value of ick_skipto this time?
20:29:21 <AnMaster> a sec
20:29:31 <AnMaster> ais523, I restored original file
20:29:36 <AnMaster> so where should I break then?
20:29:49 <ais523> on the E633 line
20:30:08 <AnMaster> odd still 4498
20:30:28 <AnMaster> $1 = 4294901748
20:30:29 <AnMaster> still that
20:30:44 * AnMaster tries rebuilding again
20:30:58 <ais523> AnMaster: but that seems reasonable based on what the patch does
20:30:59 <AnMaster> maybe I didn't make install
20:31:03 <ais523> what's (int)ick_skipto?
20:31:15 <AnMaster> oh yes I forgot make install
20:31:17 <AnMaster> that's all
20:31:23 <ais523> working now?
20:31:27 <AnMaster> ais523, assume so
20:31:28 <AnMaster> not sure
20:31:31 <AnMaster> I
20:31:32 <AnMaster> III
20:31:32 <AnMaster> II
20:31:34 <AnMaster> is how it looks
20:31:38 <ais523> yes, that's right
20:31:39 <AnMaster> with blank lines in between
20:31:43 <ehird> so
20:31:45 <ehird> what was the problem?
20:31:49 <AnMaster> ais523, ok what does it *mean*
20:31:52 <ehird> sj
20:31:54 <ais523> AnMaster: that's to give space for the overbars if they're needed
20:31:54 <ehird> i see
20:31:55 <ehird> *ah
20:31:59 <ais523> AnMaster: it's just a simple test program
20:32:10 <AnMaster> overbars?
20:32:11 <ais523> the numbers are trace output so you can see it working
20:32:12 <AnMaster> ???????????????
20:32:17 <ais523> AnMaster: for roman numerals over 1000
20:32:28 <AnMaster> hm you just do MMM then?
20:32:30 <AnMaster> iirc?
20:32:31 <ais523> e.g. 5000 is V with a bar over it
20:32:33 <ehird> AnMaster: intercals standard output is in roman numerals
20:32:58 <AnMaster> ais523, sure that is the format used by Romans?
20:33:03 <ais523> AnMaster: it isn't
20:33:14 <ais523> INTERCAL uses lowercase for numerals like v which means 5000000
20:33:16 <AnMaster> also why does pow not do ANYTHING?
20:33:21 <ais523> it's known as 'butchered roman numerals'
20:33:30 <ais523> AnMaster: which pow?
20:33:35 <AnMaster> pow.i
20:33:37 <AnMaster> from pit
20:33:45 <AnMaster> is there any other?
20:34:00 <ais523> I assumed you meant the C function, and was confused
20:34:03 <AnMaster> or am I supposed to enter something? if yes, what?
20:34:24 <ais523> a numer
20:34:27 <ais523> s/numer/number/
20:34:29 <ehird> AnMaster: note
20:34:31 <ehird> you must enter it in digits
20:34:31 <ais523> spell it out as digits
20:34:32 <ehird> like this
20:34:36 <ais523> e.g. for 123, type ONE TWO THREE
20:34:37 <ehird> THREE FOUR ZERO ZERO TWO
20:34:39 <ehird> heh
20:34:43 <ehird> (34002)
20:34:45 <AnMaster> so ONE NINE?
20:34:48 <ais523> yes
20:34:48 <AnMaster> or NINER?
20:34:56 <AnMaster> considering what befunge call 9
20:35:03 <AnMaster> ais523, yes to which?
20:35:10 <GregorR> ais523: It's subtract-and-branch-if-negative
20:35:10 <ais523> AnMaster: either
20:35:14 <AnMaster> ais523, I see
20:35:21 <AnMaster> ais523, err
20:35:22 <GregorR> ehird: I will gladly hand you the reigns if you want to continue work on JSMMIX :P
20:35:23 <AnMaster> ICL000I (1999) DOUBLE OR SINGLE PRECISION OVERFLOW
20:35:23 <AnMaster> ON THE WAY TO 66
20:35:23 <AnMaster> CORRECT SOURCE AND RESUBNIT
20:35:28 <ehird> GregorR: aieeee
20:35:29 <ais523> AnMaster: try a smaller number, then
20:35:29 <AnMaster> ais523, after entering ONE TWO
20:35:33 <AnMaster> so 12
20:35:35 <AnMaster> not large
20:35:46 <ais523> yes, but I'm not entirely sure what that program does
20:35:49 <AnMaster> ais523, it just runs on and on?
20:36:12 <ais523> well, it'll take me a few hours to figure out what it does from the source
20:36:15 <AnMaster> ICL129I PROGRAM HAS GOTTEN LOST
20:36:17 <AnMaster> ais523, ??????????
20:36:19 <ais523> I didn't write all or even most of the programs there
20:36:28 <ais523> AnMaster: which program?
20:36:30 <AnMaster> $ ../bin/ick -b flonck.i
20:36:31 <AnMaster> that
20:36:42 <ais523> it needs lib/floatlib.i appended to it
20:37:00 <AnMaster> same error
20:37:02 <ais523> it says that in its docs, presumably assuming that people will read them
20:37:04 <AnMaster> $ ../bin/ick -b flonck.i lib/floatlib.i
20:37:04 <AnMaster> ICL129I PROGRAM HAS GOTTEN LOST
20:37:14 <ehird> you need to append it
20:37:14 <ais523> AnMaster: that's not appending floatlib.i to it
20:37:17 <ehird> yourself
20:37:18 <ehird> manually
20:37:19 <AnMaster> oh
20:37:19 <ais523> that's compiling both files
20:37:39 <ehird> ICL533I YOU WANT MAYBE WE SHOULD IMPLEMENT 64-BIT VARIABLES? <-- yes!
20:37:45 <AnMaster> ais523, add a -combine like gcc got?
20:37:52 <ehird> (unlambda)
20:37:57 <ais523> AnMaster: it's certainly a thought
20:37:58 <ehird> AnMaster: it's meant to be awkward
20:38:04 <ehird> but maybe ok
20:38:05 <ehird> as a wimpmode
20:38:13 <AnMaster> $ cat flonck.i lib/floatlib.i > stupid.intercal.i
20:38:14 <AnMaster> $ ../bin/ick -b stupid.intercal.i
20:38:16 <AnMaster> worked :)
20:38:20 <ais523> ehird: what line was that ON THE LINE TO?
20:38:32 <ais523> s/LINE/WAY/
20:38:52 <ais523> AnMaster: I strongly advise you to read the docs for flonck and floatlib, or you won't be able to figure out how the hell to use it
20:38:58 <ehird> ais523: 324
20:39:03 <AnMaster> ais523, I am reading the docs
20:39:09 <AnMaster> and well I'm deciding to NOT use it
20:39:33 -!- olsner has quit (Read error: 110 (Connection timed out)).
20:39:34 <AnMaster> ais523, just one thing, if you add a befunge bridge, be sure to not make the messages from befunge silly ;)
20:39:34 <ais523> ehird: I patched my version of unlambda.i because it had an error on line 323
20:39:44 <ais523> (4402) DO RESUME '?'"?!101~#128'$!101~.101'"~#65535'$#2'~#3
20:39:46 <ais523> is the correct lien
20:39:49 <ais523> s/lien/line/
20:40:00 <ehird> ais523: maybe include that in the next release?
20:40:02 <ais523> I thought I'd put the corrected version in the pit, though
20:40:05 <ais523> ehird: yes
20:40:52 <ais523> (oerjan didn't notice the error earlier because it was hidden by a bug in C-INTERCAL itself; when I corrected the C-INTERCAL bug, I had fix to unlambda.i which was relying on it)
20:41:37 <ais523> ehird: does it work now?
20:42:01 <ehird> ais523: gonna try
20:42:05 <ehird> hmm
20:42:09 <ehird> i want an editor that lets me:
20:42:25 <ehird> $ eddy -l323
20:42:28 <ehird> (4402) DO RESUME '?'"?!101~#128'$!101~.101'"~#65535'$#2'~#3
20:42:29 <ehird> ^D
20:42:31 <ehird> err
20:42:32 <ehird> make that
20:42:36 <AnMaster> ais523, you know all intercall errors in your head?
20:42:37 <ehird> eddy -l323 unlambda.i
20:42:38 <ehird> but yeah
20:42:42 <ehird> something that lets me do quick edits like that
20:42:46 <ehird> given precise information
20:42:48 <ais523> AnMaster: not the numbers, but I do know the word descriptions
20:42:54 <AnMaster> ais523, ah
20:43:01 <ais523> most of them are related to the error in some way
20:43:14 <AnMaster> ais523, "configdj.sh"?
20:43:17 <ais523> things like "IT CAME FROM BEYOND SPACE", for instance, are reasonably obvious
20:43:22 <ais523> AnMaster: for configuring it for DOS
20:43:25 <AnMaster> oh
20:43:35 <AnMaster> ais523, you don't do native windows binaries?
20:43:42 <ais523> AnMaster: no, what would be the fun in that?
20:43:49 <AnMaster> err, whateer
20:43:51 <AnMaster> whatever*
20:43:53 <ais523> you have to compile it yourself, I only distribute source
20:44:07 <AnMaster> but you do dos binaries?
20:44:11 <ais523> AnMaster: no
20:44:12 <AnMaster> ah
20:44:19 <AnMaster> but why support dos today?
20:44:24 <AnMaster> who on earth will use that!?
20:44:25 <ais523> AnMaster: because I don't support Windows
20:44:26 <ehird> haha
20:44:28 <ehird> yahoo! found me
20:44:29 <ehird> :D
20:44:34 <AnMaster> ais523, err?
20:44:39 <AnMaster> you said it did work on windows?
20:44:42 <ais523> AnMaster: Windows can run DOS programs
20:44:51 <ehird> AnMaster: The same reason that the documentation's filenames are random
20:44:52 <AnMaster> ais523, not in 64-bit windows
20:44:53 <ehird> (e.g. 4589fjas.htm)
20:44:58 <ehird> to maek them 8.3
20:45:00 <ehird> for DOS
20:45:13 <ais523> I'll have to go, this place closes at 9pm
20:45:13 <ehird> That is: It's in INTERCAL's spirit to support old, dead platforms.
20:45:20 <AnMaster> ais523, this place?
20:45:21 <ehird> ais523: bye :)
20:45:24 <ais523> AnMaster: library
20:45:24 <AnMaster> ais523, cya
20:45:26 <AnMaster> ah
20:45:28 <ais523> I can move to another connection if you like
20:45:37 <ais523> should I do that, or should I just go home?
20:45:42 <AnMaster> ais523, would like that :)
20:45:49 <ehird> ais523: me too
20:45:53 -!- ais523 has quit ("moving to a different connection").
20:45:59 <ehird> whee
20:46:29 <ehird> i wish yahoo slurp and googlebot came at a time when i had stuff on
20:46:29 <AnMaster> would it be possible to have a cleanly coded intercal compiler?
20:46:29 <ehird> :|
20:46:40 <ehird> AnMaster: Yes, but that would suck.
20:46:45 <ehird> The whole point of INTERCAL is that it's, you know, fun.
20:46:50 <ehird> And the compiler's obscurity reflects it
20:47:02 <ehird> INTERCAL's weirdness isn't just the language itself. It's its culture
20:47:07 <AnMaster> ehird, I find it fun to code perfect warning free code
20:47:09 <AnMaster> but whatever
20:47:41 <AnMaster> brb phone
20:48:19 <ehird> that's because you're obsessive about clean C
20:48:22 <ehird> an oxymoron if i ever heard one ;)
20:56:05 -!- ais523 has joined.
20:56:25 <ehird> welcome back
20:56:27 <ehird> where are you now? :p
20:57:13 <ais523> common room in my department
20:57:19 <ais523> in range of a wireless access point
20:58:09 <ehird> heh!
20:58:39 <ais523> how's the C-INTERCAL testing going?
20:58:54 <ehird> AnMaster went brb phone
20:58:56 <ehird> so nothing
20:58:58 <ehird> oh looky
20:58:59 <ehird> 5242 A Generalized Unified Character Code: Western European and CJK
20:58:59 <ehird> Sections. J. Klensin, H. Alvestrand. April 1 2008. (Format: TXT=31314
20:59:00 <ehird> bytes) (Status: INFORMATIONAL)
20:59:03 * ehird grabs it from ftp
20:59:17 <AnMaster> back
20:59:23 <ais523> ehird: link?
20:59:27 <ehird> ais523: getting one now
20:59:31 <ehird> i got that from the big .txt index of rfcs
20:59:45 <AnMaster> wow
20:59:48 <AnMaster> ehird, link!!!
21:00:00 <ehird> ftp://ftp.rfc-editor.org/in-notes/rfc5242.txt
21:00:09 <ehird> it was published 20 minutes ago apparently
21:00:15 <ehird> (it says 9:44 presumably +1)
21:00:17 <ehird> err wait
21:00:18 <ehird> hmm
21:00:19 <ehird> maybe 9am
21:00:20 <ehird> not sure
21:00:22 <ehird> but whatever, it's new
21:00:32 <ais523> I've been wondering about the April Fool's RFC
21:00:43 <ehird> hmm
21:00:46 <ehird> is this even april fools?
21:00:50 <ehird> maybe i'm reading too quickly
21:01:16 <ehird> unified-ccs@xn--iwem3b1f.xn--90ase1a.bogus.domain.name
21:01:19 <AnMaster> http://www.rfc-editor.org/rfc/rfc5241.txt
21:01:20 <ehird> that seems april foolsy
21:01:22 <AnMaster> is the rfc
21:01:28 <ais523> ehird: top of page 3 looks pretty aprilfoolsy
21:01:31 * SimonRC goes
21:01:40 <ais523> it's basically the opposite of the Unicode guidelines for such things
21:01:52 <AnMaster> ais523, ee
21:01:55 <AnMaster> eeh*
21:02:07 <ais523> middle of page 3 is even worse
21:02:45 <ehird> if its an april fools, its not very funny
21:03:22 <ais523> ehird: in that case, you've missed the joke entirely
21:03:26 <ehird> maybe
21:04:01 <ais523> wow, it allows you to define INTERCAL characters
21:04:10 <AnMaster> ais523, ehird or maybe: http://www.rfc-editor.org/rfc/rfc5241.txt is the joke one?
21:04:14 <ais523> INTERCAL's been missing <OJ> forever and has had to use a backspace as a replacement
21:04:50 <ehird> AnMaster: maybe
21:04:51 <ais523> "For example, the characters "b" and "d" are coded as o<VerticalLine><PositionLeft> and o<VerticalLine><PositionRight>, respectively."
21:04:57 <ais523> that surely isn't serious
21:05:07 <ehird> ais523: 5241 seems like a joke though
21:05:16 <ais523> maybe they're both jokes
21:05:43 <ehird> Raising an additional US$1 M from the rental of naming rights could
21:05:43 <ehird> significantly change the budget dynamics. Perhaps meeting fees could
21:05:43 <ehird> be reduced for all attendees or special subsidies could be provided
21:05:43 <ehird> to needy students, researchers, or job seekers.
21:05:43 <AnMaster> or none of them are?
21:05:43 <ais523> 5242 wasn't produced by the IETF; apparently, more than one standards body can produce RFCs
21:06:37 <ehird> 6.1. Acceptable Taste-Wise
21:06:44 <ais523> OK, 5242 is definitely a joke, no serious RFC leaves things as exercises for the reader
21:06:49 <ehird> IP: Garmin GPS Destination Address
21:06:53 <ehird> IP: White & Day Mortuary Time-to-live
21:06:57 <ehird> TCP: Princess Cruise Lines Port Number
21:07:01 <ehird> ARP: Springfield Preschool Timeout
21:07:04 <AnMaster> ok
21:07:05 <ehird> BGP: Sharpie Marker field
21:07:09 <ehird> TFRC: Traveler's Insurance Loss Period
21:07:13 <ehird> SCTP: Hershey's Chunk {type|flags|length}
21:07:13 <ehird> SMTP: eHarmony HELO
21:07:13 <ehird> 5241 is certainl the funnier one
21:07:13 <ehird> ais523: but its not as funny as 5241
21:07:13 <ehird> because its the biggest bikeshed ever
21:07:23 <ehird> Upon the adoption of this proposal the RFC Editor SHALL create XML
21:07:23 <ehird> versions of all IETF RFCs. The XML must be such that a perfect copy
21:07:23 <ehird> of the original RFC can be produced using a tool such as xml2rfc
21:07:23 <ehird> [XML2RFC]. The XML versions of RFCs must identify all individual
21:07:23 <ehird> protocol fields using an XML protocol field element of the form:
21:09:21 <AnMaster> " between a term that would best represent the half-life of an Internet
21:09:22 <AnMaster> startup (1 or 2 years)"
21:10:13 <ehird> hah
21:12:38 <ais523> http://www.google.com/virgle/images/opensource.jpg
21:12:43 <ais523> that's a great image
21:14:03 <AnMaster> ais523, what is the other figure?
21:14:06 <AnMaster> the non-tux one
21:14:10 <ehird> AnMaster: an alien
21:14:14 <AnMaster> ah
21:14:15 <ehird> virgle is a space travel joke
21:14:16 <AnMaster> not a logo then
21:14:18 <ais523> ehird: you beat me to it
21:14:25 <ehird> its also one of the Google Talk avatars you can select
21:14:31 <AnMaster> yes I read the Virgle stuff
21:14:32 -!- Judofyr has quit.
21:14:40 * ehird is full of knowledge
21:14:46 <AnMaster> Google Talk? never used it
21:15:10 <ais523> neither have I, but I think it's just an interface to Jabber
21:15:24 <ehird> yeah
21:15:28 <ehird> pretty much
21:15:36 <ehird> i use the address for my jabber stuff
21:17:42 <ehird> [21:17] <freebird> Rienzilla, what do you mean by physical devices ...
21:17:46 <ehird> [21:17] <Rienzilla> a thing
21:17:50 <ehird> [21:17] <Rienzilla> if you throw it at someone, it might hurt :)
21:17:55 <ais523> ehird: which channel was that in?
21:17:58 <ehird> ais523: #debian
21:20:10 <AnMaster> ais523, oh and I'd like to know more about details for funge <-> intercal stuff
21:20:14 <AnMaster> ie, exactly what you mean
21:20:48 <AnMaster> oh and any patches will not be accepted in the current coding style of ick ;P
21:20:48 <ais523> well, maybe I should show you an example of INTERCAL <-> C, then we can discuss how it would apply to funge
21:20:54 <ais523> AnMaster: they won't be
21:21:02 <ehird> http://adsense.blogspot.com/2008/04/introducing-adsense-for-conversations.html
21:21:20 <ehird> Orkut also displayed name as Yoghurt
21:21:28 <ehird> 'Google launches Dajare in Japan (google.co.jp), with the mission of "organizing the world’s laughter." [2]'
21:21:33 <ehird> 'Google announces gDay in Australia (http://www.google.com.au/intl/en/gday/press.html), a new beta search technology that will search web pages 24 hours before they are created.'
21:21:38 <AnMaster> ehird, yes didn't get that one
21:21:40 <ehird> 'Google announces Google 사투리 번역 (Google dialect translation) for translating regional dialects of Korean to and from Standard Korean.[3]'
21:21:41 <AnMaster> the last I mean
21:21:42 <AnMaster> err
21:21:47 <AnMaster> Dajare I mean
21:21:49 <ehird> 'Google added the "I'm Feeling Lucky" button to its calendar feature. When you tried to create a new event, you were given the regular option of entering the correct details and hitting "Create Event," and also the new option of "I'm Feeling Lucky" which would set you up with an evening date with, among others, Matt Damon, Eric Cartman, Tom Cruise, Jessica Alba, Pamela Anderson, Paris Hilton, Angelina Jolie, Britney Spears, Anna Kournikova, Johnny Depp,
21:21:49 <ehird> George W. Bush, or Lois Griffin.'
21:21:56 <ehird> 'Google launched their "Wake Up Kit" as a calendar notification option. The option sends a series of increasingly aggressive alerts, starting with an SMS message to your cellphone, and ending with a bucket of water dumped into your bed, which would then flip over, tossing you out (all using apparently-free equipment).'
21:22:03 <AnMaster> ehird, it is just easier to paste link to wikipedia you know
21:22:03 <AnMaster> :P
21:22:03 <ehird> 'A little easter egg was added, where a user can click the file menu and directly under new document is "New Airplane" which immediately opens a copy of a Google branded paper airplane. To reach the file menu, click the new menu, then "Document" then a new window opens.' (google docs)
21:22:08 <ehird> AnMaster: stuff you :D
21:22:13 <ehird> 'Google launches Manpower Search (谷歌人肉搜索) in China (google.cn). This new feature is powered by 25 million volunteers who do the searching around the clock. When the user entered a keyword, volunteers will search any possible answers from a mass of paper documents as well as online resources. The user is expected to get the search result within 32 seconds.'
21:22:18 <ehird> 'Google Books has a new section allowing users to 'scratch and sniff' certain books. Users are asked to "...please place your nose near the monitor and click 'Go'" which then 'loads odours'. When clicking on 'Help' users are redirected to a Google Book page entitled "Belgravia: A London Magazine"'
21:22:19 <ehird> there
21:22:20 <ehird> that's all of em
21:22:20 <ehird> heh
21:22:51 <ais523> AnMaster: the way INTERCAL <-> C linking works is this:
21:22:52 <AnMaster> so far
21:23:01 <ais523> you designate functions inside a C program using ICK_EC_FUNC_START
21:23:20 <ais523> which basically defines a wrapper around a void(*)(void)
21:24:01 <ais523> you can write COME FROM, NEXT, NEXT FROM, RESUME, FORGET, and CREATE inside the C function using C-named statements (like ick_comefrom)
21:24:31 <ais523> when the INTERCAL program encounters a line label, it calls all the specially-marked C functions, and jumps between the ick_comefrom calls in them using a chain of gotos
21:24:47 <AnMaster> hm
21:24:52 <ais523> and if any of them want to do the comefrom, they can steal execution and transfer it to the body of the program
21:25:09 <AnMaster> that will be terribly hard to do in befunge
21:25:11 <ais523> (actually I pass through all of them once to verify that there's exactly one COME FROM, and then again to jump to the right one if there is)
21:25:22 <AnMaster> even if you could say have M for come from
21:25:24 <ais523> in Befunge, you'd have a fingerprint add COME FROM, etc., to the language
21:25:25 <AnMaster> what parameters to M?
21:25:28 <AnMaster> you couldn't know
21:25:32 <AnMaster> until you hit it
21:25:33 <ais523> AnMaster: it would have to take them from the playfield
21:25:42 <AnMaster> ais523, they can be stored anyhow
21:25:44 <ais523> as far as I can tell it's the only solution
21:25:48 <AnMaster> vertically or whatever
21:26:13 <AnMaster> or using x, anywhere at all
21:26:14 <AnMaster> indeed
21:26:22 -!- Iskr has quit ("Leaving").
21:26:31 <ais523> you could write the char for 1666 followed by M, to do a COME FROM (1666)
21:26:35 <AnMaster> well
21:26:41 <ais523> and modify the playfield to do computed COME FROMs
21:26:42 <AnMaster> char for it?
21:26:56 <AnMaster> you need maths to push on the stack
21:26:59 <AnMaster> like say
21:27:21 <ais523> AnMaster: do you think it should run a Befunge program instead to calculate the line label?
21:27:30 <ehird> ais523: c-intercal downloads are absolutely crushing my traffic
21:27:31 <ehird> not
21:27:40 <ehird> not one person apart from you three have downloaded the tgz yet
21:27:45 <ais523> something like M1a*6+a*6+a*6+@
21:27:52 <ais523> would be COME FROM 1666
21:27:53 <AnMaster> f7*6+
21:27:56 <AnMaster> to get 111
21:27:58 <AnMaster> I think
21:28:26 <AnMaster> but you could store that as:
21:28:29 <ehird> ICL240I ERROR HANDLER PRINTED SNIDE REMARK
21:28:31 <ehird> brilliant
21:28:32 <ais523> and then when the line (1666) was reached, the Befunge program would gain control from the M, but going, for instance, downwards, so that it didn't hit the calculate line number code
21:28:37 <AnMaster> M+6*7f<
21:28:39 <AnMaster> ais523, ^
21:28:43 <AnMaster> or vertically or so on
21:29:05 <AnMaster> or do you mean a marker in the code?
21:29:06 <ais523> AnMaster: you mean it would look for < ^ > v on the same line as the COME FROM
21:29:14 <ais523> the M would be the marker
21:29:15 <AnMaster> ais523, wouldn't work
21:29:25 <AnMaster> but I guess you could restrict it to a special format
21:29:25 <ais523> AnMaster: what's the issue here?
21:29:42 <AnMaster> ais523, using x it may be stored diagonally or whatever as well
21:29:55 <ais523> so there needs to be some kind of marker
21:30:11 <ais523> or you would have to restrict it to ordinary-moving IPs
21:30:26 <AnMaster> you would have to restrict to cardinal IPs you mean?
21:30:31 <ais523> yes
21:30:37 <AnMaster> ^>v< is called cardinal ;P
21:30:38 <ais523> cardinal, and one char at a time
21:30:40 <AnMaster> in befunge-speak
21:30:56 <AnMaster> which, considering how intercal speak looks, I feel isn't so bad
21:31:03 <AnMaster> ;P
21:31:06 <oklopol> intercal looks so awesome
21:31:13 <AnMaster> no comments
21:31:16 <ais523> oklopol: you been playing with the new compiler too?
21:31:24 <oklopol> ais523: i haven't done anything with intercal
21:31:34 <oklopol> but i love the way it mixes ork and malgolbe
21:31:36 <oklopol> *malbolge
21:31:37 <AnMaster> ais523, oh another thing, how would you locate Ms?
21:31:42 <AnMaster> remember funge-space can change
21:31:47 <ais523> AnMaster: look at the playfield
21:31:54 <AnMaster> and well my funge-space doesn't work well for searching in
21:31:57 <ais523> whenever you reached a line number you'd have to scan the playfield for Ms
21:32:10 <ais523> and don't worry about the efficiency of COME FROM, it's inefficient more or less by definition
21:32:12 <AnMaster> ais523, that would be awesomelly slow
21:32:25 <AnMaster> ais523, because I use a hash library
21:32:27 <ais523> what about caching a list of all playfield locations with Ms in
21:32:34 <AnMaster> ais523, ok you could do that
21:32:40 <AnMaster> wouldn't be to hard
21:32:50 <AnMaster> you would need to hook into the loading routines for files
21:32:54 <AnMaster> and into set routine
21:32:59 <AnMaster> to notice when new are added
21:33:04 <AnMaster> well all use the set one
21:33:08 <AnMaster> so not too hard
21:33:24 <ais523> no, not hard at all
21:33:31 <AnMaster> FUNGE_FAST static inline void FungeSpaceSetNoBoundUpdate(FUNGEDATATYPE value, const fungePosition * restrict position)
21:33:33 <AnMaster> that :)
21:33:42 <AnMaster> FUNGE_FAST expands to regparam(3) attribute btw
21:33:46 <AnMaster> on i386
21:34:01 <AnMaster> # define FUNGE_FAST __attribute__((regparm(3)))
21:34:03 <ais523> anyway, COME FROM, NEXT FROM, and line labels are the 'feral' things that can gain control from anywhere
21:34:22 <AnMaster> ais523, hope you won't barf on that calling convention ;)
21:34:27 <oklopol> pancakes
21:34:30 <ais523> AnMaster: I shouldn't
21:34:50 <ais523> oklopol: why not download C-INTERCAL 0.28 and run some of the example programs?
21:35:24 <ehird> oklopol: intercal predates ork and malbolge
21:35:35 <AnMaster> ais523, hm, hope so, well stuff will fail if you compile one bit with gcc and another with another c compiler
21:35:44 <ais523> AnMaster: -e requires gcc to work
21:35:45 <ehird> AnMaster: I find your micro-optimization disturbing.
21:35:58 <AnMaster> ehird, well you didn't like clean code did you?
21:35:58 <oklopol> ehird: i know it does
21:36:05 <ais523> ehird: AnMaster put lots of effort into beating ccbi by as much as possible
21:36:06 <oklopol> that's a bit beside the point
21:36:11 <ehird> ais523: quite
21:36:12 <AnMaster> ais523, correct
21:36:20 <AnMaster> and I beat it very very far on x86_64
21:36:20 <ehird> oklopol: and if you do download it.. http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz :D
21:36:25 <ehird> i'm like sgeo
21:36:28 <ehird> without the psox
21:36:52 <ais523> oklopol: actually, the command syntax of both ORK and INTERCAL parodies COBOL, so in that sense it's not surprising that they're similar
21:37:54 <AnMaster> ais523, is intercal case sensitive?
21:38:02 <ais523> AnMaster: yes by default
21:38:09 <AnMaster> by default *sigh*
21:38:19 <ais523> there's a define somewhere in the lexer that lets you change that
21:38:29 <ais523> but it's compiled in, and I don't know of anyone who changed it
21:38:36 <AnMaster> k
21:38:47 <AnMaster> well I got nothing against case sensitivity
21:39:19 <AnMaster> I just thought it would look very different with lower case
21:39:28 <oklopol> the point was not that intercal is like ork/malbolge, just that it mixed the two styles in a fun way.
21:39:41 <oklopol> i mean, superficially, i really don't know anything about it
21:40:01 <ais523> oklopol: the flow control model is actually really interesting once you get used to it
21:40:02 <AnMaster> ais523, as for "look for < on same line"
21:40:05 <AnMaster> that wouldn't really work
21:40:23 <ais523> AnMaster: agreed, it seems a bit hacky
21:40:24 <AnMaster> ais523, another thing, the value in question you should look for should be in RPN notation, going towards M
21:40:28 <AnMaster> that is what you need
21:40:28 <ais523> like DO loops in Fortran
21:40:58 <AnMaster> ais523, there are fingerprints that allow moving the ip one line down without changing delta anyway ;P
21:40:58 <ais523> AnMaster: INTERCAL allows non-constants in COME FROMs, but Befunge can do that anyway using p
21:41:34 <ais523> as for searching for < and so on, it wouldn't really be a case of doing it because that's the only way to reach the M
21:41:44 <ais523> more a case of you have to write it like that so that the compiler can find it
21:43:04 <AnMaster> ais523, well you would have to maintain a cache, because I want to be able to just take out most of the funge-space stuff and replace it
21:43:04 <ais523> either that, or you could add some sort of marker character that marked the start of a COMEFROM input, with M at the end
21:43:17 <AnMaster> ais523, as profiling show that is the slowest bit for x86_64
21:43:21 <AnMaster> by far
21:43:49 <ais523> well, it would be possible to write a search-for-Ms-script in pure Befunge
21:43:57 <ais523> ridiculously slow, but avoid messing with the interpreter
21:44:04 <AnMaster> ais523, well a hook would be easy
21:44:11 <AnMaster> the general layout would be maintained for such stuff
21:44:42 <AnMaster> just the actual calls to the hash library may change drastically
21:45:53 <ais523> you could do the hook as a function call to a function that isn't in your compiler guarded by a #define
21:47:10 <AnMaster> yes sure I could add a function pointer hook
21:47:25 <AnMaster> I need something like that for my debugger protocol anyway
21:48:07 <ais523> AnMaster: is cfunge reentrant?
21:48:40 <AnMaster> ais523, depends, I may use non _r stuff
21:48:42 <ais523> that is, can I simulate a function call by taking control from the hook, doing my own things, and then calling cfunge again to cause it to simulate things in a different place, with the old IP still on the C call stack?
21:48:44 <AnMaster> but well what do you mean
21:48:53 <AnMaster> ais523, I got no clue
21:48:55 <AnMaster> I never tried
21:49:00 <ais523> no, most people don't
21:49:13 <AnMaster> ais523, I mean, that is not something I planned for
21:49:22 <ais523> it would be needed for function calls out of Befunge to the INTERCAL program to work
21:49:34 <ais523> if the INTERCAL program was allowed to call back to the Befunge from there
21:49:52 <AnMaster> ais523, well I do use global variables for stuff
21:50:05 <AnMaster> and if you do from hook into funge space code, well things would be uggly
21:50:20 <ais523> the ideal situation would be if you used global variables for everything but the IP
21:50:32 <ais523> but it's trivial to work around that being global too by making a local copy
21:50:35 <AnMaster> ais523, the ip/ip list is a static variable
21:50:48 <AnMaster> ip is then passed around
21:51:18 <AnMaster> ip list is currently passed around as well but I plan to change that for performance reasons
21:51:23 <ais523> OK, I think I could make that work with single-threaded Befunge, no idea how it would work with concurrency in the Befunge program
21:52:04 <AnMaster> ais523, you know, I'm not sure how I made concurrency work with befunge at all in some places ;P
21:52:18 <AnMaster> concurrency in befunge really makes stuff complex
21:52:30 <AnMaster> one reason for the debugging protocol stuff
21:52:39 <AnMaster> brb
21:54:36 <ehird> tons o' Ubuntu users
21:54:38 <ehird> or is that me
21:54:57 <ais523> ehird: probably you and me
21:55:14 <ais523> disregard your own IP range
21:55:30 <ais523> and mine's 147.188.0.0/16 when I'm here
21:56:37 -!- cherez has joined.
21:56:53 <ais523> ehird: now if you were really doing a Sgeo, you'd spam cherez at this point
21:57:35 <ehird> oops
21:57:46 <ehird> cherez: Tried out C-INTERCAL 0.28?
21:57:50 <ehird> ...
21:57:52 <ehird> cherez: ping
21:57:58 <ehird> cherez: Hello??????
21:58:03 <ehird> :D
21:58:14 <AnMaster> Gentoo
21:58:24 <ehird> AnMaster: Windows
21:58:49 <ais523> are you both calling out the names of operating systems at random, or is there some purpose to that?
21:58:57 <ehird> i have no idea
21:59:07 <ehird> is sgeo gone, by the way?
21:59:08 <cherez> ehird: pong
21:59:11 <ehird> i haven't seen him recently
21:59:17 <ehird> cherez: ignore me, i was imitating Sgeo
21:59:24 <cherez> I figured as such.
21:59:39 <cherez> Always spamming me.
21:59:43 <ais523> I released a new version of the C-INTERCAL compiler today, and ehird is hosting it and therefore decided to spam everyone about it
22:01:45 -!- cherez has quit (Read error: 104 (Connection reset by peer)).
22:02:04 <Deformative> ais523: ?
22:02:12 <ais523> I just pinged everyone in #esoteric
22:02:14 <AnMaster> ais523, oh and for cfunge you need to distrbuted version control system bazaar installed
22:02:14 -!- cherez has joined.
22:02:15 <ais523> out of interest, mostly
22:02:20 <AnMaster> version 0.92 or later
22:02:28 <AnMaster> 1.3 recommended
22:02:42 <ais523> strangely, not everyone replied, maybe because their clients don't do CTCP ping
22:02:43 <AnMaster> ais523, and bzr needs python, so for DOS you got to copy the files ;P
22:02:55 <ehird> that's more interesting
22:02:57 <ais523> RodgerTheGreat was fastest, by the way, and lament was slowest
22:03:08 <ehird> 'VERSION'
22:03:10 <ehird> not Version
22:03:22 <AnMaster> ehird, mine sent Version?
22:03:22 <ais523> [CTCP] Received Version request from ehird to channel #esoteric.
22:03:27 <ehird> oh
22:03:28 <ehird> okay then
22:03:30 <ais523> ehird: that's pretty bad
22:03:36 <AnMaster> I'm quite sure mine sent VERSION
22:03:37 <ehird> ais523: ?
22:03:39 <ehird> yeah
22:03:41 <ehird> konversation bug
22:03:51 <ehird> [22:02] [CTCP] Received CTCP-VERSION reply from Deewiant: Deewiantbot version NaN
22:03:55 <ais523> ehird: worked for me
22:04:03 <ais523> I wrote /ctcp #esoteric version
22:04:04 <AnMaster> -Deewiant- VERSION Deewiantbot version NaN
22:04:11 <AnMaster> * Received a CTCP version from ais523 (to #esoteric)
22:04:16 <AnMaster> ais523, you sent lower case
22:04:33 <ais523> so Konversation doesn't automatically upcase ctcps?
22:04:38 <AnMaster> no clue
22:04:39 <ais523> I got lots of responses, anyway
22:04:45 <ais523> some were also in lowercase
22:04:47 <AnMaster> it may do
22:04:53 <ais523> like the ones from RodgerTheGreat and clog
22:04:55 <AnMaster> I sent upper case I'm sure
22:04:59 <AnMaster> /ver #esoteric
22:05:08 <ehird> no
22:05:09 <AnMaster> and I got all upper case
22:05:12 <ehird> konversation titlecases thm
22:05:13 <ehird> on recieve
22:05:19 <ais523> AnMaster: you sent your answer in uppercase
22:05:24 <AnMaster> -RodgerTheGreat- VERSION Colloquy 2.1 (3761) - Mac OS X 10.4.11 (Intel) - http://colloquy.info
22:05:27 <AnMaster> that
22:05:35 <AnMaster> ais523, yes I know
22:05:47 <AnMaster> ais523, I love my irc client you know what one it is
22:06:08 <AnMaster> should put "made with emacs" on cfunge website
22:06:10 <AnMaster> ;P
22:06:10 <ais523> well, I like Konversation, and telnet, but for almost opposite reasons
22:06:12 <AnMaster> well got to sleep now
22:06:59 <ehird> byebye AnMaster
22:07:01 <ehird> :p
22:08:20 <ais523> BTW, the CLC-INTERCAL maintainer gave me some clues on how to do an IRC client in CLC-INTERCAL, so I may have a go at that
22:10:02 <ehird> ais523: you should make a graphical intercal
22:10:05 <ehird> program = tree structure
22:10:16 <ehird> it should be 'helpful' in various ways that are more useless than helpful
22:10:20 <ehird> also, use Athena or something else outdated
22:10:24 <ehird> but make it look like Motif
22:10:35 <ehird> because 'that's what you're used to on your SCO Unix desktop'
22:11:00 <ehird> 'You can see motiflook.c and modify it if you are used to another desktop look (such as Tk or Xt).'
22:14:05 <ehird> ais523: no? ;)
22:14:13 <ais523> ehird: not entirely sure what you mean
22:14:17 <ais523> do you mean graphical source code
22:14:21 <ais523> or a graphical IDE, or what
22:16:10 <ehird> ais523: both
22:16:20 <ehird> ais523: it gets 'serialized to INTERCAL for the compiler'
22:16:29 <ehird> but you can only serialize it from the program, and only to put it in the compiler
22:16:34 <ehird> to save it, it uses a complex format
22:16:38 <ehird> which is like a bitmap with semantic metadata
22:16:47 <ais523> ehird: no, I'd prefer to have some proper way to convert to INTERCAL
22:16:47 <ehird> ais523: but a graphical IDE using graphical source code
22:16:50 <ehird> i.e. the program is a tree
22:16:52 <ehird> :D
22:16:56 <ehird> ais523: offer a perl script
22:17:01 <ais523> although doing it using a decompiler that reverses C-INTERCAL's effect would be interesting
22:17:02 <ehird> it parses the bitmap, does OCR on the text
22:17:07 <ehird> and uses the semantic metadata to convert to text
22:17:52 <ehird> and say 'If you do not have a PERL implementation on your system, you can telnet in to my box at ais.cwrccu.mit.edu and copy it from /usr/sww6/r/bin/perl.'
22:17:54 <ehird> :D
22:20:27 <ehird> ais523: Maybe I'm the only person that is amused by that
22:20:32 <ehird> Prboably.
22:20:36 <ehird> Oh look, msnbot is poking around my site.
22:20:39 <ehird> I'm popular.
22:20:40 <ais523> I do like the idea of copying a binary acrss
22:20:54 <ais523> ehird: this just goes to show that Google and Yahoo! are faster at indexing than Windows Live
22:20:59 <ehird> Someone just tried with Lynx and w3m..
22:21:23 <ais523> ehird: are you getting some idea of what the popularity of INTERCAL is like, now?
22:21:28 <ehird> I bet they were going to say 'YOUR SITE DOESN'T WORK IN HIGHLY IMPORTANT TEXT ONLY BROWSERS. THEY CANNOT DOWNLOAD C-INTERCAL. ALSO BLIND PEOPLE CANNOT EITHER. FIX YOUR WEBSITE TO W3CSTANDARDX'
22:21:34 <ais523> remember that many people will be downloading from the other websites
22:21:40 <ehird> :D
22:21:42 <ehird> ais523: Yeah, that's true
22:21:43 <ais523> ehird: it does work in w3m, presumably?
22:21:48 <ais523> actually, I'll test
22:21:52 <ehird> yeah, i'm sure it does
22:21:55 <ehird> look at the dir listing source
22:21:56 <ehird> very simple
22:22:11 <ais523> yep, it's fine
22:22:15 <ehird> just the skeleton, an H2, and a PRE
22:23:09 <ais523> and ehird, I wouldn't be at all surprised if text-browser usage and INTERCAL usage were positively correlated
22:23:42 <ehird> yeah
22:23:50 <ehird> but i think it was just someone trying to find something to whine about
22:23:56 <ehird> there's a lot of people who do that with text-only browsers
22:24:02 <ehird> like someone complained about reddit not being usable in lynx
22:24:23 <ais523> hmm... it seems the largest INTERCAL programs in the examples are unlambda.i, quine.i and interfunge.i in that order
22:24:27 <ehird> the dir listing is really usable via lynx actually
22:24:37 <ais523> ehird: yes, via w3m too
22:25:17 <ehird> -debug DO NOT USE -- w3m
22:25:20 <ehird> i love that doc
22:25:36 <ais523> there's a similar option in C-INTERCAL
22:25:41 <ehird> ais523: elinks too. of course it does, its an html, head, title, body, h2, and pre with a
22:25:45 <ehird> oh, and an hr
22:25:50 <ehird> hardly any possibility to go wrong
22:25:53 <ais523> generated programs have a +mystery option that is deliberately undocumented
22:26:42 <ehird> what DOES it do?
22:26:49 <ais523> ehird: normally nothing
22:27:08 <ais523> if you happened to compile with the constant-output optimiser, though, it cuts off the program after 4 billion steps
22:27:17 <ehird> ais523: btw c-intercal won't -F quine.i
22:27:17 <ais523> and returns with an unusual error code
22:27:20 <ehird> maybe runs a bit too long
22:27:43 <ais523> ehird: I doubt that's the problem, it's likely something else, because -F is pretty conservative
22:27:53 <ehird> beer.i too
22:28:47 <ais523> actually, -F isn't working at all for me at the moment
22:28:53 <ais523> it doesn't work on primes.i, but used to
22:29:18 <ais523> so I've probably broken it somewhere
22:29:35 <ais523> oh well, at least it still bumps gcc up to -O3
22:29:43 <ais523> I'll have to look into what's wrong there, as well
22:33:30 <ehird> ais523: http://en.wikipedia.org/wiki/Continuation
22:33:32 <ehird> the example there
22:33:39 <ehird> will it work with continuation.i?
22:33:42 <ais523> ehird: that requires an interactive program
22:33:51 -!- oklopol has quit (No route to host).
22:33:55 <ais523> you can't set up the calls in the right way, because the continuations themselves run off
22:34:11 <ais523> e.g. it calls theContinuation multiple times, but never gets control back again
22:35:45 <ehird> yeah
22:35:48 <ehird> i guess so
22:35:53 <ehird> ais523: implement an intercal repl!
22:36:00 <ais523> repl?
22:36:46 -!- wildhalcyon has joined.
22:37:24 <ehird> ais523: Read,Eval,Print,Loop
22:37:35 <wildhalcyon> Hi folks
22:37:37 <ais523> there's intercalc, which is a CLC-iNTERCAL version
22:37:39 <ais523> hi wildhalcyon
22:37:40 <ehird> You can actually define it like that in a forth-alike
22:37:44 <ais523> we were discussing INTERCAL
22:37:47 <ehird> : loop read eval print loop ;
22:37:57 <wildhalcyon> INTERCAL, huh?
22:38:07 <ais523> I released a new version of C-INTERCAL today
22:38:12 <wildhalcyon> oh? congrats
22:38:35 <ais523> and a new version of the rival CLC-INTERCAL was also released
22:39:20 <wildhalcyon> I didn't know you were in charge of C-INTERCAL development.
22:39:33 <ehird> DID I MENTION I HOST A MIRROR?
22:39:38 <ehird> ok, this sgeo imitation is getting old
22:39:45 <ehird> i'll stop now
22:39:52 <ais523> well, I just released the last few versions, and eventually decided that I was the de facto C-INTERCAL maintainer
22:40:30 <wildhalcyon> ehird, you could imitate me. Just claim that you've invented some particularly well-known entity.
22:40:34 <ehird> ais523: you seem to be the only one who actually works on it
22:40:45 <ehird> wildhalcyon: I invented mirrors! Take a look: http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz Aren't they cool?
22:40:46 <ehird> like that?
22:40:49 <ais523> ehird: Joris Huizer has sent me a lot of patches
22:40:56 <wildhalcyon> yeah, pretty much :-)
22:41:17 <ais523> I can normally expect a bugfix from Joris within a week or so of releasing a new version
22:42:12 <wildhalcyon> so who's Eric Raymond then?
22:42:22 <ehird> wildhalcyon: who's Eric Raymond?
22:42:22 <ehird> Hah!
22:42:37 <wildhalcyon> I've heard the name a few times.
22:42:44 <ehird> I'd say "an idiot", other people say "a revolutionary"
22:42:46 <wildhalcyon> man, I'm really sounding pretty ignorant these days
22:43:00 <wildhalcyon> I know he's kind of been pioneering the open source stuff
22:43:04 * ais523 remembers Raymond, Stallman and Torvalds as being some of the best known names in Open Source
22:43:07 <ehird> basically - apparently is 'integral to the open source movement' but doesn't really do anything
22:43:14 <ehird> and basically he himself claims that
22:43:25 <ehird> he wrote 'fetchmail', and that's about it. and fetchmail is more of a shame than a positive thing
22:43:36 <ais523> also gpsd
22:43:43 <ehird> also, he's very egotistical, a gun nut and intolerant. BUT that's just my opinion.
22:43:46 <ehird> Other people like him.
22:43:47 <ais523> and C-INTERCAL, of course
22:43:50 <ehird> ais523: Well, yes.
22:44:18 <ehird> i did find 'How to be a hacker' amusing, though, because it should have been titled 'How to be me'
22:44:20 <wildhalcyon> ... what's gpsd?
22:44:25 <ehird> wildhalcyon: Make your own decisions. http://www.catb.org/~esr/
22:44:41 <ais523> wildhalcyon: daemon for communicating with a GPS receiver
22:44:50 <ais523> I happened to be using it recently
22:45:04 <wildhalcyon> so ais, are you now the defacto maintainer of C-INTERCAL? Did Eric abandon it?
22:45:18 <ehird> eric abandoned it pretty much
22:45:43 <ais523> it hadn't been updated in a year
22:45:44 <wildhalcyon> Well, glad someone took it up
22:45:48 <ais523> well, more than a year
22:45:52 <wildhalcyon> INTERCAL is outstanding. I'd hate to lose it
22:45:57 <ais523> so I forked but used the next available version number
22:46:01 <ais523> and then it just continued from there
22:52:03 <ais523> oh well, conversation seems to have died now, and it seems unlikely I'll get many more requests for help, bugfixes, etc. right now, so I may as well go home
22:52:41 <RodgerTheGreat> bbl folks
22:52:44 -!- RodgerTheGreat has quit.
22:52:48 <ehird> oop
22:52:55 <ehird> just as i was about to write an intercal program
22:52:55 <ehird> :)
22:53:03 <ehird> bye, ais523!
22:54:32 <ais523> umm... I didn't mean to set away
22:54:36 <wildhalcyon> oh, okay, bye
22:55:12 -!- ais523 has quit ("bye, everyone!").
23:18:59 -!- kwertii has joined.
23:19:27 -!- timotiis has quit ("leaving").
23:46:34 -!- jix has quit ("CommandQ").
23:56:42 <ehird> hello
2008-04-02
00:22:47 -!- olsner has joined.
00:42:03 -!- olsner has quit (Read error: 110 (Connection timed out)).
00:46:32 -!- olsner has joined.
00:56:32 -!- sebbu has quit ("@+").
01:04:59 -!- olsner has quit (Read error: 110 (Connection timed out)).
01:05:34 -!- olsner has joined.
01:16:19 -!- oklopo has joined.
01:25:15 -!- RodgerTheGreat has joined.
01:28:26 -!- wildhalcyon has left (?).
02:14:36 -!- ehird has quit ("Konversation terminated!").
02:27:42 -!- GreaseMonkey has joined.
02:28:15 <GregorR> So, y'know how I mentioned that JSMMIX was too slow?
02:28:19 <GregorR> I just wrote JSMIPS 8-O
02:29:03 <GregorR> Hm, ehird isn't on :P
02:55:10 -!- oklopo has changed nick to oklopol.
04:14:37 -!- oklopol has quit (Read error: 113 (No route to host)).
04:19:41 -!- Sgeo has joined.
04:57:58 <Sgeo> No xkcd tonight, Randall's taking a vacation.
05:14:52 -!- kwertii has quit ("bye").
06:07:08 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
06:23:43 -!- RedDak has joined.
06:26:38 -!- calamari has joined.
06:35:14 -!- calamari has quit ("Leaving").
07:10:44 -!- adu has joined.
07:42:28 -!- RedDak has quit (Remote closed the connection).
07:48:07 -!- adu has quit (Remote closed the connection).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:12:20 -!- olsner has quit (Read error: 110 (Connection timed out)).
08:23:41 -!- Deformati has joined.
09:15:44 -!- GreaseMonkey has quit ("So long, and thanks for all the CPU time!").
09:20:18 -!- Iskr has joined.
10:14:53 <GregorR> JSMIPS is coming together much better than JSMMIX did ^^
10:25:27 <AnMaster> Deewiant, is it allowed to make the , instruction output the cell as UTF8?
10:25:40 <AnMaster> or maybe UCS4
11:22:53 <AnMaster> Deewiant, I made ccbi segfault
11:23:21 <AnMaster> Deewiant, in REFC, I believe, I fixed the valgrind error that happened for cfunge in that one, but well I don't know where ccbi segfaults
11:24:31 <AnMaster> Deewiant, basically 0D before you do any R, test code (complex because it was found using fuzz testing) at http://rafb.net/p/zjR5x060.html
11:27:08 -!- bsmntbombdood has quit (Read error: 113 (No route to host)).
11:36:04 <AnMaster> Deewiant, in fact this is enough to crash ccbi: "CFER"4(0D @
11:39:48 <AnMaster> Deewiant, oh wait, you crash on any invalid value to D
11:39:52 <AnMaster> that is bad
11:41:13 -!- olsner has joined.
12:42:53 -!- oklopol has joined.
12:45:30 -!- oklopol has quit (Client Quit).
12:45:44 -!- oklopol has joined.
13:12:08 -!- fizzie has joined.
13:18:04 -!- oklopol has quit (Read error: 113 (No route to host)).
13:52:18 <Deewiant> AnMaster: yep, doing array[ip.stack.pop()] isn't a good idea ^_^
14:24:09 -!- RedDak has joined.
14:33:13 <RodgerTheGreat> GregorR: is JMIPS a MIPS-architecture CPU simulator written in JavaScript?
14:59:45 -!- jix has joined.
15:31:21 <AnMaster> Deewiant, hope you fixed it :)
15:31:33 <Deewiant> AnMaster: yep, 1.0.8
15:31:55 <AnMaster> Deewiant, oh btw I found some new nifty functions to microoptimize with, mostly to irritate ehird really
15:32:00 <AnMaster> posix_fadvice
15:32:09 <AnMaster> and posix_fallocate
15:32:23 <AnMaster> Deewiant, ;)
15:32:38 <Deewiant> sigh >_<
15:32:43 <AnMaster> look up the man pages if you want the details, anyway I check if they are available ;P
15:33:07 <AnMaster> <insert manical laughter here />
15:33:19 <AnMaster> Deewiant, ;P
15:34:25 <AnMaster> Deewiant, however man posixoptions is interesting
15:44:49 -!- bsmntbombdood has joined.
16:00:35 -!- Sgeo has joined.
16:34:26 -!- RedDak has quit (Remote closed the connection).
17:34:08 <AnMaster> Deewiant, I'm rewriting parts of the hash library to make it less generic, and more fit for cfunge
17:34:12 <AnMaster> that is helping actually
17:36:01 <AnMaster> shaved about 0.010 seconds of the hash stuff, which is around 1/5 of the time spent in that code
18:01:15 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
18:18:26 -!- sebbu has joined.
18:19:44 -!- EgoBot has joined.
18:56:56 -!- timotiis has joined.
18:57:05 -!- jix has quit (Nick collision from services.).
18:57:15 -!- jix has joined.
19:30:52 -!- shinkuzin has joined.
19:47:27 -!- boily has joined.
19:47:48 <boily> Hello, world!
19:50:26 <AnMaster> hm
19:50:36 <AnMaster> I wonder if hash table is in fact not the wrong way
19:58:38 <AnMaster> Deewiant, what would you recommend for funge-space?
19:58:53 <Deewiant> ?
19:59:01 <AnMaster> some sort of binary tree maybe?
19:59:20 <AnMaster> would that work better do you think?
19:59:26 <Deewiant> I'd say hash table is, of the 'simple' data structures, the best
19:59:37 <Deewiant> what you can think about is the fact that the usual use case is:
19:59:40 <Deewiant> move around in one area
19:59:44 <AnMaster> Deewiant, ok I get quite a few hash collisions
19:59:55 <Deewiant> do pg stuff in some area which may or may not be the same
19:59:57 <Deewiant> and that's it
20:00:07 <AnMaster> Deewiant, well we do move around in one area, but that doesn't really help much
20:00:09 <Deewiant> so some sort of partitioned tree might be nice
20:00:19 <AnMaster> unless... hrm
20:00:30 <Deewiant> AnMaster: for non-flying deltas you'd get O(1) access to the next node
20:00:39 <Deewiant> and I'd argue that 99% of the time you are, in fact, not flying ;-)
20:00:51 <AnMaster> Deewiant, not really as you need to look up the next cell
20:01:00 <Deewiant> ?
20:01:13 <Deewiant> I mean, if you have a quadtree or octree
20:01:18 <AnMaster> ah yes
20:01:21 <Deewiant> you can just follow a pointer to get to the next cell
20:01:24 <AnMaster> I thought you meant hash
20:01:39 <AnMaster> Deewiant, yes but what about non-flying?
20:01:46 <Deewiant> flying, you mean
20:01:49 <AnMaster> yeah
20:02:02 <Deewiant> say, partition space into 128x128 squares
20:02:10 <AnMaster> Deewiant, also what about looking up value at another place, using p or such
20:02:12 <Deewiant> within such a square, always travel by the trees
20:02:18 <AnMaster> get or set
20:02:36 <Deewiant> if moving to another square which is some distance away, lookup that square and find the target cell from a tree
20:02:42 <Deewiant> s/a tree/its tree/
20:02:51 <Deewiant> and the same applies to g/p
20:03:12 <Deewiant> I'd possibly keep a few 'last accessed' pointers to trees
20:03:17 <AnMaster> hm
20:03:25 <AnMaster> sounds complex to implement
20:03:28 <Deewiant> and check them on funge-space access to see if you already have a close cell
20:03:31 <AnMaster> or is there any library I wonder?
20:03:32 <Deewiant> somewhat
20:03:35 <Deewiant> dunno
20:04:16 <AnMaster> Deewiant, also that would not work with current funge-space interface, would have to extend it for IP travel
20:04:29 <Deewiant> hmm? sure it would work
20:04:40 <AnMaster> current is get (x,y) basically
20:04:49 <Deewiant> and that's fine
20:04:51 <AnMaster> so I would need a getnext(x,y,direction)
20:04:52 <AnMaster> right?
20:05:00 <Deewiant> no
20:05:06 <Deewiant> since you already have the current position
20:05:11 <AnMaster> well I do, per IP
20:05:33 <Deewiant> so you know that get(x+1, y) is like get(x,y, east)
20:05:35 <Deewiant> or whatever
20:05:36 <AnMaster> but still need a funge-space interface for this special "get from current" instead of just "get absolute x,y)
20:05:47 <Deewiant> not really
20:05:51 -!- Judofyr has joined.
20:05:54 <Deewiant> as an optimization, sure
20:05:57 <Deewiant> but you don't /need/ it
20:06:09 <AnMaster> hm
20:07:21 <Deewiant> but yeh, something to think about
20:07:27 <Deewiant> I don't know if it's really that big an advantage
20:07:38 <Deewiant> or an advantage at all
20:08:21 <AnMaster> well I was able to speed up current hash a bit but making it less general
20:08:53 <AnMaster> ie, sizeof(fungekeytype) and getting rid of memcmp and doing comparing by hand, ie the reverse of generic types
20:09:11 <AnMaster> Deewiant, still I think what I really need is a better hash function
20:09:18 <AnMaster> it gets too many collisions
20:11:07 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
20:14:34 -!- EgoBot has joined.
20:14:56 -!- ehird has joined.
20:15:01 -!- boily has quit ("quit quit quit").
20:15:13 -!- ehird has quit (Remote closed the connection).
20:36:11 <AnMaster> Deewiant, any idea how to do copy on write in C? it seems the best for opcode stacks in split
20:36:55 <AnMaster> yes I know CCBI doesn't duplicate them across split
20:37:34 <Deewiant> keep a pointer, set copy to true, when writing, if copy, copy the data and set copy to false
20:37:55 <Deewiant> something similar in both the original and the split IP
20:40:25 <AnMaster> hm wonder if overhead is larger or not
20:45:02 <AnMaster> Deewiant, how is speed on my current trunk for you?
20:46:13 <Deewiant> linux machine isn't on, can't test
20:46:55 <AnMaster> k
20:47:05 <AnMaster> Deewiant, it doesn't compile on windows?
20:47:12 <Deewiant> haven't tried
20:47:18 <Deewiant> but since you're using POSIX-only stuff, probably not
20:47:26 <AnMaster> well since windows is posix iirc it should
20:47:27 <AnMaster> ;P
20:47:37 <AnMaster> (does this sound familiar?)
20:47:42 <Deewiant> I don't have the required crap installed
20:47:48 <Deewiant> I could run it in cygwin, of course
20:47:53 <Deewiant> but I don't have bzr and can't be bothered
20:48:06 <AnMaster> ok
20:48:09 <Deewiant> and performance testing is kinda pointless in such an environment
20:48:19 <Deewiant> whether I use cygwin or MS's stuff
20:48:19 <AnMaster> heh true, windows does suck indeed
20:48:24 <Deewiant> it'll be a billion times slower than on *nix
20:48:35 <AnMaster> of course, all windows stuff are
20:48:51 <Deewiant> not necessarily
20:49:01 <Deewiant> but emulating posix is, definitely
21:01:28 <GregorR> RodgerTheGreat: Yes.
21:17:14 <RodgerTheGreat> GregorR: sweet!
21:17:31 <RodgerTheGreat> the full instructions set?
21:17:33 <GregorR> Although still slow, it's faster than JSMMIX was. malloc isn't working right now though >_<
21:17:38 <GregorR> Except for the FPU.
21:17:45 <GregorR> But that can be worked around with -msoft-float
21:17:50 <RodgerTheGreat> piddling details- that's still really cool
21:18:20 <RodgerTheGreat> I know some MIPS ASM- lemme know if you need help writing demo apps for it or something
21:18:36 <GregorR> My goal is to use /real/ apps as demo apps :P
21:18:58 <GregorR> I can do "Hello, world!" with write(), but not with printf() since that uses malloc (which, as I mentioned, isn't working)
21:25:50 -!- ehird has joined.
21:27:11 <ehird> Foo
21:27:34 <GregorR> ehird: JSMIPS
21:27:41 <ehird> JSMUMPS
21:27:49 <GregorR> Except JSMIPS exists :P
21:29:24 -!- ehird_ has joined.
21:29:42 <ehird_> so it turns out
21:29:46 <ehird_> the intercal community is huge
21:29:50 <ehird_> all of one person downloaded my mirror
21:30:29 -!- oerjan has joined.
21:31:28 <ehird_> maybe it was oerjan
21:31:40 * oerjan wonders what kind of bug ais523 is talking about
21:31:43 <oerjan> nope
21:33:35 <GregorR> http://www.codu.org/jsmips/
21:34:29 * oerjan isn't a productive Intercal programmer, the unlambda interpreter is my only work afair
21:35:15 <AnMaster> ehird, hi
21:35:38 <AnMaster> ehird_, you will be happy over my last extreme microoptimizing
21:36:05 <AnMaster> posix_fadvice when reading files ;) on and posix_fallocate when writing ;P
21:36:08 * AnMaster runs
21:36:16 <AnMaster> I decided to use them just to irritate you
21:36:30 <GregorR> Heh. "fallocate"
21:37:12 <RodgerTheGreat> GregorR: wow- JSMIPS is pretty impressively fast for what it does
21:37:30 -!- Judofyr has quit.
21:37:41 <GregorR> Please note that the vast majority of the time after you press the button is taken loading the ELF file :P
21:38:14 <ehird_> ais523 isn't here
21:38:22 <RodgerTheGreat> it only takes a few milliseconds to run in my browser
21:38:39 <GregorR> Well then your computer clearly rawx0rz mine >_>
21:38:44 <ehird_> Whut is Mipss
21:39:07 <RodgerTheGreat> MIPS is a CPU architecture common in embedded systems and the Playstation 1 and 2
21:39:10 <ehird_> but it runs in a few mips here too
21:39:18 <ehird_> RodgerTheGreat: Oh my god you MUST implement the PS api
21:39:24 <ehird_> I want playstationweb
21:39:26 <RodgerTheGreat> PostScript?
21:39:28 <RodgerTheGreat> oh, nvm
21:39:38 <GregorR> Wow, THAT would be fast :P
21:39:59 <RodgerTheGreat> hehe. GregorR: think you could hack JSMIPS into an EmotionEngine emulator? :)
21:40:06 <GregorR> But I'm going to stick with the loftier goal of printf("Hello, world!") for the moment.
21:42:50 <ehird_> Uhh
21:42:53 <ehird_> GregorR: Printf doesn't need malloc
21:43:24 <RodgerTheGreat> hm. I'm tempted to take a crack at implementing my "Revolver" architecture in JS and creating a similar VM.
21:45:14 <ehird_> GregorR: http://rafb.net/p/PH5m5q12.html
21:45:16 <ehird_> printf skeleton
21:49:50 -!- jix has quit ("CommandQ").
21:57:59 <ehird_> Hmm
21:58:12 <ehird_> NOTE-AIS523: In file included from src/cesspool.c:40:
21:58:12 <ehird_> /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/varargs.h:4:2: error: #error "GCC no longer implements <varargs.h>."
21:58:15 <ehird_> Please use stdarg.h
21:58:29 <olsner> cesspool?
21:58:36 <ehird_> olsner: C-INTERCAL source file
21:58:53 <olsner> ick/src/cesspool? :P
21:59:23 <olsner> intercal is funny
22:00:06 <ehird_> ais523 - in fact just define _POSIX_SOURCE
22:00:07 -!- pikhq has joined.
22:02:32 <GregorR> ehird_: It shouldn't, but newlib's does :P
22:02:45 <ehird_> GregorR: It just needs _POSIX_SOURCE
22:02:47 <ehird_> And then it works
22:03:09 <GregorR> ?
22:03:41 <GregorR> Oh wait, cross-contaminated conversations?
22:03:55 <GregorR> ehird_: printf shouldn't need malloc, but newlib's does :P
22:03:58 <pikhq> Hail.
22:04:46 <ehird_> GregorR: Ah
22:04:49 <ehird_> GregorR: So use my skeleton
22:04:54 <ehird_> Not that hard to implement a full printf
22:05:07 <GregorR> ehird_: I'm not going to diverge from newlib just to bypass a bug I'll need to fix anyway ...
22:05:27 <ehird_> GregorR: http://sourceforge.net/projects/pdclib
22:05:38 <ehird_> That is quite complete, has a real printf, a real malloc
22:05:39 <ehird_> etc
22:05:42 <ehird_> And its very simple to understand
22:05:44 <ehird_> Maybe give it a shot
22:06:07 <GregorR> Its malloc probably won't work either - I just need to fix whatever bug in the CPU implementation causes malloc to fail.
22:07:25 <ehird_> GregorR: Still, take a look at it anyway
22:11:35 -!- RodgerTheGreat_ has joined.
22:12:51 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
22:12:59 <ehird_> byebye
22:13:03 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
22:16:50 <ehird_> RodgerTheGreat: it's lowercase, #esoteric
22:16:50 <ehird_> :-P
22:17:06 <GregorR> Heh
22:17:07 <RodgerTheGreat> I like my version better
22:17:19 <ehird_> RodgerTheGreat: but all irc chans are lowercase
22:17:19 <ehird_> :(
22:17:30 <RodgerTheGreat> not in my client
22:17:33 <lament> not #ESOTERIC
22:17:50 <RodgerTheGreat> #Esoteric
22:17:59 -!- ehird_ has set topic: #esoteric LOGS: http://ircbrowse.com/cdates.html?channel=esoteric WIKI: http://esolangs.org/wiki/ FILES: http://esolangs.org/files/.
22:17:59 <lament> #esoteriC
22:18:15 -!- lament has set topic: LOGS: http://ircbrowse.com/cdates.html?channel=esoteric WIKI: http://esolangs.org/wiki/ FILES: http://esolangs.org/files/.
22:18:22 <lament> oops
22:18:26 -!- lament has set topic: #eSOTERIC LOGS: http://ircbrowse.com/cdates.html?channel=esoteric WIKI: http://esolangs.org/wiki/ FILES: http://esolangs.org/files/.
22:19:20 -!- ehird_ has set topic: #esoteric = http://ircbrowse.com/cdates.html?channel=esoteric.
22:19:42 <GregorR> Hahahaha, if I got GCC in MIPS, I could compile stuff (extremely slowly) in my browser! :P
22:19:50 <lament> nooo what about the link to the wiki
22:19:57 -!- ehird_ has set topic: ircbrowse.com/cdates.html?channel=esoteric.
22:20:00 <ehird_> lament: who needs it
22:20:06 <ehird_> the only reason the logs are there is because freenode requires it
22:20:09 -!- GregorR has set topic: PLACE TOPIC HERE.
22:20:17 <ehird_> GregorR: freenode doesn't allow that
22:20:24 <ehird_> mine was the shortest valid one
22:20:28 <GregorR> I DON'T SEE THEM STOPPING ME
22:20:37 -!- ehird_ has set topic: logs@ircbrowse.com.
22:20:41 <ehird_> people can find 'em themselves
22:20:45 <ehird_> and logs@ is useless
22:20:47 -!- ehird_ has set topic: ircbrowse.com.
22:20:51 <olsner> GregorR: is that MIPS the instruction set/cpu or some other meaning of MIPS you're referring to?
22:20:52 <ehird_> and people can find ircbrowse on google
22:20:55 -!- ehird_ has set topic: ircbrowse.
22:21:00 <GregorR> olsner: The ISA
22:21:16 <GregorR> olsner: And no, not that kind of ISA *hah hah hah ambiguity is fun*
22:21:26 <GregorR> (That is, the instruction set :P )
22:21:31 * olsner suddenly understands nothing
22:21:42 <GregorR> http://www.codu.org/jsmips/
22:21:50 <olsner> you've found a MIPS emulator in JS or something like that?
22:21:59 <olsner> ah, indeed
22:22:02 <GregorR> I /write/ a MIPS emulator in JS
22:22:11 <GregorR> s/\/write\//\/wrote\//
22:22:42 <olsner> well, MIPS is pretty common, so it shouldn't be hard to get a GCC running... but you do need some kind of OS interface for GCC to use for reading files and stuff like that
22:23:09 <lament> does freenode actually require to disclose the location of the logs?
22:23:11 <olsner> wouldn't know how hard it would be to hand-code syscalls out into JS code for everything that GCC needs to interface
22:23:26 <olsner> you should just boot linux on it! :P
22:23:46 -!- lament has set topic: LOGGED.
22:24:28 <GregorR> I've written a few basic syscalls, and I have a GCC /targeting/ it :P
22:25:45 <olsner> aah, you're just one step away from cross-compiling gcc to be hosted on it then
22:25:45 -!- GregorR has set topic: W/LOG.
22:25:48 <GregorR> Even shorter.
22:26:09 -!- olsner has set topic: LOGD.
22:28:21 -!- GregorR has set topic: To anyone whom it may concern, the discourse, discussions and general chatting of any sort on this channel are recorded by an automated program, which then proceeds to copy said recordings (herein "logs") into a permanent location. Although not easily alterable, the logs are accessible via a web page (using the Hypertext Transfer Protocol) with the Universal Resource Locator http://ircbrowse.com/cdates.html?channel=esoteric.
22:28:23 -!- Iskr has quit ("Leaving").
22:28:41 -!- pikhq has set topic: cat /var/log/#esoteric.
22:28:53 -!- ehird_ has set topic: ircbrowse.
22:29:06 -!- GregorR has set topic: To whom it may concern, the discourse, discussions and general chatting of any sort on this discussion forum (colloquially, "channel") are recorded by an automated program, which then proceeds to copy said recordings (herein "logs") into a permanent location. Although not easily alterable, the logs are accessible via a web page (using the Hypertext Transfer Protocol) with the Universal Resource Locator http://ircbrowse.com/cdates.html?channel=eso.
22:29:10 -!- oerjan has set topic: ln.
22:29:10 -!- ehird_ has set topic: ircbrowse.
22:29:14 <oerjan> logs, naturally
22:29:18 <GregorR> Hahahaha
22:29:20 -!- ehird_ has set topic: ibrowse.
22:29:26 <ehird_> people can deduce irc themselves
22:29:28 -!- ehird_ has set topic: browse.
22:29:36 <pikhq> GregorR: It's Uniform Resource Locator, not Universal.
22:29:37 <ehird_> browse, abbeviated -> bws
22:29:39 -!- ehird_ has set topic: bws.
22:29:43 <ehird_> bws, abbrev. -> bs
22:29:43 <GregorR> Argh
22:29:45 -!- ehird_ has set topic: bs.
22:29:49 -!- GregorR has set topic: To whom it may concern, the discourse, discussions and general chatting of any sort on this discussion forum (colloquially, "channel") are recorded by an automated program, which then proceeds to copy said recordings (herein "logs") into a permanent location. Although not easily alterable, the logs are accessible via a web page (using the Hypertext Transfer Protocol) with the Uniform Resource Locator http://ircbrowse.com/cdates.html?channel=esote.
22:30:12 <oerjan> got cut off
22:30:18 <GregorR> Whoops
22:30:35 -!- GregorR has set topic: To whom it may concern, the discourse, discussions and general chatting of any sort on this discussion forum (colloquially, "channel") are recorded by an automated program, which then copies said recordings (herein "logs") into a permanent location. Although not easily alterable, the logs are accessible via a web page (using the Hypertext Transfer Protocol) with the Uniform Resource Locator http://ircbrowse.com/cdates.html?channel=esoteric.
22:31:20 <GregorR> Maximally verbose, minimally informative.
22:32:14 <pikhq> :)
22:32:28 * oerjan wants that in Victorian English
22:32:52 <GregorR> Does babelfish have an English->Victorian English translation service?
22:33:05 * oerjan doubts it
22:33:34 -!- ehird_ has set topic: Quien corresponda, a, el discurso, los debates generales y de charlar de cualquier tipo en este foro de debate (coloquialmente, "canal") son registrados por un programa automatizado, que luego copia dice grabaciones (en lo sucesivo "registros") en una ubicación permanente. Aunque no son fácilmente modificables, los registros son accesibles a través de una página web (utilizando el Protocolo de transferencia de hipertexto) con el localizador u.
22:33:37 <ehird_> awwww
22:33:53 -!- olsner has set topic: Den hr This kanalen channel loggas is being logged och and loggarna the logs sparas are saved p on en a server server p on internet the internet, p at adressen address http://ircbrowse.com/cdates.html?channel=esoteric.
22:33:59 <olsner> bilingual!
22:34:06 <olsner> in a minimally readable way
22:34:06 -!- ehird_ has set topic: 関係者各位は、談話は、いかなる種類のチャット及び全般的な議論をしてこのディスカッションフォーラム(口語では、 "チャネル" )は、自動で記録されたプログラムは、その後のコピーによると録音(ここに"ログ" )を恒久的なロケーションです。簡単に変更はないが、これらのログには、ウェブページを介してアクセスできる(.
22:34:12 <oerjan> Jttekul
22:34:13 <ehird_> that should be japanese.
22:34:25 <olsner> ehird_: as if that is the actual topic message?
22:34:41 <olsner> also, apply SJIS to UTF-8 recoding on that
22:34:54 <ehird_> blame google translate
22:34:55 <olsner> oerjan: ja, visst r det? :P
22:34:58 -!- ehird_ has quit (Excess Flood).
22:35:18 -!- ehird_ has joined.
22:35:28 <ehird_> الى من يهمه الامر ، الحديث ، والمناقشات العامة الدردشه من اي نوع على مناقشة هذا المنتدى (بشكل عامي ، "قناة") لم تسجل مؤتمت البرنامج ، الذي قال بعد ذلك نسخ التسجيلات (هنا "السجلات") الى موقع ثابت. وان لم يكن للتغيير بسهولة ، ويمكن الوصول اليها عبر الجذوع صفحة
22:35:32 <ehird_> ويب (باستخدام بروتوكول نقل النص التشعبي) مع عنوان إنترنت http://ircbrowse.com/cdates.html؟channel=esoteric
22:35:35 -!- ehird_ has set topic: الى من يهمه الامر ، الحديث ، والمناقشات العامة الدردشه من اي نوع على مناقشة هذا المنتدى (بشكل عامي ، "قناة") لم تسجل مؤتمت البرنامج ، الذي قال بعد ذلك نسخ التسجيلات (هنا "السجلات") الى موقع ثابت. وان لم يكن للتغيير بسهولة ، ويمكن الوصول اليها عبر الجذوع.
22:35:41 <ehird_> hmph
22:35:42 <olsner> now that is seriously broken in xchat
22:35:57 <olsner> zero ligatures
22:36:59 * ehird_ is putting multibebl on it
22:41:26 -!- ehird has quit (brown.freenode.net irc.freenode.net).
22:41:26 -!- shinkuzin has quit (brown.freenode.net irc.freenode.net).
22:41:26 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net).
22:41:27 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net).
22:42:09 <ehird_> Process-prominent the relative one, the argument and diverse variable
22:42:10 <ehird_> arguments and in this general of tribune (" in the universal
22:42:10 <ehird_> word,; this interests channel" ) in sistemazione (here "
22:42:10 <ehird_> What logs" of the interests; Memorizzato he) around the neighbor
22:42:10 <ehird_> to the copy of the automated program, in the position of the normal
22:42:11 <ehird_> position. The probably easy modification, but that one interests the
22:42:14 <ehird_> HTTP of the URL of the logarithm of Naperian:
22:42:19 <ehird_> /ircbrowse.com/cdates.html? (of the FTP of the end of the customs of
22:42:19 <ehird_> the File Transfer Protocol) it is with the simple exactitude of
22:42:19 <ehird_> channel=esoteric the homepage
22:43:41 -!- ehird has joined.
22:43:41 -!- shinkuzin has joined.
22:43:41 -!- bsmntbombdood has joined.
22:43:41 -!- Tritonio_ has joined.
22:44:02 -!- sekhmet has left (?).
22:44:37 -!- ais523 has joined.
22:47:59 <oerjan> o_O
22:48:12 <oerjan> ais523: what bug?
22:48:28 <ais523> oerjan: you mingle a value which might be above 65535
22:48:42 <ais523> (you throw the high bits away anyway, but it can cause an error before then)
22:48:58 <ais523> the bug in your code was hidden by a bug in C-INTERCAL, which when I fixed exposed the bug in your code
22:49:19 <ais523> (4402) DO RESUME '?'"?!101~#128'$!101~.101'"~#65535'$#2'~#3
22:49:34 <ais523> (that's the corrected line, you can find the original by searching for the line number (4402))
22:49:46 <ais523> I added the select against 65535
22:49:55 <ehird_> ais523: look at logs
22:49:55 <ehird_> :)
22:50:01 <ehird_> (while compiling on os x)
22:50:09 -!- ais523 has changed nick to ais523|busy.
22:50:40 <ais523|busy> ehird_: I'm busy with something else at the moment, I don't have time to go logreading
22:50:44 <ehird_> ok
22:50:44 <ehird_> :)
22:50:50 <ehird_> but its a severe c-intercal bug
22:50:52 <ehird_> (won't compile)
22:50:54 <ais523|busy> or even to answer questions about compiling unless they're easy enough to answer in a couple of line
22:50:56 <ais523|busy> s/$/s/
22:51:00 <ehird_> i got it to compile
22:51:03 <ehird_> but it required hand-hacking
22:51:12 -!- ais523|busy has changed nick to i.
22:51:18 -!- i has changed nick to ais523|busy.
22:51:21 <ais523|busy> whoops
22:51:46 <ais523|busy> ehird_: most versions of C-INTERCAL before I fixed the build system needed hand-hacking for me too
22:51:50 <ais523|busy> so I'm not very surprised
22:53:26 <ais523|busy> can you explain the problem quickly?
22:53:44 <ehird_> yes
22:54:01 <ehird_> ais523|busy: you use va_dcl and vaargs.h and other stuff on OS X
22:54:06 <ehird_> defining _POSIX_SOURCE for it fixes it
22:54:30 <ais523|busy> ehird_: varargs vs. stdarg has been conditioned on _POSIX_SOURCE for ages
22:54:46 <ais523|busy> for some reason they didn't pick an identifier which is defined by default, obviously
22:54:49 <ais523|busy> (all that predates me)
22:54:58 <ehird_> ais523|busy: But you don't define _POSIX_SOURCE on OS X. You should.
22:55:00 <ais523|busy> but I should be able to change it to something autoconf-detected easily enough
22:55:03 <ehird_> Because otherwise it breaks
22:55:10 <ais523|busy> ehird_: it isn't defined anywhere AFAICT
22:55:35 <ais523|busy> so I'll get autoconf to define it if it finds stdarg.h (which should be strong enough evidence that stdarg is available)
22:55:43 <ais523|busy> C-INTERCAL predates C89 catching on, you see
22:56:02 <ais523|busy> and the use of stdarg.h was hacked in later as a nonstandard default...
23:00:25 <ais523|busy> anyway, the solution's pretty simple once the problem's known, so I can fix that for the next version
23:00:25 <ais523|busy> (which I'll probably release once the bug reports die down as 1.28)
23:00:41 <ehird_> ais523|busy: nobody used my mirror, btw :)
23:00:49 <ehird_> well, like 2 people
23:00:49 <RodgerTheGreat> ehird: wtf is the meaning of this scribbley moonspeak
23:00:58 <ehird_> RodgerTheGreat: it's your topic, in arabic
23:01:05 <ehird_> but broken
23:01:08 <ehird_> xchat sux
23:01:25 <RodgerTheGreat> Colloquy handles the arabic script like a champ, naturally
23:02:02 <ais523|busy> Konversation has no problems either
23:02:23 <ais523|busy> (of course, I'd have no hope of understanding it if I were using telnet, but it's Konversation today as I'm too busy to respond to pings manually)
23:03:11 <ehird_> what i'm saying is:
23:03:16 <ehird_> it didn't copy right
23:03:18 <ehird_> so the text is broken
23:04:25 -!- ehird has quit (brown.freenode.net irc.freenode.net).
23:04:27 -!- shinkuzin has quit (brown.freenode.net irc.freenode.net).
23:04:27 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net).
23:04:27 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net).
23:04:59 <ais523|busy> heh, I just got a notification because ehird_'s ghost was on the wrong side of a netsplit
23:05:32 <ehird_> heh
23:06:06 <ais523|busy> that's one of the most pointless things my client's ever started flashing at me about
23:09:25 <ais523|busy> hmm... it seems that C-INTERCAL is Debian's 17745th most popular package in terms of the number of people who use it regularly
23:09:30 <ais523|busy> which is apparently 4, by the way
23:09:54 <ais523|busy> (and that doesn't count me, because I don't have the Debian package for C-INTERCAL installed because it would interfere with my development)
23:13:29 <RodgerTheGreat> ais523|busy: how many packages does it beat?
23:13:52 * oerjan wonders if it follows Zipf's law
23:15:15 -!- Deformative has quit (Connection reset by peer).
23:16:00 <oerjan> (in which case, somewhere between 50 and 70 thousand perhaps?)
23:16:15 -!- Deformati has changed nick to Deformative.
23:17:15 <ais523|busy> RodgerTheGreat: sufficiently many that both Firefox and Kate went SIGSEGV when I tried to paste the list from one into the other
23:18:00 <RodgerTheGreat> and even more interesting would be how many of those 50-70 thousand packages are included in the "over 2000" figure for GPLv3 projects
23:19:58 <ais523|busy> it ranks 58523rd in terms of packages for which users had sent invalid data back for, though, so there must be at least that many packages
23:20:18 <ais523|busy> (apparently, all data anyone has sent back about C-INTERCAL usage are vaild)
23:24:29 -!- ehird has joined.
23:24:29 -!- shinkuzin has joined.
23:24:29 -!- bsmntbombdood has joined.
23:24:29 -!- Tritonio_ has joined.
23:35:05 -!- timotiis has quit ("leaving").
23:39:37 -!- oerjan has quit ("Good night").
2008-04-03
00:02:32 -!- ais523|busy has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
00:39:44 <RodgerTheGreat> PLEASE ABSTAIN FROM INTERCAL SIGS!
00:39:53 <RodgerTheGreat> it burns!
01:27:42 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
01:30:05 <pikhq> RodgerTheGreat: No it doesn't.
01:30:25 <pikhq> Well, unless you mean in the sense that sufficient levels of radiation burn.
01:30:46 <RodgerTheGreat> "burn" is used somewhat figuratively
01:31:09 -!- Sgeo has joined.
01:36:38 -!- boily has joined.
01:37:10 -!- boily has quit (Client Quit).
01:49:55 -!- wildhalcyon has joined.
01:53:10 <wildhalcyon> Why is our topic in arabic?
01:57:20 <pikhq> Because someone insisted upon it.
01:57:30 -!- pikhq has set topic: It's all Arabic to me!.
01:58:39 <wildhalcyon> Well, that works
02:05:50 * pikhq is astounded
02:06:11 <pikhq> One of the guys in the Fantasy Rules Comission had a metalogic class. . . Taught by Suber.
02:06:53 -!- ehird_ has quit ("This computer has gone to sleep").
02:06:53 -!- ehird has quit.
02:26:06 -!- Tritonio_ has quit (Remote closed the connection).
02:26:59 -!- Tritonio_ has joined.
03:13:59 -!- wildhalcyon has left (?).
03:16:40 -!- calamari has joined.
03:22:58 <GregorR> I've come to the conclusion that all of the opcodes in JSMIPS are implemented correctly to the best of my ability, and so the problem with malloc() is in another part of the design.
03:24:45 <GregorR> However, I'm still loathe to suspect that the error is in newlib's implementation of malloc. That seems extremely unlikely.
03:34:31 <pikhq> Newlib's malloc, last I checked, was a fairly simple and bog-standard algorithm. . . And a fairly reliable one at that.
03:35:20 <GregorR> I haven't a clue why this doesn't work D-8
03:35:42 <GregorR> I'm in an infinite loop of (basically) while ((a & b) == 0) { a <<= 1; }
03:36:06 <GregorR> Shockingly, that doesn't accomplish much.
03:38:59 <pikhq> I suspect that a is either 0x00 or 0xFF.
03:39:29 <pikhq> Or malloc is *really* fucked up. :p
03:40:00 <GregorR> Both a and b are 0x00
03:40:05 <GregorR> Hence the infinite loop.
03:40:27 * GregorR goes to publish the latest state of things.
03:46:25 -!- CakeProphet has joined.
03:47:38 <pikhq> Ah.
03:50:10 <CakeProphet> :D
03:50:46 <GregorR> http://www.codu.org/jsmips/
03:51:03 <GregorR> I have it switching into debug mode when _malloc_r is called and then dying in 100 ops.
03:51:15 <GregorR> You can see it go into the loop, but everything is right except for the actual functionality.
03:53:58 <GregorR> Uh, test.html is a test program, in case you couldn't guess :P
03:55:15 <CakeProphet> ...what exactly is the output supposed to mean
03:55:34 <GregorR> It's the pre- and post- of every operation after it goes into _malloc_r.
03:56:13 <GregorR> Oh, and the address of every operation :P
03:56:24 <CakeProphet> more importantly... wtf does this program do. I kind of arrived late I suppose.
03:56:42 <RodgerTheGreat> http://www.codu.org/jsmips/test.c
03:56:47 <RodgerTheGreat> ^ that, in theory
03:58:54 <GregorR> Yeah, it's that, compiled.
03:59:11 <GregorR> In fact, if you watch carefully, the first thing it outputs is the result of that syscall - but that's before it goes into debug mode.
03:59:47 <CakeProphet> ...something in assembly?
04:03:39 <GregorR> I made a syscall that just outputs its argument in hex - I was testing strlen, which worked fine.
04:13:38 * pikhq makes a syscall that forks the processor.
04:13:48 <pikhq> I think I'll call that syscall 'infinity'.
04:14:48 -!- CakeProphet has quit ("haaaaaaaaaa").
04:16:02 <GregorR> :P
04:16:13 <GregorR> How 'bout you figure out why malloc doesn't work for me! :P
04:17:25 <GregorR> Oh, I uploaded the binutils/gcc/newlib patches too.
04:38:14 <Sgeo> Bye all
04:39:07 <pikhq> Is there something geeky about going to the prom with an SCA member?
04:39:07 -!- shinkuzin has quit (Read error: 113 (No route to host)).
04:40:11 -!- Sgeo has quit ("Ex-Chat").
05:08:28 -!- sebbu2 has joined.
05:13:03 <RodgerTheGreat> hey everyone, I reorganized my code page! http://rodger.nonlogic.org/code.php
05:13:37 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
05:14:06 -!- EgoBot has joined.
05:19:31 -!- GreaseMonkey has joined.
05:19:53 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
05:20:41 -!- EgoBot has joined.
05:25:38 <RodgerTheGreat> there are neat things there, honest!
05:26:29 -!- sebbu has quit (Connection timed out).
05:26:30 -!- sebbu2 has changed nick to sebbu.
05:33:34 * pikhq sees firmware for a fembot.
05:33:37 <pikhq> Liar.
05:33:37 <pikhq> :p
05:33:49 <RodgerTheGreat> :(
05:34:32 <RodgerTheGreat> closest thing I ever did to that was the abandoned "botlogic" project: http://rodger.nonlogic.org/botlogic/
05:35:10 <pikhq> You going to get more people in on The Abyss?
05:35:11 <pikhq> >:D
05:35:24 <RodgerTheGreat> that would be fun, to be certain
05:35:34 * pikhq is still proud of being the first person to finish the last puzzle without a hint
05:35:43 <RodgerTheGreat> as well you should be
05:36:06 <RodgerTheGreat> hell, if there's enough interest I might spend some time putting together another level for the Abyss.
05:36:10 <pikhq> w00ts.
05:55:59 <GregorR> ARGH
05:56:01 * GregorR smashes something.
05:56:14 <GregorR> malloc fails before even getting to sbrk() 8-O
05:56:33 <pikhq> 8-O
05:56:39 <pikhq> Try mmap? :p
05:56:51 <RodgerTheGreat> GregorR: check out the new area on my site! http://rodger.nonlogic.org/code
05:56:56 <pikhq> (yeah, I know, I know: sbrk() is much easier. . .)
05:57:04 <RodgerTheGreat> I mean http://rodger.nonlogic.org/code.php
06:03:31 <RodgerTheGreat> pikhq: did you appreciate the fact that the "screenshot" for Abyss highlights the most devious puzzle in the entire game?
06:10:32 <pikhq> That I did. :)
06:34:27 <GregorR> Grrf
06:34:39 <RodgerTheGreat> GregorR: ?
06:34:44 <GregorR> You people are shockingly useless, do you know that?
06:35:00 <GregorR> "malloc fails in my implementation I'm trying to make work properly." "Use mmap!"
06:35:02 <GregorR> *slap*
06:35:05 <RodgerTheGreat> sorry, I don't think I'd be of much assistance debugging your malloc routine
06:35:15 <GregorR> I was referring to pikhq :P
06:35:38 <pikhq> GregorR: I was *kidding*.
06:35:44 <GregorR> YOUR MOM
06:35:50 <RodgerTheGreat> WAS KIDDING
06:35:57 <GregorR> So anyway, I made malloc "work" by disabling -O2 (:( )
06:36:04 <pikhq> First you start with mmap, then you take the leap into memory space randomization.
06:36:10 <GregorR> But printf still doesn't work (not a clue why)
06:36:20 <pikhq> And soon, you're running OpenBSD.
06:36:29 <GregorR> lol - but in your web browser :P
06:37:01 <pikhq> Touche.
06:38:46 <RodgerTheGreat> well, if we are to believe the "blogosphere", "web 2.0" heralded the evolution of a web-browser from a program to a huge, bloated program referred to as a "platform".
06:39:04 <RodgerTheGreat> it's about damn time it started ACTING like a proper platform and running BSD.
06:40:39 <pikhq> It's about damn time it started *ACTING* like a proper platform and support multitasking.
06:40:46 <pikhq> (tabs and windows don't count.)
06:41:26 <RodgerTheGreat> good night everyone
06:41:29 <GregorR> I WANT VIM IN MY BROWSER DAMN IT
06:41:40 -!- RodgerTheGreat has quit.
06:41:47 <GregorR> (If somebody who isn't me could write a vt100 simulator in JS, that'd rool)
06:41:53 <pikhq> I want more than just that.
06:42:10 <pikhq> I WANT MY BROWSER TO HAVE A SANE LANGUAGE IN IT.
06:42:17 <pikhq> HTML? Not sane.
06:42:29 <pikhq> http://pikhq.nonlogic.org/test.html Does that *look* sane to you?
06:42:47 <pikhq> (view source; most browsers can't handle the features of HTML used there)
06:44:41 <GregorR> JavaScript has a nice design, but a poor design.
06:45:54 <GregorR> OK, SOME instruction is horribly wrong, as fflush is jumping off into the ether >_>
06:53:37 <GregorR> Heh, I love the W3 validator's response for that page.
06:53:51 <GregorR> Basically: "Well, yeah, it's correct, I guess, but you really shouldn't be doing this ..."
06:55:52 <pikhq> Yeah; ain't it wonderful?
06:58:07 <Deewiant> With luck, HTML5 will be a lot cleaner
06:58:15 <pikhq> Deewiant: Funny.
06:58:30 <Deewiant> pikhq: not feeling lucky? :-)
06:58:30 <GregorR> In the same way that Perl6 should be cleaner than Perl5 (haw haw haw)
06:58:42 <pikhq> And the same way that C++ should be cleaner than C.
06:59:03 <pikhq> Deewiant: Here's how to make HTML5 cleaner.
06:59:09 <pikhq> Step 1: NEW SYNTAX.
06:59:16 <pikhq> Break backwards compatibility.
06:59:28 <pikhq> Step 2: Get someone with some sanity on the project.
06:59:37 <Deewiant> already exists, it's called JSON/YAML/sexps/whathaveyou.
06:59:45 <pikhq> sexps would be ideal.
06:59:56 <GregorR> SEXPEES
07:12:55 -!- calamari has quit ("Leaving").
07:26:25 <AnMaster> sexps?
07:26:31 <AnMaster> S-Expressions?
07:26:46 <AnMaster> Deewiant, ^
07:31:34 <olsner> AnMaster: almost certainly
07:31:44 <AnMaster> k
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:22:52 -!- Iskr has joined.
08:46:47 -!- ais523 has joined.
08:49:36 -!- olsner has quit ("Leaving").
09:01:16 -!- oklopol has joined.
09:01:36 <oklopol> oh shit
09:02:26 <oklopol> i was just idly coding at the uni... and a religious freak started talking loudly in his cell phone about how merciful god can be
09:02:49 <oklopol> also every 5 seconds mirc tells me i cannot connect
09:02:57 <oklopol> in a pop-up window
09:03:01 <oklopol> life can be so cruel.
09:03:55 <oklopol> "david lived a year in sin before god killed him"
09:04:44 <oklopol> wonder if it would be too impolite if i told this guy he's ruining my day
09:27:16 <AnMaster> Deewiant, FIXP's N is mostly useless isn't it? you could do the same by 0\- I think?
09:34:17 <ais523> AnMaster: well, it manages it in one character
09:34:40 <ais523> many other fingerprints, such as ROMA, are trivial to expand the individual instructions into multi-character code
09:34:42 <AnMaster> ais523, but you got to load the fingerprint first
09:34:56 <ais523> AnMaster: yes, but only once
09:35:02 <ais523> then you can use N as much as you like
09:35:08 <AnMaster> ais523, not if you want to load some other that also define N
09:35:12 <ais523> (unless you load another fingerprint that defines N)
09:35:41 <AnMaster> ais523, or if you unload another fingerprint defining N ;P
09:35:53 <ais523> well, yes...
09:47:49 -!- GreaseMonkey has quit ("/me is creating a telnet version of mafia - stay tuned").
09:55:45 <AnMaster> ais523, well I'm adding FIXP fingerprint
09:55:56 <ais523> which one's that?
09:56:26 <AnMaster> rcfunge one, some fixed point math stuff
09:56:51 * ais523 was using fixed point a while ago in some DSP programming
09:57:02 <ais523> it's the one with the assembly language opcode with about 6 parameters
09:57:18 <AnMaster> ais523, well I looked at how ccbi does it, and it just cast to floating point and then rounds
09:57:20 <ais523> the assembly language also implemented Fortran's DO instruction
09:57:24 <AnMaster> so *shrug* did the same there
09:57:36 <ais523> the one where you specify the line label of the end of the loop
09:57:40 <ais523> it's very COME FROM-like
09:57:56 <AnMaster> I got no clue how do do cos without using the cos from libm
09:58:01 <AnMaster> so I just cast and round
09:58:19 <ais523> AnMaster: I implemented cos in MediaWiki once
09:58:24 <AnMaster> eh?
09:58:30 <AnMaster> what do you mean? in php?
09:58:37 <ais523> no
09:58:40 <ais523> in MediaWiki markup
09:58:44 <AnMaster> um wtf
09:58:46 <ais523> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=User:ais523/Sandbox/cos
09:58:47 <AnMaster> is it turing complete?!
09:58:51 <ais523> AnMaster: no
09:58:56 <ais523> because you can't write an infinite loop
09:59:11 <AnMaster> so what computational class?
09:59:14 <ais523> if you remove the arbitrary anti-loop restriction, or allow loops to be restarted by hand, then it's TC
09:59:33 <ais523> OTOH, you can write a finite loop of almost any size with enough repetition
09:59:59 <AnMaster> ais523, oh you are an admin on wikipedia?
10:00:02 <ais523> AnMaster: yes
10:00:13 <ais523> as for computational class, it's below FSM because it can't infinite-loop
10:00:27 <AnMaster> hrrm
10:00:49 <ais523> (clearly, infinitely looping wikimarkup would be a nightmare for the servers, which is why it isn't allowed)
10:00:56 <AnMaster> ais523, your user page is.... fancy....
10:01:35 <ais523> the clock was one of my first serious markup projects
10:02:02 <ais523> oh, BTW, the cos function is only accurate in about the range -pi to pi, because I used the Taylor series, but you can correct that with mod easily enough
10:02:04 <AnMaster> so mediawiki will let you draw images?
10:02:13 <ais523> AnMaster: that's not an image
10:02:20 <ais523> try dragging your mouse over it
10:02:30 <AnMaster> ais523, does not select anything
10:02:38 <ais523> you're not accurate enough, then
10:02:43 <ais523> the dots are all bullet points
10:02:50 <ais523> positioned using CSS
10:02:53 <AnMaster> ouch
10:03:11 <AnMaster> clearly, mediawiki markup should have an entry on esolang
10:03:12 <AnMaster> :D
10:03:15 <ais523> OK, so I was showing off
10:03:27 <ais523> AnMaster: look at Wiki Cyclic Tag on Esolang
10:03:40 <ais523> that's proof that MediaWiki markup is TC when you allow loop-restarting by hand
10:04:23 <AnMaster> that would allow DoS though
10:05:09 <ais523> AnMaster: a restart-by-hand infinite loop is DOS even without the infinite loop bit
10:05:25 <ais523> because someone's making a huge number of edits (or at least previews)
10:05:26 <AnMaster> well but much more rate limited
10:05:42 <AnMaster> there will be delay due to network
10:06:13 <ais523> oh well, there's always the pre-expand include limit
10:06:27 <AnMaster> mhm?
10:06:30 <ais523> it's an anti-DOS measure that has been known to confuse the hell out of people
10:06:40 <ais523> if you write a page that's too complicated, bits near the end just stop working
10:06:47 <AnMaster> oh?
10:06:49 <ais523> and there's an error message, but it's in HTML comments in the output
10:07:22 <AnMaster> well that is stupid
10:07:27 <ais523> (an overly-complex page has to fail /somehow/, so as not to DOS the servers, but the avoid-error-messages-at-all-costs philosophy strikes me as being slightly counterproductive)
10:07:45 <AnMaster> yeah
10:09:09 <ais523> <AnMaster> Deewiant, oh btw I found some new nifty functions to microoptimize with, mostly to irritate ehird really
10:09:16 -!- oklopol has quit (Read error: 110 (Connection timed out)).
10:09:16 <ais523> sorry, I was logreading and that just jumped out at me
10:09:34 <AnMaster> ais523, :)
10:09:40 <AnMaster> tools/fuzz-test.sh: line 109: 30792 Floating point exception( ./cfunge -S fuzz.tmp )
10:09:41 <AnMaster> hm
10:09:52 <ais523> division by zero, probably
10:10:08 <AnMaster> that produced NaN before when I tried
10:10:09 <AnMaster> iirc
10:10:43 <ais523> wow, posix_fadvice is so obscure Google can't figure out what it does
10:11:02 <ais523> and in my experience division by zero is NaN in floats, but a floating point exception when done with integers. Go figure...
10:11:29 <AnMaster> and the fuzz program got ? in it, can't figure reproduce due to them
10:12:37 <ais523> try running it again maybe 4 times to see if you get the same result
10:13:47 <AnMaster> no I don't because there are quite a few ? in it
10:13:53 <ais523> oh dear
10:14:13 <ais523> you need something like C-INTERCAL's +printflow
10:14:35 <ais523> just print out the coordinates at every step and save to a logfile, so that when it errors you can go back and see what route was taken
10:14:41 <AnMaster> ah at last I got it
10:15:02 <AnMaster> ais523, I got trace yes, but wasn't enabled in fuzz testing because it tends to spam with like 200 threads that fuzz sometimes cause
10:15:27 <ais523> (+printflow is weirder; it does static compile-time analysis to figure out what line is executed after each other line (which is far from perfect), and then after each line is executed prints the line it predicted would be executed next)
10:15:36 <ais523> AnMaster: what was the problem
10:15:53 <AnMaster> ais523, not sure yet, trying to follow program flow
10:16:10 <AnMaster> oh wait
10:16:17 <AnMaster> not div by zero, mod by zero
10:16:20 <AnMaster> StackPush(ip->stack, (FUNGEDATATYPE)random() % StackPop(ip->stack));
10:16:23 <AnMaster> or maybe negative?
10:16:37 <ais523> mod by negative doesn't SIGFPE, I think
10:16:43 <AnMaster> hm
10:16:45 <ais523> but mod by zero probably does
10:18:05 * ais523 goes to get lunch
10:18:09 -!- ais523 has quit ("will be back after lunch").
10:26:32 <AnMaster> Deewiant, ccbi crashes on "PXIF"4( 0D @
10:26:40 <AnMaster> with a "floating point exception
10:57:02 -!- ais523 has joined.
11:02:37 <Deewiant> AnMaster: "mostly useless" is up to you, Befunge-98 is turing complete even without fingerprints so you can do whatever however in any case ;-)
11:03:05 <AnMaster> Deewiant, was just noting that it was unusually useless
11:03:19 <Deewiant> it's one instruction to replace 3
11:03:25 <Deewiant> can be handy if you need it a lot
11:03:37 <AnMaster> true
11:04:33 <AnMaster> Deewiant, fixed the crash in ccbi?
11:04:45 <Deewiant> yeah, div by zero
11:05:14 <AnMaster> fuzz testing is useful for such basic things
11:06:07 <AnMaster> quad tree looks very useful, but there are of course issues with it
11:06:14 <AnMaster> like quite complex to implement
11:06:33 <Deewiant> I think befunge98 used some kind of octree
11:06:43 <AnMaster> !befunge or?
11:06:46 <EgoBot> Huh?
11:06:47 <Deewiant> befunge98
11:06:50 <AnMaster> ah
11:07:03 <Deewiant> but it didn't work
11:07:06 <AnMaster> but octree would be for 3D?
11:07:16 <Deewiant> it crashed loading mycology, so he just made the initial size bigger ;-)
11:07:21 <Deewiant> might have fixed it since
11:07:25 <AnMaster> yeah I can make quadtree work, would just be painful to do it
11:07:35 <AnMaster> and probably have a lot of bugs
11:07:38 <Deewiant> AnMaster: works for 2D fine, too, you can keep the diagonals for each cell as well
11:07:57 <AnMaster> a lot of references to update on changes, say new cell added
11:08:41 <Deewiant> might still be less work than hashing + inserting
11:08:43 <Deewiant> I don't know
11:08:47 <AnMaster> hm
11:08:59 <ais523> oh, and ehird, after all your complaints about Debian's speed:
11:09:00 <ais523> Accepted intercal 28:0.28-1 (source i386)Thu 03/04/2008 04:36
11:09:06 <AnMaster> so split into 128x128? well it would allow some nice things
11:09:10 <ais523> that came in my inbox this morning
11:09:21 <ais523> (ehird: I know you're not in the channel right now but I'm assuming you logread)
11:09:31 <AnMaster> Deewiant, for single ip it would be easy to use it to optimize say strings
11:09:41 <AnMaster> and JIT
11:09:46 <AnMaster> ie store a faster way to do it
11:10:01 <AnMaster> for multiple IPs that would be "bloody hard"
11:12:13 <AnMaster> Deewiant, oh btw the fingerprint testing bit my my fuzz testing script is quite nice, it looks up in the source what instructions are implemented by the fingerprint it is told to test
11:12:28 <AnMaster> to reduce useless bounce on not implemented
11:13:03 <Deewiant> heh
11:13:24 <AnMaster> depends on this format of lines in manager.c:
11:13:25 <AnMaster> { .fprint = 0x544f5953, .loader = &FingerTOYSload, .opcodes = "ABCDEFGHIJKLMNOPQRSTUVXYZ",
11:13:46 <AnMaster> ie, looks for the correct Finger.*load, then finds opcodes on same line
11:13:48 <AnMaster> XD
11:14:01 <AnMaster> actually no, it just find everything between "" on same line
11:14:31 <AnMaster> still, as long as it works
11:15:42 * ais523 imagines TRDS being fuzz-tested
11:16:14 <ais523> oh, and a quadtree would be a pain if you had a flying IP
11:16:15 <AnMaster> ais523, and I won't implement TRDS so...
11:16:23 <AnMaster> ais523, true
11:16:33 <AnMaster> but most time the ip doesn't fly
11:16:39 <ais523> not very efficient if you do a lot of p and g instructions either
11:16:50 <Deewiant> that can be dealt with by space partitioning
11:17:24 <Deewiant> i.e. you can lookup a certain 'area' quickly
11:17:38 <AnMaster> and a hash table for storing references to cells recently accesses
11:17:41 <AnMaster> accessed*
11:17:56 <ais523> what you could do would be to make a quadruply linked list
11:18:15 <ais523> and have a 2D array of pointers pointing to it
11:18:17 <AnMaster> however, there is one issue, linked list would destroy locality of reference
11:18:34 <ais523> that would optimise many common cases
11:18:44 <ais523> and would use up huge amounts of memory, but be speed-efficient
11:18:52 <AnMaster> ais523, yeah, but you forgot negative funge space and so on
11:19:04 <ais523> you could use the 2D array of pointers near the centre, and some sort of tree system outside
11:19:19 <ais523> because most programs are going to have most non-32 values at small positive locations
11:19:28 <AnMaster> and that funge space is two vectors that are signed x-bit integers
11:19:32 <AnMaster> where x is 32 or 64
11:19:36 <AnMaster> hm
11:19:37 <ais523> AnMaster: I know
11:19:55 <ais523> but an array is still fastest in the cases where it works, you just need something to supplement it in the cases where it doesn't
11:20:02 <AnMaster> hm
11:20:05 <AnMaster> sounds complex
11:20:10 <Deewiant> in general, if people use pg, it's probably within everything that can be accessed quickly, i.e. up to (15,15)
11:20:28 <AnMaster> ais523, profiling shows that searching in bucket in hash table is the slowest part
11:20:34 <ais523> Deewiant: apart from that Befunge sieve-of-eratosthenes program
11:20:35 <AnMaster> so I guess I need a better hash function?
11:20:53 <Deewiant> ais523: where's it then
11:20:55 <AnMaster> currently I think some standard crc is used
11:21:02 <ais523> Deewiant: can't remember
11:21:11 <Deewiant> ais523: it probably uses only a few cells which are close by, anyway
11:21:20 <ais523> but it worked by writing 234567890234567890234567890, etc in an commented-part of Funge space
11:21:28 <ais523> and obliterated all the complex numbers in it
11:21:34 <ais523> s/complex/composite/
11:21:41 <Deewiant> ais523: so once you find that pos, which only takes time the first time, you can cache a pointer to it and after that all accesses are quick
11:21:54 <ais523> Deewiant: yes, agreed
11:22:05 <AnMaster> hm
11:22:18 <Deewiant> which is why I think a tree is good, since it optimizes the common case of just an IP moving
11:22:30 <AnMaster> ais523, actually if you know a good hash for two 64-bit integers that generate few collisions
11:22:35 <AnMaster> I think that would help a lot
11:22:46 <Deewiant> and you can use such caching to take care of 90% of pg use
11:22:48 <ais523> AnMaster: mingle from INTERCAL
11:22:52 <ais523> alternate bits in the two integers
11:22:53 <AnMaster> because currently I get a lot of linear search into buckets
11:23:07 <AnMaster> ais523, um?
11:23:08 <AnMaster> typedef struct s_fungeVector {
11:23:08 <AnMaster> FUNGEVECTORTYPE x;
11:23:08 <AnMaster> FUNGEVECTORTYPE y;
11:23:08 <AnMaster> } fungeVector;
11:23:11 <AnMaster> that is what I need to hash
11:23:17 <ais523> although a faster method would be to take the bottom few bits of each of x and y and preserve those literally
11:23:19 <AnMaster> where FUNGEVECTORTYPE is either 32-bit or 64-bit
11:23:41 <ais523> e.g. to hash into 1024 buckets, take ((x & 32) << 5) + (y & 32)
11:23:49 <Deewiant> AnMaster: I use murmurhash, seems decent
11:23:55 <AnMaster> Deewiant, link?
11:23:58 <ais523> totally insecure, but will spread the typical rectangular program out
11:24:01 <Deewiant> google.com
11:24:20 <AnMaster> bah
11:24:24 <ais523> if you want to optimise for Unefungish programs too, you can do that with a small modification
11:24:44 <ais523> (((x + y/32) & 32) << 5) + ((y + x/32) & 32)
11:25:26 <ais523> and you could modify it slightly so that you can sort a Befunge-93 program into 2000 different buckets out of 2048
11:25:30 <ais523> not sure how useful that would be
11:26:37 <AnMaster> Deewiant, where is your implementation of it?
11:26:47 <Deewiant> space.d
11:27:04 <AnMaster> must have an old source code version
11:29:57 <AnMaster> Deewiant, your looks 32-bit specific?
11:30:09 <Deewiant> what do you think the static assert's for
11:30:17 <AnMaster> exactly
11:37:29 <AnMaster> Deewiant, what is hash_t?
11:37:50 <Deewiant> beats me, probably uint
11:38:07 <AnMaster> Deewiant, also do you do one hash for x and then one for y or?
11:38:26 <Deewiant> eh? only one hash is returned
11:38:33 <AnMaster> hm
11:38:46 <AnMaster> 0x_c6a4_a793
11:38:49 <AnMaster> wtf is that number?
11:38:50 <AnMaster> _?
11:38:53 <ais523> if you do one hash for x and one for y, then as long as small integers hash to different things then you're likely to end up with few collisions
11:38:59 <Deewiant> _ is just for readability
11:39:02 <Deewiant> doesn't affect value
11:39:13 <ais523> Perl does that too AFAIR
11:39:59 <AnMaster> gcc didn't like it
11:40:00 <Deewiant> it hashes together the x and y as though they're a block of data
11:40:16 <Deewiant> AnMaster: ?
11:43:36 <AnMaster> no difference for speed really it seems, hrrm
11:44:50 <AnMaster> Deewiant, in fact it is worse than the current crc
11:45:12 <Deewiant> AnMaster: for me it was much faster, shows just how crap the builtin D hashtable is :-)
11:45:12 <AnMaster> for 32-bit values, I have not yet tried for 64-bit
11:45:49 <AnMaster> Deewiant, it is faster than CRC, but generates more collisions here
11:46:03 <Deewiant> I have no way of counting them so I don't know
11:47:14 <AnMaster> well mine is based on a simple trick of making the search_in_bucket call another function for each comparing of item, and prevent gcc from inlineing it
11:47:21 <AnMaster> and then look at result of profiling
11:53:35 <AnMaster> 307859 vs. 201398?
11:53:36 <AnMaster> hn
11:53:37 <AnMaster> hm*
11:53:50 <AnMaster> Deewiant, it seems crc gets more collisons, yet it is faster overall
11:53:52 <AnMaster> weird
11:54:12 <Deewiant> AnMaster: so maybe a binary tree instead of a hash table would be faster :-)
11:54:22 <Deewiant> (assuming the fallback is a bintree)
11:54:32 <AnMaster> hm?
11:54:59 <Deewiant> i.e. maybe whatever the hash table uses to resolve collisions would be faster overall
11:55:20 <ais523> most hash tables I know just use a linear linked list to resolve collisions
11:55:27 <ais523> on the basis that they don't happen very often
11:55:30 <AnMaster> Deewiant, anyway why use a different constant m than the the "upstream" murmur does?
11:55:41 <AnMaster> ais523, true
11:55:50 <Deewiant> AnMaster: I don't think I do, maybe it changed since
11:56:00 <AnMaster> Deewiant, murmur2 or murmur1?
11:56:02 <Deewiant> ais523: the D one uses a binary tree
11:56:03 <Deewiant> AnMaster: 2
11:56:06 <AnMaster> hm
11:56:11 <AnMaster> well this is 2
11:56:22 <AnMaster> const unsigned int m = 0x5bd1e995;
11:56:22 <AnMaster> vs
11:56:24 <AnMaster> const hash_t m = 0x_c6a4_a793;
11:57:00 <AnMaster> Deewiant, oh wait you got fixed seed?
11:57:21 <AnMaster> unsigned int h = seed ^ len;
11:57:23 <AnMaster> vs
11:57:24 <AnMaster> hash_t h = 0x7fd6_52ad ^ (8 * m)
12:10:06 <AnMaster> 130574 vs 109371 for 64-bit hm
12:10:48 <AnMaster> Deewiant, it seems even with IO disabled and fingerprints disabled the main mycology uses something random?
12:10:56 <AnMaster> oh wait, that would probably be time from y?
12:14:42 <AnMaster> 1397330 vs 868481
12:14:46 <AnMaster> Deewiant, that is for the scheme thing
12:14:49 <AnMaster> the latter is crc
12:15:28 <AnMaster> so on mycology murmur is better but on the fib in scheme converted to befunge thing, crc is way better
12:15:29 <AnMaster> hm?
12:17:25 <AnMaster> 4331048 vs. 4330944, almost even, again crc slightly better
12:18:58 <AnMaster> Deewiant, looks 4330944 4364795, it looses for 32-bit too hm
12:19:21 <AnMaster> in fact it is only better for mycology it seems
12:20:08 <AnMaster> ais523, <ais523> wow, posix_fadvice is so obscure Google can't figure out what it does <-- try the man page, it knows
12:20:27 <ais523> $ man posix_fadvice
12:20:27 <ais523> No manual entry for posix_fadvice
12:20:29 <AnMaster> posix_fadvise
12:20:31 <AnMaster> typoed it
12:20:32 <AnMaster> the name
12:20:47 <ais523> ah, that explains why I couldn't find it
12:20:55 <AnMaster> as man posix_fad<tab> would tell you
12:20:55 <AnMaster> ;P
12:21:05 <AnMaster> assuming you got completion of that set up
12:21:52 <AnMaster> ais523, also one hint may have been that google said: "Did you mean: posix_fadvise"
12:21:53 <ais523> yes, it does tab-complete, although man tabcompletion takes sufficiently long that I can sense the hesitation
12:21:56 <AnMaster> right at the top
12:22:08 <ais523> AnMaster: yes, but I assumed that it was just trying to fix typoes in programmer words again...
12:22:29 <ais523> the tabcompletion over here is pretty good; it can tab-complete subversion and make too
12:22:36 <AnMaster> so can mine
12:22:41 <AnMaster> gentoo :)
12:22:53 <ais523> (make is particularly interesting because it has to dive into the makefile to find out what make targets are available)
12:23:07 <AnMaster> indeed
12:23:17 <AnMaster> ais523, fails at included makefiles however
12:23:42 <AnMaster> http://rafb.net/p/MURI6z45.html
12:23:46 <ais523> pity, otherwise it might have been possible to prove tab-completion Turing-complete
12:23:50 <AnMaster> ais523, the ones marked with star are enabled
12:24:03 <AnMaster> very nitfy gentoo tool eselect
12:24:06 <AnMaster> when it works
12:24:19 <AnMaster> ais523, it is turing complete in fact
12:24:26 <AnMaster> it is just a bash function
12:24:34 <AnMaster> that returns a result
12:24:56 <ais523> I mean without writing extensions for it
12:24:56 <AnMaster> so you could make it handle included make files
12:25:03 <ais523> as in, is the 'in the wild' version of tabcompletion TC?
12:25:05 <AnMaster> heh
12:25:19 <AnMaster> ais523, well if you make a patch and send it upstream?
12:25:27 <ais523> that would be cheating
12:25:35 <ais523> you can make any program TC like that
12:25:37 <ais523> even /bin/true
12:25:41 <AnMaster> hah
12:25:42 <ais523> if you can somehow get the patch accepted
12:26:00 <AnMaster> ais523, well no, just "look at included makefiles" patch
12:26:05 <AnMaster> it would be an useful feature
12:35:01 -!- ais523 has quit ("leaving for a while, will be back later").
12:58:39 -!- ais523 has joined.
13:06:02 -!- Tritonio_ has quit (Remote closed the connection).
13:06:58 <AnMaster> ais523, hm is the C-INTERCAL website down?
13:07:34 <AnMaster> Firefox can't establish a connection to the server at intercal.freeshell.org.
13:09:57 -!- Tritonio_ has joined.
13:10:55 -!- ais523_ has joined.
13:11:11 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
13:11:17 -!- ais523_ has changed nick to ais523.
13:11:34 <ais523> sorry, my wireless dropped for a while
13:11:36 <AnMaster> ais523, <AnMaster> ais523, hm is the C-INTERCAL website down? <AnMaster> Firefox can't establish a connection to the server at intercal.freeshell.org.
13:11:51 <ais523> I think it is, because I can't get a connection either
13:11:58 <ais523> ehird's mirror is up, though
13:12:11 <ais523> (and that's the CLC-INTERCAL website, it just happens to host C-INTERCAL too)
13:13:16 <AnMaster> ais523, wikipedia refers to C-INTERCAL on ESR's website, hm?
13:13:23 <ais523> I think so
13:13:47 <ais523> I mentioned intercal.freeshell.org on the talk page, but nobody answered, and I don't want to add it myself because I have a conflict of interest with respect to ir
13:13:48 <AnMaster> he stopped maintaining it I see, but why not provide info to new source it
13:13:49 <ais523> s/ir/it
13:13:55 <ais523> s/$/\//
13:14:09 <AnMaster> ais523, oh? so ESR still thinks he is maintaining it?
13:14:21 <ais523> AnMaster: not sure
13:14:32 <ais523> but if he reads alt.lang.intercal, then he'd know about the newer versions
13:14:39 <ais523> the catb site hasn't been updated in ages AFAICT
13:15:00 <AnMaster> ais523, does intercal have any PLEASE MAKE THIS WORK?
13:15:10 <ais523> AnMaster: not exactly
13:15:12 <AnMaster> heh
13:15:12 <ais523> what isn't working?
13:15:28 <AnMaster> ais523, anything anyone try to write in intercal ;)
13:15:35 <ais523> AnMaster: not true
13:15:37 <AnMaster> well apart from you
13:15:42 <AnMaster> and a few more
13:15:46 <ais523> hey, lots of people get INTERCAL programs to work!
13:15:54 <ais523> in fact, nowadays I think they work more often than not, on average
13:16:04 <AnMaster> hm
13:16:06 <ais523> mostly because people tend to be conservative and stick to the J-INTERCAL command set
13:16:18 <AnMaster> well I didn't mean compiler bugs
13:16:19 <ais523> (i.e. INTERCAL-72 + COME FROM label)
13:16:24 <ais523> AnMaster: neither did I
13:16:38 <AnMaster> what about LOLINTERCAL?
13:16:42 <AnMaster> lolcode + intercal
13:16:43 <AnMaster> hrrm
13:16:54 <AnMaster> PLEASE -> PLZ
13:16:56 <AnMaster> and so on
13:17:11 <ais523> AnMaster: that's a worrying thought
13:17:13 <ais523> probably not worth it
13:17:17 <AnMaster> haha
13:21:18 -!- Tritonio_ has quit ("Bye...").
13:21:34 <AnMaster> ais523, in fact lolintercal would be much easier than lolC
13:21:41 <ais523> AnMaster: yes
13:21:48 <ais523> because INTERCAL has so many keywords
13:22:02 <ais523> I find DO and V are the hardest to avoid when CREATING new statements, though
13:23:09 <AnMaster> eh
13:23:13 <AnMaster> CREATING new statements?
13:23:20 <ais523> it's new in 0.28
13:23:23 <ais523> there's a CREATE command
13:23:26 <AnMaster> are you saying you can create new keywords?
13:23:31 <ais523> AnMaster: new commands
13:23:32 <AnMaster> sounds like forth
13:23:39 <ais523> which is not exactly the same as creating new keywords
13:23:43 <AnMaster> hm ok
13:23:51 <ais523> it took a while to figure out how to do it in a compiled language, though
13:24:13 <ais523> (CLC-INTERCAL is interpreted, and the INTERCAL code itself is implemented entirely using its own version of CREATE)
13:24:39 <ais523> but C-INTERCAL has to compile invalid commands speculatively in case they gain a meaning later
13:25:38 <AnMaster> ais523, is C-INTERCAL slow or?
13:25:52 <ais523> AnMaster: it's pretty fast for an INTERCAL compiler
13:25:56 <AnMaster> considering it seems to love function pointers
13:26:04 <ais523> in some cases you can convert C to INTERCAL, and get back what's almost the original C
13:26:19 <AnMaster> hm
13:26:28 <ais523> the function pointers are used to implement operand overloading; if you don't specify -a and don't use the / operator, they aren't used
13:26:45 <ais523> likewise, if you don't use -m or -e, it does everything entirely without longjmp
13:27:01 <ais523> the general rule is that things that could slow it down have their own command line option
13:27:20 <ais523> (correction: if you don't use -m, -e, or variants on computed COME FROM, it does everything entirely without longjmp)
13:27:48 <ais523> except that things don't have a command line option if they can easily be autodetected
13:27:56 <AnMaster> hm
13:28:44 <ais523> whoops, sorry, -v also turns on operand overloading, but it's rare to need that switch because it allows you to assign to constants, which tends not to lead to maintainable programs
13:31:13 <AnMaster> hm
13:31:44 <ais523> here's a simple example
13:31:58 <ais523> suppose I compile the following program, with optimisation and debugging enabled:
13:32:04 <ais523> DO .5 <- '?"'&"':2~:5'~'"'?"'?":5~:5"~"#65535$#65535"'~'#65535$#0'"$#32768'~'#0$#65535'"$"'?":5~:5"~"#65535$#65535"'~'#0$#65535'"'"$"':5~:5'~#1"'~#1"$#2'~#3
13:32:10 <AnMaster> um
13:32:13 <AnMaster> what does that do?
13:32:14 <ais523> I can then type e 1 into the debugger
13:32:24 <ais523> and it tells me what the line does (which is what it optimised to):
13:32:31 <ais523> yuk007 e 1
13:32:31 <ais523> C1: Expression is (0x2 - ((:2 > (:5 ^ :2)) & (! (! :5))))
13:32:45 <AnMaster> ok that is nifty, that it can tell that
13:32:51 <AnMaster> still what is that useful for?
13:32:53 <ais523> so it's part of a test for greater-than, which is not at all obvious by looking at the original INTERCAL
13:33:20 <ais523> it was part of the original division routine in the system library
13:33:25 <ais523> (arithmetic generally requires a loop)
13:33:27 <AnMaster> ais523, to me it looks like more than "greater than"?
13:33:58 <ais523> it's a greater-than-and-not-equal-to test, showing that the syslib's designers didn't really understand their own code themselves
13:34:02 <AnMaster> <ais523> it was part of the original division routine in the system library <-- well you could implement divide directly into the compiler, something like gcc's __builtin__
13:34:03 <AnMaster> ?
13:34:07 <ais523> because the and-not-equal-to is redundant
13:34:09 <ais523> AnMaster: I did
13:34:33 <ais523> and INTERCAL used to use 1 and 2 as logic levels because they were easier to do conditional branches with
13:35:11 <ais523> thus the 0x2 - at the start
13:35:33 <AnMaster> ais523, compiled with -Os and then stripped cfunge is 51 kb btw
13:36:02 <ais523> ick is 409 kb with -O2 and not stripped
13:36:04 <AnMaster> the debug binary is around 986K heh
13:36:24 <ais523> but it has lots of libraries that compiled programs link with, which are just as much a part of C-INTERCAL as the compiler is
13:36:27 <AnMaster> ais523, anyway I seen far worse
13:36:33 <AnMaster> do you know of the game supertux?
13:36:49 <AnMaster> compile with plain -g, not even -ggdb3, the binary is over 50 MB!
13:36:59 <ais523> I don't know of supertux
13:37:00 <AnMaster> stripped the same binary is around 3 MB iirc
13:37:18 <AnMaster> ais523, it is a mario like platform jumping 2D game, staring Tux
13:37:30 <ais523> -rw-r--r-- 1 root root 106704 2008-04-03 11:35 /usr/local/lib/libick.a
13:37:30 <ais523> -rw-r--r-- 1 root root 121872 2008-04-03 11:35 /usr/local/lib/libickec.a
13:37:30 <ais523> -rw-r--r-- 1 root root 127390 2008-04-03 11:35 /usr/local/lib/libickmt.a
13:37:36 <ais523> the libraries aren't too bad
13:37:41 <ais523> hmm... what about the debugger?
13:37:52 <ais523> -rw-r--r-- 1 root root 29128 2008-04-03 11:35 /usr/local/lib/libyuk.a
13:37:59 <ais523> wow, it's smaller than yours
13:38:14 <AnMaster> ais523, well that is not a binary
13:38:17 <ais523> (again, you probably don't want to know why the debugger is stored in object code form, although you can probably guess)
13:38:28 <AnMaster> ais523, no I'm happy I can't guess it
13:38:49 <AnMaster> on the other hand, supertux is in C++, so that can explain the huge size of debugging data
13:39:57 <ais523> yes, C++ is hard to debug naively
13:40:14 <ais523> hmm... I wonder how much extra space in the executable C-INTERCAL debugging data takes up?
13:40:28 <AnMaster> ais523, strip will take away symbol table too
13:40:38 <AnMaster> and in C++ again that is rather large
13:40:45 <AnMaster> consider long mangled names
13:41:09 <ais523> when compiling with -y C-INTERCAL stores a line number map, explanations for each expression in the program, and the entire program source code in the executable
13:41:14 <ais523> that has to take up some space
13:41:53 <ais523> (that's how to avoid problems with list commands not finding files, or finding the wrong version; you just store the original source in the executable)
13:41:58 <AnMaster> ais523, btw the 986 KB for cfunge with debug info is for -O0 -ggdb3
13:42:21 <ais523> so it makes a big difference sizewise
13:42:27 <AnMaster> ais523, is there any intercal quine?
13:42:37 <ais523> AnMaster: yes
13:42:42 <AnMaster> amazing
13:42:43 <ais523> there's pit/quine.i in the C-INTERCAL distribution
13:42:57 <ais523> it looks like the standard quinish stuff
13:43:11 <ais523> lots of data in a predictable format that represents the rest of the code, followed by the code itself
13:44:22 <ais523> normally using PLEASE on every fourth line is a copout (varying it is more aesthetic), but in the case of a quine program I can understand it
13:45:38 <AnMaster> ais523, a large risk with the befunge bridge thing would be that all someone wrote in intercal was "invoke befunge" basically
13:45:52 <ais523> AnMaster: I'm happy with that
13:45:56 <AnMaster> because befunge seems way easier to program in ;P
13:46:05 <ais523> AnMaster: they're good for different things
13:46:17 <ais523> just try to write an 8-bit bit-reverse in Befunge, for instance
13:46:18 <AnMaster> <ais523> DO .5 <- '?"'&"':2~:5'~'"'?"'?":5~:5"~"#65535$#65535"'~'#65535$#0'"$#32768'~'#0$#65535'"$"'?":5~:5"~"#65535$#65535"'~'#0$#65535'"'"$"':5~:5'~#1"'~#1"$#2'~#3
13:46:22 <AnMaster> not comparing numbers
13:46:29 <ais523> agreed
13:46:30 <AnMaster> very simple to do that in befunge
13:46:36 <AnMaster> <ais523> just try to write an 8-bit bit-reverse in Befunge, for instance
13:46:36 <ais523> INTERCAL is bad at the ordinary sorts of arithmetic
13:46:37 <AnMaster> hm
13:46:40 <AnMaster> good question
13:46:47 <ais523> it's very good at bitwise stuff, though
13:47:03 <AnMaster> ais523, there are fingerprints for bitwise and/or/xor
13:47:07 <AnMaster> so not that hard
13:47:27 <ais523> yes, but it's just 3 lines of INTERCAL
13:47:30 <ais523> and they're all the same line
13:47:41 <ais523> here's the shortest addition I know of, by the way:
13:47:41 <AnMaster> hm?
13:47:43 <ais523> (1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1
13:47:51 <AnMaster> 22+
13:47:52 <AnMaster> :)
13:48:08 <ais523> that line describes how to do long addition using the old school method
13:48:27 <ais523> add corresponding bits, store the carries separately, left shift the carries and add to the result, repeat until the carry is 0
13:48:39 <AnMaster> ais523, but why does it have a 2 there? I thought it used TWO for 2?
13:48:49 <ais523> AnMaster: that's on input
13:48:53 <AnMaster> ah
13:48:57 <ais523> #2 is the constant 2, unless/until you assign to it
13:49:03 <ais523> .2 is a 16-bit variable
13:49:08 <ais523> which is not the same variable as .1 or .3
13:49:08 <AnMaster> ais523, so you can't read strings from input?
13:49:19 <ais523> AnMaster: yes you can, you just use a different input instruction
13:49:32 <ais523> but you get the differences between consecutive characters
13:49:36 <AnMaster> oh god
13:49:39 <ais523> rather than the characters themselves
13:49:46 <AnMaster> ais523, well the first one...
13:49:49 <ais523> AnMaster: it could be worse, CLC-INTERCAL inputs in Baudot
13:49:56 <AnMaster> what is Baudot?
13:50:07 <ais523> 5-bit communication system with shift codes
13:50:13 <ais523> dates back to the days of teletypewriters
13:50:22 <AnMaster> I see
13:50:42 <AnMaster> <ais523> yes, but it's just 3 lines of INTERCAL
13:50:42 <AnMaster> hm
13:50:46 <AnMaster> for reversing bits?
13:50:48 <ais523> yes
13:51:07 <AnMaster> what data type?
13:51:18 <ais523> 8-bit integer
13:51:21 <AnMaster> ah
13:51:27 <ais523> it's 4 lines for a 16-bit integer, 5 for a 32-bit integer
13:51:32 <AnMaster> simple in C I think
13:51:40 <ais523> I would say 'and so on' but there are no larger integers unless you simulate them yourself
13:51:49 <ais523> AnMaster: C uses a similar looking method that differs in the details
13:52:27 <ais523> in C you swap blocks of 4 bits, then 2 bits, then 1 bit
13:52:47 <AnMaster> something like char in = 2, out = 0; for(i=0; i < 8; i++) { in <<= out < 1 }
13:52:50 <AnMaster> or something like that
13:52:56 <ais523> AnMaster: that's terribly inefficient
13:53:00 <AnMaster> ais523, that is true
13:53:05 <fizzie> Or you just table-lookup.
13:53:17 <AnMaster> fizzie, for 8 bit values certainly that would work
13:53:26 <AnMaster> actually I would need
13:53:30 <AnMaster> { in <<= out > 1 }
13:53:34 <AnMaster> err
13:53:36 <ais523> c = (c & 0x0f) << 4 | (c & 0xf0) >> 4;
13:53:36 <AnMaster> { in <<= out >> 1 }
13:53:36 <ais523> c = (c & 0x33) << 2 | (c & 0xcc) >> 2;
13:53:36 <ais523> c = (c & 0x55) << 1 | (c & 0xaa) >> 1;
13:53:37 <AnMaster> even
13:53:46 <ais523> that's an 8-bit-reverse directly from cesspool.c
13:53:46 <AnMaster> ais523, ok
13:54:00 <AnMaster> ais523, now: what do you use 8-bit-reverse for?
13:54:14 <ais523> well, character output has to be bit-reversed
13:54:17 <AnMaster> err
13:54:18 <AnMaster> ?
13:54:19 <ais523> but its main use is for Fourier transforms
13:54:22 <fizzie> For 16-, 32- and 64-bit values you can use the 256-element table and swap the bytes while looking-up.
13:54:22 <AnMaster> ah
13:54:24 <AnMaster> and why the name "cesspool.c"?
13:54:31 <AnMaster> fizzie, hm true
13:54:36 <ais523> AnMaster: it's the runtime library, the name predates me
13:54:41 <ais523> but most of the source files have names like that
13:54:44 <AnMaster> ais523, I see.......
13:54:49 <ais523> except the ones designed to include in other people's programs
13:54:52 <fizzie> I'm sure this link has been mentioned, but for C bit-twiddling, there's http://graphics.stanford.edu/~seander/bithacks.html
13:54:54 <ais523> like ick_ec.h, which is sensible
13:54:57 <AnMaster> ais523, does ick compile with -Wall -Werror?
13:55:00 <ais523> DO .1 <- !1~#255'$!1~#65280'
13:55:00 <ais523> DO .1 <- !1~#255'$!1~#65280'
13:55:00 <ais523> DO .1 <- !1~#255'$!1~#65280'
13:55:00 <ais523> DO .1 <- !1~#255'$!1~#65280'
13:55:01 <AnMaster> -ansi too btw
13:55:09 <AnMaster> oh and -pedantic
13:55:10 <ais523> AnMaster: I already use -Wall
13:55:19 <AnMaster> ais523, no warnings?
13:55:20 <ais523> there's one warning, which is caused by the output from flex
13:55:26 <fizzie> For example, reversing a single byte with b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023;
13:55:28 <ais523> -ansi makes it fail because it uses POSIX stuff
13:55:29 <AnMaster> fair enough
13:55:49 <AnMaster> ais523, -std=c99 -pedantic -Wall -Wextra?
13:55:56 <ais523> fizzie: that's slow unless your system has a fast 64-bit multiply
13:55:59 <AnMaster> ais523, or the set of warnings used by cfunge?
13:56:02 <ais523> AnMaster: that still excludes POSIX stuff
13:56:21 <AnMaster> ais523, not from headers no
13:56:24 <ais523> but let me put it this way: I've personally reviewed all 8000 warnings that Splint came up with
13:56:38 <ais523> and there are 2 valid ones left
13:56:43 <AnMaster> ais523, just -D_POSIX_SOURCE or whatever
13:56:49 <AnMaster> I don't want gnu extensions
13:56:57 <AnMaster> <ais523> fizzie: that's slow unless your system has a fast 64-bit multiply <-- well.... mine does I think
13:56:59 <ais523> I don't use them
13:57:27 <fizzie> The few benchmarks I've seen seem to have looked like small table-lookups would be "fast enough", and they have the (dis)advantage of being very readable code.
13:57:31 <AnMaster> ais523, splint is more or less crap due to needing stupid annotation IMO
13:57:36 <ais523> except occasionally ({ ... }) to solve a preprocessing problem, but that was in the bit that needed gcc anyway
13:57:37 <AnMaster> oh and the (void)puts thing
13:57:40 <ais523> AnMaster: I added the annotations
13:58:02 <AnMaster> ais523, I would never to my code, they make the code harder to read and therefore maintain
13:58:04 <ais523> many of them are useful to humans too, because wherever I added a warning-suppress annotation I explained why my code was actually correct
13:58:27 <ais523> and things like /*@null@*/ aren't too hard to read, and document the input taken by a function quite well
13:58:29 <AnMaster> ais523, oh and splint fails on cfunge with parser error
13:58:32 <AnMaster> due to C99 stuff
13:58:48 <ais523> AnMaster: it fails on some of the INTERCAL files like that for no apparent reason
13:58:51 <ais523> so I don't run it on those
13:59:05 <AnMaster> ais523, well virtually all files for cfunge
13:59:12 <AnMaster> as it fails on a global header
13:59:39 <AnMaster> return (fungeVector) { .x = x, .y = y };
13:59:40 <ais523> BTW, the external calls code - which can be made standalone to allow COME FROM, etc., to be used in C programs - is as far as I can tell standard strictly conforming freestanding-legal C89
13:59:43 <AnMaster> fails on that for example
13:59:46 <ais523> apart from a few calls to printf
13:59:50 <AnMaster> ais523, I mailed the author of splint a test case
14:00:06 <ais523> and the use of stdint.h for uint16_t and uint32_t, which are easily typedefed in C89
14:00:10 <AnMaster> ais523, who would want COME FROM in C? :(
14:00:29 <ais523> AnMaster: not sure, but the ability to do computed COME FROMs is an interesting one
14:00:38 <AnMaster> ais523, unreadable code
14:00:43 <AnMaster> for C
14:00:51 <AnMaster> for intercal it is fine
14:00:53 <ais523> in C, though, they clobber your procedure's return address and all your auto variables, so you have no way to escape except by doing still more COME FROMs
14:00:55 <AnMaster> but for normal C...
14:01:23 <AnMaster> ais523, well -fstack-protector would HATE that
14:01:28 <ais523> (you can also use NEXT/RESUME to encapsulate them, which are call/return from function in INTERCAL, with some INTERCAL-like twists as usual)
14:01:36 <AnMaster> it checks that return address wasn't overwritten iirc
14:01:43 <ais523> AnMaster: are you sure? I implemented it in standard strictly-conforming freestanding-legal C89
14:01:48 <ais523> I don't overwrite the return address
14:01:57 <ais523> I longjmp out of the function and recall it from elsewhere
14:01:58 <AnMaster> ais523, well, you said it "clobber your procedure's return address"
14:02:05 <AnMaster> ais523, hm
14:02:06 <ais523> thus the return address ends up wrong
14:02:06 <AnMaster> ok
14:02:23 <ais523> this also explains why the auto variables go missing
14:02:34 <AnMaster> with auto you mean?
14:02:48 <ais523> well, auto's the default
14:03:01 <AnMaster> non-register non-volatile?
14:03:03 <ais523> it's a completely useless keyword, because it's illegal everywhere it isn't the default
14:03:18 <ais523> AnMaster: register variables get lost too, and volatile makes no difference
14:03:27 <ais523> static is fine, as is malloced storage and global storage
14:03:33 <AnMaster> well that is what auto is "compiler selects"
14:04:22 <AnMaster> ais523, just don't do that in cfunge code please
14:04:38 <ais523> nowhere apart from the interface functions, if I can avoid it
14:05:00 <ais523> as in, write my own functions that COME FROM the INTERCAL program and then call cfunge
14:05:11 <AnMaster> ais523, if you make it so you can only return between instructions, and that doesn't include k, that must execute in one go, but as in main loop instruction
14:05:15 <AnMaster> it should probably work fine
14:05:26 <ais523> yes
14:05:39 <ais523> although kNEXT ought to be able to work
14:05:40 <AnMaster> just need to replace main loop code then with something else
14:05:56 <AnMaster> kNEXT? that would iterate over kN only
14:06:31 <ais523> I meant NEXT as in (whatever character represents NEXT)
14:06:45 <ais523> which would be a single character in the fingerprint, presumably
14:06:47 <AnMaster> well, you are on your own there
14:07:02 <ais523> unless... unless you have to spell out COMEFROM in some direction in the Befunge code to do a COME FROM
14:07:02 <AnMaster> making k work over t was a pain
14:07:09 <AnMaster> ais523, ewww
14:07:22 <AnMaster> ais523, that would be against the philosophy of funge
14:07:27 <ais523> yep
14:07:34 <AnMaster> that one char = one instruction
14:07:35 <ais523> but somewhat within the philosophy of INTERCAL
14:07:46 <ais523> the problem is where to draw the boundaries when linking the two languages
14:07:52 <AnMaster> hm true
14:07:56 <ais523> but I think it's best if each language keeps its own philopsophy
14:07:59 <AnMaster> maybe an RPC interface? XD
14:08:09 <ais523> except for INTERCAL flow control to link the two languages, whatever they are
14:08:14 <AnMaster> yeah
14:08:21 <ais523> that way, if you link INTERCAL, C, and Befunge, the Befunge can COME FROM the C, etc
14:08:29 <AnMaster> in either case, doing it as a fingerprint will have problems with unloading, but I guess you can just let ppl load it again
14:08:44 <ais523> yes, that would be the plan
14:09:17 <AnMaster> ais523, also, how would you specify what thread to come from in?
14:09:23 <AnMaster> or would it create a new ip each time?
14:09:39 <ais523> multithreading doesn't mix well with external calls
14:09:39 <AnMaster> new ip can only be created by duplicating an existing ip as it is now
14:09:58 <ais523> INTERCAL multithreading (-m) conflicts with INTERCAL external calls (-e), for instance
14:10:01 <AnMaster> ais523, ah skip -DCONCURRENT_FUNGE then iirc
14:10:02 <ais523> so each program may only use one or the other
14:10:13 <AnMaster> or something like that
14:10:17 <AnMaster> cmake knows better :9
14:10:18 <AnMaster> :)*
14:10:46 <ais523> hmm... an INTERCAL fork bomb works correctly
14:10:56 <ais523> (1) DO COME FROM (1) WHILE COME FROM (1)
14:11:10 <ais523> of course, they don't break your computer because all the threads share one process
14:11:13 <ais523> just like in Befunge
14:11:31 <AnMaster> ais523, oh and patches are welcome as long as they are not intercal interface specific and 1) follow current coding style 2) gives no new valgrind error 3) works fine both with boehm-gc and without
14:11:32 <ais523> (that's the closest I could get to the effect of kt, but it doesn't terminate)
14:11:50 <ais523> AnMaster: I'm a bit busy at the moment, but I'll look into it sometime
14:11:55 <AnMaster> ais523, also how would you handle q in befuge?
14:11:58 <AnMaster> befunge*
14:12:11 <ais523> AnMaster: the same as an exit() command in C
14:12:14 <ais523> all programs exit
14:12:16 <AnMaster> ais523, and with your C bridge, how do you handle _exit()
14:12:22 <ais523> AnMaster: I exit
14:12:24 <AnMaster> that is a "fast down" iirc
14:12:28 <AnMaster> _exit != exit
14:12:30 <AnMaster> in C
14:12:39 <ais523> well, I exit without deallocating memory or closing filehandles, then
14:12:47 <ais523> and the OS has to clean up
14:12:56 <ais523> most OSs should be able to handle it
14:13:06 <ais523> DOS couldn't, but you don't write _exit in DOS unless you know what you're doing
14:13:23 <AnMaster> ais523, you wouldn't use DOS IF you know what you were doing ;P
14:13:39 <ais523> AnMaster: some people like a challenge ;-)
14:14:01 <AnMaster> well yes... but not write a OS from scratch instead
14:14:01 <AnMaster> ?
14:14:26 <ais523> AnMaster: no computers I dare to run it on
14:14:36 <AnMaster> qemu
14:14:43 <ais523> I have one program (the MiniMAX interp) written in machine code, but I've never dared run that either
14:14:53 <AnMaster> ais523, again, qemu
14:15:04 <ais523> sounds like an interesting idea, I may install it
14:15:15 <AnMaster> ais523, or vmware or something similar
14:15:36 <AnMaster> ais523, for decent performance with qemu you want kqemu too iirc
14:15:43 <AnMaster> some kernel module for speeding things up a bit
14:19:34 <AnMaster> ais523, would depending on complex.h be an issue for you?
14:19:43 <AnMaster> considering CPLI fingerprint
14:19:47 <ais523> probably not
14:19:47 -!- Judofyr has joined.
14:19:54 <AnMaster> and I think even in recent versions gcc got issues with it
14:20:12 <AnMaster> as in "not exactly the way C99 says it should be"
14:20:22 <AnMaster> ais523, but well you could take a fingerprint out if you didn't like it
14:20:23 <ais523> the only points of contact between your program and mine when I'm using the external calls system are ick_ec.h and my own linker
14:20:50 <ais523> which basically just looks through the output of cpp and changes special predefined tokens into labels which point to each other in the right way
14:21:07 <AnMaster> ./src/ick_ec.h
14:21:07 <AnMaster> ./include/ick_ec.h
14:21:07 <AnMaster> ??
14:22:09 <AnMaster> ais523, before you include it into cfunge fork thing, please make it stop depending on tab == 8 spaces
14:22:10 <AnMaster> :/
14:22:16 <ais523> AnMaster: it doesn't
14:22:17 <AnMaster> it is unreadable when tabstop is set at 4
14:22:25 <ais523> oh, that
14:22:26 <AnMaster> or two
14:22:31 <ais523> I can M-x untabify if you like
14:22:38 <ais523> but tab=8 is pretty much a standard for new code
14:22:40 <AnMaster> ais523, well astyle is a great tool
14:22:50 <AnMaster> ais523, see my tab standard in cfunge :)
14:22:54 <AnMaster> it is way better IMO
14:22:56 <ais523> tabs vs. spaces vs. tab=8, spaces for 2/4/6 is a matter of personal preference
14:23:05 <AnMaster> and what a lot of modern code does
14:23:11 <AnMaster> tab for each indent level
14:23:22 <ais523> AnMaster: but sometimes I indent more than 8 levels
14:23:24 <AnMaster> space to adjust to line up at parentheses after that
14:23:26 <ais523> s/8/10/
14:23:32 <ais523> so that would be unreadable on an 80-character screen
14:23:58 <AnMaster> ais523, hm? well just change tab stop then?
14:23:58 <AnMaster> in the editor
14:24:10 <ais523> AnMaster: tab set to anything other than 8 is evil
14:24:22 <Deewiant> 3 here \o
14:24:24 <AnMaster> well in cfunge code you will have to live with that
14:24:29 <ais523> because then other people's code will break at your end, and vice versa
14:24:38 <AnMaster> Deewiant, indeed and 4 here, yet your code is perfectly readable
14:24:39 <ais523> it's fine to indent by smaller amounts, and I usually do
14:24:41 <AnMaster> ais523, no it won't
14:24:43 <Deewiant> nothing will break if you use tabs correctly
14:24:53 <AnMaster> tab for each indent level
14:24:54 <Deewiant> as in, "indent by one level" instead of "go to next offset of N spaces"
14:25:05 <AnMaster> then spaces after that to line up at parentheses
14:25:16 <AnMaster> do not use tab after any non-whitespace on a line
14:25:28 <AnMaster> that works perfectly
14:25:31 <ais523> AnMaster: most INTERCAL code is written as a tab followed by a line
14:25:37 <ais523> or a line label, then a tab, then the line
14:25:47 <ais523> so you'll have a hard time reading it if tab != 8
14:25:50 <AnMaster> ais523, we were discussing C here I think?
14:26:05 <ais523> AnMaster: you mean your editor has different tab-stop settings for different types of input?
14:26:15 <AnMaster> sure, very easy in emacs
14:26:18 <ais523> so if you copy/paste a fragment of INTERCAL into a comment in a C file, it'll look different?
14:26:25 <AnMaster> -*- mode: C; coding: utf-8; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
14:26:32 <AnMaster> is what I put at the top of every file
14:26:50 <ais523> why does that not allow indent-style too?
14:26:57 <AnMaster> ais523, eh?
14:27:01 <ais523> I have to use eval to set the c-indent-style in the mode line
14:27:09 <ais523> because writing c-indent-style:bsd doesn't work
14:27:12 <AnMaster> ais523, ah well no idea
14:27:21 <AnMaster> ais523, anyway I use my own indent style
14:27:24 <AnMaster> not bsd at all
14:27:40 <ais523> bsd's the best approximation to the one I use in Emacs' menus
14:27:43 <AnMaster> from the kdevelop project file:
14:27:44 <AnMaster> <AStyle IndentPreprocessors="1" FillCount="4" PadParenthesesOut="0" IndentNamespaces="1" IndentLabels="1" Fill="Tabs" MaxStatement="40" Brackets="Linux" MinConditional="1" IndentBrackets="0" PadParenthesesUn="1" BlockBreak="0" KeepStatements="0" KeepBlocks="0" BlockIfElse="0" IndentSwitches="1" PadOperators="1" FStyle="UserDefined" IndentCases="0" FillEmptyLines="0" BracketsCloseHeaders="0" BlockBr
14:27:45 <AnMaster> eakAll="0" PadParenthesesIn="0" IndentClasses="1" IndentBlocks="0" FillForce="0" />
14:27:46 <AnMaster> :)
14:27:51 <ais523> and I generally just let it autoindent like that, fixing it myself if needed
14:28:02 <AnMaster> ais523, see the astyle stuff from kdevelop
14:28:05 <AnMaster> that is how I do it
14:28:16 <ais523> I have indent installed, but it isn't very good
14:28:25 <AnMaster> ais523, astyle is way better than indent
14:28:31 <ais523> I guessed
14:30:38 <AnMaster> bbl food
14:39:51 <AnMaster> back
14:54:19 <AnMaster> ais523, it seems those kdevelop options match astyle --indent-preprocessor --indent-namespaces --indent-labels --indent=tab=4 --max-instatement-indent=40 --brackets=linux --min-conditional-indent=1 --unpad=paren --indent-switches --pad=oper
14:54:23 <AnMaster> not prefectly
14:54:28 <AnMaster> but almost
14:54:36 * AnMaster tries to find what is missing
14:54:38 -!- RedDak has joined.
15:02:34 -!- shinkuzin has joined.
15:07:23 -!- RodgerTheGreat has joined.
15:13:34 <ais523> AnMaster: astyle badly messes up some of the INTERCAL source files
15:14:00 <AnMaster> no idea about that
15:14:20 <AnMaster> it works for cfunge apart from a few cases
15:14:41 <AnMaster> code compiles in both cases
15:14:46 <ais523> see http://filebin.ca/mxyxwt/perpet.c
15:14:55 <ais523> the indentation doesn't even finish at the left margin
15:15:03 <ais523> (that was using your settings, by the way)
15:15:09 <ais523> and all the comments are badly messed up
15:15:17 <ais523> at least, the multi-line ones
15:15:34 <AnMaster> ais523, I'd say that file is pretty messed up before
15:15:40 <ais523> no it wasn't
15:16:03 <AnMaster> if (tp->exechance != 100 && tp->exechance != -100) { /* AIS: The double-oh-seven operator prevents
15:16:04 <AnMaster> coopt working. However, syslib contains a
15:16:04 <AnMaster> well
15:16:15 <AnMaster> having a comment at the end of the line like that is bad style
15:16:19 <AnMaster> since it is multiline
15:16:20 <ais523> see http://elliotthird.org/mirror/c-intercal/ick-0.28/src/perpet.c
15:16:27 <ais523> AnMaster: it wasn't on the end of the line before
15:16:41 <ais523> it was presumably on the same line as a { which was /below/ the IF
15:16:42 <AnMaster> ais523, probably too many #ifdef confused it
15:16:44 <ais523> s/IF/if/
15:16:53 <ais523> AnMaster: it's not the ifdefs that confuse it AFAICT
15:16:58 <ais523> because the indentation is sane near them
15:17:06 <AnMaster> well if you want the style where if and { are on different lines just change the options
15:17:28 <AnMaster> having a comment after a { is pretty bad IMO
15:17:39 <ais523> and why does it put seven spaces before the final }?
15:18:21 <AnMaster> no clue
15:18:31 <ais523> also, things like #ifdef are sometimes indented and sometimes aren't
15:18:33 <AnMaster> ais523, it obviously failed at some construct in that file
15:19:09 <AnMaster> ais523, about ifdef indention, astyle doesn't do that at all
15:19:15 <AnMaster> so look in the original source for that
15:19:17 <ais523> yes it does
15:19:22 <AnMaster> --indent-preprocessor is only for:
15:19:26 <ais523> --min-conditional-indent=1
15:19:29 <AnMaster> #define foo(a,b) \
15:19:32 <AnMaster> blah blah
15:19:39 <AnMaster> ais523, no --min-conditional-indent=1 is for normal if
15:19:40 <AnMaster> like:
15:19:51 <AnMaster> if (very long line blah blah &&
15:19:55 <AnMaster> here goes more
15:20:12 <ais523> well, the bit starting with remspace -= strlen(" -lickec"); is completely screwed up
15:20:22 <ais523> and it looks completely fine to me
15:20:28 <ais523> maybe astyle doesn't like -=?
15:20:44 <AnMaster> ais523, I'm quite sure it didn't cause issues for me
15:20:53 <AnMaster> so probably it got confused somewhere before there
15:25:58 <AnMaster> ais523, does it work on other source files?
15:26:09 <ais523> feh2.c breaks slightly, but isn't too bad
15:26:23 <AnMaster> and most "clean" source files
15:26:25 <ais523> let me try unravel.c; I wrote that one entirely myself so its indentation was consistent beforehand
15:26:55 <AnMaster> ais523, I don't think it got an issue with existing indention really, but it *does* with very very complex #ifdef
15:27:13 <AnMaster> ie, where there is a { inside *one* #ifdef #else #endif
15:27:15 <AnMaster> but not in the other
15:28:09 <ais523> AnMaster: I don't do that normally (although there's one example in ick-wrap.c)
15:28:24 <ais523> although I do it with ( in order to use snprintf if available and sprintf otherwise
15:28:41 <AnMaster> ais523, that is very likely to confuse it
15:28:48 <AnMaster> I'd use a varadic macro instead
15:28:52 <ais523> it seemed to handle that bit fine
15:28:53 <AnMaster> but then you would have C99 anyway
15:28:58 <AnMaster> so wouldn't really help heh
15:29:00 <ais523> but got confused later on
15:29:24 <ais523> wow, it's really hard to read code with { on the same line as the if
15:29:28 <AnMaster> also sometimes when {-nesting is not the same at the start of #ifdef and the end of the block
15:29:34 <AnMaster> ais523, hm, change that
15:29:34 <AnMaster> easy
15:29:40 <AnMaster> just select another style
15:29:43 <ais523> I know
15:29:51 <ais523> but I was seeing how it worked on your style
15:30:02 <AnMaster> --brackets=break maybe
15:30:07 <AnMaster> I prefer --brackets=linux
15:30:27 <AnMaster> ais523, I find it easier to read
15:30:40 <AnMaster> lots of line with a single { on just confuses
15:30:45 <AnMaster> locality of reading ;)
15:30:47 <ais523> yes, when I was experimenting with my own styles I used --brackets=break
15:30:58 <AnMaster> and anyway, astyle got lots of options
15:31:05 <ais523> but it's hard to tell between a multiline if and a single-line if when the { is hidden at the end of the preceding line
15:31:13 <ais523> you have to look down a couple more lines to tell what the scope of the if is
15:31:19 <ais523> and it's worse if there are comments in between
15:31:22 <AnMaster> hm
15:32:15 <AnMaster> ais523, I work at 1400x1050, 20", something like Courier New, font size 10
15:32:34 <ais523> that would explain why you got away with so much indentation
15:32:40 <ais523> I tend to stick to 80-char lines
15:32:40 <AnMaster> slight antialias, with the patent encumbered hinting on
15:32:57 <AnMaster> ais523, well I try to not go above 80 chars in README and such
15:32:58 <ais523> that's full screen in DOS, but one typical-sized Emacs window on Linux
15:33:11 <ais523> (it loads at 80 chars wide unless/until I resize it)
15:33:18 <AnMaster> ais523, you can change default size in .emacs iirc
15:33:26 <ais523> yes, but I like this default
15:33:29 <AnMaster> I think I display around 120 chars wide
15:33:49 <AnMaster> but, in kate I got a think grey vertical line at column 80
15:33:57 <AnMaster> don't know if that is possible in emacs
15:34:06 <ais523> it probably is
15:34:14 <ais523> but I find that sort of setting very hard to find
15:34:22 <ais523> because it doesn't seem to be in Customize for some reason
15:34:24 <AnMaster> yeah and wouldn't work in non-X mode
15:34:45 <AnMaster> I use both text mode and X mode
15:34:47 <AnMaster> quite a lot
15:35:02 <AnMaster> ais523, anyway with tab stop 4 my code doesn't look bad
15:35:20 <AnMaster> for bash I even use tab stop 2
15:35:21 <AnMaster> :)
15:35:25 <ais523> I prefer 2 for C because I'm horizontal-space-challenged
15:35:31 <ais523> I've been known to use 1 for Brainfuck
15:36:37 <AnMaster> hah
15:36:48 <AnMaster> ais523, well then just set tab stop 2
15:36:50 <AnMaster> very easy
15:37:06 <ais523> AnMaster: yes, changing indentation size is rarely a problem
15:38:00 <AnMaster> anyway I checked with tab stop 4 in interpreter.c, of a total of 607 lines, just 13 lines are wider than 80 chars
15:38:05 <AnMaster> and those are mostly long strings
15:38:06 <AnMaster> like
15:38:15 <AnMaster> fprintf(stderr,
15:38:15 <AnMaster> "WARN: Unknown instruction at x=%" FUNGEVECTORPRI " y=%" FUNGEVECTORPRI ": %c (%" FUNGEDATAPRI ")\n",
15:38:15 <AnMaster> ip->position.x, ip->position.y, (char)opcode, opcode);
15:38:32 <AnMaster> hard to break such up, breaking a string up is not something I like
15:39:38 <AnMaster> ais523, I don't know if astyle can do it, but I know indent can: put the return type on a different line from the rest
15:39:39 <AnMaster> like:
15:39:48 <AnMaster> static inline void
15:39:49 <AnMaster> PrintUnknownInstrWarn(FUNGEDATATYPE opcode, instructionPointer * restrict ip)
15:39:51 <AnMaster> {
15:39:51 <AnMaster> code
15:39:52 <AnMaster> }
15:39:55 <AnMaster> ais523, ^
15:40:09 <AnMaster> don't think astyle will change current such line break
15:40:15 <AnMaster> gnu indent can do it
15:40:25 <ais523> astyle doesn't mess with line breaks at all, apart from at { } and ;
15:40:35 <ais523> indent goes further than astyle does in terms of messing around with the code
15:40:46 <AnMaster> ais523, well it can be set to add newlines on stuff like:
15:40:54 <AnMaster> foo(x); bar(y);
15:41:01 <AnMaster> or { blah blah }
15:41:10 <AnMaster> ah yes that's what you said
15:41:17 * AnMaster should read properly first heh
15:41:37 * ais523 is running their Brainfuck reindenter on Lost Kingdoms to see if it works
15:41:50 <ais523> I spotted one bug already: blank lines in the source break it
15:42:00 <AnMaster> ais523, oh? link to that reindenter?
15:42:22 <ais523> I pasted it once, but it'll be easier to paste it again than to find the link
15:42:24 <AnMaster> ais523, well lost kingdoms will be a mess
15:42:31 <ais523> it's a part of my collection of esolang modes for Emacs
15:42:37 <AnMaster> it was auto generated after all
15:42:45 <AnMaster> from basic I think
15:42:53 <ais523> yes, I know
15:43:02 <ais523> but it'll be a good test case, I hope
15:43:11 <AnMaster> mhm
15:43:12 <ais523> torture-test case, if nothing else
15:43:20 <AnMaster> hahah
15:43:23 <ais523> I've had the idea of converting it to Fugue at some point
15:43:34 <ais523> but that would last several years in terms of the generated music
15:43:47 <ais523> and I'll need to come up with a portable way to do it
15:43:47 <AnMaster> well brainfuck already lacks very much context info
15:43:52 <AnMaster> so it would expand even more
15:44:04 <AnMaster> basic to befunge directly would probably work better
15:44:05 <ais523> Prelude is normally shorter than BF because you can optimise constants
15:44:15 <AnMaster> Prelude?
15:44:21 <AnMaster> some IDS isn't it?
15:44:23 <ais523> Prelude converts to Fugue
15:44:31 <ais523> ah, you misread Fugue as Funge
15:44:39 <AnMaster> ais523, ah yes I did
15:44:42 <ais523> it's a music-based programming language
15:44:46 <AnMaster> ah I see
15:44:59 <ais523> I wrote a hello world in it, compiled from BF
15:45:09 <AnMaster> I see
15:45:21 <ais523> I managed to make a compiler system, but it was sufficiently nonportable that I don't think it would run on any computer other than the one it ran on
15:45:31 <AnMaster> I see
15:45:39 <AnMaster> ais523, not posix then?
15:45:54 -!- shinkuzin has quit (Read error: 113 (No route to host)).
15:46:02 <ais523> I generated output in a Fugue precursor output, then used VBA on Word to generate a stream of keystrokes that would type the output into a proprietary MIDI editor that happened to be on that computer
15:46:17 <ais523> and I had to heavily customise its keymappings first to avoid needing to use control or alt
15:46:20 <AnMaster> eww
15:46:33 <ais523> I'll have to find a better way
15:46:39 <AnMaster> ais523, why not just generate midi using some library for it?
15:46:51 <AnMaster> I think there are libraries for midi
15:46:53 <ais523> AnMaster: this was back in my Windows days
15:46:58 <AnMaster> ah
15:47:00 <ais523> the concept of using external libraries was a joke, more or less
15:47:13 <AnMaster> ais523, yeah dll is a joke
15:47:18 <AnMaster> apart from system dlls
15:47:25 <ais523> no, they're jokes too
15:47:30 <AnMaster> ais523, well ppl use them
15:47:41 <ais523> only because they have no choice
15:47:45 <AnMaster> yeah
15:48:15 <AnMaster> ais523, well rosegarden or timidity must have midi parsing code
15:48:28 <AnMaster> one is a editor for midi (rosegarden, KDE based)
15:48:38 <ais523> yes, I have both installed
15:48:40 <AnMaster> and the other is a software midi player
15:48:51 <ais523> anyway, here it is: http://pastebin.ca/969225
15:48:56 <ais523> it's still a little buggy, though
15:49:10 <AnMaster> well timidity is certainly buggy yes
15:49:16 <AnMaster> I use hardware based midi :)
15:49:32 <ais523> it wasn't timidity I was referring to, which I'm pretty fond of
15:49:37 <ais523> but to esolangs.el, which I just pasted
15:49:40 <AnMaster> #
15:49:41 <AnMaster> ("(:\\*)" . font-lock-constant-face)
15:49:41 <AnMaster> #
15:49:41 <AnMaster> ("(::\\*\\*)" . font-lock-constant-face)
15:49:41 <AnMaster> #
15:49:41 <AnMaster> ("(:::\\*\\*\\*)" . font-lock-constant-face)
15:49:43 <AnMaster> #
15:49:45 <AnMaster> ("(::::\\*\\*\\*\\*)" . font-lock-constant-face)
15:49:47 <AnMaster> huh?
15:49:51 <AnMaster> it goes on like that
15:50:50 <ais523> AnMaster: because Emacs regexps aren't very powerful
15:50:56 <ais523> so they can't recognise Underload constants
15:51:02 <AnMaster> ah
15:51:27 <AnMaster> ais523, are you sure there are no pcre bindings or such for emacs?
15:51:40 <AnMaster> I seem to recall that there are python bindings
15:51:44 <AnMaster> pymacs or something
15:51:53 <ais523> probably, but they don't hook into Font Lock AFAIK
15:52:11 <AnMaster> hm ok true
15:52:52 <ais523> how much Emacs-lisp do you know?
15:52:55 <ais523> I'm not very good at it
15:53:33 <ais523> although I have resorted to evil tricks in the past, like doing string processing on numbers because Emacs couldn't handle them as numbers due to it not supporting a full 32-bit range for integers
15:54:51 <AnMaster> <ais523> how much Emacs-lisp do you know?
15:54:53 <AnMaster> not much
15:55:07 <AnMaster> just coded a bit for erc
15:55:13 <AnMaster> so not very much indeed
15:55:21 <ais523> pity, I was hoping someone who knew more than me could go through it and say "you're doing it all wrong! you should be doing it like this!"
15:55:32 <AnMaster> tried #emacs ?
15:55:56 <ais523> it's not really worth bothering them with something as pointless as esolangs.el until the code is a bit more mature
15:56:12 <ais523> (e.g. the BF indenter failing on blank lines problem, but I think I know what's causing that)
15:56:38 <ais523> it doesn't support GNU-style indentation, though, just the equivalents of K&R and BSD, and any mix between them
15:57:08 <ais523> it preserves newlines and doesn't add new ones, at the moment, so they determine what sort of indentation is wanted
15:57:47 <ais523> although I'm planning to add an auto-indenter that sorts out newlines: remove existing newlines, change [ and ] to \n[\n and \n]\n, change \n[\n-\n]\n to [-], and reindent
16:01:08 <ais523> BTW, C-g seems to fail as an interrupt key on GTK Emacs on Ubuntu, which is annoying
16:01:53 <AnMaster> typedef int bigint_t __attribute__ ((__mode__ (__TI__))); <-- seems that give 128 bit integers, a gcc hack of course
16:01:55 <AnMaster> hm...
16:02:56 <AnMaster> ais523, no idea about gtk emacs
16:03:21 <ais523> AnMaster: gcc should support 2^n bit integers for all n >= 3
16:03:26 <ais523> I doubt it does, though
16:03:28 <AnMaster> __int128_t hm __uint128_t
16:03:38 <AnMaster> ais523, "should"?
16:03:44 <AnMaster> and what should the types be called?
16:03:45 <ais523> in my opinion
16:03:51 <ais523> and why not just use int128_t?
16:03:58 <ais523> it's reserved by C99 for that purpose
16:04:04 <AnMaster> no clue
16:04:09 <ais523> an implementation is allowed to define intanything_t
16:04:24 <ais523> for any positive integral value of anything that's a multiple of CHAR_BIT
16:04:29 <AnMaster> int12_and_a_half_t?
16:04:42 <AnMaster> oh wait that sounds like TURKY BOMB
16:04:44 <ais523> the _least and _fast versions can have any positive integral value because padding is allowed
16:04:59 <AnMaster> ais523, I still want an "_most"
16:05:07 <AnMaster> to define not bigger than this
16:05:46 <ais523> int_most16_t would therefore be int on DOS, short on Linux, and not implementable at all on some 32 bit DSPs?
16:05:48 <AnMaster> ais523, anyway I lack any clue about printf modifier for int128_t
16:06:01 <AnMaster> ais523, aye that would be the case
16:06:09 <AnMaster> ais523, it could be char too
16:06:12 <ais523> if they had used int128_t, then they would have put a relevant printf modifier in stdint.h
16:06:14 <AnMaster> as I said at most
16:06:24 <ais523> CHAR_BIT is 32 on some DSps
16:06:30 <AnMaster> ouch
16:06:49 <AnMaster> ais523, so a byte there is 32 bits XD
16:06:52 <ais523> yes
16:07:01 <ais523> they can't sensibly address anything smaller without using bitwise arithmetic
16:07:02 <AnMaster> what is a DSP exactly
16:07:07 <ais523> digital signal processor
16:07:22 <AnMaster> hm
16:07:22 <ais523> a bit of hardware designed to do numerical computations that are useful for processing signals
16:07:34 <ais523> so they're really good at doing Fourier Transforms, for instance
16:07:47 <ais523> generally speaking they have some ridiculously specific asm instructions
16:08:09 <fizzie> And fancy addressing modes, like hardware-based circular buffer access.
16:08:21 <ais523> yes, and I've actually used bit-reversed addressing
16:08:30 <AnMaster> $ grep -R int128 /usr/include/
16:08:30 <AnMaster> /usr/include/valgrind/libvex_ir.h: Ijk_Sys_int128, /* amd64/x86 'int $0x80' */
16:08:31 <AnMaster> that is all
16:08:35 <AnMaster> interesting
16:08:53 <AnMaster> and that one is not even related
16:09:14 -!- jix has joined.
16:09:23 <ais523> AnMaster: I got exactly the same results as you on that grep
16:09:52 <AnMaster> $ grep -R int128 /usr/x86_64-pc-linux-gnu/
16:09:57 <AnMaster> hits some binary matches
16:10:09 <AnMaster> $ strings /usr/x86_64-pc-linux-gnu/bin/strip | grep int128
16:10:10 <AnMaster> unsigned __int128
16:10:11 <AnMaster> nice
16:11:31 <tejeez> dsp can also mean digital signal processing in general, not necessarily hardware
16:11:49 <ais523> heh, when I run strings on ick I get the error message Failed! almost at the end
16:11:55 <AnMaster> <ais523> generally speaking they have some ridiculously specific asm instructions
16:11:56 <AnMaster> like?
16:12:07 <AnMaster> ais523, hahah
16:12:23 <AnMaster> (rnd >= 0) && (rnd <= 3)
16:12:29 <AnMaster> debugging data
16:12:55 <ais523> multiply together two registers and add the result to an accumulator, then load those two registers from memory through two pointers which are then incremented, then optionally store the value of another accumulator into memory
16:13:04 <AnMaster> ais523, nice on a stripped binary I get a list of fingerprints at the end
16:13:05 <AnMaster> but
16:13:07 <AnMaster> they are reversed
16:13:08 <ais523> that's a single asm instruction
16:13:14 <AnMaster> as in SYOT
16:13:15 <AnMaster> for TOYS
16:13:28 <AnMaster> and the source doesn't have reversed fingerprint names anywhere
16:13:50 <AnMaster> ais523, ok that is crazy
16:13:53 <ais523> oh, you can also subtract from the accumulator instead of add, and you can add or subtract 1, 2, or 3 words from the pointers rather than just incrementing
16:13:58 <AnMaster> ais523, what is the use for such an instruction?
16:14:05 <ais523> AnMaster: it actually has lots of uses
16:14:10 <AnMaster> oh?
16:14:15 <ais523> generally speaking you run it in a loop
16:14:22 <AnMaster> I see and?
16:14:24 <ais523> to do things like multiplying matrices
16:14:41 <ais523> and lots of calculations can be written in terms of multiplying matrices
16:14:41 <AnMaster> hm
16:15:02 <ais523> I've also seen it be used to take the squared magnitude of all complex numbers in a vector
16:15:06 <AnMaster> why have you programmed for DSPs?
16:15:13 <ais523> university project
16:15:16 <AnMaster> ah
16:15:31 <ais523> although I did get a stripped-down version of INTERCAL running on PICs
16:15:35 <AnMaster> so can a DSP do normal stuff?
16:15:35 <ais523> which are even less powerful
16:15:40 <ais523> AnMaster: yes, but not very well
16:15:46 <AnMaster> ais523, I know what a PIC is yes,
16:15:47 <ais523> because they tend not to have much memory
16:15:52 <AnMaster> I used one very simple once
16:15:55 <AnMaster> 12Fsomething
16:15:56 <ais523> say a few kilobytes of RAM at once
16:16:01 <AnMaster> 12F6*?
16:16:08 <ais523> AnMaster: I generally use the 16F series
16:16:20 <ais523> 12F would be even more primitive
16:16:21 <AnMaster> anyway I remember the serial port interrupt routine *shudder*
16:16:29 <AnMaster> ais523, it was, 32 instructions I think
16:16:41 <ais523> that sort of thing is enough to make me write the serial port routines in software
16:16:53 <AnMaster> ais523, I did write one, in asm yes
16:17:07 <ais523> the university has a C to PIC compiler
16:17:15 <ais523> but it was buggy and I preferred to write in asm
16:17:16 <AnMaster> ais523, well with 1 kb ram...
16:17:24 <AnMaster> eh
16:17:28 <AnMaster> 1 kb program memory
16:17:31 <AnMaster> even less ram
16:17:33 <ais523> on a PIC, the RAM is measured in tens of bytes, normally
16:17:44 <ais523> I vaguely remember that one version I used had 56 bytes memory
16:17:47 <ais523> but most of them have more
16:17:49 <AnMaster> ais523, yeah, don't remember exactly
16:18:14 <ais523> this explains why in PIC-INTERCAL, the NEXT stack has only 16 entries, and STASHes are limited to one member
16:18:16 <AnMaster> 12F629 it seems
16:18:30 <ais523> and I store abstention statuses in 1-bit integers to save space
16:18:49 <ais523> there is no such thing in C unless you use a bitfield, but some PIC C compilers support them anyway because they're so useful
16:19:06 <AnMaster> hah
16:19:26 <AnMaster> ais523, but you can't adress on bit-basis in pic iirc?
16:19:28 <AnMaster> or can you?
16:19:35 <ais523> you can
16:19:35 <AnMaster> I think it was using bytes of some size
16:19:38 <ais523> using bitwise instructions
16:19:38 <AnMaster> hm
16:19:43 <AnMaster> yeah
16:19:48 <ais523> there's a 'skip if bit n of register r is 0' instruction
16:19:53 <AnMaster> you can on anything with bitwise
16:20:00 <ais523> which is bitwise addressing, but only for literal addresses
16:20:03 <AnMaster> but I mean, you can't take a pointer to a bit
16:20:03 <ais523> you can't have bitwise pointers
16:20:32 <AnMaster> ais523, well I think you could on some historical systems heh
16:20:37 <ais523> but INDF is a bit of a tricky way to emulate pointers anyway, especially if they're nested
16:20:46 <ais523> e.g. a->b->c
16:20:49 <AnMaster> true
16:21:03 <ais523> it's useful for accessing things in the wrong bank, though; that's often faster than bank switching
16:21:04 <AnMaster> ais523, anyway it was years ago I coded for PIC
16:21:14 <AnMaster> don't even remember most of the asm opcodes
16:21:23 <ais523> I can still remember many of them
16:21:37 <ais523> PIC asm is much better than x86 asm
16:21:43 <AnMaster> well yes
16:21:45 <AnMaster> it is RISC
16:21:50 <AnMaster> x86 is CISC
16:21:59 <AnMaster> so so much more to keep track of on x86
16:23:01 <ais523> well, x86 isn't nearly as CISC as DSPs can be
16:23:09 <ais523> it's more a medium instruction set computer
16:23:15 <AnMaster> hm
16:23:33 <AnMaster> ais523, where is the source of PIC-INTERCAL?
16:23:42 <ais523> it's in the C-INTERCAL compiler
16:23:43 <ais523> ick -P
16:23:54 <ais523> but most of the advanced features are disabled if you do that
16:23:56 <AnMaster> hm
16:24:31 <ais523> (INTERCAL parsing is sufficiently bad that other dialects of INTERCAL tend to get bolted onto something that has an INTERCAL parser built-in already)
16:24:47 <AnMaster> hahah
16:25:03 <fizzie> Incidentally, I've done an university project DSP programming thing too, for our "Digital Signal Processors and Audio Signal Processing" course.
16:25:11 <AnMaster> ais523, isn't it just a case of a bison/lex/yacc/whatever file
16:25:17 <AnMaster> I can't remember which does what of them
16:25:22 <ais523> AnMaster: have you /read/ it?
16:25:35 <AnMaster> ais523, nop I haven't looked at ick source
16:25:44 <ais523> the parsing takes place both in the flex file and in the bison file
16:26:07 <AnMaster> ais523, well what exactly is the difference between flex, bison and yacc?
16:26:10 <ais523> and there are interactions both ways for various complicated reasons
16:26:16 <ais523> flex generates lexical analysers
16:26:26 <ais523> so you give it a stream of characters, and it generates tokens
16:26:30 <AnMaster> ah ok
16:26:35 <ais523> bison takes the tokens and gives you a parse tree from them
16:26:46 <ais523> and yacc is the program that bison was based on, and is older
16:26:52 <AnMaster> ah
16:27:18 <AnMaster> ais523, I have seen programs that bison fail at, and only byacc can handle
16:27:35 <ais523> yes, the two languages are slightly different
16:27:46 <ais523> but hopefully parser.y works in both bison and yacc
16:28:18 <AnMaster> ais523, well the file in question didn't work under normal yacc either, it needed byacc
16:28:29 <ais523> it's a bit like writing files that are valid C and also valid C++; you can /almost/ do it just by writing C, but there are pitfalls to watch out for
16:28:51 <ais523> AnMaster: I can sort of imagine how to write a file like that, but it's hard to see how one would go about doing it accidentally
16:29:06 <AnMaster> ais523, no clue, it was from some shell
16:29:21 <AnMaster> netbsd mksh or something unusal like that
16:29:25 <AnMaster> don't remember exactly
16:29:36 -!- oklopol has joined.
16:29:38 <AnMaster> I have a collections of shells with an automated building system for them
16:29:50 <AnMaster> ais523, the build system unpacks and so on, written in bash
16:30:07 <ais523> have you seen dd/sh?
16:30:17 <AnMaster> I do have a few called sh
16:30:23 <AnMaster> $ ls /home/arvid/shells/
16:30:23 <AnMaster> README akanga bash ccsh dash fish ksh93 oksh pdksh psh sash sh shellbuild-lib tcsh
16:30:23 <AnMaster> STATUS ash build compile-tools es ftsh mksh osh posh rc scsh shellbuild shish zsh
16:30:47 <ais523> http://intercal.freeshell.org/ talks about what's effectively an esolang that they call dd/sh, which is basically POSIX sh + its builtins + dd
16:30:57 <AnMaster> ais523, ah it was some ash variant that needed byacc
16:31:08 <ais523> the result is Turing-complete and bf-complete, although they recommend that you also use rm to avoid a tempfile leak
16:31:47 <AnMaster> anyway you can code lots of things with just shell built ins
16:31:56 <AnMaster> at least if you use bash or ksh or some other modern shell
16:32:17 <AnMaster> zsh you can even do a irc *client* in pure zsh
16:32:30 <AnMaster> may be possible in bash but I wouldn't know how
16:32:40 <ais523> bash has no way to select AFAIK
16:32:44 <ais523> zsh was always better at piping
16:32:47 <AnMaster> ais523, yeah
16:32:54 <fizzie> There's at least one IRC client in bash.
16:32:55 <AnMaster> you can do loadables in bash however
16:33:02 <AnMaster> fizzie, pure bash?
16:33:07 <AnMaster> and irc client, not bot
16:33:12 <AnMaster> I wrote an irc bot in bash
16:33:13 <AnMaster> works fine
16:33:18 <ais523> bots are easier
16:33:22 <AnMaster> indeed
16:33:46 <ais523> I got ThutuBot to connect to freenode on several occasions, but I never managed to get it to join a channel
16:34:07 <ais523> I think it was confused by spurious control chars coming out of telnet, but am not sure
16:34:28 <fizzie> I'm quite sure it was pure bash; and a client, yes; I used it because it was the smallest binary to download with a GPRS link. I just can't seem to remember the name.
16:34:47 <ais523> a file written in pure bash isn't exactly a 'binary'
16:35:03 <AnMaster> ais523, you should have used netcat
16:35:13 <ais523> yes, I probably should
16:35:21 <ais523> how do you use netcat to get a two-way link going?
16:35:36 <AnMaster> ais523, see how envbot does it?
16:35:52 <ais523> where's the link to envbot source?
16:36:05 <AnMaster> http://envbot.org/trac/browser/anmaster-trunk/transport
16:36:11 <AnMaster> select the netcat module I guess
16:36:25 <AnMaster> ais523, it does use some named fifos
16:36:28 <AnMaster> don't worry about it
16:36:39 <ais523> no, I was using them too
16:36:50 <ais523> although I did make a named fifo alternative script for a University project
16:37:06 <AnMaster> eh?
16:37:07 <ais523> that was a wrapper around a shell command that opened various pipes and told it the file descriptors of the ends
16:37:35 <AnMaster> as you can see from the comment, I recommend other tools
16:37:55 <fizzie> According to my irclogs I had to port the bash IRC client to use netcat instead of the /dev/tcp/foo pseudo-files because Debian's bash is compiled without those. But I _still_ haven't mentioned the name of the client in that conversation.
16:38:14 <ais523> fizzie: that's pretty impressive
16:38:49 <AnMaster> fizzie, well yes, I know debian is stupid
16:39:00 <AnMaster> there are various rants in envbot source about it
16:39:50 <AnMaster> 42 dev-tcp:
16:39:50 <AnMaster> 43 The bash you use must support the pseudo device /dev/tcp. Debian is known
16:39:50 <AnMaster> 44 to disable this. Most other distros are sane and have it on.
16:39:53 <AnMaster> http://envbot.org/trac/browser/anmaster-trunk/README
16:39:56 <AnMaster> just one example
16:40:20 -!- ais523_ has joined.
16:40:30 <ais523_> OK, this is me online using netcat
16:40:36 <AnMaster> hah
16:40:42 <fizzie> Heh, I've been trying to find the client name earlier, too; my irclogs have something like (translated) "I wonder what was the name of that bash irc client. Can only find discussion about it, not the name of the thing."
16:40:43 <AnMaster> backspace may not work
16:40:46 <ais523_> doesn't strike me as being very different from telnet
16:41:00 <ais523_> let me test: b
16:41:09 <AnMaster> said b yes?
16:41:16 <ais523_> yes, it works, I think it's reading from stdin
16:41:25 <ais523_> I typed a backspace b
16:41:33 <AnMaster> ah
16:41:41 <AnMaster> ais523, of course it reads from stdin
16:41:43 <ais523_> and I'm benefitting from stdin's line-buffering
16:41:46 <AnMaster> where else would it read from?
16:42:09 * AnMaster wonders if you can do ctcp here?
16:42:14 <AnMaster> ais523, ^
16:42:41 * ais523_ gets annoyed at AnMaster for sending them lots of CTCPs
16:42:48 <AnMaster> two=
16:42:51 <AnMaster> that isn't lots
16:42:57 <ais523_> three
16:43:05 <AnMaster> nah the first was a /me
16:43:06 <ais523_> you did an ACTION immediately beforehand
16:43:09 <AnMaster> yes
16:43:19 <AnMaster> ais523, but most real clients doesn't show it as ctcp
16:43:23 <ais523_> and it arrived here, therefore you sent me three CTCPs
16:43:35 <AnMaster> ais523, servers with channel modes that block ctcps, does not block /me
16:44:07 <ais523_> maybe they should if they're sent to an individual user rather than a channel
16:44:24 <AnMaster> nop they don't
16:44:36 <ais523_> but I suppose that blocking messages like <CTCP>VERSION<CTCP> sent to a channel would be even more important than blocking them against individual users
16:44:43 <AnMaster> ais523, yeah
16:45:00 <ais523_> the CTCP spec says that I'm meant to be able to put a CTCP in the middle of a line! Why did nobody respond?
16:45:01 <AnMaster> they do block ctcp (anything but ACTION)
16:45:14 <AnMaster> ais523, because most clients do not understand that
16:45:27 <AnMaster> mine showed a small box with \001 in it
16:45:29 <ais523_> this is as bad as that technically-correct-SGML website that someone, I think maybe pikhq, linked to a while ago
16:45:41 <AnMaster> ais523, oh? link?
16:45:53 <Deewiant> http://pikhq.nonlogic.org/test.html
16:45:53 <ais523_> it validated, but with lots of warnings about most browsers not understanding it
16:46:07 <ais523> http://pikhq.nonlogic.org/test.html
16:46:20 <AnMaster> ais523, as Deewiant just said
16:46:39 <ais523_> yes, messages can cross quite effectively on IRC
16:46:54 <ais523_> especially when I'm not paying attention in an effort to finish typing my message
16:47:05 <ais523_> or in this case copy/pasting
16:47:46 -!- ais523_ has left (?).
16:48:41 <AnMaster> ais523, of the browsers I tried only lynx could show that page
16:49:02 <ais523> AnMaster: that single line deserves to be qdb'd
16:49:04 <AnMaster> I tried: firefox, konqueor, links2, w3m and lynx
16:49:18 <fizzie> I think the client might've been this one, but the code really isn't very impressive. It seems to just sort-of alternate between reading the stdin and the IRC fd. http://www.darkwired.org/~dodo/code/junk/pre/bairc/releases/bairc-1.3.bash
16:49:23 <AnMaster> ais523, haha
16:49:37 <AnMaster> ais523, don't have elinks installed
16:52:04 <fizzie> elinks doesn't seem to like it.
16:52:15 <AnMaster> ok
16:52:18 <AnMaster> lynx is best
16:52:25 <ais523> Firefox just shows a blank page with no title
16:52:38 <AnMaster> ais523, same as all the others did basically
16:52:49 <AnMaster> except lynx
16:52:57 <fizzie> Elinks shows "</>" as the title, a "</>"-labeled link to http://pikhq.nonlogic.org/foo and the text "</> </>".
16:53:32 <AnMaster> the link works in lynx
16:54:05 <ais523> I actually visited that link in fizzie's comment, and started laughing
16:54:31 <fizzie> My version of lynx makes the whole "This stuff doesn't show at all, but only because HTML renderers suck." text the link, and the "Valid link" text isn't shown. Not quite sure how it's supposed to work, though.
16:54:47 <AnMaster> fizzie, ah true
16:54:55 -!- thutubot has joined.
16:54:56 <AnMaster> fizzie, but way better than the others
16:54:59 <ais523> yay!
16:55:11 <ais523> now I just have to remember which commands I programmed into it
16:55:12 <AnMaster> ais523, fizzie someone should file a bug to mozilla about that page breaking ;)
16:55:14 <ais523> \hello
16:55:14 <thutubot> Hello, ais523!
16:55:17 <AnMaster> \helop
16:55:19 <AnMaster> \help
16:55:22 <AnMaster> \hello
16:55:23 <thutubot> Hello, AnMaster!
16:55:28 <ais523> I think it's just got \hello and \quit at the moment
16:55:32 <AnMaster> \quit
16:55:32 -!- thutubot has quit (Client Quit).
16:55:35 <AnMaster> ah yes it does
16:55:36 <fizzie> What, no "!list"?
16:55:38 <AnMaster> (sorry)
16:55:54 <ais523> now I have to come up with something useful to do with the world's first IRC bot written in Thutu
16:56:12 <AnMaster> ais523, is it same as thue?
16:56:14 <AnMaster> or?
16:56:19 <ais523> no, it's my own language
16:56:26 <ais523> think of it as Thue with regular expressions and flow control
16:56:29 <ais523> http://esolangs.org/wiki/Thutu
16:57:53 <AnMaster> ais523, isn't Thue turing complete?
16:58:01 <AnMaster> so you could write a irc bot in thue?
16:58:06 <ais523> it's Turing-complete
16:58:10 <ais523> but I'm not sure about BF-complete
16:58:14 <AnMaster> hm ok
16:58:15 <ais523> because its I/O is somewhat primitive
16:58:28 <ais523> Thutu is nicer to work with, anyway
16:58:41 <AnMaster> btw it would be possible to do a irc bot in befunge without any external tool
16:58:43 <AnMaster> just painful
16:58:58 <AnMaster> there is the SOCK fingerprint
17:07:04 -!- thutubot has joined.
17:07:15 <ais523> \ul (:aSS):aSS
17:07:15 <thutubot> (:aSS):aSS
17:07:26 <ais523> \ul (x):::::*****S
17:07:27 <thutubot> xxxxxx
17:07:43 <ais523> be careful with it, though, it'll go into an infinite loop on most invalid input
17:07:47 <ais523> to \ul, that is
17:08:50 <ais523> actually, I'm not sure, maybe it'll just reply with garbage
17:08:58 <ais523> \ul (((unbalanced
17:09:08 <ais523> \ul (did I break it?)S
17:09:17 <ais523> yes, it goes into an infinite loop
17:09:21 -!- thutubot has quit (Remote closed the connection).
17:09:32 -!- thutubot has joined.
17:10:41 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
17:11:26 <ais523> \ul ((!ul )Sa(\ul )~*aS(:^)S):^
17:11:27 <thutubot> !ul (\ul ((!ul )Sa(\ul )~*aS(:^)S)):^
17:11:41 <ais523> !ul (EgoBot, are you working?)S
17:11:43 <EgoBot> EgoBot, are you working?
17:11:56 <ais523> OK, there must have been a mistake in the input I gave to ThutuBot
17:12:06 <ais523> oh, of course
17:12:45 <ais523> \ul ((!ul )Sa(\ul )~*(:^)*aS(S)S):^
17:12:45 <thutubot> !ul (\ul ((!ul )Sa(\ul )~*(:^)*aS(S)S):^)S
17:12:47 <EgoBot> ul ((!ul )Sa(ul )~*(:^)*aS(S)S):^
17:13:14 <ais523> hmm, Egobot's mishandling backslashes. That could be bad for this...
17:13:29 <Deewiant> escape it?
17:13:44 <ais523> writing a quine that escapes backslashes in itself is harder
17:13:53 <ais523> because all characters are given literally in Underload
17:14:05 <ais523> maybe I should just switch thutubot to a different escape character
17:14:07 <ais523> \quit
17:14:07 -!- thutubot has quit (Client Quit).
17:15:31 -!- thutubot has joined.
17:15:35 <ais523> +hello
17:15:35 <thutubot> Hello, ais523!
17:15:43 <ais523> +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^
17:15:44 <thutubot> !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S
17:15:47 <EgoBot> +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^
17:15:47 <thutubot> !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S
17:15:49 <EgoBot> +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^
17:15:49 <thutubot> !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S
17:15:51 <EgoBot> +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^
17:15:51 <thutubot> !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S
17:15:52 <AnMaster> \quit
17:15:53 <AnMaster> spam
17:15:53 <EgoBot> +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^
17:15:53 <thutubot> !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S
17:15:55 <EgoBot> +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^
17:15:55 <thutubot> !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S
17:15:57 <AnMaster> +quit
17:15:57 -!- thutubot has quit (Client Quit).
17:15:57 <EgoBot> +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^
17:15:58 <ais523> +quit
17:16:11 <ais523> well, it works, anyway
17:16:29 -!- thutubot has joined.
17:16:39 <ais523> that's the first time I've done a bot loop in pure Underload, I think
17:17:08 <ais523> and it's meta-esolangy because the thutubot Underload interp's written in Thutu, and the EgoBot Underload interp's written in Brainfuck (by Keymaker)
17:22:59 -!- CakeProphet has joined.
17:23:44 <thutubot> Hello, CakeProphet!
17:23:58 <oklopol> yay, oklotalk has a parse
17:23:59 <oklopol> r
17:24:03 <CakeProphet> :)
17:24:04 <CakeProphet> :D
17:24:06 <CakeProphet> :)
17:24:07 <CakeProphet> :D
17:24:10 <CakeProphet> Hello you bastards.
17:24:20 * ais523 has written an IRC bot in Thutu
17:24:22 <oklopol> even CakeProphet may have heard about oklotalk, it's just taken me that long.
17:24:25 <ais523> which runs Underload programs
17:24:31 <oklopol> ais523: cewl :D
17:24:37 <ais523> oklopol: I'm vaguely aware of it
17:24:43 <ais523> but can't remember much about what it does
17:24:47 <oklopol> oklotalk?
17:24:48 <ais523> +ul (:aSS):aSS
17:24:48 <thutubot> (:aSS):aSS
17:24:53 <ais523> oklopol: yes
17:25:00 <oklopol> well it's a fairly large thing
17:25:15 <oklopol> currently, i just have a prefix-kinda parser for it
17:25:23 <oklopol> because the actual parsing is not that easy
17:25:25 <CakeProphet> ....no. no I have not.
17:25:46 <CakeProphet> does anyone want to start a life insurance company with me? I have a brilliant idea to defeat all competition.
17:25:47 <oklopol> current factorial (= fact {(-> 1 1) (-> n (* n (out (' (- n 1)))))}) (fact 4)
17:26:18 <oklopol> with actual oklotalk parsing it would be,,,
17:26:36 <CakeProphet> looks like demented Lisp.
17:26:44 <oklopol> fact={1->1;N->N*out'(n-1)};fact 4
17:26:57 <oklopol> CakeProphet: it's sexps, so, duh
17:27:15 <CakeProphet> rofl... sexps. What a dirty phrase.
17:27:23 <ais523> I have a massive lang project which is about 2/3 of a spec and a parser at the moment
17:27:29 <CakeProphet> Did you know Christianity has a lot of sects?
17:27:38 <ais523> so probably at the same stage as oklotalk
17:27:40 <oklopol> oklotalk doesn't have much to do with lisps
17:27:54 <oklopol> it's just sexps are trivial to parse
17:28:16 <ais523> yes
17:28:23 <ais523> I suppose that Underload uses sexps in theory
17:28:42 <ais523> but it's really just that balanced parens are the only things in the syntax that don't parse as single characters
17:29:09 <oklopol> well then it has nested structures, that's not really sexps automatically
17:29:22 <ais523> sexps = balanced parens, mostly, in my view
17:29:24 <oklopol> i think sexp implies (verb object object*)
17:29:30 <CakeProphet> so... when I start a life insurance company.
17:29:31 <ais523> although I'm sure that a Lisper would tell me that I was wrong on that
17:29:31 <oklopol> is that so?
17:29:39 <CakeProphet> I am going to hire assassins to murder people who use other company's plans.
17:29:47 <CakeProphet> until the company's go out of business from having to pay out so much
17:29:47 <oklopol> well, then i'd say almost every language uses sexps
17:29:55 <ais523> CakeProphet: as a loss-leader kind of thing?
17:29:56 <oklopol> (oklotalk doesn't, still)
17:30:03 <CakeProphet> ...yes.
17:30:37 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
17:30:49 <CakeProphet> the same concept could be applied to auto insurance. Simply sabotage people's vehicles in order to cause accidents.
17:31:15 <CakeProphet> ...but not flood insurance. Unless you can bomb some kind of dam or levi.
17:31:28 <ais523> CakeProphet: or control the weather
17:31:34 <CakeProphet> that also
17:31:34 <ais523> but that would affect you too
17:31:42 <ais523> unless you did it in areas far from where your customers were
17:32:51 <CakeProphet> though it would be hard to get away with repeated murder. Perhaps the auto sabotage is more feasible.
17:33:16 <ais523> CakeProphet: doing it one at a time would be too small-scale to make any differences
17:33:39 <ais523> break into a company that makes cars, and alter the firmware so you can cause large-scale accidents remotely
17:33:43 -!- Sgeo[College] has joined.
17:34:08 <ais523> +ul (Hello, Sgeo!)S
17:34:08 <thutubot> Hello, Sgeo!
17:34:22 <CakeProphet> ...haha. We are demented geniuses.
17:34:31 <Sgeo[College]> Hi all
17:34:33 <Sgeo[College]> ais523: hm?
17:34:54 <ais523> thutubot's a Thutu program double-piped to netcat
17:34:58 <ais523> that runs Underload programs
17:35:08 <ais523> it also has a +hello command which was just a test
17:35:09 <ais523> +hello
17:35:09 <thutubot> Hello, ais523!
17:35:22 <CakeProphet> +gtfo
17:35:32 <CakeProphet> IT'S NOT WORKING
17:35:44 <ais523> CakeProphet: I don't know that abbrev, so it's unlikely that my bot will
17:35:50 <Sgeo[College]> Can Underload support PSOX? >.>
17:35:59 <Sgeo[College]> gtfo == get the f*** out
17:36:14 <CakeProphet> ais523, gtfo = "get the fuck off" or "get the fuck out" depending on the context.
17:36:24 <ais523> Sgeo[College]: you'd have to embed literal \0s into strings
17:36:27 <ais523> and most interps couldn't handle that
17:36:30 <CakeProphet> it's a... 4chanism
17:36:34 <Sgeo[College]> oh :(
17:36:55 <ais523> \0 is a very inconvenient character to type
17:37:06 <Sgeo[College]> I guess maybe PSOX should support some way to work with clients that can't just send nulls
17:37:23 <Sgeo[College]> In the magic, I guess
17:37:24 <ais523> besides, Underload doesn't have any input
17:37:38 <ais523> so it's not going to be able to communicate very well with PSOX anyway
17:37:42 <Sgeo[College]> ais523: well,... wait, how can there be a bot with no input?
17:37:46 <Sgeo[College]> Oh, n/m
17:37:48 <ais523> the bot's running on Thutu
17:38:12 <ais523> although I do like the idea of a bot that would send out random messages every now and then
17:38:31 <ais523> it could also send out regular PINGs to Freenode; if you ping a server often enough, it doesn't ping you back
17:38:39 <ais523> that way, it wouldn't need input
17:40:09 <CakeProphet> rofl. nice. It's like how I deal with annoying people.
17:40:18 <CakeProphet> ignore them.
17:40:40 <Sgeo[College]> CakeProphet: wha?
17:40:55 <CakeProphet> it could also send out regular PINGs to Freenode; if you ping a server often enough, it doesn't ping you back
17:41:13 <CakeProphet> client: "ping ping ping ping ping ping ping" server: "stfu I'm ignoring you."
17:41:19 <Sgeo[College]> What ab... oh n/m
17:41:29 <Sgeo[College]> I thought you felt insulted about something someone said
17:41:38 <CakeProphet> ...
17:41:39 <CakeProphet> no?
17:41:42 <ais523> CakeProphet: no, it PONGs you back instead
17:42:22 <CakeProphet> ...........
17:42:29 <CakeProphet> I don't think I have ever
17:42:43 <CakeProphet> willingly talked to a more pedantic crowd than you guys.
17:43:10 <ais523> well, I've been on comp.lang.c, and I think that they're slightly more pedantic than #esoteric, but they're an exception
17:43:19 <ais523> they basically all make their living out of being pedantic
17:43:36 <CakeProphet> ...well yeah. But I don't talk to those people. All complang communication channels are like that.
17:43:37 <Sgeo[College]> Am I pedantic?
17:43:44 <ais523> Sgeo[College]: no, just persistent
17:43:51 <ais523> but I don't mind it all that much
17:43:51 <Sgeo[College]> >.>
17:44:02 <CakeProphet> ...#esoteric is more like... theoretical pedantic.
17:44:20 <ais523> we refuse to be bound by the mundane shackles of common sense and efficiency
17:44:29 <Sgeo[College]> Am I ever persistent about things other than PSOX?
17:44:31 <Sgeo[College]> lol ais523
17:44:48 <ais523> Sgeo[College]: not sure, you're so persistent about PSOX we haven't had the chance to check
17:45:02 <ais523> but of course, that sort of persistence leads to a better program overall
17:45:11 <ais523> I can get in that sort of mood over INTERCAL sometimes
17:45:16 <ais523> and I'm sort of in that mood at the moment
17:46:04 <CakeProphet> I'm pretty non-pedantic. for a programmer. I consider it a good thing.
17:46:43 <ais523> many languages need pedantry to work properly
17:46:52 <ais523> you can't be sloppy with Malbolge, for instance
17:47:01 <CakeProphet> ...yeah. They do. But people don't.
17:47:12 <ais523> yes, I suppose that makes sense
17:47:25 <CakeProphet> thereis a difference in communicating with people and machines.
17:47:42 <ais523> my guess is that people who stay in complang channels are so used to getting into a pedantic frame of mind for talking to computers that it boils over into their interaction with humans
17:47:50 <CakeProphet> ...yeah.
17:48:04 <ais523> OTOH, I'm naturally pedantic anyway, which is maybe why I got into computer programming
17:48:10 <CakeProphet> -shrug- it's not bad. Just slightly annoying.
17:52:38 * oklopol saw no pedantry
17:52:53 <AnMaster> <oklopol> yay, oklotalk has a parse
17:52:54 <AnMaster> where?
17:53:01 <oklopol> on my computer
17:53:09 <oklopol> i will put it on an irc bot once it can do anything
17:53:13 <oklopol> i mean
17:53:17 <oklopol> once there's something it can do.
17:53:31 <oklopol> because the code isn't really meant for reading
17:53:35 <oklopol> that's not my style
17:53:50 <AnMaster> oklopol, can you give an example of a oklotalk program?
17:53:50 <oklopol> i did use multiple files this time, though!
17:53:50 <ais523> oklopol: what do you mean by 'meant for reading'
17:53:59 <oklopol> guess i'm growing up or something
17:54:01 <ais523> do you mean 'nicely commented so that others can follow'
17:54:04 <oklopol> yes
17:54:05 <AnMaster> oklopol, and list some key features of it
17:54:20 <ais523> or 'full of idioms, in-jokes, and other things that make the program harder to read but are a fun challenge'?
17:54:31 <oklopol> AnMaster: well, the fact i use lisp syntax currently kinda ruins explaining it
17:54:35 <oklopol> because the syntax is part of the fun
17:54:47 <AnMaster> oklopol, so have an example or not?
17:54:54 <AnMaster> and key features
17:54:55 <oklopol> i'll make a rational number class once i get a few things working
17:54:59 <ais523> e.g. when I wrote clc-cset.c, which handles CLC-INTERCAL character sets, I filled my C code with Perl idioms, because CLC-INTERCAL is written in Perl
17:55:18 <AnMaster> oklopol, so no example then? sigh
17:55:26 <oklopol> AnMaster: well i can show the factorial...
17:55:31 <AnMaster> oklopol, paste
17:55:38 <oklopol> (= fact {(-> 1 (outn 1)) (-> n (outn (* n (' (- n 1)))))}) (fact 4)
17:55:43 <oklopol> this is a simpel recursive one
17:55:45 <AnMaster> explain?
17:55:47 <oklopol> *simple
17:55:57 <AnMaster> oklopol, explain it
17:55:57 <oklopol> well that's sexps, so (function arg arg arg...)
17:56:03 <AnMaster> = ?
17:56:05 <AnMaster> (=
17:56:06 <AnMaster> ?
17:56:08 <oklopol> list: [elem elem elem ...]
17:56:23 <oklopol> lambda: {expression expression expression ...}
17:56:25 <AnMaster> oklopol, ok, doesn't seem too hard to parse
17:56:36 <oklopol> AnMaster: this is the simple lisp syntax
17:56:44 <oklopol> which has nothing to do with oklotalk's actual syntax
17:56:52 <AnMaster> oklopol, so same with the oklotalk syntax?
17:56:56 <AnMaster> care to show it?
17:57:08 <oklopol> it's just so simple to parse i made a parser for it to be able to code stuff without parsing manually
17:57:10 <oklopol> sure
17:57:17 <oklopol> i can show the factorial again
17:57:19 <oklopol> wait a sex
17:57:31 <AnMaster> um you mean sec
17:57:32 <AnMaster> ...
17:57:45 <oklopol> Fact={1->1;N->N*out'(n-1)};fact 4
17:57:51 <oklopol> i mean sex, but by that i mean sec.
17:58:08 <oklopol> basically, just a simple pattern matching
17:58:16 <ais523> +quit
17:58:16 -!- thutubot has quit ("ThutuBot quitting").
17:58:18 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
17:58:22 <oklopol> well the second expression in the lambda may be a bit complicated
17:58:35 <lament> oklopol: look, you made ais523 leave
17:58:38 <lament> GOOD JOB
17:58:49 <oklopol> Fact={1->1;N->N*out'(n-1)};fact 4... N*out'(n-1) means N * (out (' (n - 1)))
17:58:55 <oklopol> where out and ' are unary functions
17:58:55 <AnMaster> yes
17:58:56 <oklopol> :<<
17:59:01 <oklopol> oklotalk was too much for them
17:59:02 <AnMaster> but that syntax doesn't seem too hard?
17:59:14 <oklopol> AnMaster: it is not *that* hard
17:59:25 <oklopol> but it does have quite a few quirks
17:59:31 <AnMaster> like?
17:59:31 <oklopol> for instance, it's 100% robust
17:59:34 <AnMaster> eh
17:59:39 <oklopol> any string is a legal program
17:59:40 <AnMaster> you mean no side effects? sure
17:59:46 <AnMaster> oh
17:59:55 <AnMaster> oklopol, so cat /dev/urandom is?
17:59:58 <AnMaster> even non-ascii chars?
18:00:17 <oklopol> well, in theory, but they will be nops, mostly
18:00:30 <oklopol> because an unknown character means a one-character variable
18:00:35 <AnMaster> #vt"drwolH">:#,_ @
18:00:35 <AnMaster> >"lo le">:#,_a,@
18:00:41 <AnMaster> what would that program do?
18:00:46 <AnMaster> it is befunge
18:00:51 <oklopol> wait a mo
18:00:52 <AnMaster> but what would it to in oklotalk
18:01:03 <CakeProphet> do you know of any programming languages besides Perl that can evaluate undefined variables to null values?
18:01:04 <oklopol> it will take me a minute to parse that
18:01:17 <oklopol> CakeProphet: oklotalk does variable -> atom(its name)
18:01:20 <AnMaster> CakeProphet, hm bash evaluates them to empty strings
18:01:37 <AnMaster> so yes empty or unset
18:01:51 <AnMaster> CakeProphet, string and arrays being the only data types of bash
18:01:52 <CakeProphet> I ask because I am looking for a new language to write poems in. I have been using Python lately... but I might switch to Perl or something else.
18:01:54 <oklopol> this is because 5 + 2 actually sends the message [+ 2] to 5
18:02:21 <AnMaster> CakeProphet, however you need $ at the start of variable names of course
18:02:28 <AnMaster> CakeProphet, also not sure if awk would do it
18:02:35 <CakeProphet> yeah
18:02:53 <oklopol> AnMaster: i'll tackle your program now, wait a mo ->
18:03:05 <AnMaster> <oklopol> this is because 5 + 2 actually sends the message [+ 2] to 5
18:03:06 <AnMaster> hm....
18:03:11 <AnMaster> that sounds like smalltalk?
18:03:23 <oklopol> sure, if "sending a message" sounds like smalltalk
18:03:28 <AnMaster> it does
18:03:31 <AnMaster> to me ;P
18:03:33 <oklopol> sure
18:03:47 <AnMaster> or objc
18:03:53 <oklopol> every OO-based language and functional language is about messages, though
18:03:57 <oklopol> it's justt terminology
18:03:59 <oklopol> *jsut
18:04:01 <oklopol> *just
18:04:28 <lament> most OO-based languages and functional languages don't have messages
18:04:31 <AnMaster> well what does my program do?
18:04:38 <AnMaster> lament, indeed C++ doesn't
18:04:45 <AnMaster> objc and smaltalk does
18:04:48 <AnMaster> smalltalk*
18:04:53 <oklopol> but, indeed, oklotalk and smalltalk have a lot in common, which is quite ironic, because i had no idea what smalltalk was when i came up with the name and the semantics for oklotalk
18:05:18 <oklopol> lament: they pass information around
18:05:37 <AnMaster> oklopol, or want a harder program:
18:05:38 <AnMaster> #vtf2*2+"olleH">:#,_'>11p><a,0q
18:05:38 <AnMaster> ><"dlrow">:#,_'>fb+0p@
18:05:41 <oklopol> any high-level language will be about sending messages, if you want to think that way
18:05:41 <AnMaster> what about that one?
18:05:48 <oklopol> AnMaster: i haven't started yet
18:06:09 <lament> oklopol: "passing information around" is more general than "sending messages"
18:06:25 <oklopol> ...except for the fact smalltalk *did* inspire the *name*
18:06:28 <oklopol> lament: okay
18:06:43 <oklopol> how so?
18:06:55 <oklopol> i don't know any exact definition for message-passing
18:06:55 <CakeProphet> ... -facepalm- I don't like where this is heading.
18:06:56 <lament> because it's up to the object to dispatch on the messages
18:06:57 <AnMaster> oklopol, tell me when you are done, I may be afk
18:07:49 <lament> so the dispatch happens at runtime at the discretion of the object
18:07:57 <lament> late binding
18:08:04 <oklopol> i see
18:08:18 <oklopol> well, all i meant was passing information around
18:08:21 <lament> "I got this message, let's see what i can do with it"
18:08:40 <CakeProphet> hmmm... sounds like lament is talking about the difference between static and dynamic typing.
18:08:49 <oklopol> is he?
18:08:49 <CakeProphet> sort of.
18:09:02 <oklopol> i would say binding
18:09:06 <oklopol> which is a bit different
18:09:23 <CakeProphet> -shrug- whatever. my patience with comp terminology is growing thin.
18:09:27 <oklopol> :)
18:09:28 <CakeProphet> lately.
18:09:55 <oklopol> take it easy, man, you seem goddamn tense.
18:10:20 <AnMaster> oklopol, result?
18:10:27 <lament> CakeProphet: with dynamic typing it is still not clear who performs the dispatch
18:10:50 <lament> CakeProphet: the interpreter could tell the object "hey, you got this message '+', figure out what you can do with it"
18:10:55 <oklopol> AnMaster: haven't started, sorry, people keep talking.
18:11:02 <AnMaster> lament, that sounds like objc
18:11:10 <AnMaster> an object can pass it on to someone else
18:11:21 <lament> CakeProphet: or, it could look at the object and say "hmmm, this object doesn't look like it can add stuff, so i'll just die with an error"
18:11:22 <AnMaster> oklopol, just ignore convos on irc and do it?
18:11:27 <AnMaster> ;P
18:12:20 <oklopol> AnMaster: almost done
18:12:58 -!- Tritonio_ has joined.
18:13:07 * Sgeo[College] does the exercises on the professor's slides and goes back to chat
18:13:11 <oklopol> [(> [#vt "drwolH"] (: #)) (@ _ _)]
18:13:11 <oklopol> [(> (> "lo le") (: #)) _a @]
18:13:20 <oklopol> AnMaster: would become these two lists
18:13:39 <oklopol> also a few evaluations would take place, most of which make not much sense
18:14:05 <AnMaster> eh
18:14:11 <AnMaster> oklopol, but what would it output or whatever?
18:14:19 <oklopol> oh, right
18:14:23 <oklopol> i'll evaluate through
18:14:28 <oklopol> you just asked for the parse tree, iirc
18:14:28 <AnMaster> oklopol, anyway there were two lines to eeach
18:14:30 <AnMaster> each*
18:14:42 <oklopol> this is the... first one i think
18:14:46 <AnMaster> oklopol, ah ok
18:14:47 <AnMaster> right
18:15:19 <oklopol> [(> (> "lo le") (: #)) _a @] ==> [(> #t (: #)) _a @] ==> [#t #_a _@]
18:15:31 <oklopol> so second line would evaluate to #t #_a #@
18:15:37 <oklopol> (not _@)
18:15:41 <oklopol> this is a list of atoms
18:15:55 <oklopol> if the first line has no side-effects, this will be the result as well
18:16:13 <oklopol> and it doesn't, unless you've given new semantics to the operations
18:16:50 <oklopol> umm wait, actually [#t $_a $@]
18:17:18 <oklopol> oklotalk currently has two kinds of atoms, the name atom policy is a bit obscure atm
18:18:01 <oklopol> *-name
18:18:48 <AnMaster> oklopol, I see
18:18:59 <AnMaster> oklopol, and what would the second program evaluate as?
18:19:07 <oklopol> lessee
18:19:39 <AnMaster> oklopol, after what, what about mycology ;)
18:21:27 <oklopol> [#vtf 2] * 2 + "olleH" > (: #), _ ' (> 11) p (> (< a)), 0 q _
18:21:28 <oklopol> (> (< "dlrow")) > (: #), _ ' (> (fb (+ 0))) p (@ _)
18:21:36 <oklopol> AnMaster: just two uninteresting lists again
18:21:39 <oklopol> but i can evaluate...
18:21:44 <oklopol> hmm...
18:21:58 <oklopol> i haven't actually chosen semantics for everything
18:22:05 <AnMaster> I see
18:22:05 <oklopol> unary < for a string
18:22:13 <oklopol> wonder what that would do...
18:22:31 <oklopol> oklotalk generally tries to ensure every application, with primitives, means something
18:22:49 <oklopol> why? oklotalk generally doesn't answer that.
18:22:49 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
18:23:02 <Sgeo[College]> Turn the string into anumber, then do < on that number?
18:23:10 <oklopol> what's unary < for a number?
18:23:13 <oklopol> (< 5)
18:23:24 <oklopol> curry "<" with 5 as left parameter?
18:23:26 -!- Judofyr has joined.
18:23:47 <AnMaster> oklopol, so what about a string zzzzzzzzzzzzzzzzzzzzzzzzzz just?
18:23:47 * Sgeo[College] was thinking it meant "subtract one"
18:23:47 <oklopol> that wouldn't be very oklotalky, because currying isn't really supported
18:23:52 <Sgeo[College]> But currying might be better
18:23:52 <Sgeo[College]> Although if nothing comes after it..
18:23:53 <oklopol> AnMaster: a lowercase string is a function application
18:24:20 <oklopol> zzzz... would be parsed as (zzzzz... _), meaning "evaluate function zzzzz... with _ as param"
18:24:25 <Sgeo[College]> < string means subtract one from string
18:24:26 <AnMaster> oklopol, lower case == a-z? what about åäö?
18:24:28 <oklopol> _ is what it is in perl
18:24:29 <oklopol> *perl
18:24:33 <AnMaster> oklopol, and utf8 or not?
18:24:40 <Sgeo[College]> <string becomes strinf (I think)
18:24:41 <oklopol> AnMaster: those would be operator characters
18:24:58 <oklopol> Sgeo[College]: subtract one might work
18:25:11 <oklopol> but (oper string) should generally return a string
18:25:25 <AnMaster> oklopol, how long is a char in oklotalk?
18:25:28 <AnMaster> 8 bits?
18:25:30 <oklopol> string -> number will never happen automarically in oklotalk
18:25:34 <oklopol> *automatically
18:25:39 <AnMaster> if yes, then åäö as I sent them would be several codes
18:25:43 <AnMaster> because they are utf8
18:25:50 <oklopol> AnMaster: char is a number with #chr type-tagged
18:25:53 <oklopol> it's a bignum
18:25:56 <oklopol> :)
18:26:03 <AnMaster> hm
18:26:11 <Sgeo[College]> oklopol, string -> number, subtract one, number ->string
18:26:12 <oklopol> there's just lists, atoms and bignums in oklotalk
18:26:15 <AnMaster> oklopol, what would ascii \1 do?
18:26:17 <AnMaster> or \4?
18:26:22 <oklopol> operator characters
18:26:27 <Sgeo[College]> meaning (< string) would return a string
18:26:29 <oklopol> apply function \1 to param
18:26:29 <AnMaster> oklopol, and they do what?
18:26:40 <oklopol> well they will evaluate to the corresponding atom
18:26:44 <oklopol> $\1
18:26:44 <AnMaster> sigh
18:26:59 <AnMaster> oklopol, so what is a ¤?
18:27:09 <oklopol> Sgeo[College]: strings will never be automatically converted to numbers in that fashion
18:27:17 <AnMaster> oklopol, up for this one?
18:27:18 <oklopol> except perhaps as like base 256
18:27:20 <AnMaster> " raey eht ni nettirw saw elpmaxe sihT" >:#,_ "AMOR"4#@(MM+IIX\-\-+.)a,@
18:27:26 <AnMaster> oklopol, :)
18:27:30 <oklopol> AnMaster: what character is that?
18:27:39 <AnMaster> oklopol, the last one is a string
18:27:46 <oklopol> two characters?
18:27:46 <AnMaster> oklopol, the ¤ was a char
18:28:00 <AnMaster> oklopol, ¤ is one char
18:28:00 <AnMaster> ......
18:28:03 <AnMaster> get utf8
18:28:03 <AnMaster> duh
18:28:06 <oklopol> :)
18:28:09 <oklopol> (mirc)
18:28:25 <AnMaster> oklopol, it is the generic currency symbol
18:28:29 <oklopol> do it again
18:28:33 <oklopol> i may have utf on now
18:28:33 <AnMaster> ¤
18:28:37 <oklopol> darn :P
18:28:48 <oklopol> ¤
18:28:50 <oklopol> oh
18:28:53 <AnMaster> oklopol, an x with a o on, the o is filled so you don't see the x behind
18:29:00 <oklopol> i know what it is
18:29:04 <oklopol> but it won't show
18:29:04 <AnMaster> just the bits sticking out
18:29:16 <AnMaster> oklopol, ok, what does the program: " raey eht ni nettirw saw elpmaxe sihT" >:#,_ "AMOR"4#@(MM+IIX\-\-+.)a,@
18:29:22 <AnMaster> evaluate to in oklotalk
18:29:28 <AnMaster> oklopol, and tried a real OS?
18:29:33 <AnMaster> Linux, or *BSD
18:29:35 <oklopol> i'll parse it...
18:29:39 <oklopol> i've tried em
18:29:45 <AnMaster> oklopol, err wait
18:29:48 <AnMaster> mispaste
18:29:51 <AnMaster> on no
18:29:53 <AnMaster> it was correct
18:30:06 <AnMaster> just line broken by irc client made me confused
18:31:05 <oklopol> " raey eht ni nettirw saw elpmaxe sihT" > (: #), _ "AMOR" 4 #@ (MM + IIX \ _ \ - + . _) a _, @
18:31:10 <oklopol> an uninteresting list
18:31:20 <oklopol> " raey eht ni nettirw saw elpmaxe sihT" > (: #) <<< first element
18:31:22 <oklopol> let's evaluate
18:31:35 <AnMaster> mhm
18:31:42 <oklopol> " raey eht ni nettirw saw elpmaxe sihT" > "" << tailed an atom -> converted to string, tailed string
18:31:47 <Sgeo[College]> "You ask this question after class"
18:31:50 <oklopol> this evaluates to true
18:31:52 <oklopol> or #t
18:31:54 <AnMaster> Sgeo[College], ?
18:32:19 <Sgeo[College]> AnMaster: what my professor just told me after I asked something
18:32:25 <AnMaster> Sgeo[College], what did you ask?
18:32:29 <oklopol> so #t, _ "AMOR" 4 #@ (MM + IIX \ _ \ - + . _) a _, @ _ <<< cannot be evaluated without knowing _
18:32:29 <AnMaster> oklopol, hm interesting
18:32:37 <AnMaster> oklopol, and what does _ do?
18:32:42 <oklopol> it's what it is in perl
18:32:52 <oklopol> which, btw, is another re-invention
18:32:55 <AnMaster> oklopol, I don't know perl
18:32:58 <Sgeo[College]> How does Access define the table on the left and the table on the right, because it's not based on what it looks like in the Query Design view
18:33:00 <AnMaster> tell me what _ does
18:33:02 <oklopol> it's function params
18:33:14 <AnMaster> oklopol, so it will give a syntax error then that program?
18:33:17 <oklopol> F = { _ * 8 }; f 7 ====> 56
18:33:30 <oklopol> AnMaster: syntax errors do not exist
18:33:38 <AnMaster> oklopol, so what will the program do?
18:33:54 <oklopol> you can do errors, with continuations, but they will generally not be automatically created for you if you do something silly
18:34:02 <oklopol> AnMaster: depends on _
18:34:10 <AnMaster> oklopol, a simple one then, a bit of C code: k = p_key->p_key.x; k *= m; k ^= k >> 16; k *= m; h += k; h *= m;
18:34:16 <AnMaster> from a hash function
18:34:17 <oklopol> because you are applying stuff to it that cannot be applied stuff to
18:34:21 <oklopol> so _ will be applied to it
18:34:31 <oklopol> oklotalk has a very weird set of rules for application..
18:34:36 <AnMaster> oklopol, assuming it was the whole program I pasted, what would happen?
18:34:40 <oklopol> haha :D
18:34:45 <oklopol> that might actually do something
18:34:50 <oklopol> wait
18:35:17 <oklopol> hmmm....
18:36:05 <oklopol> wait, i have a girl stuck to me
18:36:10 <oklopol> okay, i'll continue
18:36:13 <AnMaster> eh?
18:36:17 <AnMaster> a child?
18:36:19 <oklopol> nm :D
18:36:24 <oklopol> no more like a woman
18:36:38 <AnMaster> so esolangs are more interesting heh
18:36:49 <oklopol> k = p_key -> p_key; <<< actually i don't recall what i desided to do in this situation
18:37:15 <oklopol> could be (k = p_key) -> p_key, which matches _ into both k and p_key, and returns (p_key _)
18:37:18 <oklopol> asd'fkl
18:37:21 <oklopol> my cell phone...
18:37:22 <oklopol> wait
18:37:25 <AnMaster> oklopol, you want something else? more C code? http://rafb.net/p/DRWbPE18.html would that do anything in oklotalk?
18:37:34 <AnMaster> a simple crc function
18:39:03 <oklopol> okay got rid of that too
18:39:10 <oklopol> the phone call that is
18:39:14 <oklopol> let's think
18:39:21 <oklopol> i mean, that c example with p_key
18:39:31 <AnMaster> well
18:39:33 <AnMaster> sure
18:39:51 <AnMaster> oklopol, want the whole function it came from?
18:40:09 <AnMaster> http://rafb.net/p/DenLGQ36.html
18:40:17 <oklopol> k = (p_key -> p_key); was the other possibility, i'm fairly sure (p_key -> p_key) would be a lambda, because you cannot do -> in a normal expression
18:40:25 <oklopol> or... can you 8D
18:40:31 <oklopol> why not, why not...
18:40:35 <AnMaster> what is ->?
18:40:41 <oklopol> -> pattern matches
18:40:42 <oklopol> on _
18:40:50 <AnMaster> well...
18:41:15 <Sgeo[College]> Bye all
18:41:25 <AnMaster> I start to realize why you haven't coded an interpreter for it yet
18:41:27 <AnMaster> Sgeo[College], cya
18:41:32 <AnMaster> let alone a compiler
18:41:44 <oklopol> {[$Init N] -> Val = N; [$+ N] -> Val <- Val + N;} would be a simple number class with just incrementation implemented
18:41:56 <AnMaster> oklopol, um is that what it does?
18:42:01 <AnMaster> the line I mean
18:42:05 <oklopol> oh no
18:42:09 <oklopol> just en example of ->
18:42:19 <oklopol> an
18:42:20 <AnMaster> ok
18:42:30 <oklopol> [$Init N] matches a list of that form
18:42:34 <oklopol> N can match anything
18:42:46 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
18:43:02 <oklopol> hmm, perhaps i should try getting that to work
18:43:05 <oklopol> that number
18:43:07 <oklopol> class
18:43:09 <oklopol> "class"
18:43:29 <oklopol> i usually call oklotalk functions "things", they're a bit... weird
18:43:31 <AnMaster> so what IS k = p_key->p_key.x; k *= m; k ^= k >> 16; k *= m; h += k; h *= m;
18:43:38 <oklopol> would be wrong to call them functions or objects of classes
18:43:45 <oklopol> hmm
18:43:58 <oklopol> i'll parse, as i think i've specified it
18:44:10 <AnMaster> good idea
18:44:25 <oklopol> usually you don't do multiple high-level operators without explicit precedencing.
18:44:31 <oklopol> = and -> are high-level ones
18:44:40 <AnMaster> well it is C really heh
18:45:04 <oklopol> yarr, just explaining why i'm not sure how that should be parsed
18:46:02 <AnMaster> oklopol, you need to add a sandbox mode that doesn't allow file IO and such so ppl can test the interpreter on anything just to see what happens
18:46:03 <AnMaster> ;P
18:46:15 <oklopol> :D
18:46:26 <oklopol> well, i don't have the parser yet...
18:46:26 <AnMaster> while (p < p_end)
18:46:26 <AnMaster> crc = (crc << 8) ^ crc32_table[(crc >> 24) ^ *(p++)];
18:46:26 <AnMaster> return ~crc; /* transmit complement, per CRC-32 spec */
18:46:35 <AnMaster> what about that one then?
18:46:45 <oklopol> the problem is, stuff like *= just doesn't mean anything, even though it's valid code
18:46:54 <AnMaster> oklopol, so they are no-ops?
18:47:02 <oklopol> yes, unless you give them a meaning
18:47:10 <AnMaster> the code above?
18:47:11 <oklopol> which can be done at runtime, and usually will be
18:47:14 <AnMaster> it is from another hash
18:48:17 <oklopol> k = {p_key -> p_key . x _};
18:48:19 <oklopol> k * = m _;
18:48:21 <oklopol> k ^ = k > > 16;
18:48:23 <oklopol> k * = m _;
18:48:25 <oklopol> h + = k _;
18:48:27 <oklopol> h * = m _;
18:48:28 <oklopol> this is almost parsed as it is in C
18:48:36 <AnMaster> oklopol, ok
18:48:42 <AnMaster> and what would it output or such?
18:48:45 <oklopol> well... would be, if you had >>, and X=-operators
18:49:06 <oklopol> well
18:49:13 <oklopol> k is set to that weird lambda
18:49:39 <AnMaster> and then?
18:49:51 <oklopol> then, the k and * are set to whatever two things calling m with _ as param evaluates into
18:50:07 <oklopol> if just one thing is returned, the second line is a nop
18:50:10 <AnMaster> oklopol, but if there is nothing called m?
18:50:14 <AnMaster> if it is the whole program
18:51:01 <oklopol> well then it means $m, and calling $m with _ as param means calling _ with [#uo $m], or reversed call to _ with the atom m as param
18:51:06 <oklopol> whatever this does depends on _
18:51:11 <oklopol> the parameter for the program
18:51:57 <oklopol> if _ is something like the empty list, $m is *forced* to evaluate with _ as argument
18:52:04 <AnMaster> hm
18:52:11 <AnMaster> oklopol, oh and then what about this then: size_t len = sizeof(fungeSpaceHashKey); return (fungeSpaceHashKey*)memcpy(newobj, oldobj, len);
18:52:17 <oklopol> an atom, when forced into a function, just returns itself.
18:52:33 <oklopol> in which case the line is a nop
18:52:39 <oklopol> because k * cannot be matched on $m
18:52:44 <AnMaster> of course it makes no sense to use a temp variable in C but just to complicate it
18:53:05 <oklopol> i can parse, but this is the last one :D
18:53:13 <AnMaster> heheh
18:55:20 <oklopol> size_t len = sizeof(fungeSpaceHashKey); return [fungeSpaceHashKey *] memcpy [newobj oldobj len];
18:55:21 <oklopol> slightly more interesting.
18:55:21 <oklopol> wait a mo
18:55:21 <oklopol> i have to think
18:55:22 <AnMaster> eh I said () not []
18:55:22 <AnMaster> but whatever
18:55:22 <oklopol> yes but it's already been paesed a bit
18:55:22 <oklopol> *parsed
18:55:22 <oklopol> they evaluated into lists of functions
18:55:22 <oklopol> because they were expressions containing functions only
18:55:22 <AnMaster> oklopol, then what would actual [] evaluate to? like myarray[3] ?
18:55:25 <oklopol> [] -> []
18:55:27 <oklopol> the empty list
18:55:34 <AnMaster> it got a 3 in it
18:55:42 <AnMaster> so [ ] is list?
18:55:43 <AnMaster> well
18:55:44 <oklopol> myarray [3] means call myarray with [3] as argument
18:55:49 <oklopol> what's myarray, depends on that
18:55:58 <oklopol> [3] is a list with just 3 in i
18:55:59 <oklopol> t
18:56:09 <AnMaster> oklopol, char * myarray; ;P
18:56:10 -!- olsner has joined.
18:56:20 -!- jix has quit (Nick collision from services.).
18:56:30 -!- jix has joined.
18:56:31 <oklopol> char * myarray is just a list of functions
18:56:34 <AnMaster> yeah
18:56:35 <oklopol> it doesn't do anything
18:56:38 <AnMaster> back to <oklopol> size_t len = sizeof(fungeSpaceHashKey); return [fungeSpaceHashKey *] memcpy [newobj oldobj len];
18:56:53 <oklopol> okay
18:57:14 <oklopol> return *may* be what it is in x
18:57:15 <oklopol> C
18:57:23 <AnMaster> x?
18:57:32 <oklopol> i'm just not sure if you can grab the continuation of the upper level like that
18:57:34 <oklopol> x -> C
18:57:34 <AnMaster> there is no x or C in that line
18:57:35 <oklopol> i failed
18:57:48 <AnMaster> there is no C either
18:57:54 <oklopol> C is a language
18:57:57 <oklopol> :)
18:58:20 <oklopol> okay, that line might evaluate to the list [fungeSpaceHashKey *]
18:58:39 <oklopol> but depends on return's capability to use the return continuation of whatever calls it
18:58:39 <AnMaster> ah
18:58:54 <AnMaster> I thought you meant variable C
18:58:57 <AnMaster> or such
18:58:57 <oklopol> i've removed uplevel lambdas from oklotalk to simplify scoping a bit
18:59:01 <oklopol> so....
18:59:09 <oklopol> uplevel, as in thin functions
18:59:15 <oklopol> something like what plof ha
18:59:16 <oklopol> has
18:59:18 <oklopol> or had
18:59:28 <AnMaster> oklopol, so is oklotalk functional, object orientated or what?
18:59:31 <oklopol> not sure what plof3 does
18:59:39 <oklopol> dunno
18:59:40 <AnMaster> wtf is plof?
18:59:47 <oklopol> plof is GregorR's language
18:59:52 <AnMaster> I see
19:00:01 -!- CakeProphet has quit ("haaaaaaaaaa").
19:00:34 <AnMaster> oklopol, you know fuzz testing with random program code will be absolutely hilarious with your language
19:01:00 <AnMaster> I use something like that for befunge
19:01:03 <oklopol> i guess oklotalk is multiparadignm
19:01:10 <oklopol> heh
19:01:15 <AnMaster> cat /dev/urandom | tr -Cd -- '-[:lower:][:digit:]\n\\/ ;",.+*[]{}^<>@`_|?:%$#!'\'"${FPRINTINSTRS}" | tr -d 'mhlior' | head -n 100 >> fuzz.tmp
19:01:20 <oklopol> i think befunge is more interesting for that
19:01:22 <AnMaster> oklopol, useful for crash stuff
19:01:37 <AnMaster> catched a few bugs with it so far
19:01:51 <oklopol> ah, interp should never crash?
19:01:51 <AnMaster> several valgrind errors and some SIGSEGV
19:01:54 <AnMaster> and one SIGFPE
19:02:03 <oklopol> hehe, fun
19:02:21 <AnMaster> oklopol, I aim for it to never crash except on something like perror("aiee! out of memory!"); abort();
19:02:25 <oklopol> i'm not sure what exactly to do for the oklotalk charset, i''m already using a few characters over ascii.
19:02:28 <oklopol> *i'm
19:02:35 <oklopol> which isn't good, because i wasn't intending to
19:02:44 <AnMaster> oklopol, and even with out of memory I do some ulimit testing to make sure it detects it
19:02:51 <oklopol> yeah
19:03:05 <AnMaster> but well, on out of memory there isn't much I can do when stuff fails
19:03:13 <oklopol> ofc
19:03:32 <oklopol> i'll start tackling on the rational number class
19:03:36 <AnMaster> oklopol, also I can't test file IO really with fuzz, I'm too lazy to set up a chroot
19:03:42 <AnMaster> and I don't dare do it elsewhere
19:03:50 <AnMaster> so it runs in sandbox mode
19:04:00 <AnMaster> so even if a p creates a o it will just reflect
19:04:45 <AnMaster> oklopol, of course this doesn't guarantee it is acting sensibly
19:04:49 <AnMaster> or anything like that
19:05:19 <oklopol> indeed, but you can prolly look at it as it goes
19:05:30 <oklopol> i tend to be overcareful when writing test programs
19:05:30 <AnMaster> well I can't parse 100 lines or random chars
19:05:37 <AnMaster> for the fuzz testing
19:05:45 <AnMaster> and yes I have done some unit testing
19:05:54 <AnMaster> but well mycology handles most of the correctness bit
19:06:09 <AnMaster> it does pass mycology
19:06:14 <AnMaster> I make sure it does at each revision
19:06:28 <oklopol> rational ->
19:06:30 <AnMaster> I don't commit if it doesn't pass mycology and valgrind
19:06:47 <AnMaster> oklopol, ?
19:07:25 <AnMaster> oklopol, oh and I gpg sign each revision of course, not that anyone would care
19:07:42 <AnMaster> I use the bzr version control system
19:07:48 <AnMaster> it supports signing revisions
19:08:27 <AnMaster> from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)".
19:08:29 <AnMaster> gah
19:08:33 <AnMaster> I hate that bug
19:08:47 <AnMaster> on esolang
19:14:54 <oklopol> AnMaster: rational numbers
19:14:59 <oklopol> gotta try making them
19:15:03 <AnMaster> hm?
19:15:09 <AnMaster> oklopol, in oklotalk?
19:15:11 <oklopol> yes
19:15:18 <AnMaster> well you mean like 1/3?
19:15:25 <oklopol> to test its extendability in itself
19:15:29 <AnMaster> or 1/10?
19:15:32 <oklopol> yes
19:15:35 <oklopol> that's a rational number
19:15:39 <AnMaster> true
19:15:49 <AnMaster> a pitty about pi heh
19:16:04 <AnMaster> oklopol, why not do symbolic algebra?
19:16:05 <AnMaster> ;D
19:16:20 <oklopol> well the actual types i was thinking for oklotalk were number and list
19:16:33 <oklopol> number being any number
19:16:41 <AnMaster> oklopol, all you need to do is write a common lisp interpreter in oklotalk, then run maxima under that interpreter
19:16:43 <AnMaster> :)
19:16:48 <oklopol> wuz maxima
19:17:01 <oklopol> oklotalk isn't really an algebra language
19:17:02 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:17:04 <AnMaster> [I] sci-mathematics/maxima
19:17:05 <AnMaster> Available versions: 5.13.0-r1 ~5.14.0 {X clisp cmucl emacs gcl latex linguas_es linguas_pt linguas_pt_BR nls sbcl tk unicode xemacs}
19:17:05 <AnMaster> Installed versions: 5.13.0-r1(14.00.50 2008-03-27)(clisp emacs latex nls tk unicode -cmucl -gcl -linguas_es -linguas_pt -linguas_pt_BR -sbcl)
19:17:05 <AnMaster> Homepage: http://maxima.sourceforge.net/
19:17:05 <AnMaster> Description: Free computer algebra environment based on Macsyma
19:17:28 <AnMaster> oklopol, very useful thing
19:17:28 <oklopol> i have a lot of ideas for something with algebra
19:17:36 <oklopol> most likelt
19:17:38 -!- Judofyr has joined.
19:17:38 <oklopol> likely
19:17:40 <AnMaster> it is coded in lisp
19:17:56 <AnMaster> oklopol, see first paragraph on http://maxima.sourceforge.net/
19:18:37 <oklopol> sounds like it knows its stuff
19:18:43 <AnMaster> it is good yes
19:18:45 <fizzie> Maxima is to Mathematica what Octave is to Matlab. :p
19:19:00 <AnMaster> fizzie, yeah, "a lot cheaper"
19:19:17 <oklopol> zuffancezdroty is to mathematica what gnazzlewimber is to matlab
19:19:24 <AnMaster> oklopol, eh?
19:19:37 <oklopol> == i don't get the reference
19:19:45 <fizzie> Mathematica's student license isn't bad as far as absolute price is concerned, though. There are the... ethical objections to non-free software.
19:20:14 <fizzie> Well, Octave's a free Matlab "clone". It goes so far as to have a more-or-less-compatible-sometimes-maybe syntax in the programming language.
19:20:22 <oklopol> ah
19:21:16 <oklopol> that always makes me a sad panda
19:21:33 <AnMaster> fizzie, well maxima does what I need
19:21:38 <AnMaster> that is the main point for me
19:21:39 <oklopol> (taking a commercial product and making a free version of it)
19:21:45 <AnMaster> oh and it can generate fortran code
19:22:28 <lament> yay (?)
19:22:48 <fizzie> Fortran has a certain charm.
19:23:47 <AnMaster> lament, quite fast
19:24:38 <AnMaster> "For calculations which use floating point and arrays heavily, Maxima offers the possibility of generating code in other programming languages (notably Fortran) which may execute it more efficiently."
19:24:41 <AnMaster> from wikipedia page
19:28:41 <lament> "Fortran 2003 has extensible types, inheritance, polymorphic variables, and type-bound procedures"
19:28:44 <lament> heh
19:35:05 <fizzie> That sounds somehow wrong.
19:36:23 <fizzie> Have they done away with the line length limits and "these columns are reserved for line numbers" thing and stuff?
19:37:26 <fizzie> It all seems so... so tame. Wikipedia article tells me that in Fortran-90 and newer you can use stuff like <= instead of .LE. and all.
20:00:35 <AnMaster> hahahaha
20:09:54 -!- oerjan has joined.
20:28:59 -!- oerjan has quit ("leaving").
20:30:22 <GregorR> Apparently, if you pass both -O2 and -O0 to (mips) GCC, it produces f***ed-up code :P
20:31:15 <GregorR> I was wondering why it subtracted 8 from sp (the stack pointer) then proceeded to store into 20(sp) X-P
20:32:56 <AnMaster> news news on the unusal html4 page of pikhq
20:33:02 <AnMaster> it seems safari will handle it
20:33:04 <AnMaster> Deewiant, ^
20:33:10 <GregorR> O_O
20:33:15 <AnMaster> I talked to someone who said it worked in safari
20:33:19 * GregorR wonders if Konq4 would.
20:33:34 <AnMaster> GregorR, konq3 doesn't
20:36:40 <GregorR> I'd like to see somebody take the MIPS instruction set and reduce it to a minimal TC set without overloading. (i.e. no subtract-and-branch-if-<condition>)
20:36:52 -!- Tritonio_ has quit (Remote closed the connection).
20:38:41 <fizzie> Can't you just take SUB and, say, BLTZ to get the effect of having subtract-and-branch-if-negative.
20:39:23 <GregorR> SUB would be load, load, subtract, store at best (assuming you can't just treat memory as registers)
20:39:45 <GregorR> SUBLEQ is load, load, subtract, compare, store, branch
20:44:14 <fizzie> Is there a 'compare' mips instruction? I didn't think it had any flags, really.
20:44:47 <GregorR> set-if-<condition> sets one register to 1 if <condition>
20:45:20 <GregorR> But there's also branch-if-less-than, etc :P
20:45:20 <fizzie> Yes, but isn't that pretty useless if you have a branch-if-condition.
20:45:50 <GregorR> GCC uses it in some conditions, just depends on whether you still need that flag I guess *shrugs*
20:46:56 <fizzie> Sure it might be useful, but if you wanted a minimum set of instructions. (Haven't been doing MIPS since that one silly course about it.)
20:50:56 <fizzie> It doesn't look like the PC in MIPS is one of them general-purpose registers. A pity.
20:51:10 <GregorR> Yuh :(
20:56:47 -!- timotiis has joined.
21:14:43 -!- Tritonio_ has joined.
21:22:27 -!- ais523 has joined.
21:22:37 -!- ais523 has changed nick to ais523|busy.
21:23:30 -!- thutubot has joined.
21:27:13 <GregorR> I fixed JSMIPS 8-D
21:27:55 <GregorR> OK, what's my next target past Hello, world?
21:32:34 -!- RedDak has joined.
21:35:47 <GregorR> Hm, how about tackling this next failure :(
21:36:08 <GregorR> printf("Hello, world!\n"); // works
21:36:10 <GregorR> printf("Hello, %d!\n", 3); // does not
21:42:09 <GregorR> printf("Hello, %d!\n", 3); // jumps to address 0 (wtf)
21:49:40 -!- shinkuzin has joined.
21:50:00 <ais523|busy> GregorR: is there anything interesting at address 0?
22:11:51 -!- Iskr has quit ("Leaving").
22:25:15 -!- shinkuzin has quit (Read error: 113 (No route to host)).
23:01:50 -!- RedDak has quit (Remote closed the connection).
23:03:58 <GregorR> ais523|busy: Only a segfault waiting to not be caught :P
23:06:18 -!- Tritonio_ has quit (Remote closed the connection).
23:08:41 <ais523|busy> GregorR: I take it you're just running executables, rather than trying to virtualise an entire OS?
23:21:56 <GregorR> Uh, running executables with no syscall infrastructure is somewhat pointless :P
23:22:13 <GregorR> I do in fact provide a syscall layer, and so an OS in a manner of speaking, but yeah, it's not an OS in the conventional sense.
23:22:58 <ais523|busy> it's a stripped-down OS specifically for the purpose of running single executables
23:23:07 <GregorR> Right :)
23:23:23 * ais523|busy remembers writing a minimal window manager that could only show one window at a time, and even then it had to be fullscreen
23:23:43 <ais523|busy> we didn't need any more than that for the project we were working on
23:24:22 <GregorR> http://www.codu.org/jsmips/ // yay, hello, world!
23:24:23 <ais523|busy> hmm... if you allow fork() and exec() as syscalls, you could almost make that into a real OS by starting with some version of init, and adding a filesystem
23:24:57 <GregorR> The problem is, fork() is extremely difficult, perhaps impossible, because JavaScript has no real support for threads ...
23:25:13 <ais523|busy> not exactly
23:25:31 <GregorR> setTimeout is something, but it never actually runs two things concurrently >_<
23:25:34 <ais523|busy> although I've achieved a similar effect to cooperative multithreading by serialising internal state and using setTimeout instructions
23:25:58 <GregorR> Actually, I'm doing nearly that just to make the MIPS emulator not stall out the browser and get killed.
23:26:05 <GregorR> So maybe I'm more on track than I realize :P
23:26:21 <ais523|busy> I tend to do that in lengthy JS programs just so I can see them run
23:26:39 <ais523|busy> although if it's an AJAX program, waiting for an XHR response serves a similar purpose
23:27:00 <GregorR> I suppose AJAX might be a way to go with the filesystem.
23:27:41 <ais523|busy> mutltithreading is really easy if you use CPS
23:27:55 <ais523|busy> you just alternate around a ring of continuations
23:28:07 <ais523|busy> however, that's not very good for JavaScript emulators of processors
23:28:38 <ais523|busy> (I just realised that the reason why multithreading is so easy to simulate in BackFlip is that the entire language is CPS more or less by definition)
23:28:52 <ais523|busy> (pity that it isn't TC, although there are several suggestions to solve that problem)
23:33:04 <ais523|busy> hmm... the main issue with BackFlip was that flow control constructs were easy, but everything else was either difficult or impossible
23:33:18 <GregorR> Heh, that's weird.
23:33:18 <ais523|busy> that and the FSMness and reversibility, neither of which make it easy to write a program
23:34:22 <ais523|busy> http://esolangs.org/wiki/BackFlip (I've added a typing shortcut for Esolang to my IRC client, and want to show it off)
23:38:46 <ais523|busy> anyway, if multithreading is too hard for you, you could still have an OS, you'd just end up with something like DOS
23:40:54 -!- jix has quit ("CommandQ").
23:47:41 -!- timotiis has quit ("leaving").
23:53:10 -!- Sgeo has joined.
23:55:17 -!- wildhalcyon has joined.
2008-04-04
01:06:22 <GregorR> http://www.codu.org/jsmips/ // now with a non-working example!
01:08:48 <ais523|busy> +quit
01:08:49 -!- thutubot has quit ("ThutuBot quitting").
01:08:50 -!- ais523|busy has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
01:09:04 <wildhalcyon> Alright
01:09:09 <wildhalcyon> lovely mips
01:09:36 <wildhalcyon> What is it supposed to do?
01:09:44 <GregorR> Print Hello, 3!\n
01:09:51 <GregorR> Instead, it just prints Hello, 3
01:09:56 <GregorR> And then dies a horrible death.
01:10:51 <wildhalcyon> and what, exactly, is mips?
01:11:00 <GregorR> A processor [family]
01:11:17 <wildhalcyon> Oh
01:11:42 <wildhalcyon> Right, the one the bunny was named after
01:11:52 <pikhq> One that Gregor is implementing in Javascript for no good reason.
01:12:00 <wildhalcyon> Well, its nice
01:12:02 <GregorR> For one GREAT reason: VIM IN MY BROWSER
01:12:18 <pikhq> Might I recommend MMIX instead?
01:12:34 <GregorR> I already tried MMIX - intolerably slow at 64 bits.
01:12:43 <pikhq> Fair 'nough.
01:12:50 <pikhq> x86? :p
01:13:00 <GregorR> Also, MMIX is practically CISC compared to MIPS.
01:13:34 <wildhalcyon> vim in your browser eh?
01:13:43 <pikhq> You know, writing an OS is trivial if you don't run more than one program on it. :p
01:13:45 <wildhalcyon> Vim is nice, I suppose. A browser variant could be.. helpful?
01:14:06 <pikhq> Really, all you need is the ability to load executables. ;p
01:14:08 <GregorR> OK, so right now I can BARELY do "Hello, world", but still, I'm on my way to vim :P
01:14:29 <pikhq> (and, arguably, drivers.)
01:14:30 <wildhalcyon> osdev.org is a fun site about OS development
01:14:37 <pikhq> wildhalcyon: Well aware.
01:14:43 <wildhalcyon> Drivers are the bane of my existance
01:14:44 <GregorR> Pretty sure everyone is :P
01:14:48 <pikhq> (my kernel courtesy of docs from osdev.org)
01:14:59 <wildhalcyon> well, I wasn't aware until quite recently
01:15:22 <wildhalcyon> and I've had a fantastic time with it.
01:15:32 <wildhalcyon> I'm taking an OS class in a few months...
01:17:20 <pikhq> Whereas I, in a few months, am entering college.
01:17:31 <wildhalcyon> congrats pikhq
01:17:47 <GregorR> I, in a few months, am entering grad school.
01:17:52 <pikhq> Bastard.
01:18:00 <pikhq> Of course, oerjan has all of us beat.
01:18:06 <pikhq> Mr. Ph.D. . . :p
01:18:12 <wildhalcyon> lol
01:18:22 <GregorR> You mean DOCTOR Ph.D.
01:18:52 <pikhq> GregorR: I thought 'Mr. Foo, Ph.D.' as acceptable, as was 'Dr. Foo'?
01:19:05 <GregorR> Yeah, I'm just making a joke X-P
01:19:11 <pikhq> Mmkay.
01:19:22 <GregorR> When (if) I get my Ph.D, I'll change my nickname to DrGregor :P
01:19:30 <pikhq> LMAO
01:19:46 <pikhq> I suppose mine would have to become DrPikhq.
01:20:14 <pikhq> Of course, I could get a (non-accredited) Ph.D. tonight.
01:20:15 <wildhalcyon> I'm gonna change mine to Bill
01:20:25 <GregorR> Hahah
01:20:30 <pikhq> Hey, if Gene Gray can declare himself a Doctor of Cubic, then so can I.
01:20:31 <pikhq> :p
01:20:34 <GregorR> I could get a non-accredited Ph.D - HEY, I just did!
01:20:51 <pikhq> ;)
01:21:08 <pikhq> Ah, but I have a doctorate in doctoral studies!
01:21:12 * GregorR scribbles "Ph.D. IN AWESOMEOSITISM" on a cocktail napkin and nails it to the wall.
01:21:24 <pikhq> Kickass.
01:21:31 <wildhalcyon> Its "Awesomology"
01:21:38 <wildhalcyon> any REAL student of awesomology knows that.
01:21:55 <pikhq> wildhalcyon: Yes, and it's the New Reformed Judaic Front.
01:21:56 <pikhq> :p
01:21:58 <GregorR> Awesomeology is to Awesomeositism as Astrology is to Astronomy
01:21:59 <wildhalcyon> But awesomologists are also notorious spellers
01:22:08 <wildhalcyon> burn
01:22:23 <wildhalcyon> sorry then. How about we compromise on awesomonomy?
01:22:39 * GregorR scribbles "Ph.D. IN AWESOMONOMY" on a cocktail napkin and nails it to the wall.
01:22:57 * pikhq scribbles 'Ph.D. in 1337' on the wall
01:23:24 <pikhq> Or should I say, '|>|-|.|) 1|\| 1337'?
01:23:24 * GregorR scribbles "Ph.D. in 1337, granted 1337" on a cocktail napkin.
01:25:21 <wildhalcyon> Goddamn lament is fucking right... >:(
01:25:31 <wildhalcyon> I should just program in smalltalk
01:25:47 <lament> ouch! that really sucks!
01:26:00 <wildhalcyon> Its just really frustrating
01:26:17 <wildhalcyon> every time I come up with some freakin' language idea, it turns out its part of smalltalk.
01:26:17 <lament> oklopol claims to have invented smalltalk, too.
01:26:35 <lament> i think i'm the only person here who hasn't invented smalltalk.
01:26:44 <lament> well, except that one time...
01:27:00 <wildhalcyon> lament, we're not concerned with drunken smalltalk inventing
01:27:32 <wildhalcyon> That happens to everyone
01:27:43 <wildhalcyon> seriously though, smalltalk is brilliant
01:27:48 <lament> yes
01:27:53 <lament> it really is
01:28:21 <lament> it has stability issues due to everything being so open
01:28:35 <wildhalcyon> I've been working on creating a dynamic language, and they really got most of it incredibly right
01:28:39 <lament> which alan kay considers to be a plus ("nobody's a user, everybody's a programmer")
01:28:51 <lament> wildhalcyon: alan kay is a genius
01:28:56 <lament> i suggest you read stuff by him
01:29:17 <wildhalcyon> I've been reading everything I can about the language. I'll try to look up some stuff by him
01:29:30 <lament> he's mostly interested in education
01:29:34 <lament> these days, at least
01:30:02 <lament> this is interesting: http://www.vpri.org/pdf/Pisa_RN_2007_007_a.pdf
01:30:11 <wildhalcyon> I think there's areas where smalltalk could be improved (and I'm not talking about syntax now...)
01:30:35 <oklopol> lament: well, i still don't know much about smalltalk
01:30:42 <oklopol> so i *may* have invented it
01:31:57 <lament> actually, instead, http://www.vpri.org/pdf/human_condition.pdf
01:32:03 <lament> "on human condition"
01:37:49 <lament> he also said "Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind."
01:39:38 <wildhalcyon> I saw that quote
01:39:41 <wildhalcyon> and it made me like him
01:40:08 <lament> he must be quite disappointed
01:40:35 <lament> he and the team he was with developed OO, modern GUI, wysiwig word processor, laptop ~40 years ago
01:40:55 <lament> he expected the world to be in much better shape by this point
01:40:59 -!- boily has joined.
01:42:49 * lament needs to play with squeak more
01:44:03 * pikhq needs to code his kernel more
01:44:12 <wildhalcyon> wildhalcyon needs to think more
01:44:38 <pikhq> That goes without saying.
01:45:13 <olsner> was that intentional or do you not know the secret of /me?
01:45:34 <wildhalcyon> I know the secret.. I just wasn't thinking
01:45:53 <lament> alan kay also said about smalltalk that it was only interesting in the 70s
01:46:02 <wildhalcyon> why did he say that?
01:46:04 <olsner> I see
01:47:02 <lament> wildhalcyon: he doesn't think it's good enough
01:47:09 <lament> hence the whole reinventing computing project
01:47:19 <wildhalcyon> Well, its not good enough, but its still better than C++
01:47:49 <lament> pretty much everything is better than C++
01:47:55 <lament> why is that even a "but"
01:48:11 <lament> of course it's better than c++, but it's not good enough
01:48:22 <wildhalcyon> sorry, had it backwards ;-)
01:49:08 <pikhq> Consider that C itself is better than C++ for most intents and purposes.
01:49:10 <pikhq> :p
01:49:29 <pikhq> (if you need objects, though, don't use C. . . GObject *will* give you nightmares.)
01:49:51 <wildhalcyon> If I needed objects I'd just fake it with structs
01:50:33 <lament> why not just use... python or something
01:50:41 <wildhalcyon> well, I'm saying if I was forced to use C
01:50:53 <wildhalcyon> which has happened, recently
01:51:06 <pikhq> If I were forced to use C, I'd make whoever forced me into it regret it.
01:51:15 <pikhq> And use the asm keyword.
01:51:31 <wildhalcyon> haha, nice
01:51:38 <pikhq> Exclusively.
01:52:19 <pikhq> int main(){volatile asm ("; program code here.");}
01:53:19 <wildhalcyon> int main(){malbolge(...);}
01:53:44 <boily> pardon my C ignorance, but whate is the meaning of volatile?
01:53:47 <boily> s/whate/what/
01:54:24 <pikhq> boily: In GNU C, it indicates that any optimisation surrounding that asm keyword is a Bad Idea(TM).
01:55:18 <pikhq> Common cases where it should be used include anything fiddling with the IDT, the GDT, the page table, the address size, etc.
01:55:38 <pikhq> (although anyone fiddling with those from C deserves to be shot. :p)
01:56:10 <boily> thanks! a very interesting keyword indeed.
01:56:34 <wildhalcyon> Its used in multi-process environments too
01:56:50 <wildhalcyon> (to prevent it from caching the result)
01:58:46 <wildhalcyon> Sorry, I should explain that better. The keyword can be used to prevent caching of variables that might be accessed by multiple processes to ensure they always get the current, accurate content.
02:00:14 <boily> hence, they are volatile. am I correct?
02:01:42 <wildhalcyon> exactly
02:11:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
02:12:01 -!- Judofyr has joined.
02:15:09 -!- boily has quit ("Schtroumpf!").
02:20:40 * pikhq nods
02:32:44 <wildhalcyon> right then
02:39:50 <GregorR> s/In GNU C/In C/
02:40:11 <GregorR> It means it could change at ANY MOMENT ZOMG, so you can't cache it etc.
02:44:00 <pikhq> GregorR: Ah.
02:44:12 <pikhq> Fine. volatile, as it applies to the asm keyword. ;p
02:44:32 <GregorR> Oh, I assumed you meant volatile on a variable.
02:44:50 <GregorR> Right, volatile on asm is the same idea - either way, it prevents optimizations.
02:45:28 <pikhq> As I explained, and someone else explained in slightly more detail.
02:45:41 <GregorR> I again don't know why JSMIPS isn't working >_<
02:45:44 <GregorR> Stupid "Hello, 3"
02:45:46 <wildhalcyon> it hates you
02:45:50 <pikhq> I have another interpretation that I thought of. . .
02:45:59 <pikhq> volatile = "You can't touch this".
02:45:59 <pikhq> :p
02:46:11 <GregorR> Uhhh, that's just plain incorrect.
02:46:15 <pikhq> I know.
02:46:18 <GregorR> const = "You can't touch this" :P
02:46:22 <pikhq> But that song's stuck in my head.
02:47:27 <wildhalcyon> It depends on who "you" is in the context. For pikhq's version, "you" would be the optimizer
02:47:42 <wildhalcyon> for gregorR's version, "you" is the programmer, or.. anyone else.
02:48:29 <GregorR> In my version (that is, volatile on variables), you CAN modify it - it's just saying that it could ALSO be modified by forces unknown.
02:48:34 <wildhalcyon> for MC Hammer's version, "you" would be anyone attempting to touch whatever the hell he was talking about it.
02:48:55 <wildhalcyon> you can't modify consts
03:05:28 <wildhalcyon> Learning smalltalk has really taught me how much I don't know about the history of computer science
03:06:02 <pikhq> wildhalcyon: Which is what I was thinking.
03:06:29 <pikhq> BTW, I prefer thinking about how much I *do* know.
03:06:36 <wildhalcyon> pikhq: That I didn't know anything about computer science?
03:06:37 <pikhq> And, meanwhile, I WANT A RELAY MACHINE!!!
03:06:43 <pikhq> Oh. That sucks.
03:07:03 <pikhq> wildhalcyon: My version of 'you can't touch this' is what you described.
03:08:23 <wildhalcyon> See? Everyone's right
03:09:26 -!- Tritonio_ has joined.
03:09:49 <pikhq> 'Cept for MC Hammer.
03:10:53 <wildhalcyon> Yeah, those pants were wrong
03:30:11 -!- adu has joined.
03:45:18 <wildhalcyon> alright, I'm out
03:45:33 -!- wildhalcyon has left (?).
04:08:44 -!- GregorR-L has joined.
04:09:00 <GregorR-L> 4005fc: 27bdfa70 addiu sp,sp,-1424
04:09:00 <GregorR-L> ...
04:09:00 <GregorR-L> 400628: afa50594 sw a1,1428(sp)
04:09:06 <GregorR-L> This cannot POSSIBLY be right.
04:10:35 <GregorR-L> Does anyone else agree here?
04:12:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
04:14:29 <RodgerTheGreat> experimental comics time!
04:14:30 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1207278828-walls.png
04:14:44 <RodgerTheGreat> I'd really like to hear what people have to say about this idea.
04:15:48 -!- Sgeo has joined.
04:17:38 <RodgerTheGreat> GregorR-L?
04:18:08 <GregorR-L> It's reserving 1424 bytes, then storing to 1428.
04:18:25 <RodgerTheGreat> I understand MIPS assembly. I was asking for your opinion.
04:18:40 <GregorR-L> Oh, I hadn't read it, I'm on #mipslinux hoping for some help with that X-P
04:19:50 <GregorR-L> I'm confused.
04:20:00 <RodgerTheGreat> it's kinda "arty"
04:20:08 <RodgerTheGreat> hence "experimental comics time"
04:20:42 <GregorR-L> Unfortunately, I'm generally incapable of appreciating art >_>
04:20:50 <RodgerTheGreat> http://193.33.156.5/Database/Filestore/allyouneedislove.jpg
04:26:44 <RodgerTheGreat> I guess if I was going to define my "statement", the idea came to me from looking at a lot of pictures of graffiti. People carrying conversations and shouting out their proclamations to the world without saying a word, and for all the pain, hatred and suffering, there is still joy and optimisim.
04:27:38 <RodgerTheGreat> "there is beauty here, if you know how to see it."
04:40:20 <lament> RodgerTheGreat: i like it
04:40:27 <RodgerTheGreat> thanks, lament
04:40:47 <RodgerTheGreat> what did you come away from it with?
04:40:49 <lament> also, cool photo :D
04:42:27 <lament> i can't say i come away from it with much... i just like it
04:42:39 <lament> (that's also true of all the great masterpieces, don't feel bad)
04:42:49 <RodgerTheGreat> yeah, it's all good
04:43:00 <lament> your sig is weird
04:43:21 <RodgerTheGreat> it's a stylized "JE"
04:44:42 <lament> ah
04:44:58 <RodgerTheGreat> what did it look like to you?
04:45:52 <lament> either an i ching pattern, or a little like the chinese character for rain
04:45:59 <lament> but clearly something asian :)
04:46:04 <RodgerTheGreat> haha- cool
04:46:23 <RodgerTheGreat> can you link me to an image of the "rain" character?
04:46:49 <lament> http://z.about.com/d/chineseculture/1/0/v/Y/rain.gif
04:47:07 <RodgerTheGreat> I like it
04:47:16 <lament> chinese characters in general are amazingly cool
04:48:15 <RodgerTheGreat> of all the things for my signature to resemble... rain. fitting.
04:53:22 <lament> yes, very. Why?
04:56:42 <RodgerTheGreat> I like rain. For so many people it seems to represent sadness, but I find joy in the rain. I want to live under the grey skies of my home state again.
04:58:08 <lament> i like rain, but i don't like grey skies.
05:01:39 <lament>
05:02:06 <lament> that's a traditional chinese character meaning "education"
05:02:13 <lament> the bottom half is a child
05:02:27 <lament> the top half is stuff falling into the child's open head
05:02:29 <lament> sick
05:02:39 <RodgerTheGreat> poetic
05:02:51 <lament> same thing :)
05:25:29 <RodgerTheGreat> haha
05:25:31 -!- GreaseMonkey has joined.
05:25:37 <RodgerTheGreat> hey, GreaseMonkey
05:25:46 <GreaseMonkey> 'lo
05:52:22 <GregorR-L> l
05:57:13 <RodgerTheGreat> good night everyone
05:57:23 -!- RodgerTheGreat has quit.
06:31:01 -!- Sgeo has quit ("Ex-Chat").
06:31:05 -!- GregorR-L has quit ("Leaving").
06:32:48 -!- atsampson has quit (Read error: 113 (No route to host)).
07:34:38 <GregorR> Well, I got a little bit farther with JSMIPS ... and now I'm having the malloc problem again (y'know, the problem I fixed)
07:35:46 <GregorR> ARGH - damn it. My "fix" to malloc, I've just realized, was actually a bug I inadvertently introduced while trying to fix something else. Now I've fixed that bug X_X
07:54:13 -!- Iskr has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:33:45 -!- atsampson has joined.
08:37:16 -!- ais523 has joined.
08:37:47 -!- thutubot has joined.
08:56:29 -!- adu has quit ("Bye").
09:07:44 -!- atsampson has quit (Read error: 113 (No route to host)).
09:33:46 -!- atsampson has joined.
09:49:13 -!- GreaseMonkey has quit ("zzz").
10:07:54 <GregorR> OMFG O_O
10:07:58 <GregorR> newlib was actually broken O_O
10:08:20 <GregorR> It was trying to mark bins as used or unused, but it expected 'unsigned long' to be 64 bits, so it could mark 64 bins.
10:08:36 <GregorR> unsigned long is 32-bits on ... uh, just about everything, including the default MIPS ABI.
10:08:49 <GregorR> So it was shifting off the edge >_<
10:16:12 <GregorR> http://www.codu.org/jsmips/ YAY
10:16:17 <GregorR> OK, next step ... fibonacci?
10:25:32 <GregorR> OK, can't print numbers greater than 9 X-D
10:31:53 <Iskr> ahahahah
10:32:07 <ais523> GregorR: why not?
10:32:11 <ais523> is it a problem in printf?
10:41:32 <GregorR> Haven't diagnosed it yet.
10:41:46 <GregorR> It's going into a perhaps-infinite loop in memchr
10:50:33 <ais523> +quit
10:50:34 -!- thutubot has quit ("ThutuBot quitting").
10:50:38 -!- ais523 has quit ("food, will be back later").
11:11:12 -!- ais523 has joined.
11:11:16 -!- thutubot has joined.
11:21:32 -!- thutubot has quit (Read error: 104 (Connection reset by peer)).
11:24:08 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
11:42:36 <AnMaster> Deewiant, I tried to build cfunge on windows using MSVC++ Express, it didn't hit a POSIX issue, it failed to find stdint.h and that is C99...................
11:43:31 <Deewiant> AnMaster: VC doesn't support C99
11:43:56 <Deewiant> AnMaster: and in any case, the windows C runtime library (MSVCRT) doesn't support C99 stuff so even using MinGW doesn't help
11:44:07 <Deewiant> since your printfs won't work, for instance
11:44:39 <Deewiant> although maybe, since you're using only the format strings defined in the std headers, they might work... dunno
11:44:48 <Deewiant> (e.g. %I64d instead of the standard %lld)
11:45:02 <Deewiant> assuming the MinGW headers are smart enough to define stuff the way the libraries are
11:47:42 <AnMaster> Deewiant, so basically Windows doesn't do C99?
11:47:49 <AnMaster> that bad, didn't expect it
11:48:12 -!- ais523 has joined.
11:48:41 -!- thutubot has joined.
11:49:01 <AnMaster> Deewiant, I was planning to add #ifdef to allow non-posix, but if it can't even do C99...
11:49:43 <AnMaster> Deewiant, I may get access to a solaris on ultrasparc system next week (or it may be freebsd on ultrasparc), plan to test it on it if I can
11:50:43 <AnMaster> Deewiant, anyway know any non-gcc compiler that can actually do C99?
11:52:57 <fizzie> GCC doesn't do C99. It only does most of it. http://gcc.gnu.org/gcc-4.3/c99status.html
11:53:07 <fizzie> Granted, it's a lot more of C99 than MSVC.
11:53:17 <AnMaster> yeah I know that
11:53:35 <AnMaster> fizzie, and I don't use most of it, what I want to make sure is that I'm not using GCC extensions
11:53:43 <AnMaster> I know I can compile on non-glibc
11:53:47 <AnMaster> I tried on freebsd
11:53:51 <AnMaster> but well that is still gcc
11:54:39 <AnMaster> fizzie, anyway the code worked fine under gcc 3.x last I tried (about a week ago, may not work any longer)
11:54:45 <AnMaster> 3.4 I think I tried
11:55:17 <AnMaster> I normally use 4.1.2, but it works on 4.2 too
11:56:30 <fizzie> If you're speaking of Windows compilation, lcc-win32 is free-for-non-commercial-use and claims to support "95 %" of c99 (according to it's author), but I wouldn't know any details about that.
11:56:54 <AnMaster> lcc hm?
11:57:14 <AnMaster> there is always mingw I guess
11:57:22 <fizzie> I don't think lcc-win32 has the posix combattability things mingw has, though.
11:57:28 <AnMaster> hm true
11:57:55 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
11:58:01 <AnMaster> I do use posix stuff but well I aim for #ifdefs where needed
11:58:09 <fizzie> There was a printf patch on the mingw mailing list which made it automagically convert %..ll to %..I64 on Windows, but I couldn't find out whether they actually applied it.
11:58:53 <AnMaster> fizzie, I use use the defines from inttypes.h for that
12:01:11 <fizzie> Well, that would work. At least in my /usr/i586-mingw32msvc/include/inttypes.h it has the correct prefix.
12:01:27 -!- thutubot has quit (Read error: 104 (Connection reset by peer)).
12:38:32 -!- ais523 has joined.
12:39:32 -!- thutubot has joined.
12:39:45 -!- atsampson has quit (Read error: 104 (Connection reset by peer)).
12:44:28 -!- atsampson has joined.
12:54:28 <Deewiant> AnMaster: the mingw headers do appear to be correct for MSVCRT, checked
12:54:46 <Deewiant> and it appears fizzie already told you, too
13:04:08 -!- jix has joined.
13:12:53 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
13:13:06 -!- Judofyr has joined.
13:46:39 -!- Tritonio_ has quit (Remote closed the connection).
13:52:17 <AnMaster> Deewiant, hm no mkdir/chdir/rmdir function!?
13:52:20 <AnMaster> functions*
13:52:38 <AnMaster> and strdup not in normal header?
13:52:59 <Deewiant> mkdir is posix
13:53:14 <AnMaster> and strdup?
13:53:16 <Deewiant> and strdup is docced at http://msdn2.microsoft.com/en-us/library/ms235454(VS.80).aspx
13:53:24 <Deewiant> according to google anyway
13:53:26 <Deewiant> see what they say
13:54:37 <AnMaster> guess too old mingw maybe
13:54:47 <AnMaster> as I gave up on msvc
13:58:07 <AnMaster> CMakeFiles/cfunge.dir/src/instructions/sysinfo.obj(.text+0x2fb):sysinfo.c: undefined reference to `environ'
13:58:09 <AnMaster> lovely
13:59:00 <Deewiant> environ doesn't exist
14:01:07 <AnMaster> #ifdef __WIN32__
14:01:07 <AnMaster> / Fake it!
14:01:07 <AnMaster> static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" };
14:01:07 <AnMaster> #else
14:01:07 <AnMaster> # ifndef _GNU_SOURCE
14:01:09 <AnMaster> extern char **environ;
14:01:11 <AnMaster> # endif
14:01:13 <AnMaster> #endif
14:01:15 <AnMaster> there we go
14:01:17 <AnMaster> :)
14:02:01 <Deewiant> AnMaster: that's crap >_<
14:02:12 <AnMaster> Deewiant, not my fault the system isn't sane
14:02:19 <AnMaster> but yes I said it, wincrap
14:02:34 <Deewiant> AnMaster: "sanity" is relative
14:02:47 <Deewiant> I don't think the existence of extern char**environ defines sanity ;-)
14:02:57 <AnMaster> Deewiant, oh?
14:03:09 <AnMaster> Deewiant, it is how it is supposed to be declared
14:03:35 <Deewiant> and who decides what's "supposed to be" :-)
14:03:43 <AnMaster> POSIX in this case
14:03:52 <AnMaster> where argc is the argument count and argv is an array of character pointers to the arguments themselves. In addition, the following variable:
14:03:52 <AnMaster> extern char **environ;
14:03:52 <AnMaster> is initialized as a pointer to an array of character pointers to the environment strings. The argv and environ arrays are each terminated by a null
14:03:52 <AnMaster> pointer. The null pointer terminating the argv array is not counted in argc.
14:04:10 <Deewiant> AnMaster: Windows is older than POSIX :-)
14:04:18 <AnMaster> Deewiant, unix is even older :)
14:04:19 <Deewiant> so you could argue that POSIX is insane ;-)
14:04:23 <AnMaster> and it did it that way too iirc
14:04:47 <Deewiant> probably, that's what the POSIX standard is mostly based on
14:05:09 * ais523 had heard that Windows was an insane implementation of POSIX
14:05:16 <Deewiant> AnMaster: so now you're calling amiga "insane", too? ;-)
14:05:31 <ais523> it's possible to download things from Microsoft such that Windows is POSIX-compliant, apparently
14:05:45 <Deewiant> yep
14:05:53 <Deewiant> or take the simpler alternative and use cygwin
14:05:55 <ais523> but the result is the POSIX equivalent of a DS9K; yes, technically it complies with the spec, but nobody else does things like that
14:06:40 <ais523> (also: cpp plus echo form a conforming C89 implementation, and cat is a conforming DIS29500 implementation, because sometimes the bars for conformance are set really low)
14:07:18 <ais523> BTW, the echo says 'This is a diagnostic message. Compilation successful'
14:07:43 <ais523> or something along those lines
14:07:50 <ais523> the diagnostic message is very important, though
14:10:16 <AnMaster> hah
14:12:29 <ais523> (effectively, the standard says that you can implement anything you like as an extension, but have to put up at least one diagnostic when you do this)
14:12:47 <ais523> (and if the original program was standards-compliant, your diagnostic is just a compiler warning)
14:13:15 <ais523> the hardest part of complying with C89 is handling #error, which has to cause compilation to fail, but cpp can do that for you
14:15:04 <ais523> the OOXML compliance rules, however, seem to be there just so people can't complian to Microsoft that they don't comply with their own spec
14:15:11 <ais523> s/complian/complain/
14:22:31 -!- oklopol has quit (Read error: 110 (Connection timed out)).
14:44:15 <ais523> <AnMaster> static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" };
14:44:21 <ais523> I find I need to write a line
14:44:23 <ais523> int finite;
14:44:28 <AnMaster> eh?
14:44:29 <ais523> to get C++ programs to link under DJGPP
14:44:33 <AnMaster> well yes I did do that
14:44:42 <AnMaster> what?
14:44:44 <AnMaster> a new line yes
14:44:49 <ais523> there isn't a finite defined anywhere in any standard relevant to that AFAIK
14:44:53 <AnMaster> static const char * environ[] = {
14:44:53 <AnMaster> "SYSTEM=windows crap",
14:44:53 <AnMaster> "SUPPORTS=not environ at least, get a sane system if you want this to work."
14:44:53 <AnMaster> };
14:44:55 <ais523> but the link fails if I don't do that
14:44:56 <AnMaster> was my final version
14:45:09 <AnMaster> ais523, what is int finite?
14:45:19 <ais523> it doesn't do anything obvious
14:45:25 <AnMaster> where is it used?
14:45:30 <ais523> I thing libstdcxx references it by mistake
14:45:47 <ais523> it certainly shouldn't be referencing it deliberately because it's in my namespace
14:45:55 <ais523> but if it's not there I get a link error
14:46:17 <AnMaster> mhm
14:46:21 <AnMaster> well whatever
14:46:30 <AnMaster> ais523, I do not target dos
14:46:48 <ais523> most people don't nowadays
14:46:59 <AnMaster> ais523, and MSVC I gave up on, but it does compile and run, with many warnings, under win32 using mingw
14:47:00 <ais523> but of course, if you write strictly conforming C89, you target /everything/
14:47:10 <AnMaster> I write C99 + POSIX
14:47:35 <ais523> some of C99 is good
14:47:38 <ais523> but it never really caught on
14:47:47 <AnMaster> well, it is in future I hope
14:47:51 <AnMaster> stdint.h :)
14:59:22 <AnMaster> ais523:
14:59:24 <AnMaster> "but I won't fix any bugs that can't be reproduced on a POSIX
14:59:24 <AnMaster> system. Patches are welcome if they don't mess up source too much (anything
14:59:24 <AnMaster> using win32 API counts as messing up)."
14:59:50 * ais523 wonders if any win32 functions happen to be the same as POSIX functions by chance
15:00:06 <ais523> I doubt it, though, because POSIX functions are generally lowercase, and Win32 API functions are generally CamelCase
15:00:14 <AnMaster> was just about to say that
15:01:06 <AnMaster> Deewiant, how can you get environment variables on windows just using C99 and NOT using windows API
15:01:20 * AnMaster changes that to Win32/64 just in case
15:01:21 <ais523> fork() : 0 parameters
15:01:27 <ais523> CreateProcessEx() : 7 parameters
15:01:27 <AnMaster> ais523, eh?
15:01:40 <ais523> the Win32 API is really quite bloated
15:01:44 <AnMaster> yes indeed
15:02:00 <AnMaster> and they failed to get it right first time
15:02:05 <AnMaster> so that is why there is the Ex one
15:02:07 <AnMaster> heh
15:02:08 <ais523> thus the Ex at the end of the name
15:02:33 <AnMaster> though of course POSIX isn't perfect either, consider tmpfile/mkstemp and whatever
15:02:43 <ais523> yes
15:02:56 <ais523> tmpfile was in C89, though, so it's probably the best one to use from a portability perspective
15:03:07 <ais523> there's nothing in its definition that suggests that it has to be insecure, either
15:03:14 <AnMaster> oh yes tmpfile and tempfile
15:03:20 <AnMaster> never got the difference between them
15:03:36 <ais523> (I was actually shocked to find that tmpfiles were often created on disk, because creating them entirely in memory complies with the standard just fine)
15:03:52 <AnMaster> ais523, thankfully I currently don't need any temp files
15:04:03 <ais523> C-INTERCAL has been known to use quite a few
15:04:12 <ais523> temp .c files to feed to gcc, mostly
15:04:28 <AnMaster> well yes
15:04:34 <ais523> but on DOS, it also needs to create a response file to tell gcc what its command line is, because there's a limit on command line length in DOS
15:04:34 <AnMaster> that would be a valid case
15:04:45 <AnMaster> ais523, um that short?
15:04:54 <ais523> 127 chars, I think
15:04:59 <AnMaster> oh that is short
15:05:14 <AnMaster> ais523, even on POSIX the command line may have a limit
15:05:21 -!- RedDak has joined.
15:05:22 <ais523> yes, but I don't reach it
15:05:24 <AnMaster> that is one reason for xargs
15:05:43 <AnMaster> ais523, I remember reaching it in one project, so many different *.o all on one line
15:05:51 <AnMaster> in the final link line
15:06:15 * ais523 runs ls -l `find .` in their home directory just to see if it will work
15:06:42 <ais523> somehow I doubt it
15:06:48 <ais523> but it's possible that bash can handle that sort of thing
15:07:03 <ais523> GNU tend not to like hard-coded limits
15:07:04 <AnMaster> ais523, and of course the build system deciding to use something like build/x86_64-unknown-linux-gnu/src/blah.o for each entry didn't help
15:07:25 <AnMaster> ais523, hm I think in recent kernels the space for command line arguments is dynamic
15:07:43 <AnMaster> 2.6.20 or later or something like that
15:07:46 <ais523> AnMaster: I once wrote an IOCCC entry which defined no variables
15:07:56 <ais523> it used the argv space, which is editable, to do all its calculations
15:08:02 <AnMaster> obfuscated C?
15:08:13 <ais523> yes
15:08:18 <AnMaster> ais523, oh interesting, you needed to cast a lot of things then I assume?
15:08:22 <AnMaster> anyway link to that thing?
15:08:36 <ais523> AnMaster: it's not publically online, but as it lost I may as well paste it
15:08:58 <AnMaster> I remember seeing something like a very simple flight sim with the source in the shape of a plane
15:09:05 <AnMaster> IOCCC winner iirc
15:10:07 * ais523 tries to find the file
15:10:12 <ais523> it's on here somewhere, I think
15:10:40 <AnMaster> hm
15:10:48 <AnMaster> ais523, -Wall -Wextra ? ;)
15:11:04 <ais523> failed really badly
15:11:14 <AnMaster> because I bet you need to cast things a lot
15:11:18 <AnMaster> ais523, failed how?
15:11:23 <ais523> at -Wall
15:11:26 <AnMaster> ah
15:11:29 <ais523> because there were lots of statements with no effect
15:11:33 <ais523> that I put there deliberately
15:11:36 <AnMaster> ah I see
15:11:41 <ais523> and yes, the operator precedences were meant to be confusing
15:11:53 * AnMaster waits for ais523 to pastebin it
15:12:02 * ais523 waits for ais523 to find it
15:13:42 <ais523> http://pastebin.ca/971073
15:13:53 <ais523> it should have a blank line at the start but pastebin.ca keeps removing it for some reason
15:14:11 <ais523> gcc '-D_(a,b,_,d,e)=while(a(d(e(_?putchar(b):(c=getchar())<0?b:c))))' -Dunsigned= -funsigned-char -ansi -o ioccc5 -O2 ioccc5o1.c
15:14:12 <AnMaster> heh
15:14:13 <ais523> is the compile line
15:14:26 <AnMaster> wow
15:14:40 <ais523> argv isn't unsigned char** in theory
15:14:43 <ais523> but it has to be in practice
15:14:47 <ais523> so I write unsigned char** in the program
15:15:02 <AnMaster> I think it is signed char?
15:15:06 <ais523> and then use -Dunsigned= -funsigned-char to make the program strictly conforming when I've told the compiler not to mess it up
15:15:09 <ais523> AnMaster: it's plain char
15:15:18 <ais523> which is either signed or unsigned depending on the implementation
15:15:27 <ais523> on gcc you can choose which it is with command line arguments
15:15:37 <ais523> that's what the -funsigned-char is for
15:15:43 <AnMaster> ok
15:15:47 <AnMaster> what does the program do?
15:15:53 <ais523> lots
15:16:00 <AnMaster> I don't dare to run it
15:16:06 <AnMaster> I can't review it to be safe
15:16:17 <ais523> there are 10 programs hidden in there
15:16:32 <AnMaster> brainfuck too it seems?
15:16:33 <ais523> and don't worry, it doesn't make any library calls but putchar and getchar
15:16:43 <ais523> AnMaster: yes, the program's legal BF
15:16:50 <ais523> legal Perl too, if you hadn't guessed
15:17:11 <AnMaster> I can't see putchar mentioned anywhere?
15:17:18 <ais523> it's in the gcc command line
15:17:24 <ais523> so as not to spoil the appearance of the program
15:17:25 <AnMaster> ioccc5o1.c:25:10: warning: trigraph ??) ignored, use -trigraphs to enable
15:17:26 <AnMaster> hm?
15:17:37 <ais523> sorry, I forgot to specify -trigraph
15:17:44 <ais523> it's needed for the code to work properly
15:17:56 <ais523> oh wait, -ansi turns it on
15:18:23 <AnMaster> ah -E helps a bit
15:18:30 <ais523> (trigraphs are an obscure and rarely-used C89 feature, but this time I was using them to type chars like ] with a sequence of characters that was nop in Brainfuck)
15:18:35 <AnMaster> shows the pre-processes code
15:18:37 <AnMaster> still weird
15:18:49 <ais523> at least it helps you figure out which of the underscores are macro calls
15:19:08 <AnMaster> $ gcc '-D_(a,b,_,d,e)=while(a(d(e(_?putchar(b):(c=getchar())<0?b:c))))' -Dunsigned= -funsigned-char -trigraphs -O2 ioccc5o1.c
15:19:09 <ais523> (I use _ for a lot, because it's the only identifier I could use in that program, pretty much)
15:19:11 <AnMaster> $ ./ioccc5
15:19:11 <AnMaster> Segmentation fault
15:19:16 <AnMaster> is that supposed to happen?
15:19:17 <ais523> AnMaster: that's expected
15:19:21 <AnMaster> why?
15:19:28 <ais523> because you didn't give it a command-line arg
15:19:36 <AnMaster> and what command line to give?
15:19:47 <ais523> try ./ioccc5 `cat ./ioccc5`
15:19:57 <AnMaster> does nothing?
15:19:59 <ais523> sorry, ./ioccc5 "`cat ./ioccc5`"
15:20:08 <AnMaster> ýýýýýýýýýýýýJGGGGGGA>>>>>>]ZZZZZZNKKKKKK?<<<<<<NKKKKKKC@@@@@@PMMMMMM;888888qnnnnnntqqqqqq]ZZZZZZQNNNNNNCC
15:20:09 <AnMaster> right?
15:20:16 <ais523> hmm
15:20:31 <AnMaster> same result with -m32
15:20:31 <ais523> try ./ioccc5 "a[-],[.[-],]"
15:20:35 <ais523> that should give it away
15:20:50 <AnMaster> no output, it just stands there
15:20:52 <AnMaster> doing nothing
15:20:54 <ais523> type some input
15:21:13 <AnMaster> ok looks like it runs befunge?
15:21:15 <AnMaster> err
15:21:17 <AnMaster> brainfuck
15:21:18 <AnMaster> I meant
15:21:20 <ais523> yes
15:21:30 <ais523> tape length is half the length of the original program
15:21:36 <ais523> and it discards the first character of input
15:21:50 <ais523> here, let me paste the shell script I wrote to extract the other programs from there
15:21:52 <AnMaster> still this does not explain why it should work on it's own binary?
15:21:58 <ais523> ah, it doesn't
15:21:58 <AnMaster> sure
15:22:01 <ais523> it works on its own source
15:22:07 <ais523> which is legal BF, after all
15:22:36 <AnMaster> yes let me see the perl source
15:22:46 <AnMaster> is that another brainfuck interpreter?
15:23:19 <ais523> no
15:23:24 <ais523> no two programs do the same
15:23:42 <ais523> incidentally, if any program needs input, giving it its own source code is often a good place to start
15:23:48 <ais523> and remember that the file actually starts with a newline
15:23:56 <AnMaster> yep
15:24:00 <AnMaster> perl does nothing
15:24:03 <AnMaster> whatsoever
15:24:09 <AnMaster> $ cat ./ioccc5o1.c | perl ./ioccc5o1.c
15:24:10 <AnMaster> $
15:24:12 <ais523> http://pastebin.ca/971083
15:24:13 <AnMaster> that's all
15:24:22 <ais523> extracts all the programs hidden in the original
15:24:29 <ais523> and you need to use perl -p
15:24:42 <AnMaster> no clue what perl -p does
15:24:53 <ais523> puts the entire program in an implicit while(<>) loop
15:25:01 <ais523> to prevent me needing to write a literal while in the program
15:25:17 <AnMaster> temp.sh: line 71: ioccc5: command not found
15:25:21 <AnMaster> why do I get that a lot
15:25:25 <AnMaster> Generating the tab-removal program...
15:25:25 <AnMaster> temp.sh: line 71: ioccc5: command not found
15:25:27 <ais523> AnMaster: oh, I had . in my path
15:25:33 <ais523> I forgot other people normally don't
15:25:43 <ais523> change ioccc5 to ./ioccc5 throughout and it'll work
15:27:29 <AnMaster> any of those is a quine of the thing?
15:27:36 <ais523> no, unfortunately
15:27:53 <ais523> there are programs to do RLE compression and decompression of BF files
15:28:27 <ais523> they don't quite roundtrip, though, because the compressor can't handle tabs in the input and the decompressor leaves stray tabs in the output
15:28:34 <ais523> (both compressor and decompressor are written in BF)
15:28:36 <AnMaster> bfunzip.b is the same as ioccc5o1.c
15:28:37 <AnMaster> says diff
15:28:39 <ais523> yes
15:28:47 <ais523> different language, so different extension
15:28:50 <ais523> it's created using cp
15:28:53 <AnMaster> and that was cat iirc?
15:28:58 <AnMaster> or?
15:29:01 <ais523> not quite cat
15:29:04 <ais523> it's an RLE decompressor
15:29:07 <AnMaster> eh
15:29:18 <ais523> using tab as a metacharacter to talk about repetition
15:29:27 <AnMaster> I see
15:29:34 <ais523> hmm... pastebin may have eaten the tabs in the input, I'll paste it in filebin too
15:29:57 <ais523> http://filebin.ca/dvpqm/ioccc5o1.c
15:30:18 <ais523> oh, BTW, about one quarter of that big square of BF-like code at the top is just junk
15:30:23 <ais523> but the other 3/4 are meaningful
15:30:41 <ais523> also, I like the way I hid the actual cat program
15:30:54 <ais523> you get it by uuencoding the original source with the filename [[
15:31:21 <ais523> and interpreting the result as BF
15:31:24 <AnMaster> oh
15:32:34 <AnMaster> ais523, how come your code lost?
15:32:43 <AnMaster> oh wait, not all the programs where C? maybe that?
15:32:47 <ais523> I don't know either
15:33:03 <ais523> they've released the names of last year's winning programs
15:33:11 <ais523> but not the programs themselves
15:33:18 <ais523> so I don't know what the winners were like yet
15:33:43 <ais523> also, not all 10 programs are all that useful
15:33:53 <ais523> some are just extracting other programs from the original source
15:34:24 <AnMaster> newline.txt
15:34:27 <AnMaster> what is that one for?
15:35:00 <ais523> AnMaster: it's a file containing just one newline
15:35:06 <AnMaster> but why?
15:35:12 <ais523> it's catted onto the end of files to ensure that they end with a newline
15:35:18 <ais523> because otherwise sed discards the last line
15:35:27 <AnMaster> ah you could use echo >> file
15:35:36 <ais523> I didn't know that at the time
15:35:51 <ais523> note that I use rm 2>/dev/null rather than rm -f, for instance
15:35:51 <AnMaster> or just
15:35:56 <AnMaster> cat $1 newline.txt | sed -f ioccc5.sed > temp.sh
15:35:59 <AnMaster> convert to
15:36:10 <AnMaster> ( cat $1; echo; ) | sed -f ioccc5.sed > temp.sh
15:36:31 <ais523> yes, there were many better ways
15:36:38 <AnMaster> ais523, yeah why the "rm 2>/dev/null"?
15:36:41 <ais523> but 1) I didn't know shellscript at the time
15:36:53 <ais523> 2) that system had tcsh as the default shell, so you couldn't expect me to learn
15:36:55 <AnMaster> everyone must know of rm -f at least
15:37:01 <ais523> AnMaster: I didn't
15:37:13 <ais523> I grew up on DOS, and that was towards the start of my use of UNIX
15:37:13 <AnMaster> ais523, how did you remove directories locally then?
15:37:17 <AnMaster> ah
15:37:38 <ais523> AnMaster: rmdir exists on UNIX with the same semantics as it has in DOS
15:37:52 <AnMaster> mhm
15:37:54 <ais523> so I removed them by deleting all entries in them and then using rmdir
15:38:04 <AnMaster> -_-
15:38:10 <AnMaster> crazy
15:38:26 <ais523> I knew about rm, cp, ls, cd and that was about it
15:38:36 <ais523> to put it in perspective, it was a while before I discovered pwd
15:38:47 <AnMaster> what about man?
15:38:59 <ais523> I knew about man
15:39:04 <AnMaster> ah
15:39:07 <ais523> but I needed to know what argument to give it
15:39:14 <ais523> and I was unaware of man -k
15:39:17 <AnMaster> well the command would be a nice one
15:39:25 <AnMaster> ais523, ah? man man ;D
15:39:38 <ais523> I started learning a lot faster once I thought of that
15:39:51 <AnMaster> heheh
15:39:58 <ais523> note, however that throughout all this, I /still/ preferred UNIX to Windows
15:40:07 <AnMaster> I see
15:40:22 <ais523> (I remember originally finding the web browser by typing in the names of web browsers I knew until one of them worked)
15:41:07 <ais523> (which is why I found the ancient version of Netscape, and used it for a while, before I found the merely very old version of Mozilla)
15:41:21 <ais523> (and of course, neither of them work particularly well on many modern websites that aren't well-designed)
15:41:41 <AnMaster> heh
15:41:46 <AnMaster> ais523, how long ago was this?
15:41:55 <ais523> over a year
15:42:02 <ais523> maybe about two years ago
15:42:18 <ais523> actually, thinking about it, it must have been december 2006
15:42:21 <AnMaster> that recently
15:42:29 <ais523> but the system I was on was really old, and hadn't been updated in years
15:42:33 <AnMaster> ais523, I was in that phase around red hat 5.0
15:42:37 <AnMaster> and I didn't even know DOS
15:42:39 <AnMaster> I came from Mac
15:42:49 <ais523> put it this way, it was 2006 and yet the system was still running CDE
15:42:51 <AnMaster> red hat 5.1 or 5.0 or such
15:43:01 <AnMaster> ais523, what OS was it then? solaris?
15:43:04 <ais523> yes
15:43:07 <AnMaster> hah
15:43:20 <ais523> but all UNIXes are similar until you get down into the very technical details
15:43:26 <AnMaster> still SPARC is a quite CPU really
15:44:02 <AnMaster> ais523, indeed they are thanks to posix
15:44:35 <AnMaster> without posix cfunge would not run on say freebsd, needed just one change, because I checked a certain optional posix feature incorrectly
15:44:57 <AnMaster> ie, #ifdef foo instead of #if defined(foo) && (foo != -1)
15:45:10 <AnMaster> #if defined(_POSIX_ADVISORY_INFO) && (_POSIX_ADVISORY_INFO != -1)
15:45:16 <AnMaster> *seems* to be the correct way to check
15:45:18 <AnMaster> not 100% sure
15:45:28 <ais523> ah, the ehird-annoying microoptimisations
15:45:38 <AnMaster> ais523, indeed, freebsd doesn't implement it
15:45:41 <ais523> when I resort to microoptimisations, I generally do them in assembly
15:45:49 <Deewiant> AnMaster: you can't get envvars without the winapi
15:46:04 <AnMaster> Deewiant, well then windows basically sucks
15:46:04 <ais523> if the project is one where using assembly isn't practical, then microoptimisation is the wrong idea
15:46:22 <Deewiant> AnMaster: well, extern char**environ is the part of the POSIX API, so it makes sense that windows has its own API :-P
15:46:35 <AnMaster> ais523, well I did notice a difference, I tested on a 10 MB large file from /dev/urandom
15:46:40 <AnMaster> it did load the file faster
15:46:49 <AnMaster> slightly
15:46:51 <Deewiant> AnMaster: you want GetEnvironmentStrings and FreeEnvironmentStrings
15:46:57 <Deewiant> assuming you want, that is.
15:46:57 <AnMaster> Deewiant, not really
15:46:58 <ais523> oh, for a moment I thought you were going to say that the difference was that /dev/urandom was different between the two systems
15:47:32 <ais523> Deewiant: oh no, you just reminded me that in the Windows API all the functions which allocate resources have their own corresponding deallocators
15:47:41 <AnMaster> ais523, nah it was generated with dd if=/dev/urandom of=test count=10M
15:47:45 <AnMaster> or something like that
15:47:46 <ais523> whereas in POSIX, close(), fclose() and free() are enough for most things
15:48:06 <ais523> in Windows, how you free a string depends on which function you got it from...
15:48:13 <AnMaster> ais523, ouch that hurts
15:48:29 <AnMaster> ais523, well add munmap to that list actually
15:48:40 <ais523> OK
15:48:47 <ais523> although that's more unlocking, then freeing
15:48:53 <AnMaster> hm ok
15:48:57 <AnMaster> haven't used mmap a lot
15:49:09 <ais523> (in Windows, things like resource data have to be allocated then locked, then once you're done with them unlocked then freed)
15:49:21 <AnMaster> ais523, was thinking of anonymous backed memory, then munmap may be more like freeing actually
15:49:22 <Deewiant> ais523: well, I think that makes sense because then you don't have to change your code if the upstream changes
15:49:24 <ais523> (and using resource data is much like mmapping a file)
15:49:42 <AnMaster> btw, I think there is a zsh extension to provide mmaped IO in zsh scripts
15:49:42 <ais523> Deewiant: the whole point of Windows is that the upstream never changes, ever
15:49:51 <ais523> because people distribute things as binaries, not source
15:50:08 <ais523> so if the upstream changed, maybe you wouldn't have to change your source, but the binaries would stop working
15:50:09 <Deewiant> ais523: between kernels, stuff changes
15:50:19 <Deewiant> ais523: 9x/me vs 2000/xp vs vista
15:50:24 <Deewiant> and pre-9x
15:50:29 <ais523> Deewiant: yes, but they leave the old libraries there anyway
15:50:32 <Deewiant> of course, they require huge compatibility layers
15:50:35 <Deewiant> but they're different
15:51:03 <Deewiant> ais523: so if you use free instead of freeEnvStrings your program might not work on a later kernel regardless of the fact that there's a compat layer available
15:51:08 <ais523> I thought they left the old libraries there for old applications to link against, and added new ones implementing most of the new functions for the new ones
15:51:22 <Deewiant> since it might be that freeEnvStrings used to be only free, but now does something more complicated/different anyway
15:51:41 <ais523> Deewiant: I can see the reasoning in some cases
15:51:47 <AnMaster> and that is retarded
15:51:53 <ais523> the API gives me the strong suspicious than all objects are refcounted, for instance
15:52:01 <AnMaster> ais523, indeed
15:52:21 <ais523> but when the refcounting relies on the honesty of the applications you link against, it's no wonder that Windows isn't very good at cleaning up after crashed applications
15:52:30 <ais523> (or wasn't around 9x when I learnt this stuff)
15:52:40 <Deewiant> well, 9x ran on top of DOS :-)
15:52:46 <AnMaster> ais523, well nor is xp
15:52:49 <Deewiant> I can see how that might make cleaning stuff up harder
15:53:06 <AnMaster> unused directories or files that can't be removed because they are in use are quite common
15:53:10 <Deewiant> or multiprocess handling in general
15:53:13 <AnMaster> after an application crashed
15:53:15 <AnMaster> Deewiant, ^
15:53:19 <Deewiant> AnMaster: eh? never come across that
15:53:26 <AnMaster> Deewiant, happens a lot to me on xp
15:53:36 <Deewiant> never even heard of that happening
15:53:45 <AnMaster> read about it, very common
15:53:48 <Deewiant> if the process is gone, its locks are gone
15:53:55 <AnMaster> though think only Swedish ppl complained
15:53:56 <AnMaster> hm
15:54:07 <Deewiant> AnMaster: what I can understand is if only the 'task' is gone from the task manager, the process might still be running
15:54:09 <AnMaster> maybe translations go into the core and break something
15:54:10 <AnMaster> heh
15:54:12 <Deewiant> but the task manager is crap
15:54:14 <Deewiant> heh
15:54:20 <ais523> Deewiant: I've known it to be impossible to remove a USB stick safely because I opened a program from it with a badly behaved program earlier
15:54:22 * AnMaster prefers gettext
15:54:24 -!- boily has joined.
15:54:38 <AnMaster> ais523, yeah that too
15:54:43 <Deewiant> ais523: I haven't used such peripherals much, so that might be
15:55:34 <AnMaster> oh and then requiring reboots for a library update
15:55:36 <AnMaster> that is just insane
15:55:48 <AnMaster> I updated glibc in multi user mode with no issues
15:55:54 <AnMaster> without reboot after
15:56:34 <ais523> AnMaster: Windows requires reboots for more or less everything
15:56:39 <AnMaster> ais523, exactly
15:56:49 <Deewiant> aye, and that sucks
15:56:51 <ais523> I think because it doesn't have the concept of temporarily stopping a daemon while you change it
15:56:56 <ais523> and also because you can't remove open files
15:56:56 <Deewiant> yep
15:57:01 <AnMaster> ais523, yes and another thing
15:57:01 <Deewiant> yep
15:57:41 <AnMaster> on linux removing a *.so loaded into a program causes no issues, the kernel make sure to read any bits of the file into memory that weren't before
15:57:43 <AnMaster> then removes the file
15:57:50 <AnMaster> and allow you to replace it with a new one
15:58:14 <ais523> also, Linux *.so files are not as pervasive as Windows .dll files
15:58:31 <ais523> as in, glibc might be important, but at least it doesn't tie up your entire API/windowing system
15:58:33 <AnMaster> pervasive?
15:59:03 <AnMaster> ais523, yeah indeed, I can upgrade stuff just fine while running
15:59:07 <ais523> the most important dlls such as user, GDI and system (which ironically have a .exe extension) are in use constantly
15:59:16 <AnMaster> it is odd that Mac OS X seems to want reboots every now and then
15:59:18 <ais523> whereas glibc is just required for C programs to run
15:59:24 <AnMaster> after all it is based on *bsd
15:59:34 <ais523> in theory you could use syscalls directly instead, which can't be done in Windows
15:59:46 <AnMaster> ais523, static binaries yes
15:59:57 <ais523> there are no Windows static binary
16:00:07 <ais523> 'static' basically just means 'uses only GDI, user and system'
16:00:13 <AnMaster> I think that is used to install glibc, or in the case of portage all the libraries are already loaded into the binary before it copies
16:00:17 <AnMaster> and it does it in one go
16:00:20 <Deewiant> ais523: and the C runtime, usually
16:00:32 <AnMaster> ais523, I meant as in gcc -static
16:00:38 <ais523> in my experience that was statically linked when I did a static build
16:00:43 <AnMaster> "not dynamically linked"
16:01:05 <AnMaster> as in "not depending on ld.so to be able to load"
16:01:08 <ais523> that's what's wrong with Windows: all user programs link against the operating system
16:01:22 <AnMaster> ais523, well I wonder how the OS is compiled
16:01:23 <ais523> that simple fact explains quite a lot
16:01:25 <AnMaster> or device drivers
16:01:52 <ais523> AnMaster: user-mode device drivers would link against the OS. I don't know how kernel-mode device drivers work in Windows, usually they just don't
16:02:09 <AnMaster> don't what?
16:02:21 <AnMaster> and user mode device drivers?
16:02:34 <AnMaster> like fuse? file system in userspace?
16:02:37 <ais523> AnMaster: don't work
16:02:45 <AnMaster> ah
16:02:48 <ais523> user mode device drivers aren't common on Windows
16:02:59 <ais523> but on Linux, many printer drivers are user mode, for instance
16:03:14 <ais523> meaning that you can run them without linking them to the kernel, all you need is to be root
16:03:24 <AnMaster> ais523, well windows need some kernel mode device drivers, IDE controller, or keyboard for example
16:03:26 <ais523> whereas for a kernel device driver you need modprobe or similar to run them
16:03:35 <ais523> AnMaster: all OSs need kernel mode device drivers
16:03:43 <AnMaster> exactly
16:03:50 <ais523> however, they're apparently the main cause of BSODs on Windows
16:04:00 <AnMaster> indeed on NT/XP at least
16:04:13 <AnMaster> 9x may actually BSOD from anything
16:04:38 <ais523> (apart from Windows 3.1, where most BSODs were recoverable; my favourite one was the 'please swap disks' bluescreen you got when using A: and B: simultaneously on a single-floppy-drive machine, not harmful at all and in fact useful)
16:04:54 <AnMaster> BSODs were recoverable in 3.1?
16:05:12 <ais523> you had two choices
16:05:24 <ais523> you could press [ESC], and it would ignore the error and attempt to continue
16:05:33 <AnMaster> or?
16:05:37 <ais523> that worked sometimes, and if it failed you could bring the BSOD back up with Ctrl-Alt-Del
16:05:45 <ais523> or you could press [Enter], which killed the process
16:06:04 <ais523> and the process-kill actually worked, although it didn't deallocate memory so you often had to reboot after that
16:06:21 <AnMaster> lol
16:06:30 -!- boily has quit ("Schtroumpf!").
16:06:49 <ais523> Ctrl-Alt-Del gave you a /voluntary/ BSOD in those days, so you could kill processes even if they'd done nothing that seemed wrong to the OS
16:07:05 <ais523> and the BSOD was a useful tool for correcting unruly computers
16:07:22 <AnMaster> how would you select what process to kill?
16:07:26 <ais523> AnMaster: it chose for you
16:07:32 <ais523> it tried to guess the one you were using at the time
16:07:36 <AnMaster> and if you meant some other?
16:07:42 <ais523> then you were screwed
16:07:51 <ais523> you would try to alt-tab to it first, I suppose
16:07:57 <AnMaster> reminds me of pre-OSX macos
16:08:21 <AnMaster> they also tried to guess, think it was Alt-Apple-Esc
16:08:22 <ais523> I'm not saying that this is a good system, just am amused that it was more reliable and useful than 9x's
16:08:33 <AnMaster> ais523, indeed
16:09:17 <ais523> actually, thinking about it, it's about as useful as XP's is
16:09:51 <ais523> (the issue with XP's is that you need to bring up Task Manager, which runs along with your other programs, rather than being a 'behind the scenes' sort of emergency mechanism that couldn't be disrupted by the rest of your system
16:09:53 <ais523> )
16:10:01 <AnMaster> indeed
16:11:13 <AnMaster> ais523, any progress on your mad plans for funge and intercal
16:11:31 <ais523> AnMaster: no, I'm busy with other things in RL at the moment, try asking again next week
16:11:35 <AnMaster> also I have been thinking about producing a trefunge version as well
16:11:38 <AnMaster> in future
16:20:26 <AnMaster> compile time option probably for speed
16:22:25 <ais523> nah, you could make it a command-line option sacrificing hardly any speed, by using defines between the Befunge/Trefunge version, #including your code into itself (appropriately guarded), and writing an appropriately guarded wrapper main()
16:22:25 <AnMaster> of course there is no test suite for trefunge so ....
16:22:37 <ais523> of course, doing it like that would be insane
16:24:58 <Deewiant> including your code into itself? O_o
16:25:58 <ais523> Deewiant: that's one way to have most of it duplicated in the binary
16:26:07 <ais523> of course, you need to guard it properly to avoid an infinite loop
16:26:37 <ais523> I also used it once when writing my own archiving utility that output C files that output the original files stored in the archive
16:27:01 <Deewiant> what rc/funge does is that it has an #ifdef every time it pops a vector, I think
16:27:02 <ais523> so that I could write C files whose functionality could be changed merely by appending to them, in completely standard C89 C
16:29:40 <ais523> wow: http://thedailywtf.com/Comments/The-Test-of-Truth.aspx#188082
16:30:01 <ais523> that's the sort of solution I'd like to have thought of, but I've never had to solve that particular problem before
16:36:54 <AnMaster> well I store vectors as structs
16:37:13 <ais523> you could still do it by doing name-mangling in the preprocessor
16:37:26 <AnMaster> so only funge space and anything meddling with z dimension would need changing
16:37:42 <ais523> as a sort of compile-time low-tech C++ alternative that loses no speed
16:37:45 <AnMaster> ais523, and that sounds silly
16:37:56 <ais523> however, I do not recommend doing it this way given your coding style
16:38:52 <AnMaster> anyway after cfunge is done what I want to do is write an interpreter for some simple imperative language that uses multi char instructions
16:39:01 <AnMaster> may be a chance to learn flex and such
16:39:32 * ais523 tries hard not to mention INTERCAL
16:40:06 <ais523> that's not a particularly easy example to start with, but you'll learn a lot of flex and bison writing code to handle it
16:40:10 <ais523> I know I did
16:41:55 <AnMaster> ais523, I was reading ick_loose.h
16:42:01 <AnMaster> #define IE997 "997 ILLEGAL POSSESSION OF A CONTROLLED UNARY OPERATOR.\n\
16:42:01 <AnMaster> ON THE WAY TO %d\n"
16:42:04 <AnMaster> hm
16:42:15 <AnMaster> that one didn't have a descriptive comment
16:42:17 <AnMaster> what is it for
16:42:35 <ais523> use of a unary operator that doesn't exist in your current base
16:42:38 <ais523> such as BUT in base 2
16:42:45 <AnMaster> *blink*
16:42:51 <ais523> (base 2: AND, OR, XOR)
16:42:59 <ais523> (base 3: AND, OR, BUT, XOR, sharkfin)
16:43:07 <AnMaster> what is BUT for?
16:43:14 <AnMaster> oh and sharkfin?!
16:43:22 <ais523> AnMaster: noncarrying addition
16:43:27 <ais523> is sharkfin
16:43:31 <ais523> BUT is a bit harder to explain
16:43:37 <AnMaster> tell me
16:43:50 <ais523> in base 2, a AND b returns 0 if either a or b is 0, and 1 otherwise
16:44:02 <ais523> likewise, in base 2, a OR b returns 1 if either a or b is 1, and 0 otherwise
16:44:23 <ais523> in base 3, a AND b returns 0 if either a or b is 0, otherwise 2 if either a or b is 2, otherwise 1
16:44:30 <AnMaster> ON THE WAY TO %d == line number?
16:44:37 <ais523> and a OR b returns 2 if either a or b is 2, otherwise 1 if eitehr a or b is 1, otherwise 0
16:44:55 <AnMaster> ais523, yeah but where does BUT fit in into that?
16:44:56 <ais523> BUT is the remaining case that returns 1 if either a or b is 1, otherwise 0 if either a or b is 0, otherwise 2
16:45:21 <ais523> as for ON THE WAY TO %d, it returns a prediction made by compile-time static analysis about which line would be the next one executed
16:45:30 <ais523> normally the line after the line the error is on, but not always
16:45:43 <AnMaster> /* (AIS) That stupid idiom in syslib was used. */
16:45:44 <AnMaster> hm?
16:45:48 <AnMaster> #define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\n\
16:45:49 <AnMaster> ON THE WAY TO %d\n"
16:46:00 <ais523> sorry, it's one of the things that annoys me
16:46:03 <ais523> sloppy INTERCAL coding
16:46:19 <ais523> they use a complicated mingled sequence to right-shift a 32-bit number, where a simple select would do
16:46:24 <AnMaster> um intercal is obfuscated?
16:46:35 <ais523> AnMaster: it's often described as a self-obfuscating language
16:46:36 <AnMaster> ais523, you realize this is intercal you are talking about?
16:46:47 <ais523> AnMaster: yes, but I see no reason for inefficient coding
16:47:20 <ais523> it's like the x == true ? (x == false ? false : true) : (x == false ? false : true) that was featured on thedailywtf.com today
16:47:28 <ais523> I don't like terribly redundant code in any language
16:47:29 <AnMaster> anyway why not change syslib?
16:47:33 <AnMaster> to not use that thing
16:47:39 <ais523> AnMaster: sacrilege!
16:47:42 <AnMaster> eh?
16:47:52 <ais523> actually, syslib could do with a spring-clean
16:48:13 <ais523> so far it's been preserved as close to the original manual as it could be whilst working
16:48:15 <AnMaster> well implementing parts of it in C maybe? as gcc __builtin__ kind of?
16:48:21 <ais523> AnMaster: I've done that already
16:48:29 <ais523> ick -eE yourprogram.i syslibc
16:48:36 <ais523> it was the first expansion library I wrote
16:48:43 <AnMaster> mhm
16:49:49 <ais523> http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/explib/syslibc.c
16:50:10 <AnMaster> oh and numbers seem totally out of order?
16:50:12 <ais523> that should give you a good idea about how the C <-> INTERCAL linkage works
16:50:25 <ais523> AnMaster: the error numbers don't follow any pattern as far as I know
16:50:36 <AnMaster> nor does the warnings
16:50:40 <ais523> except that sometimes I've tried to keep related errors with related numbers, but that's only the errors I've added
16:51:06 <ais523> (e.g. the warnings that warn about a certain runtime error have error numbers closely related to those of those errors)
16:54:21 <AnMaster> ais523, idea: for input of ONE TWO and such
16:54:25 <AnMaster> why not gettext
16:54:34 <AnMaster> to allow say ETT TVÅ in Swedish
16:54:42 <AnMaster> as it asks "what language"
16:54:47 <ais523> AnMaster: it allows a lot of languages already
16:54:48 <AnMaster> it make me think of that
16:54:53 <AnMaster> ais523, oh?
16:54:55 <ais523> they're just not ones that you're likely to have heard of
16:55:01 * ais523 finds the list
16:55:03 <AnMaster> ais523, Klingon?
16:55:18 <ais523> AnMaster: there were attempts to add Klingon but it ran into problems, so it isn't supported
16:55:23 <AnMaster> hahah
16:55:51 <ais523> C-INTERCAL from version 0.10
16:55:51 <ais523> onwards accepts English, Sanskrit, Basque, Tagalog, Classical Nahuatl,
16:55:51 <ais523> Georgian, and Kwakiutl; also Volapu"k from version 0.11 onwards, and
16:55:51 <ais523> Latin from version 0.20 onwards.
16:56:01 <ais523> (quote directly from info C-INTERCAL)
16:56:06 <AnMaster> Sanskrit I know of
16:56:10 <AnMaster> India iirc
16:56:22 <AnMaster> Basque spain iirc?
16:56:38 <ais523> J-INTERCAL supports Esperanto, and CLC-INTERCAL supports Scottish Gaelic, in addition to that list
16:56:42 <AnMaster> Georgian, I guess is the country
16:56:59 <ais523> Volapuk was all the rage before Esperanto came along
16:57:00 <AnMaster> ais523, ok, what about the ones I didn't identify?
16:57:05 <AnMaster> ah ok
16:57:17 <ais523> you can find out about the others in Wikipedia
16:57:22 <AnMaster> mhm
16:57:32 <ais523> (in fact, many of the languages have a Wikipedia written in them nowadays)
16:57:39 <AnMaster> hhe
16:57:40 <AnMaster> heh*
16:58:13 <ais523> actually, the grammar of the language itself also accepts Latin
16:58:16 <AnMaster> ais523, what spelling of "go home Romans" would it accept? ;)
16:58:26 <AnMaster> or was it "Romans go home"?
16:58:31 <ais523> AnMaster: only one that looked like numbers in one of the languages above
16:58:36 <AnMaster> ah right
16:58:37 <AnMaster> :/
16:58:44 <AnMaster> you seen Life of Brian?
16:58:52 <ais523> AnMaster: only bits of it
16:58:56 <AnMaster> oh ok
16:59:08 <AnMaster> what I said was a reference to a scene in it
16:59:35 <AnMaster> #ifdef __GNUC__
16:59:35 <AnMaster> __attribute__ ((noreturn))
16:59:35 <AnMaster> #endif
16:59:37 <AnMaster> why that?
16:59:49 <AnMaster> I prefer this in a header
16:59:51 <AnMaster> #ifndef __GNUC__
16:59:51 <AnMaster> # define __attribute__(x) /* NO-OP */
16:59:51 <AnMaster> #endif
16:59:52 <ais523> AnMaster: to suppress warnings about falling off the end of a function without returning
17:00:07 <AnMaster> means I don't have to repeat the __GNUC__ every time
17:00:13 <ais523> but I only use it once
17:00:20 <AnMaster> ais523, it does return that function?
17:00:23 <ais523> (well, twice, the other time's in ick_ec.h though so it doesn't count)
17:00:28 <ais523> ick_lose doesn't return
17:00:30 <ais523> it calls exit()
17:00:51 <AnMaster> and it is void
17:00:59 <AnMaster> so can't see why it would give a warning from gcc?
17:01:01 <ais523> FAC ADVENIRE DE (1666)
17:01:08 <AnMaster> ais523, ?
17:01:11 <AnMaster> oh
17:01:11 <ais523> AnMaster: because its source is not available during compilation
17:01:29 <AnMaster> eh
17:01:39 <ais523> AnMaster: I compile each .c file separately
17:01:44 <AnMaster> yes so do I
17:02:00 <ais523> so without the __attribute__ gcc doesn't know that ick_lose never returns while compiling perpet.c, for instance
17:02:00 <AnMaster> oh you mean prevent warning in some *other* function?
17:02:04 <ais523> yes
17:02:07 <AnMaster> right
17:02:26 <AnMaster> ais523, tell me if astyle works on ick_loose.c
17:02:28 <AnMaster> I think it would
17:02:59 <AnMaster> ais523, also why "extern" for all functions in headers, that actually prevents some optimizing that gcc can do otherwise
17:03:27 <ais523> AnMaster: because they are extern, it wouldn't work otherwise
17:03:33 <ais523> and astyle does work on ick_lose.c
17:03:39 <AnMaster> eh
17:03:51 <AnMaster> ais523, well if you just link those C files together it will work
17:03:59 <ais523> the functions are called in lots of different files; if they weren't they'd be marked as static
17:04:14 <AnMaster> extern void ick_lwarn(char *m, int n, /*@null@*/ char *s);
17:04:15 <AnMaster> or
17:04:16 <ais523> so the file which doesn't define the function needs the function marked extern in the header
17:04:19 <AnMaster> void ick_lwarn(char *m, int n, /*@null@*/ char *s);
17:04:25 <AnMaster> makes no difference basically
17:04:35 <AnMaster> ais523, even if it is a different file
17:04:39 <ais523> I know
17:04:50 <ais523> but the declarations were inside functions originally, where it did make a difference
17:04:51 <AnMaster> variables need extern
17:05:03 <AnMaster> ais523, yes and that is bad style of coding
17:05:05 <ais523> when I came to the code it was full of things like this:
17:05:10 <ais523> int i, j, getopt();
17:05:18 <AnMaster> *blink*
17:05:30 <ais523> so in some sense it's saner now than when I first came across it
17:05:40 <ais523> because I changed all of those to proper prototyped declarations eventually
17:05:42 <AnMaster> well you won't need extern any more
17:06:01 <ais523> what difference does it make, by the way?
17:06:13 <ais523> I thought it was completely irrelevant in that context
17:06:36 <AnMaster> ais523, not really, it prevents inlining inside the same source file as defines the function iirc
17:06:40 <AnMaster> bbl food
17:13:47 <AnMaster> #if ICK_HAVE_STDINT_H+1 == 2
17:13:53 <AnMaster> ais523, care to explain the logic there?
17:14:06 <ais523> AnMaster: I'm differentiating between null string and 1
17:14:08 <ais523> +1 == 2 is false
17:14:11 <ais523> 1+1 == 2 is true
17:14:32 <AnMaster> try #if defined(ICK_HAVE_STDINT_H) && (ICK_HAVE_STDINT_H == 1) ?
17:14:47 <ais523> AnMaster: it is defined, just as the null string, to say that STDINT_H isn't available
17:15:38 <AnMaster> I see..
17:16:03 <AnMaster> ais523, "" == 1 is still faalse
17:16:06 <AnMaster> false*
17:16:12 <ais523> It isn't defined as ""
17:16:12 <Deewiant> AnMaster: it's not "", it's nothing at all
17:16:14 <ais523> it's defined as
17:16:17 <Deewiant> it's just blank
17:16:20 <Deewiant> #define foo
17:16:21 <AnMaster> hm
17:16:26 <AnMaster> right
17:16:31 <AnMaster> but is that equal to 1?
17:16:36 <Deewiant> +1 == 1
17:16:41 <ais523> so +1 != 2
17:16:44 <Deewiant> it could also be -1 == -1
17:16:52 <AnMaster> #define foo
17:16:56 <AnMaster> #if foo == 1
17:16:59 <Deewiant> and then the check would be foo-1 == 0
17:17:00 <AnMaster> that would not be true would it?
17:17:07 <Deewiant> nope
17:17:10 <ais523> Deewiant: yes, but I tend to think in terms of unsigned arithmetic while programming INTERCAL
17:17:13 <Deewiant> but foo+1==2 would be
17:17:23 <ais523> AnMaster: #if == 1 is a syntax error, which is what your example would expand to
17:17:25 <Deewiant> ais523: whatever makes sense, either is fine
17:17:45 <ais523> Deewiant: I know, I was just analysing why I picked unary + rather than unary - for the test
17:17:59 <AnMaster> ais523, wouldn't it be easier to just use #ifdef and only define it if it is available?
17:18:08 <ais523> AnMaster: blame autoconf
17:18:19 <AnMaster> I think autoconf does #undef for those?
17:18:25 <ais523> yes, normally
17:18:37 <AnMaster> normally?
17:18:40 <ais523> you get those by #including "config.h"
17:18:53 <AnMaster> yep
17:18:56 <ais523> but in this case, the code is potentially in someone else's code, so it has to be name-mangled
17:19:03 <ais523> so instead I pass the value in via -D on the command line
17:19:12 <AnMaster> well you can tell autoconf to use something else than config.h
17:19:16 <AnMaster> say ick_conf.h
17:19:19 <AnMaster> or whatever you want
17:19:25 <ais523> AnMaster: it's not config.h that's the problem, but the identifiers it #defines
17:19:34 <AnMaster> hm ok
17:19:36 <ais523> they don't start with ICK_ or ick_ and therefore could clash with user code
17:20:01 <AnMaster> ais523, well ick_* could also clash, ick is not a registered trademark or anything ;)
17:20:06 <AnMaster> but less likely yeah
17:20:13 <ais523> AnMaster: I tell people not to use those indentifiers in the C-INTERCAL manual
17:20:15 <Deewiant> AnMaster: no, but at least you can document that if you use ick_* it's your fault :-P
17:20:19 <ais523> s/indentifiers/identifiers/
17:20:23 <ais523> Deewiant: I did
17:20:32 <Deewiant> correct
17:20:32 <AnMaster> ais523, anyway it is very likely cfunge got stuff that could clash, but I didn't intend it to be included anywhere
17:20:39 <AnMaster> some use FUNGE_* but far from all
17:20:47 <ais523> AnMaster: that's why I mangled at my end
17:20:53 <AnMaster> mhm
17:21:13 <AnMaster> that is one thing c++ got right, namespaces
17:21:17 <AnMaster> it is a good idea
17:21:54 <ais523> that, and the parts of the template system that don't cause bloat
17:22:08 <ais523> in C you have to resort to tgmath macros to do that sort of thing
17:22:12 <Deewiant> a proper module system would be nicer
17:22:15 <AnMaster> ais523, also why are two of the error defines duplicated in ick_ec.h?
17:22:16 <ais523> also, // comments, but they're in C99
17:22:28 <ais523> AnMaster: because ick_ec.h is the only header included in foreign programs
17:22:38 <AnMaster> tgmath?
17:22:44 <ais523> so it has to do everything itself and avoid anything that might clash with the program it's included in
17:22:49 <AnMaster> not sure gcc does it?
17:22:53 <ais523> AnMaster: it's a C99 header, #include <tgmath.h>
17:23:04 <AnMaster> ais523, yeah
17:23:32 <AnMaster> ooh 4.1 got the header
17:23:58 <AnMaster> ais523, btw did you know about pahole?
17:24:09 <ais523> AnMaster: no
17:24:13 <AnMaster> nice tool that analyzes debug info in binary and finds holes in structs
17:24:26 <AnMaster> and shows (hopefully) what re-arranging would help make it smaller
17:24:57 <ais523> AnMaster: so far I haven't had a need to micro-optimise C-INTERCAL
17:25:02 <AnMaster> ais523, developed for linux kernel
17:25:03 <AnMaster> http://rafb.net/p/l6jKMH41.html
17:25:14 <Deewiant> AnMaster: pragma pack?
17:25:14 <AnMaster> is the result for any structures with at least one hole in cfunge
17:25:21 <AnMaster> Deewiant, performance issues with that
17:25:25 <ais523> Deewiant: that causes misaligned accesses
17:25:30 <AnMaster> Deewiant, and breaks on some arches
17:25:33 <Deewiant> it doesn't do rearranging?
17:25:34 <ais523> reordering elements is more efficient if you can get away with it
17:25:38 <ais523> Deewiant: no
17:25:44 <Deewiant> damn, it sucks :-P
17:25:52 <Deewiant> or is there a good reason for that
17:26:06 <AnMaster> there is
17:26:06 <ais523> Deewiant: the C standard
17:26:13 <Deewiant> which says what
17:26:17 <AnMaster> ais523, anyway what makes it more complex for cfunge is that some stuff can be either 32-bit or 64-bit
17:26:19 <ais523> also, imagine if two different compilers reordered in different ways
17:26:32 <Deewiant> well pragma pack isn't standard anyway
17:26:34 <Deewiant> or is it, nowadays?
17:26:40 <ais523> Deewiant: it says that struct elements are in the same order in memory as they are in the program
17:26:45 <ais523> and no, #pragma pack isn't standard
17:26:49 <AnMaster> ais523, s_ImplementedFingerprintEntry is in fact optimal for 64-bit data types on 64-bit systems
17:26:52 <AnMaster> or 32-bit on 32-bit
17:26:57 <ais523> the standard pragmas all go #pragma STDC
17:27:05 <AnMaster> but not 32-bit funge types on 64-bit
17:27:22 <Deewiant> ais523: but since you need to use the same compiler anyway, it doesn't matter, or?
17:27:40 <ais523> Deewiant: have you never linked together programs from different compilers before?
17:27:46 <Deewiant> nope
17:27:49 <ais523> it used to be very common back in the days of DOS
17:27:56 <Deewiant> or if I have, I've used a converter tool in between
17:27:58 <AnMaster> ais523, it still is on windows
17:28:00 <ais523> and you effectively have to do it like that if the programs are written in different languages
17:28:01 <AnMaster> kind of
17:28:03 <Deewiant> implib -> dll to lib
17:28:09 <Deewiant> coff2omf -> change object format
17:28:11 <Deewiant> and then compile
17:28:18 * ais523 has also used implib
17:28:27 <ais523> but it doesn't translate the dll into a lib
17:28:39 <ais523> it just generates bindings for the dll that can be linked into a program
17:28:50 <Deewiant> of course
17:28:57 <ais523> /* This is ugly but unless gcc gets appropriate builtins we have to do
17:28:57 <ais523> something like this. Don't ask how it works. */
17:29:00 <Deewiant> but it is a lib file :-)
17:29:07 <ais523> (a comment from the version of tgmath.h on my system)
17:29:28 -!- boily has joined.
17:29:38 <Deewiant> ais523: but, uh, if one compiler #pragma packs a struct then you can't reliably use the resulting object file with other compilers anyway
17:30:09 <ais523> Deewiant: yes, that's a good reason to use pahole instead
17:30:41 <ais523> but one purpose of pragma pack is to conform with a known byte pattern that another compiler has produced
17:30:41 <Deewiant> so why can't #pragma pack do rearranging
17:31:05 <ais523> e.g. you know that you need to access a struct consisting of a char followed by a misaligned int
17:31:07 <Deewiant> assume we've told it to just "make this struct as small as possible"
17:31:11 <ais523> so you write the appropriate struct
17:31:17 <AnMaster> <Deewiant> (e.g. %I64d instead of the standard %lld)
17:31:18 <AnMaster> hm
17:31:20 <ais523> a #pragma shrink would be more interesting
17:31:22 <AnMaster> I was wondering about that
17:31:25 <AnMaster> Deewiant, it seems wrong
17:31:29 <AnMaster> I For decimal integer conversion (i, d, u) the output uses the locale's alternative output digits, if any. For example, since glibc 2.2.3 this will
17:31:30 <AnMaster> give Arabic-Indic digits in the Persian (`fa_IR') locale.
17:31:33 <AnMaster> from man page
17:31:44 <ais523> 64 is a Microsoft extension
17:31:45 <AnMaster> says glibc specific though
17:31:48 <Deewiant> AnMaster: "instead of the standard"
17:31:53 <AnMaster> ah
17:31:54 <Deewiant> AnMaster: meaning, %lld is the standard
17:31:55 <AnMaster> right
17:31:57 <AnMaster> yeah
17:32:21 -!- boily has quit (Client Quit).
17:32:30 <ais523> I meant to say 64 is a microsoft extension, but my client ate the for some reason
17:32:55 <ais523> hmm... it seems to eat it even in the middle of lines
17:32:55 <Deewiant> your client is something weird on %I
17:32:57 <AnMaster> Deewiant, anyway, consider cache size
17:33:05 <AnMaster> you want the members in order of access too
17:33:16 <AnMaster> say you use one almost all the time, but another member very seldom
17:33:16 <Deewiant> ais523: I, at least, see an inverted-color I in place of %I for your messages
17:33:33 <ais523> my client puts everything between the two symbols into italics
17:33:49 <ais523> and thutubot sees it as a tab
17:33:53 <Deewiant> AnMaster: you'd have to have the whole struct in cache anyway, you can't separate it
17:33:54 <AnMaster> ais523, and that fails here
17:34:07 <Deewiant> ais523: ah, I think irssi displays tabs as inverted-color I
17:34:09 <AnMaster> Deewiant, oh?
17:34:14 <AnMaster> Deewiant, you can load a part of it
17:34:18 <ais523> AnMaster: I'm not doing it deliberately, juts wondering why my client's doing that
17:34:35 <ais523> testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%H%J%K
17:34:42 <Deewiant> only I breaks
17:34:52 <ais523> B, C, and G as well for me
17:34:57 <Deewiant> ah, true
17:35:00 <Deewiant> don't see them at all
17:35:03 <AnMaster> <ais523> testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%H %J%K
17:35:07 <AnMaster> is what I see here
17:35:14 <ais523> yes, it's what ThutuBot sees too
17:35:14 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
17:35:15 <Deewiant> ( ais523) testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%HI%J%K
17:35:23 <Deewiant> where I is inverted-colour
17:35:29 <Deewiant> but I think that's an irssi setting of some kind
17:35:51 <ais523> I was wondering if it was because Control-I = tab
17:35:52 <AnMaster> ais523, anyway the 32-bit/64-bit mix does complicate things heh
17:35:57 <Deewiant> ais523: probably.
17:36:45 <AnMaster> Deewiant, I saw %H %J
17:36:50 <AnMaster> as a space in between
17:37:13 <AnMaster> %B%C and %G were simply missing
17:37:52 <Deewiant> yes, I saw your message
17:38:08 <ais523> well, for me the %J and %K were in bold italics, the %D, %E, and %F were in bold, and % followed by G had been replaced by a square
17:38:15 <AnMaster> Deewiant, well since it was a copy paste I was afraid it would be like unicode
17:38:21 <ais523> abcdef
17:38:22 <AnMaster> some clients can't show unicode
17:38:24 <AnMaster> but if you paste it
17:38:32 <AnMaster> it looks like unicode to the sender again
17:38:47 <ais523> hmm, and the % followed by C turns the rest of the line to black, from its default red-for-messages-I-sent
17:39:00 <AnMaster> ais523, likely color code
17:39:03 <AnMaster> but it is blocked here
17:39:05 <AnMaster> +c mode
17:39:14 <AnMaster> of course since irc doesn't echo
17:39:17 <ais523> ah, that would explain a lot
17:39:18 <AnMaster> the client can't know that
17:39:31 <ais523> I thought +c kicked people who used colour, rather than just blocking it
17:39:45 <ais523> but if it's that easy to type by mistake, I can see why it's implemented this way now
17:39:47 <AnMaster> ais523, on some it strips, other it blocks
17:39:52 <AnMaster> don't think it kicks anywhere
17:40:02 <AnMaster> on freenode I think +c strips
17:40:10 <ais523> what's the difference between strips and blocks here
17:40:12 <AnMaster> on unreal and inspircd, +S strips, and +c just blocks
17:40:19 <ais523> do you mean blocks as in the message doesn't get through?
17:40:20 <AnMaster> ais523, no difference, there is none to block here
17:40:25 <AnMaster> ais523, yep that is what I mean
17:40:38 <AnMaster> as in "sorry you can't use colors when sending to this channel"
17:40:42 <AnMaster> or something like that
17:41:03 <AnMaster> ais523, somewhat like trying to talk when +m is set (+m is mode all non-"voice or above")
17:41:45 <AnMaster> voice being +v, +o being op, some ircds got other levels, like "half op", "administrator" and "channel owner"
17:42:00 <AnMaster> or an arbitrary subset of them heh
17:42:05 <AnMaster> all seems to have +v and +o though
17:42:23 <ais523> hmm, I tried to privmsg me, you and Deewiant the same thing that I sent to the channel to see what happened when the +c wasn't on
17:42:38 <ais523> but freenode errored, saying I could only send to 1 recipient at a time
17:42:46 <ais523> that's a violation of the standard, isn't it?
17:42:47 <AnMaster> ais523, of course
17:42:52 <ais523> 3 recipients doesn't seem excessive anyway
17:43:02 <AnMaster> ais523, um sending to several targets is an extension I think
17:43:09 <AnMaster> not part of standard is it?
17:43:14 <ais523> I thought it was in the original RFC
17:43:17 * ais523 searches
17:43:26 <AnMaster> ais523, even if it is, no one would care
17:43:31 <AnMaster> no one follow the standard
17:43:47 <Deewiant> sure they do
17:43:52 <Deewiant> they just limit it or extend it in some ways
17:44:17 <AnMaster> see
17:44:19 <AnMaster> "It is recommended that only Operators be allowed to kill other users with KILL message. In an ideal world not even operators would need to do this and it would be left to servers to deal with."
17:44:26 <AnMaster> "recommended" eh
17:44:27 <ais523> RFC 1459 says that it's possible to send to a comma-separated list of receivers
17:44:39 <Deewiant> AnMaster: so?
17:44:50 <AnMaster> Deewiant, irc used to allow any user to kill
17:44:55 <ais523> AnMaster: and services should also be allowed to kill users
17:45:08 <AnMaster> ais523, yes but any user was the original
17:45:09 <ais523> that fits within the spirit of that restriction, though
17:45:14 <Deewiant> AnMaster: yeah, because back then only smart people were on the internet
17:45:20 <AnMaster> anyway services didn't exist back at RFC 1459
17:45:27 <AnMaster> Deewiant, indeed
17:45:36 <ais523> so killing a user was a technical means to prevent IRC collapsing, rather than a social means to get rid of someone?
17:45:44 <ais523> (e.g. killing your own ghost?)
17:45:46 <Deewiant> spamming and script kiddies and such was an unknown concept
17:45:47 <AnMaster> ais523, anyway comma-separated list of receivers is easy to abuse for spamming
17:45:53 <Deewiant> ais523: that's how I understand it
17:45:53 <AnMaster> so I can see why freenode doesn't do ti
17:45:55 <AnMaster> it*
17:46:02 <ais523> AnMaster: yes, if you put multiple channels there, or hundreds of people
17:46:03 <ais523> but 3?
17:46:11 <ais523> [407] PRIVMSG Too many recipients. Only 1 processed
17:46:11 <Deewiant> ais523: 3 is still 3 times more than 1
17:46:23 <AnMaster> Deewiant, :)
17:46:25 <ais523> Deewiant: sending a message to #esoteric is a whole lot more than 1
17:46:25 <Deewiant> consider that you're limited in the number of lines you can send
17:46:37 <AnMaster> ais523, ah but they could just part
17:46:44 <Deewiant> ais523: okay, so I guess it could handle channels and users separately
17:47:15 <Deewiant> but the thing is, if you can send, say, 3 lines per second
17:47:31 <Deewiant> then wheras you could previously spam 3 dudes per second you could then spam 9, 12, or 15 dudes per second
17:47:35 <Deewiant> or whatever
17:47:53 <Deewiant> with minimal bandwidth use
17:47:54 <AnMaster> Deewiant, of course you could add one to the counter for each recipients
17:48:06 <AnMaster> heh
17:48:16 <Deewiant> so since people rarely want to send stuff to multiple people, just limit it to 1 to minimize spamming possibilities
17:48:24 <AnMaster> Deewiant, indeed
17:48:53 <Deewiant> sauna now ->
17:49:14 <AnMaster> I only wanted to send to many on an irc network I'm oper on, and there I wanted to send to *everyone*, therefore pperserv global
17:49:17 <AnMaster> operserv*
17:51:48 <AnMaster> /* More than one COME FROM references the same label. */
17:51:48 <AnMaster> #define IE555 "555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n\
17:51:48 <AnMaster> ON THE WAY TO %d\n"
17:51:57 <AnMaster> ais523, didn't you say that was for threading?
17:52:14 <ais523> the error is for the absence of threading
17:52:18 <AnMaster> ah
17:52:34 <AnMaster> anyway I don't see anything in ick_ec.h for removing comefrom?
17:52:46 <ais523> what do you mean by 'removing' here?
17:53:04 <AnMaster> ais523, as in someone using p in fungespace to overwrite the come from marker
17:53:16 <AnMaster> or overwrite it's arguments
17:53:23 <ais523> ick_ec.h can't be used directly to interface with Befunge
17:53:30 <ais523> it's designed to link to C
17:53:44 <AnMaster> ah so you would make ick_ebef.h or such?
17:53:49 <ais523> that's it
17:54:27 <AnMaster> ICK_EC_FUNC_START(ick_my_custom_syslib) <-- I hate that way of doing a function
17:54:28 <AnMaster> :/
17:54:50 <ais523> AnMaster: that's because it has to place a wrapper around your function
17:54:58 <ais523> so it translates into some code with unbalanced braces
17:55:17 <AnMaster> ais523, mhm?
17:55:34 <AnMaster> ais523, now THAT could be a problem for astyle
17:55:35 <AnMaster> I bet
17:55:48 <ais523> when checking for COME FROMs, your function is called, but the code inside it doesn't execute
17:56:16 <ais523> instead it just uses goto to jump from one ick_comefrom to the next, and eventually returns with information about whether any of the COME FROMs there were aiming at the line label, and if so which one
17:57:00 <AnMaster> no goto in cfunge, the only one I got is in a function that I took from gnulib
17:57:09 <AnMaster> maybe hash library got something too
17:57:22 <AnMaster> what C *should* have is a break statement to break multiple levels
17:57:31 <ais523> break 2;
17:57:32 <AnMaster> that would remove the last remaining need for goto really
17:57:38 <AnMaster> ais523, doesn't work in C iirc?
17:57:43 <ais523> no, it doesn't
17:57:49 <AnMaster> in bash it does
17:58:06 <ais523> does it allow expressions in place of the constant 2?
17:58:15 <AnMaster> in bash? probably
17:58:17 <ais523> that would be the INTERCAL-style method of doing things
17:58:19 <AnMaster> haven't tried
17:58:42 <AnMaster> ais523, but for break I can't really see the need for that
17:58:48 <ais523> but of course, bash is interpreted, making that sort of thing easy
17:59:03 <ais523> AnMaster: in INTERCAL-72 that sort of thing is the only way to make a conditional branch
17:59:20 <AnMaster> ais523, mhm mad
17:59:27 <AnMaster> of course it is intercal
17:59:39 <ais523> well, you have computed ABSTAIN and computed COME FROM too in modern C-INTERCAL
17:59:47 <ais523> I find computed ABSTAIN to be the least insane method
17:59:56 <AnMaster> what is abstain exactly?
18:00:22 <ais523> tells a particular command not to be executed
18:00:25 <AnMaster> also what is latin1.bin and idiotism.oil?
18:00:40 <AnMaster> in fact what is oil?
18:00:42 <ais523> latin1.bin is a binary file containing a description of the latin-1 character set, for use by convickt
18:00:44 <AnMaster> in this case
18:00:49 <ais523> idiotism.oil is a set of optimiser idioms
18:01:02 <ais523> and OIL was a language I invented specifically to write them in (it stands for Optimiser Idiom Language)
18:01:13 <ais523> there's a description of it in the C-INTERCAL docs
18:01:14 <AnMaster> uhu
18:01:23 <AnMaster> ais523, but why?
18:01:29 <ais523> previously they were written in C, but that became unmaintainable
18:02:31 <ais523> look at temp/idiotism.c (the compiled version of the OIL) and you'll see why; all the C looked like that originally
18:03:09 <ais523> OIL was the best solution to managing the optimiser idioms that I could think of
18:03:17 <AnMaster> how does gcc does it's optimizing?
18:03:44 <AnMaster> ((_1 ^ #{1}2) << #{1}3)->((_1 << _3) ^ #{x2<<x3}0) <-- that basically means "replace what is before the -> with what is after it?
18:03:49 <ais523> that's it
18:03:55 <AnMaster> allowing some variables perhaps?
18:03:58 <ais523> yes
18:04:05 <ais523> #{1} means any constant
18:04:08 <AnMaster> ah
18:04:21 <AnMaster> and where is that in the output?
18:04:31 <ais523> x2 fetches the value of #{1}2
18:04:40 <AnMaster> ah
18:04:43 <ais523> and is used in an expression used to calculate a constant that appears on the RHS
18:04:55 <AnMaster> ais523, and what do you do if there is a literal such thing in the source?
18:05:01 <ais523> there isn't
18:05:04 <AnMaster> do you use \ to escape?
18:05:11 <ais523> AnMaster: it's not textual substitution
18:05:15 <ais523> it's matching parse trees
18:05:19 <AnMaster> aha
18:05:22 <ais523> so syntax errors aren't matched against, for instance
18:05:36 <ais523> INTERCAL doesn't use parens for expression grouping, so that's a giveaway
18:05:59 <AnMaster> well I don't really know intercal
18:06:37 <AnMaster> ais523, anyone wrote an intercal interpreter in intercal yet?
18:06:54 <ais523> the _1 above on the LHS matches any expression, and on the RHS inserts a copy of expression 1
18:06:56 <ais523> AnMaster: no
18:07:04 <ais523> INTERCAL's a hard language to write interps for anyway
18:07:36 <AnMaster> there is a befunge93 interpreter in befunge93, almost exact except it reserves a few columns at the edge iirc
18:07:41 <ais523> and it's still harder to compile, although still possible
18:07:56 <ais523> AnMaster: presumably it just loads the input into fungespace and transfers control to it?
18:08:20 <AnMaster> ais523, no it doesn't
18:08:41 <ais523> ah, it uses fungespace to store the input but implements all the commands
18:08:48 <AnMaster> it requires the files to be pre-combined because befunge93 doesn't have file io
18:09:01 <AnMaster> and it does implement all the comands
18:09:04 <AnMaster> commands*
18:09:10 <AnMaster> ais523, I'll try to find url
18:09:28 <ais523> Befunge-93 is easier to interpret than INTERCAL, although harder to compile
18:09:53 <AnMaster> first befunge in unefunge
18:09:54 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php
18:10:03 <AnMaster> then befunge in befunge:
18:10:05 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php
18:12:28 <ais523> AnMaster: it still cheats slightly; operations which don't affect flow control are implemented by effectively evalling the instruction by copying it into the interpreter's space
18:12:44 <AnMaster> ah haven't looked that closely
18:13:12 <AnMaster> ais523, but well befunge93 interpreter in funge98 should probably be way easier
18:13:24 <ais523> yes, it should
18:13:31 <ais523> and you can stay well out of its program space
18:13:40 <AnMaster> exactly
18:13:46 <ais523> hmm... a befunge98 in trefunge98 would be interesting
18:13:49 <AnMaster> not that I'm going to write it
18:13:57 <ais523> you could hide from its program space there too
18:14:07 <AnMaster> indeed
18:14:18 <AnMaster> ais523, yet the befunge in unefunge is totally mad
18:16:45 <AnMaster> ais523, this is a cool tool
18:16:45 <AnMaster> http://www.frox25.no-ip.org/~mtve/code/eso/bef/bef_bef/befbef2.png
18:17:15 <ais523> tracing program execution, I take it?
18:17:23 <Deewiant> aye, but only -93
18:17:28 <AnMaster> indeed
18:17:47 <AnMaster> but if the source is available I may be able to do something based on it
18:17:59 <AnMaster> it would really help when fuzz tests go wrong
18:18:48 <Deewiant> AnMaster: implement your debugger API and then it should be fairly easy to write something which takes trace output + a source file and draws something like that
18:19:42 <ais523> you could even write it in Funge, along the lines of that TURT quine
18:20:33 <AnMaster> Deewiant, indeed but I'm still working on details
18:21:24 <ais523> hmm... I wonder if anyone's ever written a quine like that in Logo?
18:25:51 <AnMaster> Deewiant, indeed I won't touch http://www.frox25.no-ip.org/~mtve/code/eso/bef/bef_vis/
18:25:53 <AnMaster> it's perl
18:25:54 <AnMaster> eww
18:26:39 <Deewiant> doesn't look that bad to me
18:27:13 <Deewiant> but if you know GD / any graphics lib you might be better off starting from scratch, yes
18:30:54 -!- RedDak has joined.
18:32:22 -!- Tritonio_ has joined.
18:35:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
18:35:41 -!- Judofyr has joined.
18:51:58 <ais523> +quit
18:51:59 -!- thutubot has quit ("ThutuBot quitting").
18:53:52 -!- thutubot has joined.
18:54:03 <ais523> +ul (:aSS):aSS
18:54:24 <ais523> aha, it obeys the IRC standard properly now, unlike the other bots in here that send messages
18:54:46 <ais523> auto-generated messages are meant to be notices, so as to avoid infinite loops like the one I set up earlier
18:56:12 <ais523> may as well check it in the other direction too
18:56:27 <ais523> good, it didn't reply
18:56:38 -!- jix has quit (Nick collision from services.).
18:56:48 -!- jix has joined.
18:57:51 <AnMaster> ais523, bad idea, for many clients that cause a beep
18:58:06 <AnMaster> ais523, better make it send errors as /notice only
18:58:07 <ais523> is this a case of things not obeying the standard again, then
18:58:20 <ais523> I'll change it back to privmsg
18:58:25 <Deewiant> clients bell on notices? O_ooo
18:58:32 <AnMaster> Deewiant, seen it happen
18:58:33 <ais523> but first I want to test this
18:58:44 <AnMaster> ais523, oh and many ircds got a mode to block channel notices
18:58:56 <ais523> +ul (:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^
18:59:06 <ais523> wow, that was quick
18:59:11 <ais523> +ul (:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^
18:59:19 <olsner> hmm, what language is that?
18:59:21 <ais523> slightly longer that time
18:59:25 <ais523> olsner: Underloa
18:59:28 <ais523> s/$/d/
18:59:36 <ais523> it's an itoa program
19:00:01 <ais523> at the moment it does numbers up to 6 digits; it's trivial to make it handle bignums, but that makes it exponentially slower
19:00:28 <ais523> +quit
19:00:29 -!- thutubot has quit ("ThutuBot quitting").
19:00:58 -!- thutubot has joined.
19:01:00 <ais523> +ul (:*:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^
19:01:19 <thutubot> 1024
19:01:22 <ais523> that got it thinking
19:01:33 <olsner> underloa got a webpage?
19:01:40 <ais523> http://esolangs.org/wiki/Underload
19:01:59 <olsner> oh, *that's* what you meant with s/$/d/
19:02:22 <ais523> and BTW, Thutubot's written entirely in Thutu piped both ways to netcat, including its Underload interp
19:02:34 <ais523> don't put invalid syntax in, though, because it makes it infinite-loop at the moment
19:03:12 <ais523> and don't put infinite loops in, because they make it infinite-loop too
19:03:44 <ais523> +ul (:*:*:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^
19:03:49 <olsner> you mean you haven't solved the halting problem yet? that's trivial!
19:04:00 <AnMaster> hm
19:04:06 <AnMaster> ais523, what language is that exactly?
19:04:09 <ais523> I haven't implemented any sort of cutoff for overlong programs, either
19:04:12 <ais523> AnMaster: Underload
19:04:14 <AnMaster> ah
19:04:26 <ais523> (that is, overlong in time taken to run)
19:05:01 <thutubot> 2048
19:05:08 <olsner> hmm, isn't thutu basically sed but with differenet flow control?
19:05:21 <ais523> olsner: that's one way to think of it
19:05:25 <ais523> but they feel different to write in
19:06:02 <ais523> Thutu doesn't have a hold space, for instance
19:06:07 <ais523> but it's really important in sed
19:06:40 <ais523> +ul (::*::**:**)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^
19:06:40 <thutubot> 13
19:06:57 <olsner> hmm, I guess string rewriting is just string rewriting after all
19:07:13 <ais523> but it's nice to have regular expressions to do it with
19:08:50 <ais523> +ul (()(*))(:^:S*a~^a~!~*:(/)S)::::::::::::************^
19:08:51 <thutubot> */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************/*****************************************************************************************/************************************************************************************************************************************************/******************************************************************
19:10:36 <ais523> +ul ((:*)(::**))(:^:()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^*a~^a~!~*:( )S)
19:10:52 <ais523> +hello
19:10:52 <thutubot> Hello, ais523!
19:11:03 <ais523> +ul ((:*)(::**))(:^:()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^*a~^a~!~*:( )S)::::::::********^
19:11:43 -!- thutubot has quit (Remote closed the connection).
19:11:54 <ais523> OK, I think I messed up somewhere
19:11:57 <ais523> I have to go, anyway
19:12:02 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
19:46:59 <AnMaster> Deewiant, I'm working on a library for the debug protocol now
19:47:45 <AnMaster> to make it simpler to write both clients and interpreters supporting it
19:47:48 <AnMaster> C library of course
19:48:02 <AnMaster> but no fancy calling conventions in it, just C99
19:55:49 -!- Sgeo has joined.
20:05:40 * SimonRC decides he likes MC Frontalot
20:05:53 <SimonRC> Also, gratuitous mutation sucks.
20:06:04 <SimonRC> well, I don't like it
20:06:29 <SimonRC> So, you want to create a list that is a filtered version of another list.
20:07:54 <SimonRC> Do you [a] allocate a new empty list, and add all applicable items from the old list or [b] allocate a new list with the same contents as the old one, grab its iterator, and use Iterator.remove() to remove all the stuff you don't like?
20:07:59 <SimonRC> blither
20:08:39 * SimonRC decides that a license should be needed to use the iterator mutation functions
20:09:13 <SimonRC> # you are likely to be beaten by a grue #
20:09:26 <SimonRC> # If this fate seems particularly cruel, #
20:09:49 <SimonRC> # Consider whose fault, it could be #
20:10:12 <SimonRC> # Not a lamp or a match in your inv-ent-or-y #
20:13:57 <SimonRC> waitamo...
20:14:10 -!- RodgerTheGreat has joined.
20:14:14 <SimonRC> # Not a torch or a match in your in-ven-to-ry #
20:14:23 <SimonRC> RodgerTheGreat: hi
20:14:24 <RodgerTheGreat> howdy
20:14:40 <SimonRC> RodgerTheGreat: waddya think of MC Frontalot?
20:14:45 <RodgerTheGreat> SimonRC: you-are-like-ly-to-be-eaten-by-a-grue
20:14:58 <Deewiant> s/eaten/ea-ten/
20:15:03 <SimonRC> nonono, that's not the rhythm
20:15:29 <RodgerTheGreat> you/are-like-ly/to be/eaten-by-a-grue
20:15:56 <RodgerTheGreat> I'm not familiar with too many of his songs, but what I've heard I liked
20:15:59 <SimonRC> eyah, approx
20:16:06 <SimonRC> *yeah
20:16:16 <SimonRC> ok...
20:16:19 <RodgerTheGreat> kinda a Jonathan Coulton vibe except more hip-hop
20:16:41 <SimonRC> MC Frontalot, Lemon Demon, Tom Lehrer, and Weird Al.
20:16:44 <SimonRC> need moar
20:17:12 <SimonRC> also, need less songs about relationships
20:17:21 <Deewiant> flight of the conchords
20:17:22 <SimonRC> or rather, don't need more
20:17:29 <Deewiant> see http://www.youtube.com/watch?v=WGoi1MSGu64 for instance
20:17:39 <RodgerTheGreat> unless they ALSO include secret lairs on skullcrusher mountain
20:17:57 <SimonRC> RodgerTheGreat: or S&M, or really bad pairing, or etc
20:18:22 <RodgerTheGreat> because those things are funny and creative in many cases
20:18:30 <SimonRC> yes
20:18:49 <SimonRC> or the love of man and crayola
20:21:54 <AnMaster> what is "MC Frontalot"?
20:24:07 <SimonRC> http://frontalot.com/index.php/
20:24:21 <SimonRC> the populariser of nerdcore rap
20:36:04 <AnMaster> nerdcore?
20:36:08 <AnMaster> wtf is that?
20:41:34 -!- vixey has joined.
20:42:49 -!- vixey has set topic: http://bespin.org/~nef/logs/esoteric/ --> STRING p="STRING p=?;print(p[:9]+REPR 34+p+REPR 34+p[11:])";print(p[:9]+REPR 34+p+REPR 34+p[11:]).
20:43:05 <vixey> I bring quines of ALGOL
20:43:27 <vixey> 68
20:43:54 <RodgerTheGreat> hooray
20:44:25 <RodgerTheGreat> I found an awesome book today at a book sale entitled "Programming Languages: Design and Implementation" from 1975. It's great.
20:44:39 <RodgerTheGreat> it doesn't even *mention* C or C++ (for obvious reasons).
20:45:17 <vixey> cool good find
20:45:28 <vixey> I'm reading CTM it's totally great
20:45:29 <RodgerTheGreat> the main "case study" chapters talk about FORTRAN, ALGOL 60, COBOL, SNOBOL, PL/I, APL and LISP 1.5
20:45:34 <vixey> :o
20:45:39 <RodgerTheGreat> definitely worth $.25
20:45:42 <SimonRC> ahh, SNOBOL
20:45:43 <vixey> I'm going to check for this at the library
20:45:52 <SimonRC> one fo the great forgotten languagers
20:45:56 <vixey> SNOBOL is this slick text processer?
20:45:58 <vixey> language
20:45:59 <RodgerTheGreat> it's by "Terrence W Pratt"
20:46:24 <RodgerTheGreat> if I recall correctly. It's SNOBOL4, specificially.
20:46:35 * SimonRC wonders how history would have been different had K&R met Charlse Moore
20:46:45 <RodgerTheGreat> I didn't know much about it aside from the name, but I intend to find out
20:47:04 <SimonRC> Well, for a start the unix kernel would have likely been written in Forth...
20:47:24 <SimonRC> SNOBOL was high-level, ISTR, with sirst-class string
20:47:25 <SimonRC> s
20:49:00 <SimonRC> of course, it came before structured programming won...
20:49:54 <RodgerTheGreat> If FORTH had become the defacto standard for systems programming, everything would be awesome
20:50:01 <SimonRC> indeed
20:50:11 <SimonRC> well, some tings would have been better
20:50:33 <AnMaster> others would be worse?
20:50:36 <RodgerTheGreat> well, it would've decreased the chance of C++ taking hold, so that would definitely be better
20:50:44 <Deewiant> we'd have FORTH++ instead
20:50:44 <AnMaster> RodgerTheGreat, true
20:50:51 <AnMaster> but C itself is good
20:50:52 <SimonRC> OTOH, the forth we would be using would be huge and warty
20:51:04 <SimonRC> it would be the Forth equivalent of C's C++
20:51:10 <SimonRC> Deewiant: yes
20:51:35 <RodgerTheGreat> I'm not sure you can really *make* FORTH that huge and warty. It's so clean, ugly parts slide off, like (in theory) LISP.
20:51:48 <SimonRC> hahaha
20:51:53 <AnMaster> RodgerTheGreat, what about elisp?
20:51:55 <AnMaster> :)
20:51:56 <Deewiant> give mr. stroustrup two hours alone with any language and I'm sure he can ;-)
20:52:05 <SimonRC> ansi forth is big(ish)
20:52:21 <RodgerTheGreat> AnMaster: thus, "In theory"
20:52:26 <AnMaster> RodgerTheGreat, hah
20:52:45 <RodgerTheGreat> Deewiant: I think Stroustrup is the human incarnation of the "Ugly Stick" as far as languages are concerned.
20:52:47 <SimonRC> RodgerTheGreat: *cough* COMMON LISP *cough*
20:52:58 <vixey> o_O
20:53:05 <RodgerTheGreat> I use Scheme when I feel lambda-ey
20:53:11 <vixey> how can you say that Simon..
20:53:21 <RodgerTheGreat> lovely R5S5
20:53:41 <SimonRC> well, Common LISP is rather bigger than Scheme
20:53:47 <RodgerTheGreat> (even if it's missing some critically useful features like a random number generator and a system timer...)
20:54:01 <lament> r5rs isa nice core specification
20:54:12 <lament> it doesn't need a random number generator, that's a part of the standard library
20:54:12 <SimonRC> and it has wonderful shit like symbol nil = variable nil = empty list = false
20:54:17 <AnMaster> RodgerTheGreat, well, that's extreme, befunge got both
20:54:19 <lament> unfortunately scheme does not HAVE a standard library :(
20:54:50 <RodgerTheGreat> lament: and therein lies the problem.
20:55:00 <RodgerTheGreat> but MzScheme fixes that nicely
20:55:31 <SimonRC> I am currently working on some Java that is in desperate need of light-order functions, or macros, or preferrably both
20:55:36 <SimonRC> *higher-order
20:56:32 <RodgerTheGreat> Java does not have a preprocessor, so you're slightly S.O.L. there. Is there a possibility that this could be fixed with some of the obscure features Java *does* have like gotos and anonymous classes?
20:56:45 <SimonRC> I don't think so
20:56:50 <RodgerTheGreat> dang
20:57:04 <SimonRC> or at least, not clearly
20:57:12 <lament> RodgerTheGreat: but everybody hates mzscheme
20:57:14 <RodgerTheGreat> So, on mildly related terms, I'm teaching a class this afternoon about Applet programming
20:57:19 <SimonRC> and anonymous classes are not obscure in this code
20:57:28 <SimonRC> RodgerTheGreat: teaching?
20:57:29 <RodgerTheGreat> lament: I don't hate it yet, but we'll see how that develops
20:57:37 <RodgerTheGreat> SimonRC: yeah, like a workshop
20:57:40 <SimonRC> ok
20:58:10 <SimonRC> but the things that Java has that are theoretically equivalent to other languages' cool stuff are too heavy-weight
20:58:21 <SimonRC> oh gods, another thing
20:58:30 <RodgerTheGreat> hm. That really does depend.
20:58:44 <vixey> btw you can do really neat stuff in java
20:58:54 <RodgerTheGreat> there are a lot of things that Java does that may seem heavyweight and are actually optimized out at runtime
20:59:01 <vixey> you don't need macros
20:59:02 * RodgerTheGreat high-fives vixey
20:59:04 <SimonRC> no, heavywieght for the programmer
20:59:16 <vixey> a bit of reflection goes a long way ;P
20:59:34 <RodgerTheGreat> <3 optimistic JIT compilation
20:59:44 <SimonRC> dynamic dispatch can only be done on the "first argument" to a method, *and* all methods must be declared in the class of their "first argument" <-- killer combo
21:00:26 <SimonRC> which means you can't add new methods that are only applicable to some modules
21:00:50 <RodgerTheGreat> SimonRC: did you know that in Java6 you can compile and load source files on the fly?
21:01:05 <SimonRC> fun
21:01:24 <RodgerTheGreat> yeah, it's pretty psychotic when you really think about it but damned if it isn't nifty
21:01:49 <SimonRC> (e.g. you want to stick graphics methods on things for when you draw them, and parsing methods for when you parse them, and generation methods for when you generate things on them, and so on, and before you know it every class is a huge pile fo semi-related shit.
21:02:15 <SimonRC> or you get alarming collections of private static methods with lots of instanceofs
21:02:22 <RodgerTheGreat> that sounds like it could be solved with container classes?
21:02:28 <RodgerTheGreat> and perhaps an interface
21:02:49 <SimonRC> ah, but these objects are in a big tree
21:03:08 <SimonRC> and every time you get any children out of anything you would have to put them in containers
21:03:13 <SimonRC> hmm
21:03:28 <RodgerTheGreat> make, for example a ParseBox class that is passed a Box via the constructor. Depending on how you do things, you could make ParseBox implement, say, BoxAdapter
21:03:45 <SimonRC> we already have 3 parallel trees
21:03:47 <GregorR> RodgerTheGreat: Did you know that in $YOUR_FAVORITE_DYNAMIC_LANGUAGE you can compile and load source files on the fly?
21:03:49 <RodgerTheGreat> then all your method-extender container classes implement that single interface
21:03:59 <SimonRC> hmm
21:04:26 <RodgerTheGreat> GregorR: Did you know that $YOUR_FAVORITE_DYNAMIC_LANGUAGE probably doesn't JIT as fast as HotSpot can?
21:04:59 <GregorR> $MY_FAVORITE_DYNAMIC_LANGUAGE doesn't have a JIT as-is :P
21:06:25 -!- Tritonio_ has quit (Remote closed the connection).
21:07:48 <GregorR> (I has kitty)
21:07:54 <SimonRC> huh?
21:08:13 <GregorR> I HAVE A PUSSY ... IN MY LAP
21:09:30 <RodgerTheGreat> damnit, now I miss my cats
21:09:53 <Deewiant> http://arcanux.org/lambdacats/io-monad.jpg
21:10:21 <RodgerTheGreat> haha
21:10:51 * vixey feels like the kant haskell today cat :(
21:11:42 <RodgerTheGreat> I feel like drawing something. Requests/ideas anyone?
21:11:55 <GregorR> PUSSY
21:12:04 <GregorR> (Your choice of interpretation of that word)
21:12:14 <SimonRC> RodgerTheGreat: me (as you imagine me)
21:12:21 <GregorR> Hahahah
21:12:21 <SimonRC> in fact, us, (as you imagine us)
21:12:27 <GregorR> English, right?
21:12:31 <SimonRC> yes
21:12:43 <GregorR> So, bad teeth clenching a pipe and a top hat?
21:12:50 <vixey> lol
21:12:50 <SimonRC> *snork*
21:13:14 <RodgerTheGreat> SimonRC: this is from the last time someone suggested I do that: http://www.nonlogic.org/dump/images/1203125875-tetsuoooo.png
21:13:46 <SimonRC> ok
21:14:25 <SimonRC> not good
21:14:42 <RodgerTheGreat> this is why I like source images
21:14:59 <SimonRC> there is a small chance I might find you one...
21:15:25 <RodgerTheGreat> "oh, cool, that's one person who isn't a formless ball or brain in a jar"
21:15:36 <SimonRC> eh?
21:15:44 <GregorR> Hey, I'm not a formless ball!
21:15:48 <GregorR> I'm a very formfull ball!
21:15:52 <GregorR> I'm ball-formed!
21:16:06 <RodgerTheGreat> Gregor, for example, appears to be human because he has extensive photographic evidence of himself wearing amazing hats
21:16:26 <GregorR> Either that, or he has a really good model for POV-ray.
21:16:46 <RodgerTheGreat> alternately, people can *describe* themselves and I will render my minds-eye version of that, but they tend to be inaccurate
21:16:48 <SimonRC> oh, BTW, these are not source images: COBOL Bill: http://img.thedailywtf.com/images/mfd/mfd1_0800200c9a66.png My old SEng lecturer: http://www.cs.loyola.edu/~kbg/kbgsmiling.JPG
21:17:02 <SimonRC> surely not a co-incidence?
21:17:10 <RodgerTheGreat> haha
21:18:14 <SimonRC> (COBOL Bill is off of Mandatory Fun Day, to worst (and only) webcomic ever to be part of TDWTF.)
21:18:17 <RodgerTheGreat> http://rodger.nonlogic.org/comics/Comic016.png
21:18:24 <GregorR> I think I'm going to make that "people from the internet" picture my avatar.
21:18:34 <RodgerTheGreat> GregorR: haha- awesome
21:18:58 <vixey> hehe
21:19:02 <RodgerTheGreat> I heard that my sister set this as her desktop: http://www.nonlogic.org/dump/images/1202607439-DrumsCantMakeAMinorsRetards.png
21:20:44 <SimonRC> heh
21:21:06 <RodgerTheGreat> and this image is currently winning the Nonlogic Dump War: http://www.nonlogic.org/dump/images/1203194372-saur.png
21:21:55 <RodgerTheGreat> so, any other suggestions?
21:22:50 * SimonRC suddenly finds an old pic he did
21:23:12 -!- timotiis has joined.
21:23:27 -!- oklopol has joined.
21:25:56 <SimonRC> Well, please excuse my poor artistic skill...
21:27:22 <SimonRC> and a warning in view of what happened last thime I shew it to people...
21:27:29 <RodgerTheGreat> I never bash anyone's drawing skills
21:27:44 <SimonRC> note that *no* genetalia/reproductive organs/whatever are involved in this pic. http://users.durge.org/~sc/Kigdatsi/pics/invite-only/Kig_20070922.png
21:28:02 <SimonRC> the wings really do get in the way or drawing them
21:28:28 <SimonRC> *of
21:29:12 <RodgerTheGreat> oh yes, I think I remember the discussion this spawned last time
21:29:19 <SimonRC> ok
21:29:24 <vixey> nice dragons
21:29:46 <SimonRC> vixey: dragon-shaped, but technically not dragons
21:29:52 <RodgerTheGreat> vixey: do you draw at all?
21:30:07 <vixey> yeah sometimes, not like I used to though
21:30:23 <RodgerTheGreat> ooh, can we see some of your stuff?
21:30:25 <vixey> what are they, if not dragons?
21:30:32 <SimonRC> Kigdatsi
21:30:41 <SimonRC> don't bother with Google
21:30:45 <vixey> I don't have anything online
21:30:52 <RodgerTheGreat> :<
21:31:08 <vixey> if I draw anything good in the future ill upload :p
21:31:20 <RodgerTheGreat> I have a great image host if you ever need one: http://www.nonlogic.org/dump/
21:31:49 <SimonRC> well, the usual way to get good any drawing (well anything) is lots of enthusiasm which causes lots of practice
21:32:12 <RodgerTheGreat> definitely
21:32:37 <SimonRC> also, make it *difficult* practice
21:32:51 <RodgerTheGreat> many times getting a new tool gives me inspiration, too. I spent at least 5 hours a day for week after I got my tablet doodling on my computer
21:33:04 <SimonRC> if you only do stuff you are confident in, then you end up re-doing the same thing 50 times
21:33:22 <SimonRC> like this guy (not me): http://ebondragonart.com/dragon_art_gallery.html
21:33:42 <SimonRC> ("how about a new angle, like, *not* from the side?")
21:33:52 * SimonRC is in a ranty mood
21:34:35 <RodgerTheGreat> that's one of the reasons I really like doing comics- lots of opportunities to try out new ideas compositionally
21:37:04 <SimonRC> hmm
21:37:15 <SimonRC> Suppose dogs (or similar) did visual arts
21:37:30 <SimonRC> how would they show who was who?
21:37:56 <SimonRC> because they recognise more by smell and less by appearance than humans do
21:38:49 <SimonRC> maybe some system of symbols near each subject's arse that sybolically represent their smell
21:39:25 <RodgerTheGreat> I'd imagine a smell-oriented artist would use substances with different smell properties rather than pigments, and I bet composition would work quite a bit differently because rather than shapes in space you're concerned with the mixing of smell carriers in the air
21:39:53 <SimonRC> alas, there are far more components to smell than to color, especially to a dog
21:40:01 <SimonRC> so composing would be hard
21:40:42 <RodgerTheGreat> well, are you suggesting that oil paintings capture anywhere near as many properties of light and color as our eyes are capable of experiencing? Art is representational
21:40:54 <SimonRC> hmm
21:41:24 <RodgerTheGreat> I mean, look at my cartoons- they look almost *nothing* like actual people you interact with in real life, but you still recognize them as people
21:41:31 <SimonRC> oil paintings have a much easier job: colour only has a few components
21:41:36 <SimonRC> RodgerTheGreat: yes
21:42:05 <SimonRC> I wonder if that same would work for smell
21:42:13 <SimonRC> ysee...
21:42:33 <SimonRC> vision is like a map from R^2 to R^3
21:42:44 <vixey> other way around no?
21:42:47 <SimonRC> smell is rather like a member of R^9999
21:42:51 <SimonRC> vixey: no
21:42:58 <SimonRC> for each position there is a color
21:43:00 <SimonRC> roughly
21:43:36 <SimonRC> the pixels in our eyes are arranged in an array with directions in it
21:43:38 <RodgerTheGreat> SimonRC: you're tremendously oversimplifying vision, seriously.
21:43:49 <SimonRC> I am approximating
21:44:21 <SimonRC> smell sensors aren't arranged in any particular order
21:44:30 <SimonRC> you can't have a "line" in the nose
21:44:35 <vixey> eeh
21:44:46 <vixey> "pixels" sounds like a bad term
21:44:49 <SimonRC> indeed
21:45:10 <SimonRC> I am talking about the problem of vision more than the solution that we have
21:45:11 <RodgerTheGreat> "pixels" in our eyes are not arranged in a uniform pattern. Cone response to color is not restricted to their main target color, and different cone types are not overlaid, they're staggered randomly
21:45:22 <SimonRC> yes, yes, yes, yes
21:45:29 -!- oerjan has joined.
21:45:49 <RodgerTheGreat> some people even have four types of cones, rather than 3 (mostly women, I think, because it's a dual-X trait)
21:45:55 <SimonRC> yes also
21:46:03 <SimonRC> I was considering all of those
21:46:35 <RodgerTheGreat> every degree of complexity you can ascribe to smell can also be ascribed to color, so saying "Smell is more complex and Color is easy" is a tremendously ignorant assertion.
21:46:47 * oerjan prefers 3 ice cream scoops rather than 3 cones
21:46:53 <SimonRC> RodgerTheGreat: hmm
21:47:08 <RodgerTheGreat> I'd posit that the main reason you come to this conclusion is because you're more familiar with technology for reproducing visual imagery
21:47:17 <SimonRC> hmm
21:49:18 <RodgerTheGreat> anyway, bbl- gotta get some food
21:50:04 <SimonRC> well, smell would be simpler if we only had a few dimensions of it...
21:50:12 * SimonRC thinks of ideas...
21:50:25 <oerjan> like taste...
21:50:38 <SimonRC> oerjan: tongue taste, at least
21:51:33 <SimonRC> the problem of detecting the spectra of light coming in from various angles is a regular one
21:52:04 <SimonRC> whereas the collection of airborne molecules is just a big semi-irregular collection
21:52:41 <SimonRC> if I give you all directions, you can sort them roughly as to how close they are to a given direction
21:53:21 <SimonRC> if I give you (in description) all pure frequencies of light, you can sort them in an obvious order
21:53:48 <SimonRC> if I give you (by description) all small scented molecules, you can classify them in 10001 ways
21:54:21 <SimonRC> OTOH
21:54:48 <SimonRC> If a few scents are considered much more important than others, you can concentraste on those for representationality
21:54:55 <SimonRC> *concentrate
21:56:52 -!- pikhq_ has joined.
21:59:36 <GregorR> SUPER DANCE EXPLOSION TIME
22:00:07 <SimonRC> did you know...
22:00:39 <SimonRC> in C#, booleans can be other values than true or false, but there is no easy way to write that in C#?
22:01:06 <SimonRC> because boolean is an 8-bit type, but C# on has the literals true (1) and false (0)
22:01:16 <GregorR> That's true in plenty of languages.
22:01:46 <SimonRC> but for C#, other .net languages might produce other values for a byte
22:02:16 <SimonRC> so you can acquire a boolean that is represented as a byte containing two, but you can't actually produce it, in C#
22:02:32 <SimonRC> um, I think
22:02:37 <SimonRC> I might be BSing here
22:02:49 <GregorR> char a = 2;
22:02:56 <GregorR> bool b = *(cast(bool*) &a);
22:02:57 <SimonRC> GregorR: that is not a boolean
22:03:05 <GregorR> You are not patient :P
22:03:06 <SimonRC> oh, waitamo...
22:03:22 <SimonRC> does that actually work?
22:03:26 <SimonRC> or is it restricted
22:03:27 <GregorR> In D? Sure.
22:03:36 <GregorR> I don't speak C# :P
22:03:55 <GregorR> My point was that that's not even remotely rare.
22:04:11 <SimonRC> GregorR: you can't do bool b = 2 then?
22:04:34 <GregorR> Idonno, you might be able to, but it would probably implicitly cast to 'true' if you did, and so b would actually be 00000001
22:04:41 <SimonRC> ew
22:04:52 <SimonRC> ok, so I hadn't heard of that
22:04:59 <GregorR> ?
22:05:46 <SimonRC> I didn't know D did that
22:06:00 <GregorR> I don't know if D does that (bool b = 2), it may just be a type error :P
22:08:09 <RodgerTheGreat> I have returned
22:08:13 <GregorR> lies
22:08:36 <RodgerTheGreat> no lies, only heresy
22:09:11 <SimonRC> ooh
22:09:23 <SimonRC> it seems that .NET booleans are 32-bit actually
22:09:51 <RodgerTheGreat> wtf
22:10:07 <RodgerTheGreat> although that may be related to how their VM is designed
22:10:21 <SimonRC> in arguments, at least
22:10:46 <SimonRC> but there may be a protocol for compressing multiple bool arguments together
22:11:07 <RodgerTheGreat> am I allowed to say this is really, really stupid, or would that make me a fascist that doesn't appreciate "art"? http://dvice.com/archives/2008/03/cup_pc_concept.php
22:11:11 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:11:21 -!- Judofyr has joined.
22:12:13 -!- pikhq has quit (Read error: 110 (Connection timed out)).
22:12:19 <SimonRC> "holographic projector"?
22:12:33 <SimonRC> we can't do free-standing holograms yet
22:16:34 -!- jix has quit ("This computer has gone to sleep").
22:18:16 <RodgerTheGreat> like I said, it's a really, really stupid idea
22:18:27 <RodgerTheGreat> "impractical" doesn't do it justice
22:18:40 <SimonRC> waitamo...
22:18:51 <SimonRC> how does one type on it?
22:18:55 <SimonRC> or surf the web
22:19:01 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)).
22:19:01 <SimonRC> or, well, anything
22:19:14 <RodgerTheGreat> "free of the burden of user interfaces", that's how.
22:19:22 <RodgerTheGreat> which means jack
22:19:31 <RodgerTheGreat> bbl
22:21:54 -!- pikhq has joined.
22:22:20 <lament> so yesterday i got really stoned and had an epiphany
22:22:32 <lament> that will hopefully make me a much better mandolin player
22:22:32 <SimonRC> stoned on what?
22:22:37 <lament> pot
22:22:38 <SimonRC> erm...
22:22:40 <SimonRC> ok
22:23:19 <vixey> well there were some kids smoking outside my house
22:23:29 <lament> part of the epiphany is that mandolin is a really kick-ass instrument for playing melody (its fretboard maps particularly well to the underlying structure of western tonality)
22:23:29 <vixey> so I played whitehouse really loud at them and they all left ^-^
22:23:53 <vixey> they couldn't handle it
22:28:48 <SimonRC> hmm
22:28:57 <lament> also it's depressing how crappy guitars are, in comparison
22:29:19 <lament> in terms of it being harder to see where the right notes are
22:35:02 -!- jix has joined.
22:35:09 <SimonRC> yo
22:35:38 <vixey> lol
22:35:44 -!- jix has quit (Client Quit).
22:36:31 <SimonRC> otoh, that cup would be the perfect thing to dring Google Gulp from: http://www.google.com/googlegulp/
22:39:56 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:40:34 -!- Judofyr has joined.
22:40:45 -!- jix has joined.
22:43:32 <SimonRC> what is that thing in the topic?
22:43:57 <oerjan> a quine i guess
22:44:07 <vixey> ALGOL
22:44:08 <SimonRC> well yes
22:44:11 <SimonRC> vixey: ah, ok
22:52:17 -!- RedDak has quit (Remote closed the connection).
22:56:51 -!- jix has quit ("This computer has gone to sleep").
23:10:54 -!- oerjan has quit ("Good night").
23:25:47 <GregorR> RodgerTheGreat: Actually, do you mind if I put that (people from the Internet) on a T-shirt?
23:25:48 * SimonRC goes
23:33:43 <GregorR> It's later, show up already :P
23:35:43 -!- oklofok has joined.
23:36:32 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
23:56:17 <oklofok> lament: what
23:56:19 <oklofok> ...
23:56:30 <oklofok> lament: what's mandolin's errr
23:57:12 <oklofok> okay i can't find a word for this, i'll just google :-)
23:58:27 <oklofok> cgcg is better than eadgbe?
23:58:34 <oklofok> i will have to disagree on that one
23:59:22 <oklofok> frets work as they do in a guitar, i'm sure
23:59:28 <oklofok> it's just how you tune the strings that matters
2008-04-05
00:04:56 <oklofok> i always disliked guitar's b and e, the fact you can play a few chords easier isn't really worth losing the simple structure of 4ths
00:05:05 <oklofok> same with piano
00:05:37 <oklofok> it would be such a nice instrument if you could put a black key between e&f and b&c
00:05:43 * oklofok hates
00:06:33 <oklofok> s/could/just
00:12:02 <GregorR> ...
00:12:32 <GregorR> If you put a black key between E&F, it would be (logarithmically) half the difference between any other two notes, that would be nonsense.
00:14:37 <oklofok> GregorR: naturally all intervals should be chromatic steps
00:14:42 <oklofok> whatever they're called
00:15:04 <GregorR> So, you're just saying that you don't like that the Piano is "tuned" to a C scale by default.
00:15:08 <oklofok> i mean, physically between e and f, not logically
00:15:12 <oklofok> yes
00:15:18 <GregorR> Got it, OK, that makes more sense :P
00:15:26 <oklofok> heh :D
00:15:51 <oklofok> well given my explanation about guitar you might have caught what i was going for... or not, i'm not that good at explaining.
00:16:21 <GregorR> I wasn't actually following the conversation, just caught that bit :P
00:16:28 <GregorR> I'm just waiting for RodgerTheGreat to reappear :P
00:17:05 <oklofok> it's not a conversation, it's a monologue!
00:20:23 <lament> oklofok: mandolins are tuned in fifths, GDAE, same as violins
00:20:47 <oklofok> the article said they sometimes do, indeed
00:20:54 <lament> it's the standard tuning
00:20:55 <oklofok> i assumed that's a rarer tuning
00:20:59 <lament> no, it's standard
00:21:04 <oklofok> but okay, that is better than guitar's
00:21:09 <lament> it's better than everything
00:21:13 <lament> for analogy with piano
00:21:16 <lament> imagine playing in the key of c
00:21:28 <lament> and now, imagine playing in the key of c no matter what key you're actually playing in :)
00:21:37 <lament> there's only one scale to remember
00:21:42 <GregorR> Imagine playing in the key of C...
00:21:46 <oklofok> duh
00:21:49 <GregorR> Then putting down your C trumpet and picking up a Bb trumpet ...
00:21:50 <lament> (well, not really. but more or less)
00:21:53 <GregorR> And playing in the key of Bb!
00:21:58 <GregorR> :P
00:22:08 <oklofok> lament: that is true of guitar too
00:22:25 <lament> on guitar, there's a whole bunch of scales to remember thanks mostly to that third between G and B
00:22:42 <lament> so there's at least 5 pretty different major scales
00:22:42 <oklofok> depends on the amount of frets
00:23:05 <oklofok> but true, pure 4ths or pure 5ths is better
00:23:39 <lament> 5ths is a little better because you don't need to shift the position as often
00:23:48 <lament> because the majority of notes fall under your fingers anyway
00:24:09 -!- Tritonio_ has joined.
00:24:20 <lament> on guitar, more notes are outside the position
00:24:33 <lament> and you have to shift or stretch to get them
00:26:02 <oklofok> dunno
00:26:28 <lament> 5ths also reflect the structure of the scales themselves better
00:26:39 <lament> but i'd need to draw a picture to show that clearly
00:26:45 <oklofok> hmm
00:27:28 <oklofok> 02302302 for guitar minor
00:27:28 <lament> on guitar, some of your fingers are wasted at any moment because they fall on frets which are out of the scale
00:27:38 <oklofok> 02350135 for 5ths
00:28:13 <oklofok> adding another octave makes both crasg.
00:28:15 <oklofok> *crash
00:28:20 <lament> eg, you're playing minor, starting with the first finger, you play the first three notes
00:28:33 <lament> you use up first finger, third finger, fourth finger
00:28:42 <lament> and your second finger is wasted, you're unlikely to play that semitone
00:28:54 <lament> but on the mandolin, each finger corresponds to a note
00:28:58 <lament> not to a fret
00:29:13 <lament> (each finger corresponds to more or less two frets, and independently shifts between them)
00:29:24 <oklofok> true, true
00:29:27 <lament> so you play the first three notes with the first three fingers
00:29:40 <oklofok> yes, yes, i understand english, man :-)
00:30:42 <lament> the effect is somewhat like on the piano, where you don't waste your fingers either
00:30:54 <oklofok> i wont
00:30:56 <oklofok> *
00:30:56 <lament> if you're playing in C major, the fingers fall on the white keys, one finger per note
00:30:58 <oklofok> ---
00:30:58 <oklofok> won
00:31:03 <oklofok> okay, i can't type.
00:31:09 <oklofok> i won't disagree on that
00:31:10 <lament> anyway.
00:31:13 <oklofok> was what i tried to say
00:31:30 <lament> the thing about structure is better explained with a picture
00:31:36 <lament> that i'm too lazy / too at work to draw at the moment
00:32:25 <oklofok> i'm always interested to hear, so if you feel like drawing it later, do show
00:35:16 <lament> there's a particularly pretty correspondence with the cycle of fifths
00:35:24 <lament> and in particular, the cycle of modes
00:36:13 <lament> here's how it works
00:36:20 <lament> each scale is 2 tetrachords
00:36:34 <oklofok> tetrachord?
00:36:38 <lament> four notes in a row
00:36:46 <oklofok> ah
00:36:58 <lament> the cycle of modes goes lydian-ionian-mixolydian-dorian-etc
00:36:59 <oklofok> well scales are 7 notes
00:37:11 <lament> suppose we're in the key of c
00:37:22 <oklofok> lydian?
00:37:24 <lament> and ionian (major) mode
00:37:25 <oklofok> ionian?
00:37:29 <oklofok> mixolydian?
00:37:33 <lament> oh, okay, nevermind.
00:37:44 <oklofok> you can just tell me the numbes
00:37:46 <oklofok> *numbers
00:37:49 <lament> http://en.wikipedia.org/wiki/Musical_mode
00:38:09 <oklofok> i'll read after a while
00:39:44 <lament> better yet, http://en.wikipedia.org/wiki/Properties_of_musical_modes
00:39:56 <lament> that's something you should know regardless of the instrument you're playing
00:41:02 -!- timotiis has quit (Remote closed the connection).
00:41:07 <oklofok> dunno
00:41:15 <oklofok> well i didn't read the second one yet
00:42:35 <lament> it's fairly basic music theory stuff
00:42:43 <lament> non-esoteric
00:44:33 <oklofok> well i know it
00:45:10 <oklofok> i mean, i know the keys of the piano, and memorizing a few names isn't really all that useful imo
00:46:09 <oklofok> of course interesting to memorize what scales are using in different music styles
00:46:21 <oklofok> but it all seems a bit... informal
00:46:34 <lament> eh? it's very formal
00:47:46 <oklofok> well i'm not going to argue you, it's just i feel the current formalization of music isn't really all that optimal
00:47:53 <lament> well
00:47:55 <lament> that may be
00:47:56 <oklofok> but i may be wrong, i've never really studied it.
00:47:59 <lament> but modes are a very useful concept
00:48:04 <oklofok> well sure
00:48:09 <lament> they actually do describe stuff well
00:48:59 <oklofok> so modes are names for the scales on piano, without black keys?
00:49:05 <oklofok> i mean, in short, is that it?
00:49:07 <lament> yes
00:49:16 <oklofok> okay, good
00:49:28 <oklofok> i guess it would be appropriate to learn the names
00:49:32 <lament> yes
00:49:41 <oklofok> i'll do that now
00:49:43 <lament> the most common modes are ionian (also known as major)
00:49:51 <lament> aeolian (also known as natural minor)
00:50:07 <lament> and mixolydian (major with the flattened seventh; the "dominant" scale)
00:51:12 <oklofok> dominant scale?
00:51:15 <oklofok> what's the name for
00:51:35 <GregorR> If you play it, it will seep into your soul and slowly start to dominate it.
00:51:47 <oklofok> :o
00:51:55 <GregorR> Eventually, you will no longer be oklofok, you will only be the mixolydian scale.
00:52:06 <oklofok> cool
00:52:07 <lament> oklofok: if you're in C major, and play G7
00:52:09 <oklofok> i'll go play it
00:52:18 <lament> that G7 is a dominant chord
00:52:23 <oklofok> did it
00:52:31 <oklofok> how long till i turn into it?
00:52:44 <oklofok> oh
00:52:46 <oklofok> i see
00:53:00 <lament> it's a mixolydian chord
00:53:43 <lament> as you see this isn't esoteric - 7 chords are used all the time in practically all styles of music
00:54:32 <oklofok> "lament: the cycle of modes goes lydian-ionian-mixolydian-dorian-etc" <<< can you explain this?
00:55:13 <oklofok> i do pretty chromatic stuff myself
00:55:19 <lament> sure
00:55:27 <lament> that's just the cycle of fifths
00:55:37 <oklofok> hmmhmm
00:56:05 <lament> ...i really need a picture at this point.
00:56:11 <oklofok> cycle of fifths... can you try to be more unambiguous, i'm not feeling all that bright today
00:56:14 <oklofok> hehe :D
00:56:27 <oklofok> gonna draw it?
00:56:32 <lament> do you know what the cycle of fifths is?
00:56:45 <oklofok> no.
00:57:02 <oklofok> explained in the article?
00:57:18 <oklofok> isn't
00:59:18 <lament> okay, forget about the modes.
00:59:43 <lament> cycle of fifths is the key concept of western harmony.
00:59:49 <lament> http://en.wikipedia.org/wiki/Cycle_of_fifths
00:59:57 <lament> you absolutely need to know that.
00:59:58 -!- Slereah has joined.
01:00:31 <Slereah> Hello, world!
01:01:11 <oklofok> lament: oh that
01:01:11 <oklofok> i know that
01:01:39 <oklofok> the vicious circle
01:02:01 <oklofok> it was funny when they tried to teach us intervals and scales with that thing :D
01:02:23 <oklofok> so much work for something so simple
01:02:27 <oklofok> anyway, what about that
01:02:35 <oklofok> oh, right, i'll reread what you said
01:03:30 <oklofok> it seems you were only starting to explain something
01:06:15 <lament> oklofok: yes
01:06:50 <oklofok> do continue, i'll scream if i don't know a term.
01:07:18 <lament> so
01:07:38 <lament> a scale is made up of two tetrachords
01:07:53 <lament> for example, c-major: CDEF GABC
01:08:05 <oklofok> where the latter ends in the base note?
01:08:05 <oklofok> yeah
01:08:26 <lament> on the mandolin, if you start the scale on the first finger
01:08:45 <lament> each tetrachord fits on a string
01:08:57 <lament> and the second tetrachord starts on the first finger again
01:09:00 <lament> on a new string
01:09:04 <oklofok> well, sure
01:09:07 <lament> okay
01:09:10 <lament> now this second tetrachord
01:09:20 <oklofok> i think i see where this is going
01:09:21 <lament> is actually the first tetrachord of mixolydian mode: GABC DEFG
01:09:25 <oklofok> do go on
01:09:47 <oklofok> wait a sec
01:09:49 <oklofok> so
01:09:53 <oklofok> 0245
01:09:57 <oklofok> 0245
01:10:03 <lament> yes
01:10:08 <oklofok> 0235
01:10:08 <oklofok> 024
01:10:12 <oklofok> let's see
01:10:16 <oklofok> should this correspond to the cycle of fifths?
01:10:19 <lament> it does
01:10:26 <lament> because the strings are tuned a fifth apart
01:10:33 <oklofok> hmm
01:10:37 <oklofok> sure
01:10:39 <oklofok> i guess that's kinda neat
01:11:20 <oklofok> i never gave much thought to the western way to classify music
01:11:24 <oklofok> always used my own notations
01:11:29 <lament> now, let's see how it actually looks
01:11:40 <oklofok> let's
01:11:58 <lament> 0245 == O O OO (on a string that goes from left to right)
01:12:01 <lament> makes sense?
01:12:13 <oklofok> makes me go duh, yes
01:12:16 <lament> normally you draw strings vertically but that's hard on irc
01:12:18 <lament> okay
01:12:33 <lament> so the first one, 0245 0245, and then 0235 etc
01:12:39 <lament> O O OO
01:12:41 <lament> O O OO
01:12:43 <lament> O OO O
01:12:54 <oklofok> yeah
01:12:56 <lament> and then you just continue the pattern
01:12:57 <lament> O OO O
01:13:01 <lament> OO O O
01:13:02 <lament> OO O O
01:13:07 <lament> see the pattern?
01:13:14 <oklofok> yes
01:13:16 <oklofok> neat
01:13:18 <lament> each two adjacent strings are the same
01:13:19 <oklofok> very neat
01:13:21 <oklofok> do minor
01:13:36 <oklofok> it would cycle after that, right?
01:13:41 <lament> that's the neat part, i already did minor :)
01:13:47 <oklofok> oh
01:13:48 <oklofok> right
01:13:54 <lament> it's the fourth of those lines
01:13:56 <lament> and the fifth
01:14:11 <oklofok> hmm
01:14:13 <lament> sorry, the fifth and the sixth
01:14:21 <lament> sorry, i can't count!
01:14:24 <oklofok> ...?
01:14:27 <oklofok> :D
01:14:27 <lament> the fourth and the fifth :)
01:14:31 <lament> O OO O
01:14:34 <lament> OO O O
01:14:36 <oklofok> yeah
01:14:44 <lament> so the overall pattern is
01:14:49 <lament> the first and the fourth fingers don't move
01:15:03 <lament> and in the middle there's this "ladder" that moves from the top to the bottom
01:15:27 <lament> . . |.
01:15:29 <lament> . . |.
01:15:37 <lament> . .| .
01:15:39 <lament> err
01:15:43 <lament> well yeah
01:15:48 <lament> better like this:
01:15:50 <lament> . . ||
01:15:52 <lament> . . ||
01:15:53 <lament> . || .
01:15:56 <lament> . || .
01:15:58 <lament> || . .
01:16:00 <lament> || . .
01:16:28 <oklofok> hmm
01:16:39 <oklofok> doesn't it go . . || three times after that
01:16:44 <oklofok> and then cycles from . || .
01:16:45 <lament> no
01:16:55 <lament> after that, the ladder "falls through the floor"
01:17:00 <lament> || . .
01:17:02 <oklofok> hehe
01:17:03 <lament> || . .
01:17:08 <lament> | . . .
01:17:13 <oklofok> oh
01:17:16 <lament> | . ||
01:17:18 <lament> | . ||
01:17:27 <oklofok> i don't get these last two
01:17:27 <lament> we have shifted one fret down
01:17:36 <lament> err
01:17:38 <oklofok> oh
01:17:41 <lament> the last two are supposed to be . . ||
01:17:46 <lament> the position repeats
01:18:04 <lament> the ladder is back at the top
01:18:38 <oklofok> so the cycle is seven patterns long
01:18:41 <oklofok> errr
01:18:43 <lament> seven strings
01:18:43 <oklofok> patterns
01:18:44 <lament> yeah
01:18:48 <oklofok> yeah
01:18:53 <lament> and it's simple enough to vizualize
01:19:09 <lament> (you only need to vizualize the 4-string portion that actually fits on the instrument)
01:20:02 <lament> and for all modes, the cycle is the same (since all modes are generated from the same scale, just starting on different keys)
01:20:19 <oklofok> sure
01:21:23 <oklofok> you do realize an ideal model of strings 4ths apart will have as simple a pattern for the scales?
01:21:53 <oklofok> it's just played a bit differently.
01:21:59 <lament> wel
01:21:59 <lament> well
01:22:14 <lament> part of the prettiness and symmetry here is that the scale is split into two mostly symmetrical parts
01:22:18 <lament> look at the major again:
01:22:19 <lament> O O OO
01:22:21 <lament> O O OO
01:22:24 <lament> the two halves are identical!
01:22:37 <lament> you can't have that when you split it into 4ths
01:22:57 <oklofok> o o o
01:22:59 <oklofok> o o o
01:23:01 <oklofok> o o
01:23:05 <oklofok> on guitar
01:23:17 <oklofok> you can't split 7 in half
01:23:22 <oklofok> it's prime
01:23:40 <oklofok> you can split a subset of superset of it
01:23:44 <oklofok> in your case 7+1
01:23:50 <oklofok> in guitar's case 7+2
01:24:10 <lament> i don't think you'll get this symmetry with a 7+2 split
01:24:23 <lament> i mean, the symmetry around a 5th is not just a coincidence
01:24:31 <lament> the notes a fifth apart actually have similar "color"
01:24:45 <lament> 1st and 5th are "the base"
01:24:48 <oklofok> o o o
01:24:48 <oklofok> o o o
01:24:50 <oklofok> oo
01:24:52 <oklofok> actually
01:24:54 <oklofok> sorry
01:25:12 <lament> 3rd and 7th are "color", they define the character of a chord if we're playing a chord
01:25:16 <oklofok> the major scale has a lot of interesting properties, yes
01:25:19 <lament> maybe "character" rather than "color"
01:26:05 <lament> also
01:26:06 <lament> o o o
01:26:12 <lament> is a pain to play on the guitar :)
01:26:25 <oklofok> :D
01:26:27 <oklofok> well
01:26:28 <lament> guitar is not really meant for that
01:26:32 <oklofok> i have 25 frets
01:26:40 <oklofok> depends where you play
01:26:41 <lament> normally it's one finger per fret
01:26:44 <oklofok> and if it's acoustic or not
01:26:44 <lament> well, sure
01:26:54 <oklofok> i mean
01:27:02 <oklofok> if it's not acoustic, it depends on where you play :D
01:27:14 <oklofok> but yeah, it is hell.
01:27:43 <oklofok> i also have dropped a tuning, which adds a bit more hell
01:27:53 <oklofok> because you have two points of asymmetry
01:27:57 <oklofok> well not asymmetry
01:28:04 <oklofok> but... illogicality
01:28:06 <oklofok> dunno
01:28:13 <lament> yeah
01:28:24 <lament> how does drop A work?
01:28:33 <oklofok> aeadf#b
01:28:38 <lament> I know that some people who play primarily melody and not chords tune in all fourths
01:28:48 <lament> oh... ouch :)
01:28:58 <oklofok> dropped is for playing power chords easily.
01:29:09 <lament> right
01:29:14 <oklofok> looks cool or something
01:29:24 <lament> the annoying thing on guitar is that for chords, you want a specialized tuning
01:29:25 <oklofok> dunno, i've never really been into the popular part of band stuff
01:29:29 <lament> but for melody, you want a regular tuning
01:29:39 <lament> so you get a weird hybrid
01:29:40 <oklofok> yep
01:29:57 <lament> mandolin players resolve it by mostly sticking to the melody
01:30:15 <lament> (and in the styles where they mostly play chords, often retune)
01:30:33 <oklofok> well i only do power chords, so i could easily do with pure 4ths
01:30:55 <oklofok> but i only play in a band, and i'm the only mathematician there :P
01:31:29 <oklofok> pure 5ths work for power chords unless you want the octave there, too
01:31:46 <lament> for power chords you want 5-4-5-4-5-4 :)
01:31:59 <lament> but that's just silly
01:32:03 <lament> (maybe not)
01:32:05 <oklofok> 44444 is actually nicer
01:32:31 <oklofok> because 0|2|2 is as easy to play as 0|0|0
01:32:31 <oklofok> hmm
01:32:31 <oklofok> you prolly don't get my notation
01:32:33 <oklofok> like
01:32:52 <oklofok> fret in lowest string|...|fret in highest string
01:32:56 <oklofok> relative fret
01:33:11 <lament> i understand
01:33:11 <oklofok> 0|0|0 is with 5-4-5-4-5-4-5... tuning
01:33:22 <lament> but people use drop d often
01:33:24 <oklofok> yarrr i guess you understand english too
01:33:30 <lament> exactly because they think 0|0|0 is easier than 0|2|2
01:33:31 <oklofok> yeah
01:33:59 <lament> ...clearly it's easier, although clearly one should be able to play both :)
01:34:17 <oklofok> 0|2|2 seems natural to me
01:34:25 <oklofok> but it's really the cornerstone of the kind of music i play
01:34:37 <oklofok> so... i may just be used to it
01:34:49 <oklofok> 2|2|0 seems a lot harder to me
01:34:52 <oklofok> and 5-4-5-4-5-4 needs that
01:35:54 <lament> have you actually tried all 4ths?
01:36:03 <oklofok> no, never
01:36:05 <lament> it kinda seems like it has potential
01:36:12 <oklofok> yes
01:36:18 <lament> but i have invested too much time learning chords for the standard tuning
01:36:29 <oklofok> you do guitar?
01:36:36 <lament> (so might as well just switch to a whole different instrument for playing melody...)
01:36:39 <lament> yes
01:37:07 <lament> but i want to switch to mandolin and similarly tuned stuff
01:37:21 <oklofok> i would love cello
01:37:26 <oklofok> if that's the name
01:37:40 <lament> it's great but not having frets muddles things a bit
01:38:07 <oklofok> i'm planning to make my other guitar fretless
01:38:17 <oklofok> might be intesting
01:38:21 <oklofok> *interesting
01:38:52 <oklofok> nile does this in metal, although you probably don't appreciate that kind of stuff
01:39:10 <lament> i haven't heard it
01:39:21 <lament> fretless is fun but you pretty much say goodbye to chords
01:39:38 <oklofok> fairly hardcore stuff, i'm fairly sure you couldn't listen to it enough to hear any melody in it
01:39:54 <lament> eh, i like metal
01:39:59 <oklofok> you do?
01:40:03 <oklofok> umm
01:40:13 <oklofok> well, we may have a different view on what's metal
01:40:13 <lament> i don't listen to it, but i like it
01:40:39 <oklofok> i mean more like grindcore
01:40:55 -!- pikhq has quit (Read error: 110 (Connection timed out)).
01:41:55 <oklofok> search nile on youtube
01:41:58 <oklofok> if you have the time
01:42:36 <oklofok> they do interesting stuff with the fretless guitar in a few songs
01:42:51 <oklofok> unfortunately i can't name these songs, for one, the names are to long to remember anyway
01:42:59 <oklofok> *too
01:43:08 <oklofok> i don't really listen to music much
01:44:16 <oklofok> not *that* interesting, of course, metal is usually fairly limited, although probably one of the least limited genres
01:44:52 <lament> limitations are interesting too :)
01:45:01 <oklofok> true.
01:45:42 <oklofok> but i'd say more in the historician sense
01:45:51 <oklofok> to see what limits have developed naturally
01:45:55 <oklofok> etc
01:46:01 <oklofok> well, dunno
01:46:05 <oklofok> i guess in every sense.
01:46:52 <oklofok> but most popular music, and a lot of classical music, is so limited i find it hard to get interested at all
01:47:23 <oklofok> and jazz etc often gets so weird i cannot find much overall structure
01:47:59 <oklofok> although you might argue i'm just dumb, it is clear that music usually takes a big jump in weirdness between non-modern and modern
01:48:08 <oklofok> well
01:48:14 <oklofok> modern is really a bad classification
01:48:28 <oklofok> i have next to no vocabulary when it comes to music.
01:50:15 <oklofok> i need to sleep for a while, thanks for the mode lesson
01:50:17 <oklofok> cya
01:50:18 <oklofok> ->
02:02:01 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
02:02:16 -!- Judofyr has joined.
02:10:10 -!- GreaseMonkey has joined.
02:10:23 -!- Iskr has quit ("Leaving").
02:39:41 * olsner helps himself to some chips (aka crisps) in anticipation of cessation of intoxication
02:41:49 -!- Tritonio_ has quit (Remote closed the connection).
03:09:08 <RodgerTheGreat> what's up, folks?
03:16:27 <Slereah> I'm back baby.
03:17:04 <RodgerTheGreat> howdy again, Slereah
03:17:34 <RodgerTheGreat> this is really unsettling: http://www.motionportrait.com/about/
03:19:10 <RodgerTheGreat> and the cartoon ones look evil. http://www.motionportrait.com/about/demo_others_05.html
03:19:37 <Slereah> I do not understand this page.
03:20:17 <RodgerTheGreat> it's some type of software that can animate still images and make them look around, breathe, and smile in what generally comes out as a really creepy way
03:20:55 <Slereah> Oh.
03:24:44 <RodgerTheGreat> clearly you are stunned and left with nothing to say
03:26:44 <Slereah> I have my share of stunning right now.
03:26:52 <Slereah> As I am reading this :
03:26:53 <Slereah> http://www.misterkitty.org/extras/stupidcovers/stupidcomics102.html
03:27:07 <Slereah> Chuck Norris. Ninjas. Objectivist propaganda.
03:28:08 -!- adu has joined.
03:31:06 <RodgerTheGreat> http://www.misterkitty.org/extras/stupidcovers/chuck7.jpg <- this is great
03:31:29 <RodgerTheGreat> apparently that one ninja's asshole can talk
03:31:59 <RodgerTheGreat> http://www.misterkitty.org/extras/stupidcovers/chuck8.jpg <- and this is probably my favorite panel
03:33:10 <Slereah> Chuck Norris' best ally is misinformation.
03:33:24 <RodgerTheGreat> apparently
03:33:27 <GregorR> RodgerTheGreat: Ping!
03:33:37 <Slereah> This one is also pretty fucked up : http://www.misterkitty.org/extras/stupidcovers/stupidcomics115.html
03:33:42 <GregorR> RodgerTheGreat: Can I put that on a T-shirt?
03:33:44 <RodgerTheGreat> what the hell kind of ninjas use guns as weapons and believe internet memes?
03:33:59 <RodgerTheGreat> GregorR: put what on a T-shirt?
03:34:17 <Slereah> RodgerTheGreat : They don't use guns.
03:34:20 <GregorR> RodgerTheGreat: People from the Internet
03:34:21 <Slereah> They just carry them.
03:34:28 <GregorR> RodgerTheGreat: I want that on a T-shirt.
03:34:32 <Slereah> When the fight breaks out, they just leap on him.
03:34:54 <Slereah> Except that one ninja who fires.
03:34:56 <RodgerTheGreat> GregorR: did you plan on selling it to people, or just for personal use?
03:35:18 <GregorR> Well, I was going to use CafePress to produce it, but just wanted one for me :P
03:35:51 <RodgerTheGreat> if you're just making one for yourself, go for it. If you sell them to other people, I'd like a cut. Either way, I'm flattered. :)
03:36:09 <GregorR> Well, even if I did have CafePress sell it, I wouldn't make any profit :P
03:36:26 <GregorR> (I always put the price 1 cent over the base price, just so it doesn't end in .99)
03:38:45 <RodgerTheGreat> sounds cool to me
03:39:11 <RodgerTheGreat> I want a photo of you wearing it when it arrives.
03:39:20 <GregorR> OK X-D
03:40:43 <GregorR> What name shall I use to give you attribution in the "product" description?
03:42:28 <RodgerTheGreat> RodgerTheGreat, or just "Rodger" is fine
03:45:08 <GregorR> http://www.cafepress.com/bizarregeek.250445859
03:45:42 <RodgerTheGreat> hahah- that's awesome
03:46:20 <RodgerTheGreat> the eyes look kinda odd, but I suppose it just adds to the effect
03:47:30 <GregorR> I've learned from experience that you don't use fine details on CafePress T-shirts - the result fades into the abyss very quickly - so I had to GIMP-warp some of the lines a bit, which, yeah, weirded the eyes, but I don't think it hurts particularly :P
03:48:39 <GregorR> The teeth, too, but *eh*
03:49:19 -!- GregorR-L has joined.
03:49:58 <RodgerTheGreat> personally, I might've gone with black-on-white
03:58:22 <RodgerTheGreat> so, there's a local art show with a submission deadline tomorrow at 5pm. What do you folks think I should make to enter, and what medium should I use? (pen and ink or digital are the main two runners)
04:01:55 <RodgerTheGreat> GregorR-L?
04:03:18 <RodgerTheGreat> I might try reworking this a bit and doing a nice big one or two page comic: http://rodger.nonlogic.org/files/SYSTEM%20DOWN.txt
04:04:31 <RodgerTheGreat> I'm not sure how well the wordplay would translate, though
04:13:27 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
04:14:32 -!- sebbu has quit (brown.freenode.net irc.freenode.net).
04:14:32 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
04:14:33 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
04:14:33 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
04:14:35 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
04:14:35 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net).
04:14:36 -!- lament has quit (brown.freenode.net irc.freenode.net).
04:14:39 -!- fizzie has joined.
04:15:52 -!- adu has quit (Remote closed the connection).
04:23:52 -!- lament has joined.
04:23:52 -!- RodgerTheGreat has joined.
04:23:52 -!- oklofok has joined.
04:23:52 -!- tejeez has joined.
04:23:52 -!- Deewiant has joined.
04:23:52 -!- sebbu has joined.
04:42:49 -!- adu has joined.
04:48:57 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
04:49:15 -!- Judofyr has joined.
04:51:25 -!- GregorR-L has joined.
04:51:31 * GregorR-L reappears.
04:51:33 <GregorR-L> I ordered the T-shirt.
04:51:37 <GregorR-L> In beautiful white-on-black :P
04:53:48 <RodgerTheGreat> sweet
04:54:08 <RodgerTheGreat> so do you have any commentary on the art project idea?
04:56:44 <GregorR-L> Apparently not, since I'm not sure to what you refer :P
05:00:57 <RodgerTheGreat> [10:57pm] RodgerTheGreat:
05:00:57 <RodgerTheGreat> so, there's a local art show with a submission deadline tomorrow at 5pm. What do you folks think I should make to enter, and what medium should I use? (pen and ink or digital are the main two runners)
05:00:57 <RodgerTheGreat> [11:01pm] RodgerTheGreat:
05:00:58 <RodgerTheGreat> GregorR-L?
05:00:58 <RodgerTheGreat> [11:02pm] RodgerTheGreat:
05:00:59 <RodgerTheGreat> I might try reworking this a bit and doing a nice big one or two page comic: http://rodger.nonlogic.org/files/SYSTEM%20DOWN.txt
05:01:02 <RodgerTheGreat> [11:04pm] RodgerTheGreat:
05:01:04 <RodgerTheGreat> I'm not sure how well the wordplay would translate, though
05:02:13 <GregorR-L> Seems like a bit much text to try to media-convert, perhaps lossy with translation.
05:06:56 <RodgerTheGreat> maybe I'll submit one of my old paintings, "Hunter of Spatulas" http://www.nonlogic.org/dump/images/1207368367-spatch.jpg
05:07:34 <GregorR-L> That's extremely surreal.
05:07:39 <RodgerTheGreat> :D
05:10:28 <RodgerTheGreat> this was my favorite painting: http://www.nonlogic.org/dump/images/1207368583-anything.jpg
05:10:52 <GregorR-L> OK, that's just plain awesome
05:11:04 -!- pikhq has joined.
05:11:06 <RodgerTheGreat> thanks, man. :)
05:12:20 <GregorR-L> Particularly since it really just raises questions about the context, and provides little to no answers.
05:12:42 <GregorR-L> pikhq: http://www.cafepress.com/bizarregeek.250445859 // get the newest thing to hit the intarwebs! :P
05:13:27 <RodgerTheGreat> GregorR-L: the full title is "Anything (we can fix)"
05:13:43 <GregorR-L> Aha
05:13:54 * pikhq returneth from a date
05:14:00 <GregorR-L> *bow chicka bow wow*
05:15:11 <pikhq> XD
05:15:35 <RodgerTheGreat> GregorR-L: do you think they'd let me enter a revised version of "walls"? (http://www.nonlogic.org/dump/images/1207278828-walls.png)
05:15:56 <GregorR-L> Uhhhh, no idea? :P
05:16:20 <RodgerTheGreat> it would be really stupid without profanity
05:16:54 <pikhq> I guess I should've expected that, though, Gregor. :p
05:24:10 <GregorR-L> Hm.
05:24:18 <GregorR-L> Should I blindly put this /topic in a .c file and see what happens?
05:24:34 <GregorR-L> Ohwait, not C :P
05:24:48 <pikhq> It looks to me like a more insane language. . .
05:24:54 <pikhq> Like, say, PHP or Perl.
05:25:01 <pikhq> It's obviously a bracket language, though.
05:25:15 <GregorR-L> I lurve bracketlangs 8-O
05:25:15 <pikhq> From the look of things, it's a quine.
05:25:49 <pikhq> But in what language?
05:25:50 <GregorR-L> Sure, but it could be a quine with the added advantage of reformatting your hard disk :P
05:25:56 <pikhq> LMAO
05:26:05 <pikhq> vixey: You set it; care to explain?
05:26:21 <vixey> ALGOL
05:28:01 <pikhq> *Ah*.
05:28:15 <pikhq> GregorR-L: Yeah, it's a bracketlang. Bit older than C, though.
05:28:20 <pikhq> ;)
05:28:24 <GregorR-L> HAHAHA
05:28:40 <GregorR-L> Now THAT'S an esolang.
05:28:45 <pikhq> *Holy crap*.
05:28:56 <GregorR-L> ?
05:29:07 <pikhq> Backus Naur Form was invented *to describe ALGOL's syntax*.
05:29:23 <GregorR-L> Ohyeah, I actually knew that once :P
05:30:24 <pikhq> Hmm. Not actually bracketed. Might as well be, though.
05:33:52 -!- GregorR-L has quit ("Leaving").
05:40:19 -!- vixey has quit ("Leaving").
05:45:15 <RodgerTheGreat> this is my reimagining of "walls"
05:46:09 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1207370672-wall.jpg
05:51:15 <RodgerTheGreat> thoughts?
05:57:30 -!- sebbu2 has joined.
06:03:31 -!- sebbu has quit (Read error: 60 (Operation timed out)).
06:58:38 -!- GreaseMonkey has quit ("bai bai").
07:00:03 <RodgerTheGreat> good night everyone
07:00:12 -!- RodgerTheGreat has quit.
07:30:34 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
07:33:56 <GregorR> Am I the only person who goes "I'd like an egg salad sandwich", and then grills some onions?
07:53:45 -!- adu has quit.
07:57:10 -!- adu has joined.
07:57:43 -!- adu has quit (Remote closed the connection).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:36:30 -!- Iskr has joined.
09:44:18 -!- ais523 has joined.
09:45:36 -!- thutubot has joined.
11:01:42 -!- Judofyr_ has joined.
11:01:42 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
11:25:17 -!- Judofyr_ has quit.
11:25:21 -!- Xorothal has joined.
12:30:39 <ais523> what language is the topic in?
12:31:30 <ais523> ...and why does the link to the logs in the topic appear to be a mirror?
13:18:27 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
13:18:29 -!- thutubot has quit (Remote closed the connection).
13:31:31 -!- Iskr has quit (brown.freenode.net irc.freenode.net).
13:31:31 -!- lament has quit (brown.freenode.net irc.freenode.net).
13:31:32 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
13:31:33 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
13:31:33 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
13:31:33 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net).
13:32:11 -!- Iskr has joined.
13:32:11 -!- sebbu2 has joined.
13:32:11 -!- lament has joined.
13:32:11 -!- oklofok has joined.
13:32:11 -!- tejeez has joined.
13:32:11 -!- Deewiant has joined.
13:42:11 -!- lament has quit (brown.freenode.net irc.freenode.net).
13:42:13 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
13:42:13 -!- Iskr has quit (brown.freenode.net irc.freenode.net).
13:42:13 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
13:42:13 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
13:42:13 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net).
13:42:57 -!- Iskr has joined.
13:42:57 -!- sebbu2 has joined.
13:42:57 -!- lament has joined.
13:42:57 -!- oklofok has joined.
13:42:57 -!- tejeez has joined.
13:42:57 -!- Deewiant has joined.
13:49:49 -!- Xorothal has quit ("Ex-Chat").
13:53:15 -!- lament has quit (brown.freenode.net irc.freenode.net).
13:53:17 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
13:53:17 -!- Iskr has quit (brown.freenode.net irc.freenode.net).
13:53:18 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
13:53:18 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
13:53:18 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net).
13:53:50 -!- Iskr has joined.
13:53:50 -!- sebbu2 has joined.
13:53:50 -!- lament has joined.
13:53:50 -!- oklofok has joined.
13:53:50 -!- tejeez has joined.
13:53:50 -!- Deewiant has joined.
13:57:23 -!- lament has quit (brown.freenode.net irc.freenode.net).
13:57:24 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
13:57:24 -!- Iskr has quit (brown.freenode.net irc.freenode.net).
13:57:25 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
13:57:25 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
13:57:25 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net).
13:58:04 -!- Iskr has joined.
13:58:04 -!- sebbu2 has joined.
13:58:04 -!- lament has joined.
13:58:04 -!- oklofok has joined.
13:58:04 -!- tejeez has joined.
13:58:04 -!- Deewiant has joined.
13:58:18 -!- lament has quit (brown.freenode.net irc.freenode.net).
13:58:20 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
13:58:20 -!- Iskr has quit (brown.freenode.net irc.freenode.net).
13:59:45 -!- Iskr has joined.
13:59:45 -!- oklofok has joined.
13:59:45 -!- lament has joined.
14:01:45 -!- lament has quit (brown.freenode.net irc.freenode.net).
14:01:45 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
14:01:45 -!- Iskr has quit (brown.freenode.net irc.freenode.net).
14:01:46 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
14:01:46 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
14:01:46 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net).
14:03:44 -!- lament has joined.
14:03:44 -!- oklofok has joined.
14:03:44 -!- Iskr has joined.
14:03:44 -!- sebbu2 has joined.
14:03:44 -!- tejeez has joined.
14:03:44 -!- Deewiant has joined.
14:06:13 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
14:06:13 -!- lament has quit (brown.freenode.net irc.freenode.net).
14:06:14 -!- Iskr has quit (brown.freenode.net irc.freenode.net).
14:06:15 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
14:06:15 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
14:06:15 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net).
14:06:33 -!- lament has joined.
14:06:33 -!- oklofok has joined.
14:06:33 -!- Iskr has joined.
14:06:33 -!- sebbu2 has joined.
14:06:33 -!- tejeez has joined.
14:06:33 -!- Deewiant has joined.
14:13:43 -!- thutubot has joined.
14:25:40 -!- jix has joined.
14:33:47 -!- Judofyr has joined.
14:39:03 <oklofok> GregorR: were the onions part of the salad?
14:39:05 -!- Slereah has quit (Read error: 110 (Connection timed out)).
14:50:07 <AnMaster> what is the language in the topic?
14:50:18 <AnMaster> oklofok, ^
14:51:10 <oklofok> AnMaster: i did not set it
14:51:19 <AnMaster> oklofok, ah so no idea what it is?
14:52:31 <olsner> hmm, looks like a quine
14:52:32 <oklofok> REPR and STRING should give it away... but no
14:52:35 <oklofok> i don't
14:52:44 <oklofok> well yeah, i do know how it works
14:52:47 <oklofok> just not the language
14:57:50 <AnMaster> eh
14:58:43 <AnMaster> * vixey has changed the topic to: http://bespin.org/~nef/logs/esoteric/ --> STRING p="STRING p=?;print(p[:9]+REPR 34+p+REPR 34+p[11:])";print(p[:9]+REPR 34+p+REPR 34+p[11:])
14:58:44 <AnMaster> <vixey> I bring quines of ALGOL
14:58:44 <AnMaster> <vixey> 68
14:58:44 <AnMaster> aha
15:01:16 <oklofok> ah
15:01:34 <oklofok> well i don't know algol.
15:05:28 <AnMaster> nor do I
15:11:35 <olsner> oh, I see how that works now... REPR = character from integer and string[a:b] for substring extraction
15:11:55 <olsner> quite nice for such an old language
15:14:47 <oklofok> yeah
15:18:23 -!- ais523 has joined.
15:18:34 <ais523> ah, and you're using UPPER stropping
15:18:51 <ais523> I thought you had to write a pragma using POINT stropping first before you were allowed to do that?
15:19:38 <olsner> stropping?
15:20:16 <ais523> olsner: ALGOL-68 had separate keyword and identifier spaces
15:20:16 <ais523> you were allowed to call a variable if, if you liked, even though it was a keyword
15:20:16 <ais523> and also variable names could contain spaces
15:20:32 <ais523> in a book, keywords were printed in bold and variable names in italic
15:20:38 <ais523> but you couldn't do that in a real program
15:20:50 <ais523> so stropping was the way you distinguished between keywords and variables
15:21:04 <olsner> hmm, so basically everything uppercase is looked up in the keyword namespace?
15:21:13 <olsner> depending on the "stropping" setting?
15:21:30 <ais523> POINT stroppping means that you write a dot before each keyword: i.e. .string p = ".string p=? and so on
15:21:50 <ais523> UPPER stropping means you write keywords in uppercase and variables in lowercase (I think that's what's used in the topic)
15:22:13 <ais523> and RES stropping meant that if anything was the same as a reserved word, then it was a reserved word, unless you preceded it by an underscore to mark it as being a variable
15:22:49 <ais523> so in other words, the quine up there should either have extra .s added, or start .pr UPPER .pr, because POINT stropping is what's used by default unless you changed it with a pragma
15:23:54 <ais523> (some implementations allowed other sorts of stropping; apparently there was one where you underlined keywords using the underscore and backspace characters)
15:24:08 <olsner> apparently some algol implementations had UPPER stropping as default
15:24:26 <ais523> that's what the topic would imply
15:25:03 <ais523> hmm... actually, ISTR an implementation could use any form of stropping, but had to recognise POINT stropping no matter what form of stropping was being used
15:25:21 <ais523> so the .pr UPPER .p is just needed to make the program portable, but it would still work on some implementations anyway
15:25:54 * ais523 worries that they know all this about a language which is almost twice as old as they are
15:26:21 <oklofok> well not knowing algol is a sin
15:26:57 <fizzie> I think a friend used some algol implementation with the "underline-with-backspaces-and-_" thing.
15:27:39 -!- tola_ has joined.
15:27:51 <olsner> overtyping characters is just so poorly supported on modern systems, unfortunately
15:28:29 <ais523> nowadays, I reckon that Algol should support HTML stropping, so it's actually possible to do the bold-and-italic thing
15:28:29 <ais523> nowadays, I reckon that Algol should support HTML stropping, so it's actually possible to do the bold-and-italic thing
15:42:46 <ais523> <oklofok> well not knowing algol is a sin
15:42:58 <ais523> I know some things about Algol, but am apparently bad at recognising it
15:48:09 -!- oklofok has quit (Read error: 110 (Connection timed out)).
15:51:04 -!- RodgerTheGreat has joined.
15:51:55 <RodgerTheGreat> howdy everyone
15:53:48 <thutubot> hello RodgerTheGreat
15:54:01 <RodgerTheGreat> hi thutubot
15:54:52 <ais523> !ul (I may as well say hi too)S
15:54:54 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
15:55:04 -!- EgoBot has joined.
15:55:16 <ais523> it isn't meant to do that
15:55:59 <ais523> and of course I sent the first hello by bouncing it off thutubot
15:56:44 <RodgerTheGreat> yeah, I figured it was probably a puppet
15:57:23 <ais523> +ul (like this)S
15:57:23 <thutubot> like this
15:57:28 <ais523> but in a /msg
16:00:45 <RodgerTheGreat> "How many Surrealists does it take to change a lightbulb?"
16:01:30 <ais523> RodgerTheGreat: don't know
16:01:32 <RodgerTheGreat> "Two - One to paint the giraffe and the other to fill the bathtub with brightly coloured machine tools"
16:01:52 * ais523 wonders how many esolangers it would take to change a lightbulb
16:02:26 <RodgerTheGreat> an unbounded number, but on the plus side the process of changing the bulb would be TC
16:03:41 <ais523> in #irp: <ais523> Would someone here please change a lightbulb?
16:03:49 <ais523> now we can find out, hopefully
16:05:13 <RodgerTheGreat> haha
16:05:34 <RodgerTheGreat> do it at least twice- we have no idea if it's deterministic
16:05:42 * ais523 suspects that on the basis of the lack of response, the answer is greater than 6
16:05:58 <RodgerTheGreat> which lends credence to my idea
16:06:12 <RodgerTheGreat> or it just takes more than a few seconds to execute
16:07:56 <RodgerTheGreat> ais523: I have the best knock knock joke ever- say "knock knock"
16:08:23 <thutubot> knock knock
16:08:28 <RodgerTheGreat> who's there?
16:11:23 -!- Sgeo has joined.
16:12:45 <RodgerTheGreat> hey, Sgeo
16:12:53 <Sgeo> Hi RTG
16:13:11 <ais523> oh, I got a reply in #irp
16:13:20 * Sgeo then greets someone named "rwg" in another channel..
16:13:20 <RodgerTheGreat> aw, sweet- now I'm a Radio-Thermal Generator!
16:13:24 <ais523> it was 'Done'
16:13:38 <ais523> followed by a comment 'No observable effects for you, though'
16:13:38 <RodgerTheGreat> ais523: wow
16:13:55 <ais523> so the answer is apparently '1, but it takes a while and you can't prove it'
16:13:58 <Sgeo> What was the command?
16:14:03 <RodgerTheGreat> we've got some pretty good interpreters. I told you it would take some time
16:14:10 <ais523> <ais523> Would someone here please change a lightbulb?
16:16:43 <RodgerTheGreat> I think this might be worth inclusion on the IRP wiki entry
16:17:13 <ais523> I'll put it there, the original conversation's in my logs
16:17:49 <RodgerTheGreat> this one cracks me up every single time:
16:17:52 <RodgerTheGreat> <GregorR> Please, write the 99 bottles lyrics
16:17:52 <RodgerTheGreat> <memonic> go to hell
16:18:53 <RodgerTheGreat> I'd also argue that IRP is turing complete by nature of the fact that interpreters are not limited to their own mental faculties.
16:19:11 <ais523> they are limited by the amount of storage in the universe
16:19:29 <RodgerTheGreat> they can refer to the internet, other humans, or any number of handwritten notes, etc, even making use of any TC language the interpreter knows
16:19:43 <RodgerTheGreat> by proxy, I think it's fair to then say that IRP is TC
16:44:58 <ais523> RodgerTheGreat: but it can't even do 99bob!
16:45:36 <RodgerTheGreat> I'd argue it can if you phrase it right. "Would somebody please find a 99bob program, run it, and paste the output to me?"
16:48:19 <ais523> RodgerTheGreat: would you say that a shell with no flow control but with a batch file mechanism is TC?
16:48:25 <ais523> because it can run external programs?
16:48:55 <RodgerTheGreat> sure, if it has access to TC programming languages or some other means of producing new programs
16:49:38 <RodgerTheGreat> I mean, the argument for is that while the shell *itself* is not TC, it's part of a system that *is* TC
16:53:56 -!- oklopol has joined.
16:54:12 <RodgerTheGreat> hi, oklopol
16:54:18 <oklopol> hi
16:57:28 <SimonRC> Wow, I didn't know there could be such objectionable science fundamentalism: http://www.youtube.com/watch?v=Gzdv2dsPPKw
16:58:48 <SimonRC> OTOH, Science won in the 18th century, when lightning conuctors became standard for church rooves
16:58:52 <SimonRC> :-P
17:03:05 <RodgerTheGreat> the "powers of ten" part is perfect for the music
17:03:23 <SimonRC> odd
17:03:40 <SimonRC> But PoT was done with squares, not circles, surely?
17:04:32 <ais523> SimonRC: yes
17:04:59 -!- wildhalcyon has joined.
17:05:10 <SimonRC> Unless RodgerTheGreat meant it was like PoT, rather than being an extract from PoT
17:05:30 <RodgerTheGreat> that's what I meant
17:05:51 <SimonRC> ah, ok
17:06:26 <ais523> wildhalcyon: what is a halycon, anyway?
17:06:52 <SimonRC> a type of asphyxiating gas, I think
17:07:54 <wildhalcyon> it means peace, or its a type of bird (a kingfisher to be precise)
17:07:58 <ais523> Wikipedia doesn't have an article about it
17:08:38 <RodgerTheGreat> ais523: then do some research and rectify the problem?
17:08:44 <ais523> but it's used in articles, usually as an adjective
17:08:52 <RodgerTheGreat> even a small stub is an extremely useful addition
17:09:32 -!- Judofyr has quit.
17:09:34 <ais523> ah, I'd misspelt it
17:09:42 <ais523> the word is halcyon, but I'd misspelt it as halycon
17:10:08 <RodgerTheGreat> http://en.wikipedia.org/wiki/Halcyon
17:10:10 <RodgerTheGreat> yeah
17:10:30 <RodgerTheGreat> google is pretty much the most powerful spell-checker ever constructed
17:11:19 <ais523> nah, it can't spell INTERCAL
17:11:54 <SimonRC> RodgerTheGreat: heh
17:11:54 <oklopol> "did you mean inteal"
17:11:56 <oklopol> *interval
17:12:39 <RodgerTheGreat> as with any tool, it performs poorly if you don't know how to use it
17:13:29 <SimonRC> ah, I was confusing Halcyon and Halon
17:13:56 <ais523> SimonRC: iodine is a liquid
17:14:20 <RodgerTheGreat> yeah, it displaces oxygen really well, which kills fires, but unfortunately most animals like oxygen as well
17:15:15 * ais523 just realised that they mixed Halon and Halogen
17:18:03 <SimonRC> heh
17:18:15 <SimonRC> fires don't run so fast
17:18:26 <oklopol> i once mixed halon and halogen, god what an explosion
17:19:34 <SimonRC> heh
17:19:54 <oklopol> (i have no idea what halon is, but it sounds dangerous.)
17:20:14 <SimonRC> a fire-suppressing gas
17:20:26 <ais523> oklopol: chemically speaking it's like a CFC, but is allowed to use bromine too
17:20:33 <ais523> so CFCs are a subset of halons
17:21:01 <ais523> this also means that they're more or less completely safe to humans and other objects, but catalyse the destruction of the ozone layer
17:21:03 <oklopol> cfc's are the things destroying like the ozone layer and making a greenhouse out of our planet KILLING EVERYONE, like, or something?
17:21:22 * oklopol knows his stuff
17:21:37 <oklopol> oh
17:21:39 <oklopol> you said that
17:21:50 <oklopol> if something is said while i'm typing, i often ignore it
17:22:00 <ais523> oklopol: CFCs are almost the perfect inert gas for many purposes, except for the destroying-the-ozone-layer problem. That's why they caught on in the first place, before the ozone layer problem was discovered
17:22:15 <ais523> oklopol: I don't ignore it, but I often don't read it until after I've finished typing
17:22:26 <ais523> and even when I do I often finish typing and press enter anyway, even if it's redundant
17:22:46 <oklopol> i do that too, usually, but it's my main reason to fail to get a message
17:23:26 <SimonRC> well, in the past one could bame netlag
17:23:43 <ais523> SimonRC: you still can when using telnet
17:23:44 <oklopol> yes, but then one realized baming isn't the solution
17:23:59 <ais523> when someone pings you you can edit the timestamps to change the apparent delay
17:24:05 <ais523> (as well as the time you spend typing the ping reply)
17:25:26 -!- sebbu2 has changed nick to sebbu.
17:34:06 -!- Tritonio_ has joined.
17:41:37 * Sgeo remembers seeing some server room at Hofstra (I was there at summer camp), and they had those things that suppress fires with gas
17:41:43 -!- Slereah has joined.
17:41:46 <Sgeo> </delayed-and-redundent>
17:41:47 <Sgeo> Hi Slereah
17:42:01 <ais523> Sgeo: they also have them on the Channel Tunnel
17:42:17 <ais523> they have airlocks between all the carriages so they can put out a fire while the train is still moving and people are still aboard
17:42:37 <Slereah> fHi.
17:55:43 -!- oklopol has quit (Read error: 113 (No route to host)).
18:18:38 -!- Judofyr has joined.
18:43:47 <ais523> hmm... do the one-char quines in PHP and m4 count as cheat quines?
18:44:59 <Slereah> What are they?
18:45:16 <ais523> any char that has no meaning in the language
18:45:21 <ais523> because it's just echoed
18:45:29 <ais523> e.g. _ is a quine in both languages
18:45:50 <Slereah> It does seem a little cheaty.
18:47:02 <ais523> here's a nice cheatquine in Perl, by the way:
18:47:06 <ais523> #!/bin/cat
18:53:35 <RodgerTheGreat> sweet! My copy of GEB came!
18:53:48 <Slereah> GEB?
18:54:19 <RodgerTheGreat> "Gödel, Escher, Bach: and Eternal Golden Braid"
18:54:32 <Slereah> Oh.
18:54:44 <ais523> RodgerTheGreat: it's a great book
18:54:45 <Slereah> It never really inspired me to buy it.
18:54:54 <Slereah> Is it good?
18:55:13 <ais523> the dialogues there, as well as making points, are effectively the esoteric version of poetry/playwriting/prosewriting/whatever
18:55:19 <SimonRC> ais523: that's linux genrally, not perl, surely?
18:55:24 <ais523> they all have strange constraints to make them work like music
18:55:35 <SimonRC> and maybe other unixes
18:55:37 <ais523> SimonRC: yes, it works in POSIX
18:55:51 <ais523> but also, when Perl sees a #! line mentioning another application, it execs as that application instead
18:55:59 <SimonRC> ok
18:56:00 <ais523> whereas the shells don't
18:56:16 <ais523> they only pay attention to #! if you run a program without specifying which application to use
18:56:25 <ais523> so #!/bin/cat is a cat quine, but not a sh quine, for instance
18:56:32 -!- jix has quit (Nick collision from services.).
18:56:32 <ais523> but everything's a cat quine
18:56:44 -!- jix has joined.
19:01:08 -!- AnMaster has quit ("ERC Version 5.2 (IRC client for Emacs)").
19:09:32 -!- AnMaster has joined.
19:11:33 <ais523> AnMaster: now you have to write an IRC client for vi
19:11:48 <AnMaster> ais523, there is one already
19:11:54 <ais523> cool
19:11:54 <AnMaster> and I don't want to use vi
19:11:55 <AnMaster> ever
19:12:05 <AnMaster> and no I didn't code ERC
19:12:11 <ais523> I know you didn't
19:12:13 <AnMaster> there are several irc clients for emacs
19:12:16 <ais523> but I noticed your quit message
19:12:23 <AnMaster> ais523, also:
19:12:24 <AnMaster> $ vi
19:12:24 <AnMaster> bash: vi: command not found
19:12:33 <AnMaster> ais523, there is an irc client in pure zsh too
19:12:38 <ais523> wow, you must really hate vi
19:12:47 <AnMaster> ais523, I can't stand vi indeed
19:12:50 <AnMaster> ed is WAY better
19:13:04 <ais523> I'm an Emacs user normally when it comes to programmer's editing, but have been known to use vi on systems that aren't powerful enough to run Emacs
19:13:10 <ais523> and whatever ehird thinks, they do exist
19:13:18 <ais523> (I'm very bad at vi, though)
19:13:28 <AnMaster> hm
19:13:32 <AnMaster> ais523, yeah so am I
19:13:43 <AnMaster> like end up in wrong mode *all the time*
19:13:50 <AnMaster> I prefer ed or nano
19:13:54 <AnMaster> yes even ed
19:14:11 <AnMaster> or if ed isn't there, I would do sed
19:14:13 <AnMaster> I really would
19:14:31 <AnMaster> under NO conditions will I use vi
19:14:34 <AnMaster> or vim
19:14:42 <fizzie> You people are strange.
19:14:49 <AnMaster> eh?
19:14:53 <fizzie> I wouldn't touch Emacs evar if I had Vim somewhere.
19:15:09 <ais523> AnMaster: I've used sed before on a situation where I was stuck at a command prompt, Emacs wasn't installed, I didn't know how to use vi and I'd forgotten the existence of nano
19:15:20 <ais523> s/on/in/
19:17:36 <SimonRC> I tried to use ed once
19:17:42 <SimonRC> I was a bit traumatised
19:18:26 <AnMaster> SimonRC, yeah a bit indeed
19:18:31 <AnMaster> fully traumatised == vi
19:18:34 <AnMaster> or maybe teco
19:18:39 <SimonRC> nah, vi is quite good
19:18:41 <AnMaster> yeah teco and vi are both bad
19:18:54 <SimonRC> it is like nethack really
19:19:09 <ais523> TECO is great, but from the point of view of an esolang rather than an editor
19:19:36 <ais523> remember that when it was invented, computers only ran in batch mode, and you needed a TC lang to specify where on the tape to correct or edit
19:20:00 <ais523> also, using all the characters in a character set, including the control characters, is a great idea
19:20:27 <ais523> (Emacs doesn't attach a meaning to some key combinations; for instance, M-x M-butterfly doesn't work yet)
19:20:27 <SimonRC> What *are* the advantage of vi-derivatives over emacs-derivatives?
19:20:47 <ais523> SimonRC: the advantage of Emacs is that it knows everything about the formats you use, the environment you're in, etc.
19:20:52 <ais523> the advantage of vi is that it doesn't need to
19:21:20 <wildhalcyon> I like vi. It's annoying sometimes, but it gets the job done.
19:21:22 <SimonRC> modern vims are turning into emacs
19:21:41 <SimonRC> they are getting TC macro languages, arrow-key editing, etc
19:22:48 <ais523> hey, Emacs is reluctant about arrow-key editing too
19:23:08 <ais523> yes, it works nowadays, but reading the manual gives you the impression that the original author wouldn't have liked it
19:23:26 <ais523> after all, you never know when you'll end up on a terminal with no arrow keys...
19:23:37 <SimonRC> heh
19:24:16 <SimonRC> TODO: travel back in time and standardise the 101-key keyboard in the 1960s, before the ASCII control chars are decided
19:24:48 <ais523> also, Stallman really didn't like backspace = delete-char-backwards
19:24:57 <ais523> because backspace = ctrl-h and ctrl-h = help
19:25:04 <Slereah> Remove the "pause" and "scroll lock" key, too
19:25:15 <SimonRC> Slereah: um, no, not pause
19:25:22 <ais523> so it was set up so that delete = delete-char-backwards and ctrl-d = delete-char
19:25:22 <SimonRC> pause = sysreq
19:25:28 <Slereah> What is it used for!
19:25:31 <ais523> SimonRC: not on this keyboard
19:25:37 <ais523> and Pause is actually really useful under DOS
19:25:37 <SimonRC> but BS = 127, surely?
19:25:42 <ais523> SimonRC: no, that's delete
19:25:45 <ais523> BS = 8
19:25:53 <SimonRC> h,,
19:25:55 <SimonRC> hmm
19:25:58 -!- atsampso1 has joined.
19:26:24 <SimonRC> ok, the setup I usually encounter is BS = 127, help = 8, and del = some funny control code
19:26:24 <ais523> Slereah: SysRq was originally designed while multitasking operating systems were being planned
19:26:30 <SimonRC> ais523: yup
19:26:55 <ais523> because it was foreseen that people would need a new key to task-switch
19:26:56 <SimonRC> under linux, alt-sysrq is an "unblockable" signal to the kernel
19:27:02 <Slereah> But is it still in use for anything?
19:27:06 <SimonRC> yes
19:27:09 <ais523> as it happened, people ended up using things like alt-tab instead
19:27:27 <ais523> so nowadays most OSs ignore it, and on Linux it sends a signal to the kernel that bypasses the application layer altogether
19:27:42 <SimonRC> alt-sysrq, alt-R, ctrl-alt-f1 is a way to get to the terminal if X breaks
19:27:43 <ais523> except on Ubuntu, apparently, which ignores the Alt-SysRq combinations I know
19:28:00 <ais523> SimonRC: oh, you have to let go of SysRq first
19:28:02 <ais523> s/$/?/
19:28:06 <SimonRC> alt-sysrq, alt-r puts the kb back into "cooked" mode
19:28:15 <ais523> I always tried to hold down SysRq while pressing the R
19:28:24 <SimonRC> ais523: heh
19:28:45 <ais523> oh, and Alt-Sysrq-Alt followed by REISUB is a safe way to soft reboot under Linux
19:28:52 <SimonRC> ais523: did you read on TDWTF about the guy who tried to hold down all the letters in CTRL-ALT-DEL at once to type it?
19:28:57 <ais523> SimonRC: yes
19:29:37 <ais523> the REISUB trick puts the keyboard into raw mode, then terms and then kills all processes, syncs the disks, unmounts or mounts RO every disk, and reboots
19:29:52 <ais523> so you don't lose data or end up with an unstable filesystem
19:30:34 <SimonRC> or, alt-H will get you a help message on a terminal
19:30:43 <ais523> Alt-SysRq Alt-H?
19:30:54 <SimonRC> yes
19:31:27 <ais523> doesn't work on this Ubuntu system, Ctrl-Alt-F1 Alt-SysRq Alt-H just types the letter h
19:31:46 <SimonRC> oh
19:31:49 <ais523> that's annoying, SysRq codes are really useful
19:32:10 <SimonRC> there is probably something under /proc to turn them on
19:32:18 <SimonRC> or failing that, apply google
19:32:35 <fizzie> Magic sysrq key is a kernel configuration flag.
19:32:46 <fizzie> I wouldn't be very surprised if some distributions turned it off.
19:34:29 <fizzie> Although there is also a sysctl, available via /proc/sys/kernel/sysrq, to toggle whether it's enabled.
19:35:06 <ais523> fizzie: I found the sysctl, set it to 1, and still it didn't work
19:37:06 -!- atsampson has quit (Read error: 110 (Connection timed out)).
19:38:58 <ais523> OK, I figured it, SysRq is Fn-PrtSc on a laptop
19:39:08 <ais523> and has to be held down in Ubuntu for SysRq stuff to work
19:39:21 <ais523> but that implies holding down Fn too, and Fn-H is not H
19:43:49 <SimonRC> what?
19:44:05 <SimonRC> no, you let go of everyting before typing alt-h
19:44:09 <SimonRC> well here you do
19:46:13 <RodgerTheGreat> page 1 of my graphic adaptation of "System Down"
19:46:13 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1207421117-down1.jpg
19:46:43 <ais523> SimonRC: according to Google you have to hold it down on Ubuntu
19:52:09 <ais523> got it
19:52:19 <ais523> you have to let go of SysRq but not of Alt
19:54:26 <ais523> so it's +Alt +Fn +SysRq -SysRq -Fn +H -H -Alt to do an Alt-SysRq-H on a laptop
20:04:29 -!- tola__ has joined.
20:06:20 <AnMaster> http://ipv6.google.com/ <-- cool didn't know about that
20:06:25 <AnMaster> it got a jumping logo too
20:09:41 <ais523> AnMaster: I can resolve the AAAA record but the wireless router I'm connected to doesn't support IPv6
20:10:01 <AnMaster> well maybe you can access logo anyway
20:10:13 <AnMaster> http://ipv6.google.com/intl/en_ALL/images/logo.gif
20:10:18 <AnMaster> hm not right
20:10:33 <AnMaster> http://ipv6.google.com/images/ipv6_logo.gif
20:10:37 <AnMaster> ah that works better
20:10:44 <AnMaster> ais523, try accessing same with www.google
20:10:46 <AnMaster> it works
20:14:07 <SimonRC> ais523: ok
20:15:26 <SimonRC> RodgerTheGreat: cool
20:15:30 <SimonRC> where is the original?
20:16:09 <SimonRC> or the source, or whatever
20:21:23 -!- tola_ has quit (Read error: 110 (Connection timed out)).
20:28:54 <RodgerTheGreat> http://rodger.nonlogic.org/files/SYSTEM%20DOWN.txt
20:29:40 * SimonRC laughs at Garfield Minus Garfield (again)
20:30:40 -!- tola__ has quit.
20:32:05 * SimonRC laughs at SYSTEM DOWN too
20:34:13 -!- ehird has joined.
20:34:20 -!- ehird_ has joined.
20:37:27 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1207424203-down2.jpg <- and the second page
20:43:19 -!- tola_ has joined.
20:43:51 <tola_> ais523: I am PMing you
20:44:30 <SimonRC> ICEBreaker is quite cool
20:44:39 <SimonRC> you dnot need the screen though
20:44:50 <SimonRC> for the higher difficulty levels
20:45:09 <ais523> tola_: not receiving it over here for some reason, I'll send you a PM to see if that gets through
20:46:08 <tola_> ais523: received both
20:46:17 -!- oklopol has joined.
20:56:48 <ehird_> ais523: ello
20:58:41 <ais523> hi ehird_
20:58:50 <ais523> you're in here twice at the moment
20:59:46 <ais523> +ul (hello from me, too)S
20:59:47 <thutubot> hello from me, too
21:00:36 <Sgeo> +ul (does it respond to instructions from everyone)S
21:00:37 <thutubot> does it respond to instructions from everyone
21:01:31 <ehird_> +help
21:01:35 <ehird_> who is thutubot
21:01:39 <ehird_> a local egobot?
21:01:45 <ais523> ehird_: my bot
21:01:48 <ehird_> ahh
21:01:52 <ais523> it's written in Thutu, piped both ways to netcat
21:02:00 <ais523> at the moment it only supports +ul, +hello and +quit
21:02:04 <ehird_> my bot -- Endeavour -- would be in here if I didn't stop messing around
21:02:09 <ehird_> with technology to make it
21:02:10 <ais523> and responding to pings, of course
21:02:20 <ehird_> right now the plan is a Haskell framework which strongly-types stuff
21:02:26 <ehird_> and types for commands so they are composable
21:02:38 <ais523> Haskell type system sandboxing, too?
21:03:47 <Sgeo> If I did +quit, would it quit?
21:03:52 <ais523> yes
21:03:59 <ehird_> Sgeo: it would make toast
21:04:00 <ais523> and then I'd possibly get annoyed, and maybe restart it again
21:04:10 <ehird_> ais523: maybe. but it would have a haskell 'eval'
21:04:27 <ehird_> I keep sketching out a basic example -- a Karma plugin
21:04:27 <ais523> watch out for unsafePerformIO
21:04:34 <ehird_> @karma FOO, @karma+ FOO, @karma- FOO
21:04:42 <ehird_> ais523: I will use the mechanism of lambdabot: only evaluate pure code
21:04:47 <ehird_> & don't import stuff like that
21:05:07 <ais523> ehird_: I was thinking of making thutubot issue corrections when people did s/a/b/
21:05:24 <ais523> also, I made it respond with NOTICE before to comply with the IRC spec, but AnMaster told me not to
21:05:54 <ehird_> AnMaster, telling you to disobey the spec?
21:05:58 <AnMaster> ais523, it should do NOTICE on errors but not much else IMO
21:05:59 <ehird_> Consistent guy
21:06:12 <AnMaster> ehird, that is how most bots do on irc, and it works better normally
21:06:20 <AnMaster> current practise
21:06:24 <ais523> AnMaster: but you told me off when I got EgoBot and thutubot in an iterating loop
21:06:26 <AnMaster> because the irc RFCs are a joke
21:06:29 <ais523> the whole NOTICE thing was meant to avoid that
21:06:40 <ehird_> bot loops are great
21:06:47 <AnMaster> ais523, hm
21:07:02 <ehird_> EgoBot/blahbot got into one of them once
21:07:04 <AnMaster> ais523, make it an option for the end user
21:07:05 <ehird_> I think ais523 sired the program
21:07:12 <ehird_> AnMaster: How pointless
21:07:13 <ehird_> :D
21:07:19 <AnMaster> ehird, why?
21:07:33 <ais523> +quit
21:07:34 -!- thutubot has quit ("ThutuBot quitting").
21:08:23 <AnMaster> I hate routing tables
21:09:55 -!- thutubot has joined.
21:10:08 <ais523> +ul (test)S
21:10:09 <thutubot> test
21:10:14 <ais523> ++ul (:aSS):aSS
21:10:21 <ais523> AnMaster: is that what you meant?
21:10:30 <AnMaster> hm?
21:10:39 <ais523> making it an end-user option whether to privmsg or notice
21:10:43 <AnMaster> ah
21:10:46 <AnMaster> yes in config file
21:10:49 <AnMaster> is what I meant
21:10:51 <ais523> but that's not the end-user
21:10:55 <ais523> the people in the channel are the end-users
21:11:05 <AnMaster> ais523, ok I meant owner option
21:11:18 <ais523> well, I'd set it to NOTICE, and then you'd tell me off again
21:11:30 <ais523> the code needs a rewrite anyway
21:11:53 <AnMaster> ais523, hm problem is a lot of ircds have mode to block channel notices
21:12:07 <ais523> well, you just don't put a bot into those channels
21:12:21 <ais523> and NOTICE is just a way to send messages without getting autoreplies
21:12:33 <ais523> oh, and ehird_: I once got three bots in a loop
21:12:34 <ehird_> <pikhq>Step 2: Get someone with some sanity on the project.
21:12:38 <ehird_> Ian Hixie is sane
21:12:40 <ais523> EgoBot and bsmnt_bot were two of them
21:12:44 <ais523> but I can't remember the third
21:12:46 <ehird_> which is amazing considering he works with browsers
21:12:54 <ehird_> ais523: blahbot, probably.
21:12:56 <ehird_> That was mine
21:13:38 <Sgeo> ehird, I'm not sane?
21:14:21 -!- oklopol has quit (No route to host).
21:16:18 <ehird_> Sgeo: Sometimes, people quote logs nd reply to them
21:16:40 <ehird_> However, as for the matter of your sanity, I suggest you look at what this channel is about and make a decision based on that
21:16:53 <Sgeo> lol
21:17:53 <ais523> ehird_: my sanity levels had dropped so low during my project last month that I actually went to #esoteric as a method of restoring some sanity, and it worked
21:18:16 <ais523> I also find writing INTERCAL compilers theraputic, for some reason
21:22:11 <GregorR> SUPER
21:22:13 <GregorR> DANCE
21:22:14 <GregorR> EXPLOSION
21:22:15 <GregorR> TIME
21:22:50 * Slereah explodes
21:23:03 <GregorR> You didn't even dance D-8
21:23:39 <RodgerTheGreat> SimonRC: that's the idea behind the sounds
21:23:57 <RodgerTheGreat> I actually do better just closing my eyes and visualizing the keyboard as I listen
21:25:17 <ais523> um, how many conversations are going on in here at once now?
21:25:25 <ehird_> ais523: fifty-four
21:25:30 <ehird_> and a half
21:25:34 <GregorR> Mine wasn't a conversation, but I can start one if you'd like.
21:26:07 <ais523> ehird_ may be right, we have to count all the conversations which were abandoned several months ago but will be picked up several months from now
21:26:08 <ehird_> ais523: http://hpaste.org/6847 initial draft of what Endeavour code should look like
21:26:15 <ehird_> don't like the *cmd stuff, it seems like fluff
21:26:15 <RodgerTheGreat> "SimonRC: you dnot need the screen though"
21:26:38 <ehird_> hmm, wait
21:26:41 <ehird_> that isn't quite right just yet
21:27:07 <ais523> @karma+ ais523
21:27:10 <ais523> @karma+ ais523
21:27:11 <ais523> @karma+ ais523
21:27:20 <ais523> see, this is an easily gamable bot
21:27:27 <ehird_> ais523: lambdabot has that too
21:27:38 <ehird_> but nobody cares, it doesn't matter
21:27:38 <ais523> lambdabot does karma?
21:27:43 <ehird_> yes
21:27:47 <ehird_> @karma,@karma+,@karma-
21:27:53 <ais523> actually, I've seen its !help, and I'm not surprised
21:28:00 <ehird_> [21:27] <lambdabot> You can't change your own karma, silly.
21:28:03 <ehird_> that's the one protection
21:28:03 <ehird_> but if you /nick
21:28:04 <ehird_> and try
21:28:06 <ehird_> it works
21:28:12 <ais523> lambdabot does everything apart from interpret esolangs, AFAICT
21:28:18 <ehird_> it does unlambda
21:28:22 <ehird_> & used to do brainfuck
21:28:25 <ehird_> but it was buggy
21:28:54 <ehird_> ais523: http://hpaste.org/6850
21:28:59 <ehird_> it accoubnts for the plugindata stuff now
21:29:03 <ehird_> i'm going to annotate with some types
21:29:38 <ehird_> hmm
21:29:51 <ehird_> 'karmaPlugin :: Plugin' --> 'karmaPlugin :: Plugin Karmas'
21:29:52 <ehird_> small fix
21:30:32 <ehird_> hmm no
21:30:39 <ehird_> karmaPlugin :: Plugin Karmas (Map String Integer)
21:30:53 * ais523 has a really devious idea
21:30:58 <ais523> ++quit
21:30:59 -!- thutubot has quit ("ThutuBot quitting").
21:32:32 <RodgerTheGreat> SimonRC: have you taken a crack at The Abyss yet?
21:33:19 <RodgerTheGreat> also known as "Rodger's Demon"
21:33:55 <ehird_> ais523: http://hpaste.org/6851 fully updated Endeavour example, with type info
21:40:23 -!- thutubot has joined.
21:40:36 <ais523> +haskell [1..5]
21:40:53 <ais523> whoops
21:40:56 <ais523> +quit
21:40:57 -!- thutubot has quit (Client Quit).
21:41:29 <ehird_> ais523: Haha
21:41:39 <ehird_> ais523: I have GOT to see that
21:41:43 <ais523> ehird_: you've guessed how I'm doing it yet?
21:42:02 <RodgerTheGreat> this is pretty much the perfect song to listen to while reading the first chapter of GEB
21:42:11 * RodgerTheGreat is listening to Music Is Math by Boards of Canada from Geogaddi
21:42:11 <ehird_> ais523: Nope.. But I would like to see
21:42:15 -!- thutubot has joined.
21:42:22 <ehird_> RodgerTheGreat: Apart from Bach.
21:42:24 <ais523> +haskell [1..5]
21:42:25 <ehird_> +haskell [1..5]
21:42:29 <RodgerTheGreat> well, naturally
21:42:34 <ehird_> +haskell putStrLn "dum de de dum dum"
21:42:40 <ehird_> ais523: A constant nop?
21:42:42 <ais523> IO won't work
21:42:47 <ais523> and no, it should work eventually
21:42:50 <ais523> but I'm still ironing out the bugs
21:42:51 <ehird_> Hmm
21:42:56 <ais523> (and it's a cheat, by the way)
21:42:59 <ehird_> ais523: A suggestion..
21:43:04 <ehird_> ais523: If you want to seriously make it evaluate haskell
21:43:09 <ehird_> make +haskell call out to a haskell program
21:43:10 <ehird_> Because
21:43:15 <ehird_> the hs-plugs package
21:43:19 <ehird_> has the thing that lambdabot uses
21:43:33 <ehird_> you basically copy the script over, tweak as needed, and write a short Haskell generator
21:43:51 <ehird_> ais523: anyway, it still isn't working l(
21:43:52 <ehird_> *:p
21:44:04 <ais523> +quit
21:44:05 -!- thutubot has quit (Client Quit).
21:44:15 <ais523> Thutu can't call out to the shell
21:44:21 <ais523> and as I said, it's written in pure Thutu
21:45:59 <ehird_> ais523: But you are already wrapping using netcat.
21:46:09 <ehird_> You can write a shellscript to multiplex to itself and netcat
21:46:26 <Sgeo> Thutu can't use PSOX?
21:46:56 <ais523> Sgeo: maybe
21:47:00 <ais523> but that would be another wrapper
21:47:07 <ais523> and I'm not sure how well it handles \0
21:48:54 <ehird_> Sgeo: You have an answer for everything..
21:49:03 <ehird_> and the function generating it is (const "PSOX")
21:49:07 <ehird_> This is not a haiku.
21:49:16 <ais523> ehird_: anyway, I was trying to get it to relay +haskell queries to lambdabot and copy back the answer
21:49:25 <ais523> it was relaying them fine, but lambdabot was ignoring it
21:49:41 <ehird_> ais523: did you do
21:49:45 <ais523> which is strange, because it doesn't ignore me with exactly the same PRIVMSG
21:49:48 <ehird_> /msg lambdabot > foo
21:49:53 <ehird_> /msg lambdabot @run foo -- this also works
21:49:56 <ehird_> well
21:50:00 <ais523> ehird_: it's a bot, so I didn't use /msh
21:50:01 <ehird_> PRIVMSG lambdabot :@run CODE
21:50:03 <Sgeo> ehird_, I'm not saying PSOX is the answer for "How do I go up 340 trillion trillion trillion meters in Havok4"
21:50:04 <ais523> s/h/g
21:50:08 <ais523> s/$/\//
21:50:11 <ais523> but I was using @run
21:50:35 <ehird_> ais523: did you remember the colon
21:50:40 <ais523> yes
21:50:41 <ehird_> it's a beaaotch with irc
21:50:57 <ais523> PRIMVSG lambdabot :@run [1..5]
21:50:58 <SimonRC> RodgerTheGreat: where is "The Abyss"?
21:51:06 <ais523> the same command works for me on /quote
21:51:22 <ais523> um, wait, I meant PRIVMSG
21:51:29 <ais523> but I got it without the typo originally
21:52:33 <ehird_> SimonRC: It's the thing with basil and gulesfish
21:53:18 <SimonRC> ehird_: I tried that
21:54:00 <SimonRC> The basil puzzle had an effect on me like something out of a Lovecraft novel, so I thought it best not to keep trying
21:54:33 <ehird_> Cthulhuplant wants cheezburgr
21:55:55 <RodgerTheGreat> SimonRC: there's a link to the trailhead on my Code page
21:56:43 <SimonRC> "trailhead"?
21:57:32 <SimonRC> oh, like a linked-list head
21:57:34 <RodgerTheGreat> it's kinda like a journey
21:57:38 <RodgerTheGreat> indeed
22:01:01 <SimonRC> but, for the reason given above, I am avoiding it
22:01:38 <SimonRC> experience with many puzzles, text adventures, detective novels, etc shows that me and such puzzles really do not mix well
22:03:40 <RodgerTheGreat> ah, a shame
22:03:46 <RodgerTheGreat> pikhq had a lot of fun
22:05:46 <ehird_> SimonRC: zork!
22:06:21 <SimonRC> I bet he did
22:06:36 <SimonRC> I didn't get very far without you helping me
22:06:45 * ais523 is making an esolang-based text adventure
22:06:51 <SimonRC> kewl
22:06:57 <ais523> as in, it's written in C but all the puzzles are based on esolangs
22:07:03 <ais523> I haven't got very far, though
22:07:10 <ais523> there are puzzles based on INTERCAL, BF and Smetana
22:07:14 <SimonRC> ais523: be sure to take a look at the emacs text adventure "dunnet" for inspiration
22:07:29 <ais523> and there's an obvious location for a HOMESPRING-based puzzle, but I haven't figured out the details
22:09:49 <RodgerTheGreat> ais523: my puzzles involve some esolangs
22:10:04 <RodgerTheGreat> in fact the next level I'm planning makes devious use of several
22:11:37 <ehird_> RodgerTheGreat: tell me the answer to basil and i'll get on it
22:11:38 <ehird_> i could do it
22:11:41 <ehird_> i'm just not interested
22:11:44 <ais523> in most of mine, you're the IP
22:12:13 <ais523> and you have free will to move both backwards and forwards, sideways as well if it's a 2D lang or I've 2D-ised it for puzzle purposes
22:12:29 <ais523> but things like GOTO or COME FROM affect you like they would affect the IP normally
22:22:09 <SimonRC> cool
22:24:06 <ehird_> mrph
22:24:12 * ehird_ thinks of what language to implement befunge98 in
22:24:27 <ehird_> oh, and ais523, I do logread
22:24:28 <ehird_> ;)
22:25:26 * ais523 remembers dropping that message into the logs so you would see it, but can't remember what the message was about any more
22:25:42 <ais523> wow, /me can lead to really strange sentence constructions sometimes
22:28:44 * GregorR says "You should put all your messages in /me says"
22:29:01 * GregorR says, "That's what all the cool kids do."
22:29:02 * ehird_ > Test
22:29:09 * ehird_ > Yippee
22:29:38 * GregorR is better than you.
22:29:42 * GregorR is better than you in every way.
22:29:46 * SimonRC doubts this
22:29:57 * GregorR makes you feel like a sniveling little baby.
22:30:28 * ais523 * hey, my name is in Usenet bold now!
22:30:51 * ais523 * that's better than unmatched XML tags any time, right?
22:30:55 <GregorR> TO KILL GREGORR, TURN TO PAGE 81. TO SAVE THE PUPPY'S LIFE, TURN TO PAGE 132.
22:32:08 * ehird_ <- haskell
22:32:27 <GregorR> IM IN UR MONAD, ORDERING UR OPERATIONS
22:32:51 <bsmntbombdood> i'm in ur gonad, makin ur babies
22:32:58 <GregorR> D-8
22:36:26 <ais523> ehird_: what's that <- for?
22:36:39 <ais523> it's the assignment operator in INTERCAL, but somehow I don't think that's what you had in mind
22:37:37 <ehird_> ais523: haskell do-notation
22:38:34 <ais523> ah, do haskell, temporarily lambda ehird to the result?
22:40:00 <SimonRC> indeed, such a binding cannot be done as the last line of a do-block
22:46:58 <ais523> actually, <- does rather similar things in INTERCAL and Haskell
22:47:02 <ais523> that should be worrying
22:54:40 <ehird_> ais523: 'do ehird_ <- haskell; ...' --> haskell >>= (\ehird_ -> ...)
22:54:52 <ais523> ehird_: I know
22:55:23 <ais523> but getting it techically correct is a little hard without mentioning monads, which is what I was trying to do above
23:00:13 <SimonRC> ah, Tkhlpzyv feels much better after that reboot
23:00:42 <SimonRC> d-notation binding is slightly like CPS
23:01:48 <olsner> tkhlpzyv?
23:02:09 <SimonRC> my laptop
23:02:18 <olsner> oh, ok
23:03:03 <SimonRC> ooh, firefuckedup has offered to restore the previous session
23:03:31 <SimonRC> since this involves creating severeal hundered tabs at once, I now have "Flight of the Valkeries" stuck in my head
23:03:51 <SimonRC> da DA dada DAA DAA
23:04:00 <SimonRC> DAA daDA DAA DAA
23:04:01 <ehird_> fireuckedp
23:04:02 <SimonRC> DAA daDA DAA DAA
23:04:06 <SimonRC> DAA daDA DAA DAA
23:04:09 <SimonRC> etc
23:04:13 <ehird_> => #<procedure FIREUCKEDP>
23:04:21 <ehird_> * (fireuckedp 'firefox)
23:04:23 <ehird_> => T
23:06:49 <SimonRC> f{ire,{u{cked,p}}
23:06:51 <SimonRC> :-P
23:12:55 <ehird_> hmm, who is the 'amb' expert here again?
23:14:34 <ehird_> ah, marshmallows
23:14:35 <ehird_> but not here
23:30:31 <ais523> ehird_: it's basically just C with MAYBE and GO BACK
23:31:13 <ehird_> ais523: ?
23:31:15 <ehird_> yes
23:48:22 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
2008-04-06
00:05:37 -!- atsampso1 has changed nick to atsampson.
00:12:38 -!- Judofyr has quit.
00:24:31 -!- Tritonio_ has quit (Remote closed the connection).
00:44:34 -!- Tritonio_ has joined.
00:48:37 -!- jix has quit ("This computer has gone to sleep").
00:53:35 -!- carl has joined.
01:08:38 -!- tola_ has quit.
01:13:19 -!- tola_ has joined.
01:22:45 -!- carl has quit (Read error: 110 (Connection timed out)).
01:32:14 -!- tola_ has quit.
02:10:04 -!- ehird_ has quit ("This computer has gone to sleep").
02:10:04 -!- ehird has quit.
02:44:05 -!- Overand_ has joined.
02:45:17 -!- Overand has quit (Read error: 104 (Connection reset by peer)).
02:45:24 -!- Overand_ has changed nick to Overand.
03:14:57 -!- adu has joined.
03:19:17 -!- GreaseMonkey has joined.
03:29:15 -!- adu has left (?).
04:30:45 <SimonRC> bed-time
04:49:08 * pikhq is curious: how many people here went to their high school prom?
04:52:28 <lament> i didn't.
04:53:00 * pikhq is going to his senior prom. w00ts.
04:53:15 <pikhq> (and went to his junior prom)
05:06:03 <GregorR> LOOOOSER
05:06:16 <pikhq> GregorR: No, a loser goes to prom without a date.
05:06:29 <pikhq> I had a date the first time, and I have a girlfriend now.
05:18:32 <RodgerTheGreat> I'm back
05:27:22 <RodgerTheGreat> I went to my senior prom. I was glad I went at least once, I guess.
05:36:16 <pikhq> Congrats: you're ahead of the average computer geek.
05:37:54 * pikhq notes that this year, prom ought to be cheaper, by merit of *owning* a tux. . .
05:38:52 <RodgerTheGreat> I went with a friend, but I did have a date (and she was pretty cute, too.)
05:40:56 <RodgerTheGreat> overall, I'd say it was a fun experience, but not really my style. I'm not big on parties.
05:54:52 * Sgeo went to his high school prom
05:55:00 <Sgeo> Without a date :(
05:55:40 <Sgeo> I did ask a girl if she would go to the prom with me. She said something about how she wasn't sure if she was going :(
05:55:45 <Sgeo> She did end up going though
05:56:38 <RodgerTheGreat> ouch, yeah that's something like what happened with the first girl I asked.
05:56:52 <RodgerTheGreat> but, nothing ventured, nothing gained
05:57:16 <Sgeo> I kept wondering if I should keep waiting for her to get back to me
06:06:01 <pikhq> The girl I asked this year was apparently almost ready to ask *me*. XD
06:50:11 -!- Sgeo has quit ("Ex-Chat").
06:56:27 <lament> welcome to #esoteric-i-had-more-sex-in-high-school-than-you!
06:57:25 <pikhq> lament: Some people don't have a "alright, I'll date, wait a bit fuck, break up, repeat" attitude with relationships.
06:58:08 <lament> pikhq: some people commit suicide due to unrequited love
06:58:18 <RodgerTheGreat> I, however, agree with lament in the sense that this is bordering on becoming a pissing contest. As they say on somethingawful, "MY GIRLFRIEND"
06:58:57 <pikhq> RodgerTheGreat: It had been done with for almost an hour when he brought it back up. :p
06:59:04 <RodgerTheGreat> if you have a happy relationship, good for you. Not everyone needs to hear about it.
06:59:16 <GregorR> pikhq: That's what she said.
06:59:27 <pikhq> GregorR: Grrr.
06:59:31 * GregorR takes a bow.
06:59:42 <pikhq> Now you just reminded me of my Japanese teacher saying that in Japanese.
07:00:05 <pikhq> Needless to say, nobody was expecting it.
07:00:51 <pikhq> RodgerTheGreat: BTW, it's not so much a pissing contest as it is a dick-measuring contest. :p
07:01:27 <RodgerTheGreat> an inability to interpret straightforward metaphor and common figures of speech is not a virtue
07:02:03 <lament> pikhq: that's what she said.
07:02:12 <pikhq> lament: ... in bed.
07:02:29 <pikhq> Anyways, this has now degenerated into a series of cliches.
07:02:31 <lament> ... in the type system
07:02:38 <pikhq> Hmm.
07:02:46 <pikhq> A type system based on common cliches?
07:03:44 <RodgerTheGreat> cliches are memetic macros, serving to obviate active thought.
07:03:48 <RodgerTheGreat> discuss.
07:04:01 <pikhq> Kanojou ha sou itta.
07:04:06 <pikhq> (that's what she said.)
07:04:41 <RodgerTheGreat> palpable irony
07:04:42 <lament> RodgerTheGreat: TAKE OFF EVERY ZIG. MOVE ZIG.
07:04:43 <pikhq> Anyways, yes, that much is obvious.
07:04:59 <lament> PLEASE TAKE OFF EVERY ZIG ... IN BED
07:05:08 <pikhq> In fact, arguably, it is exactly the same in purpose, if not in form, as extensive psuedointellectualism.
07:05:22 <pikhq> (as most commonly seen in Basketweaving Monthly. ;p)
07:05:45 <RodgerTheGreat> what's interesting, though, is what seems to be an inherent tendency toward cliched behavior and thought patterns
07:06:19 <RodgerTheGreat> if this is the case, what drives the impetus for novel behavior, and what can we draw from this as a whole?
07:06:20 <pikhq> It's almost a herd mentality.
07:06:59 <RodgerTheGreat> pikhq: I would argue that it *is* a herd mentality. Humans are significantly more instinctual creatures than we like to think.
07:07:24 <pikhq> The impetus for novel behavior is, surely, a moderately rare, and therefore not terribly succesful, evolutionary strategy.
07:07:47 <pikhq> Sure, we see the rare genius: eccentric and brilliant.
07:07:52 <pikhq> How many of them breed?
07:08:26 <pikhq> (answer: not as many as those who follow the herding instincts of most of homo)
07:08:43 <RodgerTheGreat> Is meme-forging a trait that exists in all humans, and if so does this tendency come in many weights? Is there a genetic predisposition, a shared neurological background?
07:08:56 <lament> geniuses aren't a race, though. Genius is not genetic.
07:09:00 <pikhq> Or perhaps it's culturally based?
07:09:04 <lament> so it doesn't matter if they breed or not
07:09:05 <pikhq> lament: It could be a rare genetic mutation.
07:09:16 <lament> their children are normal.
07:09:31 <pikhq> Or it could be a damned rare application of persperation.
07:09:45 <RodgerTheGreat> Is it even important that these individuals reproduce? Perhaps the ideas they generate, memetic children so to speak, represent as great a degree of success as biological reproduction?
07:09:46 <GregorR> I don't think "genius" is well-defined enough that it can be associated with any particular genetic factor, upbringing, etc, etc.
07:10:01 <pikhq> Which would indicate that the lack of novel behavior is more of a cultural detail.
07:10:12 <lament> "exceptionally talented people" is a pretty well-defined group
07:10:24 <RodgerTheGreat> A tendency that requires a specific environment to blossom?
07:10:35 <pikhq> RodgerTheGreat: Perhaps.
07:10:37 <lament> you tend to notice when somebody's exceptionally talented (so they become world-class at some endeavour)
07:14:31 <RodgerTheGreat> well, good night everyone
07:14:45 -!- RodgerTheGreat has quit.
07:51:49 -!- oklopol has joined.
07:54:26 <oklopol> http://pastebin.com/m5c392293 <<< rational class with just multiplication implemented in oklotalk--
07:54:46 <oklopol> where oklotalk-- is the name for oklotalk with this retarded syntax
07:55:20 <oklopol> if anyone is at all interested, i would, naturally, love to explain
07:56:04 <oklopol> multiplies 4/9 by 3/2 and simplifies to 2/3
07:57:01 <oklopol> i'm surprised i'm actually capable of keeping on a project for over a day when i have a deadline
07:57:14 <oklopol> but i do like the results
07:57:19 <oklopol> now kebab ->
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:59:16 -!- oklopol has quit (Read error: 113 (No route to host)).
09:02:53 -!- oklopol has joined.
10:02:20 <oklopol> http://www.vjn.fi/pb/p441122612.txt pretty much complete
10:02:39 <oklopol> although i'm sure gcd fails on negatives, since i don't even know what it should return :P
10:02:48 <oklopol> to make the numbers work that is
10:03:16 <oklopol> perhaps there is a simple way, haven't given any thought to it, because this is just a small example of making new types in oklotalk
10:04:03 <oklopol> why is everyone so quiet now that THERE IS SOMETHING INTERESTING GOING ON FOR ONCE! :D
10:04:15 <oklopol> i know, i know, no one cares
10:04:24 <oklopol> i should eat something
10:04:31 <oklopol> the fucking kebab place was closed :<
10:13:02 <fizzie> Maybe you should then use a normal kebab place instead of a... uh, procreation-oriented one.
10:14:31 <GregorR> BUG ... SO ... STUPID ...
10:14:36 <GregorR> CAN'T ... BREATHE ...
10:14:44 <oklopol> well fucking kebab was really en euphemism for hot gay love.
10:15:07 <GregorR> Let's say you have a byte, arranged something like this: aaaaabbb, and you wanted to get just the 'a' part, multiplied by 4.
10:15:18 -!- ais523 has joined.
10:15:20 <oklopol> yarr
10:15:28 <oklopol> so you fibble a few rotations
10:15:34 <GregorR> If you're an idiot, like Gregor is, you would simply shift it right by 1, leaving some random-arsed part of the 'b' part still in tact BECAUSE YOU'D BE A DUMBFUCK
10:15:37 <oklopol> or do an andance
10:15:44 <oklopol> :D
10:15:53 <oklopol> haha lol, let's all point at GregorR and laugh
10:15:55 <GregorR> So, uh, JSMIPS works much better now >_>
10:16:13 * oklopol would never make such a dumb mistake
10:16:19 <GregorR> And it is beyond shocking how much actually worked with that bug in place.
10:16:35 <oklopol> btw. spent 3 hours yesterday just to do a add->try_add fix.
10:16:46 <oklopol> i mean, changed the variable add to try_add.
10:17:03 <GregorR> In what?
10:17:07 <oklopol> my oklotalk interp
10:17:10 <GregorR> Ah
10:17:17 <GregorR> And couldn't quite find every last instance? :P
10:17:22 <oklopol> these adds copy around function namespaces
10:17:28 <GregorR> (Shouldn't smart compilers be able to tell you these things?!)
10:17:58 <oklopol> and in almost every case, add works, but in some corner cases, it overwrites some variables with old ones, when you create an inner function in another function
10:17:58 -!- GreaseMonkey has quit ("nighty").
10:18:17 <oklopol> i kinda assumed after sk worked, scoping worked... but noooo
10:18:36 <oklopol> sk doesn't really test dynamic scoping though, i had separate tests for it
10:18:52 <oklopol> oklotalk has both <3
10:19:26 <oklopol> hehe, pressed on another channel's name by accident, for a second i though saying that got me kicked :P
10:19:41 <oklopol> "both? GET THE FUCK OUTTA HERE, SICKO"
10:19:48 <oklopol> but i guess it's not that weird
10:20:00 <oklopol> uhhh i need to pee, god i'm talkative today
10:20:01 <oklopol> ->
10:33:27 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
10:35:19 -!- oklopol has joined.
10:36:57 -!- oklofok has joined.
10:40:36 <ais523> GregorR: what was the bug?
10:51:22 <oklofok> ais523: he told already
10:51:33 -!- Judofyr has joined.
10:51:42 <ais523> oklofok: I only caught the second half of the explanation
10:51:56 <oklofok> GregorR: Let's say you have a byte, arranged something like this: aaaaabbb, and you wanted to get just the 'a' part, multiplied by 4.
10:52:03 <oklofok> sorry, i didn't see you join
10:52:10 <oklofok> this is what you missed
10:55:35 -!- oklopol has quit (Read error: 110 (Connection timed out)).
12:06:01 <ais523> '.1$#248'~'#0$#252'
12:06:15 <ais523> (translation of that operation into INTERCAL, hopefully correct)
12:22:56 -!- oklopol has joined.
12:23:24 -!- oklofok has quit (Read error: 113 (No route to host)).
12:55:29 -!- ais523 has quit (Read error: 110 (Connection timed out)).
13:19:39 -!- ais523 has joined.
14:19:33 -!- Iskr_ has joined.
14:20:54 -!- Iskr has quit (Nick collision from services.).
14:21:02 -!- Iskr_ has changed nick to Iskr.
14:38:54 -!- Tritonio_ has quit (Remote closed the connection).
15:13:14 -!- vixey` has joined.
15:25:08 <pikhq> GregorR: 'Nice'.
16:10:16 -!- ehird_ has joined.
16:39:14 <ehird_> doot to doot
16:39:57 <vixey`> hmmmmmmmmmmmm Hi ehird
16:42:36 <ehird_> <lament>welcome to #esoteric-i-had-more-sex-in-high-school-than-you!
16:42:53 <ehird_> you can't join
16:42:54 <ehird_> :(
16:45:09 <oklopol> pfft i had more than lament
16:46:35 <vixey`> was this during study time?
16:47:25 <oklopol> study time?
16:47:58 -!- RodgerTheGreat has joined.
16:51:24 -!- vixey` has quit ("Leaving").
16:51:58 -!- vixey has joined.
17:25:46 <ehird_> ais523: I had an idea for an operator like and/or
17:25:48 <ehird_> 'but'
17:25:59 <ais523> ehird_: there's a BUT in TriINTERCAL
17:26:13 <ais523> search the logs for its definition (I discussed it recently), or look at the C-INTERCAL manual
17:26:23 <ehird_> ais523: i'm talking about a logical operator though
17:26:24 <ais523> (it exists in CLC-INTERCAL too, but its docs say 'see the C-INTERCAL manual')
17:26:26 <ehird_> i guess:
17:26:27 <ais523> ehird_: it is
17:26:32 <ehird_> TRUE but TRUE = FALSE
17:26:33 <ais523> it can be used like AND or OR
17:26:38 <ehird_> FALSE but TRUE = TRUE
17:26:41 <ehird_> TRUE but FALSE = FALSE
17:26:44 <ais523> but it works on ternary logic levels
17:26:45 <ehird_> FALSE but FALSE = FALSE
17:26:56 <ais523> ehird_: you've just defined not-reverse-implies
17:27:10 <ehird_> ais523: well, that's too wordy. I call it 'but'
17:27:15 <RodgerTheGreat> ehird_: how is that not xor?
17:27:25 <ais523> RodgerTheGreat: TRUE xor FALSE = TRUE
17:27:26 <RodgerTheGreat> er, wait
17:27:28 <vixey> TRUE but FALSE = FALSE
17:27:32 <RodgerTheGreat> yeah, I missed one
17:27:37 <ehird_> hmm
17:27:41 <ehird_> SHOULD 'true but false' be false?
17:27:45 <ehird_> it seems so
17:28:03 <ais523> ehird_: just use the INTERCAL definition
17:28:11 <ehird_> ais523: naww, i want a binary definition
17:28:25 <ais523> ehird_: stop being so attached to binary!
17:28:36 <ais523> ternary is the NUMBER SYSTEM of the FUTURE
17:28:41 <ehird_> bah
17:28:46 <ehird_> i want
17:28:48 <ehird_> 'if not x but y'
17:28:52 <ehird_> to do the intuitive
17:29:34 <ehird_> *Main> not test `but` test1
17:29:34 <ehird_> False
17:29:35 <ehird_> darn
17:30:31 <ehird_> but :: Bool -> Bool -> Bool
17:30:31 <ehird_> True `but` True = True
17:30:31 <ehird_> True `but` False = False
17:30:31 <ehird_> False `but` True = False
17:30:31 <ehird_> False `but` False = False
17:30:49 <oklopol> and
17:30:50 <ais523> ehird_: `but` is just `and` in the not a but b situation
17:30:59 <ehird_> yes, that is true
17:31:00 <ehird_> i guess
17:31:01 <ehird_> :(
17:31:06 <ehird_> there's no new operators under the sun
17:31:16 <oklopol> sure there ae
17:31:16 <RodgerTheGreat> just ones that don't have common names
17:31:17 <oklopol> are
17:31:20 <ais523> ehird_: crz was pretty weird
17:31:29 <ais523> (the only logical operation available in Malbolge)
17:31:34 <vixey> there's 32 of them
17:31:38 <RodgerTheGreat> there are exactly 16 binary logical operators
17:31:40 <oklopol> anyway, the problem with but is it's not purely a logical operator, it has expectancy integrated
17:31:51 <oklopol> and expectancy doesn't occur in programming languages
17:32:06 <RodgerTheGreat> vixey: 2^4
17:32:39 <ais523> RodgerTheGreat: 2^4 == 6 in C
17:33:00 <RodgerTheGreat> that's because in C, a carat has nothing to do with powering
17:33:16 <oklopol> RodgerTheGreat: i'm sure ais523 didn't know that :D
17:33:27 <RodgerTheGreat> xor is, conveniently, binary addition without carries
17:33:36 <ais523> no, xor is subtract-without-borrow
17:33:41 <ais523> add-without-carry is sharkfin
17:33:46 <ais523> it's just that they happen to be the same in base 2
17:33:50 <RodgerTheGreat> ...
17:33:54 <vixey> :O
17:34:04 <ehird_> ooh, wait a second..
17:34:23 <ehird_> oklopol: what was your 'natural language OR' again?
17:34:25 <ehird_> NMOR or something
17:34:37 <oklopol> what
17:34:37 <ehird_> it was 'exclusive maybe or' or something lik ethat
17:34:48 <ehird_> oklopol: you said it a while back
17:34:48 <oklopol> i'm not sure what you are referring to
17:34:54 <ais523> I conclude that C's ^ is actually sharkfin, because it uses the same character as INTERCAL's sharkfin
17:35:02 <ais523> but C only works in binary, so it's hard to tell
17:35:03 <oklopol> hmm
17:35:05 <oklopol> did i now
17:35:10 <RodgerTheGreat> I guess that makes as much sense as anything
17:35:10 <ehird_> you said that natural language's "OR" was not the OR in programming languages
17:35:12 <ehird_> which is obvious
17:35:17 <ehird_> you said it was NMOR, or something like that
17:35:25 <ehird_> which was "Exclusive maybe or", or something like that
17:35:55 <oklopol> i don't know what you mean, sorry :D
17:36:18 <oklopol> what's "a while back"?
17:36:26 <ehird_> like
17:36:28 <ehird_> a few months
17:36:54 <oklopol> i was thinking i'd implement a natural language or in oklotalk, though, for instance (4 or 7) + 2 == 6 ==> true
17:37:17 <oklopol> this needs to be done in a dirty fashion, though, because oklotalk is a dirty language.
17:37:28 <oklopol> meaning it doesn't work 100%
17:38:00 <oklopol> once i do state lists, this should be possible, but that's not for this implementatino
17:38:04 <oklopol> implementation
17:38:06 <ehird_> oklopol: oh that's easy
17:38:09 <ehird_> that's like amb
17:38:18 <oklopol> ehird_: show it to me in a language
17:38:27 <ehird_> x = amb(4,7); if (x+2 == 6) { print("yay"); } else { amb(); }
17:38:35 <ehird_> 'yay' will be printed
17:38:38 <oklopol> the definition of or
17:38:53 <ehird_> oklopol: well, its isomorphic to 'amb'
17:38:53 <ehird_> http://www.randomhacks.net/articles/2005/10/11/amb-operator
17:38:55 <ais523> DO .1 <- #4 MAYBE DON'T .1 <- #7 DO .2 <- #2 DO (1000) NEXT DO ABSTAIN '.3~.3'~#1 FROM (1) (1) DO GO BACK DO GO AHEAD
17:38:57 <ehird_> there is an implementation
17:38:58 <ehird_> its ruby
17:39:00 <ehird_> but its very clear
17:39:02 <ais523> see, it's possible in INTERCAL too
17:39:11 <ehird_> oklopol: it uses callcc, though, so make sure you understand that ;)
17:39:17 <ehird_> ais523: is that using the continuation lib?
17:39:22 <ais523> ehird_: no
17:39:27 <ais523> it's using MAYBE/GO BACK/GO AHEAD
17:39:32 <ais523> Backtracking INTERCAL
17:39:35 <ehird_> oklopol: but yeah, http://www.randomhacks.net/articles/2005/10/11/amb-operator. it includes a simple explanation of it and a simple implementation
17:39:40 <oklopol> ehird_: i know all this, naturally, that doesn't necessarily make implementing or trivial
17:39:48 <ehird_> oklopol: you know amb?
17:39:48 <ehird_> well
17:39:52 <ehird_> you can implement or kind of well
17:39:55 <ehird_> if you can overload ==
17:39:57 <ehird_> and +
17:40:05 <ehird_> just make the + etc provide a temp object
17:40:06 <oklopol> well that doesn't sound too convenient
17:40:08 <ehird_> then == to morph itself correctly
17:40:09 <ehird_> using amb
17:40:13 <ehird_> oklopol: but really, look at amb
17:40:18 <oklopol> eh
17:40:22 <oklopol> the amb part is trivial
17:40:40 <oklopol> the problem is about generic operator type checking, at least in oklotalk
17:41:08 <ais523> amb((char*)x, (int*)y)+1
17:41:16 <oklopol> but anyway, i still don't know what you mean by NMOR
17:41:20 <ehird_> ais523: I made amb in C once
17:41:26 <ais523> ehird_: bet it couldn't handle that
17:41:27 <oklopol> ehird_: why should i look at amb, it's a fairly simple operator
17:41:27 <ehird_> It used a continuation lib using stack smashing
17:41:32 <oklopol> *function
17:41:32 <ehird_> and a macro TRY(x)
17:41:36 <ehird_> TRY(x) is like return x;
17:41:38 <ehird_> but you can backtrack to it
17:41:48 <ehird_> FAIL; backtracks to the latest TRY(x) and resumes from there
17:42:02 <ehird_> ais523: it could handle mostly anything
17:42:04 <ehird_> it was something like this
17:42:11 <ehird_> oh
17:42:14 <oklopol> the C implementation was quite interesting, i gotta admit
17:42:14 -!- Judofyr has quit.
17:42:14 <ehird_> ais523: but you needed to specify the argc
17:42:22 <ehird_> since c cannot do varargs without knowing that
17:42:30 <vixey> (amb x y z)
17:42:31 <ais523> ehird_: you still can't change the type of the return value
17:42:40 <ehird_> ais523: well, no :)
17:42:42 <ais523> which is needed for that expression to work
17:43:15 <ehird_> typedef int amb_t; amb_t amb(size_t argc, ...) {va_list ap; amb_t x; va_start(ap, argc); while (argc--) {x = va_arg(ap, amb_t); TRY(x);} FAIL;}
17:43:34 <ehird_> the end FAIL will mean that we exhausted the args, but maybe things can get better if some other thing changes
17:43:41 <ehird_> mostly it'll just terminate the program since there's no previous backtracks
17:43:46 <ehird_> anyway, here's an amb usage example in c
17:44:08 <ais523> ehird_: that's really bad C, because you didn't use va_end
17:44:10 <vixey> Scheme is a better place to describe AMB :/
17:44:23 <ehird_> int x = amb(3, 1, 2, 3); int y = amb(3, 4, 5, 6); if (x*y == 8) {printf("%i %i\n", x, y);} else {amb(0);}
17:44:29 <ehird_> ais523: just add it before the FAIL
17:44:30 <oklopol> vixey: that's the charm, of course
17:44:30 <ehird_> not hard
17:44:31 <ehird_> :)
17:44:36 <ehird_> ais523: i just typed that out now, anyway
17:44:49 <ehird_> vixey: But you need two callcc's in Scheme to do it
17:44:52 <ehird_> It's a little ugly
17:44:53 <ais523> ehird_: no it is hard, because you don't call va_end before TRY returns
17:44:59 <vixey> lol
17:45:02 <vixey> wtf
17:45:09 <ehird_> ais523: but that's alright, because we have to return there
17:45:12 <ehird_> ais523: think about it like a coroutine
17:45:14 <vixey> you -are- mad ehird
17:45:17 <ehird_> it is still running, just blocked
17:45:18 <ais523> ehird_: you have to call va_end before you return
17:45:21 <ais523> or the stack may be wrong
17:45:23 <ehird_> ais523: TRY() is not return
17:45:29 <ehird_> ais523: TRY() ACTS like return
17:45:32 <ais523> ehird_: but it can act like return
17:45:34 <ehird_> it in fact does some stack magic
17:45:39 <ehird_> ais523: it is implemented totally differently
17:45:43 <vixey> http://rosettacode.org/wiki/Amb
17:45:43 <ais523> and if you return while the stack is wrong, you /will/ end up jumping to a random location
17:46:06 <ehird_> vixey: I talked to marshmallows when he made that page.
17:46:09 <ais523> however, va_end is a NOP in most C implementations, which is why you never noticed
17:46:17 <ehird_> ais523: Sigh... http://homepage.mac.com/sigfpe/Computing/continuations.html
17:46:23 <ehird_> Read the implementation (it's old-style C though)
17:46:33 <ehird_> vixey: That AMB is horrific, and he agreed.
17:46:40 <ais523> ehird_: then you can get away with it, because you're using varargs not stdarg
17:46:47 <ehird_> ais523: No
17:46:55 <ehird_> the C is only old-style in that it casts malloc
17:46:57 <ehird_> and some other stuff
17:47:55 <ais523> ehird_: that definition of TRY may fail if va_end hasn't been called
17:48:06 <ehird_> ais523: did you look at the actual code that it calls?
17:48:13 <ais523> ehird_: yes
17:48:14 <ais523> yes
17:48:15 <ais523> yes
17:48:22 <ehird_> ok
17:48:23 <ehird_> ok
17:48:23 <ehird_> ok
17:48:24 <ehird_> :)
17:48:24 <ehird_> fine
17:48:26 <ehird_> i agree then
17:48:26 <ehird_> :p
17:48:30 <ehird_> but anyway
17:48:33 <ehird_> Haskell's amb is really nice
17:48:35 <ehird_> it's [] in the list monad ;)
17:48:39 <ehird_> well
17:48:39 <ehird_> it's id
17:48:44 <ehird_> foo <- [1,2,3]
17:48:45 <ais523> saving the context does not alter the stack, so va_end is still necessary!
17:48:48 <ehird_> and []
17:49:04 <ehird_> and what's more, the list it generates is the bag-of
17:49:08 <ehird_> to get just one, you use 'head'
17:49:15 <ehird_> so 'head' is the list monad's run :)
17:49:22 <oklopol> wonder if i can manage amb without continuations in oklotalk...
17:49:25 <ehird_> ais523: and here's the [] monad's >>=
17:49:33 <ehird_> xs >>= f = concatMap f xs
17:49:36 <ehird_> return x = [x]
17:49:40 <vixey> (>>=) = flip concatMap -- !!
17:49:43 <ehird_> yep
17:49:52 <vixey> return = (:[])
17:49:56 <ehird_> it's a really elegant way to use amb
17:50:02 <vixey> upside down robot ninja !
17:50:08 <ehird_> vixey: Pointless Haskell considered harmful in most cases.
17:50:17 <vixey> upside down robot ninja > "harmful"
17:50:24 <ehird_> amb in prolog is nice
17:50:26 <ehird_> (from the wiki:)
17:50:26 <ehird_> amb(E, [E|_]).
17:50:26 <ehird_> amb(E, [_|ES]) :- amb(E, ES).
17:50:33 <vixey> amb = member in Prolog yeah
17:50:36 <ehird_> but then prolog implementations practically have 'amb' built in
17:50:37 <ais523> ehird_: every single operation in Prolog is amb, more or less
17:50:41 <ehird_> ais523: exactly
17:50:57 <vixey> nah
17:51:00 <vixey> I disagree
17:52:14 <wildhalcyon> bah
17:52:16 <ais523> well, apart from cut, which is really anti-Prolog
17:52:26 <vixey> cut is very Prolog
17:52:28 <vixey> :P
17:52:35 <ais523> when doing a Prolog interp in Prolog, you have to use weird things like nonlocal cuts
17:52:56 <ais523> vixey: yes, it's a useful part of the language, but it goes horribly against the theoretical foundations it's built on
17:53:45 <ais523> ehird_: amb in Cyclexa: ('abc')^ is amb('a', 'b', 'c')
17:54:00 <wildhalcyon> Prolog's one of those cases where the theory is more interesting than the application.
17:54:19 <vixey> did you just math is interesting?!
17:54:36 <vixey> just say *
17:54:52 <oklopol> cut == !?
17:54:55 <vixey> I definitely agree
17:54:57 <ais523> oklopol: yes
17:55:00 <vixey> !/0 is cut
17:55:05 <EgoBot> Huh?
17:55:30 * vixey pets EgoBot
17:55:43 * oklopol spoons EgoBot
17:56:33 <vixey> implementing Prolog with cut using streams is very natural
17:57:02 <vixey> It's hard to do it with explicit choice point stack though :[
17:57:30 <ais523> vixey: why is that?
17:57:39 <ais523> Backtracking INTERCAL uses at least one choice point stack
17:57:46 <ais523> more if you have multiple threads
17:58:03 <ais523> and stack elements are refcounted so they can belong to more than one thread, allowing you to backtrack past a fork
17:58:25 <oklopol> (= w {
17:58:27 <oklopol> (-> (@ n [$any [1 2 3]]) n)
17:58:29 <oklopol> (-> (@ n 0) 4)})
17:58:31 <oklopol> (+ (w 2) (w 0))
17:58:33 <oklopol> ==> 6
17:58:33 -!- wildhalcyon has quit (Read error: 104 (Connection reset by peer)).
17:58:39 <oklopol> oklotalk does have something of an amb, for pattern matching
17:58:42 <vixey> just because I don't know what , does
17:58:48 <vixey> in terms of choice points
17:58:56 <oklopol> well, not amb
17:58:58 <ais523> vixey: it's a NOP
17:59:07 <ais523> a, b means run a, then run b
17:59:08 <oklopol> but i mean... whazzitcalled that declarativeness
17:59:14 <ais523> if a backtracks then b is never run
17:59:30 <ais523> if b backtracks then it can backtrack into a, because it was run earlier
17:59:31 <vixey> say you have,
17:59:47 <vixey> ( member(X,[a,b,c]) , member(Y,[x,y,z]) )
18:00:08 <ais523> then member sets X=a and sets two choicepoints
18:00:18 <ais523> then the other member sets Y=x and sets two more choicepoints
18:00:21 <ais523> I don't see the problem
18:00:25 <vixey> if you solve the LHS then the RHS, backtrack, RHS, backtrack, RHS, backtrack
18:00:34 <vixey> next you should redo member(X,[a,b,c])
18:00:52 <vixey> but once you do, how do you know to solve member(Y,[x,y,z]) next?
18:00:59 -!- wildhalcyon has joined.
18:01:01 <vixey> it was popped off the stack
18:01:08 <ais523> vixey: that's correct
18:01:25 <ais523> you put it back on the stack starting from the start, because the next thing that runs after member(X... is member(Y...
18:01:30 <ais523> because it follows it after the comma
18:01:50 <vixey> so the choice point stack also holds the entire rest of the program?
18:01:50 <ais523> imagine (member(X, http://en.wikipedia.org/wiki/Special:Search?go=Go&search=a,b,c],[d,e,f],[g,h,i), member(Y,X))
18:01:56 <vixey> haha
18:01:59 -!- oerjan has joined.
18:02:09 <ais523> vixey: well, reconstruct what I said
18:02:15 <ais523> the choicepoint stack holds continuations
18:02:32 <ais523> which do hold the entire rest of the program conceptually, but that can normally be optimised
18:02:46 <vixey> oh right
18:03:20 * vixey tries to write this out in code
18:03:26 <ais523> e.g. in INTERCAL you can deduce the rest of the program from the IP and the NEXT stack
18:10:06 <SimonRC> ais523: and the variables?
18:10:20 <ais523> SimonRC: they're stored in the continuation too
18:10:28 <ais523> but don't apply to deducing what the rest of the program is
18:10:28 <SimonRC> ok
18:10:59 <SimonRC> what about conditional jumps?
18:11:12 <SimonRC> unless I misconstrue your meaning
18:14:37 <ais523> SimonRC: the route through the rest of the program varies, of course, but all the information needed to be able to work out the place in the program where execution would have proceeded, and should proceed after a choicepoint returns, is available in the IP and NEXT stack
18:15:01 <SimonRC> ah, ok
18:15:04 <SimonRC> that makes sense
18:45:51 -!- jix has joined.
18:51:54 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
18:56:41 -!- jix has quit (Nick collision from services.).
18:56:53 -!- jix has joined.
19:19:39 -!- Judofyr has joined.
19:35:05 -!- Sgeo has joined.
19:50:37 -!- oerjan has quit ("leaving").
20:21:42 -!- AnMaster has quit (No route to host).
20:46:45 <wildhalcyon> So what's going on?
20:49:53 <ehird_> five things
20:51:47 <vixey> yes?
20:56:31 -!- ehird_ has changed nick to cboat.
20:56:39 -!- cboat has changed nick to ehird.
21:00:11 -!- oerjan has joined.
21:01:18 <SimonRC> wildhalcyon: well, I think that TechDawg's "Discarded" is art.
21:01:20 <SimonRC> Some disagree
21:01:30 -!- tola_ has joined.
21:01:45 <SimonRC> wildhalcyon: BTW, http://www.youtube.com/watch?v=cW44BpXpjYw
21:01:54 <ehird> line rider is lovely
21:03:15 <SimonRC> in fact, several of TD's things are art
21:03:45 <ehird> http://www.youtube.com/watch?v=rn8ULJGboOE&feature=related is hilarious
21:04:05 <SimonRC> "hillarious"?
21:04:19 <SimonRC> great, certainly, but n ot"hillarious"
21:06:41 -!- Tritonio_ has joined.
21:07:03 <wildhalcyon> I do enjoy linerider
21:08:00 <wildhalcyon> Its a great form of art, too. I agree SimonRC
21:08:38 -!- Quendus has quit ("Reconnecting").
21:08:49 -!- Quendus has joined.
21:09:18 <wildhalcyon> but the smb 1-1 level ehird posted was better
21:10:09 <ehird> SimonRC: I found it funny
21:11:06 <SimonRC> odd
21:11:12 <SimonRC> but not that odd
21:15:48 <wildhalcyon> This stuff is giving me a headache
21:15:58 <SimonRC> hm?
21:16:27 <wildhalcyon> I've been reading about "pure" object-oriented programming
21:16:35 <SimonRC> ok
21:16:56 <vixey> what is that?
21:17:00 <wildhalcyon> A lot of academic papers and things
21:17:06 <vixey> my favorite text on object orientation is AMOP
21:17:13 <wildhalcyon> do you have a link?
21:17:25 <vixey> Art of the Metaobject Protocol
21:18:31 <wildhalcyon> I think that might have been one of the ones I read yesterday, I'll have to double-check
21:18:58 * SimonRC drags out his usual text on what OO is: http://www.paulgraham.com/reesoo.html
21:19:07 <ehird> SimonRC: you just quoted paul graham
21:19:42 <SimonRC> It list 9 things that make up OO, and points out that no-one agrees which are the essence of OO
21:19:46 <SimonRC> ehird: yes, and?
21:19:46 <vixey> loool
21:20:03 <ehird> paul graham is a blabbering moron with nothing worthwhile to say who is wrong about just about everything he talks about
21:20:04 <SimonRC> actually, that is Jonathan Rees, not PG
21:20:14 <ehird> i wish i could be less harsh, but experience gives me no choice
21:20:23 <SimonRC> is he really that bad?
21:20:34 <ehird> SimonRC: IMO, yes.
21:20:39 <ehird> A Plan for Spam wasn't all that bad, though.
21:20:40 <wildhalcyon> I guess I'm glad I don't know who Paul Graham is
21:20:50 <vixey> http://www.dreamsongs.com/ObjectsHaveFailedNarrative.html
21:21:12 <SimonRC> wildhalcyon: I disagree. He is a good person to read if you disagree with him.
21:21:15 <SimonRC> maybe
21:21:16 <vixey> wildhalcyon: He wrote a couple very bad books about Lisp and some very seductive essays
21:21:29 <vixey> wildhalcyon: He also wrote Roots of Lisp which -is- very good and worth reading though
21:21:44 <SimonRC> vixey: "seductive"?
21:21:47 <wildhalcyon> Well, I've read up on lisp a bit.
21:22:01 <wildhalcyon> SimonRC, haven't you heard about the XXX-oriented paradigm?
21:22:04 <vixey> on lisp is rubbish
21:22:12 <vixey> you should burn it or delete
21:22:29 <SimonRC> wildhalcyon: "XXX-oriented"?
21:22:33 <oerjan> aiming for high penetration, i assume
21:22:42 <SimonRC> *groan*
21:23:14 <wildhalcyon> that was pretty bad
21:23:25 <oerjan> Thank you, thank you.
21:23:40 <wildhalcyon> SimonRC - there was an esolang proposed once in which operations were sex acts
21:23:42 -!- ais523 has joined.
21:23:52 <wildhalcyon> You know how folks are in this channel
21:24:09 <SimonRC> ooh, didn't encounter that one
21:25:14 <oklopol> :D
21:25:32 <oklopol> god it's fun debuggin' with vista
21:26:00 <oklopol> whole computer crashes for 10 minutes when it infloops
21:26:01 <wildhalcyon> it is?
21:26:05 <wildhalcyon> are you a masochist?
21:26:37 <oklopol> well si don't like waiting.
21:26:40 <oklopol> *i
21:26:45 <oklopol> so no, it's not actually that fun
21:27:57 <SimonRC> huh, an app can crash Vista?
21:27:59 <SimonRC> how?
21:28:54 <wildhalcyon> Existance?
21:29:10 <wildhalcyon> App says, "I exist, therefore I can crash Vista"
21:29:21 <ais523> SimonRC: I saw a 'review of Windows XP' that was a disguised version of a Vista review
21:29:38 <ais523> it was talking about how downgrading to XP added pre-emptive multithreading to your computer
21:29:52 <oerjan> Sum ergo Vistam, er...
21:31:08 <oklopol> SimonRC: dunno, but both my J interp and python interp do that quite often
21:31:19 <SimonRC> gaaah
21:31:25 <SimonRC> it should not be possible damnit
21:31:49 <oklopol> ais523: someone pasted it here
21:31:49 <vixey> ?!?
21:31:54 <vixey> I want J interpreters!
21:31:57 <oklopol> SimonRC: indeed it shouldn't
21:32:04 <vixey> lots of people seem to have written ones and not released them
21:32:07 <oklopol> j602
21:32:14 <vixey> ...
21:32:18 <vixey> you wrote that?
21:32:22 <oklopol> oh no.
21:32:36 <vixey> oh I see
21:32:36 <oklopol> i'm new to J.
21:32:47 <vixey> when you said "my J interp" you meant the one I'm using :P
21:32:48 <vixey> sorry....
21:32:58 <oklopol> well, it doesn't seem too hard, J isn't all that extendable
21:33:00 <oerjan> hm frago perhaps
21:33:14 <oklopol> vixey: i realized one might think i meant i'd coded them
21:33:36 <oklopol> but didn't fix
21:33:44 <oklopol> cuz i'm evil
21:34:19 <oerjan> Sum, ergo Vistam frangere possum
21:35:16 <oklopol> i still have no idea what the use of boxing is in J
21:35:26 <oklopol> perhaps one of you explain that
21:35:58 <vixey> changes the way things compose and operate
21:36:26 <vixey> also they are useful as tuples
21:36:27 <ais523> s/downgrading/upgrading/
21:37:35 <oerjan> ais523: i recall pasting that
21:37:48 <ais523> oerjan: I wasn't online at the time
21:38:04 <ais523> so it's just a happy coincidence
21:38:23 <oklopol> i vaguely recalled it was oerjan
21:38:34 <oklopol> but thought oerjan isn't really the pasting type
21:38:42 <oerjan> no you didn't! I do the vague recalling here!
21:38:47 <oklopol> :-----------)
21:39:34 <oklopol> before you know it, i'm also talking haskell gibberish and making pun out of nowhere.
21:39:38 <oklopol> *puns
21:40:42 <oerjan> as long as you don't vaguely recall talking gibberish about haskell puns
21:41:57 <oklopol> i don't seem to
21:42:08 <oklopol> or... perhaps i do
21:42:13 <oklopol> my memory is a bit vague here.
21:42:28 <oerjan> GAAH
21:42:41 -!- ais523 has set topic: http://bespin.org/~nef/logs/esoteric/ --> .pr POINT .pr STRING p=".pr POINT .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]).
21:42:58 -!- ais523 has set topic: http://bespin.org/~nef/logs/esoteric/ --> .pr UPPER .pr STRING p=".pr UPPER .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]).
21:43:46 <oerjan> ?_?
21:43:59 <ais523> oerjan: I'm making the topic portalbe
21:44:03 <ais523> s/albe/able/
21:44:17 <ais523> Of course, it requires your interp to be case-sensitive
21:44:44 <vixey> hahahahaha
21:44:45 <vixey> WOW
21:45:20 <ais523> sorry, I accidentally wrote the wrong stropping style first time
21:45:23 <oerjan> is this still ALGOL?
21:45:27 <ais523> oerjan: yes
21:45:43 * SimonRC wonders in what ways PG's thing on bosses is BS.
21:46:26 <SimonRC> "Lots more people could start startups if they wanted to. In fact, our business model depends on it. If the pool of founders was limited to a few rare geniuses, Y Combinator wouldn't work." <-- Proof by business model requirements.
21:46:30 <SimonRC> :-)
21:48:21 <oklopol> hmm... how many languages actually have extendable pattern matching?
21:48:28 <oklopol> i don't seem to recall any
21:48:40 <oklopol> haskell?
21:48:53 <ais523> oklopol: Perl clames to be able to, but that's done by putting a preprocessor on regexen
21:49:15 <oklopol> i didn't even know perl had pattern matching
21:49:19 <oklopol> then again, i don't really know it
21:49:19 <vixey> can you define extendable pattern matching?
21:49:26 <oklopol> oklotalk has it
21:49:29 <vixey> ....
21:49:40 <oklopol> my rational numbers can be pattern matched on (/ d n)
21:49:42 <vixey> I still don't have an oklotalk interpreter and user manuel
21:49:43 <vixey> :P
21:49:46 <oklopol> :D
21:49:56 <vixey> and I am waiting
21:49:59 <oklopol> i should have oklotalk-- by wednesday
21:50:05 <vixey> cool
21:50:09 <oklopol> well
21:50:25 <oklopol> should be --oklotalk-- or something, because it's both a subset *and* a different syntax.
21:50:30 <oklopol> but at least it's something...
21:50:36 <oerjan> haskell has had discussions on adding generalized "views" but they haven't made it into ghc at least
21:50:53 <oklopol> this must be my first project in years where i've actually been on one project for over 2 days
21:51:00 <oerjan> s/discussions/research papers/, i think actually
21:51:04 <oklopol> i've heard about view, ya
21:51:15 <vixey> well I can easily do this in a Lisp or Prolog but I think you mean something more general
21:51:26 <oklopol> for me, adding extendable pattern matching was a 15 minute scribble, but i guess you can think about it for years too :P
21:51:34 <oklopol> whatever suits the language designers
21:51:49 <vixey> you still haven't defined it :/
21:51:52 <oklopol> (okay, oklotalk does it fairly dirty)
21:51:56 <oklopol> defined?
21:51:57 <vixey> so I'm just guessing I know what you mean
21:52:00 <oklopol> oh
21:52:10 <oklopol> i can show my rational number class again
21:52:21 <oklopol> and explain where you can see extended pattern matching
21:52:55 <oklopol> http://www.vjn.fi/pb/p441122612.txt
21:53:11 <oklopol> <-- addition with another rat -->
21:53:11 <oklopol> (-> [$+ (/ dd dn)]
21:53:11 <oklopol> (= g (gcd dn n))
21:53:11 <oklopol> (rat (+ (* d (/ dn g)) (* dd (/ n g))) (/ (* dn n) g)))
21:53:33 <oklopol> addition, we match on the pattern [$+ (/ dd dn)], so addition by something that can be split by / into dd and dn
21:53:46 <oklopol> a rational number can be split this way, defined in the same class...
21:53:53 <oklopol> <-- pattern match on division -->
21:53:53 <oklopol> (-> [pb $/] [d n])
21:53:54 <oklopol> here
21:54:11 <vixey> })}) <-- I like this language already -->
21:54:14 <oklopol> pb means pattern match both, there are a few match tag kinda things like this
21:54:32 <oklopol> vixey: this is not actually the real syntax, although i'm beginning to like it as much as the original :P
21:54:44 <oklopol> this is much prettier.
21:54:51 <oklopol> but... not very concise
21:55:21 <oklopol> i guess i could make a hybrid of the old and the new
21:55:27 <oklopol> revolutionize everything
21:55:35 <oklopol> does sound like something i would do
21:56:02 <vixey> I was thinking about making a new language
21:56:09 <vixey> it's kind of rubbish though
21:56:14 <vixey> it seemed good earlier :/
21:56:33 <oklopol> actually, i'll change the whole tag system now, so stuff will prolly stop working for 6 hours now.
21:56:37 <vixey> I made a prototype anyway and it really needs lazyness
21:56:38 <oklopol> *- other now
21:56:46 <vixey> (which I have no idea how to implement)
21:56:48 <oklopol> vixey: SHOW IT
21:57:01 <oklopol> lazyness is fairly simple
21:57:09 <oklopol> you simply don't evaluate stuff until you have to
21:57:26 <oklopol> instead of evaluating the ast, you just pass it one
21:57:27 <oklopol> *on
21:57:52 <oklopol> not that i've ever done anything with lazyness, perhaps i should
21:57:56 <oklopol> layztalk
21:57:59 <oklopol> *lazytalk
21:58:19 <GregorR> http://www.codu.org/jsmips/test.html // can anybody say JSMIPS FIBONACCI?
21:58:22 <GregorR> That's right!
21:58:37 <GregorR> And JEBUS it's slow X-D
21:59:05 <oklopol> did you write that manually?
21:59:17 <oklopol> or was it that compileration you did some months ago
21:59:21 <vixey> http://rafb.net/p/8dTURb60.txt
21:59:22 <GregorR> http://www.codu.org/jsmips/test.c
21:59:31 <oklopol> yarr
21:59:32 <oklopol> it was
22:00:06 <GregorR> Not sure what you mean by "that compileration you did some months ago" :P
22:00:43 <oklopol> length([])=0.
22:00:43 <oklopol> length([_|xs])=1+length(xs). %% not sure about this (how could this generate lists of a given length?)
22:00:50 <oklopol> vixey: what do you mean?
22:00:51 <vixey> yes it can I tested it
22:00:57 <vixey> you would be able to go
22:01:03 <vixey> 3=length(x)
22:01:08 <oklopol> thought so
22:01:09 <vixey> and it would result in ()
22:01:14 <oklopol> aha
22:01:15 <oklopol> why?
22:01:18 <vixey> but also binding x to [g1,g2,g3]
22:01:26 <oklopol> shouldn't it result in each and every list of length 3?
22:01:32 <vixey> yes g for gensym
22:01:38 <vixey> they are new variables
22:01:47 <oklopol> okay
22:01:49 <oklopol> what's the prob
22:01:57 <vixey> well you can't write permutation([x|xs])=insert(x,permutation(xs)).
22:02:03 <oklopol> GregorR: indeed, i don't always speak human.
22:02:17 <oklopol> you can't?
22:02:18 <vixey> you have to write permutation(insert(x,xs))=[x|permutation(xs))].
22:02:26 <vixey> which is much less natural, and that's because of strictness
22:02:53 <vixey> (I tested both in my interp, the one I -wanted- to write loops but the other works)
22:03:17 -!- Sgeo_ has joined.
22:03:22 <oklopol> what's wrong with the first one?
22:03:39 <vixey> it doesn't terminate
22:03:53 <oklopol> well should it?
22:03:53 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
22:04:00 <vixey> I would rather it did :P
22:04:24 <vixey> the plan is that lazyness finds an evaluation order that terminates if one exists
22:04:37 <vixey> so it would be very nice to have that property in a logic lang
22:04:41 <oklopol> sure
22:04:45 <vixey> I don't know if it would translate across though
22:06:41 <oklopol> hehe, that rational number example is fun to run, 4000 lines of output
22:07:41 -!- Sgeo_ has quit (Read error: 104 (Connection reset by peer)).
22:07:48 -!- Sgeo has joined.
22:07:56 <vixey> ehird did you see it?
22:09:29 <SimonRC> GregorR: wait, MIPS under Javascript
22:09:39 <GregorR> Yup
22:10:43 <SimonRC> nice
22:10:51 <SimonRC> is MIPS a simple architecture?
22:12:33 <GregorR> Extremely.
22:12:38 <GregorR> MIPS I has about 60 operations.
22:12:55 <SimonRC> nicer than x86
22:13:13 <oklopol> you probably already told me, but how do you do the compilation?
22:13:18 <SimonRC> "rep strtostr" and all that
22:13:29 <SimonRC> oklopol: with a normale compiler I think
22:13:40 <SimonRC> then he has a translating program
22:13:53 <GregorR> oklopol: GCC
22:14:10 <GregorR> http://www.codu.org/jsmips/patches/
22:14:12 <GregorR> Target mips-jsmips
22:14:37 <GregorR> And make sure you use CFLAGS="-g -O0" when compiling newlib ... something in the -O2 version borks :(
22:16:01 <ehird> GregorR: slow? hardly
22:16:15 <ehird> runs in about 4 seconds in total over here
22:16:20 <ehird> it freezes a tiny bit at the start
22:16:24 <ehird> then runs without lag
22:16:28 <GregorR> The freeze at the start is loading the ELF.
22:16:33 <ehird> yeah
22:16:36 <ehird> but
22:16:36 <ehird> fast
22:16:39 <GregorR> The 4 seconds is much slower than a real MIPS X-P
22:16:55 <ehird> GregorR: If I write a c program will you test it on jsmips?
22:16:56 <ehird> :D
22:17:01 <ehird> I want to try ridiculous things
22:17:03 <ehird> Like mucking with memory
22:17:20 <GregorR> Mucking with memory is perhaps the /least/ ridiculous thing you could try.
22:17:26 <ais523> ehird: use that C continuation program
22:17:29 <ehird> ais523: OH YES
22:17:34 <ehird> ais523: I will do that!
22:17:45 <ehird> It'll just require a little modding
22:17:46 <GregorR> Make your own cross-compiler and try it yourself :P
22:17:48 <vixey> amb on MIPS? lol
22:17:53 <ehird> GregorR: I'll have a crazy program for you, stat :D
22:18:10 <vixey> can the thing to set/longjmp?
22:18:14 <SimonRC> ais523: oh gods not the one that memcopys functions about is it?
22:18:24 <ehird> SimonRC: memcpy's the stack actually
22:18:26 <ais523> SimonRC: not functions, just the call stack
22:18:27 -!- Iskr has quit ("Leaving").
22:18:43 <GregorR> vixey: I haven't tested it, but it's in the standard library - in the grand scheme of things it's not that complicated, so it ought to work.
22:18:46 <ais523> once you've done that, try a multithreaded C-INTERCAL program
22:18:52 <ehird> GregorR: This will be fun
22:18:57 <ais523> or one that uses the external calls system
22:19:10 <vixey> cool
22:19:21 <GregorR> If I published a binary cross compiler for x86, would you people compile your own stuff? :P
22:19:29 * oklopol starts tackling quicksort in oklotalk
22:19:52 * ais523 has qemu-mips over here
22:19:58 <ehird> GregorR: For OS X? Sure.
22:19:59 <GregorR> ais523: GIVE ME THE ROM
22:20:00 <ais523> but presumably that isn't identical to JS-mips
22:20:02 <GregorR> ais523: DO IT
22:20:04 <GregorR> ais523: I NEED THE ROM
22:20:05 <GregorR> :P
22:20:24 <ais523> GregorR: you mean from the qemu sourcecode?
22:20:35 <GregorR> I thought qemu-mips needed an external ROM?
22:20:46 <ais523> GregorR: no idea, I've never tried to run it
22:20:52 <GregorR> X-P
22:20:58 <GregorR> I did - wanted Windows NT 3 on MIPS.
22:21:05 <GregorR> But alas, no ROM, no fun.
22:21:47 <ehird> almost done evil.c :D
22:24:20 <ais523> GregorR: seems that qemu-system-mips can only run Linux on a simulated Malta board
22:24:30 <ais523> s/x/x,/
22:27:02 <ehird> GregorR: Almost done with the prog
22:28:19 <ehird> GregorR: okay
22:28:59 <ehird> GregorR: http://rafb.net/p/tpuvWN89.html
22:29:03 <ehird> compile with 'gcc foo.c -o foo'
22:29:06 * ais523 has the evil idea of implementing Brainfuck using a single one-byte auto variable to hold all stack elements and using stack-smashing
22:29:07 <ehird> i.e. nothing special
22:29:15 <ehird> GregorR: the expected output is at the end
22:29:26 <ehird> if you put it on your site, i want to seeee it :D
22:29:39 <ehird> ais523: take a look at my link: it implements a generator using the continuations
22:30:08 <ais523> ehird: yes, I looked at it before you said that
22:30:10 <ehird> TRY() is yield, and generator() ... FAIL is an implicit loop through the items
22:30:38 <vixey> are "generators" not just streams?
22:30:48 <ehird> vixey: yes
22:30:49 <vixey> it's python terminology right?
22:30:54 <ehird> no
22:31:06 <vixey> never heard it outside of there
22:31:09 <ehird> Generators first appeared in CLU (1975)[1] and are now available in Python[2], C#, and JavaScript[3]. (In CLU and C#, generators are called iterators.) Generators are also a prominent feature in the string manipulation language Icon.
22:31:15 <ehird> but the most common usage is in python yes
22:32:36 <ais523> incidentally, MAYBE COME FROM is a trivial way to do a generator in INTERCAL
22:32:46 <vixey> lol
22:32:50 <vixey> what does MAYBE COME FROM do?
22:33:03 <ais523> COMEs FROM a line, but after backtracking don't come from that line
22:33:20 <vixey> o_____O
22:33:36 <ais523> so exactly like the TRY in ehird's program, except in the calling not the called function
22:33:38 <vixey> do people write real programs with INTERCAL?
22:33:45 <ehird> vixey: INTERCAL is an esolang..
22:33:47 <ais523> depends on what you mean by 'real program'
22:33:55 <vixey> like webservers .. and stuf..
22:34:04 <ais523> there's an INTERCAL CGI script running somewhere
22:34:12 <ehird> vixey: INTERCAL is an esolang..
22:34:18 <ehird> This is #esoteric.
22:34:22 <ais523> and a CLC-INTERCAL version of a highly simplified wget
22:34:25 <vixey> why does that change anything ehird?
22:34:26 <ehird> You know. Like Brainfuck
22:34:36 <ehird> vixey: Would you ask if people made webservers with brainfuck?
22:34:53 <ais523> ehird: do people make webservers with brainfuck?
22:35:27 <ehird> ais523: :)
22:35:33 <ehird> PLEASE DO ASK
22:35:47 <ais523> PLEASE CREATE (1450) ASK
22:36:01 <ais523> PLEASE NEXT FROM [22:35]
22:36:05 <ais523> PLEASE CREATE (1650) ASK
22:36:11 <ais523> DO RESUME #1
22:36:16 <vixey> haha
22:36:30 <ais523> sorry I realised that the CREATE statement had to come /before/ ehird's message
22:36:31 -!- AnMaster has joined.
22:37:19 <oerjan> what you mean the compiler doesn't look for future CREATE commands? i sense a feature missing ;)
22:37:44 <ais523> oerjan: I thought of doing it like that, and decided the case where it didn't was more interesting
22:38:00 <ais523> after all, there are a range of ways to work around the problem in your own software
22:38:18 <ais523> and once I implement computed CREATE, it'll be possible to do things like DO CREATE .1 ABC DO ABC as a computed NEXT
22:38:36 <ais523> you'd lose all that if CREATE happened at compile-time
22:39:08 <oerjan> oh i didn't mean for it _always_ to happen at compile-time. perish the thought!
22:39:54 <vixey> ehird did you see my lang though :(
22:39:58 <ais523> so what's you're plan?
22:40:05 <ais523> allow some commands to work retroactively?
22:40:14 <ais523> DO CREATE (1850) ASK RETROACTIVELY #50
22:40:19 <oerjan> i have a plan?
22:40:34 <ais523> oerjan: I didn't realise you did, but I assumed you had something or other in mind
22:41:05 <ais523> (RETROACTIVELY would be basically impossible to implement in INTERCAL by the way; I think it might be able to solve the halting problem with the semantics I have in mind and therefore be truly impossible)
22:42:08 <oklopol> nothing wrong with that
22:42:40 <SimonRC> heh
22:42:45 <vixey> you could have it try to solve the halting problem and crash if it's too hard
22:42:46 <ais523> oklopol: but I can't implement any theoretically impossible commands in C-INTERCAL
22:43:00 <ais523> vixey: that would be INTERCAL's style, I agree
22:43:09 <ais523> but it would still be basically impossible in a compiled language
22:43:12 <oklopol> you can implement the non impossible parts of them
22:43:15 <oklopol> and make rest crash
22:43:22 <oklopol> every language has programs that cannot run through
22:43:22 <ais523> maybe I'll suggest it to CLC-INTERCAL's maintainer
22:43:39 <vixey> oklopol not true :P
22:43:44 <oklopol> every tc language
22:45:47 <ais523> oklopol: even oerjan's crazy HQ9+ extension?
22:46:08 <oklopol> :D
22:46:13 <ais523> it's not entirely clear whether that was TC, because any given program designed to be TC only had a 1 in 256 chance of working
22:46:17 <ais523> and errored the rest of the time
22:46:28 <ais523> like the random-bug in INTERCAL, but much worse
22:46:37 <oklopol> the language now specifies how to make it tc?
22:46:51 <ais523> oklopol: it had an X command
22:47:00 <ais523> specified as "Makes the language Turing-complete".
22:47:04 <oklopol> but the perl extension was just one wait to do it
22:47:08 <oklopol> right?
22:47:24 <oklopol> meaning you could do it so that it's always tc
22:47:24 <oerjan> right
22:47:35 <oklopol> i consider the extension a parametrizable language
22:47:45 <oklopol> because it's clear the language's semantics aren't complete as such
22:48:09 <oklopol> it's just a framework for another language to fill (be tc given X)
22:48:14 <oklopol> dunno
22:48:15 <ais523> I was going to suggest a language whose semantics were expandable at runtime, but CLC-INTERAL already does that (and C-INTERCAL to a much lesser extent)
22:48:21 <oklopol> qsort might work soon
22:48:22 <oklopol> exciting
22:57:54 <ais523> http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/sort.i <--- see if you can figure out how the flow control in this works, it took me ages to write
23:23:15 * Sgeo sees what looks like a mistake in http://qntm.org/?frontier
23:23:20 <Sgeo> "We appear to have gravity in here because the screw drive in the ship skeleton is accelerating upwards and pulling the ship up with it at nine point eight one metres per second per second."
23:23:25 <Sgeo> But they should be at a point above Jupiter where they feel equivelent gravity.. or am I missing something here
23:23:29 <Sgeo> does escape velocity being the same not mean that the gravity they feel is the same?
23:24:56 <oklopol> well i haven't read the article but they might be falling freely towards jupiter, rotating it or something
23:25:08 <oklopol> in which case no gravity is perceived
23:25:25 <Sgeo> (not an article, it's fiction)
23:25:27 <oklopol> but fuck, another problem with scoping :D
23:25:38 <oklopol> it's a piece of text, so i call it an article
23:27:25 <Sgeo> They started out in the basement, and jumped to equivelent gravitational potential energy somewhere above Jupiter, conserving momentum
23:39:35 -!- oerjan has quit ("Good night").
23:49:06 <SimonRC> escape velocity is proportional of the root of the intergral of gravitational potential out to infinity
23:49:25 <SimonRC> um, gravitational *field*
23:49:46 <SimonRC> there is no formula that directly relates escape velocity and gravitational field
23:51:14 <SimonRC> and, as oklopol pointed out, they might not be at a constant height
23:51:24 <SimonRC> and up might not be directly away from Jupiter
23:51:25 <SimonRC> etc
23:52:21 <SimonRC> if you really wanted to nitpick, you could point out that they are ignoring special relativity too
23:52:56 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
23:53:46 -!- oklopol has joined.
2008-04-07
00:00:41 <SimonRC> zzzzzzzzzzzzz
00:07:25 <oklopol> omg, there's a problem with the actual semantics, not the program
00:07:58 <oklopol> the problem is that i want objects to store state, but this effectively prevents recursion in certain cases
00:08:59 <oklopol> because i would have to start having my functions copy themselves as they evaluate, if they see they aren't unique in the program, and they start changing the namespace
00:09:07 <oklopol> actually, what's the problem, that's like 5 lines of code
00:09:17 <vixey> can't you just have closures?
00:09:29 <vixey> which close a mutable env
00:10:03 <oklopol> umm
00:10:17 <oklopol> a function is basically just that
00:10:24 -!- jix has quit ("CommandQ").
00:10:25 <oklopol> except it also holds some code
00:10:36 <oklopol> (= test {(-> $get n) (-> n [])}) (test 5) (get test) <<< this should return 5, because test stores its state
00:10:53 <oklopol> with my current implementation, this meant a function that recursively calls itself actually *calls itself*
00:11:28 <oklopol> the other simple way is to store no state
00:11:43 <oklopol> in which case this example doesn't work, but recursion works easily
00:11:56 <oklopol> *means
00:12:36 <oklopol> so basically, the semantics require the runtime environment to detect recursion and copy namespaces.
00:12:44 <oklopol> i think
00:12:56 <oklopol> at least that's the simplest way i can think of to implement it
00:13:06 <oklopol> and it is simple, so there is really no prob
00:17:56 -!- AnMaster has quit (Connection timed out).
00:18:20 <GregorR> Oh, shoot, forgot to put bin2arr.c in the jsmips dir 8-O
00:18:40 -!- AnMaster has joined.
00:26:49 <GregorR> ehird: Massive failure :P
00:27:52 <oklopol> okay, dirtiest solution ever, but it works
00:28:12 <oklopol> an object checks if it on the call stack when it's evaluated, and it copies its namespace if it is
00:28:13 <oklopol> :-)
00:28:30 <ehird> GregorR: Wanna see!
00:28:32 <ehird> Linky!
00:28:34 <oklopol> quicksort works yay
00:30:27 <oklopol> http://www.vjn.fi/pb/p643464352.txt
00:30:44 <oklopol> that is especially ugly without infix
00:32:37 <GregorR> If I had to classify this code on a scale of 1 to WTF, I'd give it WTF
00:35:10 <oklopol> :-)
00:35:16 <oklopol> i think it's fairly clear
00:35:30 <GregorR> Oh, I see the issue.
00:35:30 <oklopol> what's wtf about it?
00:35:43 <GregorR> This won't work with MIPS -O0, because it loads the 'c' variable off the stack every time it uses it.
00:35:48 <oklopol> oh
00:35:55 <oklopol> "this code"
00:35:56 <GregorR> So it gets overwritten and then loads some garbage variable off the stack :P
00:36:10 <oklopol> read "that code" and assumed you meant mine
00:37:32 <GregorR> I said "this code" X-P
00:37:37 <GregorR> You should mark c as a register.
00:37:53 <GregorR> Or rather, mark all of those as registers :P
00:38:38 -!- seabot has joined.
00:39:00 <ehird> Hmm
00:39:05 <ehird> Bringing seabot in here wasn't the best idea
00:39:07 <ehird> It uses ! as a prefix..
00:39:10 <ehird> Ergo:
00:39:11 <ehird> !help
00:39:11 <seabot> wtf is help?
00:39:13 <ehird> err
00:39:14 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:39:16 <ehird> That's not meant to happen
00:39:16 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
00:39:17 <ehird> :D
00:39:29 -!- seabot has quit (Remote closed the connection).
00:39:33 <GregorR> WTF /is/ help?
00:39:35 -!- seabot has joined.
00:39:36 <ehird> !help
00:39:36 <seabot> cdecl: cdecl
00:39:36 <seabot> help: help
00:39:36 <seabot> karma: karma- karma karma+
00:39:38 <seabot> meta: load reload unload
00:39:38 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:39:40 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
00:39:57 <ehird> !reload help
00:39:57 <seabot> Reloaded the help plugin.
00:39:58 <ehird> !help
00:39:58 <seabot> cdecl: cdecl
00:39:58 <seabot> help: help
00:39:58 <seabot> karma: karma karma+ karma-
00:39:58 <seabot> meta: load reload unload
00:39:59 <GregorR> I don't know whether MIPS is frozen, or writing over the stack is extremely slow for this emulator :P
00:40:00 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:40:02 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
00:40:07 <ehird> Hmm.
00:40:09 <ehird> !karma- EgoBot
00:40:09 <seabot> EgoBot's karma lowered to -1.
00:40:12 <ehird> :)
00:40:12 <EgoBot> Huh?
00:40:33 <EgoBot> Oh fuck you, seabot.
00:41:01 <ehird> heh
00:41:02 <ehird> :D
00:41:09 -!- calamari has joined.
00:41:19 <ehird> !cdecl int EgoBot
00:41:19 <seabot> declare EgoBot as int
00:41:21 <EgoBot> seabot's karma lowered to -∞. Yeah. That's right, bitch.
00:41:22 <EgoBot> Huh?
00:41:24 <ehird> !cdecl lame EgoBot
00:41:25 <seabot> syntax error
00:41:26 <ehird> aww
00:41:27 <ehird> :)
00:41:28 <EgoBot> Huh?
00:41:34 <calamari> hi
00:41:37 <vixey> hey
00:41:38 <GregorR> Hi calamari :P
00:42:26 -!- seabot has quit (Remote closed the connection).
00:42:31 -!- seabot has joined.
00:42:32 <ehird> seabot will use @ for a prefix now
00:42:33 <ehird> @help
00:42:34 <seabot> cdecl: cdecl
00:42:34 <seabot> help: help
00:42:34 <seabot> karma: karma karma+ karma-
00:42:34 <seabot> meta: load reload unload
00:42:59 <ehird> GregorR: Will you like it if I make it use egobfi for interpreting brainfuck? ;)
00:43:21 <GregorR> Only if it also interprets:
00:43:22 <GregorR> !help
00:43:26 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:43:28 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
00:43:37 <ehird> GregorR: It's not just an esolang bolt. :-)
00:43:40 <ehird> bot
00:43:45 <GregorR> Ah :P
00:44:23 <ehird> 'sea'bot shows its origins: a bot for ##free-c
00:44:25 <ehird> which is about C
00:44:26 <ehird> :p
00:44:29 <ehird> (which is arguably an esolang)
00:44:36 <calamari> !linguine
00:44:40 <EgoBot> Error: Program must have at least one command
00:44:57 <vixey> why does freenode need another C channel?
00:46:12 <calamari> is it a sign of senility when you can't remember how to program in an esolang you wrote yourself?
00:46:27 <ehird> vixey: there's only one: ##C
00:46:30 <ehird> and ##C has PoppaVic
00:47:08 <calamari> !linguine 1[0=72,0$,0+29,0$,0+7,0$,0$,0+3,0$,1=32,1$,0-24,0$,0+24,0$,0+3,0$,0-6,0$,0-8,0$,1+1,1$,1-23,1$]0
00:47:12 <EgoBot> Hello World!
00:48:18 <calamari> Gregor: what if a program is more than one line?
00:48:34 <ehird> calamari: isn't whitespace ignord in linguine?
00:49:03 <calamari> ehird: no
00:49:48 <calamari> !linguine 1[]1
00:49:54 <EgoBot> Error [line 1]: missing or invalid command
00:50:00 <ais523> calamari: not if you're Ben Olmstead
00:50:09 <calamari> !linguine 1[0=0]1
00:50:26 <calamari> !ps
00:50:30 <EgoBot> 1 calamari: linguine
00:50:32 <EgoBot> 2 calamari: ps
00:50:43 <calamari> !slow bots for $100
00:50:46 <EgoBot> Huh?
00:52:01 <calamari> !linguine 1[0=0]2\n2[0=0]0
00:52:06 <EgoBot> Error [line 1]: bad jump line number `2\n2[0=0]0'
00:52:25 <ehird> calamari: Upload it, specify a url
00:52:36 <ehird> http://rafb.net/paste/ put it here, choose 'raw'
00:52:40 <ehird> then !linguine THATURL
00:52:50 <calamari> iirc, my esobot could handle multiple line input :)
00:53:03 <ehird> !linguine http://rafb.net/p/2vhKkd81.txt
00:53:05 <ehird> !ps
00:53:08 <EgoBot> 1 calamari: linguine
00:53:10 <EgoBot> 2 ehird: linguine
00:53:12 <calamari> !kill 1
00:53:12 <EgoBot> 3 ehird: ps
00:53:13 <ehird> seeeee
00:53:14 <ehird> :)
00:53:14 <EgoBot> Process 1 killed.
00:53:15 <ehird> !kill 2
00:53:19 <ehird> !kill 1
00:53:20 <EgoBot> No such process!
00:53:22 <EgoBot> Process 1 killed.
00:53:32 -!- oklopol has quit (Read error: 113 (No route to host)).
00:53:59 <ehird> GregorR: Want a url for the thingy!
00:54:38 <GregorR> NO CAN GIVE, NOT WANT UPLOAD
00:54:42 <calamari> !linguine http://rafb.net/p/o4spP929.txt
00:54:44 <GregorR> I'll email you the test.html if you want.
00:55:01 <ehird> GregorR: Blargh :(
00:55:03 <ehird> Come on :p
00:55:54 <wildhalcyon> blah
00:56:14 <calamari> !linguine http://rafb.net/p/EYRZBj28.txt
00:56:16 <EgoBot> 99 bottles of beer on the wall,
00:56:37 -!- oklopol has joined.
00:56:37 -!- oklopol has quit (Remote closed the connection).
00:56:54 -!- oklopol has joined.
00:57:44 <calamari> !ps
00:57:48 <EgoBot> 1 calamari: linguine
00:57:50 <EgoBot> 2 calamari: ps
00:58:46 <calamari> interesting to be receiving output from an unlisted process :)
00:58:59 <GregorR> http://www.codu.org/jsmips/Nonworking%20Continuations.html
00:59:10 <GregorR> ehird: Enjoy watching the spinner spin.
01:00:25 <calamari> cool, test.html crashed my firefox
01:01:21 <GregorR> Works fine in mine.
01:01:38 <GregorR> Firefox is in fact my test platform.
01:02:05 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
01:02:37 <calamari> yeah.. not sure why but ff crashes randomly for me.. tried it again and it was fine
01:03:04 <calamari> I wonder if it has anything to do with running in 32-bit mode on the 64-bit kernel
01:03:18 <EgoBot> 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034
01:03:27 <GregorR> Wow
01:04:23 <calamari> took about 9 minutes for that
01:06:17 <GregorR> Yeah, but I was also running JSMIPS X-P
01:06:25 <calamari> you ported gcc, binutils, and newlib for your lang?
01:06:33 <ehird> calamari: no
01:06:36 <ehird> its not his instruction set
01:06:41 <ehird> he is just implementing it in JS
01:06:46 <ehird> and gcc already compiles to it
01:06:50 <GregorR> Because MIPS rulz.
01:07:16 <calamari> ahh bummer.. was hoping someone understood gcc backends
01:07:46 <ehird> oklopol: you will be interested in this!
01:07:55 <ehird> oklopol: I wrote a python function that takes a python 1 liner and expands it
01:07:59 <ehird> usable for e.g. bots
01:08:03 <ehird> it uses one syntax extension
01:08:10 <ehird> after a block thing like 'if foo:'
01:08:13 <ehird> if it sees {
01:08:19 <ehird> that means 'newline and increase indentation'
01:08:22 <oklopol> yarrrr
01:08:23 <GregorR> calamari: I once spent all of ten minutes trying to port GCC to MISC, then went "NOPE" and quit.
01:08:25 <ehird> if it sees the matching }, that means 'drop identation'
01:08:26 <ehird> so
01:08:41 <ehird> if foo: { if bar: { print "hi" } else: { print "bye" } } else: { print "wtf"; 2+2 }
01:08:43 <calamari> GregorR: yeah GCC is a pita
01:08:51 <ehird> but it is clever, so it doesn't break dict syntax or strings
01:08:54 <oklopol> ehird: why the :'s
01:09:02 <ehird> oklopol: because {} can be dictionary syntax
01:09:03 <oklopol> ":" always means indentation
01:09:07 <oklopol> right.
01:09:11 <ehird> ah
01:09:11 <ehird> well
01:09:13 <ehird> if foo: ... }
01:09:14 <ehird> looks ugly
01:09:15 <ehird> :D
01:09:20 <oklopol> a bit
01:09:21 <ehird> + its easier to parse this way
01:09:26 <oklopol> yep
01:13:00 <GregorR> World's most obscure insult: "I'm sure you've read the manual page on checking filesystems."
01:13:06 <ehird> hahah
01:13:14 <ehird> oklopol: i'll show you the function
01:13:18 <ehird> oklopol: but it's REALLY REALLY UGLY
01:13:19 <ehird> :D
01:13:23 <oklopol> do
01:13:29 <ehird> oklopol: http://rafb.net/p/GoqPxY60.txt
01:13:40 <oklopol> wow that's long
01:13:46 <oklopol> my oklotalk-- parser is shorter :-)
01:13:51 <ehird> usage:
01:13:54 <ehird> make_1liner(string)
01:14:03 <ehird> python-oneliner-thingy in, python code out
01:14:42 <oklopol> oh, iterative solution
01:14:51 <calamari> GregorR: not sure what the simplest target is that gcc supports, but one possibility is taking the asm output and compiling that for the desired lang
01:15:11 <GregorR> calamari: Probably MIPS I, and yeah, MIPS->MISC wouldn't actually be too tough.
01:15:14 <ehird> oklopol: can't do it via regexps
01:15:17 <ehird> oklopol: its really the only way
01:15:31 <oklopol> i meant iterative versus recursive
01:16:16 <calamari> GregorR: in any case I know it's not x86 :)
01:17:37 <ehird> oklopol: ah
01:17:44 <ehird> recursive would just be manual iterative in this case
01:18:26 <oklopol> what?
01:18:50 <ehird> oklopol: I mean, i'd just end up emulating the stuff I have in my iterative version
01:18:56 <ehird> i.e. manually transforming it into recursive form
01:19:01 <ehird> that is, it has no natural recursive form
01:19:05 <ehird> apart from translating the iterative form
01:19:12 <oklopol> 8|
01:19:17 <oklopol> a-ha..
01:19:19 <oklopol> lessee
01:19:39 <ehird> oklopol: hmm
01:19:40 <ehird> in my bot
01:19:47 <ehird> should declarations persist across @pythons?
01:19:48 <ehird> like
01:19:50 <ehird> @python a = 2
01:19:51 <ehird> @python a
01:19:51 <seabot> wtf is python?
01:19:55 <ehird> gives you 2
01:19:55 <oklopol> yeah
01:20:06 <ehird> oklopol: should it persist across bot runs? :D
01:20:17 <oklopol> in my opinion yes, because it's nice and floody to be able to use a bot as a repl
01:20:21 <oklopol> shhure: D
01:20:33 <ehird> oklopol: should the bindings be per-user or for everyone?
01:20:37 <oklopol> hmm
01:20:54 <oklopol> you could do something fun like have _XXX be for personal use
01:20:56 <oklopol> except
01:21:02 <oklopol> you'd need to parse the code
01:21:03 <oklopol> heh
01:21:12 <oklopol> _something_here that was
01:21:25 <ehird> oklopol: 'my' (from perl)
01:21:27 <ehird> my x = 2
01:21:28 <ehird> ;D
01:21:41 <ehird> you can get:
01:21:43 <ehird> my_x = 2
01:21:44 <ehird> though
01:21:56 <ehird> oklopol: oh, i know!
01:22:02 <oklopol> hmm, actually shouldn't be hard to do storing based on name
01:22:04 <ehird> user-specific, but you can access others bindings
01:22:10 <oklopol> how?
01:22:14 <oklopol> calamari.x
01:22:19 <oklopol> Sgeo.psox_variable
01:22:19 <ehird> something like that
01:22:24 <ehird> haha
01:22:25 <ehird> probably more like:
01:22:27 <Sgeo> Wha?
01:22:41 <ehird> bindings.Sgeo.psox_variable
01:22:45 <ehird> wait, I'll hijack _ for that
01:22:48 <oklopol> Sgeo: oklopol: /.*/ -> you don't get it -> don't need to
01:22:48 <ehird> _.Sgeo.psox_variable
01:23:07 <ehird> oklopol: so you can doo:
01:23:13 <oklopol> doo doo
01:23:14 <ehird> weird_func = _.oklopol.weird_func
01:23:32 <oklopol> mmyappy.
01:23:36 <Sgeo> We're having a public Python bot and we can store variables there under our name?
01:23:37 <oklopol> looks okay
01:23:48 <oklopol> Sgeo: something like that, except not yet.
01:23:48 <ehird> Sgeo: seabot will execute python, yeah
01:24:20 <calamari> "Frontends vary internally, having to produce trees that can be handled by the backend. The parsers are hand-coded recursive descent parsers."
01:25:10 <calamari> funny that they don
01:25:13 <calamari> 't use bison
01:25:36 <ehird> oklopol: instead of _, users
01:25:40 <ehird> users.oklopol.weird_func
01:31:16 -!- seabot has quit (Remote closed the connection).
01:31:33 -!- seabot has joined.
01:31:37 <ehird> @python 2
01:31:37 <seabot> UnpickleableError: Cannot pickle <type 'DB'> objects
01:31:40 <ehird> Darnit.
01:33:07 <ehird> @reload python
01:33:07 <seabot> Reloaded the python plugin.
01:33:10 <ehird> @python 2
01:33:10 <seabot> 2
01:33:12 <ehird> @python 2+2
01:33:12 <seabot> 4
01:33:14 <ehird> @python print 'hi'
01:33:14 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:33:29 <ehird> @reload python
01:33:29 <seabot> AttributeError: 'dict' object has no attribute 'close'
01:33:30 <ehird> @python print 'hi'
01:33:30 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:33:32 <ehird> @reload python
01:33:33 <seabot> AttributeError: 'dict' object has no attribute 'close'
01:33:40 <ehird> @reload python
01:33:40 <seabot> AttributeError: 'dict' object has no attribute 'close'
01:33:44 -!- seabot has quit (Remote closed the connection).
01:33:50 -!- seabot has joined.
01:33:52 <ehird> @python print 'hi'
01:33:52 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:34:35 <ehird> @python print 'hi'
01:34:35 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:34:37 <ehird> Weird..
01:34:45 <ehird> @reload python
01:34:45 <seabot> Reloaded the python plugin.
01:34:46 <ehird> @python print 'hi'
01:34:46 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:34:57 <ehird> @reload python
01:34:58 <seabot> Reloaded the python plugin.
01:34:58 <ehird> @python print 'hi'
01:34:58 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:35:31 <ehird> @reload python
01:35:31 <seabot> Reloaded the python plugin.
01:35:32 <ehird> @python print 'hi'
01:35:32 <seabot> SyntaxError: EOL while scanning single-quoted string (<irc>, line 1)
01:35:48 <ehird> @reload python
01:35:49 <seabot> Reloaded the python plugin.
01:35:49 <ehird> @python print 'hi'
01:35:50 <seabot> NameError: global name 'special' is not defined
01:35:58 <vixey> @python sucks
01:35:58 <seabot> NameError: global name 'special' is not defined
01:36:01 <ehird> @reload python
01:36:02 <seabot> Reloaded the python plugin.
01:36:03 <vixey> >O<
01:36:07 <ehird> vixey: justify that
01:36:09 <ehird> @python 'hi'
01:36:13 <ehird> @python print 'hi'
01:36:13 <seabot> AttributeError: 'MagicGlobals' object has no attribute '_print_'
01:36:16 <vixey> ehird: forced indentation of code
01:36:32 <ehird> vixey: sooo.. give me a use case for not indenting code
01:36:39 <vixey> during editing
01:36:51 <ehird> your editor must be horrible
01:37:15 <vixey> I've used lots of editors ...
01:37:55 <ehird> @reload python
01:37:55 <seabot> Reloaded the python plugin.
01:37:56 <ehird> @python 'hi'
01:38:07 <ehird> hm
01:38:08 <ehird> @python 2
01:38:08 <seabot> 2
01:38:10 <ehird> Very odd
01:38:19 <ehird> @reload python
01:38:19 <seabot> Reloaded the python plugin.
01:38:20 <ehird> @python 2
01:38:20 <seabot> 2
01:38:23 <ehird> @python 'a'
01:38:46 <ehird> @python {}
01:38:46 <seabot> {}
01:38:51 <ehird> @python if 1: { 2 }
01:38:51 <seabot> 2
01:38:55 <ehird> @python if 1: { 2 } else: { 3 }
01:38:55 <seabot> SyntaxError: invalid syntax (<irc>, line 3)
01:38:59 <ehird> hm, oh
01:39:58 <ehird> @reload python
01:39:58 <seabot> Reloaded the python plugin.
01:40:00 <ehird> @python if 1: { 2 } else: { 3 }
01:40:00 <seabot> AttributeError: 'NoneType' object has no attribute 'start'
01:40:39 <ehird> @reload python
01:40:39 <seabot> Reloaded the python plugin.
01:40:40 <ehird> @python if 1: { 2 } else: { 3 }
01:40:40 <seabot> 2
01:40:47 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:40:47 <seabot> AttributeError: 'MagicGlobals' object has no attribute '_print_'
01:41:21 -!- vixey has quit ("Leaving").
01:42:10 <ehird> @reload python
01:42:10 <seabot> SyntaxError: invalid syntax (python.py, line 82)
01:42:43 <ehird> @reload python
01:42:43 <seabot> Reloaded the python plugin.
01:42:45 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:42:45 <seabot> AttributeError: 'cStringIO.StringO' object has no attribute 'strip'
01:44:15 <ehird> @reload python
01:44:15 <seabot> Reloaded the python plugin.
01:44:16 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:44:16 <seabot> AttributeError: 'cStringIO.StringO' object has no attribute 'strip'
01:44:29 <ehird> @reload python
01:44:29 <seabot> Reloaded the python plugin.
01:44:30 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:44:30 <seabot> hello world
01:44:36 <ehird> @python 2+2
01:44:39 <ehird> @python 2+2
01:44:42 <ehird> ah.
01:46:08 <ehird> @reload python
01:46:09 <seabot> Reloaded the python plugin.
01:46:09 <ehird> @python 2+2
01:46:10 <seabot> 4
01:46:16 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:46:16 <seabot> hello world
01:46:20 <ehird> @python if 0: { print 'hello world'; 2+2 } else: { 3 }
01:46:20 <seabot> 3
01:47:49 -!- seabot has quit (Remote closed the connection).
01:47:55 -!- seabot has joined.
01:47:58 <ehird> @python if 0: { print 'hello world'; 2+2 } else: { 3 }
01:47:58 -!- seabot has quit (Remote closed the connection).
01:48:11 <ehird> oklopol: it's almost working :D
01:48:12 -!- seabot has joined.
01:48:18 <ehird> @python if 0: { print 'hello world'; 2+2 } else: { 3 }
01:48:18 <seabot> 3
01:48:22 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:48:22 <seabot> hello world
01:48:23 <seabot> 4
01:48:25 <ehird> oh yeah!
01:48:29 <ehird> @python print 'a'*500
01:48:34 <ehird> hm
01:48:36 <ehird> @python 'a'*500
01:48:42 <seabot> a'
01:48:47 -!- seabot has quit (Remote closed the connection).
01:48:53 -!- seabot has joined.
01:48:54 <ehird> @python 'a'*500
01:48:54 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:48:56 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:00 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:02 <ehird> haha whut
01:49:02 <ehird> :/
01:49:04 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:08 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:10 <seabot> a'
01:50:53 -!- seabot has quit (Remote closed the connection).
01:50:59 -!- seabot has joined.
01:51:02 <ehird> @python 'a'*500
01:51:02 -!- seabot has quit (Remote closed the connection).
01:51:23 -!- seabot has joined.
01:51:24 <ehird> @python 'a'*500
01:51:25 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:51:55 <Slereah> @python 'a'*500+'h!'
01:51:55 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:52:00 -!- seabot has quit (Remote closed the connection).
01:52:03 <Slereah> @python 'a'*500+"h!"
01:52:07 -!- seabot has joined.
01:52:09 <ehird> Slereah: sorry, its debug time
01:52:09 <ehird> :D
01:52:10 <ehird> v
01:52:10 <ehird> @python 'a'*500
01:52:11 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:52:16 <Slereah> Damn you robot!
01:52:30 -!- seabot has quit (Remote closed the connection).
01:52:35 -!- seabot has joined.
01:52:37 <ehird> @python 'a'*500
01:52:37 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:53:16 -!- seabot has quit (Remote closed the connection).
01:53:22 -!- seabot has joined.
01:53:26 <ehird> GregorR: How many characters will egobot write on one line?
01:53:27 <ehird> @python 'a'*500
01:53:28 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:53:39 -!- seabot has quit (Remote closed the connection).
01:53:52 -!- seabot has joined.
01:53:55 <ehird> @python 'a'*500
01:53:55 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:53:55 <seabot> aaaaaaaa'
01:54:20 <ehird> @python sys
01:54:21 <seabot> NameError: name 'sys' is not defined
01:54:22 <ehird> @python import sys
01:54:35 <Sgeo> @python help(sys)
01:54:36 <seabot> NameError: name 'sys' is not defined
01:54:40 <Sgeo> ..
01:54:42 <ehird> Sgeo: It's per user.
01:54:45 <Sgeo> python import sys
01:54:47 <ehird> @python help(sys)
01:54:48 <seabot> Help on built-in module sys:
01:54:48 <seabot> NAME
01:54:48 <seabot> sys
01:54:48 <seabot> FILE
01:54:48 <seabot> (built-in)
01:54:48 -!- seabot has quit (Excess Flood).
01:54:52 <ehird> need to add a delay
01:54:52 <ehird> :D
01:55:06 -!- seabot has joined.
01:55:09 <Sgeo> Can users share data?
01:55:20 <ehird> Sgeo: Soon you can do: 'users.ehird.sys'
01:55:24 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:55:24 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:55:28 <ehird> hmmm whut
01:55:41 <ehird> @reload python
01:55:42 <seabot> Reloaded the python plugin.
01:55:43 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:55:43 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:55:44 <Sgeo> {} are legal in Python?
01:55:45 <ehird> ahh
01:55:46 <ehird> i seeeee
01:55:51 <ehird> Sgeo: No, but I preprocess the code
01:55:54 <Sgeo> I don't think they .. oh
01:56:03 <ehird> It's a special syntax so that you can fit anything on one line.
01:56:08 <Sgeo> cool
01:56:18 <Sgeo> Although I don't think the #python people would like that
01:56:27 <ehird> Sgeo: #python people are asses
01:56:36 <ehird> and I'd like to see their suggestion for getting python code on one line
01:56:37 <ehird> it's the only way
01:56:40 <ehird> @reload python
01:56:40 <seabot> Reloaded the python plugin.
01:56:43 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:56:43 <seabot> IndentationError: unexpected indent (line 2)
01:56:55 <ehird> @reload python
01:56:56 <seabot> Reloaded the python plugin.
01:56:56 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:56:57 <seabot> IndentationError: unexpected indent (line 2)
01:57:07 <ehird> Oh, hmm.
01:57:07 <ehird> Odd.
01:57:23 <ehird> @reload python
01:57:23 <seabot> Reloaded the python plugin.
01:57:24 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:57:25 <seabot> AttributeError: 'MagicGlobals' object has no attribute '_getattr_'
01:57:29 <ehird> Yay
01:57:47 <ehird> @reload python
01:57:47 <seabot> Reloaded the python plugin.
01:57:48 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:57:48 <seabot> TypeError: 'NoneType' object is not callable
01:57:54 <Sgeo> ehird, what if one user wants to keep data from other users?
01:58:06 <RodgerTheGreat> looks like I've been missing out on fun
01:58:08 <ehird> Sgeo: why the fsck are they using a public bot to evaluate python
01:58:11 <ehird> @reload python
01:58:11 <seabot> Reloaded the python plugin.
01:58:12 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:58:13 <seabot> TypeError: 'NoneType' object is not callable
01:58:54 -!- calamari has quit ("Leaving").
01:59:13 <Sgeo> @python test = False; while(not Test): {print 'Hi'; test = True}
01:59:13 <seabot> NameError: name 'Test' is not defined
01:59:18 <Sgeo> @python test = False; while(not test): {print 'Hi'; test = True}
01:59:19 <seabot> Hi
01:59:36 <Sgeo> So it's something to do with calling a function in sys
01:59:44 <ehird> Sgeo: I know what the problem is.
02:00:06 <ehird> @reload python
02:00:06 <seabot> Reloaded the python plugin.
02:00:09 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
02:00:09 <seabot> AttributeError: 'module' object has no attribute 'sleep'
02:00:16 <ehird> Oh, duh
02:00:25 <ehird> @python import time; while True: { print 'ping'; time.sleep(3) }
02:00:34 <ehird> Ayup, just as I thought
02:00:45 <Sgeo> ..what's the problem now?
02:01:05 <wildhalcyon> Alright, I gotta go. I'll be back tomorrow night, and hopefully say some more.
02:01:07 <wildhalcyon> G'night!
02:01:13 <Sgeo> bye wildhalcyon
02:01:35 -!- wildhalcyon has left (?).
02:01:38 <ehird> @help
02:01:41 <ehird> Ayup
02:02:05 <Sgeo> hm?
02:02:06 <Sgeo> @help
02:02:39 -!- seabot has quit (Remote closed the connection).
02:02:44 <ehird> Sgeo: It isn't multi-threaded yet
02:02:50 -!- seabot has joined.
02:03:16 <ehird> @python import time; while True: { print 'ping'; time.sleep(3) }
02:03:16 <seabot> AttributeError: 'str' object has no attribute 'sender'
02:03:28 <ehird> @reload python
02:03:29 <seabot> Reloaded the python plugin.
02:03:32 <ehird> @python import time; while True: { print 'ping'; time.sleep(3) }
02:03:33 <seabot> ping
02:03:36 <seabot> ping
02:03:38 <ehird> woot
02:03:39 <seabot> ping
02:03:41 -!- seabot has quit (Remote closed the connection).
02:03:47 -!- seabot has joined.
02:03:55 <Sgeo> @python import sys; sys.exit(1)
02:03:56 -!- seabot has quit (Remote closed the connection).
02:03:57 <ehird> Sgeo: I THINK everything should work, all I have to do now is make it secure
02:03:57 <Sgeo> ..
02:04:00 <Sgeo> indeed
02:04:03 <ehird> And DON'T DO THAT
02:04:09 <ehird> Do you realise how annoying that is?
02:04:10 -!- seabot has joined.
02:04:14 <Sgeo> sorry
02:04:16 <ehird> :p
02:04:20 <Sgeo> How is it going to be secured?
02:04:25 <ehird> Sgeo: RestrictedPython
02:04:29 <ehird> http://pypi.python.org/pypi/RestrictedPython
02:04:42 <ehird> It gives you a function that you can use instead of compile()
02:04:53 <ehird> and then you just provide some hooks into the environment you eval it in (the globals)
02:04:58 <ehird> and those get called on things like e.g. importing
02:05:05 <ehird> @python users
02:05:05 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x11dd9d0>}
02:05:10 <ehird> @python users.ehird
02:05:10 <seabot> AttributeError: 'dict' object has no attribute 'ehird'
02:05:14 <ehird> oh, of course
02:05:37 <ehird> @reload python
02:05:38 <seabot> Reloaded the python plugin.
02:05:39 <ehird> @python 2
02:05:40 <seabot> TypeError: can't pickle function objects
02:05:44 <ehird> Darn
02:06:13 <oklopol> http://www.vjn.fi/pb/p234644461.txt <<< rational number class and quicksort on it
02:06:43 <oklopol> test\ratqs.ot ==> [[rat 0 5] [rat 1 3] [rat 34 82] [rat 2 4] [rat 3 5] [rat 5 6] [rat 61 48] [rat 8 3] [rat 93 23] [rat 8 1]]
02:06:49 <oklopol> >>> [0.0/5,1/3.0,34.0/82,2/4.0,3.0/5,5/6.0,61.0/48,8/3.0,93.0/23,8/1.0]
02:06:49 <oklopol> [0.0, 0.33333333333333331, 0.41463414634146339, 0.5, 0.59999999999999998, 0.83333333333333337, 1.2708333333333333, 2.6666666666666665, 4.0434782608695654, 8.0]
02:06:54 <oklopol> seems it succeeds
02:07:06 <ehird> @reload python
02:07:06 <seabot> Reloaded the python plugin.
02:07:12 <ehird> @python users
02:07:12 <seabot> SafetyError: Nuh-uh!
02:07:13 <Sgeo> oklopol, what language?
02:07:15 <ehird> hum
02:07:17 <oklopol> fun, i've never done a language with extendable types before
02:07:21 <oklopol> Sgeo: oklotalk--
02:07:25 <Sgeo> @python import sys; sys.exit
02:07:26 <seabot> SafetyError: Nuh-uh!
02:07:32 <ehird> Huh what
02:07:35 <ehird> Ohy
02:07:38 <ehird> Of course
02:07:50 <Sgeo> @python sys.version
02:07:50 <seabot> SafetyError: Nuh-uh!
02:07:56 <ehird> Sgeo: Yes yes yes
02:07:56 <ehird> shut up
02:07:57 <ehird> :)
02:08:18 <oklopol> ehird: once you're done, do realize you are supposed to be the one vaguely interested.
02:08:46 <ehird> oklopol: Yes
02:08:48 <ehird> I am going to look
02:08:54 <oklopol> yarrrr, no hurry
02:09:16 <oklopol> i think i'm going to take a break now, the current subset seems to work quite nicely
02:09:19 <ehird> @reload python
02:09:19 <seabot> Reloaded the python plugin.
02:09:20 <ehird> @python 2
02:09:21 <seabot> 2
02:09:22 <ehird> @python users
02:09:22 <seabot> <seabot.plugins.python.Users object at 0x11da5d0>
02:09:38 <ehird> @reload python
02:09:39 <seabot> Reloaded the python plugin.
02:09:40 <ehird> @python users
02:09:40 <seabot> SafetyError: Nuh-uh!
02:09:43 <ehird> huh whut
02:09:46 <oklopol> or i could just keep on working
02:09:49 <oklopol> dunno
02:09:53 <ehird> oic
02:10:05 <Sgeo> @python user.Sgeo
02:10:06 <seabot> NameError: name 'user' is not defined
02:10:08 <Sgeo> @python users.Sgeo
02:10:09 <seabot> SafetyError: Nuh-uh!
02:10:12 <Sgeo> ..
02:10:31 <ehird> Sgeo: Please shut up when I just found a bug and am trying to fixi t
02:10:32 <ehird> :)
02:11:12 <oklopol> @python "I WANNA TRY TOO"
02:11:18 <oklopol> @python print "I WANNA TRY TOO"
02:11:18 <seabot> I WANNA TRY TOO
02:11:29 <oklopol> @python for i in range(1000): {print "I WANNA TRY TOO"}
02:11:30 <seabot> NameError: name '_getiter_' is not defined
02:11:33 <oklopol> :-<
02:12:04 <ehird> yes yes yes
02:12:06 <ehird> gimme a second
02:12:06 <ehird> ;)
02:12:07 <Sgeo> ehird, how are you planning on preventing floods like that?
02:12:36 <ehird> Sgeo: Making output go sloooow.
02:12:37 <ehird> And a @kill
02:12:39 <ehird> @reload python
02:12:40 <seabot> Reloaded the python plugin.
02:12:43 <ehird> @python "HI"
02:12:47 <ehird> Hmm, thanks oklopol
02:12:49 <ehird> You found a bug
02:13:02 <ehird> @python users
02:13:02 <seabot> {}
02:13:07 <ehird> And 'nother
02:13:08 <Sgeo> @python str("Hi")
02:13:08 <seabot> 'Hi'
02:13:24 <ehird> @reload python
02:13:25 <seabot> Reloaded the python plugin.
02:13:28 <ehird> Sgeo: Totally bizzare
02:13:31 <ehird> @python 'hi'
02:13:31 <Sgeo> @python "Hi"
02:13:34 <ehird> ..
02:13:35 <ehird> Weird.
02:13:38 <ehird> @python users
02:13:39 <seabot> {}
02:13:40 <Sgeo> @python str("Hi")
02:13:40 <seabot> 'Hi'
02:13:48 <Sgeo> @python 2
02:13:48 <seabot> 2
02:13:51 <ehird> @reload python
02:13:52 <seabot> Reloaded the python plugin.
02:13:54 <ehird> @python users
02:13:54 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x11e7e10>}
02:13:54 <Sgeo> @python "Hi"
02:13:57 <ehird> @python users
02:13:57 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x11e7e10>, 'Sgeo': <seabot.plugins.python.MagicGlobals object at 0x11f8310>}
02:14:22 <Sgeo> @python dir(users.Sgeo)
02:14:22 <seabot> AttributeError: 'dict' object has no attribute 'Sgeo'
02:14:34 <Sgeo> @python dir(users['Sgeo'])
02:14:34 <seabot> NameError: global name 'getitem' is not defined
02:14:35 <ehird> @reload python
02:14:35 <seabot> Reloaded the python plugin.
02:14:36 <ehird> @python users
02:14:37 <seabot> {'ehird': <Big Brother>}
02:14:43 <Sgeo> @python
02:14:46 <ehird> @reload python
02:14:46 <seabot> Reloaded the python plugin.
02:14:47 <ehird> @python users
02:14:47 <seabot> {'ehird': <big brother>}
02:14:47 <Sgeo> @python users
02:14:48 <seabot> {'ehird': <big brother>, 'Sgeo': <big brother>}
02:14:49 <ehird> @python users.ehird
02:14:49 <seabot> AttributeError: 'dict' object has no attribute 'ehird'
02:14:56 <ehird> @python type(users)
02:14:57 <seabot> <type 'dict'>
02:15:02 <ehird> oshi-
02:15:03 <Sgeo> @python users['ehird']
02:15:03 <seabot> NameError: global name 'getitem' is not defined
02:15:17 <ehird> @reload python
02:15:17 <seabot> Reloaded the python plugin.
02:15:21 <Sgeo> if it's a dict, it should be like user['ehird'] not users.ehird
02:15:25 <Sgeo> </obvious>
02:15:30 <Sgeo> @python users
02:15:30 <seabot> BRING
02:15:30 <seabot> {'Sgeo': <big brother>}
02:15:33 <ehird> Sgeo: what do you think 'oshi-' means
02:16:29 <ehird> @reload python
02:16:29 <seabot> Reloaded the python plugin.
02:16:30 <ehird> @reload python
02:16:30 <seabot> Reloaded the python plugin.
02:16:32 <ehird> @python users
02:16:33 <seabot> NameError: global name 'getitem' is not defined
02:16:41 <ehird> oh
02:16:41 <ehird> ofc
02:17:17 <ehird> @reload python
02:17:17 <seabot> Reloaded the python plugin.
02:17:19 <ehird> @python users
02:17:19 <seabot> {'ehird': <big brother>}
02:17:22 <ehird> @python users.ehird
02:17:23 <seabot> AttributeError: 'dict' object has no attribute 'ehird'
02:17:35 <ehird> @python users.__class__
02:17:35 <seabot> SyntaxError: Line 1: "__class__" is an invalid attribute name because it starts with "_".
02:17:41 <ehird> ...
02:17:47 <ehird> Stupid RestrictedPython
02:18:36 <ehird> @reload python
02:18:36 <seabot> Reloaded the python plugin.
02:18:38 <Sgeo> @python users
02:18:38 <seabot> {'Sgeo': <seabot.plugins.python.MagicGlobals object at 0x11f8c30>}
02:18:38 <ehird> @python users
02:18:39 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x12270b0>, 'Sgeo': <seabot.plugins.python.MagicGlobals object at 0x11f8c30>}
02:18:46 <Sgeo> @python users['Sgeo']
02:18:46 <seabot> <seabot.plugins.python.MagicGlobals object at 0x11f8c30>
02:18:54 <Sgeo> @python test = 5
02:18:59 <ehird> @reload python
02:18:59 <seabot> Reloaded the python plugin.
02:19:01 <Sgeo> @python users['Sgeo']['test']
02:19:01 <seabot> KeyError: 'test'
02:19:03 <ehird> @python users
02:19:03 <seabot> {'ehird': <a big brother>, 'Sgeo': <a big brother>}
02:19:03 <Sgeo> gah
02:19:05 <ehird> @python users.Sgeo
02:19:05 <seabot> AttributeError: 'dict' object has no attribute 'Sgeo'
02:19:08 <ehird> fdfkgdfg
02:19:11 <ehird> Sgeo: just stop for a sec, k
02:19:48 * Sgeo wonders if he could help code somehow
02:19:58 <ehird> @reload python
02:19:58 <seabot> Reloaded the python plugin.
02:20:00 <ehird> @python users.Sgeo
02:20:00 <seabot> RuntimeError: maximum recursion depth exceeded
02:20:05 <ehird> @python users
02:20:05 <seabot> {'ehird': <a big brother>}
02:20:17 <ehird> @reload python
02:20:17 <Sgeo> Why was it recusing if I wasn't in there?
02:20:17 <seabot> Reloaded the python plugin.
02:20:19 <ehird> @python users
02:20:19 <seabot> {'ehird': <a big brother>}
02:20:21 <ehird> @python users.ehird
02:20:21 <seabot> NameError: global name 'name' is not defined
02:20:27 <oklopol> ehird: what do you do for protection?
02:20:28 <ehird> @reload python
02:20:28 <seabot> Reloaded the python plugin.
02:20:29 <ehird> @python users.ehird
02:20:30 <seabot> <a big brother>
02:20:51 <ehird> oklopol: I just ditched RestrictedPython. Now I'll protect it via __builtins__, modified globals, and __import__
02:20:58 <ehird> @python users.ehird.users
02:20:59 <seabot> {'ehird': <a big brother>}
02:21:01 <ehird> @python users.ehird.users.ehird.users
02:21:02 <seabot> AttributeError: 'dict' object has no attribute 'ehird'
02:21:04 <ehird> hee
02:21:06 <ehird> oh wait
02:21:06 <ehird> oshi
02:21:09 <oklopol> sounds possible
02:21:35 <ehird> @reload python
02:21:36 <seabot> Reloaded the python plugin.
02:21:37 <ehird> @python users.ehird.users.ehird.users
02:21:37 <seabot> AttributeError: 'MagicGlobals' object has no attribute 'users'
02:21:40 <ehird> @python users
02:21:40 <seabot> {'ehird': <a big brother>}
02:21:51 <ehird> Sgeo: this IS abusable -- you can modify the users dict how you please
02:21:52 <ehird> but it's __d
02:21:58 <ehird> so you have to do all this:
02:21:58 <Sgeo> @python users['Sgeo']
02:21:58 <seabot> <a big brother>
02:22:17 <Sgeo> __d?
02:22:18 <ehird> @python users.ehird._MagicGlobals__data
02:22:18 <seabot> {}
02:22:33 <ehird> @python users
02:22:33 <seabot> {'ehird': <a big brother>, 'Sgeo': <a big brother>}
02:22:36 <ehird> Well, whatever.
02:23:06 <ehird> @python def fact(n): { if n == 0: { return 1 } else: { return n * fact(n-1) } }
02:23:07 <Sgeo> @python type(users['Sgeo'])
02:23:07 <seabot> <class 'seabot.plugins.python.MagicGlobals'>
02:23:16 <ehird> @python fact
02:23:16 <seabot> <function fact at 0x11d2530>
02:23:19 <ehird> @python fact(2)
02:23:19 <seabot> NameError: global name 'fact' is not defined
02:23:22 <ehird> WTF
02:23:24 <ehird> @python fact
02:23:24 <seabot> <function fact at 0x11d2530>
02:23:28 <ehird> ..
02:23:32 <ehird> @python x = fact; x(2)
02:23:34 <Sgeo> @python users['ehird']['fact']
02:23:34 <seabot> <function fact at 0x11d2530>
02:23:37 <Sgeo> @python users['ehird']['fact'](5)
02:23:37 <seabot> NameError: global name 'fact' is not defined
02:23:41 <ehird> oh
02:23:42 <ehird> of course
02:23:52 <ehird> its erroring on the recursive fact
02:23:56 <ehird> @python users['ehird']
02:23:57 <seabot> <a big brother>
02:24:01 <ehird> @python dir(users['ehird'])
02:24:01 <seabot> ['_MagicGlobals__blab', '_MagicGlobals__data', '_MagicGlobals__users', '__builtins__', '__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__getitem__', '__hash__', '__import__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__str__', '__weakref__', 'special', 'stdout']
02:24:13 <ehird> @python users['ehird']['fact']
02:24:13 <seabot> <function fact at 0x11d2530>
02:24:15 <ehird> @python dir(users['ehird']['fact'])
02:24:16 <seabot> ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
02:24:21 <ehird> @python users['ehird']['fact'].func_dict
02:24:21 <seabot> {}
02:24:25 <ehird> bah
02:24:27 <ehird> i dunno why this is happening
02:24:30 <Sgeo> func_dict?
02:24:31 <ehird> @python users['ehird']['fact'].func_globals
02:24:32 -!- seabot has quit (Excess Flood).
02:24:44 -!- seabot has joined.
02:24:59 <ehird> @python def id(x): { return x }
02:25:04 <ehird> @python id(2)
02:25:04 <seabot> 2
02:25:10 <ehird> @python def void(): { return void }
02:25:12 <ehird> @python void()
02:25:13 <seabot> NameError: global name 'void' is not defined
02:25:15 <ehird> @python void
02:25:16 <seabot> <function void at 0x7b28b0>
02:25:18 <ehird> Sgeo: you see?
02:25:33 <ehird> @python print repr(void.func_globals)[:20]
02:25:33 <seabot> {'__builtins__': {'I
02:25:34 <Sgeo> yes, but what's func_dict supposed to be?
02:25:35 <ehird> @python print repr(void.func_globals)[:100]
02:25:36 <seabot> {'__builtins__': {'IndexError': <type 'exceptions.IndexError'>, 'all': <built-in function all>, 'hel
02:25:43 <ehird> @python print repr(void.func_globals)[100:200]
02:25:43 <seabot> p': Type help() for interactive help, or help(object) for help about object., 'vars': <built-in func
02:25:46 <ehird> @python print repr(void.func_globals)[200:300]
02:25:46 <seabot> tion vars>, 'SyntaxError': <type 'exceptions.SyntaxError'>, 'unicode': <type 'unicode'>, 'UnicodeDec
02:26:08 <Sgeo> everything that the function sees as global, I guess?
02:26:27 <Sgeo> @python def void: {return void}
02:26:28 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
02:26:34 <Sgeo> @python def void(): {return void}
02:26:46 <Sgeo> @python void.func_globals['void'] = void
02:26:51 <Sgeo> python void()
02:26:53 <Sgeo> @python void()
02:26:54 <seabot> <function void at 0x7ba1f0>
02:26:56 <Sgeo> :D
02:26:59 <ehird> hah
02:27:03 <Sgeo> ugly workaround though
02:27:35 <ehird> @python users.Sgeo.void
02:27:35 <seabot> AttributeError: 'MagicGlobals' object has no attribute 'void'
02:27:47 <Sgeo> @python users.Sgeo['void']
02:27:47 <seabot> <function void at 0x7ba1f0>
02:27:56 <ehird> @reload python
02:27:56 <seabot> Reloaded the python plugin.
02:27:57 <ehird> @python users.Sgeo.void
02:27:57 <seabot> KeyError: 'Sgeo'
02:28:02 <ehird> heh
02:28:03 <ehird> I keep wiping yours
02:28:09 <ehird> @python users.ehird
02:28:09 <seabot> <a big brother>
02:28:21 -!- Sgeo has changed nick to `Sgeo.
02:28:27 <`Sgeo> @python print "Hi"
02:28:28 <seabot> Hi
02:28:32 <ehird> @python users
02:28:32 <seabot> {'ehird': <a big brother>, '`Sgeo': <a big brother>}
02:28:35 <ehird> @python users['`Sgeo']
02:28:35 <seabot> <a big brother>
02:28:51 <`Sgeo> @python getattr(users, "`Sgeo")
02:28:52 <seabot> <a big brother>
02:28:59 -!- `Sgeo has changed nick to Sgeo.
02:30:11 <ehird> oklopol: Feed in your cellular automata thing
02:30:14 <oklopol> :D
02:30:16 <ehird> you wrote a function to do it
02:30:19 <oklopol> well i don't have it anywhere
02:30:20 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).
02:30:23 <ehird> but now, it can be multiple statements and everything
02:30:27 <oklopol> cool
02:30:28 <ehird> so it'll be a lot more convenient
02:30:38 <oklopol> i can rewrite one, or you can search it for me
02:30:42 <Sgeo> @python import sys; sys.exit
02:30:46 <ehird> oklopol: rewrite it to use the cool stuff
02:30:46 <ehird> :D
02:30:48 <oklopol> but i don't *have* it
02:30:51 <oklopol> :D
02:30:52 <Sgeo> @python import sys; sys
02:30:57 <Sgeo> ..
02:30:58 <ehird> Sgeo: yes yes it's buggy
02:30:58 <oklopol> hmm
02:31:04 <ehird> oklopol: here's the general rule:
02:31:07 <Sgeo> @python str("hi, I'm alive")
02:31:07 <seabot> "hi, I'm alive"
02:31:18 <ehird> foo: { bar } is foo:, with 'bar' as the indented block
02:31:23 <oklopol> what automaton do you want
02:31:24 <ehird> foo; bar is foo, a newline, and bar
02:31:28 <oklopol> i know the rules!
02:31:31 <ehird> but of course the newline is bumped up to the right indent
02:31:32 <ehird> and ok
02:31:39 <ehird> oklopol: how about that famous rule one
02:31:40 <ehird> thing
02:31:40 <ehird> :P
02:31:47 <oklopol> also i'm gonna write it in real python first, because i'm scared i might fail :<
02:31:56 <oklopol> rule one
02:31:57 <oklopol> hmm
02:32:22 <Sgeo> what's rule one?
02:32:39 <ehird> no
02:32:40 <ehird> not rule 1
02:32:43 <oklopol> rule one is trivial
02:32:45 <ehird> the turing complete one
02:32:48 <oklopol> oh
02:32:49 <oklopol> 110
02:32:54 <ehird> no
02:32:55 <ehird> a lower number
02:33:06 <Sgeo> what are we talking about?
02:33:14 <oklopol> 110 + a few identical ones
02:33:20 <oklopol> for instance the reverse
02:33:25 <oklopol> and two others, iirc
02:33:41 <oklopol> anyway, it's 110 alright
02:33:43 <oklopol> i'll do
02:33:43 <oklopol> now
02:33:49 <ehird> ok
02:33:50 <ehird> :)
02:34:40 <oklopol> oh, right
02:34:49 <oklopol> 110 grows in the wrong direction, i'll reverse it
02:35:20 <oklopol> so it's... 116
02:36:30 <ehird> oklopol: http://codespeak.net/pypy/dist/pypy/doc/sandbox.html
02:36:31 <ehird> I might use that
02:36:35 <ehird> because pypy is cool
02:36:35 <ehird> :D
02:38:56 <Sgeo> interacting through stdio? Why does that sound familiar.., </annoyingness>
02:39:20 <ehird> Sgeo: Huh?
02:39:46 <Sgeo> "instead, whenever it would like to perform such an operation, it marshals the operation name and the arguments to its stdout and it waits for the marshalled result on its stdin."
02:40:14 <ehird> Sgeo: oh. that's nothing like psox
02:40:21 * Sgeo was being silly
02:40:28 <oklopol> okay i'm implementing a bit verbosely
02:40:36 <oklopol> but i guess that's okay
02:44:54 <ehird> oklopol: can't wait
02:44:55 <ehird> :D
02:46:33 <oklopol> hmph, should be ready already
02:46:34 <oklopol> almost
02:48:56 <oklopol> so okay
02:48:59 <oklopol> it's
02:49:02 <oklopol> 1
02:49:09 <ehird> it's
02:49:09 <ehird> 5
02:49:10 <oklopol> asd someone show me some of it
02:49:17 <ehird> oklopol: ???
02:49:19 <oklopol> wanna see if it's right
02:49:25 <ehird> huh?
02:49:26 <oklopol> i don't wanna! :D
02:49:29 <oklopol> 110
02:49:31 <ehird> what are you talkng about
02:49:56 <ehird> http://en.wikipedia.org/wiki/Rule_110_cellular_automaton
02:50:02 <ehird> oklopol: try doing the 2,3 machine
02:50:03 <ehird> :p
02:50:31 * Sgeo actually helps someone with a regex question in #python ..
02:50:43 -!- tola_ has quit.
02:50:46 <ehird> ais523: you have a wikipedia article!
02:50:55 <ehird> http://en.wikipedia.org/wiki/Alex_Smith_%28The_Simplest_Universal_Computer_Proof_contest_winner%29
02:53:03 <ehird> oklopol: but anyhoo
02:53:04 <ehird> Rule 110
02:53:05 <ehird> show it!
02:53:10 <ehird> just define it
02:53:11 <ehird> like
02:53:17 <ehird> @python def rule110(foo): { ... }
02:53:35 <Sgeo> what are these rules?
02:53:41 <ehird> Sgeo: cellular automata
02:53:45 <ehird> Rule 110 is turing complete
02:53:55 <oklopol> GLAH it should work noq
02:53:56 <oklopol> now
02:54:15 <oklopol> i'm not really in a very fast coding mood right now
02:54:26 <oklopol> but... fuck if this takes over half an huor
02:54:28 <oklopol> hour
02:54:39 <ehird> oklopol: it should work? try it :D
02:59:31 <ehird> try it
02:59:35 <ehird> i need to go soon :(
02:59:40 <oklopol> okay
02:59:41 <oklopol> done
02:59:46 <ehird> ok
02:59:48 <ehird> try it in @python
02:59:48 <oklopol> now to convert...
03:01:10 <oklopol> pasiodjf
03:01:16 <oklopol> ; splits or terminates
03:01:52 <oklopol> @python def next_row(p,rule=110,spl=(0,-1)): {rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule))};if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]
03:02:03 <ehird> you missed a }
03:02:03 <oklopol> this is the function to get the next row
03:02:08 <oklopol> oh
03:02:10 <oklopol> ah
03:02:29 <oklopol> @python def next_row(p,rule=110,spl=(0,-1)):{rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule))};if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]}
03:02:33 <oklopol> but
03:02:36 <oklopol> i need a few others
03:02:50 <ehird> ok
03:02:51 <ehird> hurry
03:02:54 <ehird> i don't have much time :p
03:03:04 <oklopol> argh
03:03:42 <oklopol> @python def next(l,r):{r=reverse(r);for i in xrange(len(r)): {if r[i]==True and l==to_bits(i,3): {return True }};return False}
03:04:52 <oklopol> @python def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reverse(ret+[0]*(l-len(ret)))}
03:04:59 <ehird> oklopol: your original was a one-liner
03:05:00 <ehird> :p
03:05:08 <oklopol> and this could easily be made one
03:05:20 <oklopol> i just made it a bit more generic, for the fuck of it
03:05:21 <oklopol> @python row=[True]
03:05:30 <oklopol> @python row=next_row(row)
03:05:32 <oklopol> @python row
03:05:32 <seabot> [True]
03:05:35 <oklopol> :D
03:05:39 <oklopol> whhhell
03:05:52 <oklopol> @python next_row(row)
03:05:52 <seabot> NameError: global name 'to_bits' is not defined
03:05:56 <oklopol> oh.
03:05:57 <ehird> joy
03:06:02 <ehird> the broken global bindings
03:06:06 <oklopol> do you want me to onelinerize it?
03:06:38 <ehird> how long will that taeke
03:06:45 <oklopol> not that long
03:06:49 <oklopol> 4 minutes..?
03:06:49 <ehird> how long
03:06:51 <ehird> ah
03:06:51 <ehird> ok then
03:06:52 <ehird> maybe
03:07:54 <oklopol> done
03:07:59 <oklopol> now to your format
03:08:28 <ehird> oklopol: i hope its just one function
03:08:30 <ehird> otherwise itll break
03:08:39 <oklopol> i used inner functions
03:08:48 <oklopol> that okay?
03:08:52 <ehird> yes
03:10:04 <ehird> oklopol: ...
03:11:05 <oklopol> @python def next_row(p,rule=110,spl=(0,-1)):{def next(l,r):{r=reverse(r);for i in xrange(len(r)):{if r[i]==True and l==to_bits(i,3):{return True}};return False};def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reverse(ret+[0]*(l-len(ret)))};rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule)) };if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]}
03:11:13 <oklopol> hmph
03:11:16 <oklopol> didn't fit? :D
03:11:19 <ehird> oklopol: is that it?
03:11:20 <ehird> it ended at
03:11:22 <ehird> spl[1]]}
03:11:28 <ehird> if that's right, quick test it
03:11:28 <oklopol> yep
03:11:30 <oklopol> should be
03:11:30 <ehird> i have about 60 seconds
03:11:41 <oklopol> @python next_row([True])
03:11:47 <oklopol> :D
03:11:52 <ehird> @python print next_row([True])
03:11:52 <seabot> NameError: name 'next_row' is not defined
03:11:55 <oklopol> :P
03:11:56 <oklopol> okay
03:11:59 <oklopol> sec
03:11:59 <ehird> @python print users.oklopol.next_row([True])
03:11:59 <seabot> NameError: global name 'reverse' is not defined
03:12:04 <oklopol> adsölfkioarsgkj
03:12:05 <oklopol> FUCK
03:12:29 <ehird> @python def next_row(p,rule=110,spl=(0,-1)):{def next(l,r):{r=reversed(r);for i in xrange(len(r)):{if r[i]==True and l==to_bits(i,3):{return True}};return False};def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reversed(ret+[0]*(l-len(ret)))};rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule)) };if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]}
03:12:34 <ehird> @python print next_row([True])
03:12:34 <seabot> TypeError: argument to reversed() must be a sequence
03:12:38 <ehird> What
03:12:42 <ehird> PL
03:12:43 <ehird> OK
03:12:44 <ehird> gtg
03:12:48 <oklopol> wait wait
03:12:51 <ehird> oklopol: feel free to try and fix it in pure python
03:12:53 <ehird> ill run it tomorrow
03:12:53 <ehird> Bye
03:12:56 <oklopol> hehe
03:12:59 -!- seabot has quit (Remote closed the connection).
03:12:59 <oklopol> darn, so close
03:13:06 -!- ehird has quit ("This computer has gone to sleep").
03:13:10 <oklopol> it does already work in pure python.
03:13:12 <oklopol> oh
03:13:13 <oklopol> bye
03:33:52 -!- vixey has joined.
03:42:13 <Sgeo> hi vixey
03:42:36 <vixey> hello
03:42:51 <vixey> no rest for the wicked
03:43:22 -!- oklofok has joined.
03:47:44 <RodgerTheGreat> howdy
04:03:01 -!- oklopol has quit (Read error: 113 (No route to host)).
04:08:10 -!- AnMaster has quit (brown.freenode.net irc.freenode.net).
04:08:10 -!- Sgeo has quit (brown.freenode.net irc.freenode.net).
04:08:10 -!- Quendus has quit (brown.freenode.net irc.freenode.net).
04:08:11 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
04:11:45 -!- Parma-Quendion has joined.
04:11:45 -!- AnMaster has joined.
04:11:45 -!- Sgeo has joined.
04:11:45 -!- Quendus has joined.
04:11:45 -!- GregorR has joined.
04:12:04 -!- Quendus has quit (Connection reset by peer).
04:18:51 -!- oklofok has quit (No route to host).
04:45:01 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
04:46:41 -!- Sgeo has joined.
04:50:39 <RodgerTheGreat> so, what are people up to this evening?
04:50:48 <pikhq> Being quite happy.
04:51:01 <RodgerTheGreat> that's a very expansive response
04:51:04 <GregorR> (Due to drugs)
04:51:09 <RodgerTheGreat> ah
04:51:37 -!- Sgeo_ has joined.
04:52:34 <RodgerTheGreat> I'm grading quizzes and chipping away at my respect for humanity
04:52:50 <GregorR> 1) 1 + 1 = [ ]
04:52:51 <GregorR> 3
04:53:50 <RodgerTheGreat> I wouldn't be surprised at an answer like that, with this class
04:54:03 <RodgerTheGreat> I've had people routinely misspell their own names, so all bets are off
04:54:09 <GregorR> WOW
04:54:49 <RodgerTheGreat> it's a melange of painful ignorance and hilarity
04:55:37 <GregorR> Can you give us an example?
04:55:59 -!- Sgeo__ has joined.
04:56:00 <GregorR> s/us/Gregor/ :P
04:56:15 <GregorR> Sgeo{_{_,},}: Stop growing underscores :p
04:56:23 <Sgeo__> lol GregorR
04:56:35 <Sgeo__> The same page at popsci keeps causing me to freeze
04:56:36 <RodgerTheGreat> hm, well, I haven't run across any real doozeys yet in this batch, but there's been some pure gold in the past
04:57:10 <RodgerTheGreat> One guy wrote his first name and no last name on a paper, in a CLASS OF 93 STUDENTS. 5 people had that first name.
04:57:32 <RodgerTheGreat> wouldn't have made a difference though, because he got a zero on the assignment, too
04:57:40 <GregorR> Noyce.
04:57:41 <RodgerTheGreat> nearly a third of the class is retaking it
04:57:56 <Sgeo__> Why does http://www.popsci.com/scitech/article/2008-02/anonymity-experiment keep causing my computer to freeze?
04:57:59 <Sgeo__> Firefox 2.0.0.12
04:58:06 <Sgeo__> Flash9
04:58:13 <Sgeo__> Ubuntu 7.04
04:58:46 <RodgerTheGreat> we have a lot of quizzes that are just "write your name on a sheet of paper" and people still fuck it up, misspelling their names, writing illegibly (think first-grader with a crayon illegibly) and turning in the quiz... without their name on it.
04:59:35 <GregorR> So, uh, what sort of class is that?
04:59:50 <RodgerTheGreat> "Object Oriented Design"
05:00:10 <GregorR> Jebus. People somehow manage to get /to/ that class while still being dumbf***s?
05:00:29 <RodgerTheGreat> it's a painfully easy class- when I took it I got over 100% overall. This is why I can mock their failures.
05:01:08 <RodgerTheGreat> it's basically the first thing you take after passing basic "intro to Java" style stuff. Most of it isn't even CODING, it's just learning how to properly spec and design OO projects
05:02:22 <RodgerTheGreat> The writing skills really bring me to tears. I cannot BELIEVE people can get into college without being able to write a coherent sentence that doesn't look like it was scrawled by someone with cerebral palsy.
05:02:46 <GregorR> There's a whole class of people who get into CS but are too effing stupid to ever get it. I call them "gamers", although it's actually a bigger set. Anyway, usually they've all been weeded out by the time you get to any real courses, so this surprises me a bit.
05:03:13 <RodgerTheGreat> OOD *IS* the class that weeds these people out, as far as I can tell.
05:03:32 * Sgeo__ is in a database class.
05:03:33 <GregorR> Aaaaaaaaaaaaaah.
05:03:47 <RodgerTheGreat> Sgeo: are you an IT major or what?
05:03:57 <Sgeo__> No major, I'm non-matric
05:04:23 <Sgeo__> My college offers "Computer Information Systems", they shut down CS
05:04:35 <RodgerTheGreat> D:>
05:04:40 <RodgerTheGreat> good fucking lord
05:04:44 <RodgerTheGreat> that's horrible
05:04:46 <GregorR> I'm going to Purdue next year 8-D
05:05:56 <RodgerTheGreat> I have a friend from the UK who's taking Software Engineering because his university doesn't recognize CS as a field (what the christ), and he told me they're dropping their Data Structures course next year.
05:07:08 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
05:09:04 <Sgeo__> Maybe I should go to a different college?
05:09:17 <RodgerTheGreat> I'd highly recommend it
05:09:19 <GregorR> I know I wouldn't go to a college that didn't offer a Major in CS.
05:09:36 -!- Sgeo_ has quit (Read error: 110 (Connection timed out)).
05:09:37 <RodgerTheGreat> I can say that MTU, at least, has a CS department that doesn't seem to be spiraling into the shitter
05:09:55 <GregorR> I mean, every university hsa the right to offer or not offer whatever they feel like, but you also have the right to go too a university that DOES offer what you need.
05:09:57 <Sgeo__> I mean, CIS does have a programming branch or whatever it's called
05:10:40 <RodgerTheGreat> I'd say if you aren't going to a university that doesn't offer the major you're interested in, you're wasting your money.
05:10:54 <GregorR> Hm
05:10:59 <GregorR> Let me try to reduce the negatives there:
05:11:00 <Sgeo__> RodgerTheGreat, s/aren't/are/?
05:11:13 <RodgerTheGreat> argh
05:11:14 <GregorR> If you ARE going to a university that DOES offer the major you're interested in, you're wasting your money.
05:11:27 <RodgerTheGreat> yes, I inserted a superfluous negative there
05:11:48 <RodgerTheGreat> This is what happens when I get distracted in mid-thought
05:11:51 <Sgeo__> GregorR, I don't think those are equivelent
05:12:04 * Sgeo__ isn't sure though
05:12:10 <GregorR> Oh wait, you're right.
05:24:28 <RodgerTheGreat> is it bad that I tend to instantly form a negative opinion of someone who writes their name with a roman numeral/ number after it, such as "John Smith III" or "Ted Borglan the second"?
05:26:49 <RodgerTheGreat> it just strikes me as tremendously narcissistic.
05:43:51 <GregorR> "III" isn't, "the second" or "II" is (IMHO)
05:44:12 <GregorR> "The second" is the same as "Junior", so that's just pretentious.
05:44:53 <GregorR> But "The third"/"III" is not replaceable, and just part of the persons name. It's part of their full name, so that's how they write it.
05:45:01 <RodgerTheGreat> I fail to understand why pretentiousness doesn't carry past a single generation
05:45:47 <RodgerTheGreat> well, honestly writing a middle name in most non-legal or administrative cases is rather pretentious as well, so I'd argue that applies to "III"
05:46:19 <GregorR> Do you find somebody who writes Bob Forpthop Jr. pretentious? (Assuming of course that their father's name is Bob Forpthop)
05:47:42 <RodgerTheGreat> I'm not sure.
05:47:55 <RodgerTheGreat> possibly.
05:48:34 <GregorR> Heh - it seems to me like writing III after is no different (Jr. Jr. is just stupid), so the opinion should be the same if nothing else :P
05:49:36 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
05:50:00 <RodgerTheGreat> how about parents showing some creativity naming their children, avoiding the problem altogether?
05:50:12 <GregorR> Heh
05:50:15 -!- Judofyr has joined.
05:50:17 <RodgerTheGreat> If you want to keep a "family name", alternate generations or something
05:50:40 <GregorR> If I have a son, I'm naming him Jesus Muhammed God, just to offend everyone.
05:50:46 <RodgerTheGreat> nice
05:51:42 <Slereah> *Jesus Muhammed Yawhe
05:51:52 <GregorR> No, just YHWH
05:51:55 <Slereah> Jesus Muhammed Buddah Xenu Yahweh
05:52:05 <Slereah> HE WILL UNITE THE WORLD
05:52:25 <RodgerTheGreat> I'd probably be inclined to name a child something out of fashion but interesting, like Otto or Orville
05:52:30 -!- calamari has joined.
05:52:39 <RodgerTheGreat> For some reason the names coming to mind at the moment start with "O"
05:52:45 <RodgerTheGreat> hey, calamari
05:53:11 <calamari> hi RodgerTheGreat
05:53:18 <GregorR> There's a family name in my family that hasn't been used for, oh, ten generations or so.
05:53:19 <Slereah> Name him empty string
05:53:20 <GregorR> Dodofur.
05:53:38 <GregorR> If I have a son that I hate, I'll name him Dodofur.
05:54:08 <Slereah> How do you know that you hate him at birth?
05:54:21 <GregorR> Idonno, I guess that's the trick.
05:54:37 <RodgerTheGreat> if it pisses on you moments after birth, it could be a sign
05:54:39 <GregorR> However, I hate children, so it's pretty much "he exists" :P
05:55:07 <Slereah> Then don't have children.
05:55:14 <GregorR> Wasn't planning on it :P
05:55:27 <RodgerTheGreat> I tend to be very polarized about children. Some are polite and interesting and I like them, while others are evil little bastards
05:55:37 <Slereah> Get a vasectomy D:
05:57:40 <GregorR> Um.
05:59:43 <RodgerTheGreat> freeze some sperm ahead of time incase you change your mind. Best of both worlds!
06:00:39 <Slereah> No need.
06:00:47 <Slereah> Just adopt the kid at 7 year.
06:00:53 <Slereah> That way, less crying and shitting.
06:00:59 <GregorR> But then my genes won't promulgate :P
06:01:30 <GregorR> Of course, statistics tells us that your genes are extremely unlikely to promulgate beyond ten or so generations - and if they do, everyone in the nation will have them.
06:02:13 <Slereah> Plus, who cares.
06:02:24 <Slereah> When I'm dead, it won't matter!
06:02:38 * Sgeo__ thinks his genes should be spread
06:02:42 <Slereah> Facts indicate that you don't actually survive through your biological childrens.
06:02:56 <Slereah> I spread my genes everyday.
06:03:10 <Slereah> Of course, they mostly end up in the trash can
06:03:24 <Sgeo__> I meant, if more people had my genes, the world would be a better place, in my not so humble opinion
06:03:34 <RodgerTheGreat> I'd posit that being a good parent and raising your child is significantly more beneficial than spreading your genes
06:03:43 <RodgerTheGreat> fucking is easy, parenting is hard
06:03:54 <RodgerTheGreat> we need less of the former and more of the latter
06:04:12 <RodgerTheGreat> or at least birth control for the former
06:04:13 <GregorR> Hahahaha, another T-shirt worthy phrase from RodgerTheGreat X-D
06:04:19 <RodgerTheGreat> GregorR: :D
06:04:27 <Slereah> What if you fuck your child?
06:04:32 <RodgerTheGreat> unless you were making fun of me in which case :(
06:04:34 <GregorR> Then you're Australian.
06:04:43 <RodgerTheGreat> GregorR: read that article too, eh?
06:04:46 <Slereah> Zing!
06:04:58 <GregorR> Yup :P
06:06:15 -!- lifthrasiir has joined.
06:08:43 <RodgerTheGreat> GregorR: I don't think I should draw a picture to go with that quote, though
06:08:49 <GregorR> Hahaha
06:09:30 <RodgerTheGreat> although I'm now imagining a portal-style schematic diagram with "DO" and "DO NOT" panels
06:10:24 <RodgerTheGreat> DO NOT PUT THE BABY IN THE LOVELESS PARENT/CHILD RELATIONSHIP
06:10:44 <GregorR> That could use a bit more refinement :P
06:11:16 <RodgerTheGreat> be my guest
06:12:16 <Slereah> LOVE YOUR CHILD LIKE YOU LOVE YOUR PENIS
06:12:24 <Slereah> Of course, it could be misinterpreted.
06:12:41 <GregorR> Hahahahaha
06:12:52 <RodgerTheGreat> "vigorously, near your computer"
06:13:13 <pikhq> DO NOT PUT THE BABY IN THE MAN-PENIS RELATIONSHIP.
06:13:21 <RodgerTheGreat> sound advice
06:13:59 <pikhq> Hmm.
06:14:22 <pikhq> DO NOT PUT THE BABY IN THE ABORTION CLINIC.
06:14:43 <RodgerTheGreat> "IT IS MUCH TOO LATE YOU NOW REQUIRE A WOODCHIPPER AND/OR LARGE DOG"
06:15:06 * pikhq wonders what a large dog going through a woodchipper sounds like
06:15:21 <Slereah> Well, you could just sort of leave some pills lying around.
06:15:34 <RodgerTheGreat> pikhq: if you're an unwanted baby, victory
06:15:41 <GregorR> Are we discussing methods of infanticide?
06:15:42 <Slereah> and if you accidentaly drop him on the floor, we understand.
06:15:47 <Slereah> We're not judging you.
06:15:51 <RodgerTheGreat> haha
06:16:36 <Slereah> I wonder how many toddler's death are somehow premeditated.
06:16:58 <Slereah> It's not like it's hard to make them kill themselves!
06:17:06 <pikhq> GregorR: We're just discussing DO NOT PUT THE BABY.
06:17:13 <pikhq> Which lends itself to infanticide easily.
06:17:29 <GregorR> But it's "do NOT put the baby in the wood chipper"! :P
06:17:59 <RodgerTheGreat> DO NOT PUT THE BABY-> Brainstorm for bad baby locations->Infanticide
06:18:02 <pikhq> LMAO
06:18:13 <pikhq> DO NOT PUT THE BABY IN THE T4 GAS CHAMBER.
06:18:15 <Slereah> But well, some people just can't do thing simply.
06:18:21 <Slereah> Putting the baby in the freezer
06:18:39 <Slereah> What's the deal with that?
06:19:00 <RodgerTheGreat> "DO NOT PUT THE BABY IN THE MANDELBROT SET... SOMEWHERE." and just have a black-and-white image of the mandelbrot set.
06:19:02 <Slereah> Do you want to be reminded of your infanticide everytime you get some TV dinner?
06:19:27 <RodgerTheGreat> "woah, jesus I need to clean this damn thing"
06:19:33 <GregorR> Hahah
06:20:11 <pikhq> I can do much better than that.
06:20:19 <pikhq> Hmm.
06:20:33 <GregorR> If anybody wants to make new DNPTBs, feel free :P
06:20:52 <pikhq> Lessee here. . . I have devices that emit toxic gases, I have access to 120V AC, I have devices that irradiate items. . .
06:21:09 <pikhq> I have devices that rotate items at fairly high speeds. . .
06:21:18 <pikhq> Infanticide: because everything's a weapon.
06:21:50 <Slereah> Why do you need such high tech gizmos?
06:21:53 <Slereah> Two words :
06:21:56 <Slereah> Plastic bag
06:22:00 <RodgerTheGreat> GregorR: make a new DNPTB T-shirt with pikhq's phrase
06:22:05 <RodgerTheGreat> DO IT
06:22:08 <pikhq> :D
06:22:25 <pikhq> Slereah: One word: knife.
06:22:28 <RodgerTheGreat> Slereah: gladware, baby-size
06:22:32 <GregorR> I don't want to make T-shirts that could potentially be taken to be a statement on abortion.
06:22:37 <RodgerTheGreat> pikhq: one word: rock.
06:22:41 <Slereah> A knife would be too suspiscious
06:22:51 <pikhq> RodgerTheGreat: One word: drop.
06:22:57 <Slereah> If you have knives lying around, it's a little suspiscious.
06:23:06 <Slereah> Plastic bag is okay though
06:23:13 <RodgerTheGreat> pikhq: half of the time that just makes them retarded
06:23:17 <pikhq> Slereah: So, *every kitchen* is suspicious?
06:23:28 <pikhq> RodgerTheGreat: I have yet to specify a height.
06:23:30 <Slereah> Well, if the knives are lying on the floor!
06:23:31 <RodgerTheGreat> retarded babies get old real fast, I'd imagine
06:23:36 <pikhq> I was thinking 'Empire state building'.
06:23:58 <Slereah> Most people store their knives in drawers, or at least on high tables
06:24:01 <RodgerTheGreat> hm. well, in that case the weapon is really the building, no?
06:24:09 <pikhq> No, the weapon is gravity.
06:24:24 <pikhq> Slereah: Fine, fine.
06:24:41 <pikhq> Hmm. Rat poison?
06:24:52 <pikhq> (that's cruel. Even for someone talking about infanticide)
06:24:57 <RodgerTheGreat> Slereah: I store my knives in a colorful baby-height pile of children's toys and stuffed animals
06:24:59 <Slereah> Only if you have rats!
06:25:17 <RodgerTheGreat> DO NOT PUT THE BABY IN ROOM 101
06:25:52 <pikhq> DO NOT PUT THE BABY IN THE DISTOPIA.
06:25:57 <pikhq> s/DIS/DYS/
06:26:29 <RodgerTheGreat> funetic spelings r fun
06:26:42 <Sgeo__> DO NOT PUT THE BABY ON 4CHAN
06:26:46 <RodgerTheGreat> "grate" might've been more amusing there
06:27:31 <RodgerTheGreat> this is a really nifty painting: http://img.waffleimages.com/d89ca2727870ca4377777eab22885e7c611992dd/daim2.jpg
06:42:29 <Sgeo__> Bye all
06:42:51 -!- Sgeo__ has quit (Remote closed the connection).
07:04:18 -!- GreaseMonkey has joined.
07:15:04 <RodgerTheGreat> 'night all
07:15:17 -!- RodgerTheGreat has quit.
07:45:51 -!- jix has joined.
07:48:40 <GregorR> RISCy men do it with their ARMs.
07:55:10 <olsner> harr harr
07:57:37 -!- Judofyr has quit.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:12:01 -!- calamari has quit ("Leaving").
08:41:39 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).
08:46:07 -!- Iskr has joined.
09:55:50 -!- olsner has quit (Read error: 110 (Connection timed out)).
10:10:43 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
10:24:07 -!- jix has quit ("This computer has gone to sleep").
12:09:45 -!- ais523 has joined.
13:03:58 -!- timotiis has joined.
13:37:08 -!- Corun has joined.
13:54:12 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
14:19:58 -!- sebbu2 has joined.
14:25:22 -!- Judofyr has joined.
14:29:11 -!- sebbu has quit (Read error: 113 (No route to host)).
14:29:11 -!- sebbu2 has changed nick to sebbu.
14:42:43 -!- ehird has joined.
14:43:02 * SimonRC ponders...
14:43:25 <SimonRC> xkcd should do a comic entitled "My Hobby: breaking the fourth wall"
14:43:41 <SimonRC> the character would be breaking the fourth wall in the wrong way of course
14:44:13 <SimonRC> e.g. thinking it is a movie, or a book, or maybe just "talking to the camera" in the wrong direction.
14:59:38 -!- jix has joined.
15:08:48 <ehird> Hello, wold.
15:09:09 <ehird> e ruytrryt uighilfghnm,.bvcn,bmnvcnm,./mnbvm,.mnbvcncxzcvzccvjkhjj'l;kjhjlhfgjffdsghjhgdsfghjkdfxghjfdsghjkoopiuytyuuyt
15:09:13 <ehird> Sorry, that was me cleaning my keyboard.
15:10:53 <Slereah> SimonRC : No, he should not.
15:18:45 <SimonRC> ehird: http://www.bash.org/?52
15:21:47 <ehird> :)
15:24:44 <ehird> I regularly destroy my todo.txt when cleaning my keyboard
15:25:03 <ehird> It turns from 'Do blah blah blah blah blah blah' into 'Do blah blah blah b lsdf$af)_a0-#9080ewe
15:25:04 <ehird> qwe
15:25:04 <ehird> 3
15:25:05 <ehird> '
15:25:34 <SimonRC> I notice that you dind't clean the qwa keys above
15:26:01 -!- seabot has joined.
15:26:07 <ehird> I did, I just didn't press down on them hard
15:26:24 <ehird> This keyboard isn't a gradual push
15:26:34 <ehird> it's either not pressed, or totally pressed
15:26:42 <SimonRC> why can't you clean it into a text editor or something, rather than irc?
15:27:18 <ehird> SimonRC: because i can't be bothered to think about stuff like that when it only takes a few seconds :-)
15:28:01 -!- seabot has quit (Remote closed the connection).
15:28:07 -!- seabot has joined.
15:28:29 <ehird> bah
15:28:30 -!- seabot has quit (Remote closed the connection).
15:28:36 -!- ehird has changed nick to seabot.
15:28:41 -!- seabot has changed nick to ehird.
15:28:56 -!- seabot has joined.
15:28:56 -!- seabot has quit (Remote closed the connection).
15:29:08 -!- seabot has joined.
15:29:10 <ehird> Finally.
15:30:49 -!- seabot has quit (Excess Flood).
15:30:58 <ehird> Well I figured out how to abuse it
15:30:58 <ehird> :P
15:36:45 <SimonRC> I didn't see it say a word
15:43:57 <ehird> privmsg
16:21:01 -!- Tritonio_ has quit ("Bye...").
16:37:12 -!- sekhmet has joined.
16:39:10 -!- pikhq has quit (Read error: 110 (Connection timed out)).
16:39:12 -!- pikhq_ has joined.
16:40:46 <ehird> no oklopol :(
16:40:51 <ehird> I was going to tell him something!
16:40:52 <ehird> Humph
16:40:53 <ehird> :P
16:43:23 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)).
16:44:10 -!- pikhq has joined.
17:14:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
17:14:45 -!- Judofyr has joined.
17:26:12 -!- oklopol has joined.
17:28:42 <ehird> oklopol: you are heeere
17:28:53 <oklopol> well i just woke up
17:28:57 <ehird> I thought I had implemented continuations in Python but it turns out I didn't :(
17:29:18 <oklopol> i basically went to sleep when you left, and woke up now
17:29:36 <oklopol> anyway, i did make a parser from python to your format and finished the program first
17:29:38 <SimonRC> ehird: doesn't stackles Python already have continuations?
17:29:44 <SimonRC> *stackless
17:29:58 <ehird> SimonRC: And PyPy has a real sandbox.
17:30:16 <ehird> Also, Rubinius is better designed than the current RubyVM.
17:30:20 <ehird> All of these mean nothing.
17:30:24 <oklopol> what's freenode's maximum line length?
17:30:25 <ehird> SimonRC: Anyway, Stackless removed continuations.
17:30:28 <ehird> oklopol: not sure
17:30:49 <oklopol> you see, i actually wrote the automaton to especially test your multiple line input
17:30:57 <oklopol> thought you had that
17:31:43 <ehird> oklopol: ?
17:31:53 <oklopol> talking about the 110
17:32:13 <oklopol> you see, unlike you, i haven't had a day between this moment and our conversation
17:32:21 <ehird> ah
17:32:22 <ehird> :D
17:32:32 <oklopol> it's coding 110 -> sleep -> back to irc to talk about it
17:32:33 <ehird> oklopol: I am redesigning Seabot
17:32:42 <ehird> but
17:32:44 <ehird> i'll put it up
17:32:48 <ehird> so feel free to play
17:33:01 <oklopol> i guess i could remake the prog to be a bit shorter
17:33:03 <oklopol> or a lot shorter
17:33:05 <oklopol> hmm
17:33:18 <oklopol> wasn't my other version in ruby?
17:33:24 <oklopol> or not
17:33:28 <ehird> both
17:33:28 <oklopol> dunno
17:33:29 <ehird> ruby and non-ruby
17:33:39 -!- seabot has joined.
17:35:08 <ehird> oklopol: there ya go
17:35:15 <oklopol> lessee
17:35:19 -!- RodgerTheGreat has joined.
17:39:00 <ehird> oklopol: #python be hatin' on me for my braces
17:40:28 <oklopol> hehe
17:40:30 <oklopol> prolly
17:40:55 <oklopol> http://www.vjn.fi/pb/p611563426.txt
17:41:18 <oklopol> efmtfy(python_koed)
17:41:38 <ehird> uhhh whut
17:41:43 <oklopol> sorry, koed has become my official way to type that because it's so nice to write
17:41:46 <ehird> oh
17:41:47 <ehird> i seeee
17:42:15 -!- Sgeo has joined.
17:42:39 <ehird> coool it works
17:42:47 <oklopol> it does?
17:42:48 <oklopol> fun
17:42:49 <Sgeo> ehird, wha?
17:42:55 <oklopol> i didn't really test it :D
17:43:00 <oklopol> went to sleep
17:43:04 <oklopol> / coma
17:43:04 <Sgeo> ehird, what works?
17:43:15 <oklopol> http://www.vjn.fi/pb/p611563426.txt
17:43:43 <oklopol> just ehird's python braces format thing parser the other way around
17:43:48 <oklopol> what a great explanation
17:43:55 <ehird> "if x:{True}else:{while Foo:{print 'hi';2}}"
17:43:58 <ehird> that's what it gave me
17:44:09 <oklopol> was that right?
17:44:11 <ehird> yep
17:44:15 <oklopol> well, good
17:44:25 <ehird> now I am going to rewrite the parser, and write deparser that's more stable
17:44:29 <ehird> and call it 'bracism' :D
17:44:33 <oklopol> that was trivial to parse of course, it's the other way that requires anything
17:44:49 <oklopol> not that it requires *anything* still
17:45:17 <oklopol> hmm.... i went to sleep because no shops were open... and now they're soon closed again
17:45:37 <oklopol> why must others want to live when the sun is up :<
17:45:54 <oklopol> and why doesn't python have anything
17:46:23 <oklopol> no easy way to iterate in slices of three
17:48:25 <ehird> oklopol: you keep runnign into pythons limitations
17:48:30 <ehird> you should make Soup
17:48:31 <ehird> Super Python
17:48:38 <oklopol> hehe
17:48:42 <oklopol> well i made oklotalk ;)
17:48:47 <ehird> which is like Python, but has continuations and slicer thingies and okokokoko
17:48:51 <oklopol> although it's even more retarded currently, of course
17:48:52 <ehird> and oklotalk isn't like python :p
17:49:14 <oklopol> well indeed, it's quite different
17:49:31 <oklopol> i mean, the program flow is different, it's similarly dynamic though.
17:49:58 <oklopol> python has quite little computational stuff built-in
17:50:02 <ehird> oklopol: BUT YOU SHOULD MAKE SOUPPP
17:50:04 <oklopol> well... so does almost every language
17:50:10 <ehird> Continuations should be implemented in Soup itself
17:50:19 <ehird> and Soup just provides a first-class callstack
17:50:21 <ehird> :D
17:50:21 <oklopol> which isn't nice for us who have a fear of importing modules.
17:50:26 <oklopol> hehe
17:50:26 <ehird> And you can make MULTIPLE CALLSTACKS
17:50:34 <ehird> CallStack.current()
17:50:35 <ehird> BUT
17:50:36 <oklopol> well python has a viewable callstack
17:50:36 <ehird> CallStack()
17:50:40 <ehird> and then on a CallStack()
17:50:42 <ehird> you can do
17:50:44 <ehird> .switch()
17:50:50 <ehird> so you can make your own magical callstack then switch to it!
17:50:53 <oklopol> sounds awesome
17:50:59 <ehird> oklopol: but this would allow pushing and popping and slicing and assigning to elements
17:51:10 <ehird> you could even make exceptions implemented in Soup
17:51:13 <oklopol> well it would be a list
17:51:28 <ehird> just make a .throw() method that unwinds the CallStack.current
17:52:00 <oklopol> a global stack where you can push and pop return continuations with try and... leaving try's scope
17:52:02 <ehird> oklopol: don't make it a list, because 1. it should be a linked list. why? because then continuations are free (no copying) 2. you need special things like .switch() 3. it shouldn't contain anything other than CallStackFrames
17:52:03 <oklopol> or soemthing
17:52:33 <oklopol> a list, in soup, is a conceptual list, you don't need to know what it is
17:52:49 <ehird> oklopol: but CallStack has special methods that are not what lists have
17:52:55 <oklopol> well sure
17:52:58 <ehird> & treating it as a list would be useless
17:53:02 <ehird> oklopol: the better way
17:53:04 <oklopol> it's duck typing
17:53:06 <ehird> is to have an interface-thingy
17:53:09 <ehird> of Sequence
17:53:09 <oklopol> it can just have methods added
17:53:14 <ehird> and make an Array which is a Sequence
17:53:20 <ehird> and LinkedList which is too
17:53:28 <ehird> and then CallStack which is a Sequence but not an Array or LinkedList
17:53:38 <ehird> and you don't need to make Sequence concrete
17:53:51 <oklopol> well sequence is that i meant by list here
17:53:51 <ehird> sequence is just having e.g. __index__(thing)
17:53:57 <ehird> you see what i mean?
17:54:01 <oklopol> yes, i meant at
17:54:03 <oklopol> that
17:54:03 <ehird> so CallStack shouldn't be a list
17:54:05 <ehird> it shoudl just be indexable
17:54:08 <ehird> which is obvious
17:54:12 <ehird> you don't need to point THAT out
17:54:46 <ehird> oklopol: anyway, Soup should have MAGIC MODULES
17:54:49 <ehird> which e.g. change the syntax
17:54:49 <ehird> so
17:54:51 <ehird> 'import braces'
17:54:54 <ehird> will give you my syntax
17:54:55 <ehird> :D
17:55:04 <ehird> you gotta admit, SOUP IS AWESOME
17:55:05 <oklopol> yeah
17:55:10 <ehird> now I want it too!!
17:55:13 <oklopol> :-)
17:55:13 <ehird> let's implement it :q
17:55:21 <oklopol> import p
17:55:23 <oklopol> ...
17:55:25 <oklopol> import soup
17:55:30 <ehird> import sexpee
17:55:39 <ehird> (def hello () (print "hi"))
17:55:42 <ehird> hello() + 3
17:55:45 <ehird> MIXING SYNTAX
17:55:45 <ehird> :D
17:55:59 <ehird> oklopol: Soup should be implemented in Python, amirite
17:56:30 <oklopol> hoh, that sounds like fun
17:56:42 <ehird> oklopol: yesss
17:57:00 <ehird> oklopol: soup will require a lot of draft planning though
17:57:06 <ehird> there will need to be a soup.Parser class
17:57:10 <ehird> of which the default is just one :p
17:57:45 <ehird> though YAGNI (You Aren't Gonna Need It) and Do The Simplest Thing That Could Possibly Work dictates that we should delay that feature until later
17:58:27 <ehird> oklopol: :D
17:59:03 <ehird> oklopol: name something else cool that python has and soup doesn't
18:00:45 <ehird> oklopol: or don't
18:01:26 <ehird> oklopol: don't say i need to okloping you!
18:02:06 <oklopol> @python def do(n):{r=[1];def f(r):return "".join([i and "1" or "0" for i in r]);def next(l):return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)];for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10)
18:02:16 <oklopol> hmph
18:02:20 <ehird> @python do(10)
18:02:20 <seabot> NameError: name 'do' is not defined
18:02:21 <oklopol> oh
18:02:22 <oklopol> what
18:02:24 <oklopol> darn
18:02:25 <ehird> @python useres.oklopol.do(10)
18:02:25 <seabot> NameError: name 'useres' is not defined
18:02:27 <ehird> @python users.oklopol.do(10)
18:02:28 <seabot> KeyError: 'do'
18:02:28 <oklopol> wait
18:02:35 <ehird> @python users
18:02:35 <seabot> {'ehird': <a big brother>, 'oklopol': <a big brother>}
18:02:37 <ehird> @python users.oklopol
18:02:37 <seabot> <a big brother>
18:02:39 <oklopol> hmm
18:02:40 <ehird> @python users.oklopol['do']
18:02:40 <seabot> KeyError: 'do'
18:02:41 <ehird> wtf
18:02:43 <oklopol> no it should work...
18:02:45 <oklopol> or hmm...
18:02:47 <oklopol> wait a sec
18:02:50 <ehird> oklopol: seabot's python stuff is just borked
18:03:01 <ehird> oklopol: oh, that's something else Soup should have! a Sandbox built in
18:03:11 <ehird> oklopol: so that something like seabot can just be done by subclassing Sandbox
18:03:14 <oklopol> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10)
18:03:14 <seabot> SyntaxError: invalid syntax (<irc>, line 11)
18:03:15 <ehird> and specifying what you want to allow
18:03:17 <ehird> yes? :D
18:03:31 <oklopol> sure
18:03:46 <oklopol> but hmm...
18:03:55 <ehird> for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]))
18:03:57 <ehird> your ; is the borkage
18:04:12 <oklopol> oh
18:04:25 <oklopol> ih
18:04:26 <oklopol> oaihgs
18:04:30 <ehird> oklopol: now what about SOUP :D
18:04:32 <oklopol> tabs don't work.
18:04:38 <AnMaster> that isn't python
18:04:41 <AnMaster> it use brances
18:04:45 <AnMaster> braces*
18:04:48 <ehird> AnMaster: i added that so it can be used on one line
18:04:52 <AnMaster> heh
18:04:56 <oklopol> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10)
18:04:56 <seabot> SyntaxError: invalid syntax (<irc>, line 11)
18:05:00 <oklopol> :<
18:05:01 <ehird> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):n.append(next(r[i-1:i+2]));r=n}};do(10)
18:05:01 <oklopol> hey
18:05:02 <seabot> SyntaxError: invalid syntax (<irc>, line 15)
18:05:05 <oklopol> it didn't copy
18:05:06 <oklopol> fuck
18:05:34 <oklopol> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))}r=n}};do(10)
18:05:34 <seabot> SyntaxError: invalid syntax (<irc>, line 16)
18:05:36 <oklopol> :D
18:05:40 <oklopol> aha
18:06:07 <ehird> hm
18:06:11 <ehird> 16 is do(10)
18:06:22 <ehird> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))}r=n}}
18:06:25 <ehird> @python do(10)
18:06:25 <seabot> 1
18:06:26 <seabot> 11
18:06:26 <seabot> 111
18:06:26 <seabot> 1101
18:06:26 <seabot> 11111
18:06:26 <seabot> 110001
18:06:28 <seabot> 1110011
18:06:30 <seabot> 11010111
18:06:32 <seabot> 111111101
18:06:32 <oklopol> ah
18:06:33 <ehird> tah-dah
18:06:34 <seabot> 1100000111
18:06:40 <oklopol> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])};def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]};for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))};r=n}};do(10)
18:06:41 <seabot> SyntaxError: invalid syntax (<irc>, line 19)
18:06:44 <ehird> no
18:06:46 <ehird> the ;do(10)
18:06:48 <ehird> messes it up
18:06:48 <ehird> somehow
18:06:50 <ehird> oh of course
18:06:52 <ehird> of course!
18:06:53 <oklopol> oh.
18:06:55 <ehird> compile 'single'
18:06:58 <ehird> only supports ONE statement/expr
18:07:00 <vixey> @python 10 PRINT "HELLO WORLD" 20 GOTO 10
18:07:00 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
18:07:08 <oklopol> oh.
18:07:12 <ehird> @python while True: { print "HELLO WORLD" }
18:07:13 <seabot> HELLO WORLD
18:07:13 <seabot> HELLO WORLD
18:07:13 <seabot> HELLO WORLD
18:07:13 <seabot> HELLO WORLD
18:07:13 <seabot> HELLO WORLD
18:07:13 -!- seabot has quit (Excess Flood).
18:07:17 <vixey> lol
18:07:22 -!- seabot has joined.
18:07:29 <AnMaster> you need rate limiting
18:07:44 <oklopol> well, in that case it wasn't exactly my fault, so i guess i can be at peace
18:08:00 <AnMaster> I mean the bot need it
18:08:04 <ehird> @python def PRINT(x): { print x }
18:08:31 <ehird> @python class GOTOC: { def __getattr__(self, name): { globals()[name]() } }
18:08:36 <ehird> @python GOTO = GOTOC()
18:08:39 <ehird> @python GOTO
18:08:39 <seabot> KeyError: '__repr__'
18:08:42 <AnMaster> ouhc
18:08:45 <ehird> @python def l0(): { PRINT("HELLO WORLD"); GOTO.l0 }
18:08:52 <ehird> @python l0()
18:08:52 <seabot> NameError: global name 'PRINT' is not defined
18:08:53 <AnMaster> that makes my eyes hirt
18:08:55 <AnMaster> hurt*
18:08:55 <ehird> awwww
18:08:56 <ehird> almost
18:08:56 <ehird> :D
18:09:10 <ehird> @python l0.__dict__['PRINT'] = PRINT
18:09:17 <ehird> @python l0.func_globals['PRINT'] = PRINT
18:09:21 <ehird> @python l0.func_globals['GOTO'] = GOTO
18:09:24 <ehird> @python GOTO.l0
18:09:24 <seabot> KeyError: 'l0'
18:09:27 <ehird> whut
18:09:28 <ehird> :(
18:09:30 <ehird> @python globals()
18:09:30 <seabot> {'__builtins__': {'IndexError': <type 'exceptions.IndexError'>, 'all': <built-in function all>, 'help': Type help() for interactive help, or help(object) for help about object., 'vars': <built-in function vars>, 'SyntaxError': <type 'exceptions.SyntaxError'>, 'unicode': <type 'unicode'>, 'UnicodeDecodeError': <type 'exceptions.UnicodeDecodeError'>, 'isinstance': <built-in function isinstance>, 'copyright': Copyright (c) 2001-2006 Python Software Foundation
18:09:30 <seabot> All Rights Reserved.
18:09:30 <seabot> Copyright (c) 2000 BeOpen.com.
18:09:30 <seabot> All Rights Reserved.
18:09:30 -!- seabot has quit (Excess Flood).
18:09:33 <ehird> oh shi
18:09:34 <ehird> :(
18:09:36 <ehird> oh well
18:09:37 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
18:09:37 <ehird> it was a nice idea
18:09:48 <AnMaster> ehird, you still need rate limiting
18:09:52 <ehird> AnMaster: i don't care.
18:09:56 <AnMaster> on the send to irc
18:09:56 <ehird> seabot is going to be rewritten
18:09:58 <ehird> oklopol: IN SOUP RIGHT?
18:09:59 <AnMaster> hm
18:10:09 <AnMaster> what is SOUP?
18:10:13 <ehird> Soup, actually
18:10:16 <ehird> it means Super Python
18:10:24 <AnMaster> one with braces?
18:10:31 <ehird> it is the thing that OKLOPOL AND I ARE THINKING OF AWESOME FEATURES FOR
18:10:34 <ehird> ISN'T THAT RIGHT OKLOPOL
18:10:47 <oklopol> SURE
18:11:25 <oklopol> now, about features... we both agree it should be *awesome*, right?
18:11:29 <ehird> yes
18:11:40 <oklopol> okay, we should write this down.
18:12:00 <oklopol> i need to go buy me some onion rings, and make my fire alarm go FRIIIIIIIIIII
18:12:42 <ehird> oklopol: yeah, i'll open a text file
18:12:43 <ehird> but first..
18:12:53 <ehird> http://rafb.net/p/j7c2ZA16.html
18:15:12 <vixey> lol
18:15:15 <ehird> and one that doesn't overflow the stack:
18:15:16 <ehird> http://rafb.net/p/XLdxub19.html
18:17:24 <ehird> omg soup will rock
18:17:24 <ehird> :D
18:17:46 <oklopol> actions in my python
18:17:52 <oklopol> first class actions
18:17:58 <oklopol> what has the world come to
18:18:05 <ehird> did you see my last one?
18:18:08 <ehird> it was a mini-interpreter
18:18:08 <ehird> :D
18:18:09 <oklopol> i did
18:18:27 <oklopol> hehe yeah
18:18:35 <ehird> oklopol: anyway I had another Soup idea
18:18:40 <ehird> it should have pluggable GCs
18:18:45 <ehird> you can subclass GC
18:18:49 <ehird> then do something like
18:19:05 <ehird> System.use_gc(MySubClass)
18:19:11 <ehird> and it'll use that for all gcs
18:19:11 <ehird> or
18:19:12 <ehird> just
18:19:15 <ehird> MySubClass.collect()
18:19:17 <ehird> to use it once
18:19:41 <ehird> oklopol: awesome? :D
18:19:53 <oklopol> yep
18:20:04 <oklopol> everything needs to be changeable at runtime
18:20:07 <ehird> oklopol: no
18:20:09 <ehird> that's oklotalk
18:20:13 <oklopol> :-)
18:20:14 <oklopol> hmm
18:20:17 <ehird> Soup is just Python, but TOTALLY SUPER
18:20:24 <oklopol> should we have a special import, that does stuff only once
18:20:29 <oklopol> i mean, import can be executed anywhere
18:20:34 <oklopol> but if it changes syntax...
18:20:50 <oklopol> or changes gc, also a small ellipsis htere
18:20:52 <oklopol> *there
18:20:57 <ehird> oklopol: well, 'import' won't be as clever as Python's
18:20:59 <ehird> basically
18:21:02 <oklopol> hmm
18:21:06 <ehird> basically,
18:21:07 <oklopol> yarr
18:21:13 <ehird> no syntax will change the syntax of 'import'
18:21:22 <ehird> so, at the start of interpreting, all the imports are scanned
18:21:28 <ehird> and then the syntax is decided on that
18:21:35 <oklopol> yep yep
18:21:37 <ehird> or... just make all imports appear at the beginning of the file
18:21:40 <ehird> thats' simpler
18:21:43 <ehird> and i've never used one elsewhere
18:21:43 <oklopol> yeah, better
18:21:52 <ehird> but
18:22:01 <ehird> probably it will just do it as a normal statement
18:22:08 <oklopol> i have, occasionally, when writing stuff in a cli where you cannot go back a line :-)
18:22:08 <ehird> just the 'defined behaviour' is that
18:22:19 <oklopol> but that's a bit different
18:22:25 <oklopol> "oh, right, i need math"
18:22:53 <oklopol> well it could just not do anything if it tries something that doesn't work at runtime
18:23:07 <ehird> oklopol: well, i think we should defer the custom syntax thing to later
18:23:15 <ehird> otherwise our heads will hurt
18:23:15 <oklopol> perhaps, perhaps
18:23:16 <ehird> :)
18:23:27 <oklopol> SHOP ME GO NOW REALLY GO GO ->
18:23:34 <ehird> aww
18:23:37 <ehird> be back :p
18:35:42 <oklopol> SUCCESS!
18:35:56 <oklopol> i need channel-specific caps lock
18:36:21 <ehird> :D
18:37:41 <oklopol> i'm gonna berakfast now
18:37:46 <oklopol> *breakfast
18:38:00 <oklopol> after that, prolly oklotalk time.... :|
18:38:14 <ehird> d'aww
18:38:15 <ehird> what about
18:38:15 <ehird> SOUP
18:38:16 <oklopol> so many features, so little time
18:38:22 <ehird> you could like
18:38:25 <ehird> start prototyping oklotalk
18:38:26 <ehird> in SOUP
18:38:28 <oklopol> ! :D
18:38:31 <EgoBot> Huh?
18:38:32 <ehird> see?
18:38:33 <ehird> what a great idea
18:38:34 <ehird> :D
18:38:37 <oklopol> well oklotalk needs to work by wednesday
18:38:45 <ehird> ok but you can do soup too :p
18:39:16 <oklopol> "so i created this language, and then another language, implemented the first one in python and the second in the first one"
18:39:54 <oklopol> sounds like something you din 2 days
18:39:57 <oklopol> *do inm
18:39:58 <oklopol> *in
18:40:05 <ehird> oklopol: YOU CAN MULTITHREAD
18:40:05 <ehird> :D
18:40:42 <oklopol> shuuuuure
18:40:42 <oklopol> :D
18:41:33 <ehird> oklopol: but Soup is too awesome not to SOUPIFY
18:42:29 <oklopol> whhhhell
18:42:35 <oklopol> perhaps after thursdays
18:42:57 <ehird> oklopol: bah :P
18:43:07 <ehird> I'll just prod you questions about it, and thou shalt have no choice! mwahaha
18:43:23 <oklopol> :<
18:43:27 <oklopol> my only weakness
18:43:39 <ehird> yes!
18:43:44 <ehird> oklopol: your other weakness - pastebins
18:43:51 <ehird> if i pastebin some code and describe it and ask somethinig
18:43:55 <ehird> YOU SHALL HAVE NO CHOICE
18:43:55 <ehird> mwahaha
18:44:00 <oklopol> :<<
18:44:02 -!- vixey has left (?).
18:55:04 -!- Corun has quit ("This computer has gone to sleep").
18:56:59 -!- jix has quit (Nick collision from services.).
18:57:09 -!- jix has joined.
19:51:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:52:02 -!- Judofyr has joined.
19:55:02 -!- olsner has joined.
20:00:33 -!- oerjan has joined.
20:03:06 -!- Corun has joined.
20:09:43 * oerjan looks at some of the latest xkcd's and concludes that Munroe is probably now only doing stick figures out of tradition...
20:09:59 <ehird> oerjan: well, no
20:10:06 <ehird> if they weren't stick figures, it would lose the xkcd feel
20:10:16 <oerjan> well that's what i mean by tradition
20:10:31 <ehird> well, i was kinda saying that it wasn't the 'ohh, its just how we've always done it'
20:10:36 <ehird> more that it's an integral part of xkcd
20:12:18 * oerjan looks at some of the _first_ xkcd's and concludes it has always been that way, really
20:15:13 -!- Iskr has quit ("Leaving").
20:15:45 <SimonRC> the earliest ones had some non-stick-figures
20:16:25 <oerjan> i mean that he was always able to do better
20:16:57 <ehird> SimonRC: link
20:17:28 <SimonRC> in a mo...
20:20:06 <SimonRC> there, not a stick figure: http://xkcd.com/1/
20:20:54 <oklopol> hoh, it seems i've read all xkcd
20:21:01 <oklopol> when, wonders i
20:21:37 <oerjan> a long time ago in a ... wait, wrong webcomic
20:22:22 <Sgeo> Oh, I forgot to check xkcd today
20:22:24 <Sgeo> and freefall
20:22:44 <SimonRC> http://xkcd.com/7/ http://xkcd.com/11/ http://xkcd.com/22/ http://xkcd.com/23/ http://xkcd.com/31/ That probably most of them
20:23:16 <SimonRC> http://xkcd.com/26/ is the first really geeky one, I think...
20:23:55 <SimonRC> oh, wait, that's BS
20:25:05 <SimonRC> 10 is the first one with geek culture
20:26:38 <SimonRC> I discovered that one can see the latest Dr Who on the web: http://www.bbc.co.uk/doctorwho/s4/videos/
20:26:41 <SimonRC> legally too
20:27:06 <oklopol> heh the pi one is fun
20:27:17 <SimonRC> but mathematically silly
20:27:55 <SimonRC> aaaand the first joke to get a life of its own: http://xkcd.com/37/
20:28:20 <SimonRC> Incidentally, the first "My hobby", I think
20:28:20 <oklopol> well indeed, should be like in hex
20:28:28 <oklopol> and leet
20:28:32 <oklopol> speak
20:48:26 -!- sebbu has quit (No route to host).
21:03:36 -!- sebbu has joined.
21:11:53 -!- wildhalcyon has joined.
21:11:59 <SimonRC> high
21:13:05 <wildhalcyon> low
21:18:59 <oerjan> brow
21:19:05 <SimonRC> beat
21:19:30 <GregorR> off
21:19:36 <oerjan> side
21:19:40 <SimonRC> winder
21:19:54 <GregorR> Come on, no phrases start with "winder" :P
21:20:35 <oerjan> farms
21:20:40 * oerjan googled
21:22:05 <ehird> hah
21:22:20 <ehird> High low brow beat off 'side winder farms.
21:22:43 <ehird> So... a low-brow person, on drugs, stimulated themself beside a wind farm
21:23:18 <oerjan> that's remarkable especially as i never expected it to be a sentence
21:24:13 -!- sekhmet_ has joined.
21:24:48 <SimonRC> # Enemy lasagna / Robust below wax / Semiautomatic aqua / Accompany slacks / ... #
21:25:48 <oerjan> if you say so
21:25:55 <SimonRC> http://video.google.com/videoplay?docid=7084489538066105747
21:25:58 -!- sekhmet has quit (Nick collision from services.).
21:26:02 -!- sekhmet_ has changed nick to sekhmet.
21:26:12 <SimonRC> one of his odder ones
21:26:24 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
21:26:54 -!- Judofyr has joined.
21:26:57 <SimonRC> # Word Disassociation #
21:26:57 <SimonRC> # Word Disassociation #
21:26:59 <SimonRC> # Word Disassociation #
21:27:27 <ehird> SimonRC: You may stop flooding now
21:27:27 <ehird> ;)
21:28:39 <SimonRC> it is intersting to see which ones are pronounced differently in America
21:29:00 <SimonRC> e.g. "Advertisement"
21:36:18 <GregorR> Ad-ver-TIES-ment :P
21:39:55 <GregorR> I was going to organise my ad-VER-tisments by colour-co-ordinating them.
21:40:39 <oklopol> i pronounce it as ADVERTISEMENTS, the press is on the entire word
21:40:46 <oklopol> *ADVERTISEMENT
21:41:08 <GregorR> OK, but is it -ize-ment or -izment?
21:41:32 <oklopol> it's so loud you can't tell.
21:41:47 <GregorR> So it's really just FG(UDS)GHF(ESW HF(SHF(*E&WYR(_A&F(AAAAAAAAAAAAAHG
21:41:53 <oklopol> quite.
21:54:40 -!- sekhmet has quit (Remote closed the connection).
21:54:44 -!- sekhmet has joined.
22:18:59 -!- jix has quit ("CommandQ").
22:43:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:43:49 -!- Judofyr has joined.
22:53:56 <ehird> a
22:54:32 <SimonRC> http://www.youtube.com/watch?v=6cAs1YBELmA
22:54:36 <SimonRC> hmm, geeky
22:54:44 <SimonRC> waitamo...
22:55:06 <SimonRC> do American houses really have the flag hanging on the wall indoors?
22:55:25 <wildhalcyon> some
22:55:35 <SimonRC> weird
22:55:36 <wildhalcyon> depends on how patriotic/neurotic/insane the owner is
22:56:37 <wildhalcyon> its not a huge deal
22:57:03 <SimonRC> This guy is so blatently pre-uni
22:57:11 <wildhalcyon> yeah
22:57:28 <SimonRC> in his lyrics rather than just in appearance
23:06:53 <ehird> hmm
23:07:07 <ehird> a language where all variables are mutable, but cells, would be interesting
23:07:29 <ehird> x -> 5; y -> x+2; // here y is 7
23:07:38 <ehird> x -> y; // here y is ...
23:08:31 <ehird> also, dictionaries are functions
23:08:34 <ehird> and scopes are dictionaries
23:08:49 <ehird> CurrentScope[#x] -> 5; is x -> 5;
23:10:00 <oerjan> war is peace! freedom is slavery!
23:10:25 <ehird> oerjan: and scopes are functions
23:12:10 <SimonRC> the problem is that "x = y" sets the two variables to be the same cell, whereas "x = y + 0" sets x to be a new cell which contains that value that y happened to have at that time.
23:12:43 <SimonRC> also, wasn't there an esolang where every program gradually made every number integer to every other integer?
23:12:53 <ehird> SimonRC: and that is wrong
23:13:01 <ehird> x = y + 0 means that the value of 'x' is the value of 'y', plus 0
23:13:10 <ehird> 'here y is ...' meant 'here y loops forever'
23:13:23 <SimonRC> ah, ok
23:13:35 <ehird> (random note on the scope-function-dictionary thing: you could extend that by using {...} as dictionary syntax)
23:13:36 <ehird> so
23:13:46 <ehird> {X -> 2; Y -> 3} is like:
23:13:54 <ehird> Foo[#X] -> 2; Foo[#Y] -> 3
23:13:54 -!- olsner has quit ("Leaving").
23:13:58 <ehird> except with Foo anonymous
23:14:00 <ehird> :)
23:14:27 <oerjan> SimonRC: Forte
23:15:34 <ehird> incidentally, here's BCT
23:15:34 <ehird> BCT[{0,...},{_,....}] -> ....;
23:15:34 <ehird> BCT[{1,X,...},{1,....}] -> {1,....,X};
23:15:34 <ehird> BCT[{1,X,...},{_,....}] -> ....;
23:15:50 <ehird> (decided that if {} could be dictionaries it could damn well be lists too)
23:16:03 <ehird> the ellipsis semantics are a bit vague though
23:17:09 <ehird> you can replace the dots with underscores to make it ignored variable elements, too
23:17:09 -!- Corun has quit ("This computer has gone to sleep").
23:17:10 <ehird> Head[{X,___}] -> X;
23:17:10 <ehird> Tail[{_,XS}] -> XS;
23:18:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
23:19:04 -!- Judofyr has joined.
23:19:47 <ehird> http://esolangs.org/wiki/User:Tom_Duff
23:19:49 <ehird> wow!
23:19:59 <ehird> ChrisCunningham, Tom Duff... esolangs is famous :)
23:23:49 <oerjan> chris cunningham?
23:23:59 <ehird> oerjan: inventor of the wiki
23:24:11 <ehird> you know -- http://c2.com/cgi/wiki, the first wiki
23:24:14 <ehird> circa 1995
23:24:28 <oerjan> oh that was the first?
23:24:54 * oerjan got up a director or something on google
23:25:12 <ehird> chris cunningham is also a director who makes videos for people like Aphex Twin
23:25:18 <ehird> but is not the same as the wiki one :)
23:25:35 <ehird> err wait
23:25:37 <ehird> crap
23:25:39 <ehird> I meant Ward Cunningham
23:25:41 <ehird> of course
23:25:41 <ehird> :)
23:25:44 <oerjan> aha
23:25:52 <ehird> Biota inventor
23:25:57 <ehird> & wiki guy
23:26:09 <ehird> Hmm
23:26:16 <ehird> I swore I saw Ward CUnningham on the wiki as a user
23:26:35 <ehird> Oh well then
23:26:37 <ehird> Just Tom Duff.
23:26:39 <ehird> Still pretty cool
23:26:47 <lament> AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
23:26:55 <ehird> lament: BBBBBBBBBBBBBBBBBBBBBBBBBB
23:27:01 <lament> looking at the tom duff page led me to http://esolangs.org/wiki/Image:Explor.gif
23:27:01 <oerjan> nah just a page
23:27:17 <ehird> lament: that's great
23:27:18 <ehird> my eyes hurt
23:27:32 <lament> god that's painful to look at
23:27:38 <ehird> lament: squint your eyes when looking at it
23:27:42 <ehird> your head will move to the left
23:27:43 <ehird> automatically
23:27:50 <ehird> wheeee
23:33:01 <SimonRC> ehird: mine doesn't
23:33:08 <ehird> mine does
23:33:09 <ehird> :(
23:33:13 <ehird> but my screen is very good
23:33:14 <ehird> :P
23:35:38 * SimonRC praises Sun for the system of transistion from raw to parameterised types.
23:36:06 <lament> generics?
23:36:09 * SimonRC larts Sun for not having parameterised types in the first bloody place.
23:36:18 <ehird> SimonRC: Generics are crap.
23:36:21 <ehird> :)
23:36:26 <SimonRC> better than nothing
23:36:35 <ehird> they're definately not parameterised types
23:36:59 <lament> why are you using java
23:37:26 <SimonRC> ehird: it is a type, it has parameters
23:37:38 <SimonRC> lament: because the code is already written in it
23:37:39 <ehird> lament: java can be used to write good code
23:37:48 <ehird> you just have to be good at packing characters to avoid hideous verbosity
23:37:51 <ehird> and avoid IDEs
23:38:02 <ehird> lament: but as a language it isn't nice at all i agree
23:38:18 <SimonRC> I'd have thought that me talking about adding parameters to types would be a give-away that old Java code was involved.
23:38:23 <lament> why would you avoid IDEs?
23:38:29 <SimonRC> yes
23:38:39 <ehird> lament: Java IDEs generate huge monstrosities of code.
23:38:55 <SimonRC> how else am I going to maintain 120,000 lines of code containing repetitions that the language can't capture
23:39:16 <ehird> well, define macros for it. but the way IDEs handle it is crap
23:39:28 <SimonRC> c'mon, to break package cycles recently, I have to automatically extract about 40 interfaces
23:39:39 <ehird> they encourage verbose, high-calorie 'empty-code' by making it easy
23:39:39 <SimonRC> ehird: um, Java ... macros
23:39:44 <SimonRC> ehird: yup
23:39:44 <ehird> SimonRC: in your editor.
23:40:20 <SimonRC> so I shouldn't use the IDE because it makes it easy to generate lots of code...
23:40:23 <lament> ehird: sorry? IDEs don't have to generate any code
23:40:30 <lament> ehird: why would an ide generate code?
23:40:31 <SimonRC> ... but I should define editor macros to generate lots of code
23:40:37 <ehird> SimonRC: when you can get the same effect for less code
23:40:56 <lament> i use an IDE (VS) all the time at work and it doesn't generate any code for me
23:41:06 <SimonRC> anyway, I was mostly joking
23:41:15 <SimonRC> our code is too big
23:41:48 <SimonRC> there are several dimensions of functionality that we will probably never need again
23:41:51 -!- oerjan has quit ("Good night").
23:41:53 <SimonRC> but which add indirection
23:41:54 <wildhalcyon> Java is evil
23:42:12 * lament loves IDE
23:42:28 <lament> anything which makes programming easier is good.
23:42:32 <SimonRC> wildhalcyon: better than C++
23:42:38 <SimonRC> in this case at least
23:42:53 <lament> SimonRC: that's like saying, the spanish inquisition is better than the nazis.
23:43:03 <wildhalcyon> SimonRC: I respectfully disagree.
23:43:18 <SimonRC> wildhalcyon: ok, what advantage does C++ have?
23:43:42 <wildhalcyon> It offers a more terse syntax than Java
23:43:48 <ehird> wildhalcyon: Java is a below-mediocre language. Not an 'evil' one.
23:44:27 <SimonRC> Java is what happens when take early-90s C++ and drag it half-way to Lisp
23:45:00 <wildhalcyon> Here's the deal. Java and C++ are the two worst non-esolang languages I can think of. We're quibbling over the bottom of the heap.
23:45:07 <SimonRC> stuff like GC, more type safety, exceptions with actual stack traces, etc
23:45:14 <SimonRC> wildhalcyon: no, really
23:45:23 <SimonRC> early Pascal sucks far more
23:45:41 <SimonRC> operations couldn't be generic in array length
23:46:22 <wildhalcyon> I've been reading too much smalltalk propaganda and have become disallusioned with type safety. GC is a nice java feature though.
23:46:36 <RodgerTheGreat> wildhalcyon: Ruby is scads worse than Java could possibly be construed as being
23:46:46 <lament> RodgerTheGreat: ?????????????????????????????
23:47:10 <SimonRC> wildhalcyon: in this case, by "type safety", I meant strong typing
23:47:13 <RodgerTheGreat> Ruby is a festering boil of a language, seriously
23:47:46 <SimonRC> oh yes, and Java has a guarantee that you fellow programmers will neither use pointers nor force their use upon you
23:48:07 <SimonRC> RodgerTheGreat: explain
23:48:19 <wildhalcyon> SimonRC, I interpreted "type safety" to mean static typing.
23:48:24 <SimonRC> ok
23:48:31 <SimonRC> well...
23:48:32 <lament> it's kinda silly to say java has no pointers when it has null pointer exceptions :)
23:48:57 <SimonRC> a mere terminological difference
23:49:04 <RodgerTheGreat> Ruby is a mishmash of disparate syntax styles. It is painful to look at, and the structure of the language is inconsistent.
23:49:09 <SimonRC> static typing really helped when we were doing a recent major refactoring...
23:49:24 <SimonRC> ... it found a whole class of bugs
23:49:27 <lament> RodgerTheGreat: but damn it lets you write code fast
23:50:01 <SimonRC> there were about 100 instances of that bug, and unit tests took a few minutes to run each time, and caught one instance of it each time
23:50:29 <wildhalcyon> SimonRC, what language was this in?
23:50:33 <SimonRC> Java
23:50:38 <RodgerTheGreat> Java has pointers, it just disallows most math on them and auto-dereferences them. You can think of it as always passing primitives by value and objects by reference, which, 95% (if not more) is what you actually want.
23:50:49 <SimonRC> static types not only appear in the code right before your eyes, but Eclipse will give you a red squiggly line if you screw up
23:51:03 <RodgerTheGreat> I see it as having nearly all the advantages of pointers without the hideous problems that haunt C++ programs
23:51:09 <RodgerTheGreat> *can haunt
23:51:09 <SimonRC> RodgerTheGreat: yes
23:51:12 <lament> SimonRC: IDEs are wonderful, yeah
23:51:28 <SimonRC> but any compiler would have picked them up too
23:52:11 <ehird> Slereah: link to that self-containing set pic?
23:52:11 * lament wants sane IDE support for haskell
23:52:11 <RodgerTheGreat> I personally don't like IDEs because I find them extremely distracting and unhelpful, but their usefulness in the workplace is arguable. They're a *horrible* way to introduce someone to a language, though.
23:52:44 <RodgerTheGreat> In an educational environment, (mainly introductory classes) IDEs should. not. be. used.
23:52:48 <lament> i'm not sure what's distracting about IDEs
23:52:53 <RodgerTheGreat> Tab-completion rots your brain
23:53:02 <wildhalcyon> RodgerTheGreat: Depends on the IDE
23:53:04 <RodgerTheGreat> when I think "IDE" I generally think of Eclipse or similar
23:53:08 <lament> RodgerTheGreat: do you use tab-completion on IRC?
23:53:59 <RodgerTheGreat> that doesn't have anything to do with coding. I'm not trying to learn the "#Esoteric API"
23:54:08 <wildhalcyon> SimonRC, how did your IDE catch the type errors if Java implements static typing?
23:54:13 <lament> RodgerTheGreat: well, do you?
23:54:24 <RodgerTheGreat> yes, and I stand by my statement that it rots your brain
23:54:29 <SimonRC> wildhalcyon: um, by looking at the static types
23:54:35 <wildhalcyon> There's tab completion on IRC?
23:54:35 <lament> RodgerTheGreat: does tab-completion on IRC rot your brain?
23:54:51 <lament> wildhalcyon: type R and press Tab.
23:54:53 <wildhalcyon> SimonRC, how was it an error?
23:55:06 <wildhalcyon> lament... BRILLIANT!
23:55:16 <lament> wildhalcyon: but beware - it will rot your brain.
23:55:17 <ehird> Slereah: ping
23:55:21 <SimonRC> wildhalcyon: I was putting one kind of thing in a list and taking another out
23:55:25 <ehird> wildhalcyon: Hello! You must be new here.
23:55:26 <wildhalcyon> lament, my brain has already been rotted
23:55:27 <ehird> Welcome to IRC!
23:55:42 <ehird> Please leave your brain at the door.
23:55:44 <wildhalcyon> ehird, I don't use IRC much. Pretty much for #esoteric
23:55:58 <SimonRC> when I upgraded from old-style lists (dynamic element type) to new-style lists (static element type) all those problems became obvious
23:56:00 -!- timotiis has quit ("leaving").
23:57:57 <SimonRC> We split one major concept in the program in two basically by chasing type errors
23:59:03 <wildhalcyon> SimonRC, I'm still not convinced that static typing fixed your bug. I'll give it to you though.
2008-04-08
00:00:01 <SimonRC> it really depends on the situation I suppose
00:00:24 <SimonRC> Maybe one can think of types like a suit of armour
00:01:25 <SimonRC> many dynamic langs are a light armour: they don't protect you that much, but they don't restrict your movements
00:01:52 <wildhalcyon> Depends on the language. As long as the language keeps you from doing something you shouldn't be doing with that type, then you're fine.
00:02:15 <SimonRC> Java and friends are like those medieval suits of armour: very protective but bloody difficult to move in
00:03:27 <SimonRC> and some languages are like powered armour... you don't know how anyone can even stand up in it, until you realise it's powered, and enables you to throw cars around and stuff
00:03:32 <SimonRC> ... theoretically.
00:03:54 <SimonRC> but it is still too much to wear when scouting about
00:04:08 <wildhalcyon> I suppose so, yes.
00:04:16 <SimonRC> anyway
00:04:23 <SimonRC> enought with the bad analogies
00:05:01 <wildhalcyon> Any good esolangs lately?
00:05:05 <SimonRC> no
00:05:24 <SimonRC> there is to some degree a trade-off between how soon the language stops you doing something and how much you must tell the compiler
00:05:48 <SimonRC> ah, I realised...
00:06:45 <SimonRC> Although I would not like to maintain this 120kloc program were it written in (e.g.) Python, were it written in (e.g.) Python it wouldn't be 120kloc long
00:07:40 <wildhalcyon> Those sorts of trade offs are important to realize
00:26:53 <ehird> SimonRC: that's the basic idea
01:04:10 -!- GregorR-L_ has joined.
01:14:23 <SimonRC> 1:14am is time to stop work and go home
01:17:07 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
01:17:42 -!- Judofyr has joined.
01:32:07 -!- ehird has quit ("This computer has gone to sleep").
01:32:26 -!- GregorR-L_ has quit (Read error: 110 (Connection timed out)).
02:46:41 -!- adu has joined.
02:50:27 -!- wildhalcyon has left (?).
03:44:51 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
03:45:23 -!- Judofyr has joined.
03:55:13 -!- adu has left (?).
05:07:08 -!- Judofyr has quit (Remote closed the connection).
05:08:00 -!- Judofyr has joined.
05:10:07 -!- Sgeo has quit (Remote closed the connection).
06:43:28 -!- olsner has joined.
07:52:22 -!- GreaseMonkey has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:10:55 -!- Iskr has joined.
08:18:29 -!- olsner has quit ("Leaving").
08:35:14 -!- GregorR-L has joined.
08:37:00 <GregorR-L> OK, I'm trying to make a mini instruction set that: 1) is (Turing) complete within the bounds of bounded storage, 2) requires no self-modifying code, 3) doesn't have any ridiculously over-purposed operations.
08:37:24 <GregorR-L> Each instruction is one byte, and it does only 8-bit math, although it can load/store 16-bit addresses.
08:37:28 <GregorR-L> http://www.pastebin.ca/976538
08:37:32 <GregorR-L> It has 14 instructions.
08:37:42 <GregorR-L> Seems like a bit much :(
08:39:31 <oklopol> $1, $1, $2 and $r
08:39:37 <oklopol> $0
08:39:38 <GregorR-L> Erm
08:39:39 <GregorR-L> Heh
08:39:46 <GregorR-L> Yeah, that should clearly be $0, $1, $2 and $r :P
08:39:52 <oklopol> MY WORK HERE IS DONE
08:39:54 <oklopol> ->
08:40:01 <oklopol> <-
08:40:06 <GregorR-L> It also occurs to me that there's no reason for 'sub' not to take registers.
08:40:06 <oklopol> or not
08:40:37 <oklopol> i'm feeling a bit overall-confused, been implementing oklotalk a bit too much
08:40:57 <oklopol> it's fairly retarded still :<
08:41:37 <GregorR-L> http://www.pastebin.ca/976544 // w/ fixes
08:41:55 <GregorR-L> Overall-confused = not sure how to wear overalls.
08:42:07 <oklopol> exactly
08:42:21 <oklopol> thought that might be a bad way to say it, but glad you got it
08:42:43 <oklopol> 0000aaxx load $a load into register a from address in $0$1 what does $0$1 mean
08:42:46 <oklopol> just too hard
08:43:19 <oklopol> hmm, *perhaps* it has to do with the registers $0 and $1.
08:43:21 <GregorR-L> Hm, I meant for $0$1 to be a 16-bit address, with register $0 being the high bits and $1 being the low bits.
08:43:37 <oklopol> yarrrr
08:43:51 <oklopol> why xx?
08:44:02 <oklopol> ignored?
08:45:21 <GregorR-L> Yeah, I'm explaining that now (in the pseudo-spec)
08:45:53 <GregorR-L> Heh, I was just thinking about whether MiniISA was little- or big-endian. Forgot that it's only 8-bit X-P
08:46:29 <oklopol> i would've suggested middle-endian
08:46:34 <GregorR-L> http://www.pastebin.ca/976548
08:47:39 <oklopol> now be sure to put easter eggs for certain choices of _'s
08:47:50 <GregorR-L> Heh :P
09:02:18 <GregorR-L> [obvious] $2 should be the stack pointer.
09:02:56 <GreaseMonkey> i'd hate to see rear-endian.
09:11:47 -!- GregorR-L has quit ("Leaving").
09:15:46 -!- lifthrasiir has joined.
09:41:21 -!- Corun has joined.
10:29:11 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
11:32:41 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
11:32:49 -!- Judofyr has joined.
12:59:17 -!- Corun has quit ("This computer has gone to sleep").
13:07:09 -!- Sgeo has joined.
14:18:44 -!- jix has joined.
14:27:47 -!- Sgeo has quit (Remote closed the connection).
15:01:44 -!- oklopol has quit (Read error: 113 (No route to host)).
15:11:23 -!- Corun has joined.
15:23:01 -!- Corun has quit ("This computer has gone to sleep").
15:29:23 -!- Corun has joined.
15:42:11 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
15:42:29 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
15:42:48 -!- Judofyr has joined.
15:43:16 -!- bsmntbombdood has joined.
15:48:11 -!- RedDak has joined.
16:04:18 -!- Corun has quit ("This computer has gone to sleep").
16:13:43 -!- RedDak has quit (Remote closed the connection).
16:13:54 -!- ehird has joined.
16:14:20 <ehird> qwerty-5 = identity
17:11:10 -!- Tritonio_ has joined.
17:45:46 <ehird> tom duff facts
17:45:47 <ehird> -------
17:45:56 <ehird> Tom Duff can unroll a loop WITH HIS MIND.
17:50:39 <Slereah> Who is this Tom Duck?
17:51:31 <Deewiant> of Duck's Device fame
17:51:46 <ehird> Duck's Device
17:51:46 <ehird> XD
17:51:55 <ehird> Slereah: can i have a link to your self-containing set picture?
17:51:59 <ehird> i want to put it on elliotthird.org
17:55:06 <ehird> Slereah: plz? :(
17:57:04 <Slereah> http://membres.lycos.fr/bewulf/Divers2/Set.jpg
17:57:23 <ehird> yaey
17:57:24 <ehird> :D
17:57:43 <ehird> permission to use it on elliotthird.org?
17:58:04 <Slereah> Well, I'll have to ask Jack Thomas Chick for the use of his sandwich chef famous picture.
17:58:11 <ehird> bah
17:58:12 <ehird> :)
17:58:13 <Slereah> But I personally give you my permission.
17:58:31 <ehird> http://elliotthird.org/ looks pretty now!
17:58:34 <ehird> thank you :D
17:58:48 <ehird> i'll credit you in the comments
17:58:48 <ehird> heh
17:59:15 <Slereah> http://images.encyclopediadramatica.com/images/8/89/Sandwich-orig.png
17:59:19 <ehird> yeah
17:59:19 <Slereah> Ah that Chick.
17:59:29 <Slereah> He just knows how to convert us heathens.
18:00:38 <Slereah> The very name of his website seeks to attrack them!
18:04:43 <ehird> http://membres.lycos.fr/bewulf/Russell/noyoucanthaveaneuralnetwork.jpg
18:06:54 <SimonRC> GregorR: That instruction set would be rather slow: branch prediction is too tough for it
18:07:03 <Slereah> I also have a pix of a topless Alan Turing with a topless Snow White.
18:07:36 <SimonRC> ah, the apple
18:07:53 <Slereah> Indeed.
18:08:00 <ehird> ALAN TURING PR0N
18:08:02 <ehird> I mean what
18:08:06 <Slereah> I used that picture on a thread of a /34/ board
18:08:13 <Slereah> Asking for 34 on Alan Turing.
18:08:17 <SimonRC> where (dare I ask)?
18:08:18 <Slereah> so far, no results.
18:08:23 <ehird> Slereah: hah
18:08:25 <SimonRC> ok
18:08:36 <Slereah> http://rule35.paheal.net/rule35/res/2.html#2
18:08:44 <ehird> SimonRC: well hey, there's only about 5 million *chans
18:08:47 <ehird> shouldn't take too long to find ;)
18:08:57 <Slereah> In the post 792
18:09:05 <Slereah> You'd be surprised!
18:09:15 <ehird> Cmd-F
18:09:15 <ehird> http://rule35.paheal.net/rule35/src/12071557881.jpg
18:09:21 <ehird> that was not hard
18:09:30 <ehird> but i must go bleach my brain now
18:09:31 <ehird> byeby
18:09:31 <Slereah> ehird : That's the pix I posted
18:09:31 <ehird> e
18:09:44 <ehird> yes
18:10:25 <Slereah> I even got the "obscura-GET" files, and could find no Turing in it D:
18:10:49 <Slereah> And it's like a few gigabytes hueg.
18:11:40 <lament> you know what sucks
18:11:41 <Slereah> Why am I discussing this.
18:11:44 <Slereah> I forgot.
18:11:50 <ehird> lament: snow white when near alan turing?
18:11:52 <lament> when you're at work and want to play music and you can't cause you're at work
18:11:55 <ehird> OH SNAP
18:12:03 <Slereah> Ah yes, ehird going through my files :D
18:12:04 <lament> wait that's turing? nice
18:12:32 <SimonRC> hehehe: http://youtube.com/watch?v=Z0Pd19bt1NI
18:12:33 <Slereah> ehird : Turing was more of a Prince Charming kind of guy.
18:12:43 <ehird> Slereah: or the gay kind of guy
18:13:05 -!- ineiros has joined.
18:13:41 -!- calamari has joined.
18:13:41 <Slereah> Yes.
18:13:48 <Slereah> He desired head from Prince Charming.
18:14:28 <ehird> oic. irc sucks at linear conversations
18:15:33 <Slereah> http://membres.lycos.fr/bewulf/Russell/Weil.jpg
18:15:34 <Slereah> heh.
18:16:16 <lament> they look nothing alike. One is wearing glasses and the other isn't.
18:16:40 <Slereah> I dunno. I got the impression when I saw Weil for the first time.
18:18:14 <Slereah> http://membres.lycos.fr/bewulf/Russell/Ada2.jpg <- I have this above my bed.
18:18:23 <Slereah> And I also don't know how to take photos.
18:18:43 <SimonRC> you have a weird ceiling
18:19:02 <SimonRC> it lukes lake a worl
18:19:14 <Slereah> Well, it's more of a wall than a ceiling.
18:19:37 <SimonRC> um, yeah
18:19:47 <SimonRC> why did I think 'twere a ceiling?
18:19:53 <Slereah> But it is placed in a lesser gravitational potential than my bed.
18:20:01 <Slereah> Because I said "above my bed", maybe.
18:20:12 <SimonRC> ok
18:20:17 <Slereah> ...
18:20:24 <Slereah> I wonder if there's /34/ of Lovelace.
18:20:31 <ehird> Probably
18:20:34 <Slereah> After all, she is the hottest nerd in history.
18:20:40 <SimonRC> dunno
18:20:59 <SimonRC> I think Samantha Carter beats her for a start
18:21:24 <SimonRC> but is OTOH fictional
18:22:34 <Slereah> She looked less pretty a few years later : http://www-history.mcs.st-andrews.ac.uk/BigPictures/Lovelace_3.jpeg
18:22:39 <Slereah> Cancer does that to you.
18:24:18 <Slereah> Why do I have a pdf in Nepalese?
18:25:39 <ehird> Random idea: There should be a *chan with a board with one rule: You may only post screenshots of that board
18:25:50 <ehird> After a while the recursion would just hurt your eyes.
18:26:23 <lament> infinitecat is better.
18:28:13 <Slereah> Plus, unless you allow infinite definition, it will just be the same at one point.
18:28:41 <ehird> Slereah: Well, no, since it'll start out empty (0)
18:28:48 <ehird> and then every post will add one level of recursion
18:29:07 <ehird> Very soon it will reach the point where the base recursion level is less than one pixel, thus being basically equivalent to infinite recursion as far as bitmaps are concerned
18:29:37 <Slereah> Hell, even at one pixel, can you still call that a screenshot?
18:29:45 <Slereah> Or even 10x10!
18:29:47 <SimonRC> but the page will render differently in differnt browsers
18:30:02 <Slereah> That's not a whole lot of difference.
18:30:08 <SimonRC> so you will get to see several differn titlebars, fonts, etc
18:30:09 <Slereah> The concept can't go on for very long!
18:30:28 <Slereah> It's more thread material than board.
18:30:34 <SimonRC> maybe they should broaden the idea of "screenshot"?
18:31:05 <ehird> no, that's not what i'm saying
18:31:07 <ehird> i am saying, Slereah
18:31:15 <ehird> that the last point of recursion in an image
18:31:18 <ehird> bah
18:31:21 <ehird> hard to explain
18:31:28 <ehird> its an obvious idea but you need to see it to work
18:32:44 <Slereah> Create that board on Elliotthemagicdragon.com
18:33:18 <ehird> heh
18:33:42 <ehird> a friend owns http://cillit-bang.org.uk/
18:33:50 <ehird> i've been considering putting silly stuff like that on there for a while
18:33:54 <ehird> (see also: http://cillit-bang.org.uk/esure, http://cillit-bang.org.uk/rr)
18:35:18 <Slereah> Is it to kill epileptics?
18:35:43 <ehird> Slereah: No, it's just silly.
18:35:45 <ehird> :D
18:35:51 <SimonRC> that seems to be rather ytmndy....
18:35:54 <ehird> the /rr has to be the funniest
18:35:56 <ehird> SimonRC: yeah, quite
18:36:25 <SimonRC> why not just "cillit-bang.ytmnd.com"?
18:37:49 <Slereah> Because if he spends money registering the domain, it's money that won't go to the poor!
18:38:21 <ehird> SimonRC: or- why?
18:42:09 <ehird> faxathisia: you are reddit-famous.. well, reddit-comment famous
18:42:10 <ehird> http://reddit.com/r/programming/info/6ezur/comments/c03nscd
18:45:22 <Slereah> Can you sign my breast fax?
18:48:38 <ehird> heh
18:48:53 <ehird> hmm, it seems that Emacs/SLIME does not support you when editing FORMAT strings
18:48:59 <ehird> it just treats them as plain strings
18:49:00 <ehird> that sucks
18:49:15 <ehird> i need parentheses matching, syntax highlighting, and information at the bottom of FORMAT strings, they're so cryptic :p
18:50:16 <Slereah> Project of the now : do some pseudocode-Lazy Bird translator
18:56:48 -!- jix has quit (Nick collision from services.).
18:56:58 -!- jix has joined.
19:09:27 -!- ehird_ has joined.
19:12:13 <ehird> whoa
19:12:14 <ehird> who is that
19:12:23 <ehird> ehird_: who are you?!
19:12:47 <ehird> eh
19:13:12 <SimonRC> ehird: well, it is on your machine, whoever it is
19:13:16 <ehird> yeah
19:13:20 <ehird> hmm, crap, i don't own ehird_
19:13:39 <SimonRC> find the offending process and kill it?
19:13:44 <ehird> SimonRC: none on my machine
19:13:46 <ehird> must be on the other one
19:17:56 <ehird> is lament an op here?
19:18:09 <ehird> if so, could you kick ehird_? it'll just be using up bandwidth otherwise
19:19:21 <lament> but how do i know which one of you is the real you?
19:19:35 <ehird> i am talking
19:19:42 <ehird> and we both have the same ip
19:19:46 <lament> well, maybe that's because you tied the real ehird up.
19:19:46 <ehird> ergo, that one is a ghost
19:19:55 <ehird> oh just kick it :p
19:20:11 <lament> ehird: you should register your alternate nicks
19:20:16 <lament> so you can ghost them if necessary
19:20:20 <ehird> bit late for that
19:21:57 <ehird> lament: it's disortienting seeing ehird and ehird_ next to each other! :p
19:22:20 <lament> i agree. It's extremely discomforting.
19:22:27 <ehird> haha
19:22:55 <lament> (almost like staring at http://esolangs.org/wiki/Image:Explor.gif )
19:23:53 <ehird> i could pingflood that ehird_ i guess
19:24:07 <ehird> aha
19:24:09 <ehird> it is a ghost
19:24:37 <Slereah> It's an evil twin.
19:24:45 <Slereah> The _ is actually a goatee.
19:25:18 -!- oerjan has joined.
19:25:35 <lament> ehird: routing the pings through microsoft :)
19:25:52 <ehird> hah
19:29:41 -!- ehird_ has quit (Read error: 113 (No route to host)).
19:38:18 -!- olsner has joined.
19:49:02 -!- Iskr has quit ("Leaving").
20:31:40 -!- olsner has quit (Read error: 110 (Connection timed out)).
20:31:42 -!- olsner_ has joined.
20:35:43 -!- Slereah has quit.
20:36:49 -!- Nobody-3C6149 has joined.
20:38:07 <Nobody-3C6149> How to do a loop within a loop in SKI, such that the inner loop will actually end for another iteration of the outer loop?
20:38:11 -!- Nobody-3C6149 has changed nick to Slereah.
20:38:37 <Slereah> For just one loop, I just use the unlambda's v to stop it, but beyond that, I'm not too sure of how to go.
20:38:55 <oerjan> use continuations?
20:39:02 <oerjan> oh wait that's not ski
20:39:06 <Slereah> Lazy Bird no has it3
20:39:47 <oerjan> well you use recursion to do loops of all kinds really
20:40:34 <Slereah> Is it possible to do them all with just one recursion?
20:41:05 <oerjan> i don't quite understand why you don't just write the inner loop by itself?
20:41:51 <oerjan> then use the resulting function inside the outer loop
20:41:53 <Slereah> Well, the problem is the output.
20:42:46 <oerjan> well it should take a parameter of course
20:42:55 <oerjan> even if just a dummy
20:43:06 <Slereah> Since recursion will basically fo f(x) f(f(x)) f(f(f(x))) ..., I don't know how to stop it so that the outside loop can handle the result.
20:43:33 <oerjan> with a conditional
20:43:49 <Slereah> But how to stop a recursion without v
20:43:50 <Slereah> ?
20:44:13 <Slereah> It might stop changing, but not being evaluated in the ways that I know of.
20:44:27 -!- Sgeo[College] has joined.
20:44:48 * SimonRC goes away from here
20:45:07 <Sgeo[College]> Hi all
20:45:12 <Slereah> Hello sir.
20:45:32 <Slereah> So, did you do sum book lurnin Sgeo[College]?
20:47:08 <oerjan> argh
20:47:11 <Sgeo[College]> http://mibbit.com/pb/BqKoed
20:47:33 -!- oerjan has quit ("Brain locked up").
20:48:08 <Sgeo[College]> "What this feature does, is look for any image URLs in the chat. (jpg/jpeg/png/gif). When it finds one, it generates a nice little thumbnail and puts it in the chat, makes it clickable to the original."
20:48:17 <Sgeo[College]> Oh, that's nice and work-safe
20:49:30 <bsmntbombdood> irl quine!
20:49:31 <bsmntbombdood> http://hardware.slashdot.org/article.pl?sid=08/04/07/210205
20:51:06 <Slereah> Heh.
20:51:16 <Slereah> What if it CONVERTS THE WHOLE EARTH TO PRINTERS?
20:56:24 <ehird> Sgeo[College]: because EVERYONE uses irc channels that have nsfw links in
20:56:29 <ehird> totally
20:57:06 <Slereah> All irc channels have nsfw links in them, ehird.
20:57:25 <Slereah> It just requires one member of the upstanding GNAA :o
20:58:08 <bsmntbombdood> like this? http://www.nsfwlinks.com/
21:00:21 <Slereah> You call that NSFW?
21:01:07 <Slereah> http://images.encyclopediadramatica.com/images/thumb/8/8d/Gruesome_small.gif/170px-Gruesome_small.gif
21:02:51 * Sgeo[College] disabled the thumbnails
21:11:46 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
21:29:28 <AnMaster> is CSS turing complete?
21:30:16 <lament> can you simulate a box of apples and a piece of string with CSS?
21:32:53 <AnMaster> hm never tried
21:34:21 <ehird> AnMaster: of course it isn't
21:34:28 <ehird> you can't loop, include, anything
21:34:30 <ehird> it is just
21:34:33 <ehird> selector { key: prop; ... }
21:34:40 <AnMaster> hm
21:34:42 <ehird> well.
21:34:45 <ehird> maybe with @import
21:34:53 <ehird> but i imagine if you @import itself it'll just infiniloop
21:35:09 <ehird> or most likely be ignored
21:35:35 <Slereah> CSS?
21:50:02 <ehird> Slereah: thing that dun make webpaeg pretti
22:15:10 <Slereah> I IS SEEIN
22:44:49 -!- olsner_ has quit ("Leaving").
23:01:58 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
23:05:30 -!- Corun has joined.
23:06:15 <ehird> wowzers
23:06:20 <ehird> this format will be hard to parse
23:06:35 <ehird> i hate humanized syntaxes
23:06:35 <ehird> :D
23:08:25 <Slereah> Dehumanize it.
23:08:28 <Slereah> Put it in a camp.
23:08:32 <Slereah> And genocide it.
2008-04-09
00:06:05 -!- Corun has quit (Connection timed out).
00:16:45 -!- jix has quit ("CommandQ").
00:45:50 <ehird> wow
00:46:00 <ehird> i reinvent monadic parser combinators on a regular basis
00:51:08 <lament> and get kicked out of #python
00:51:10 <lament> :P
01:06:25 -!- Sgeo has joined.
01:13:06 -!- Tritonio_ has joined.
01:14:21 -!- ehird has quit ("This computer has gone to sleep").
05:27:24 <calamari> I've been reading up on porting gcc.. amazingly complicated.. almost esoteric you might say
05:27:54 <pikhq> Well, yeah. What do you think the RTL is besides an esolang? :p
05:30:26 <calamari> do you know RTL?
05:30:48 <pikhq> Nope.
05:31:01 <pikhq> I've seen some examples stepped through, and Jebus.
05:31:23 <calamari> I've been looking in vain for something as simple as a list of the instructions gcc expects me to implement.. seems like a reasonable request.. but it seems to bne nonexistent
06:06:27 -!- adu has joined.
06:24:31 -!- adu has left (?).
06:48:26 -!- Tritonio__ has joined.
06:50:41 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
07:25:29 -!- olsner has joined.
07:30:56 -!- Sgeo has quit (Remote closed the connection).
07:42:47 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:19:06 -!- Iskr has joined.
08:36:32 <AnMaster> hah
09:18:53 -!- GreaseMonkey has joined.
09:21:27 -!- Corun has joined.
09:23:29 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
09:27:19 -!- cmeme has joined.
09:48:02 -!- immibis has joined.
10:02:27 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to).
10:05:27 -!- Corun has quit ("This computer has gone to sleep").
10:06:05 -!- Corun has joined.
10:39:03 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
10:40:11 -!- Judofyr has joined.
10:42:53 -!- GreaseMonkey has quit ("gnight").
10:59:30 <AnMaster> Deewiant, to tell the truth your O in CPLI looks completely messed up
11:03:34 <AnMaster> ah now I see how it works
11:14:22 <Deewiant> what's so messed up about it, looks pretty straightforward to me :-P
11:14:26 <AnMaster> Deewiant, FYI this crashes CCBI with SIGFPE: "ILPC"4(nD@
11:15:15 <Deewiant> it'd crash RC/Funge-98 too, so I guess that's fair?
11:15:17 <Deewiant> :-P
11:15:26 <AnMaster> Deewiant, it won't crash last version of cfunge
11:15:45 <AnMaster> last revision that is, last release lacks the fingerprint in question
11:18:27 <Deewiant> I guess I should do a sweep of the fingerprints and make all division instructions push zero on division by zero
11:51:28 <AnMaster> Deewiant, not for floating point iirc
11:51:42 <AnMaster> they would push NaN or similar
11:51:58 <Deewiant> of course not
11:52:03 <Deewiant> they'd push infinity or NaN
11:52:23 <AnMaster> there is nothing for complex floating point is there?
11:52:28 <AnMaster> no fingerprint I mean
11:52:38 <Deewiant> nope
11:52:55 <AnMaster> because complex integer is quite easy to do by hand in funge
11:53:02 <AnMaster> compared to complex floating point
11:53:31 <Deewiant> apart from the sqrt operation
11:53:34 <AnMaster> well yes
11:53:42 <AnMaster> but FIXP provides that iirc
11:54:17 <Deewiant> yep
11:54:33 <AnMaster> I may make such a fingerprint later, hmm....
11:54:56 <AnMaster> would same layout as FPDP be sane?
11:54:58 <Deewiant> but once you have floating point, making complex floating point is easy too?
11:55:10 <AnMaster> hm yeah it probably is
11:55:23 <AnMaster> except for some stuff
11:55:32 <AnMaster> possibly
11:55:51 <Deewiant> it's the same as CPLI, just using floating point instead?
11:56:10 <Deewiant> with the bonus that the FP*P provide sqrt
11:56:35 <AnMaster> well, would need some more, I don't know English word, but CPLI is missing any way to represent it as "polär form"
11:57:10 <AnMaster> as in re^(iv)
11:57:29 <Deewiant> well sure, translations between polar and cartesian form
11:57:47 <Deewiant> but they'd be pretty easy too
11:57:55 <Deewiant> since FP*P provide trigonometric functions
11:58:44 <AnMaster> and I would hate trying to write de Moivres formula (is that the English name for it?) in funge
11:59:44 <Deewiant> why would you want to? its only relevance is in making exponentiation in polar form easier, you can do that in the math easily
11:59:53 <AnMaster> hm
11:59:57 <AnMaster> true
12:12:33 -!- Corun has quit ("This computer has gone to sleep").
12:17:29 <AnMaster> Deewiant, what about cosh?
12:19:20 <Deewiant> (exp(x) + exp(-x)) / 2
12:19:51 <AnMaster> ok, was just looking at man complex.h for anything that would be hard to do
12:19:58 <Deewiant> :-P
12:20:07 <AnMaster> double complex cproj(double complex);
12:20:11 * AnMaster wonders what that is
12:20:22 <AnMaster> cproj, cprojf, cprojl - project into Riemann Sphere
12:20:24 <AnMaster> huh?
12:21:09 <AnMaster> Deewiant, any clue what that is and/or what it is good for
12:22:09 <Deewiant> "These functions shall compute a projection of z onto the Riemann sphere: z projects to z, except that all complex infinities (even those with one infinite part and one NaN part) project to positive infinity on the real axis."
12:22:33 <AnMaster> yeah and that I basically don't understand
12:22:38 <AnMaster> ie, went over my head
12:22:56 <Deewiant> it's identity unless you have a complex infinity, which becomes +infinity
12:23:09 <AnMaster> ah
12:23:12 <AnMaster> right then I get it
12:23:27 -!- ihope has joined.
12:34:59 <AnMaster> Deewiant, what is the IP.DORMANT mode thing?
12:35:30 <Deewiant> ?
12:35:46 <AnMaster> what exactly does it do
12:35:46 <Deewiant> sounds like TRDS or that other one (IIPC?)
12:35:49 <AnMaster> IIPC
12:35:50 <Deewiant> where is it?
12:36:01 <AnMaster> IIPC, line 34
12:36:15 <AnMaster> I'm wondering what exactly dormant means here
12:36:17 <Deewiant> you can see it all in the main function
12:36:24 <Deewiant> or in the spec :-P
12:36:35 <AnMaster> D ( -- ) Go Dormant until stack is manipulated by another ip
12:36:36 <AnMaster> heah
12:36:37 <AnMaster> yeah*
12:36:45 <AnMaster> still doesn't say what dormant means
12:37:22 <AnMaster> Deewiant, what main function?+
12:37:26 <AnMaster> s/+//
12:37:30 <Deewiant> the main function
12:37:38 <Deewiant> int main(char[][] args) and all that
12:37:39 <Deewiant> :-P
12:37:43 <AnMaster> and what file is it in?
12:37:54 <Deewiant> ccbi.d, where else
12:38:00 <AnMaster> mhm ok
12:38:09 <Deewiant> no, it's in fingerprints/cats_eye/null_.d ;-P
12:38:26 <Deewiant> and isn't that clear? i.e. IP is dormant until its stack is manipulated
12:38:46 <AnMaster> dormant == delta set to 0?
12:39:20 <AnMaster> Deewiant, also, what is case State.UNCHANGING: break; for
12:39:34 <AnMaster> is it so that if ip doesn't move the instruction it is on isn't executed?
12:39:34 <Deewiant> that wouldn't work as it would keep running the D over and over?
12:39:39 <Deewiant> although I guess that wouldn't matter
12:39:50 <Deewiant> AnMaster: state.unchanging means that the state isn't changing
12:39:51 <Deewiant> :-P
12:40:05 <AnMaster> state in this case means position?
12:40:19 <Deewiant> no, it means the state
12:40:22 <Deewiant> whatever there is
12:40:26 <Deewiant> something for TRDS
12:40:27 <Deewiant> one for @
12:40:28 <AnMaster> aha
12:40:30 <Deewiant> one for q IIRC
12:40:53 <AnMaster> no need for state without TRDS I guess
12:41:13 <AnMaster> Deewiant, is the ip mode an enum or something, I can't find where you declare possible modes
12:41:55 <Deewiant> in ip.d probably
12:42:03 * AnMaster looks again
12:42:09 <Deewiant> grep State...
12:42:26 <AnMaster> err mode
12:42:30 <AnMaster> not state
12:42:40 <Deewiant> ah, mode
12:42:48 <Deewiant> that's in ip.d
12:43:06 <Deewiant> the fact that they're accessed by IP.modename is a giveaway...
12:43:34 <AnMaster> cell[128] mapping = void; // for IMAP
12:43:38 <AnMaster> is that really right?
12:43:51 <Deewiant> what would be wrong?
12:43:57 <AnMaster> can IMAP only map for cell values in the first 128?
12:44:16 <AnMaster> can't you may say 220 to be same as k
12:44:26 <Deewiant> that's the way RC/Funge-98 implements it
12:44:35 <AnMaster> that doesn't mean it is correct
12:44:48 <Deewiant> that's the reference implementation
12:44:50 <Deewiant> it's his spec
12:45:01 <Deewiant> we can only assume that the reference implementation is valid
12:45:05 <AnMaster> well I looked at the actual specs...
12:45:12 <Deewiant> which means that anything beyond 127 is undefined
12:45:15 <AnMaster> Deewiant, you assumed that TRDS one was wrong
12:45:23 <AnMaster> some comment says that iirc
12:45:36 <Deewiant> where the spec says something, the spec is right
12:45:44 <Deewiant> where the spec doesn't, the implementation is right
12:45:48 <AnMaster> hm
12:46:09 <Deewiant> and if the spec contradicts the funge-98 spec then it's all crap, like FING :-P
12:46:20 <AnMaster> FNGR not FING iirc
12:46:25 <Deewiant> whatever
12:47:09 <AnMaster> and well "3DSP" whatever it is, defines C as the Cross porduct
12:47:13 <AnMaster> in his specs
12:47:17 <AnMaster> porduct?
12:47:21 <AnMaster> poorduct?
12:47:25 <AnMaster> ;P
12:47:55 <AnMaster> oh I see you don't implement 3DSP
12:50:06 <AnMaster> Deewiant, ?
12:50:58 <Deewiant> nah
12:51:30 <AnMaster> how comes?
12:52:01 <Deewiant> can't remember
12:56:06 <AnMaster> tc x, y;
12:56:06 <AnMaster> static assert (is(typeof(x) == typeof(y)));
12:56:08 <AnMaster> hum
12:56:13 <AnMaster> Deewiant, why whould they differ?
12:57:02 <Deewiant> if I ever change it, who knows
13:02:43 <AnMaster> Deewiant, yes... but x and y would still be same right?
13:03:04 <Deewiant> unless I do int x; short y;
13:03:45 <AnMaster> mhm
13:03:59 * AnMaster still thinks that would be insane and very hard mistake to do
13:04:12 <Deewiant> sure, but I'm not going to go removing it now that I've written it :-P
13:04:24 <Deewiant> I admit I probably wouldn't write it now, if I had to rewrite that
13:04:26 <AnMaster> true, just wondering why you wrote it
13:04:31 <Deewiant> beats me
13:04:51 <AnMaster> TURT looks quite complex hm
13:06:00 <AnMaster> in HRTI, is the ctor thing executed when HRTI is first loaded?
13:06:04 <AnMaster> or when program starts?
13:06:11 <Deewiant> when loaded
13:06:14 <AnMaster> ah ok
13:06:46 <Deewiant> that's what all fingerprintCon/Destructors do - constructor called when loaded, destructor when unloaded
13:13:19 <AnMaster> so it is called *every* time that HRTI is loaded?
13:13:30 <AnMaster> ah right you check for that
13:13:32 <AnMaster> if (resolution == TimeSpan.zero) {
13:15:37 <AnMaster> Deewiant, this is confusing: auto timeMark = Time.min;
13:15:42 <AnMaster> what type is it really
13:15:56 <AnMaster> a timestamp?
13:16:11 <AnMaster> of what kind then
13:16:14 <Deewiant> I don't know
13:16:17 <Deewiant> it's up to the library
13:16:21 <AnMaster> mhm
13:16:46 <Deewiant> it's changed at least twice in the time that CCBI has existed and I'm not sure what it is nowadays ;-)
13:16:49 <Deewiant> probably Time
13:16:59 <Deewiant> which is nowadays, IIRC, a long
13:18:09 <AnMaster> hm your timer got an issue, it does not handle something changing system time I think
13:18:17 <AnMaster> say ntp or similar
13:18:48 <Deewiant> it uses UTC time, no?
13:19:08 <AnMaster> well yes, but that isn't what I meant
13:19:22 <AnMaster> I meant, what if the clock is slightly wrong and is then synced
13:19:31 <AnMaster> by ntp or similiar software
13:19:33 <Deewiant> can't be helped
13:19:36 <Deewiant> how could that be handled?
13:19:38 <AnMaster> hmmmm
13:19:52 <Deewiant> exactly ;-)
13:19:52 <AnMaster> oh and I'm not sure it handles leap seconds btw
13:20:01 <AnMaster> Deewiant, there *may* be ways
13:20:09 <AnMaster> not portable though I think
13:20:13 <AnMaster> sigh
13:20:15 <Deewiant> how would leap seconds be problematic
13:20:28 <Deewiant> the time span should be the same
13:20:37 <AnMaster> hm it would?
13:20:47 <Deewiant> why not?
13:21:06 <Deewiant> whether it's 23:59:60 or 00:00:00 one second after 23:59:59, it's still one second after 23:59:59
13:21:21 <AnMaster> I thought the clock in computers simply changed jumped backwards, instead of actually hitting the :60
13:21:32 <Deewiant> then it's the computer's fault :-P
13:21:41 <AnMaster> but I'm not sure
13:21:53 <AnMaster> Deewiant, anyway mycology fails at leap seconds I suspect?
13:22:00 <Deewiant> how?
13:22:07 <AnMaster> it got a case to print it out?
13:22:14 <Deewiant> it just prints out what it gets
13:22:17 <AnMaster> as it couldn't handle the hours
13:22:24 * AnMaster points to bug he found
13:22:29 <Deewiant> that was a bug
13:22:34 <Deewiant> overlapping code
13:22:35 <Deewiant> or something
13:22:37 <AnMaster> ah
13:23:05 <Deewiant> but yeh, if you tell it that it's 100:666:42 in the year 1234 now then that's what it'll print
13:23:27 <Deewiant> or if it doesn't, it's a bug
13:23:52 <AnMaster> there should be a fingerprint to print the stardate ;)
13:25:50 <AnMaster> Deewiant, what happens to the timer mark across split?
13:26:03 <AnMaster> the standard doesn't say
13:27:00 <Deewiant> split?
13:27:09 <Deewiant> t, you mean?
13:27:13 <AnMaster> yeah
13:27:39 <Deewiant> in CCBI fingerprints aren't kept across t so it doesn't matter?
13:28:01 <AnMaster> hm but the mark is kept across fingerprint unloading for HRTI it seems
13:28:35 <Deewiant> I'd say you should never expect stuff to keep working between loading/unloading
13:28:49 <AnMaster> well REFC probably should...
13:28:56 <Deewiant> I don't think you should
13:29:00 <AnMaster> hm
13:29:08 <Deewiant> in fact, clearing that at unload might be a good idea
13:29:17 <AnMaster> indeed
13:29:36 <Deewiant> although hmm
13:29:41 <AnMaster> I won't clear it though but I will not copy across t
13:29:52 <Deewiant> I have some handling in MODE for leaving modes on after unloading
13:29:54 <AnMaster> (I do copy loaded fingerprints)
13:32:53 <AnMaster> do resolution = Clock.now() - time;
13:32:53 <AnMaster> while (resolution == TimeSpan.zero);
13:32:59 <AnMaster> how does that work
13:33:11 <AnMaster> ie, I don't get how it can work
13:33:47 <Deewiant> why not
13:34:04 <AnMaster> err?
13:34:10 <Deewiant> what don't you get?
13:34:48 <AnMaster> hm does D do some magic to make TimeSpan.zero compare equal to a small number as well as 0?
13:34:58 <Deewiant> no?
13:35:14 <AnMaster> huh then
13:35:24 <Deewiant> what's wrong?
13:35:34 <AnMaster> why the loop then.?
13:35:49 <Deewiant> because we want nonzero?
13:35:58 <AnMaster> hmmm
13:36:09 <AnMaster> Deewiant, what result does that give for you?
13:36:18 <Deewiant> varies run by run
13:36:26 <AnMaster> average?
13:36:29 <Deewiant> can't remember
13:36:32 <Deewiant> check the myco results table
13:37:36 -!- ihope has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]").
13:38:12 <AnMaster> Deewiant, it isn't test in the main mycology?
13:38:34 <Deewiant> it's in the HRTI test of course?
13:38:41 <AnMaster> ah found it
13:38:45 <AnMaster> grep ++
13:39:08 <AnMaster> Deewiant, it says "UNDEF: G gives clock granularity as 2 microseconds" every time here
13:39:23 <Deewiant> great
13:39:30 <AnMaster> hm now it said 1 once
13:40:13 <AnMaster> Deewiant, "UNDEF: G gives clock granularity as 31250 microseconds" from your table heh
13:40:22 <AnMaster> what kind of system was that
13:40:22 <Deewiant> yep
13:40:27 <Deewiant> my windows system
13:40:36 <AnMaster> hm is it better on linux for you
13:40:40 <Deewiant> haven't tried
13:41:04 <AnMaster> Deewiant, would be nice to know, also if your linux system got HPET or not
13:41:21 <AnMaster> because if it doesn't and it get worse result I would guess HPET causes the high resolution here :)
13:41:32 <Deewiant> I would guess that too
13:41:36 <Deewiant> I'll try it later today
13:41:40 <AnMaster> thanks
13:47:07 <AnMaster> oneSecond = TimeSpan.seconds(1).ticks,
13:47:08 <AnMaster> oneMicro = TimeSpan.micros (1).ticks;
13:47:21 <AnMaster> Deewiant, I don't get logic?
13:48:21 <AnMaster> oh right you don't know what units timespan is
13:48:34 <AnMaster> I could hard code it as gettimeofday says it clearly
13:49:43 <AnMaster> Deewiant, why just micro seconds, it seems it is possible to get nano seconds on linux at least :)
13:49:58 <Deewiant> because the HRTI spec says microseconds
13:50:06 <AnMaster> yeah it is a pitty
13:52:37 <AnMaster> CLOCK_MONOTONIC
13:52:38 <AnMaster> Clock that cannot be set and represents monotonic time since some unspecified starting point.
13:52:48 <AnMaster> Deewiant, for clock_gettime, that provides nano seconds
13:52:58 <AnMaster> means it solve the time changed issue
13:53:00 <Deewiant> school computer (Linux 2.6.20-16) gives HRTI granularity as 1
13:53:47 <AnMaster> ok
13:53:51 <AnMaster> nice :)
13:54:03 <AnMaster> Deewiant, not that the result of S is that deterministic heh
13:55:29 <AnMaster> hm this seems nice, some fallback system at runtime needed though
13:58:30 <AnMaster> actually I don't need that
13:58:45 <AnMaster> gettimeofday does micro seconds
13:58:55 <AnMaster> Deewiant, does the school computer have HPET?
13:59:13 <AnMaster> grep hpet /proc/timer_list
13:59:13 <Deewiant> I have no way of knowing?
13:59:14 <AnMaster> iirc
13:59:26 <Deewiant> no such thing as /proc/timer_list
13:59:32 <AnMaster> kernel version?
13:59:38 <Deewiant> said above
13:59:43 <AnMaster> ah
13:59:44 <AnMaster> right
13:59:47 * AnMaster runs .24
13:59:57 <AnMaster> anything else /proc/timer*
13:59:57 <AnMaster> ?
14:00:09 <Deewiant> nope, did /proc/tim<tab> and nothing
14:00:16 <AnMaster> ok
14:00:42 <AnMaster> dmesg | grep -i hpet
14:00:55 <Deewiant> nothing
14:01:01 <AnMaster> ah no hpet then
14:01:09 <AnMaster> guess it is just linux being so much better ;)
14:01:11 <Deewiant> here's something though
14:01:12 <Deewiant> [ 48.914457] Real Time Clock Driver v1.12ac
14:01:19 <Deewiant> [ 48.956310] Time: tsc clocksource has been installed.
14:01:27 <Deewiant> isn't that something special?
14:01:32 <AnMaster> tsc is time stamp counter iirc
14:01:39 <AnMaster> something related to the cpu
14:01:49 <Deewiant> ah, I guess it's just the ordinary TSC then
14:01:54 <AnMaster> quite high resolution but not fixed speed if dynamic cpu speed varies
14:01:55 <AnMaster> iirc
14:02:06 <AnMaster> $ dmesg | grep -i "clocksource has been installed"
14:02:07 <AnMaster> Time: tsc clocksource has been installed.
14:02:07 <AnMaster> Time: hpet clocksource has been installed.
14:02:13 <Deewiant> aye.
14:03:22 <AnMaster> anyway linux normally runs the time source at quite high frequency compared to windows, simply because windows wants backward compatlity
14:03:46 <AnMaster> actually windows may run it at high freq but hide this to user space if they don't use some special interface to check
14:03:47 <AnMaster> I think
14:03:48 <Deewiant> perfectly possible
14:04:03 <Deewiant> I'm looking through MSDN for any 'high-freq' function
14:04:28 <AnMaster> Deewiant, heh, Performance counter or something like that sound familiar
14:04:56 <AnMaster> also beware of using the cpu speed itself as a clock source, which is possible
14:05:08 <AnMaster> think of speedstep and such
14:05:18 <Deewiant> I know I know
14:05:23 <Deewiant> TSC isn't viable on multicore either
14:05:28 <AnMaster> indeed
14:06:22 <fizzie> dmesg says: Clocksource tsc unstable (delta = -124059314 ns)
14:06:31 <AnMaster> very possible
14:06:33 <Deewiant> something similar for me
14:06:42 <Deewiant> and all my dmesg's are offset by 17 seconds or something
14:06:48 <AnMaster> Marking TSC unstable due to cpufreq changes
14:06:49 <AnMaster> Clocksource tsc unstable (delta = -106250033 ns)
14:06:50 <AnMaster> here
14:07:43 <AnMaster> the linux kernel does check if the timer is sane during bootup iirc
14:08:00 -!- Corun has joined.
14:09:08 <Deewiant> I guess queryperformancecounter would be the way to go if I wanted to do that
14:09:47 <AnMaster> yeah, as usual the windows API is messy
14:10:10 <Deewiant> tango.time.Clock uses GetSystemTimeAsFileTime on windows
14:10:15 <Deewiant> and gettimeofday on posix
14:10:37 <AnMaster> windows lacks gettimeofday?
14:11:16 <AnMaster> #define __SLONGWORD_TYPE long int
14:11:17 <AnMaster> typedef __SUSECONDS_T_TYPE __suseconds_t;
14:11:24 <Deewiant> of course it does
14:11:24 <AnMaster> those two lines in different headers
14:11:25 <Deewiant> it's posix
14:11:30 <Deewiant> it's in sys/time.h right?
14:11:44 <AnMaster> it is
14:11:57 <Deewiant> with good accuracy you can say that any posix C header which is in a subdirectory doesn't exist on windows ;-)
14:12:10 <AnMaster> eh?
14:12:17 <AnMaster> ah I see
14:12:18 <Deewiant> i.e. stdio.h exists but not sys/io.h, for instance
14:12:55 <AnMaster> however it must have gettimeofday as that addon crap
14:13:12 <Deewiant> oh sure, it's probably in there
14:13:13 <Deewiant> or in cygwin
14:13:26 <AnMaster> yep
14:13:30 <AnMaster> cygwin would have it
14:23:42 <AnMaster> hm this fingerprint generation script is getting quite advanced
14:23:46 <AnMaster> http://rafb.net/p/XCA7fB82.html
14:23:47 <AnMaster> :)
14:24:15 <Deewiant> :-P
14:24:34 <AnMaster> still need to manually rename the functions but I plan to maybe make it read some spec file instead in the future
14:34:22 -!- vixey has joined.
14:40:39 <AnMaster> Deewiant, micro == 1/100000 right?
14:40:42 <AnMaster> or am I wrong
14:40:48 <RodgerTheGreat> howdy, folks
14:40:49 <Deewiant> one zero more
14:40:56 <AnMaster> a milion hm
14:41:12 <vixey> hi
14:49:41 -!- Corun has quit ("This computer has gone to sleep").
14:55:28 -!- jix has joined.
14:57:31 <vixey> http://www.engr.uconn.edu/~dqg/papers/myth.pdf
14:58:29 <AnMaster> Deewiant, if I store the micro seconds as 32-bit, the highest difference I can represent with signed integers is around 35 minutes
14:58:45 <Deewiant> AnMaster: so don't store them as 32-bit.
14:58:49 <AnMaster> as signed 64-bit I think something like 292 * 1000 years
14:59:08 <Deewiant> I believe Tango does nanoseconds in signed 64-bit.
14:59:10 <AnMaster> Deewiant, well the cell space in funge space is just 32-bit depending on compile time options
14:59:25 <AnMaster> T 'Timer' pushes the number of microseconds elapsed since the last time an IP with this ID marked the timer. If there is no previous mark, acts like r.
14:59:42 <AnMaster> that one will with 32-bit cells be quite limited
14:59:46 <Deewiant> ah, right. you can still store them as higher precision though.
15:00:01 <AnMaster> indeed I will store it as whatever I can represent it as
15:00:08 <AnMaster> in funge-space that is
15:04:02 <RodgerTheGreat> vixey: so, the idea of the paper is that because turing machines cannot receive input or model concurrent applications, they cannot model everything a computer does? I'm not certain I agree with that
15:04:43 <Deewiant> RodgerTheGreat: http://reddit.com/r/programming/info/6et4f/comments/c03nbfi
15:05:16 <RodgerTheGreat> for one thing, you can simulate threads without using threads. Further, I'm not sure what difference there is, computationally, between "batch mode" applications that begin with all their input and interactive applications
15:06:36 <vixey> one is example is that you can't write a server that handles multiple connections in a purely declarative language, you need observable nondeterminisim to do it
15:06:44 <RodgerTheGreat> hm
15:08:22 <RodgerTheGreat> I guess that's the main point I could agree with- real computers can gain entropy from their environment (net lag, etc), while a TM is strictly deterministic
15:09:48 <AnMaster> UNDEF: T after M pushed 46 and a second T, after ff*kyn, pushed 234
15:09:50 <AnMaster> Deewiant, hmm?
15:10:09 <AnMaster> what is that supposed to test?
15:10:31 <Deewiant> that T works
15:11:22 <AnMaster> UNDEF: S pushed 647201
15:11:22 <AnMaster> hm
15:11:38 <AnMaster> ccbi seems to output a result with one more digit
15:11:44 <AnMaster> and this isn't even optimized build
15:12:18 <Deewiant> S?
15:12:29 <Deewiant> or T?
15:12:36 <Deewiant> if S, and you're right, that's a bug
15:12:49 <Deewiant> if T, all I can say is that we've established that cfunge is faster
15:12:52 <AnMaster> UNDEF: S pushed 2943
15:12:53 <AnMaster> :)
15:12:57 <AnMaster> with optimized build
15:13:03 <AnMaster> oh wait
15:13:06 <AnMaster> Deewiant, hm
15:13:14 <Deewiant> S doesn't matter
15:13:17 <AnMaster> right
15:13:28 -!- ehird has joined.
15:13:33 <AnMaster> UNDEF: T after M pushed 7 and a second T, after ff*kyn, pushed 66 for optimized build of cfunge
15:13:42 <AnMaster> UNDEF: T after M pushed 33 and a second T, after ff*kyn, pushed 100666
15:13:45 <AnMaster> from ccbi
15:13:50 <AnMaster> Deewiant, that seems extreme
15:13:56 -!- Corun has joined.
15:14:04 <Deewiant> how?
15:14:13 <AnMaster> such a HUGE difference
15:14:31 <AnMaster> 95725 is the best of ccbi so far
15:14:40 <Deewiant> shrug
15:15:24 <AnMaster> Deewiant, even at -O0 -ggdb3 on cfunge I get less than 300 from T
15:17:15 <AnMaster> Deewiant, oh btw I'm unable to get optimized cfunge to report anything except "UNDEF: G gives clock granularity as 1 microseconds"
15:17:26 <AnMaster> debug build sometimes gives 2 microseconds
15:17:56 <Deewiant> getSysInfo is 305 asm instructions here, with 25 'call's
15:18:11 <AnMaster> that is ccbi one?
15:18:12 <Deewiant> it helps that DMD doesn't inline functions containing loops :-P
15:18:18 <Deewiant> yep
15:18:20 <Deewiant> and on windows
15:18:21 <AnMaster> containing loops!?
15:18:23 <AnMaster> errr
15:18:28 <AnMaster> that makes no sense
15:18:33 <AnMaster> recursive sure it can't inline
15:18:42 <Deewiant> I didn't say it can't
15:18:44 <Deewiant> I said it doesn't :-P
15:18:46 <AnMaster> but ones containing loops should be perfectly possible to inline
15:18:53 <Deewiant> of course they are
15:18:55 <Deewiant> it just doesn'
15:18:56 <Deewiant> t
15:18:56 <AnMaster> why is it?
15:19:01 <Deewiant> I don't know
15:19:46 <Deewiant> which also means that all foreaches are actually function calls
15:19:58 <Deewiant> (on each iteration)
15:20:43 <Deewiant> so foreach_reverse (farg; fungeArgs) pushStringz(farg); is two function calls on each iteration :-)
15:21:52 <Deewiant> AnMaster: how many cells does the stack have after ff*ky?
15:21:57 <Deewiant> 324424 here :-P
15:22:18 <AnMaster> hm will check shortly
15:24:18 <RodgerTheGreat> here's an interesting idea- there are many glove-type devices that can measure the position of a user's hands (mainly for VR applications) - how hard would it be to wear one and learn sign language as a means of text input? How fast do you imagine someone could get?
15:24:57 <RodgerTheGreat> (most sign language "words" require both hands or complex movements, so you'd be largely limited to the alphabet)
15:27:13 <AnMaster> $2 = {size = 316992, top = 316978, entries = 0x2ba8fb318010}
15:27:14 <AnMaster> Deewiant, ^
15:27:28 <Deewiant> entries?
15:27:34 <AnMaster> entries is a pointer
15:27:37 <Deewiant> ah
15:27:40 <AnMaster> to the actual array of items
15:27:45 <AnMaster> top is what you want to look at
15:27:57 <AnMaster> size will be the max size it reached
15:28:05 <Deewiant> hmm, odd size
15:28:09 <Deewiant> how do you grow your stack?
15:28:20 <AnMaster> Deewiant, in chunks of 16 or 32 or such iirc
15:28:27 <AnMaster> #define ALLOCCHUNKSIZE 32
15:28:29 <AnMaster> yeah 32
15:28:33 <Deewiant> right
15:29:27 <AnMaster> Deewiant, so considering differing environment variables and such it seems like the size is reasonable
15:29:44 <Deewiant> yep
15:30:20 <AnMaster> however the 66 I got using -S, because didn't want all the temp files around
15:30:37 <AnMaster> so that means it would only push a subset of the env variables too
15:30:47 <AnMaster> without -S I get this time: 3937
15:31:07 <AnMaster> (and my build dir gets spammed with files like mycotmp0.tmp)
15:31:20 <Deewiant> don't run in your build dir :-)
15:31:27 <AnMaster> Deewiant, hah
15:31:40 <Deewiant> I certainly don't
15:31:51 <AnMaster> a lot easier
15:32:06 <Deewiant> what's so hard about "../cfunge"? :-P
15:32:11 <Deewiant> (for instance)
15:32:21 <AnMaster> Deewiant, oh and with -S it checks what env variables are ok using a perfect hash ;)
15:32:33 <AnMaster> src/instructions/sysinfo-misc/safe_env.gperf
15:32:40 <Deewiant> eh?
15:32:50 <AnMaster> -S is the sandbox mode
15:33:05 <AnMaster> it also only show a whitelist of env variable
15:33:21 <Deewiant> so what's 'white'
15:33:22 <AnMaster> Deewiant, because there may be env variables for stuff like ssh agent or such
15:33:41 <AnMaster> Deewiant, http://rafb.net/p/5lxkRT79.html
15:34:25 <Deewiant> are you sure those apply to non-Linux as well? :-P
15:34:36 <vixey> "I can do that too! I’m an expert at wasting my day, after all"
15:34:37 <AnMaster> I checked on freebsd, linux and openbsd
15:35:47 <AnMaster> Deewiant, didn't have any other system to check on, and on windows it just pushes some place holder variables telling users to get a real OS ;P
15:38:04 <RodgerTheGreat> vixey: lol
15:39:00 <AnMaster> Deewiant, however this shows that pushing 0gnirts is slow
15:39:39 <AnMaster> possibly I should optimize that code
15:39:41 <Deewiant> eh? it's no slower than pushing anything else
15:39:51 <Deewiant> meh >_<
15:39:57 <AnMaster> cfunge: /home/arvid/src/cfunge/trunk/src/fingerprints/HRTI/HRTI.c:58: FingerHRTImark: Assertion `ip->fingerHRTItimestamp != ((void *)0)' failed.
15:39:57 <AnMaster> Itools/fuzz-test.sh: line 112: 13597 Aborted ( ./cfunge -S fuzz.tmp )
15:39:58 <AnMaster> hm
15:40:01 * AnMaster looks
15:40:58 -!- Corun has quit ("This computer has gone to sleep").
15:41:25 <AnMaster> oh threading
15:48:55 -!- oklopol has joined.
15:51:47 <AnMaster> <Deewiant> eh? it's no slower than pushing anything else
15:51:52 <AnMaster> well you could speed it up
15:52:31 <ehird> AnMaster: he could but i don't think he cares much about how fast ccbi is
15:52:45 <AnMaster> no I mean in theory
15:52:52 * vixey anticipates
15:52:54 <AnMaster> not you as in a specific person
15:53:38 <AnMaster> vixey, huh?
15:54:02 <vixey> I want oklotalk :p
15:54:11 <AnMaster> ah
15:58:05 <ehird> oklotalk is cool, yes
15:58:05 <ehird> :D
15:58:11 <ehird> and, oklopol, it must be ready TODAY
15:58:18 <ehird> HA HA HA
15:58:34 <ehird> can i bask in closures and run-time malleability plz
15:58:56 <oklopol> oklotalk-- had to be ready *tomorrow*, i failed to count the days right
15:59:06 <oklopol> but, deadline was moved to 25. :)
15:59:09 <vixey> :(
15:59:12 <oklopol> anyway, the cli is somewhat ready
15:59:25 <ehird> oklopol: you gave me an oklotalk beta once
15:59:26 <oklopol> i can give you an exe for it :-----------)
15:59:27 <ehird> where is it
15:59:29 <ehird> i lost the link
15:59:33 <ehird> you can /msg it
15:59:36 <ehird> (different machine y'see)
15:59:39 <oklopol> ehird: that was very beta
15:59:59 <oklopol> didn't have a parser
16:00:08 <ehird> oklopol: yeah, c'mon
16:00:08 <oklopol> and scoping didn't work
16:00:10 <ehird> i wanna play with it
16:00:23 <ehird> sincey ou're obviously not gonna give me the code to the current version :D
16:00:29 <oklopol> :P
16:01:03 <oklopol> the problem is it doesn't really do anything, because i'm too lazy to add actual functionality
16:01:25 <oklopol> it's somewhat extendable as it is though, so i guess you could add stuff in itself
16:01:43 <ehird> oklopol: well i can't use an .exe
16:01:48 <ehird> being a maccie
16:01:59 <oklopol> i could give you compiled files for the new one.
16:02:19 <oklopol> probably easier to read than my code, even
16:02:21 <oklopol> :-)
16:03:07 -!- shinkuzin has joined.
16:04:03 <ehird> oklopol: but .pyc is no fun
16:04:10 <ehird> i want to hack on it! :p
16:04:12 <oklopol> why not?
16:04:17 <oklopol> heh
16:04:21 <ehird> i am not fluent in python bytecode
16:04:22 <ehird> unfortunately
16:04:23 <ehird> (yet)
16:05:05 <AnMaster> oklopol, oklotalk got a deadline?
16:05:41 <ehird> AnMaster: tomorrow
16:05:44 <ehird> AnMaster: it's for some school thingy
16:05:51 <AnMaster> I see..
16:05:54 <ehird> this is, of course, GREAT for #esoteric
16:05:54 <AnMaster> what is the program in the topic btw?
16:05:57 <ehird> because we get to play with oklotalk
16:06:00 <ehird> AnMaster: ALGOL 60 quine
16:06:03 <ehird> iirc.
16:06:05 <AnMaster> hm
16:06:09 <AnMaster> looks different to me?
16:06:17 <AnMaster> than it was a few days ago
16:06:22 <vixey> hey Ifound something neat
16:06:26 <vixey> a bit of code
16:06:32 <AnMaster> not algol please
16:06:33 <oklopol> what if i put the interp up on a bot?
16:06:48 <AnMaster> oklopol, why not release the source?
16:06:51 <vixey> transitive_closure(Goal,I,O) :- ( call(Goal,I,M) -> transitive_closure(Goal,M,O) ; I=O ).
16:06:52 <vixey> eval --> transitive_closure(beta_reduce).
16:06:55 <oklopol> AnMaster: not yet at least
16:07:01 <AnMaster> hm ok
16:07:07 <AnMaster> oklopol, well you could use a bot I guess
16:07:10 <oklopol> it's not something i like to do
16:07:17 <oklopol> but perhaps, perhaps
16:07:19 <AnMaster> what? open source rocks!
16:07:30 <vixey> beta_reduce(lambda(X,B) $ X,B). beta_reduce(A $ B, Ae $ B) :- beta_reduce(A, Ae). beta_reduce(lambda(X,B), lambda(X,Be)) :- beta_reduce(B,Be).
16:07:39 <vixey> lambda calculus interpreter in Prolog :P
16:07:44 <vixey> in like 5 lines
16:08:02 <vixey> (yes I know it's zero in lisp but Prolog didn't even know what lambda is before)
16:08:24 <ehird> AnMaster: closed source rocks too
16:08:29 <ehird> esp. for something like oklotalk
16:08:35 <AnMaster> ehird, err why?
16:09:00 <vixey> is that not totally cool? :[
16:09:02 <AnMaster> oklopol, if you give me a binary for x86_64 Linux I could try it, or 32-bit freebsd
16:09:02 <ehird> AnMaster: because! :D
16:09:05 <ehird> vixey: yeah very cool
16:09:12 <ehird> vixey: and lisp isn't based on lambda calc, sorry.
16:09:14 <AnMaster> vixey, no idea, I didn't understand it
16:09:20 <ehird> it is strict, has 0-adic functions, and N>1-adic functions
16:09:25 <ehird> and mountains of other things
16:09:29 <ehird> like: not everything is a function
16:09:30 <vixey> no ehird
16:09:33 <vixey> ((((lambda (a) (lambda (b) (lambda (c) ((a b) c)))) (lambda (x) (lambda (y) x))) 'apple) 'banana)
16:09:46 <vixey> takes zero lines of code to write an interpreter for that
16:09:48 <ehird> Haskell is closer, but it cannot represent everything in the LC properly
16:09:57 <ehird> vixey: yes, but that's not LC. it's strict
16:10:03 <ehird> vixey: lambda calculus is *lazily evaluated*
16:10:22 <ehird> λf·(λx·f (x x)) (λx·f (x x))
16:10:26 <ehird> that always diverges in lisp
16:10:29 <ehird> because it requires lazy evaluation
16:10:32 <vixey> lambda calculus isn't a programming language
16:10:33 <ehird> because it recurses infinitely
16:10:41 <ehird> vixey: um, LC is lazily evaluated
16:10:47 <AnMaster> vixey, I think it is turing complete
16:10:52 <ehird> AnMaster: yes, it is
16:10:56 <ehird> but it is LAZILY EVALUATED
16:11:05 <vixey> TC is irrelevant to whether or not somehting is a programming language
16:11:10 <ehird> /sigh
16:11:28 <ehird> vixey: Lisp, even the restricted set you use there, IS NOT the lambda calculus because its semantics differ: It is strictly evaluated.
16:11:30 <vixey> it's not lazy though ehird, there's no evaluation order specified
16:11:35 <ehird> vixey: Non-strict is.
16:11:37 <AnMaster> ehird, also how did you type the upside down y?
16:11:40 <AnMaster> what key combo
16:11:42 <vixey> lol
16:11:44 <vixey> lol
16:12:03 <ehird> λf·(λx·f (x x)) (λx·f (x x)) This always diverges in e.g. Lisp. But it doesn't always in the lambda calculus
16:12:16 <vixey> it doesn't diverge in lambda calculus
16:12:20 <ehird> If you disagree, and state that a system where the Y combinator always diverges is in fact lambda calculus, you are just clueless
16:12:30 <ehird> AnMaster: that's the greek lambda..
16:12:45 <AnMaster> ehird, and that is AltGr + what?
16:12:46 <AnMaster> or ?
16:12:54 <ehird> AnMaster: depends on your OS.
16:12:56 <ehird> go look it up.
16:12:58 <AnMaster> Linux
16:13:02 <ehird> go look it up.
16:13:03 <oklopol> vixey: ehird's point is you cannot me LC in lisp in 0 lines, because it will have different semantics on some stuff
16:13:04 <ehird> i use OS X
16:13:05 <AnMaster> hm
16:13:10 <vixey> I'm not clueless, you're treating lambda calculus as if it's a programming language with defined evaluation rules
16:13:15 <ehird> oklopol: thank you
16:13:16 <vixey> which is comeplete nonsense
16:13:17 <ehird> vixey: it is defined
16:13:24 <ehird> http://en.wikipedia.org/wiki/Lambda_calculus
16:13:27 <ehird> please read the evaluation rules there
16:13:50 <ehird> but since you are not only clueless about the lambda calculus' semantics, but also stubborn to changing them, there is no point debating
16:14:10 <vixey> you're being pretty silly ehird
16:14:30 <oklopol> vixey: evaluating lambda calculus strictly would be like saying 5+5 isn't 10, because 5+5=6+4=7+3=8+2=9+1=10+0=11(+-1) and then continuing forever
16:14:35 <vixey> I never even said that lisp is based on lambda calculus (which it, and ALGOL are) but you seem to have imagined I did
16:14:43 <ehird> not debating this, vixey, you know nothing about LC :)
16:14:52 <ehird> not interested
16:14:54 <vixey> I know more than you about it..
16:14:57 <ehird> haha
16:15:05 <ehird> anyhoo, oklopol ... let's talk oklotalk!
16:15:11 <oklopol> :P
16:15:25 <oklopol> vixey: but you said you can do LC in lisp in 0 lines
16:15:27 <vixey> I have no idea why you are being so rude to me about this and calling me clueless though
16:15:48 <oklopol> and you technically can't, if lisp is defined to fail in some cases
16:15:48 -!- ehird has left (?).
16:15:51 -!- ehird has joined.
16:15:53 <ehird> whoopsie
16:16:22 <ehird> oklopol: don't waste your keystrokes :)
16:16:32 <ehird> i have explained perfectly clearly
16:16:39 <ehird> he's just re-asserting his opinion
16:16:51 <ehird> which is not an opinion but an incorrect fact
16:16:52 <ehird> anyway
16:16:55 <ehird> back to less repetitive things
16:17:23 -!- atsampso1 has joined.
16:17:37 <oklopol> ehird: i guess, i'll put the bot up now.
16:17:41 <vixey> well fuck hanging around here if people are just going to call me clueless
16:17:46 <ehird> oklopol: awwww, but but but :)
16:17:47 -!- vixey has left (?).
16:17:49 <oklopol> :P
16:17:50 <ehird> oh, bye vixie
16:17:51 <ehird> *vixey
16:17:54 <ehird> nice knowing you
16:17:55 <oklopol> i wasn't calling him clueless
16:17:55 <ehird> yes
16:17:57 <ehird> bot!
16:18:07 <ehird> oklopol: if he wants to leave over that, let him
16:18:11 <oklopol> i guess
16:18:53 <oklopol> mwahaha ":: " prefix :PPPPPP
16:19:22 <oklopol> why do i make my prefixes have the space
16:19:26 <oklopol> i don'get it
16:19:27 <ehird> oklopol: i have a better prefix
16:19:27 <oklopol> *don
16:19:30 <oklopol> 't
16:19:30 <ehird> \
16:19:32 <ehird> \2+2
16:19:34 <ehird> no, wit
16:19:37 <ehird> K uses two spaces
16:19:39 <ehird> make your prefix two spaces
16:19:41 <ehird> 2+2
16:19:56 <oklopol> /whois me and think again
16:20:07 <ehird> what do you mean
16:20:08 <AnMaster> eh?
16:20:13 <ehird> :: 2
16:20:15 <ehird> nope
16:20:16 <oklopol> i have no idea how to disable *REMOVING SPACES OFF THE BEGINNING OF A MESSAGE*
16:20:23 <ehird> oh
16:20:24 <oklopol> automatically.
16:20:25 <ehird> um
16:20:27 <ehird> not hard, i guess
16:20:28 <ehird> try
16:20:31 <oklopol> from incoming and outgoing messages
16:20:31 <ehird> '/ a'
16:20:35 <AnMaster> oklopol, my client doesn't remove them
16:20:35 <ehird> maybe
16:20:39 <ehird> oklopol: actually
16:20:39 <AnMaster> like this
16:20:39 <ehird> wait
16:20:40 <oklopol> AnMaster: what client?
16:20:42 <ehird> say something with two spaces
16:20:44 <ehird> i bet it appears fine
16:20:48 <ehird> just doesn't show
16:20:49 <ehird> on your end
16:20:53 <oklopol> f
16:20:57 <AnMaster> oklopol, I know irssi, xchat and erc keep spaces
16:20:57 <oklopol> worked?
16:21:01 <ehird> oklopol: nope
16:21:04 <ehird> ok, try xchat
16:21:05 <oklopol> heh
16:21:07 <ehird> or.. irssi
16:21:08 <ehird> or something
16:21:11 <ehird> but two spaces is such a good prefix
16:21:12 <AnMaster> ehird, erc
16:21:13 <ehird> to pass up
16:21:19 <ehird> AnMaster: oklopol doesn't know any emacs.
16:21:19 <oklopol> well no sensible client would remove them
16:21:23 <oklopol> f f
16:21:23 <ehird> he doesn't have any reason to, afaik
16:21:24 <AnMaster> ah ok true
16:21:28 <oklopol> also midspaces are filtered
16:21:30 <ehird> oklopol: so try another client! :D
16:21:35 <ehird> two spaces is an awesssommme prefix
16:21:39 <oklopol> but this is so nice otherwise...
16:21:39 <AnMaster> oklopol, well stop using that client then
16:21:59 <ehird> oklopol: just use one temporarily
16:22:17 <AnMaster> oklopol, and why mirc :(
16:22:23 <AnMaster> really, there are no worse client
16:22:34 <AnMaster> is*
16:22:44 <ehird> AnMaster: you are interrogating oklopol for using an irc client
16:22:45 <ehird> just sayin'
16:23:08 <oklopol> mirc is very nice in general.
16:23:19 -!- atsampson has quit (Read error: 110 (Connection timed out)).
16:23:19 <oklopol> in my experience, *it's one of the better ones*
16:23:20 <ehird> oklopol: can't you use another for like 2 minutes
16:23:25 <oklopol> :D
16:23:26 <ehird> but yeah, mirc is a good client
16:23:35 <ehird> oklopol: don't you love the idea of two spaces as a prefix
16:23:37 <ehird> i mean seriously
16:23:38 <ehird> it's hilarious
16:23:48 <ehird> one space is better though
16:23:49 <oklopol> i do, but i want it to work on this, there has to be a way...
16:23:51 <ehird> less typing!
16:23:53 <ehird> it's the oklotalk way
16:24:08 <oklopol> it's not really the oklotalk-- way though.
16:24:16 <oklopol> oklotalk-- even has SYNTAX ERRORS :O
16:24:25 <ehird> wait
16:24:29 <ehird> i thought you were making oklotalk
16:24:33 <ehird> just oklotalk--?! :(
16:24:39 <oklopol> currently.
16:24:44 <oklopol> different parsing.
16:24:57 <oklopol> that's the main difference
16:25:19 <oklopol> also lacks a lot of fun stuff, like continuations and... well stuff i can't really explain unless you know the language
16:25:32 <ehird> ah
16:25:33 <ehird> well
16:25:35 <ehird> just use :: then
16:25:37 <ehird> i just wanna try it
16:25:38 <ehird> :D
16:25:41 <oklopol> hehe
16:25:47 <oklopol> okay, i'll put it up
16:26:00 <oklopol> should store state and everything, automatically
16:26:05 <ehird> cool
16:27:42 <ehird> oklopol: you're slow
16:27:43 <ehird> ;)
16:27:53 <oklopol> indeed
16:28:14 <oklopol> took me time to find the bot code i usually use for new bots.
16:28:30 <oklopol> also, once again i've forgotten the privmsg syntax xD
16:28:31 <ehird> cooool
16:28:32 <ehird> [16:28] <vixey> no, you're being a fucking idiot and I'm going to address this. You've confused evaluating an expressing and finding the normal form when it exists and are decided that I'm confused when it's your misake
16:28:41 <ehird> i think calling people a fucking idiot over /msg is against freenode's terms
16:28:43 <ehird> i'ma go ask!
16:28:46 <oklopol> hehe
16:28:54 <ehird> aha, he is in #AutisticParadise
16:28:58 <ehird> poor guy :D
16:28:59 <ehird> oh well
16:29:02 <ehird> still gonna report him!
16:29:06 <ehird> 'cause i'm an ass, you see
16:29:44 <oklopol> poor vixey.
16:29:47 <ehird> yeah
16:29:48 <ehird> poor vixey
16:29:55 <oklopol> harrassed the wrong guy
16:30:09 <ehird> totally
16:32:56 -!- otobot has joined.
16:32:56 -!- otobot has quit (Remote closed the connection).
16:32:59 <oklopol> :D
16:33:03 <oklopol> wtf
16:33:05 <ehird> brillant
16:34:11 -!- vixey has joined.
16:34:22 <ehird> oh amusing
16:34:25 <oklopol> rehi
16:34:27 -!- otobot has joined.
16:34:29 <ehird> :: 2+3
16:34:30 -!- otobot has quit (Remote closed the connection).
16:34:30 <vixey> hi
16:34:33 <oklopol> ... :D
16:34:34 <ehird> haha, i broke otobot :D
16:34:48 <oklopol> ehird: think lisp in syntax.
16:34:59 <oklopol> but i'll fix crashing now
16:35:03 <ehird> oklopol: think 'don't make it break on invalid code' :p
16:35:05 <ehird> very simple fix
16:35:06 <ehird> just do:
16:35:10 <oklopol> yeah, yeah
16:35:14 <ehird> try: oko(code); except e: print >>irc, 'LULZ',e
16:35:16 <oklopol> just saying in case you didn't know
16:35:17 <ehird> or something
16:35:30 <oklopol> i'm doing raw sockets, naturally ;)
16:35:35 <ehird> haha, yeah
16:35:35 <ehird> :D
16:36:36 <ehird> come onnnn :P
16:36:48 <oklopol> sssry, irc has so much going on
16:36:50 -!- otobot has joined.
16:36:54 <AnMaster> :: ööö
16:36:54 <ehird> :: (+ 2 3)
16:36:54 <oklopol> : (+ 4 5)
16:36:58 <AnMaster> : ööö
16:36:58 <ehird> : (+ 2 3)
16:37:01 <oklopol> darn
16:37:02 <ehird> lulz
16:37:03 <AnMaster> does nothing does it?
16:37:05 <ehird> did you forget to print out
16:37:05 <ehird> the result
16:37:06 <ehird> :D
16:37:07 <oklopol> whhell, dind't crash.
16:37:10 <oklopol> i don't think so
16:37:13 <ehird> hmm
16:37:15 <ehird> oklopol: suggestion
16:37:19 <ehird> make it echo everything form the irc sever
16:37:21 <AnMaster> : (+ 1 1)
16:37:23 <ehird> if it says like 'no message to send'
16:37:25 <oklopol> if len(line)>=4 and line[3]==":::":
16:37:27 <oklopol> try:
16:37:27 <ehird> it means you effed up stuff
16:37:29 <oklopol> koed=" ".join(line[4:])
16:37:31 <ehird> uhhh
16:37:31 <oklopol> result=runner.run(koed)
16:37:32 <ehird> oklopol: line[3]
16:37:33 <oklopol> result=result.split("\n")[0]
16:37:34 <ehird> you mean
16:37:35 <oklopol> s.send("PRIVMSG "+line[2]+" :"+result[:200]+"\r\n")
16:37:36 <ehird> line[:3]
16:37:37 <oklopol> except Exception, e:
16:37:39 <oklopol> s.send("PRIVMSG "+line[2]+" :An error: "+str(e))
16:37:39 <oklopol> you fix.
16:37:42 <ehird> oklopol: stoppit
16:37:43 <ehird> i said
16:37:44 <ehird> line[3]
16:37:44 <oklopol> i dno't
16:37:44 <ehird> ->
16:37:45 <ehird> line[:3]
16:37:48 <oklopol> no
16:37:52 -!- Corun has joined.
16:37:53 <ehird> line[3]==":::":
16:37:55 <ehird> [3] is always of length 1
16:37:58 <oklopol> line has everything split by " "
16:38:04 <ehird> ok
16:38:06 <AnMaster> ::: test
16:38:07 <oklopol> so it's
16:38:07 <ehird> oklopol: it goes like this
16:38:09 <AnMaster> :: test
16:38:12 <ehird> :host PRIVMSG channel :foo
16:38:18 <ehird> ok
16:38:20 <ehird> so that's right
16:38:23 <ehird> well
16:38:26 <oklopol> so line[3]==":::" should correct... hmm
16:38:27 <ehird> you forgot
16:38:27 <ehird> \r\n
16:38:29 <ehird> on the exception case
16:38:32 <ehird> and besides
16:38:33 <ehird> print out line
16:38:34 <oklopol> hmm, indeed.
16:38:37 <ehird> and print out everything from the irc server
16:38:40 <ehird> just to help
16:38:53 <AnMaster> oklopol, print out data to and from server on your terminal
16:38:56 <AnMaster> it will help indeed
16:38:56 <oklopol> oh, right, i already do :D
16:39:34 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
16:39:44 <oklopol> we should see errors now.
16:39:49 -!- otobot has joined.
16:39:50 <oklopol> :: (+ 3 4)
16:39:50 <ehird> ::(- 5 3)
16:39:50 <otobot> An error: Int instance has no attribute 'split'
16:39:54 <oklopol> :D
16:39:56 <ehird> durrr
16:39:58 <ehird> you need to repr() it
16:39:58 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
16:40:00 <ehird> or .pretty()
16:40:01 <ehird> or whatever
16:40:03 <ehird> and
16:40:07 <ehird> LET ME DO THE EXAMPLE :P
16:40:22 <oklopol> hehe
16:40:27 -!- otobot has joined.
16:40:28 <ehird> :: (- 5 3)
16:40:28 <otobot> 2
16:40:31 <ehird> :D
16:40:32 <oklopol> cool
16:40:33 <ehird> :: foo
16:40:34 <otobot> foo
16:40:36 <ehird> :: foo+3
16:40:36 <otobot> foo+3
16:40:36 <oklopol> it actually worked
16:40:39 <ehird> :: (+ foo 3)
16:40:39 <otobot> +
16:40:40 <oklopol> (+ foo 3)
16:40:42 <ehird> haha what
16:40:45 <oklopol> hehe
16:40:45 <ehird> why is that +
16:40:48 <ehird> :: (/ 1 0)
16:40:48 <oklopol> :)
16:40:49 <otobot> An error: integer division or modulo by zero
16:40:53 <oklopol> hard to explain.
16:40:55 <ehird> :: (error "DIE DIE DIE")
16:40:55 <otobot> An error: invalid literal for int() with base 10: 'DIE DIE DIE'
16:40:58 <oklopol> but i can if you want
16:40:59 <ehird> :: (error 134)
16:40:59 <otobot> 134
16:41:07 <oklopol> what
16:41:09 <ehird> :: "DIE DIE DIE"
16:41:10 <otobot> DIE DIE DIE
16:41:17 <vixey> :: (+ (+ (+ 0 1) 1) 1)
16:41:17 <otobot> 3
16:41:18 <ehird> :: (+ "DIE DIE DIE" "oklotalk")
16:41:18 <otobot> An error: invalid literal for int() with base 10: 'oklotalk'
16:41:21 <ehird> haha
16:41:22 <oklopol> :D
16:41:23 <ehird> BROKEN
16:41:23 <oklopol> ah
16:41:25 <Deewiant> :: (error 1)
16:41:25 <otobot> 1
16:41:27 <ehird> :: dir
16:41:27 <otobot> dir
16:41:29 <oklopol> oh, right
16:41:30 <ehird> :: (dir *)
16:41:31 <otobot> dir
16:41:33 <ehird> oklopol: make a func list :(
16:41:38 <ehird> :: 'a
16:41:38 <otobot> 'a
16:41:42 <oklopol> hehe, i guess i should
16:41:43 <ehird> :: (set x 2)
16:41:43 <otobot> set
16:41:46 <ehird> :: (= x 2)
16:41:46 <otobot> 2
16:41:49 <ehird> :: x
16:41:49 <otobot> 2
16:41:51 <ehird> succses
16:41:54 <ehird> :: =
16:41:55 <otobot> =
16:41:56 <ehird> hmm
16:42:01 <ehird> oklopol: evaluating a function should show its source
16:42:16 <oklopol> = isn't a function
16:42:18 <oklopol> it's an atom
16:42:24 <oklopol> evaluates to itself :-)
16:42:25 <ehird> well, it works in function position
16:42:27 <ehird> so there
16:42:28 <ehird> oh
16:42:30 <ehird> oklopol: lisp-2?
16:42:34 <ehird> :: (= = 2)
16:42:34 <otobot> 2
16:42:36 <ehird> :: =
16:42:36 <otobot> 2
16:42:39 <ehird> :: (= y 2)
16:42:40 <otobot> 2
16:42:41 <ehird> :: y
16:42:42 <otobot> 2
16:42:43 <ehird> i see
16:42:49 <ehird> so functions are looked up differently from variables
16:42:51 <ehird> two namespaces
16:42:56 <oklopol> (= ...) just happens to be spacial
16:42:59 <oklopol> *special
16:43:07 <oklopol> as is (-> ... ...)
16:43:09 <oklopol> but that's all.
16:43:19 <ehird> okay
16:43:21 <ehird> :: (-> x x)
16:43:22 <otobot> []
16:43:24 <oklopol> (-> ptrn ... ... ...)
16:43:25 <ehird> :: (-> x x) 2
16:43:25 <otobot> []
16:43:28 <oklopol> matches _ on ptrn
16:43:31 <ehird> :: (-> X X) 2
16:43:31 <otobot> []
16:43:32 <oklopol> (= _ 6)
16:43:35 <oklopol> try now
16:43:35 <ehird> BROKENZ
16:43:39 <ehird> :: (-> X X) 2
16:43:40 <otobot> []
16:43:44 <oklopol> err
16:43:44 <ehird> :: (-> _ _) 2
16:43:45 <otobot> []
16:43:48 <ehird> BORKENTALK
16:43:49 <oklopol> (-> x x)
16:43:54 <oklopol> :: (-> x x)
16:43:54 <otobot> []
16:43:58 <oklopol> hmmm
16:44:03 <ehird> :: (= id (-> x x))
16:44:04 <otobot> [x]
16:44:08 <oklopol> (= _ 4)
16:44:08 <ehird> huh
16:44:09 <oklopol> :: (-> x x)
16:44:10 <otobot> []
16:44:10 <ehird> wtf
16:44:12 <oklopol> ...
16:44:16 <vixey> :: [x] 3
16:44:16 <oklopol> :: (= _ 4)
16:44:16 <otobot> 3
16:44:16 <ehird> :: (id 2)
16:44:16 <otobot> An error: 'list' object has no attribute 'clbl'
16:44:17 <otobot> 4
16:44:18 <oklopol> :: (-> x x)
16:44:18 <otobot> 4
16:44:20 <ehird> ID 2 => 3
16:44:21 <oklopol> ehird: see
16:44:22 <ehird> LOL LOL LOL
16:44:26 <ehird> :: (id 2)
16:44:27 <otobot> An error: 'list' object has no attribute 'clbl'
16:44:30 <ehird> hahahahahahahhhhh
16:44:31 <AnMaster> :: ööööööööööööö
16:44:31 <vixey> :: (-> x (-> y x))
16:44:31 <otobot> ööööööööööööö
16:44:31 <otobot> 4
16:44:34 <ehird> oklopol: what IS this
16:44:35 <AnMaster> hm
16:44:36 <oklopol> ehird: (-> ... ...) isn't a function.
16:44:38 <ehird> :: (length 2)
16:44:38 <otobot> 2
16:44:41 <ehird> :: (length "abc")
16:44:42 <otobot> An error: invalid literal for int() with base 10: 'abc'
16:44:45 <ehird> XDXDXD
16:44:45 <AnMaster> :: (+ 2 2)
16:44:46 <otobot> 4
16:44:48 <ehird> what CAN it do, oklopol
16:44:53 <ehird> show me quicksort
16:44:55 <vixey> :: (-> x (-> y y))
16:44:56 <otobot> 4
16:45:00 <oklopol> well i have the rational number quicksort
16:45:01 <vixey> ...
16:45:02 <oklopol> i can show it again
16:45:07 <ehird> shur
16:45:10 <oklopol> vixey: that makes no sense
16:45:17 <oklopol> that's why it's not "working"
16:45:36 <AnMaster> :: (% 5 4)
16:45:36 <otobot> 1
16:45:40 <AnMaster> :: (% 5 0)
16:45:40 <vixey> what's -> ? I thuoght it was lambda
16:45:40 <otobot> An error: integer division or modulo by zero
16:45:43 <AnMaster> ah
16:45:45 <oklopol> http://www.vjn.fi/pb/p535315136.txt
16:45:48 <AnMaster> :: (% 5 -34)
16:45:49 <otobot> An error: Atm instance has no attribute 'call'
16:45:53 <AnMaster> eh?
16:46:02 <ehird> omg oklopol :D
16:46:03 <AnMaster> :: (% 5 (- 0 34))
16:46:04 <otobot> -29
16:46:04 <oklopol> http://www.vjn.fi/pb/p612313333.txt <<< not sure these actually work, but that's all that should.
16:46:08 <ehird> > {(-> x x)} 2
16:46:09 <ehird> :: {(-> x x)} 2
16:46:09 <otobot> 2
16:46:12 <ehird> WHOOOO
16:46:22 <oklopol> static and dynamic scoping, hf
16:46:32 <vixey> :: {(-> x {(-> y x)})} 2 3
16:46:33 <otobot> 3
16:46:36 <AnMaster> oklopol, how do you do sqrt on it?
16:46:39 <ehird> :: (= qs { (-> [] []) (-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t)))))})
16:46:39 <otobot> <<<27796784>>>
16:46:39 <vixey> :/
16:46:40 <oklopol> vixey: lambda is {}
16:46:42 <ehird> wow
16:46:43 <oklopol> somewhat.
16:46:44 <ehird> what is <<<>>>
16:46:44 <vixey> why did that give 3?
16:46:48 <ehird> :: qs
16:46:49 <otobot> <<<27796784>>>
16:46:53 <ehird> :: qs [1 2]
16:46:54 <otobot> [1 2]
16:46:55 <ehird> :: qs [2 1]
16:46:56 <otobot> [2 1]
16:47:00 <oklopol> :O
16:47:01 <oklopol> oh
16:47:01 <ehird> :: (qs [2 1])
16:47:01 <otobot> [1 2]
16:47:04 <oklopol> yeah
16:47:05 <ehird> totally rad
16:47:12 <oklopol> rad?
16:47:16 <ehird> ya
16:47:20 <AnMaster> oklopol, how do you do sqrt?
16:47:20 <oklopol> wuzzat
16:47:24 <vixey> :: ({(-> x {(-> y x)})} 2 3)
16:47:24 <otobot> <<<27843320>>>
16:47:26 <oklopol> AnMaster: i haven't doneit
16:47:28 <oklopol> done it
16:47:31 <AnMaster> ah
16:47:31 <ehird> oklopol: is oklotalk lazy
16:47:37 <oklopol> ehird: no.
16:47:42 <oklopol> well
16:47:43 <vixey> :: (({(-> x {(-> y x)})} 2) 3)
16:47:43 <otobot> 2
16:47:44 <AnMaster> :: (= gcd {(-> [a 0] a) (-> [a b] (' b (% a b)))})
16:47:45 <otobot> <<<27796064>>>
16:47:49 <AnMaster> eh
16:47:57 <AnMaster> what is the <<< >>>?
16:47:58 <ehird> :: (= 1 2)
16:47:58 <otobot> An error: 1 cannot be set.
16:48:02 <ehird> AnMaster: function id
16:48:04 <oklopol> oklotalk is, it differentiates between stuff with side-effects and stuff without it
16:48:07 <oklopol> but oklotalk-- isn't.
16:48:08 <AnMaster> ah
16:48:17 <AnMaster> :: (gcd [5 4])
16:48:17 <otobot> 1
16:48:17 <ehird> :: (= c0 {(-> f {(-> x x)})})
16:48:18 <otobot> <<<27854728>>>
16:48:23 <AnMaster> :: (gcd [237 23])
16:48:23 <otobot> 1
16:48:25 <AnMaster> err
16:48:30 <AnMaster> :: (gcd [8 4])
16:48:30 <otobot> 4
16:48:32 <AnMaster> ah
16:48:33 <AnMaster> :)
16:48:47 <ehird> :: (= cs {(-> n {(-> f {(-> x (f ((n f) x)))})})})
16:48:48 <otobot> <<<27817424>>>
16:48:51 <ehird> :: (cs c0)
16:48:52 <otobot> <<<27755544>>>
16:48:53 <vixey> :: (({(-> xxx {(-> y xxx)})} 2) 3)
16:48:54 <otobot> 2
16:48:54 <oklopol> ehird: please don't hit me, BUT IT DOESN'T HAVE TAIL RECURSION
16:49:12 <ehird> hmm
16:49:16 <ehird> fromchurch n = n (1+) 0
16:49:17 <ehird> right?
16:49:29 <vixey> :: (= cons {(-> car {(-> cdr {(-> f ((f car) cdr)))})})})
16:49:29 <otobot> An error: Unmatching parens @ row 1.
16:49:35 <ehird> :: (= c2n {(-> n ((n {(-> x (+ 1 x))}) 0))})
16:49:35 <otobot> <<<27882920>>>
16:49:36 <oklopol> hmm
16:49:40 <ehird> :: (c2n (cs c0))
16:49:40 <otobot> 1
16:49:45 <ehird> woot
16:49:47 <ehird> church numerals
16:49:49 <vixey> :: (= cons {(-> car {(-> cdr {(-> f ((f car) cdr))})})})
16:49:49 <otobot> <<<27900144>>>
16:49:55 <ehird> am i a qualified oklotalker now, oklopol?
16:49:58 <oklopol> :O
16:50:00 <ehird> i picked up the language soooooo fast
16:50:05 <ehird> :: (c2n (cs (cs c0)))
16:50:05 <otobot> 2
16:50:12 <ehird> i am so cool
16:50:13 <ehird> am i not
16:50:19 <oklopol> ehird: well it's the perfect language, so i can't blame you ;;)
16:50:30 <ehird> oklopol: with some synatx yeh
16:50:37 <oklopol> anyway, i guess i have to understand your example
16:50:38 <oklopol> wait
16:50:42 <oklopol> oh
16:50:42 <ehird> gonna edit the code in emacs now, simpler
16:50:42 <oklopol> right
16:51:40 <AnMaster> Deewiant, there?
16:51:42 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))})
16:51:42 <otobot> <<<27853488>>>
16:51:51 <vixey> :: (car ((cons 1) 2))
16:51:51 <otobot> 1
16:51:52 <AnMaster> Deewiant, does ccbi handle iterating over @ in a sane way?
16:52:06 <oklopol> hehe
16:52:07 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr cdr)})}))})
16:52:08 <otobot> <<<27783416>>>
16:52:12 <AnMaster> Deewiant, and wtf should it do, would it just kill ip, or would it kill n ips?
16:52:15 <vixey> :: (= cdr {(-> cons (cons {(-> car {(-> cdr cdr)})}))})
16:52:16 <otobot> <<<27808952>>>
16:52:17 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))})
16:52:18 <otobot> <<<27754784>>>
16:52:21 <oklopol> i made currying in actual oklotalk once, i think
16:52:22 <ehird> :: (= plus {(-> m {(-> n {(-> f {(-> x ((m f) ((n f) x)))})})})})
16:52:22 <otobot> <<<27830592>>>
16:52:32 <ehird> :: (c2n (plus (cs c0) (cs c0))
16:52:32 <otobot> An error: Unmatching parens @ row 1.
16:52:33 <ehird> :: (c2n (plus (cs c0) (cs c0)))
16:52:34 <otobot> <<<27884680>>>
16:52:37 <ehird> ...
16:52:40 <oklopol> also pretty easy in python
16:52:41 <ehird> goddamn
16:52:42 <oklopol> hmm
16:52:44 <ehird> :(((
16:52:49 <Deewiant> AnMaster: in CCBI it'd only kill the current IP
16:53:01 <AnMaster> Deewiant, well atm mine cause a valgrind error
16:53:02 <AnMaster> heh
16:53:11 <Deewiant> AnMaster: IIRC @ is one of those 'special optimizations' ;-P
16:53:13 <oklopol> ehird: did you fail?
16:53:13 <Deewiant> in k
16:53:17 <ehird> dfdfdffs
16:53:20 <ehird> oklopol: yes
16:53:22 <ehird> that should be 2
16:53:24 <ehird> that c2n i did
16:53:32 <ehird> :: (= plus {(-> m {(-> n {(-> f {(-> x ((m f) ((n f) x)))})})})})
16:53:32 <otobot> <<<27863880>>>
16:53:33 <ehird> plus is wrong
16:53:35 <AnMaster> Deewiant, well I just want to make it sane in this case, avoid valgrind error that is
16:53:40 <oklopol> yeah
16:53:43 <ehird> oklopol: plus is my translation of:
16:53:43 <ehird> plus ≡ λm.λn.λf.λx. m f (n f x)
16:54:34 <ehird> :: (= inf {(-> x (x x))})
16:54:35 <otobot> <<<27795824>>>
16:54:35 <vixey> :: (car (cdr (cdr ((cons 1) ((cons 2) ((cons 3) 0))) )))
16:54:36 <otobot> 3
16:54:36 <ehird> :: (inf inf)
16:54:37 <otobot> An error: maximum recursion depth exceeded in cmp
16:54:41 <ehird> aw sheesh
16:54:44 <ehird> you use PYTHON'S STACK
16:54:47 <ehird> that is TOTALLY lame
16:54:50 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
16:54:51 <oklopol> yes.
16:54:56 <oklopol> that's why i don't have tail recursion
16:55:09 <ehird> :: []
16:55:10 <otobot> []
16:55:10 <ehird> :: [{}]
16:55:11 <otobot> [<<<35741088>>>]
16:55:13 <oklopol> i used my own stack first, but... you know, i'm lazy
16:55:13 <ehird> :: {} 2
16:55:14 <otobot> 2
16:55:17 <ehird> huh whut
16:55:19 <ehird> :: ({} 2)
16:55:19 <otobot> f
16:55:22 <ehird> uhh
16:55:22 <ehird> 'f'
16:55:24 <ehird> riiiiiight
16:55:26 <oklopol> false
16:55:30 <ehird> oh
16:55:32 <oklopol> automatically returned if nothing applies
16:55:34 <ehird> oklopol: take a hint from lisp
16:55:37 <ehird> make false the empty list
16:55:41 <ehird> and call it nil
16:55:43 <ehird> so nil = {}
16:55:46 <ehird> and {} is printed as nil
16:55:47 <oklopol> :: ({(-> [a b] 4)} 6)
16:55:47 <otobot> f
16:55:53 <ehird> then 'true' is just the symbol 't'
16:56:01 <ehird> which by virtue of oklotalk is already self-evaluating
16:56:03 <oklopol> :: (and 2 4)
16:56:03 <ehird> mmm yes :D
16:56:04 <otobot> f
16:56:09 <oklopol> :: (& 2 4)
16:56:10 <otobot> True
16:56:13 <oklopol> what :D
16:56:13 <ehird> doodoodododododoooo eeeet
16:56:18 <oklopol> sorry, that's a bit wrong.
16:56:21 <vixey> how is it different frorm lisp?
16:56:23 <ehird> oklopol: doooo eeeeeeeet
16:56:28 <ehird> vixey: thats just the syntax
16:56:33 <ehird> oklopol: Show vixey the real oklotalk quicksort
16:56:41 <ehird> srsly :D
16:56:41 <AnMaster> :: (- + -)
16:56:41 <otobot> -
16:56:46 <oklopol> oklotalk doesn't really have anything to do with lisps
16:56:48 <AnMaster> :: (- - -)
16:56:49 <otobot> -
16:56:52 <AnMaster> :: (+ - -)
16:56:53 <otobot> +
16:56:53 <ehird> oklopol: plzzor show him
16:56:54 <AnMaster> hm?
16:56:55 <ehird> i want to see it too
16:57:08 <AnMaster> oklopol, that makes no sense whatsoever
16:57:25 <ehird> AnMaster: his error handling is 'hard to explain'
16:57:29 <oklopol> AnMaster: indeed, you wrote weird code.
16:57:31 <ehird> AnMaster: it returns the function name.
16:57:34 <oklopol> thanks for pointing that out
16:57:39 <ehird> oklopol: but show us the oklosort!!
16:57:47 <AnMaster> oklopol, ok... so why did that happen?
16:58:10 <oklopol> quicksort... that quicksort would be {->;h:t->{h>}\t+[t]+$ {h<=}\t}
16:58:11 <oklopol> i think
16:58:14 <ehird> oklopol: no
16:58:17 <ehird> i mean the real quicksort
16:58:18 <ehird> of oklotalk
16:58:22 <ehird> unless you changed it to look like that
16:58:24 <ehird> because THAT SUCKS
16:58:26 <ehird> i preferred the old syntax
16:58:28 <oklopol> :D
16:58:29 <ehird> with loads of symbols
16:58:34 <oklopol> it hasn't really changed.
16:58:34 <ehird> oklopol: don't tell me you changed it
16:58:37 <ehird> i'll kill you, in your sleep
16:58:43 <ehird> i want to see the REAL one that i remember
16:58:43 <oklopol> it's just, you can do it in like 1000 ways
16:58:45 <ehird> it was awesome
16:58:50 <ehird> show me the reaeaaaal one
16:58:52 <ehird> that you showed before
16:58:52 <oklopol> :D
16:59:02 <oklopol> what one... you can paste it, i can tell you if it works...
16:59:09 <ehird> oklopol: i dun wanna dig up logs
16:59:11 <ehird> but it had things like
16:59:14 <ehird> {}%()£$)_D>+>AS}
16:59:15 <ehird> or something
16:59:17 <oklopol> :D
16:59:18 <ehird> it was something like that
16:59:20 <ehird> really symboly
16:59:21 <oklopol> wtf xD
16:59:21 <ehird> and cool
16:59:26 <ehird> awww just show me
16:59:27 <oklopol> § ?
16:59:36 <oklopol> that used to be the atom character
16:59:43 <oklopol> now it's $
16:59:48 <ehird> oklopol: no
16:59:53 <ehird> seriously, just the oklotalk quicksort
16:59:54 <oklopol> also \ -> / in that one
16:59:55 <ehird> that you used to show people
17:00:01 <oklopol> i always rewrite it.
17:00:06 <ehird> i will try and find it
17:00:07 <oklopol> sry
17:01:06 <oklopol> AnMaster: atoms cannot be called, (+ - -) forces + to be called with [$- $-], but as atoms cannot be called, it just returns itself
17:01:18 <ehird> oklopol: it didn't have {} as the first-last chars
17:01:19 <ehird> i think
17:01:22 <oklopol> while it should return $f, indeed, doesn't really matter.
17:01:26 <AnMaster> :: (+ wtf err?)
17:01:26 <otobot> +
17:01:30 <AnMaster> hm
17:01:30 <oklopol> ehird: that was cise, perhaps?
17:01:39 <ehird> oklopol: no
17:01:39 <oklopol> cise has quicksort in like 8 characters
17:01:40 <ehird> it wasn't
17:01:42 <ehird> this was ages ago
17:01:44 <ehird> like 2007
17:01:44 <AnMaster> oklopol, how do you do a string?
17:01:55 <oklopol> :: "lol"
17:01:55 <otobot> lol
17:01:57 <vixey> cons up church numerals of course
17:01:58 <AnMaster> and what about puts/printf or similar?
17:01:59 <AnMaster> oklopol, ?
17:02:01 <vixey> :p
17:02:03 <oklopol> :: (outn "lol")
17:02:03 <otobot> lol
17:02:06 <oklopol> prints in my terminal.
17:02:10 <AnMaster> :: (+ "what" "not really")
17:02:10 <otobot> An error: invalid literal for int() with base 10: 'not really'
17:02:13 <oklopol> hehe
17:02:16 <oklopol> i should have that
17:02:16 <AnMaster> nice error
17:02:16 <oklopol> wait
17:02:28 <AnMaster> :: (+ (outn "what") "not really")
17:02:28 <otobot> An error: invalid literal for int() with base 10: 'not really'
17:02:36 <AnMaster> :: (+ (outn "what") (outn "not really"))
17:02:36 <otobot> An error: invalid literal for int() with base 10: 'not really'
17:02:39 <AnMaster> hm
17:03:06 <oklopol> hmm
17:03:10 <oklopol> i should make reload
17:03:45 <ehird> oklopol: cooooooooooool, i have an a^nb^n problem
17:03:47 <ehird> in my markup system!
17:03:49 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
17:03:49 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
17:03:56 <ehird> it matches *a*, ***a***, and ****a**** as bold
17:03:56 <oklopol> ehird: what?
17:03:58 <ehird> but not **a*
17:03:59 <ehird> :D
17:04:01 -!- otobot has joined.
17:04:06 <AnMaster> oklopol, you forgot PING PONG?
17:04:09 <oklopol> :: (+ "asd" "fase")
17:04:09 <otobot> asdfase
17:04:10 <ehird> so i can't use regexps
17:04:15 <oklopol> AnMaster: no
17:04:16 <ehird> AnMaster: freenode has no ping timeouts
17:04:19 <oklopol> i fixxored the bot a bit
17:04:24 <AnMaster> ehird, they do TCP timeouts indeed
17:04:27 <AnMaster> :: (+ (outn "what") (outn "not really"))
17:04:27 <otobot> whatnot really
17:04:41 <AnMaster> :: (- "foo" "oo")
17:04:41 <otobot> f
17:04:43 <AnMaster> :D
17:04:45 <oklopol> :O
17:04:46 <AnMaster> :: (- "foof" "oo")
17:04:46 <otobot> f
17:04:51 <AnMaster> no that makes no sense
17:04:51 <oklopol> that's coincidence
17:04:52 <ehird> AnMaster: that's not up to them
17:04:52 <oklopol> heh
17:04:54 <ehird> that's just tcp timing out
17:04:59 <AnMaster> :: (- "goof" "oo")
17:04:59 <otobot> f
17:05:01 <AnMaster> ah
17:05:06 -!- Judofyr has joined.
17:05:07 <ehird> AnMaster: f = false
17:05:08 <AnMaster> :: (- "good" "oo")
17:05:08 <otobot> f
17:05:11 <AnMaster> ah ok
17:05:13 <AnMaster> right
17:05:23 <AnMaster> oklopol, otherwise that would be cool
17:05:29 <AnMaster> :: (- 0 3)
17:05:30 <otobot> -3
17:05:38 <oklopol> i can add whatevery you want, or you can add yourself, by making (= str {...})
17:05:41 <oklopol> *whatever
17:05:42 <AnMaster> how comes - can evaluate to false?
17:05:49 <oklopol> err
17:05:53 <ehird> AnMaster: when the pattern match fails
17:05:54 <oklopol> - is the atom $-
17:05:58 <ehird> :: $a
17:05:59 <otobot> a
17:05:59 <oklopol> IT DOESN'T DO ANYTHING, EVER
17:06:00 <ehird> :: $$a
17:06:01 <otobot> $a
17:06:02 <AnMaster> ok
17:06:03 <ehird> :: $$$$$a
17:06:03 <otobot> $$$$a
17:06:06 <ehird> $ is like quote
17:06:06 <ehird> :D
17:06:12 <ehird> :: $
17:06:14 <oklopol> ehird: not really :D
17:06:16 <ehird> :: $$
17:06:21 <ehird> oklopol: did it just print out an empty atom
17:06:22 <ehird> XD
17:06:23 <ehird> ::
17:06:28 <oklopol> dunno :D
17:06:32 <AnMaster> :: (% "foo" -1)
17:06:33 <ehird> :: help
17:06:35 <AnMaster> hm?
17:06:36 <ehird> I WANNA COMMAND LIST
17:06:39 <oklopol> did it crash
17:06:40 <ehird> haha
17:06:41 <ehird> we broke it
17:06:43 <oklopol> :: (+ 4 5)
17:06:45 <ehird> i think my $ broke it
17:06:46 <ehird> it still wants input
17:06:47 <oklopol> perhaps
17:06:49 <ehird> to complete the symbol
17:06:53 <ehird> but can't get any
17:06:58 <AnMaster> haha
17:06:59 <oklopol> haha
17:07:05 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
17:07:09 <oklopol> wait a sex
17:07:14 <ehird> a sex?
17:07:15 <ehird> yes plz
17:07:17 <AnMaster> a sex?
17:07:21 <oklopol> xD
17:07:23 <ehird> is this otobot sex
17:07:26 <oklopol> parser infloops xDD
17:07:26 <ehird> because that sounds painful
17:07:29 <oklopol> :DDDDDDDDDDDDDDDDD
17:07:33 * oklopol is lolling
17:07:53 <ehird> turing complete parser
17:07:53 <ehird> OMG
17:07:59 <ehird> oklopol: make a language with a turing complete parser
17:08:20 <AnMaster> eh
17:08:28 <AnMaster> ehird, what exactly does that mean
17:08:49 <ehird> AnMaster: depending on the input text the parser can perform arbitary computations
17:08:59 <ehird> so, you could write a program which runs a brainfuck program *entirely by its syntax*
17:09:00 <AnMaster> ehird, tried the C preprocessor?
17:09:02 <vixey> again,
17:09:07 <ehird> cpp is not TC
17:09:09 <vixey> how is this differetn from lisp?
17:09:09 <ehird> and that's not what i mean
17:09:12 <AnMaster> ehird, hm true
17:09:17 <ehird> i mean like the actual parsing
17:09:18 <vixey> while(1) { cpp } is turing complete
17:09:19 <AnMaster> it is 99-bottles of bear complete
17:09:19 <ehird> is turing complete
17:09:24 <ehird> bear
17:09:25 <ehird> XD
17:09:30 <AnMaster> beer*
17:09:34 -!- otobot has joined.
17:09:35 <AnMaster> I always mix them up
17:09:40 <AnMaster> :: $$
17:09:41 <otobot> $
17:09:46 <AnMaster> :: $$$
17:09:46 <otobot> $$
17:09:46 <oklopol> ehird: oklotalk actually has state lists, which are basically made for parsing
17:09:54 <AnMaster> :: (% "foo" -1)
17:09:54 <otobot> f
17:09:55 <ehird> oklopol: can i have a list of commands
17:10:04 <AnMaster> :: (+ 32.41 -1)
17:10:04 <otobot> An error: Application consists of 2 or 3 expressions.
17:10:08 <AnMaster> :: (+ 32.41 1)
17:10:08 <otobot> An error: Application consists of 2 or 3 expressions.
17:10:10 <oklopol> ehird: i already gave
17:10:14 <ehird> oklopol: where
17:10:15 <oklopol> http://www.vjn.fi/pb/p612313333.txt
17:10:18 <AnMaster> oklopol, how do you do floating points?
17:10:27 <oklopol> AnMaster: don't exist?
17:10:32 <AnMaster> ok
17:10:32 <oklopol> i mean
17:10:34 <oklopol> they don't
17:10:36 <AnMaster> oklopol, no sqrt yet?
17:10:37 <ehird> :: (\ {} [1 2 3])
17:10:37 <otobot> []
17:10:38 <oklopol> you have my rational numbers.
17:10:41 <ehird> :: .
17:10:42 <otobot> .
17:10:48 <ehird> oklopol: variadic?
17:10:51 <ehird> can i do variadiiiic
17:10:56 <AnMaster> oklopol, rational numbers hm?
17:11:14 <AnMaster> oklopol, so how do you do 1/3 to it?
17:11:16 <oklopol> vixey: how is oklotalk-- different from lisp?
17:11:16 <ehird> :: (= . {(-> a b {(-> c (a (b c)))})})
17:11:17 <otobot> <<<27780600>>>
17:11:19 <oklopol> wtf :D
17:11:27 <ehird> = not
17:11:30 <ehird> :: (not 1)
17:11:31 <otobot> 1
17:11:32 <ehird> :: (not f)
17:11:33 <otobot> not
17:11:34 <oklopol> lisp isn't even one of the contributors to it
17:11:42 <oklopol> i didn't know lisp when i made most of it
17:11:48 <ehird> :: (= not {(-> f t) (-> _ f)})
17:11:49 <otobot> <<<27793048>>>
17:11:54 <ehird> :: (not f)
17:11:54 <otobot> t
17:11:55 <ehird> :: (not t)
17:11:55 <otobot> t
17:11:58 <ehird> WTF
17:12:02 <oklopol> hmm
17:12:03 <oklopol> hehe
17:12:05 <ehird> :: (not $t)
17:12:05 <otobot> t
17:12:07 <oklopol> perhaps i should add not :D
17:12:11 <ehird> borkering
17:12:12 <oklopol> wait
17:12:22 <AnMaster> :: (! 1)
17:12:23 <otobot> 1
17:12:23 <oklopol> ehird: no
17:12:25 <AnMaster> :: (! +)
17:12:25 <otobot> !
17:12:29 <EgoBot> Huh?
17:12:29 <oklopol> it calls $t with $not as arg
17:12:32 <AnMaster> thanks for making no sense
17:12:32 <oklopol> returning $not
17:12:34 <oklopol> i think.
17:12:38 <ehird> oklopol: hahahahahahahahahahahaha whut
17:12:50 <ehird> :: (. and or)
17:12:51 <otobot> <<<27804096>>>
17:12:59 <oklopol> second arg is called if first is an atom.
17:13:01 <ehird> :: (. outn outn)
17:13:02 <otobot> <<<27793328>>>
17:13:07 <ehird> :: ((. outn outn) "hi")
17:13:07 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:11 <ehird> fgh
17:13:13 <oklopol> in oklotalk--, it's actually that simple, i think
17:13:14 <oklopol> hmm
17:13:15 <ehird> :: (= hi "hi")
17:13:16 <otobot> hi
17:13:19 <ehird> :: ((. outn outn) hi)
17:13:20 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:23 <ehird> dfg';dfg'df'glg'f;dl'd;fl';fgdl;'d
17:13:27 <oklopol> wtf :P
17:13:28 <ehird> :: (= onon (. outn outn))
17:13:29 <otobot> <<<27819424>>>
17:13:31 <ehird> :: (onon hi)
17:13:31 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:39 <ehird> i love my life
17:13:43 <oklopol> i haven't really done anything with strings
17:13:48 <oklopol> but...
17:13:48 <oklopol> hmm
17:13:51 <ehird> oklopol: string = list of int
17:13:52 <ehird> :D
17:13:57 <AnMaster> :: (sqrt 3 4)
17:13:58 <oklopol> should be, but isn't.
17:13:58 <otobot> f
17:14:19 <AnMaster> oklopol, is it turing complete?
17:14:24 <ehird> AnMaster: yes
17:14:24 <oklopol> the problem is, it's not something i can just whip out my ass to fix it
17:14:28 <oklopol> AnMaster: trivial to make ski
17:14:28 <ehird> AnMaster: it has closures
17:14:33 <ehird> AnMaster: ergo it is TC
17:14:34 <AnMaster> hm ok
17:14:34 <ehird> well
17:14:36 <ehird> pretty much
17:14:39 <ehird> AnMaster: you can do the lambda calculus in it
17:14:44 <oklopol> yeah
17:14:48 <ehird> \x.E -> {(-> x E)}
17:14:53 <ehird> xy -> (x y)
17:14:54 <oklopol> but now to tackle those strings...
17:14:55 <AnMaster> ehird, no I can't, because I don't know bambda
17:14:55 <ehird> tada, LC
17:14:57 <AnMaster> :P
17:15:00 <oklopol> :: (. "a " "s")
17:15:01 <otobot> <<<27842680>>>
17:15:01 <ehird> AnMaster: you suck
17:15:07 <AnMaster> heheh
17:15:13 <vixey> you don't really want O(n) append on strings
17:15:13 <AnMaster> lambda*
17:15:24 <oklopol> vixey: what?
17:15:36 <oklopol> lists don't have O(1) append
17:15:42 <AnMaster> oklopol, what does the (. ) thing do
17:15:44 <AnMaster> the . that is
17:15:44 <ehird> you can make O(1) lists
17:15:48 <ehird> oklopol: make O(1) lists!
17:15:50 <ehird> just store the pointer to the end
17:15:55 <ehird> :D
17:16:02 <oklopol> python does that for me, duh
17:16:06 <ehird> bah
17:16:08 <oklopol> :P
17:16:42 <oklopol> ehird: i promise i'll start working on a c version or something
17:16:50 <oklopol> dunno what language, but some other than python
17:16:52 <oklopol> or...
17:17:08 <oklopol> i could just do what everyone keeps telling me and start making the compiler in itself
17:17:15 <AnMaster> oklopol, can you write an oklotalk interpreter in oklotalk?
17:17:21 <ehird> AnMaster: right on the mark!
17:17:23 <ehird> two seconds
17:17:23 <AnMaster> hm
17:17:24 <ehird> congrats
17:17:26 <oklopol> well, actually you *can't*
17:17:27 <AnMaster> sounds too hard
17:17:32 <AnMaster> ehird, eh?
17:17:39 <oklopol> strings cannot be splitted in any way.
17:17:44 <oklopol> but that's trivial to add ofc
17:17:45 <oklopol> and
17:17:47 <AnMaster> ehird, wtf do you mean?
17:17:55 <oklopol> i should really just do string -> [int] as ehird said
17:17:59 <AnMaster> ehird, ?
17:18:06 <oklopol> AnMaster: that we said the same thing
17:18:10 <AnMaster> ah
17:18:18 <AnMaster> <AnMaster> oklopol, can you write an oklotalk interpreter in oklotalk? <oklopol> i could just do what everyone keeps telling me and start making the compiler in itself
17:18:24 <oklopol> ehird needs an interpreter
17:18:24 <AnMaster> one second difference here
17:18:30 <oklopol> ah
17:18:49 <Deewiant> 7 second difference here
17:18:58 <AnMaster> I guess I lagged, or ehird wouldn't have acted like that
17:19:12 <ehird> i am a pure function in ST
17:19:15 <ehird> i have state packets.
17:19:30 <ehird> ehird :: String -> StateT WTFs ST Nonsense
17:19:46 <ehird> ehird "HELLO" => "GO DIE IN A FIRE"
17:19:52 <ehird> ehird "rocks" => "AAAAAAAAAAAAA"
17:20:01 <ehird> ehird "" => string of infinite length
17:20:06 <vixey> what language is that?
17:20:08 <ehird> ehird (string of infinite length) => string of -1 length
17:20:15 <ehird> vixey: well, haskell, but the => is meaning 'evaluates to'
17:20:21 <ehird> the previous was just my types
17:20:22 <ehird> :D
17:20:40 <vixey> what's the difference from = and =>?
17:20:46 <ehird> that was examples
17:20:48 <ehird> not a definition
17:20:53 <AnMaster> ehird "ehird" => ???
17:20:54 <vixey> ah ok
17:21:03 <oklopol> ("ehird" "ehird")
17:21:08 <oklopol> :: ("ehird" "ehird")
17:21:09 <otobot> f
17:21:11 <AnMaster> hah
17:21:13 <oklopol> :: (. "ehird" "ehird")
17:21:14 <otobot> <<<27841920>>>
17:21:19 <oklopol> wtf :P
17:21:19 <ehird> AnMaster: ehird "ehird" => "stop being a goddamn smart ass trying to make me specify this function earlier I HATE YOU AND ALL YOUR GODDAMN FAMILY which is made of meat"
17:21:31 <oklopol> :: (:;: "ehird" "ehird")
17:21:32 <otobot> f
17:21:38 <AnMaster> :: (= ehird (outn "ehird!"))
17:21:38 <otobot> ehird!
17:21:43 <AnMaster> :: (ehird)
17:21:43 <otobot> An error: Application consists of 2 or 3 expressions.
17:21:44 <oklopol> why does . have a different behavior :O
17:21:45 <AnMaster> err
17:21:49 <AnMaster> oklopol, ??
17:21:53 <oklopol> PARSE ERROR :OOOOO
17:22:02 <oklopol> the world of oklotalk cries
17:22:13 <ehird> [17:21] <otobot> An error: Application consists of 2 or 3 expressions.
17:22:16 <ehird> only one :(
17:22:17 <ehird> arg
17:22:18 <oklopol> AnMaster: that's an invalid application
17:22:20 <ehird> *only one arg
17:22:27 <ehird> no wait
17:22:29 <oklopol> hmm?
17:22:31 <ehird> only 1 or 2 args
17:22:38 <ehird> [17:21] <otobot> An error: Application consists of 2 or 3 expressions.
17:22:38 <oklopol> well
17:22:41 <AnMaster> oklopol, so how do you define a function now again
17:22:48 <oklopol> "2-3 expressions" is better
17:22:51 <ehird> AnMaster: {...pattern...}
17:22:56 <ehird> AnMaster: pattern is (-> PATTERN EXPR)
17:22:59 <ehird> {(-> x x)}
17:23:01 <ehird> is identity
17:23:08 <ehird> {(-> [a b] a) (-> foo bar)}
17:23:09 <AnMaster> :: (= ehird {(outn "ehird!")})
17:23:09 <otobot> <<<27828632>>>
17:23:11 <oklopol> ehird: it is not (function arg arg ...)
17:23:11 <ehird> maps [a b] to a
17:23:13 <ehird> and foo to bar
17:23:13 <ehird> XD
17:23:14 <AnMaster> : (ehird)
17:23:16 <AnMaster> :: (ehird)
17:23:16 <otobot> An error: Application consists of 2 or 3 expressions.
17:23:18 <AnMaster> err
17:23:19 <ehird> AnMaster: uh... PATTERN
17:23:20 <oklopol> it is (expression expression{1,2})
17:23:23 <AnMaster> hm
17:23:25 <ehird> AnMaster: pattern is (-> PATTERN EXPR)
17:23:30 <AnMaster> hm....
17:23:35 <ehird> :: (= ehird {(-> x (outn "ehird!"))})
17:23:35 <otobot> <<<27818864>>>
17:23:38 <ehird> :: (ehird f)
17:23:38 <otobot> ehird!
17:23:40 <AnMaster> aha!
17:23:41 <oklopol> -> takes any number of expressions
17:23:49 <AnMaster> :: (ehird))
17:23:49 <otobot> An error: Unmatching parens @ row 1.
17:23:51 <AnMaster> :: (ehird)
17:23:51 <otobot> An error: Application consists of 2 or 3 expressions.
17:23:53 <AnMaster> so...
17:24:10 <AnMaster> do I get this right? it does not accept functions taking no arguments
17:24:14 <AnMaster> ie, procedures?
17:24:24 <vixey> {(-> <name> <expression> ...)} makes sense
17:24:26 <oklopol> AnMaster: more like, it's not like thet
17:24:32 <ehird> AnMaster: procs can only take 1 argument that you define yourself
17:24:33 <vixey> but what is {..} and (-> ...) alone?
17:24:34 <oklopol> *that
17:24:36 <ehird> but + etc can take 2
17:24:39 <ehird> because they'er magic
17:24:42 <ehird> this is a very early prototype ofc
17:24:45 <ehird> vixey: nonsense
17:24:45 <AnMaster> oklopol, how do you refer to an argument in the function body?
17:24:45 <oklopol> AnMaster: what should (proc) do?
17:24:47 <ehird> vixey: :)
17:24:56 <ehird> AnMaster: name it
17:24:57 <vixey> so why not just write
17:24:57 <AnMaster> oklopol, something like: :: (= hi {(-> x (outn "Hi $1!"))})
17:24:58 <oklopol> THERE ARE NO FUNCTIONS, THERE ARE THINGS.
17:24:59 <ehird> {(-> x x)}
17:25:03 <vixey> {-> <name> <expression> ...}
17:25:06 <oklopol> think function where appropriate
17:25:10 <oklopol> think object where approriate.
17:25:11 <ehird> vixey: its pattern matching
17:25:13 <oklopol> it's not lisp.
17:25:17 <ehird> vixey: you can have multiple patterns
17:25:30 <vixey> can you make new types?
17:25:31 <AnMaster> oklopol, something like: :: (= hi {(-> x (outn (+ "Hi " (+ x "!")))})
17:25:34 <AnMaster> maybe?
17:25:37 <oklopol> vixey: i have the rational type
17:25:38 <oklopol> kinda.
17:25:40 <ehird> vixey: yes, just make them into functions
17:25:43 <oklopol> it's made functionally thuogh
17:25:45 <oklopol> *though
17:25:49 <AnMaster> ;; (= hi {(-> x (outn (+ "Hi " (+ x "!")))})
17:25:51 <ehird> vixey: see rational class: http://www.vjn.fi/pb/p612313333.txt
17:25:51 <AnMaster> :: (= hi {(-> x (outn (+ "Hi " (+ x "!")))})
17:25:52 <otobot> An error: Unmatching parens @ row 1.
17:25:53 <ehird> err wrait
17:25:53 <oklopol> you can make it mutable though, why not
17:25:54 <AnMaster> err
17:26:02 <ehird> http://www.vjn.fi/pb/p535315136.txt
17:26:03 <AnMaster> :: (= hi {(-> x (outn (+ "Hi " (+ x "!"))))})
17:26:03 <otobot> <<<27767632>>>
17:26:06 <ehird> AnMaster: http://www.vjn.fi/pb/p535315136.txt (= rat starts there
17:26:07 <ehird> err
17:26:09 <ehird> vixey
17:26:10 <AnMaster> :: (hi "test")
17:26:10 <otobot> Hi test!
17:26:13 <AnMaster> yay!
17:26:15 <AnMaster> it worked!!
17:26:18 <oklopol> heh
17:26:24 <ehird> :: <-- comment -->
17:26:24 <otobot> f
17:26:28 <oklopol> ::
17:26:28 -!- otobot has quit (Remote closed the connection).
17:26:29 <ehird> :: (+ <-- comment --> 2)
17:26:30 <oklopol> xD
17:26:32 <ehird> :(
17:26:34 <oklopol> okay, whit
17:26:35 <oklopol> *shit
17:26:51 <vixey> ahh cool
17:27:05 -!- otobot has joined.
17:27:10 <ehird> :: (+ <-- comment --> 2)
17:27:10 <otobot> 2
17:27:11 <AnMaster> oklopol, is + varadic?
17:27:13 <ehird> looool
17:27:15 <AnMaster> :: (= hello {(-> x (outn (+ "Hello " x "!"))))})
17:27:16 <ehird> :: (+ 1 2 3)
17:27:16 <otobot> An error: Unmatching parens @ row 1.
17:27:16 <otobot> An error: Application consists of 2 or 3 expressions.
17:27:18 <ehird> AnMaster: no
17:27:19 <AnMaster> :: (= hello {(-> x (outn (+ "Hello " x "!")))})
17:27:19 <ehird> :)
17:27:19 <otobot> An error: Application consists of 2 or 3 expressions.
17:27:23 <AnMaster> sigh
17:27:29 <AnMaster> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:27:29 <otobot> <<<25658472>>>
17:27:30 <oklopol> AnMaster: I'M ONLY GOING TO TELL THIS ONCE MORE, + ISN'T A FUNCTION
17:27:31 <oklopol> IT'S AN ATOM
17:27:32 <ehird> :: (+ <-- comment --> 2) <-- so a comment actually evaluates to a value? -->
17:27:33 <otobot> 2
17:27:35 <oklopol> IT DOESN'T DO ANYTHING
17:27:38 <AnMaster> :: (hi "world")
17:27:38 <otobot> Hello, world!
17:27:40 <ehird> :: (+ <-- comment --> 1 1)
17:27:40 <otobot> 2
17:27:42 <ehird> hmm
17:27:43 <ehird> weird
17:27:44 <AnMaster> oklopol, ok whatever
17:27:45 <ehird> :: (+ 2)
17:27:45 <otobot> 2
17:27:46 <oklopol> ATOMS, BY DEFINITION, ARE THE ONE THING THAT *CANNOT* BE CALLED
17:27:47 <ehird> aha
17:27:47 <oklopol> :D
17:28:00 <AnMaster> oklopol, ok right
17:28:12 <AnMaster> oklopol, yet my example above worked, didn't it?
17:28:16 <oklopol> the evaluation goes like this in an application
17:28:24 <oklopol> hmm
17:28:29 <oklopol> AnMaster: what exactly?
17:28:35 <AnMaster> <AnMaster> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:28:35 <oklopol> (= hello {(-> x (outn (+ "Hello " x "!"))))}) ?
17:28:37 <AnMaster> <AnMaster> :: (hi "world")
17:28:37 <AnMaster> <otobot> Hello, world!
17:28:38 <oklopol> no it didn't
17:28:48 <AnMaster> looks to me like it did?
17:28:59 <AnMaster> it did produce what I intended it to
17:29:03 <oklopol> whmm
17:29:10 <ehird> :: (= hello {(-> x (outn (+ "Hello " x "!"))))})
17:29:10 <otobot> An error: Unmatching parens @ row 1.
17:29:17 <ehird> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:29:17 <otobot> <<<25698552>>>
17:29:20 <ehird> :: (hi "world")
17:29:20 <otobot> Hello, world!
17:29:23 <ehird> aha
17:29:25 <oklopol> oh
17:29:25 <ehird> i know why!!
17:29:27 <ehird> you defined 'hi' before
17:29:28 <oklopol> (+ )
17:29:32 <ehird> oh wait
17:29:33 <ehird> duh
17:29:34 <ehird> of course
17:29:34 <ehird> right
17:29:35 <ehird> okay
17:29:37 <AnMaster> what?
17:29:40 <ehird> AnMaster: of course it worked
17:29:41 <ehird> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:29:41 <otobot> <<<25708064>>>
17:29:43 <ehird> what's not working about that
17:29:48 <oklopol> :: (+ 1 2 3)
17:29:49 <otobot> An error: Application consists of 2 or 3 expressions.
17:29:49 <AnMaster> ehird, indeed
17:29:57 <AnMaster> just it seems oklopol said it didn't work
17:30:01 <oklopol> AnMaster: i assumed you were doing something like a varadic +
17:30:08 <AnMaster> <oklopol> no it didn't
17:30:25 <AnMaster> oklopol, well varadic stuff would help IMO
17:30:33 <oklopol> well
17:30:37 <oklopol> defined semantics, please
17:30:40 <oklopol> (+ 1 2 3)
17:30:43 <oklopol> what should that do
17:30:46 <ehird> oklopol: is 1+2+3
17:30:53 <oklopol> ah, well
17:30:59 -!- shinkuzin has quit (No route to host).
17:31:04 <ehird> but the point is
17:31:07 <ehird> oklotalk will be infix
17:31:09 <oklopol> as you see, this is just alternative syntax over infix & prefix
17:31:12 <ehird> when it loses its --
17:31:15 <oklopol> that's why only 2 or 3
17:31:17 <ehird> so it would make no sense
17:31:17 <oklopol> expressions
17:31:22 <ehird> yeah
17:31:24 <ehird> it's APL-style
17:31:27 <oklopol> ya
17:31:29 <ehird> APL only has unary and binary functions too
17:31:34 <ehird> and it was used a lot :)
17:31:47 <ehird> :: (+ [1 2 3] [4 5 6])
17:31:48 <oklopol> and it's still *awesome*
17:31:48 <otobot> [1 2 3 4 5 6]
17:31:55 <ehird> oklopol: uhh, make it an arary language plz
17:31:56 <ehird> :(
17:32:01 <oklopol> arary?
17:32:06 <ehird> that should be [5 7 9]
17:32:09 <ehird> that's how apl, k, etc do it
17:32:13 <ehird> array languages r0x
17:32:14 <ehird> :D
17:32:15 <oklopol> hmm
17:32:21 <ehird> (∼R∈R∘.×R)/R←1↓⍳R
17:32:27 <ehird> that's a prime number finder
17:32:33 <ehird> concise because of the array stuffs
17:32:53 <ehird> oklopol: this sorts according to word length, and works with any N-dimensions of array:
17:32:54 <ehird> X[⍋X+.≠' ';]
17:33:00 <oklopol> well as you see, it's just what i decide lists to do on +... but as lists are things of their own, they should really have semantics for "+" on their level
17:33:06 <oklopol> which would be concatenation level.
17:33:10 <ehird> oklopol: noo, in array languages
17:33:13 <ehird> its not up to the function
17:33:18 <AnMaster> ehird, that used non ascii
17:33:22 <ehird> (op [1 2 3] [4 5 6]) is:
17:33:27 <ehird> [(op 1 4) ...]
17:33:27 <ehird> etc
17:33:28 <AnMaster> you want to try /dev/urandom next?
17:33:30 <ehird> that's language-level
17:33:36 <ehird> AnMaster: uhm, apl uses non-ascii
17:33:37 <oklopol> ehird: god no
17:33:38 <ehird> it predates ascii
17:33:40 <oklopol> :<
17:33:45 <ehird> oklopol: that's why they're so short
17:33:45 <ehird> :D
17:33:54 <oklopol> oklotalk wins apl in many cases.
17:34:32 <oklopol> also, at some point it became about being nice to add types and extend syntax... so it's more like semi-short, and nice to use
17:34:39 <oklopol> (nice to use for me)
17:34:43 <oklopol> (:D)
17:34:44 <ehird> oklopol: aha, that's what i wanted originally
17:34:51 <ehird> you agree! mwahaha
17:34:54 <oklopol> omg!
17:35:00 <AnMaster> ::
17:35:03 <AnMaster> :: ::
17:35:03 <otobot> ::
17:35:08 <AnMaster> :: \
17:35:08 <otobot> ftr
17:35:11 <AnMaster> eh?
17:35:15 <oklopol> filter.
17:35:22 <AnMaster> oklopol, huh?
17:35:30 <oklopol> :: (\ {(< _ 2)} [1 2 3])
17:35:30 <AnMaster> it filtered my line?
17:35:31 <otobot> [1]
17:35:35 <AnMaster> :: \ 0 1
17:35:36 <otobot> 1
17:35:38 <AnMaster> :: \ 0 1 3
17:35:38 <otobot> 3
17:35:42 <AnMaster> :: \ 0 1 3 5 6
17:35:42 <otobot> 6
17:35:44 <ehird> AnMaster: forgot parens
17:35:45 <oklopol> that just evaluates the symbols.
17:35:47 <AnMaster> ah
17:35:52 <AnMaster> :: \\
17:35:52 <otobot> \\
17:36:03 <AnMaster> :: (\ 4 2)
17:36:03 <otobot> An error: 'int' object is not iterable
17:36:13 <AnMaster> :: (\ [4 5] [2])
17:36:14 <otobot> []
17:36:19 <AnMaster> :: (\ [4 2 5] [2])
17:36:19 <otobot> []
17:36:22 <AnMaster> eh
17:36:23 <oklopol> whut :)
17:36:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
17:36:27 <AnMaster> you got to tell me how that works
17:36:31 <oklopol> hehe
17:36:32 <oklopol> well
17:36:34 <AnMaster> because I can't figure it out
17:36:35 <oklopol> (\ func list)
17:36:46 <oklopol> lists can be used as a function though...
17:37:01 -!- Judofyr has joined.
17:37:09 <AnMaster> :: (\ [2 3 5])
17:37:10 <otobot> An error: 'int' object is not iterable
17:37:15 <AnMaster> um?
17:37:35 <AnMaster> :: (\ [2 3 5] [5 6])
17:37:35 <otobot> []
17:37:42 * AnMaster gives up
17:37:50 <oklopol> hmm
17:37:52 <oklopol> [] isn't a list
17:37:54 <oklopol> -..
17:37:55 <oklopol> function
17:38:02 <oklopol> give it a function as second arg
17:38:10 <AnMaster> oklopol, what is a list then
17:38:15 <oklopol> [...]
17:38:18 <oklopol> [] isn't a function
17:38:19 <oklopol> i meant
17:38:21 <AnMaster> ah
17:38:33 <AnMaster> ehird, anyway you could do that array stuff in other languages, operator overloading in C++ could do it
17:38:38 <ehird> oklopol: i am going to make a python lisp now, where EVERYTHING is first-class
17:38:48 <ehird> AnMaster: its about the paradigm. you could do stack-based programming in c++ too
17:38:52 <AnMaster> so arrayobject + otherarrayobject caused them to be added the way you want
17:39:08 <ehird> oklopol: the parser, the callstack
17:39:09 <ehird> everything
17:39:16 <oklopol> :: reload
17:39:16 <otobot> reload
17:39:18 <oklopol> hm
17:39:26 <ehird> oklopol: good idea or not :D
17:39:29 <oklopol> :: (= d 5)
17:39:29 <otobot> 5
17:39:30 <oklopol> :: d
17:39:31 <otobot> 5
17:39:32 <oklopol> :: reload
17:39:33 <otobot> reload
17:39:34 <oklopol> :: d
17:39:35 <otobot> d
17:39:38 <oklopol> ehird: very
17:39:43 <AnMaster> :: (= = x {(outn(1))}
17:39:43 <otobot> An error: Unmatching parens @ row 1.
17:39:44 <oklopol> hmmmm let's see now...
17:39:47 <AnMaster> :: (= = x {(outn(1))})
17:39:48 <otobot> An error: Unmatching parens @ row 1.
17:39:54 <ehird> oklopol: here's another example:
17:40:04 <ehird> first class macros
17:40:10 <AnMaster> :: (= = x {( (outn(x)) )})
17:40:10 <otobot> An error: Unmatching parens @ row 1.
17:40:11 <AnMaster> err
17:40:18 <AnMaster> are they unmatched?
17:40:21 <oklopol> :: (map [1 2 3 4 5] [[$! 2] [$! 1] [$! 0]])
17:40:21 <otobot> An error: Lst instance has no attribute '__len__'
17:40:24 <oklopol> :<
17:40:24 <AnMaster> oklopol, I can't see them being that
17:40:32 <oklopol> AnMaster: nothing works atm
17:40:34 <oklopol> wait a sex
17:40:46 <oklopol> errrrr
17:40:51 <oklopol> actually
17:40:52 <AnMaster> x != c
17:41:02 <ehird> oklopol: if ==> #<macro (c t e) (cond (c t) (else e))>
17:41:05 <ehird> and you can do
17:41:08 <ehird> no wait
17:41:09 <ehird> that would be
17:41:10 <oklopol> AnMaster: well you have too many args for ==
17:41:12 <oklopol> *=
17:41:16 <AnMaster> oklopol, hm ok
17:41:17 <ehird> #<macro args=(c t e) body=((cond (c t) (else e)))>
17:41:19 <ehird> and you could do
17:41:20 <ehird> (field
17:41:20 <oklopol> it's the wrong error, but an error still
17:41:22 <ehird> er
17:41:24 <ehird> (field 'args if)
17:41:27 <ehird> and get (c t e)
17:41:34 <AnMaster> :: (= = {(-> (outn(x)) )})
17:41:34 <otobot> An error: Unmatching parens @ row 1.
17:41:40 <AnMaster> no I don't
17:41:40 <oklopol> hmm
17:41:43 <oklopol> well...
17:41:50 <AnMaster> they *are* matched
17:41:53 <AnMaster> :: (= + {(-> (outn(x)) )})
17:41:54 <otobot> An error: Unmatching parens @ row 1.
17:41:55 <oklopol> :: (= = {(-> (outn x) )})
17:41:56 <otobot> <<<25760392>>>
17:42:00 <AnMaster> :: (= a {(-> (outn(x)) )})
17:42:01 <otobot> An error: Unmatching parens @ row 1.
17:42:05 <ehird> AnMaster: why have (x) around the arg
17:42:05 <oklopol> :: (= 5)
17:42:06 <otobot> An error: Assignment consists of 2 args.
17:42:07 <ehird> that makes no sense
17:42:25 <AnMaster> ehird, hm right
17:42:26 <oklopol> ehird: perhaps to evaluate it? :D
17:42:41 <AnMaster> oklopol, yeah could be
17:42:45 <AnMaster> :: (= a {(-> (outn (x)) )})
17:42:46 <otobot> An error: Application consists of 2 or 3 expressions.
17:42:48 <oklopol> anyway
17:42:52 <oklopol> you don't do it like that
17:42:54 <AnMaster> :: (= a {(-> (outn (x x)) )})
17:42:54 <otobot> <<<25761432>>>
17:42:55 <AnMaster> :D
17:42:57 <oklopol> yarr
17:43:01 <ehird> haha
17:43:03 <AnMaster> :: (a a)
17:43:03 <otobot> An error: Lst instance has no attribute '__len__'
17:43:06 <AnMaster> ?
17:43:09 <oklopol> btw. siisii would crash it and such...
17:43:10 <oklopol> hm
17:43:10 <AnMaster> :: (a 1 2)
17:43:11 <otobot> An error: Lst instance has no attribute '__len__'
17:43:12 <ehird> AnMaster: you missed the arg name
17:43:17 <ehird> :: (= a {(-> x (outn (x x)) )})
17:43:18 <otobot> <<<25701112>>>
17:43:18 <AnMaster> ah right
17:43:19 <ehird> :: (a a)
17:43:20 <otobot> An error: maximum recursion depth exceeded
17:43:24 <oklopol> hehe
17:43:27 <ehird> python's stack has a limit
17:43:27 <ehird> :P
17:43:29 <AnMaster> :: (= = {(-> (outn (x x)) )})
17:43:30 <otobot> <<<35563400>>>
17:43:32 <AnMaster> :: (= = {(-> x (outn (x x)) )})
17:43:33 <otobot> <<<35556728>>>
17:43:38 <AnMaster> :: (x a)
17:43:39 <otobot> An error: maximum recursion depth exceeded
17:43:43 <AnMaster> :: (= a)
17:43:43 <otobot> An error: Assignment consists of 2 args.
17:43:45 <AnMaster> hm
17:43:45 <ehird> AnMaster: = is special cased
17:43:48 <AnMaster> aww
17:43:52 <AnMaster> :(
17:43:59 <ehird> AnMaster: otherwise the var name would be evaluated
17:44:07 <AnMaster> :: <-- non closed comment
17:44:07 <otobot> f
17:44:10 <AnMaster> aww
17:44:11 <oklopol> ehird: btw. look at the comparisons in the rational example
17:44:16 <oklopol> fun? :D
17:44:17 <ehird> oklopol: why
17:44:20 <oklopol> well
17:44:26 <ehird> hmm, wait..
17:44:26 <oklopol> just the code, i kinda like it
17:44:27 <AnMaster> :: (<-- non closed comment
17:44:27 <otobot> An error: Empty application.
17:44:28 <ehird> oh cool
17:44:29 <ehird> yes
17:44:29 <ehird> awesome
17:44:33 <ehird> (-> [(@ o [$any [$> $< $>= $<=]]) (/ dn dd)]
17:44:33 <ehird> (o (* n dd) (* dn d)))
17:44:35 <oklopol> you get it?
17:44:36 <ehird> that's nice
17:44:39 <oklopol> well
17:44:40 <AnMaster> :: @
17:44:41 <otobot> @
17:44:43 <oklopol> should be (any ...)
17:44:47 <AnMaster> :: (@ @)
17:44:47 <otobot> @
17:44:50 <oklopol> special functions should be as applications
17:44:53 <oklopol> in pattern matching
17:45:08 <oklopol> but... didn't change it yet, not that it's that hard, but i have to change all my test progs
17:45:09 <AnMaster> :: (¶ 1)
17:45:09 <otobot> An error: Atm instance has no attribute '__len__'
17:45:13 <oklopol> hmm :D
17:45:18 <oklopol> aaaaaaaaaaaaah
17:45:18 <AnMaster> oklopol, what exactly does that error mean
17:45:30 <oklopol> well the error is in my implementation
17:45:34 <oklopol> it shouldn't be there
17:45:42 <oklopol> but i fixed it, in my head, like a second ago
17:45:43 <oklopol> so wait
17:45:48 <AnMaster> :: (+ ½ 1)
17:45:48 <otobot> +
17:45:55 <vixey> lol
17:45:56 <AnMaster> oklopol, THAT SHOULD WORK! ½ is rational
17:46:01 <AnMaster> 1/2 == rational :P
17:46:02 <ehird> haha
17:46:41 <AnMaster> :D
17:47:18 <oklopol> :: reload
17:47:19 <otobot> reload
17:47:29 <AnMaster> oklopol, what does reload do?
17:47:33 <oklopol> retry something that said __len__ doesn't work
17:47:41 <ehird> oklopol: name my crazy pythonlispfirstclassawesome
17:47:41 <AnMaster> :: (¶ 1)
17:47:43 <otobot> 1
17:47:57 <AnMaster> ehird, plisp?
17:47:59 <oklopol> ehird: well you could steal the name soup?
17:48:00 <AnMaster> plip?
17:48:06 <oklopol> i hear the soup people haven't really gotten much done
17:48:10 <ehird> oklopol: haha
17:48:12 <ehird> BUT THEY WILL
17:48:13 <ehird> SOON
17:48:17 <AnMaster> :: (+ ½ 1)
17:48:18 <otobot> +
17:48:21 <AnMaster> sigh
17:48:39 <oklopol> right, you're one of those "THE SOUP WILL RISE AGAIN" cooks... well i myself am not that optimistic.
17:48:39 <vixey> what more can you make first class than procedures and continuations?
17:48:39 <AnMaster> oklopol, would be cool if that actually worked
17:48:39 <ehird> vixey: function source code
17:48:39 <AnMaster> would make it way more esoteric
17:48:40 <oklopol> :D
17:48:40 <ehird> vixey: internal interpreter source
17:48:44 <ehird> vixey: the parser
17:48:46 <ehird> etc
17:48:49 <ehird> oklopol: XD
17:48:53 <AnMaster> oklopol, it's the unicode symbol for 1/2...
17:48:53 <AnMaster> :D
17:48:54 <vixey> cool
17:49:08 <ehird> first-class parser is in a lot of lisps
17:49:09 <ehird> but MEH
17:49:14 <ehird> the idea is
17:49:18 <AnMaster> :: (+ TWO ONE)
17:49:19 <otobot> +
17:49:19 <ehird> if the interpreter uses the data structure
17:49:22 <ehird> you can get at it
17:49:27 <AnMaster> oh intercal syntax didn't work
17:49:27 <ehird> oh ,first class scopes of course
17:49:28 <AnMaster> :/
17:50:10 <AnMaster> ehird, what about first class class?
17:50:11 <oklopol> i should make scopeless functions, then you could do stuff like /=
17:50:12 * AnMaster runs
17:50:16 <ehird> AnMaster: haha
17:50:16 <oklopol> that maps =
17:50:19 <ehird> first class first classity
17:50:25 <ehird> (set! first-classity #f)
17:50:29 <oklopol> why not first class first?
17:50:31 <AnMaster> ehird, first class ticket
17:50:32 <AnMaster> :D
17:50:33 <ehird> ;; This operation disabled because first classity is disabled
17:50:44 <ehird> impossible to turn off because turning it off makes turning it off impossible
17:50:45 <ehird> :D
17:51:17 <AnMaster> ehird, XD
17:52:32 <AnMaster> What kind of tickets do functional programmers prefer when traveling by aircraft? Answer: first class tickets.
17:52:34 * AnMaster runs
17:52:35 <ehird> soup objects will be called pans
17:52:45 <AnMaster> ehird, what is soup?
17:52:49 <ehird> AnMaster: my first class lisp
17:53:01 <AnMaster> ehird, you said the name was in use?
17:53:11 <ehird> it is
17:53:16 <ehird> but by me and oklopol
17:53:18 <ehird> :)
17:53:19 <oklopol> :D
17:53:21 <AnMaster> a
17:53:22 <ehird> uhh
17:53:22 <AnMaster> ah*
17:53:26 <ehird> AND A CRACK DEVELOPMENT TEAM
17:53:27 <ehird> OF COURSE
17:53:28 <ehird> <_<
17:53:28 <oklopol> hmmmmm
17:53:36 <ehird> or a development team on crack
17:53:40 <AnMaster> craq
17:53:41 <ehird> oklopol: Soup lisp will have first-class GCs
17:53:41 <ehird> :D
17:53:53 -!- Sgeo has joined.
17:53:54 <oklopol> perhaps i should make oklotalk also evaluate stuff given urls... that's like a few lines
17:53:54 <ehird> also, call/cc will be trivial
17:54:16 <oklopol> ehird: perhaps you just make it as a syntax extension to the original soup
17:54:18 <AnMaster> oklopol, oooh nice, then I know how to disable it
17:54:23 <ehird> oklopol: but then i have to make soup
17:54:35 <oklopol> AnMaster: wut? :D
17:54:56 <AnMaster> oklopol, tell it to evaluate a 100 MB download or so
17:55:28 <ehird> oklopol: cooks are interpreters, pans objects. Pan(cook) --> 'this pan belongs to cook' OR cook.pan() --> 'cook, give me a pan belonging to you'
17:55:30 <ehird> which is nicer
17:55:34 <ehird> AnMaster: it'll time out
17:56:04 <oklopol> AnMaster: go for it!
17:56:11 <ehird> oklopol: BUT WHICH
17:56:13 <AnMaster> :: http://adelie.polymtl.ca/releases/x86/2007.0/livecd/livecd-i686-installer-2007.0.iso
17:56:13 <otobot> http://adelie.polymtl.ca/releases/x86/2007.0/livecd/livecd-i686-installer-2007.0.iso
17:56:16 <AnMaster> aww
17:56:19 <AnMaster> oklopol, :/
17:56:25 <oklopol> ehird: well lol? :D
17:56:27 <ehird> AnMaster: he didn't implement it yet
17:56:31 <AnMaster> oh
17:56:33 <ehird> oklopol: WHICH
17:56:39 <AnMaster> otherwise evaluating a huge ISO
17:56:47 <AnMaster> would rock
17:56:52 <oklopol> ehird: both?
17:56:54 <oklopol> hmm
17:57:42 <ehird> oklopol: haha
17:57:45 <oklopol> ehird: i'm not sure what you mean, but latter
17:57:45 <ehird> i guess
17:57:48 <ehird> but which should i use
17:57:54 <AnMaster> :: (* 2 4)
17:57:54 <otobot> 2
17:57:54 <ehird> cook.pan() would just call Pan(cook)
17:57:57 <AnMaster> :: (* "foo" 4)
17:57:57 <otobot> An error: invalid literal for int() with base 10: 'foo'
17:58:03 <AnMaster> Strings can be concatenated ('+') and multiplied by an integer ('*').
17:58:04 <AnMaster> eh?
17:58:10 <AnMaster> :: (* 4 "foo")
17:58:10 <otobot> 4
17:58:11 <oklopol> what
17:58:15 <ehird> :: (* "foo" 4)
17:58:15 <otobot> An error: invalid literal for int() with base 10: 'foo'
17:58:17 <oklopol> wtf :D
17:58:19 <AnMaster> oklopol, one of the links you posted
17:58:20 <ehird> :: (* [a b c] 4)
17:58:21 <otobot> [a b c]
17:58:22 <AnMaster> http://www.vjn.fi/pb/p612313333.txt
17:58:22 <ehird> eh
17:58:24 <ehird> it should replicate it
17:58:27 <ehird> foofoofoofoo
17:58:28 <oklopol> :: (+ 4 5)
17:58:29 <otobot> 4
17:58:30 <oklopol> oh
17:58:33 <oklopol> everything broke
17:58:35 <oklopol> wait a sex
17:58:37 <ehird> oklopol: what should i call the id of pans
17:58:38 <ehird> object id
17:58:45 <AnMaster> ehird, pancake?
17:58:51 <ehird> haha
17:58:52 <ehird> okay
17:58:55 <ehird> self.pancake :D
17:59:04 <AnMaster> aww maybe too confusing
17:59:12 <ehird> class Pan(object):
17:59:12 <ehird> def __init__(self, cook):
17:59:12 <ehird> self.pancake = cook.next_id()
17:59:22 <AnMaster> god
17:59:25 <AnMaster> that is confusing
17:59:29 <ehird> AnMaster: totally
17:59:30 <ehird> but hilarious
17:59:34 <ehird> maybe i should call it cook.flip
17:59:42 <oklopol> :: reload
17:59:43 <otobot> reload
17:59:45 <oklopol> ::(+ 4 5)
17:59:47 <oklopol> :: (+ 4 5)
17:59:48 <otobot> 9
17:59:50 <ehird> I also have Pan.throw, which copies an object to the context of another interpreter
17:59:55 <AnMaster> :: (* "foo" 4)
17:59:55 <otobot> foofoofoofoo
17:59:59 <AnMaster> :: (* 4 "foo")
18:00:00 <otobot> An error: invalid literal for int() with base 10: 'foo'
18:00:16 <oklopol> COCKFLIP
18:00:22 <AnMaster> oklopol, I thought order shouldn't matter?
18:00:24 <oklopol> :: (* "sd" 4)
18:00:24 <otobot> sdsdsdsd
18:00:31 <AnMaster> when adding of multiplying
18:00:32 <oklopol> why would you think that?
18:00:43 <oklopol> * is not multiplication
18:00:44 <ehird> oklopol: remember, it's not ASSOCIATIVE
18:00:46 <AnMaster> because 4+5 == 5+4
18:00:47 <ehird> i lectured you about + before
18:00:49 <ehird> ;)
18:00:56 <ehird> ofc its bullshit
18:00:56 <AnMaster> oklopol, hm
18:00:57 <ehird> but still
18:01:00 <ehird> nitpicking is fun
18:01:01 <AnMaster> :: (* 5 4)
18:01:02 <otobot> 20
18:01:09 <AnMaster> oklopol, looks like multiplication?
18:01:15 <oklopol> that sends the object 5 the list [$* 4]
18:01:21 <oklopol> 5 can do what it wants with it
18:01:27 <AnMaster> yeargh
18:01:39 <ehird> AnMaster: yeargh, but that's how addition etc on rationals works
18:01:42 <oklopol> you can redefine all this in oklotalk, but not yet.
18:01:44 <AnMaster> oklopol, and + then
18:01:52 <AnMaster> :: (+ 5 4)
18:01:52 <otobot> 9
18:01:56 <AnMaster> what exactly does that do?
18:02:05 <oklopol> same thing
18:02:11 <AnMaster> hm
18:02:13 <oklopol> 5 ! [$+ 4]
18:02:18 <oklopol> in real oklotalk
18:02:20 <AnMaster> mhm
18:02:42 <oklopol> except it's sent as #lo... but you'd have to know oklotalk :P
18:02:46 <oklopol> well
18:02:47 <oklopol> anyway
18:02:50 <oklopol> 5 is sent the list
18:02:54 <oklopol> with the operator and the arg
18:03:09 <oklopol> if it knows what to do, it does it
18:03:10 <AnMaster> ok, what about negative numbers
18:03:14 <oklopol> otherwise just returns $f
18:03:16 <AnMaster> do you do (- 0 1) ro get -1?
18:03:20 <AnMaster> or is there any simpler way
18:03:23 <oklopol> the interp supports them internally
18:03:27 <oklopol> but not yet syntactically
18:03:33 <AnMaster> oh
18:03:40 <AnMaster> because (- 0 1) would be almost befunge
18:03:43 <oklopol> i could add that... it's just the syntax is retarded anyway.
18:03:49 <AnMaster> 01- to get -1 in befunge
18:03:50 <ehird> bah
18:03:52 <ehird> soup lisp is too hard
18:03:52 <ehird> :D
18:03:54 <oklopol> :D)
18:03:56 <ehird> oklopol: paste your old python lisp
18:04:03 <oklopol> oh what now?
18:04:15 <oklopol> that sch thing of ololobot
18:04:17 <oklopol> 's?
18:04:21 <ehird> oklopol: think so
18:04:30 <oklopol> hmmhmm, did it have static scoping?
18:04:38 <oklopol> or was it that it *didn't*
18:04:50 <oklopol> i remember it was definitely either.
18:04:50 <AnMaster> :: (+ (- 2 4i) 3)
18:04:50 <otobot> An error: Application consists of 2 or 3 expressions.
18:04:52 <AnMaster> hm
18:04:55 <oklopol> hmm
18:05:01 <oklopol> 4 and i are separated as tokens
18:05:02 <AnMaster> :: (+ (- 2 4) 3)
18:05:02 <otobot> 1
18:05:03 <oklopol> i think.
18:05:14 <AnMaster> oklopol, ah, so how do you do complex numbers?
18:05:22 <oklopol> well, you first make a class for them
18:05:44 <oklopol> if you want to do it, that would be awesome.
18:05:45 <oklopol> i mean
18:05:46 <AnMaster> oh right
18:05:48 <oklopol> in oklotalk-- ofc
18:06:04 <ehird> oklopol: i wannnnaaaaaaiiit
18:06:05 <AnMaster> you need a libstdoklo
18:06:06 <AnMaster> :D
18:06:08 <oklopol> because then i could say "EVEN OTHERS LOVE IT GOD IT''S AWESOME"
18:06:11 <ehird> and put ololobot up here
18:06:12 <ehird> :D
18:06:13 <oklopol> *it's
18:06:20 <oklopol> ehird: i don't have it, actually :\
18:06:21 -!- Corun has quit ("This computer has gone to sleep").
18:06:27 <oklopol> not here
18:06:32 <ehird> oklopol: its on the pastebin
18:06:39 <oklopol> the scheme? :O
18:06:44 <ehird> ya
18:06:50 <ehird> AnMaster: no, the prefix for libs should be oko. and oklopol's stdlib would be 'oko', because it's like 'oklopol' but shorter
18:06:50 <ehird> so
18:06:52 <ehird> okoko
18:06:56 <oklopol> well, the pastebin has a shitload of stuff...
18:06:58 <ehird> for balance:
18:06:59 <ehird> okokoko
18:07:05 <ehird> in fact
18:07:07 <ehird> add another oko
18:07:09 <ehird> for each version
18:07:10 <oklopol> :D
18:07:12 <ehird> so revision 64 is
18:07:18 <ehird> okokokokokokokokokokokokoko...
18:07:29 <ehird> oklopol: grep 'class MEM'
18:07:32 <ehird> no wait
18:07:33 <ehird> 'class O:'
18:07:37 <ehird> or 'class O(object)'
18:07:43 <oklopol> hmm...
18:07:58 <AnMaster> you know, befunge seems *sane* compared with this
18:07:59 <ehird> oklopol: cause i know it had one of those in
18:08:02 <ehird> just do something like
18:08:05 <oklopol> i can prolly connect on putty and do it
18:08:06 <ehird> grep 'class O:' *
18:08:08 <ehird> yeah
18:08:09 <oklopol> i guess
18:08:19 <oklopol> AnMaster: compared with oklotalk?
18:08:23 <AnMaster> oklopol, indeed
18:08:25 <oklopol> well
18:08:32 <AnMaster> and compared with ehird
18:08:35 <oklopol> i've used it for like a few hours
18:08:47 <oklopol> making the rational class took 10 minutes
18:08:50 <AnMaster> mh
18:08:52 <oklopol> and it worked right away
18:08:52 <AnMaster> hm*
18:09:02 <oklopol> do the same in a few minutes in befunge, and i'll believe you
18:09:02 <AnMaster> oklopol, yeah making a standard library in befunge is harder
18:09:21 <ehird> oklopol: what is ittt :D
18:09:26 <oklopol> ittt?
18:09:31 <oklopol> i'll connect now
18:09:38 <AnMaster> oklopol, well object orientated befunge.... maybe
18:10:04 <AnMaster> using a global offset table for the function pointers and for the vtable and so on
18:10:08 * AnMaster grins madly
18:10:22 <oklopol> well, the rational class was as easy to make in oklotalk as it would've been in, say, python.
18:10:25 <oklopol> for me at least
18:10:27 <oklopol> i just wrote it
18:10:37 <AnMaster> oklopol, well I don't really like python
18:10:43 <oklopol> it's not *that* bad a language
18:10:50 <oklopol> well, python was my example of where it would be trivial
18:10:53 <AnMaster> my non-esoteric languages of choice are C and Bash
18:10:54 <ehird> oklopol: linkokokoko
18:10:59 <oklopol> it's naturally easier in oklotalk than say X
18:11:00 <oklopol> *C
18:11:10 <oklopol> ehird: dl'ing putty..
18:11:15 <ehird> haha
18:11:28 <AnMaster> connect to where?
18:12:00 <ehird> AnMaster: vjn.fi presumably
18:12:57 <oklopol> shit.
18:13:04 <oklopol> this is not the real account
18:13:05 <oklopol> i mean
18:13:10 <oklopol> the account with shell access
18:14:14 <oklopol> i asked the guy who knows anything about it, perhaps get an answer soon
18:14:47 <oklopol> ehird: want to try making complex numbers, btw?
18:15:25 <ehird> oklopol: it's just a tuple of numbers that are operated on together right?
18:15:30 <oklopol> yes
18:15:36 <ehird> you barely need to define anything
18:15:38 <oklopol> kinda like rat, but different operations
18:15:45 <ehird> ok i'll try
18:15:49 <oklopol> cool
18:15:56 <oklopol> i'll make the interpreting urls thing
18:16:14 <ehird> {(-> [n d] {
18:16:18 <ehird> d = operation?
18:17:57 <vixey> funny video http://video.google.com/videoplay?docid=-7990603720514207956
18:18:39 <ehird> vixey: oleg is cooool
18:18:39 <ehird> :D
18:19:01 <oklopol> hmm
18:19:02 <ehird> http://okmij.org/ftp/ is full of gems
18:19:19 <oklopol> ehird: it is simply a list of all arguments given
18:19:21 <oklopol> so
18:19:33 <oklopol> (+ your_obj arg) == [$+ arg]
18:19:42 <oklopol> and (your_obj arg arg) == [arg arg]
18:19:51 <ehird> oklopol: okay. <-- pattern match on division -->
18:19:51 <ehird> (-> [pb $/] [n d])
18:19:51 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
18:19:54 <ehird> what is pb, and what does that do
18:20:00 <ehird> :D
18:20:02 <oklopol> unary would be (+ you_obj) == $+ as the message
18:20:12 <oklopol> and (your_obj arg) == arg as message
18:20:14 <oklopol> okay
18:20:25 <oklopol> [$pb ...] pattern matches on the ...
18:20:28 -!- Judofyr has joined.
18:20:32 <oklopol> it should return a list with two elements
18:20:36 <oklopol> splitting the object in half
18:20:41 <ehird> what is pb
18:20:43 <ehird> is it magic
18:20:44 <oklopol> like : for lists
18:20:48 <ehird> huh
18:20:50 <ehird> whut
18:20:50 <ehird> :|
18:20:51 <oklopol> pb == pmatch both
18:20:55 <ehird> don't get it
18:20:56 <ehird> :|
18:20:59 <oklopol> well
18:21:15 <oklopol> (-> (/ n d) n)
18:21:24 <oklopol> this would extract the nominator of a rational
18:21:27 <oklopol> errr
18:21:29 <oklopol> nominator
18:21:32 <oklopol> i mean
18:21:32 <ehird> oh i see
18:21:34 <oklopol> ...
18:21:39 <ehird> oklopol: so that defines a custom pattern match
18:21:42 <oklopol> yes
18:21:54 <ehird> (-> [pb CAR-OF-PATTERN-MATCH] ...)
18:22:01 <oklopol> yeah
18:22:02 <ehird> but i don't get how [n d] fits into it
18:22:02 <ehird> :|
18:22:08 <oklopol> well
18:22:17 <oklopol> it returns the list with the object split in two logical halves
18:22:23 <oklopol> a list would return [head, tail]
18:22:27 <ehird> oklopol: okay
18:22:27 <oklopol> for [pb :]
18:22:37 <ehird> so, i should match on 'j' i guess
18:22:38 <ehird> or...
18:22:40 <ehird> maybe just 'cpx'
18:22:42 <ehird> (that's my class name)
18:22:46 <oklopol> perhaps
18:22:47 <ehird> (-> [pb $cpx] [r i])
18:22:57 <oklopol> yarr something like that
18:23:00 <oklopol> or you can define a setter
18:23:06 <oklopol> err
18:23:07 <oklopol> getter
18:23:26 <oklopol> (-> $getreal r) (-> $getimag i)
18:23:28 <oklopol> if you wanna
18:23:36 <oklopol> it's just nice to be able to do this at pattern matching
18:24:22 <oklopol> the pattern matching can only be extended with binary splits and unary... drops or something
18:24:46 <oklopol> but it should have stuff like (>> stack 3) that would match the 3rd element of the stack
18:24:55 <ehird> oklopol: heh this is trivial...
18:24:58 <ehird> everything is of the form:
18:25:01 <oklopol> it oughtta be
18:25:12 <ehird> (-> [$OP (cpx rr ii)] (cpx (OP r rr) (OP i ii)))
18:25:56 <AnMaster> oklopol, for complex numbers you do need square root
18:26:13 <AnMaster> to get absolute value
18:26:22 <ehird> comparisons aren't even that hard
18:26:27 <ehird> since i don't have to define them
18:26:30 <ehird> how convenient :D
18:26:32 <ehird> well
18:26:32 <ehird> ==
18:26:39 <oklopol> AnMaster: gaussian integers
18:26:48 <ehird> hmm wait
18:27:13 <oklopol> ehird: multiplication doesn't work like that
18:27:16 <AnMaster> abs(a+bi) == sqrt(a^2 + b^2);
18:27:18 <AnMaster> oklopol, ^
18:27:23 <oklopol> AnMaster: duh
18:27:32 <ehird> oklopol: oops, yeah
18:27:39 <ehird> sorry, mind is fuzzed right now
18:27:42 <oklopol> hehe
18:27:46 <ehird> and crap, i need to define more stuff
18:27:49 <ehird> for adding to non-complex
18:27:50 <AnMaster> oklopol, how would you do that in oklotalk?
18:27:52 <ehird> bah, i give up :D
18:27:56 <oklopol> :<
18:28:00 <oklopol> ehird: well
18:28:07 <oklopol> hmm
18:28:10 <oklopol> :: (cpl 5)
18:28:11 <otobot> 5
18:28:12 <oklopol> :)
18:28:15 <oklopol> darn
18:28:22 <oklopol> ofc doesn't work that easily
18:28:23 <oklopol> hmmhmm
18:28:43 <oklopol> and you cannot match on type, atm.
18:29:05 <Sgeo> Will anyone but myself care when PSOX 1.0b1 is released?
18:29:08 <ehird> Sgeo: Nope
18:29:18 <ehird> oklopol: i'm gonna make a concatenative language in python
18:29:21 <ehird> since we're already done lisps to death
18:29:23 <AnMaster> Sgeo, well I won't use it no
18:29:26 <ehird> now, in tradition, you must copy me
18:29:27 <ehird> :D
18:29:39 <Sgeo> AnMaster, why not?
18:29:41 <oklopol> ehird: can you make it so it only works for the complex range?
18:29:44 <ehird> oklopol: no
18:29:47 <oklopol> darn
18:29:48 <AnMaster> Sgeo, what would it offer me?
18:29:56 <AnMaster> Sgeo, as a befunge programmer
18:30:03 <ehird> oklopol: you should call yours okompose
18:30:08 <ehird> AnMaster: nothing
18:30:12 <AnMaster> exactly
18:30:12 <oklopol> okompose? :D
18:30:15 <ehird> AnMaster: befunge can already do what psox provides
18:30:19 <ehird> and psox is hell to use in anything but BF
18:30:19 <AnMaster> yep
18:30:27 <ehird> oklopol: yeah, since concatenation is composition :D
18:30:36 <AnMaster> ehird, just need to code SOCK fingerprint I think
18:30:45 <Sgeo> ehird, because of NUL bytes etc.?, or other reasons?
18:30:55 <ehird> Sgeo: you never considered non-BFs, thats why
18:30:57 <oklopol> befunge + psox = no problem
18:31:06 <oklopol> well...
18:31:11 <oklopol> actually, nulls
18:31:26 <oklopol> that's like the worst character to choose for frequent use
18:31:27 <oklopol> :P
18:31:42 <AnMaster> oklopol, indeed I hate NULL byte
18:31:55 <AnMaster> I hate how it is used in strings in C
18:31:58 * Sgeo has a really idiotic solution, and is asking for input on less idiotic solutions
18:32:00 <AnMaster> ie to terminate them
18:32:17 <AnMaster> Sgeo, well tell me what it would offer me as a befunge programmer
18:32:18 <ehird> Sgeo: but nobody really cares about psox any more, so not many people will suggest
18:33:00 <oklopol> the problem with doing complex numbers is you cannot lift integers to that range... you'd need to extend syntax
18:33:09 <oklopol> that would be the oklotalk way to do it
18:33:24 <oklopol> my next language should be able to understand integers are a subset of cpx
18:33:28 <AnMaster> oklopol, indeed you basically need vectors, because that is what they (mostly) are
18:33:32 <ehird> oklopol: i can pattern match on non compelx too
18:33:37 <AnMaster> apart from the sqrt(-1) == i quirk
18:33:39 <oklopol> AnMaster: i don't see what your point is
18:33:46 <AnMaster> you need two numbers
18:33:47 <AnMaster> not one
18:33:53 <oklopol> yes
18:33:55 <oklopol> but the point is
18:33:57 <oklopol> i don't see it
18:34:11 <oklopol> ehird: what?
18:34:16 <oklopol> yeah
18:34:20 <AnMaster> oklopol, also you should be able to use rational numbers in the place of the integers when making complex numbers
18:34:23 <oklopol> that will do stuff like cpx + int
18:34:24 <AnMaster> :)
18:34:30 <AnMaster> cpx + rat
18:34:31 <AnMaster> :D
18:34:35 <oklopol> hehe
18:34:41 <AnMaster> a complex rat?
18:34:48 <oklopol> well, ideally, rat would just lift into a complex number
18:34:54 <oklopol> and should work automatically.
18:34:59 <AnMaster> oklopol, idea: call the garbage collector the "cat"
18:34:59 <AnMaster> :D
18:35:12 <oklopol> but rat will need to know about complexes.
18:35:25 <AnMaster> oklopol, not first class?
18:35:36 <vixey> can't it just know about numbers in general?
18:35:37 <oklopol> this isn't really a problem of oklotalk's, much more general prob
18:35:40 <vixey> while also being a number
18:35:46 <AnMaster> oklopol, you could use an interface
18:36:01 <AnMaster> rat implements interface "number"
18:36:04 <AnMaster> or something like that
18:36:08 <oklopol> if complex numbers are created, you can have rational complexes automatically.
18:36:13 <oklopol> the problem is then ranges mix.
18:36:16 <oklopol> *when
18:36:41 <Sgeo> If PSOX is not going to be appreciated, I need to find another major programming project to do
18:36:42 <AnMaster> oklopol, cpx takes two things implementing the interface number. cpx itself implements the fingerprint number
18:36:45 <AnMaster> that could work
18:36:47 <AnMaster> oklopol, :D
18:37:08 <oklopol> what's the use of implementing the interface?
18:37:18 <oklopol> oklotalk is duck-typed
18:37:25 <AnMaster> oklopol, because then you can stick *any* number into the cpx
18:37:31 <AnMaster> duck-typed?
18:37:34 <oklopol> well, in fact, oklotalk doesn't even have that
18:38:06 <oklopol> it is assumed everything can handle everything, though somethings things are asked whether they actually *want* to have certain args
18:38:13 <oklopol> AnMaster: giyf
18:38:22 <AnMaster> eh?
18:38:32 <oklopol> AnMaster: you can do that in oklotalk, just put in the *any number*
18:38:37 <AnMaster> actually you could get some issues from that, like making a complex of two complex
18:38:43 <oklopol> the problem is int + cpx will call int's +-operation
18:38:50 <oklopol> i mean, conceptually
18:39:01 <oklopol> and that makes no sense, because ints don't know what cpx's are
18:39:08 <ehird> oklopol: this is an old OO problem
18:39:09 <AnMaster> I got no clue what (1+3i)+(0-4i)i
18:39:10 <AnMaster> would do
18:39:15 <oklopol> the fact cxp "is a number" doesn't make any difference
18:39:18 <oklopol> ehird: i know
18:39:19 <ehird> oklopol: the 'x+y' when x doesn't know what ys are
18:39:21 <ehird> oklopol: the solution
18:39:23 <AnMaster> well mathimatically I can solve it
18:39:24 <ehird> oklopol: is generic methods
18:39:50 <oklopol> ehird: okay.
18:39:50 <oklopol> now what does that mean
18:39:50 <ehird> oklopol: basically, in 'x.y(z)' you dispatch on the magic first param - self, here x
18:39:50 <AnMaster> ehird, \o/
18:39:50 <ehird> oklopol: with generic methods you dispatch on THEM ALL
18:39:50 <ehird> and methods are no longer tied to classes
18:39:50 <ehird> so you define e.g.
18:39:57 <ehird> (+ (int a) (cpx b))
18:40:00 <ehird> instead of
18:40:03 <ehird> int.+(other)
18:40:10 <ehird> that solves the problem
18:40:13 <oklopol> well, you can do that, ofc
18:40:19 <ehird> and also removes the arbitary 'dispatch only on first magic param thing'
18:40:26 <ehird> oklopol: yeah but the point is: you drop message sending
18:40:27 <oklopol> not in oklotalk--, but it's a trivial change to the structure
18:40:30 <ehird> no messages are sent
18:40:35 <ehird> ever
18:40:37 <oklopol> no i don't
18:40:45 <ehird> you don't understand what i' saying
18:40:47 <oklopol> message sending works great for this exact thing
18:41:06 <oklopol> i don't?
18:41:09 <oklopol> okay
18:41:12 <ehird> message sending sucks for this
18:41:18 <ehird> because you get the 'x+y' x doesnt know what y is
18:41:22 <ehird> with generic methods, that's never a problem
18:41:25 <ehird> because 'x' doesn't know anything
18:41:30 <ehird> because methods are not 'inside' the object
18:41:51 <oklopol> so + just knows about all, that's no problem for message-passing
18:41:56 <oklopol> oklotalk already does this.
18:42:16 <oklopol> and for most cases, objects getting the messages is simply prettier
18:42:25 <oklopol> which is why many people like OO
18:43:12 <oklopol> you can just add functionality to + easily, once i add a certain feature oklotalk-- lacks
18:43:21 <oklopol> (the other one, apart from syntax, that made me change the name)
18:45:11 <oklopol> python solves this by having __ropr__'s
18:46:03 <oklopol> it's conceptually a fairly good solution for this exact case, because the other object is "cleverer" than the other
18:46:13 <AnMaster> Deewiant, there?
18:46:24 <oklopol> so the cleverer one will be called automatically
18:46:27 <oklopol> well
18:46:35 <oklopol> not good, but *a somewhat working*
18:46:51 <AnMaster> Deewiant, I found a think with complex numbers that is hard to do with FPDP and similar: given a real negative value, take the square root of it
18:47:05 <oklopol> anyway, it is true that for numbers, having message-passing complicates things a bit
18:47:10 <oklopol> i'm not gonna argue that
18:47:38 <oklopol> i'm just saying oklotalk is especially designed to make message-passing support having behavior outside the objects themselves.
18:47:49 <oklopol> in case you can parse that sentence
18:47:55 <Deewiant> AnMaster: of course you need to use complex numbers - i.e. use pairs of doubles for everything.
18:48:36 <oklopol> anyway, ehird: it doesn't make the code less complicated to have + dispatch on its arguments
18:48:37 <oklopol> does it?
18:48:44 <Deewiant> after that it's easy, sqrt(-x) where x > 0 = imaginary sqrt(x).
18:49:00 <oklopol> usually you'll just end up doing a type conversion, which the objects could just have done themselves
18:49:49 <oklopol> i'm gonna go now, if someone does something in oklotalk, let me know, would look awesome in my report if i got something :-)
18:49:54 <oklopol> not that anyone will, prolly
18:49:55 <oklopol> cya
18:49:56 <oklopol> ->
18:50:02 <vixey> sqrt(-x) = sqrt(-1)*sqrt(x)
18:50:13 <vixey> less horribly confusing way to put it :P
18:50:52 <Deewiant> doesn't always apply.
18:50:56 <AnMaster> Deewiant, so how would you write a befunge program that solves: 2x^2 + 4x + 1 = 0
18:50:58 <AnMaster> XD
18:51:00 <Deewiant> only for reals.
18:51:03 <vixey> yes it does
18:51:08 <Deewiant> AnMaster: I wouldn't. :-P
18:51:11 <AnMaster> Deewiant, hahah
18:51:25 <ehird> omg oklopol went
18:51:26 <Deewiant> vixey: try x == sqrt(-1).
18:51:30 <ehird> noo i was just saying to say something
18:51:39 <oklopol> i didn't go anywhere...
18:51:42 <vixey> that's not a counter example
18:51:44 <ehird> good
18:51:45 <ehird> :D
18:51:46 <oklopol> don't you know me at all...
18:51:47 <Deewiant> or a simpler example.
18:51:49 <Deewiant> x == -1.
18:51:51 <vixey> you can prove this from the difinition of sqrt
18:51:54 <vixey> that's not a counter example
18:52:02 <Deewiant> why nto?
18:52:05 <Deewiant> s/nto/not/
18:52:19 <vixey> because sqrt(-1)*sqrt(-1) = -1
18:52:34 <Deewiant> and?
18:52:44 <vixey> you asked
18:52:47 <Deewiant> sqrt(-(-1)) == sqrt(1) == 1.
18:52:54 <Deewiant> sqrt(-1) * sqrt(-1) == -1.
18:52:57 <Deewiant> -1 != 1.
18:52:58 <Deewiant> QED.
18:53:37 <oklopol> ehird: i'm trying to leave though, so say if you're gonna
18:54:07 <ehird> oklopol: i am
18:54:08 <ehird> just a sec
18:54:15 <ehird> oklopol: I tried writing python in okostyle for my interp :P
18:54:25 <oklopol> wuzzat?
18:54:31 <ehird> oklopol: your weird style
18:54:31 <ehird> heh
18:54:34 <oklopol> :D
18:54:38 <oklopol> i have a style? :D
18:54:40 <Deewiant> vixey: enough of a counter example?
18:54:43 <vixey> Dewiant: what number times itself is 9?
18:54:52 <ehird> oklopol: yeah
18:54:54 <vixey> *that's not a counter example*
18:54:55 <ehird> short names, not much whitespace
18:54:56 <ehird> :D
18:54:56 <Deewiant> 3 or -3
18:54:58 <oklopol> hmm
18:54:58 <vixey> please try to listen to me
18:54:59 <oklopol> right
18:55:00 <oklopol> try
18:55:02 <oklopol> true
18:55:03 <vixey> right
18:55:21 <oklopol> okay, now i'll really go! ->
18:55:23 <Deewiant> vixey: you said, sqrt(-x) = sqrt(-1) * sqrt(x). I'm trying to say, this only applies if x > 0.
18:55:30 <vixey> two values
18:55:32 <Deewiant> or (>= 0)
18:55:38 <AnMaster> Deewiant, indeed
18:55:42 <vixey> oh ok
18:55:44 <ehird> oklopol: aww
18:55:48 <ehird> oklopol: but i was just about to put it in here
18:55:50 <vixey> you take sqrt as only the positive value
18:55:55 <Deewiant> er
18:55:58 <Deewiant> that /is/ how sqrt is defined
18:56:07 <vixey> I define sqrt(x) = x^1/2
18:56:20 <Deewiant> fine
18:56:28 <Deewiant> but that denotes the principal square root
18:56:36 <Deewiant> which is to say, the positive one.
18:56:41 <ehird> oklopol: btw
18:56:43 <ehird> oklopol: useful:
18:57:01 -!- jix has quit (Nick collision from services.).
18:57:03 <ehird> oklopol: def _(x): return lambda o: getattr(o,x)()
18:57:06 <vixey> there are n, nth roots of unity as there are some constant
18:57:11 -!- jix has joined.
19:05:13 <ehird> oklopol: hello
19:05:58 <oklopol> ehird: i'm insulted by the fact you assume i'm still here! you think i have no self-control?!?!?
19:06:39 <ehird> oklopol: of course not, you haven't seen my concatenative language yet
19:06:42 <ehird> the parser is cooooool
19:06:45 <ehird> it's recursive
19:06:56 <ehird> also
19:06:57 <ehird> the eval function
19:06:58 <ehird> only 18 lines
19:07:37 <ehird> and it was based on rewriting
19:07:38 <ehird> but that was only
19:07:41 <ehird> so i'm making it stakkk
19:09:07 <ehird> ok
19:09:08 <ehird> now its 14 lines
19:12:37 <AnMaster> oklopol, where is the bot?
19:13:08 <ehird> oklopol: i have a weird bug
19:13:09 <ehird> halp me fix
19:13:58 <ehird> oklopol: plzz
19:14:12 <ehird> http://www.vjn.fi/pb/p461542621.txt the bug is in pa near the botto
19:14:13 <ehird> m
19:14:16 <oklopol> AnMaster: what bot
19:14:27 <oklopol> what bug
19:14:33 <AnMaster> oklopol, oklobot
19:14:41 <AnMaster> with the oklotalk interpreter
19:14:46 <oklopol> that's otobot
19:14:50 <AnMaster> aha
19:14:51 <oklopol> oklobot is very different
19:14:54 <AnMaster> there is it
19:14:56 <AnMaster> it is*
19:14:56 <oklopol> it's my c++ bot
19:15:02 <oklopol> otobot: where are you?
19:15:08 <AnMaster> shows why tab completion didn't show it
19:15:12 <oklopol> i guess he's gone
19:15:15 <oklopol> didn't answer anything
19:15:17 <oklopol> anyway
19:15:22 <oklopol> ehird: that's the parseror?
19:15:29 <oklopol> s,i... i is current place, like?
19:15:39 <oklopol> or whut
19:15:39 <ehird> oklopol: yeah that[s the parser
19:15:45 <ehird> and
19:15:47 <ehird> i is nesting depth
19:15:49 <oklopol> where's the but
19:15:49 <ehird> wait
19:15:51 <oklopol> oh
19:15:56 <ehird> return pa(s,i+1)+pa(s,i)
19:15:57 <ehird> change to
19:15:59 <ehird> return [pa(s,i+1)]+pa(s,i)
19:16:00 <ehird> that doesn't fix it
19:16:05 <ehird> but
19:16:06 <ehird> it's what i meant
19:16:08 <oklopol> what's the error?
19:16:11 <ehird> (lists are quotations)
19:16:13 <oklopol> i'm not gonna run it!
19:16:13 <ehird> oklopol: unmatched ]
19:16:16 <ehird> when parsing
19:16:18 <oklopol> oh
19:16:21 <ehird> and
19:16:23 <oklopol> prints that?
19:16:23 <ehird> no wait
19:16:24 <ehird> unmatched [
19:16:25 <oklopol> or what
19:16:27 <ehird> err wait
19:16:28 <ehird> hmmm
19:16:29 <ehird> ok
19:16:30 <ehird> i'll explain
19:16:33 <oklopol> or parse error in your code?
19:16:34 <ehird> oklopol: see the return []?
19:16:39 <ehird> oklopol: if you 'print s' before that
19:16:40 <ehird> s = []
19:16:42 <oklopol> sure
19:16:45 <ehird> but after pa(s,i+1) thing
19:16:48 <ehird> where we get returned to
19:16:50 <ehird> s=[']']
19:16:52 <ehird> and that makes no sense
19:16:56 <ehird> since they share the list
19:17:20 <oklopol> you're getting a bit technical, are you assuming i've read the code? :)
19:17:23 <oklopol> hmm
19:17:25 <ehird> yes
19:17:30 <oklopol> i can read pa
19:17:32 <oklopol> now
19:17:38 <oklopol> what's s=
19:17:38 <oklopol> ?
19:17:42 <oklopol> the thing to parse?
19:17:46 <ehird> yes as a list
19:17:51 <ehird> aha
19:17:51 <ehird> >>> p('[]')
19:17:52 <ehird> ['[', ']'] 0
19:17:52 <ehird> [']'] 1
19:17:52 <ehird> [] 0
19:17:52 <ehird> [[]]
19:17:54 <ehird> >>> p('[a]')
19:17:56 <ehird> ['[', 'a', ']'] 0
19:17:58 <ehird> ['a', ']'] 1
19:18:00 <ehird> [']'] 1
19:18:02 <ehird> [']'] 0
19:18:06 <ehird> see how weird that is
19:18:08 <ehird> it works on the empty quotation.
19:18:11 <ehird> after the second example since it sees ] with i=0 it says unmatched ]
19:18:12 <ehird> but WHY
19:18:17 <oklopol> what should it do...
19:18:18 <ehird> the ] gets removed
19:18:21 <ehird> before we return []
19:18:23 <ehird> oklopol: plz read the code
19:18:35 <oklopol> if it's buggy, then i'm not sure i'll get it
19:18:37 <oklopol> well
19:18:40 <oklopol> i can try
19:19:11 <oklopol> errr
19:19:24 <oklopol> so basically the recursion doesn't gulp a ] it should be gulping?
19:19:31 <ehird> no
19:19:32 <ehird> well
19:19:32 <ehird> yes
19:19:35 <ehird> but it works for []
19:19:37 <ehird> just not [a]
19:19:38 <ehird> or similar
19:19:40 <ehird> which is weiiird
19:20:36 <oklopol> asd
19:20:49 <ehird> aha wait..
19:20:52 <oklopol> i have no idea what anything should return.
19:20:56 <oklopol> i don't know what you're parsing
19:21:40 <ehird> oh
19:21:41 <ehird> OF COURSE
19:21:42 <ehird> duhhh
19:22:30 <ehird> oklopol: fixed it
19:22:30 <ehird> so yay
19:22:35 <oklopol> cool
19:26:46 <ehird> oklopol: woot, almost ready
19:31:30 <ehird> oklopol: it's almost working flllaaawwwlessly
19:34:21 <ehird> oklopol: i've even got a REPL with history and tab completion
19:34:21 <ehird> heh
19:34:36 <ehird> oklopol: oh do you have a link to the framework you use for proglang bots, too lazy to write my own atm
19:38:47 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:38:48 <AnMaster> ehird, what are you doing?
19:38:48 -!- Judofyr_ has joined.
19:39:37 <ehird> AnMaster: coding a simple concatenative lang
19:41:10 -!- Slereah has quit.
19:41:20 <AnMaster> mhm
19:42:05 <ehird> oklopol: no? :D
19:42:16 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
19:42:37 -!- oklopol has joined.
19:42:42 <ehird> oklopol: :(
19:42:44 <AnMaster> ehird, try again now?
19:42:48 <ehird> yeah
19:42:52 <ehird> [19:34] <ehird> oklopol: oh do you have a link to the framework you use for proglang bots, too lazy to write my own atm
19:44:39 <oklopol> ehird: it's just an ugly while-loop thingie.
19:45:13 <ehird> oklopol: wannit :D
19:45:20 <ehird> so you can see my awesomest bottt
19:45:55 <oklopol> www.okay
19:45:56 <oklopol> wait
19:46:24 <oklopol> http://www.vjn.fi/s/sadf.py <<< verrrry ugly
19:49:22 <AnMaster> lambda? python got that?
19:49:25 <AnMaster> :/
19:50:05 <oklopol> sure
19:50:37 <oklopol> didn't know about join back then
19:52:53 -!- otobot has quit (Read error: 110 (Connection timed out)).
19:53:05 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
19:53:08 -!- oklofok has joined.
19:54:56 <ehird> oklofok: print pp(e(p(x)))[1:-1]
19:54:58 <ehird> my code rox
19:54:59 <ehird> :D
19:56:35 <olsner> rox? in which way?
19:57:56 -!- CCB has joined.
19:57:56 -!- CCB has quit (Remote closed the connection).
19:58:02 <ehird> concatbot nick is taken
19:58:02 <ehird> :(
19:58:04 <ehird> ooh i know
19:58:42 -!- concat has joined.
19:58:44 <ehird> wtfff
19:58:47 <ehird> sux at nams
19:58:49 -!- concat has quit (Remote closed the connection).
19:59:21 <ehird> hmm
19:59:51 -!- concatbot has joined.
19:59:51 <ehird> oklofok: okay
19:59:54 <ehird> # 2 2 +
19:59:57 <ehird> :((
20:00:16 -!- vixey has quit ("Leaving").
20:00:17 -!- concatbot has quit (Remote closed the connection).
20:00:23 -!- concatbot has joined.
20:00:25 <ehird> # 2 2 +
20:00:45 -!- concatbot has quit (Remote closed the connection).
20:00:51 -!- concatbot has joined.
20:00:52 <ehird> # 2 2 +
20:01:12 -!- concatbot has quit (Remote closed the connection).
20:01:18 -!- concatbot has joined.
20:01:19 -!- concatbot has quit (Remote closed the connection).
20:01:54 -!- concatbot has joined.
20:01:55 <ehird> # 2 2 +
20:02:14 -!- concatbot has quit (Remote closed the connection).
20:02:20 -!- concatbot has joined.
20:02:47 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
20:02:52 <ehird> oklofok: hmm
20:02:54 <ehird> yours splits on space
20:02:57 <ehird> and ignores :
20:03:27 -!- concatbot has quit (Remote closed the connection).
20:03:29 <oklofok> well, it makes no sense, if that's what you're saying
20:03:33 -!- concatbot has joined.
20:03:34 <ehird> # 2
20:03:36 <ehird> hmph
20:03:37 <oklofok> that is true, yes.
20:03:45 -!- concatbot has quit (Remote closed the connection).
20:03:51 -!- concatbot has joined.
20:03:52 <ehird> # 2
20:04:08 <oklofok> the splitting of the line isn't mine, i've taken the base of that from somewhere on the net, and just added some stuff so it works as is
20:04:14 -!- concatbot has quit (Remote closed the connection).
20:04:19 -!- concatbot has joined.
20:04:20 <ehird> # 2
20:04:36 -!- concatbot has quit (Remote closed the connection).
20:04:48 -!- concatbot has joined.
20:04:49 <ehird> # 2
20:04:51 <ehird> urgh
20:04:56 -!- concatbot has quit (Remote closed the connection).
20:05:00 -!- concatbot has joined.
20:05:00 <ehird> # 2
20:05:03 <ehird> rugdflgjdfdfg
20:05:25 -!- concatbot has quit (Remote closed the connection).
20:05:30 -!- concatbot has joined.
20:05:30 <ehird> # 2
20:05:38 -!- concatbot has quit (Remote closed the connection).
20:05:40 <ehird> jaoisj ljddlfkg
20:05:42 -!- concatbot has joined.
20:05:44 <ehird> # 2
20:05:58 -!- concatbot has quit (Remote closed the connection).
20:06:09 -!- concatbot has joined.
20:06:10 <ehird> # 2
20:06:10 -!- concatbot has quit (Remote closed the connection).
20:06:12 <ehird> well
20:06:15 <ehird> that's a start
20:07:06 -!- concatbot has joined.
20:07:12 <ehird> # 2
20:07:14 <ehird> oh woooot
20:07:16 <ehird> oklofok: looky
20:07:22 <oklofok> well... cool?
20:07:23 <oklofok> :D
20:07:24 <ehird> # 2
20:07:26 <ehird> # +
20:07:29 <ehird> ...
20:07:30 <ehird> XD
20:07:33 <oklofok> haha
20:07:41 <ehird> i maed last minute changes
20:07:43 <oklofok> so that's why concatbot
20:08:04 <ehird> # reload
20:08:09 <ehird> # 2 2
20:08:12 <ehird> ...
20:08:14 <ehird> Much lulz.
20:08:45 <ehird> # reload
20:08:46 <ehird> # 2 2 +
20:08:50 <ehird> oh woot
20:08:55 -!- concatbot has quit (Remote closed the connection).
20:08:57 <ehird> ok
20:08:59 <ehird> removed debug output
20:09:01 -!- concatbot has joined.
20:09:07 <ehird> oklofok: time to concatenate!
20:09:13 <ehird> # "hello" "world" +
20:09:17 <ehird> i broke my own rule :D
20:09:26 <oklofok> :)
20:10:49 <ehird> # reload
20:10:51 <ehird> # 1 0 /
20:10:51 -!- concatbot has quit (Remote closed the connection).
20:10:54 <ehird> Lulz!
20:11:07 -!- concatbot has joined.
20:11:08 <ehird> # 1 0 /
20:11:16 <ehird> oklofok: funny - + is composition
20:11:20 <ehird> # [1 2] [3 4] +
20:11:24 <ehird> # [1 2] [3 4] + i
20:11:31 <ehird> # pop pop pop pop pop
20:11:50 -!- concatbot has quit (Remote closed the connection).
20:11:55 -!- concatbot has joined.
20:12:00 <ehird> # reload
20:12:02 <ehird> # 1 0 /
20:12:05 <ehird> heee
20:12:08 <ehird> # reload
20:12:10 <ehird> # 1 0 /
20:12:19 <ehird> oklofok: oh, and watch this
20:12:23 <ehird> # "2+2" py
20:12:27 <ehird> wait.
20:12:29 <ehird> that should work.
20:12:54 <ehird> # reload
20:12:54 unexpected log event :(
20:13:00 <ehird> lulz!
20:13:03 -!- concatbot has quit (Remote closed the connection).
20:13:09 -!- concatbot has joined.
20:13:10 <ehird> # "2+2" py
20:13:17 <ehird> # drop "lambda x: x" py
20:13:21 <ehird> # pop "lambda x: x" py
20:13:44 <ehird> # 2 "(lambda x: pop()(x))(pop())" py
20:13:48 <ehird> oklofok: cool, or not
20:14:10 <oklofok> cool, shure
20:15:33 <ehird> # reload
20:15:40 <ehird> # [add1 1 +] define
20:15:40 -!- concatbot has quit (Remote closed the connection).
20:15:44 <ehird> Hahah
20:15:57 -!- concatbot has joined.
20:15:59 <Sgeo> Wait, what happened to that Pythonbot?
20:16:03 <ehird> # [add1 1 +] define
20:16:07 <ehird> # 1 add1
20:16:07 -!- concatbot has quit (Remote closed the connection).
20:16:15 <ehird> Totally hilarious.
20:17:03 -!- concatbot has joined.
20:17:04 <ehird> # [add1 1 +] define 1 add1
20:17:11 <ehird> # [] define
20:17:16 <ehird> # [[1 2] a] define
20:17:23 <ehird> oklofok: shall i make it its own channel?
20:17:47 <oklofok> omg i need to leave!
20:17:50 <oklofok> but shuuure?
20:17:52 <oklofok> invite me
20:17:53 <oklofok> ->
20:17:57 <ehird> aww
20:18:09 -!- concatbot has quit (Remote closed the connection).
20:18:14 <ehird> ok
20:18:15 -!- concatbot has joined.
20:18:16 <ehird> it'll be in #ccb
20:18:18 <ehird> as well as here
20:18:23 <ehird> so all interested parties, join there :P
20:18:35 -!- concatbot has quit (Remote closed the connection).
20:18:41 -!- concatbot has joined.
20:18:51 -!- concatbot has quit (Remote closed the connection).
20:19:13 -!- concatbot has joined.
20:19:14 <ehird> nobody? :P
20:19:27 -!- concatbot has quit (Remote closed the connection).
20:19:33 -!- concatbot has joined.
20:19:42 -!- concatbot has quit (Remote closed the connection).
20:20:01 -!- concatbot has joined.
20:28:17 -!- Judofyr has joined.
20:32:54 <ehird> # [] i
20:43:35 -!- oerjan has joined.
20:57:22 <ehird> oerjan: do you like concatenative languages
20:57:42 <oerjan> well a bit
21:00:40 -!- p3k has joined.
21:01:17 <AnMaster> Deewiant, now I know what is hard to do with FPDP, print 3.5+4.1i or such, the output instruction of FPDP will add a space after the number
21:01:26 <AnMaster> :P
21:01:34 <ehird> oerjan: there's one in here riiiiight now
21:01:40 <ehird> # 2 3 +
21:05:43 -!- concatbot has quit (Remote closed the connection).
21:05:47 <ehird> oops
21:10:54 -!- UnrelatedToQaz has joined.
21:10:58 <UnrelatedToQaz> hiya all
21:11:37 <UnrelatedToQaz> I have a question about seeds
21:12:03 <UnrelatedToQaz> most random number generators I see have seeds to do with the date/time
21:12:17 <UnrelatedToQaz> and I was wondering if there were any that used other things
21:12:25 <UnrelatedToQaz> like the current CPU usage
21:12:32 <UnrelatedToQaz> (that looks fairly random)
21:14:33 <oerjan> there is linux's /dev/[u]random, which is based on collecting "random" noise from parts of the memory, i think
21:16:51 <sekhmet> /dev/random is the "best" way on a Linux system, yeah (urandom will fall back to a pseudorandom generator if there's not enough entropy)
21:17:56 <sekhmet> UnrelatedToQaz: http://www.google.com/search?hl=en&q=linux%20entropy%20random&btnG=Google+Search
21:18:18 <sekhmet> Should find plenty of information on entropy gathering there, can probably get non-Linux-specific advice as well
21:18:53 <UnrelatedToQaz> thanks all
21:20:11 <UnrelatedToQaz> I guess that means banging your head on the keyboard can be useful sometimes
21:28:31 -!- dede has joined.
21:31:13 -!- dede has quit (Client Quit).
21:48:16 -!- Iskr has quit ("Leaving").
21:57:22 -!- calamari has joined.
22:00:35 -!- UnrelatedToQaz_ has joined.
22:00:40 -!- UnrelatedToQaz_ has quit (Client Quit).
22:05:19 <RodgerTheGreat> I feel like drawing something. Any ideas/requests?
22:06:19 <AnMaster> http://rage.kuonet.org/~anmaster/tmp/specs.pdf
22:06:26 <AnMaster> anyone want to implement that?
22:06:27 <AnMaster> :D
22:07:18 <oerjan> RodgerTheGreat: dragons. with light sabres. in a ufo.
22:07:33 <RodgerTheGreat> sorry, I'm not feeling it
22:07:50 <oerjan> (slightly calvin & hobbes inspired :)
22:08:20 <RodgerTheGreat> it doesn't really catch my imagination
22:08:34 <RodgerTheGreat> AnMaster: I might if I didn't get a 404
22:08:41 <AnMaster> RodgerTheGreat, hm,
22:08:49 <AnMaster> RodgerTheGreat, I just uploaded a new version
22:08:54 <AnMaster> fixed a typo
22:08:57 <AnMaster> maybe that caused it
22:09:02 <AnMaster> RodgerTheGreat, could you please try again
22:09:03 * oerjan was reprimanted for being silly by his 5 or so year old cousin when _i_ drew a dinosaur in a ufo
22:09:14 <AnMaster> RodgerTheGreat, the link works for me
22:09:28 <AnMaster> but I know there are some routing issues, so some may not be able to reach the data center
22:09:48 <AnMaster> I *could* publish it using gopher on my local system if anyone wants that
22:09:52 <oerjan> (mind you she _is_ the serious type)
22:09:53 <RodgerTheGreat> yeah, no luck here
22:09:53 <AnMaster> no httpd here though
22:10:19 <AnMaster> RodgerTheGreat, 404 really?
22:10:26 <AnMaster> you mean "time out" or similar?
22:10:32 <RodgerTheGreat> I don't have a gopher client, and I imagine copying and pasting from telnet would be dreadfully inconvenient
22:10:42 <AnMaster> hmmm
22:10:46 <RodgerTheGreat> AnMaster: I don't get a connection at all. I suppose time out might be more appropriate
22:10:52 <AnMaster> RodgerTheGreat, ok basically it is the specs for a befunge program
22:11:06 <AnMaster> rather complicated to write in befunge
22:11:18 <AnMaster> because Deewiant said "I wouldn't" when I asked how he would do it in befunge
22:11:19 <AnMaster> :D
22:11:40 <RodgerTheGreat> hm. It *might* be beyond my level of expertise- I'm no befunge expert
22:12:06 <AnMaster> basically finding all possible, real and complex, values for x in: ax^2+bx+c=0
22:12:12 <AnMaster> where user can enter, a, b and c
22:12:32 <AnMaster> floating point by the FPDP fingerprint should be used
22:13:12 <AnMaster> RodgerTheGreat, sigh I wrote it up very nicely in LaTeX, hm maybe if I can upload it somewhere else
22:13:18 <AnMaster> RodgerTheGreat, you got firefox?
22:13:23 <AnMaster> firefox can do gopher
22:13:37 <RodgerTheGreat> x = (-b +/- sqr(b^2 - 4*a*c)) / 2*a ?
22:13:44 <RodgerTheGreat> I use safari
22:13:50 <AnMaster> ouch
22:14:01 <RodgerTheGreat> I like safari. :<
22:14:19 <AnMaster> $$[x=-\frac{\sqrt{{b}^{2}-4\,a\,c}+b}{2\,a},x=\frac{\sqrt{{b}^{2}-4\,a\,c}-b}{2\,a}]$$
22:14:28 <AnMaster> as (La)TeX
22:14:38 <AnMaster> would be the two possible answers
22:14:45 <RodgerTheGreat> yeah
22:14:59 <AnMaster> I love how maxima can generate TeX output
22:15:00 <AnMaster> :D
22:15:43 <RodgerTheGreat> I'm not sure what's especially difficult about that unless befunge doesn't naturally support floating point numbers (which I wouldn't really expect in an esolang anyway...)
22:15:58 <AnMaster> RodgerTheGreat, there is a fingerprint for it (FPDP)
22:16:33 -!- p3k has quit.
22:16:41 <AnMaster> however I did this mostly because of <AnMaster> Deewiant, so how would you write a befunge program that solves: 2x^2 + 4x + 1 = 0 <Deewiant> AnMaster: I wouldn't. :-P
22:16:44 <RodgerTheGreat> http://en.wikipedia.org/wiki/Special:Search?search=FPDP&go=Go
22:16:48 <RodgerTheGreat> what
22:16:55 <AnMaster> RodgerTheGreat, huh?
22:17:00 <AnMaster> fingerprint as for befunge
22:17:08 <AnMaster> a loadable module in befunge
22:17:08 <RodgerTheGreat> I have no idea what you mean by that
22:17:11 <AnMaster> provided by the interpreter
22:17:20 <AnMaster> like a standard library kind of
22:17:24 <AnMaster> Funge98 specific
22:17:24 <RodgerTheGreat> ok
22:17:40 <AnMaster> RodgerTheGreat, CCBI supports it and so does cfunge
22:17:44 -!- UnrelatedToQaz has quit (Read error: 110 (Connection timed out)).
22:17:50 <AnMaster> two conforming befunge interpreters
22:17:59 <AnMaster> RodgerTheGreat, well for cfunge, only development version got it yet
22:18:26 <AnMaster> I'll make a new snapshot in a hour or so
22:21:36 -!- calamari has quit (Read error: 110 (Connection timed out)).
22:26:07 <AnMaster> RodgerTheGreat, http://omploader.org/vZnl2
22:27:14 <RodgerTheGreat> very nice writeup
22:27:23 <AnMaster> thanks
22:28:06 <AnMaster> RodgerTheGreat, for the great layout thank LyX, a WYSIWYM (What You See Is What You Meant) GUI editor for LaTeX
22:28:12 <ehird> i like safari too
22:28:18 <ehird> its more standards compliant than firefox
22:28:21 <ehird> and the rendering is better
22:28:24 <RodgerTheGreat> indeed
22:28:29 <AnMaster> ehird, well I use konqueror
22:28:32 <AnMaster> or lynx
22:28:33 <AnMaster> :)
22:29:17 <ehird> AnMaster: caught ya! Safari is based on KHTML, Konqueror's rendering engine
22:29:19 <AnMaster> also
22:29:24 <AnMaster> it is not a memory hog
22:29:26 <AnMaster> ehird, I know..ö.
22:29:27 <ehird> And the KDE people are merging back in Apple's changes into KHTML
22:29:29 <AnMaster> ...*
22:29:35 <ehird> so don't be insulting the safari!
22:29:39 <AnMaster> I haven't
22:30:06 <AnMaster> but I would want gopher support in it
22:30:48 <AnMaster> ehird, some stuff I still miss from firefox, some of the extensions for example
22:30:57 <AnMaster> adblock is the main one
22:32:30 <ehird> AnMaster: how apple will see the gopher issue:
22:32:35 <ehird> 1. next to nobody uses gopher anymore
22:32:46 <AnMaster> 2. does not have an i in it
22:32:50 <ehird> 2. those that do probably use a CLI interface since gopher has little to offer graphically anyway
22:32:59 <AnMaster> 3. no it really doesndoes not have an i in it
22:33:02 <ehird> 3. ergo, supporting gopher in safari is pointless
22:33:03 <AnMaster> doesn't have*
22:33:16 <ehird> AnMaster: HA HA FUNNY JOEK! apple sux0r coz dey have WUN BUTAN
22:33:20 <ehird> no right klik!!! ahahaha
22:33:31 <AnMaster> ehird, they do have right click nowdays
22:33:36 <AnMaster> but they didn't for ages
22:33:51 <ehird> AnMaster: Suprise! You could PLUG IN another MOUSE
22:33:56 <ehird> I know, it's really goddamn mind-blowing.
22:33:59 <ehird> Obviously, Apple suck.
22:34:20 <RodgerTheGreat> Apple hasn't sold a single button mouse in years
22:34:31 <AnMaster> they even got the right click menus YEARS before their own mice had more than one button
22:34:41 <AnMaster> Mac OS 9 had right click
22:34:48 <AnMaster> Mac OS 8 may have had, not sure
22:34:58 <RodgerTheGreat> more importantly, think about what you're saying when you criticize a single button "Haha dumbass! My computer has a WAY more complicated interface that yours- it MUST be better!"
22:35:18 <RodgerTheGreat> *than yours
22:35:18 <AnMaster> RodgerTheGreat, um? way more efficient
22:35:27 <AnMaster> I mostly work with keyboard anyway
22:35:57 <AnMaster> RodgerTheGreat, and I didn't say it was bad
22:36:00 <AnMaster> it was ehird that did
22:36:08 <AnMaster> I just agreed with him
22:36:18 <RodgerTheGreat> and ehird was being ironic, anyway- I wasn't implying this was a flamewar
22:36:21 <lament> apple sells a whole bunch of single button mice. They come with every computer.
22:36:42 <AnMaster> lament, indeed the laptops still have a single button for example
22:36:44 <lament> Also, all laptops have a single-button trackpad
22:36:48 <lament> right
22:36:56 <RodgerTheGreat> lament: the mighty mouse is what comes standard with macs, and it has 4 buttons
22:37:04 <lament> RodgerTheGreat: oh?
22:37:08 <RodgerTheGreat> yes
22:37:10 -!- wildhalcyon has joined.
22:37:18 <AnMaster> RodgerTheGreat, that doesn't address the laptop issue still
22:37:27 <oerjan> the mouse that roared?
22:37:31 <lament> i didn't know it was standard now
22:37:34 <AnMaster> oerjan, hehehe
22:37:37 <lament> must be a very new thing
22:37:37 <RodgerTheGreat> AnMaster: every mac laptop in YEARS recognizes multitouch
22:37:45 <RodgerTheGreat> tap with two fingers == right click
22:37:54 <AnMaster> RodgerTheGreat, hm but one button below the pad
22:38:10 <AnMaster> and I hate using the tap interface
22:38:13 <AnMaster> on laptops
22:38:19 <RodgerTheGreat> the only thing that button's even really for is dragging things
22:38:22 <AnMaster> I just mess up with it
22:38:44 <AnMaster> so I either use a button or I use an external mouse
22:38:55 <AnMaster> even though my laptop got the multitouch stuff
22:38:57 <RodgerTheGreat> then it's more a matter of "I don't like how that functionality works" than "macs don't have this feature"
22:39:01 <AnMaster> (a PC thank goodness)
22:39:17 <AnMaster> (as in x86_64 NOT made by apple)
22:39:36 <AnMaster> RodgerTheGreat, I used it, and it works horribly for me
22:39:46 <AnMaster> I prefer a split button below the touchpad
22:39:53 <AnMaster> WAY easier to work with
22:39:55 <AnMaster> for me
22:40:15 <AnMaster> RodgerTheGreat, so what was your point? locking out some customers?
22:40:21 <AnMaster> I'm not sure I got the point really
22:42:22 <AnMaster> RodgerTheGreat, well?
22:42:50 <ehird> lament: mighty mouse = 2005
22:44:53 <AnMaster> ehird, so what do you think of the laptop problem they got?
22:45:13 <AnMaster> seems like you fanboys are ignoring when I point out the flaw :P
22:50:52 <lament> ehird: yes, but it coming standard must be new
22:51:09 <lament> (unless i'm on crack. which is possible)
22:51:35 -!- calamari has joined.
22:53:22 <lament> equalUpToTransposition a b = (a ==) `any` shiftedVersions b where shiftedVersions b = [Set.map (transpose n) b | n <- [0..11]]
22:53:48 <lament> <3 haskell
22:54:28 <lament> even though the part after 'where' is kind of ugly
22:57:10 <oerjan> (a ==) `any` == a `elem`
22:57:38 <oerjan> also, that cannot be the usual transpose from Data.List...
22:57:51 <lament> no, good point
22:58:17 <lament> and good point about `elem`, i'm an idiot
22:58:55 <lament> equalUpToTransposition a b = a `elem` [Set.map (transpose n) b | n <- [0..11]]
22:59:27 <lament> transpose is transposition of chords
23:00:26 <lament> err, of pitches
23:01:29 <ehird> [22:50] <lament> ehird: yes, but it coming standard must be new
23:01:30 <ehird> nope
23:01:40 <AnMaster> night
23:01:45 <ehird> AnMaster: the gesture you can use on the laptop is fine
23:01:50 <ehird> see: RodgerTheGreat
23:01:55 <AnMaster> ehird, no, it didn't work
23:01:55 <ehird> [22:37] <RodgerTheGreat> AnMaster: every mac laptop in YEARS recognizes multitouch
23:01:55 <ehird> [22:37] <RodgerTheGreat> tap with two fingers == right click
23:01:58 <AnMaster> see what I said above
23:02:02 <AnMaster> <AnMaster> RodgerTheGreat, I used it, and it works horribly for me
23:02:07 <AnMaster> ehird, your point?
23:02:13 <AnMaster> I even used it on a actual mac
23:02:13 <ehird> [22:37] <AnMaster> RodgerTheGreat, hm but one button below the pad
23:02:13 <ehird> [22:38] <AnMaster> and I hate using the tap interface
23:02:13 <ehird> [22:38] <AnMaster> on laptops
23:02:18 <AnMaster> it is horrible
23:02:21 <ehird> AnMaster: your point is 'i don't like how macs do it'
23:02:28 <AnMaster> ehird, I can't use it
23:02:29 <ehird> not 'mac laptops sux coz they got 1 butan'
23:02:30 <AnMaster> is my point
23:02:34 <ehird> good for you
23:02:43 <AnMaster> ehird, it is not accessible
23:02:59 <AnMaster> that is MY point
23:03:11 <AnMaster> that they lock out potential customers
23:03:12 <AnMaster> night
23:03:39 <ehird> AnMaster: no
23:03:43 <ehird> AnMaster: they lock out YOU
23:03:45 <ehird> everyone else is fine with it
23:03:51 <AnMaster> not really
23:03:57 <AnMaster> I got some friends who agree with me
23:04:49 <AnMaster> other than that I would love apple hardware (I would not run OS X on it of course
23:05:12 <ehird> 'of course'
23:05:13 <ehird> why of course
23:05:19 <ehird> apple's hardware isn't all that special, anyway
23:05:27 <ehird> OS X is that part that's worth the money
23:05:36 <AnMaster> ehird, because linux works well on it
23:05:44 <AnMaster> and no way I will run os x
23:05:53 <AnMaster> I don't want a GUI most of the time
23:05:59 <AnMaster> mostly I work in text only
23:06:05 <AnMaster> atm for example. X isn't running
23:06:53 <oklofok> what's not accessible to AnMaster? tapping on two fingers at once?
23:06:59 <oklofok> you got just one finger?
23:07:01 <AnMaster> oklofok, tapping
23:07:07 <AnMaster> on the touch pad
23:07:09 <AnMaster> at all
23:07:13 <oklofok> :|
23:07:21 <oklofok> you retarded? ;P
23:07:22 <AnMaster> I just end up tapping when I try to just move the pointer and so on
23:07:27 <ehird> AnMaster: you don't have to run quartz
23:07:41 <ehird> a good solution is fullscreening a terminal app, though
23:07:42 <ehird> you can do that.
23:07:49 <ehird> but still
23:07:49 <ehird> [23:05] <AnMaster> and no way I will run os x
23:07:49 <oklofok> i used to do everything except right-clicking on the pad
23:07:53 <oklofok> hmm
23:07:54 <ehird> you don't provide any justification
23:07:58 <oklofok> actually, i did that too on it
23:08:00 <AnMaster> ehird, I did
23:08:10 <ehird> AnMaster: only one. and i rebutted it
23:08:15 <oklofok> but i haven't set up the new mouse for stuff like dragging
23:08:15 <AnMaster> ehird, I can't stand the OS in question, GUI and just eye candy
23:08:34 <AnMaster> ehird, I want ion or ratpoison as window manager on my system
23:08:39 <AnMaster> I use that on my current laptop
23:08:49 <ehird> hehe, eye candy
23:08:58 <ehird> your words are well picked: like those of someone who has only used OS X in passing
23:09:03 -!- jix has quit ("CommandQ").
23:09:05 <AnMaster> ehird, or rather eye poison
23:09:11 <AnMaster> not eye candy really
23:09:20 <ehird> i repeat my previous statement
23:09:26 <AnMaster> ehird, I have used it quite a bit
23:09:41 <AnMaster> I wish I wouldn't have had to
23:09:49 <AnMaster> ehird, the system was 10.4 Tiger
23:09:49 <oklofok> oses are all the same
23:09:55 * oerjan turned off everything tapping except plain left button selection on his pad. or something like that.
23:10:15 <ehird> AnMaster: i repeat my previous statement
23:10:16 <AnMaster> oerjan, indeed, that would fail totally on a mac laptop
23:10:17 <ehird> oklofok: hey you're BACK!!!!
23:10:19 <ehird> :p
23:10:20 <oklofok> :O
23:10:22 <oklofok> :DDDDDDDDDDDDD
23:10:22 <AnMaster> because, you couldn't right click
23:10:31 <ehird> oklofok: NOW #ESOTERIC IS NO LONGER BORIIGIIGIGIGNNGNNGG
23:10:31 <AnMaster> ehird, what one?
23:10:38 <ehird> this one: [23:09] <ehird> your words are well picked: like those of someone who has only used OS X in passing
23:10:41 <oklofok> i had right-click when clicking the right upper corner
23:10:46 <AnMaster> ehird, I have used OS X quite a bit
23:10:49 <AnMaster> ehird, I loath it
23:10:57 <AnMaster> ehird, just GUI crap
23:10:58 <oklofok> you could easily have like 10 buttons that way
23:11:05 <oerjan> i don't quite remember what i did but it solved my problem of clicking on links when i didn't mean to
23:11:15 <oklofok> unless we're not talking about pads, we should be talking about them
23:11:33 <ehird> AnMaster: and i repeat it once again
23:11:40 <oklofok> (i did read the logs, but i can easily read a whole conversation without actually understanding the topic)
23:12:08 <AnMaster> ehird, what? insisting that I haven't used OS X?
23:12:15 <AnMaster> ehird, or what one did you repeat?
23:12:39 <AnMaster> you are unable to accept differences in taste, and more important, so is Apple
23:13:05 <oerjan> ehird: you are showing too much enthusiasm. please lower your spirit or you will be banned.
23:13:19 <AnMaster> ehird, you are just restating your incorrect statement
23:13:24 <AnMaster> or opinion
23:13:29 <AnMaster> this sounds VERY familiar
23:13:45 <oklofok> limifaar
23:13:51 <oklofok> that's a cool word
23:13:55 <oklofok> right, fellas?
23:14:09 <oerjan> i don't think that is even finnish
23:14:14 <AnMaster> ehird, basically it seems you are unable to accept non-mainstream (read: non-ehird, is what you think) opinions
23:14:31 <AnMaster> oklofok, it is not Swedish at least
23:14:43 <oklofok> oerjan: we don't have many non-borrowed ones with r ending
23:14:45 <AnMaster> nor English?
23:14:54 <oerjan> that's what i thought
23:15:03 <oklofok> it's not swedish or english either, no
23:15:07 <oklofok> and it's not german
23:15:10 <oklofok> and not french
23:15:12 <oerjan> maybe dutch?
23:15:14 <AnMaster> what language?
23:15:16 <oklofok> i'm fairly sure it's not anything
23:15:20 <oklofok> dutch... perhaps
23:15:20 <AnMaster> night
23:15:38 <oklofok> why should everything have a meaning
23:15:58 <oerjan> it's in the Armagan language
23:16:07 <oklofok> is that so?
23:16:13 <oklofok> what's it mean then?
23:16:21 <oerjan> almost certainly
23:16:29 <oklofok> that's the meaning?
23:16:52 <oerjan> it means well-known, or closely related
23:17:14 <oerjan> ;)
23:17:26 <ehird> [23:13] <oerjan> ehird: you are showing too much enthusiasm. please lower your spirit or you will be banned.
23:17:30 <ehird> funniest thing of the day :D
23:17:56 <oerjan> we aim to please.
23:17:59 <ehird> [23:14] <AnMaster> ehird, basically it seems you are unable to accept non-mainstream (read: non-ehird, is what you think) opinions <-- this is completely ad hominem, just for the record
23:18:01 <oerjan> you aim too, please.
23:18:12 <oklofok> oerjan: isn't that the gnilshe language?
23:18:20 <ehird> oerjan: i retract my previous statement. FUNNIEST THING OF THE DAY :D
23:18:44 <oerjan> oklofok: well it's sometimes called that as well.
23:19:38 <oerjan> kickban ehird now.
23:20:11 <oklofok> mi' ont entful ni nel-higs, hoguth
23:20:20 <oerjan> argh
23:20:59 <ehird> oerjan: :D
23:21:27 <oerjan> mi' sa entful sa lli' erve eb, ldi' nkith
23:22:17 <oklofok> li'd?
23:22:31 <oklofok> hwut
23:22:59 <oerjan> lli' entfrelquy nkith ni nelhigs
23:24:15 <oklofok> pulirgsynsir derlaabe, wtb
23:24:26 <oklofok> DDDDDDDDDDDDDDDDDddDDDDDDDDD:DDDDDDDDDddd
23:25:39 * oerjan is having problems with that first word. sti' ont tequi derlaabe.
23:25:50 -!- otobot has joined.
23:26:16 <oklofok> ont purgsinsir.
23:28:34 <oerjan> dendei ont.
23:33:07 -!- oerjan has quit ("Ogdo ngith").
23:52:07 -!- olsner has quit ("Leaving").
2008-04-10
00:04:02 <ehird> :: 2
00:04:02 <otobot> 2
00:04:04 <ehird> :: /
00:04:04 <otobot> /
00:04:07 <ehird> :: (= / +)
00:04:07 <otobot> +
00:04:10 <ehird> :: (/ 5 5)
00:04:10 <otobot> 10
00:04:15 <ehird> hah
00:04:23 <oklofok> D:
00:04:24 <oklofok> wtf
00:04:43 <oklofok> oh
00:04:44 <oklofok> :d
00:09:19 <oklofok> let's fix that
00:09:24 <oklofok> :: (= / $/)
00:09:25 <otobot> /
00:09:30 <oklofok> :: (/ 5 5)
00:09:31 <otobot> 1
00:10:20 <ehird> oklofok: no built-in-function type? XD
00:10:31 <oklofok> hmm?
00:10:51 <ehird> oklofok: specialcasing atoms, thingy
00:10:58 <ehird> oklofok: shouldn't / be a built-in function?
00:11:00 <ehird> that sends the atom off
00:11:03 <oklofok> no, it's an atom
00:11:14 <oklofok> errt
00:11:26 <oklofok> the dispatch is just plain oklotalk logic
00:11:39 <oklofok> as i said, it's not (func arg arg)
00:11:42 <oklofok> it's (expr expr expr)
00:11:52 <oklofok> the expressions are asked to perform the operation, one by one
00:12:00 <oklofok> the one who wants to, does it
00:12:12 <oklofok> and if no one wants to do it, the first one is asked to
00:12:31 <oklofok> and yes, "wanting" is the official term
00:19:19 <ehird> oklofok: haha
00:19:49 <ehird> :: ($/ $/ $/)
00:19:49 <otobot> /
00:20:02 <ehird> oklofok: so, it asks $/ to $/ with $/
00:20:05 <ehird> then asks $/ to $/ with $/
00:20:07 <oklofok> yeah!
00:20:08 <ehird> since neither wants to do it
00:20:12 <ehird> it asks $/ to $/ with $/
00:20:18 <ehird> and it says 'oh fuck it' and returns itself
00:20:34 <oklofok> yep, it should actually try all three, but i disabled that for this version, because currently only atoms don't want to evaluate
00:20:39 <oklofok> usually, that's just what you want
00:21:00 <oklofok> but the feature is useless atm
00:21:20 <oklofok> it won't be once i add... well, querying what wants to evaluate
00:21:24 <oklofok> which is trivial really
00:21:34 <oklofok> but has to be done in order to get done, anyway
00:21:50 <ehird> oklofok: so {} is just a '
00:21:56 <ehird> doer'
00:22:09 <oklofok> {} is a doer, yeah
00:22:10 <ehird> and doers can want to do some things (isomorphic to function calls)
00:22:17 <ehird> and not do others (unique to oklotalk)
00:22:18 <oklofok> yeah.
00:22:25 <oklofok> well
00:22:29 <ehird> and that's why you can use {} as a function
00:22:34 <oklofok> things don't want to do everything
00:22:41 <ehird> oklofok:
00:22:43 <oklofok> i mean, 1 doesn't want to add a complex to itself
00:22:44 <ehird> 'and not do others'
00:22:54 <oklofok> which is why something like __radd__ can be made
00:22:56 <oklofok> hmm
00:23:08 <oklofok> actually i'm not sure i understood
00:23:58 <ehird> oklofok: {...} creates a 'thing'
00:24:02 <ehird> things have a few properties:
00:24:24 <ehird> - they can 'do' some things, based on whether they match one of several patterns given (pattern matching is definable and thus TC)
00:24:38 <ehird> - everything that they don't explicitly want to do, they don't, and cascade
00:24:46 <oklofok> yep.
00:24:52 <ehird> the 'actions' inside
00:24:53 <ehird> are closures
00:25:02 <ehird> so {(-> [a b] {...})}
00:25:09 <ehird> the inner 'thing' can access the stuff given
00:25:14 <ehird> and the outer 'thing' acts like a function
00:25:41 <oklofok> something like that
00:25:46 <oklofok> well
00:26:03 <oklofok> it's really about whether a thing will evaluate any expression given a certain argument
00:26:27 <oklofok> so if a function starts with an action, it will want all args
00:29:32 <oklofok> like {outn "an function was entered"; ptrn -> smth} will always want
00:29:35 <oklofok> everything
00:30:10 <pikhq> Somehow, it amuses me greatly that my math teacher from last year has offered me a ride to the Shadowmoor prerelease.
00:30:24 <oklofok> what's that
00:30:36 <pikhq> Shadowmoor is the next Magic: The Gathering set.
00:30:40 <ehird> oklofok: oh you can do that?!
00:30:49 <oklofok> ehird: what?
00:30:59 <ehird> :: (= myId {outn "boo"; (-> x x)})
00:31:01 <otobot> <<<20586168>>>
00:31:01 <pikhq> And a prerelease is a tournament where you're given a bunch of cards from the upcoming set to build a deck with.
00:31:04 <ehird> :: (myId 2)
00:31:06 <otobot> 2
00:31:08 <ehird> hmm
00:31:10 <ehird> :|
00:31:10 <oklofok> almost.
00:31:25 <oklofok> 1. no output in oklotalk--, it goes in my terminal
00:31:38 <oklofok> 2. no ; in oklotalk--, just space to separate expressions
00:31:46 <oklofok> 3. () for application
00:32:01 <oklofok> {outn "boo"; (-> x x)} works
00:32:03 <oklofok> ...
00:32:09 <oklofok> {(outn "boo") (-> x x)} works
00:32:18 <oklofok> but you can't show it, because no side-effects are visible
00:32:36 <oklofok> well...
00:33:22 <oklofok> :: (= x {(-> n {(-> [$set n] n) (-> $get n)})})
00:33:23 <otobot> <<<20547584>>>
00:33:32 <oklofok> :: (= test (x 4))
00:33:34 <otobot> <<<20643512>>>
00:33:36 <oklofok> :: (get test)
00:33:38 <otobot> 4
00:33:42 <ehird> oklofok: hah
00:33:44 <oklofok> :: (set test 7)
00:33:47 <otobot> 7
00:33:48 <ehird> i'm going to make a linked list
00:33:50 <oklofok> :: (get test)
00:33:52 <otobot> 7
00:34:01 <oklofok> so, we have a pointer here
00:34:03 <oklofok> now...
00:34:06 <oklofok> side-effects
00:34:27 <ehird> oklofok: is just (-> [$pb] ...) ok?
00:34:30 <oklofok> :: ({(set test 8) (-> n (* n 3))} 5)
00:34:32 <otobot> 15
00:34:36 <oklofok> test
00:34:40 <oklofok> :: test
00:34:42 <otobot> <<<20643512>>>
00:34:49 <oklofok> :|
00:34:52 <oklofok> oh
00:34:56 <oklofok> :: (get test)
00:34:58 <otobot> 8
00:35:10 <oklofok> so, yes, you can do it
00:35:33 <oklofok> ehird: no it's not
00:35:36 <oklofok> i mean
00:35:40 <oklofok> it will not match
00:35:45 <oklofok> you wanna get like tail?
00:35:51 <oklofok> $pu as pattern
00:35:54 <oklofok> pattern-match unary
00:37:29 <ehird> oklofok: ok, define $pb message to me exactly
00:37:34 <ehird> what is sent [$pb ???]
00:37:36 <oklofok> :: (= ptr {(-> n {(-> [$set n] n) (-> $get n)})})
00:37:37 <ehird> and what should i return
00:37:39 <otobot> <<<20667808>>>
00:37:43 <oklofok> well
00:37:52 <ehird> ok wait
00:37:55 <ehird> in your ptr thing
00:38:00 <oklofok> when something is pattern matched on an application of the form (x y z)
00:38:03 <ehird> does the 'n' override the upper scopes 'n'?
00:38:07 <ehird> actually
00:38:10 <ehird> just continue answering
00:38:16 <oklofok> the message [$pb x] is sent to the object.
00:38:28 <oklofok> and if it returns a list with 2 elems, those are put into y and z
00:38:33 <oklofok> hmm
00:38:41 <oklofok> hmm
00:38:55 <oklofok> ehird: what do you mean?
00:39:01 <oklofok> :: (= n 1)
00:39:03 <otobot> 1
00:39:11 <oklofok> :: (= ptest (ptr 8))
00:39:13 <otobot> <<<20660096>>>
00:39:17 <oklofok> :: (get ptest)
00:39:19 <otobot> 8
00:39:25 <oklofok> :: (set ptest 10)
00:39:27 <otobot> 10
00:39:32 <oklofok> :: (get ptest)
00:39:34 <otobot> 10
00:39:36 <oklofok> :: n
00:39:39 <otobot> 1
00:39:47 <oklofok> does that answer you?
00:40:24 <oklofok> i'm fairly sure i've done all scoping *well*, at least it usually seems to work whatever i do
00:40:32 <ehird> :: (= cons {(-> [h t] {(-> [$pb cons] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t)})})
00:40:34 <otobot> <<<20680136>>>
00:40:40 <ehird> :: (= test (cons 1 2))
00:40:43 <otobot> <<<20689544>>>
00:40:46 <ehird> :: (car test)
00:40:47 <otobot> 1
00:40:49 <ehird> :: (cdr test)
00:40:51 <otobot> 2
00:40:55 <ehird> :: (setcar test 3)
00:40:57 <otobot> 3
00:40:58 <ehird> :: (car test)
00:41:00 <otobot> 3
00:41:04 <oklofok> :d
00:41:07 <oklofok> :D
00:41:09 <ehird> i am awesome
00:41:09 <ehird> :D
00:41:19 <oklofok> do $pb :
00:41:22 <ehird> oklofok: oklotalk is cool. could use some nicer syntax though, yeah ;)
00:41:27 <oklofok> because that's the standard
00:41:29 <oklofok> then do indexing
00:41:32 <ehird> oklofok: okay
00:41:34 <ehird> i won't do indexing
00:41:36 <ehird> it's just a cons cell
00:41:37 <ehird> not a list
00:41:38 <oklofok> and we'll try quicksort :D
00:41:43 <ehird> you can treat it like a list though
00:41:44 <oklofok> but i want to see !
00:41:45 <ehird> oh alright
00:41:46 <ehird> what is indexing
00:41:51 <oklofok> hmm
00:41:55 <oklofok> [$! i]
00:42:05 <ehird> oklofok: can you define setters?
00:42:08 <ehird> (= FOO BAR)
00:42:08 <ehird> in lisp
00:42:11 <ehird> you can override FOO
00:42:13 <ehird> based on its car
00:42:13 <ehird> like
00:42:15 <oklofok> not yet.
00:42:15 <ehird> (= (car x) y)
00:42:20 <oklofok> hmm
00:42:21 <ehird> you can define a setter for (car x)
00:42:26 <oklofok> ah
00:42:30 <ehird> presumably, it would be like $pb
00:42:33 <ehird> it would send off
00:42:36 <oklofok> that isn't done yet, = only does vars
00:42:37 <ehird> [$= car]
00:42:42 <oklofok> but that's just because i'm lazy
00:42:46 <oklofok> it will do that, yeah
00:42:48 <ehird> but i dunno what would be returned
00:42:50 <ehird> :|
00:42:52 <ehird> ah wait
00:42:55 <ehird> [$= car val]
00:42:56 <ehird> of course
00:43:12 <ehird> (= (X Y) Z) -> (X [$= Y Z])
00:43:30 <oklofok> hmm...
00:43:39 <ehird> oklofok: what is the syntax I use for indexing?
00:43:41 <oklofok> well
00:43:41 <ehird> like not defining
00:43:42 <ehird> but using
00:43:53 <oklofok> (! list idx)
00:44:01 <oklofok> :: (! [1 2 3] 0)
00:44:03 <oklofok> actually...
00:44:04 <otobot> 1
00:44:21 <oklofok> it might be that the quicksort doesn't work if the list isn't primitive...
00:44:27 <oklofok> depends on how i've done filter...
00:44:34 <ehird> oklofok: you can implement filter in oklotalk
00:44:39 <oklofok> sure
00:44:44 <oklofok> and would be much cooler too
00:44:47 <oklofok> actually...
00:44:47 <ehird> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1)))})})
00:44:50 <otobot> <<<20634360>>>
00:44:52 <oklofok> trivial
00:44:54 <ehird> oklofok: ok, try quicksort
00:45:03 <oklofok> well
00:45:08 <oklofok> need to do filter first.
00:45:57 <oklofok> hmph
00:45:59 <oklofok> actually
00:46:06 <ehird> oklofok: just try it
00:46:10 <ehird> oh wait
00:46:11 <ehird> i need a nil
00:46:13 <ehird> that's not hard
00:46:19 <ehird> oklofok: how do i trigger an error?
00:46:31 <oklofok> ...error?
00:46:33 <oklofok> wuzzat
00:46:35 <oklofok> return $f
00:46:35 <ehird> oklofok: like this:
00:46:37 <ehird> :: [
00:46:39 <otobot> []
00:46:41 <ehird> err
00:46:42 <ehird> :: (
00:46:46 <oklofok> :D
00:46:46 <otobot> An error: Empty application.
00:46:48 <ehird> see
00:46:51 <ehird> oklofok: 'An error:'
00:46:59 <oklofok> you can't.
00:47:02 <oklofok> sry
00:47:04 <ehird> you should add that, sometime
00:47:16 <oklofok> well, i could, in oklotalk--
00:47:49 <oklofok> but it's not very oklotalky, unless you've stored the continuation for the return somewhere
00:47:54 <oklofok> well...
00:48:02 <ehird> oklofok: it should be oklotalky
00:48:03 <ehird> otherwise
00:48:04 <ehird> you get errors
00:48:06 <oklofok> i guess you can just implement that without explicit continuations
00:48:06 <ehird> propogating
00:48:08 <ehird> since nothing ever fails
00:48:11 <ehird> so it's really hard to debug
00:48:13 <ehird> also, code doesn't get shorter
00:48:19 <ehird> since you have to manually check for errors
00:48:27 <ehird> and yeah, you can just do it with exceptions
00:48:35 <ehird> which are a special, downwards-only, one-shot form of continuations
00:48:51 <oklofok> well i could do that just with a simple *python exception*, in like a few lines
00:49:02 <ehird> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f)})
00:49:05 <otobot> <<<20666208>>>
00:49:16 <oklofok> but perhaps later, right now i need to add a thing to get filter to work
00:49:19 <oklofok> because..
00:49:38 <ehird> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
00:49:43 <otobot> <<<20716400>>>
00:49:50 <oklofok> you can't dispatch on anything except what the object matches on
00:50:03 <ehird> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
00:50:05 <otobot> <<<20716360>>>
00:50:11 <oklofok> i'll add the tst function
00:50:13 <ehird> :: (length (cons 1 (cons 2 nil)))
00:50:15 <otobot> 2
00:50:26 <oklofok> ...length?
00:50:27 <ehird> oklofok: i think i might be the best oklotalk coder next to you
00:50:28 <ehird> ;)
00:50:31 <oklofok> oh
00:50:31 <ehird> and yeah, length
00:50:33 <oklofok> hehe :D
00:50:35 <oklofok> prolly.
00:50:39 <ehird> :: (2 + 2)
00:50:41 <otobot> 4
00:50:44 <ehird> hahahahah
00:50:45 <ehird> :D
00:50:46 <oklofok> :D
00:50:47 <oklofok> xD
00:50:49 <ehird> oklotalk is FLEXIBLE
00:50:54 <ehird> unintentionally
00:50:54 <ehird> :: (2 2 +)
00:50:58 <otobot> f
00:51:00 <ehird> awwww
00:51:02 <ehird> THAT SUCKS
00:51:06 <oklofok> well
00:51:10 <ehird> oklofok: make it try ALL PERMUTATIONS
00:51:11 <ehird> :DDD
00:51:12 <oklofok> it will work in actual oklotalk :D
00:51:17 <oklofok> that's an implementation defect.
00:51:19 <oklofok> haha
00:51:21 <ehird> 3 4 +
00:51:23 <ehird> will try
00:51:24 <ehird> 3 4 +
00:51:26 <ehird> 3 + 4
00:51:29 <ehird> 4 3 +
00:51:31 <ehird> 4 + 3
00:51:33 <ehird> + 3 4
00:51:34 <ehird> + 4 3
00:51:34 <ehird> etc
00:51:36 <ehird> until one works
00:51:38 <ehird> :DDDDDD
00:52:05 <oklofok> about permutations... pattern matching will actually, when excountering an application as a pattern, first ask the function that is used for splitting if it's some special thing
00:52:20 <oklofok> you can do for instance (* n) for matching any number of n's in a list
00:52:26 <oklofok> with an uplevel match
00:52:28 <oklofok> now
00:52:34 <ehird> oklofok: still
00:52:36 <ehird> try all permutations
00:52:37 <ehird> it's ROBUST
00:52:38 <ehird> :DDD
00:52:44 <oklofok> you can have patterns in a certain kind of list
00:52:46 <oklofok> heh
00:52:48 <oklofok> why not :P
00:52:52 <oklofok> it's just there's only 6
00:53:01 <oklofok> well... why not, why not xD
00:53:05 <oklofok> but, my point is
00:53:17 <oklofok> you know when you have lots of types
00:53:32 <oklofok> if you have a program with type checks and such
00:53:48 <oklofok> so you could basically have the program just guess what arg is what based on types
00:54:05 <ehird> oklofok: however, i still think you need a propogating error message mechanism
00:54:06 <ehird> i mean
00:54:08 <oklofok> (prm [(int x) (str y) (lst z)])
00:54:09 <ehird> oklotalk's crazy ideas are fun
00:54:10 <oklofok> :D
00:54:13 <ehird> but if you are actually gonna write something
00:54:16 <ehird> :p
00:54:18 <oklofok> that will match them in any order
00:54:26 <ehird> c has tons of fun because it does not have exceptions
00:54:31 <ehird> there's a global variable errno
00:54:35 <ehird> and everything sets it if it dies
00:54:38 <oklofok> propogating error messages?
00:54:40 <ehird> so you have to check errno after most calls
00:54:42 <ehird> totally hilarious
00:54:45 <oklofok> uhh, yeah, that's ugly.
00:54:48 <oklofok> well
00:54:49 <ehird> oklofok: if you don't handle them, they bubble up the call stack
00:54:53 <ehird> python's do those
00:55:12 <oklofok> oklotalk should just allow you to step out of the evaluation, without actually even using continuations or anything
00:55:20 <oklofok> i mean
00:55:34 <oklofok> you can just move in the parse tree up to a try or something
00:55:41 <oklofok> i've written some fun thingies with this
00:56:01 <oklofok> heh, oklotalk has so much shit...
00:56:13 <oklofok> ehird: well yeah, exceptions
00:56:17 <oklofok> i know the concept
00:57:00 <oklofok> that "stepping a level up" can be used for something like define-syntax
00:57:32 <oklofok> hmm
00:57:34 <oklofok> what was i gonna do..
00:59:20 -!- ehird has quit ("This computer has gone to sleep").
01:00:11 <oklofok> :: reload
01:00:14 -!- otobot has quit (Remote closed the connection).
01:00:20 <oklofok> :|
01:01:45 -!- otobot has joined.
01:03:44 <Sgeo> " Usage: NOTICE <nick/channel> <message>, sends a notice. Notices are a type of message that should be auto reacted to" isn't that exactly wrong?
01:05:03 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst {(f h)})) t) (+ [h] (' f t))]) (-> [f (: h t)] (+ [h] (' f t)))})
01:05:05 <otobot> <<<19347336>>>
01:05:18 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:05:20 <otobot> [1 2 3 4 5]
01:05:25 <oklofok> darn
01:05:39 <oklofok> ({(< _ 3)} 7)
01:05:46 <oklofok> :: ({(< _ 3)} 7)
01:05:48 <otobot> f
01:06:40 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t) (+ [h] (' f t))]) (-> [f (: h t)] (+ [h] (' f t)))})
01:06:42 <otobot>
01:06:43 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:06:46 <otobot> [1 2 3 4 5]
01:07:58 <oklofok> :: ({(> _ 3)} 7)
01:08:04 <otobot> t
01:08:20 <oklofok> oh
01:08:46 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:08:51 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:08:58 <otobot>
01:09:00 <otobot> An error: Var instance has no attribute 'call'
01:09:09 <oklofok> :)
01:09:35 <oklofok> ah
01:09:52 <oklofok> :: reload
01:09:54 <otobot> reload
01:09:59 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:10:01 <otobot> <<<19507280>>>
01:10:05 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:10:07 <otobot> An error: Var instance has no attribute 'call'
01:10:13 <oklofok> wtf.
01:11:20 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:11:21 <otobot> <<<19543384>>>
01:11:59 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
01:12:20 -!- otobot has joined.
01:12:23 <oklofok> :: reload
01:12:23 <oklofok> ...
01:12:23 <oklofok> a bit slow
01:12:28 <otobot> reload
01:12:39 <oklofok> :D
01:12:41 <oklofok> okay
01:12:46 <oklofok> seems it's actually lag.
01:12:58 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:13:00 <otobot> <<<20103296>>>
01:13:06 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:13:09 <otobot> An error: Atm instance has no attribute 'call'
01:13:15 <oklofok> ...
01:14:21 <oklofok> :: ({(-> (tst {(> 3 _)}) 0)} 5)
01:14:23 <otobot> f
01:14:32 <oklofok> :: ({(-> (tst {(< 3 _)}) 0)} 5)
01:14:35 <otobot> 0
01:15:59 <oklofok> :: ({(-> [n n] 0)} [1 1])
01:16:01 <otobot> 0
01:16:08 <oklofok> :: ({(-> [n n] 0)} [1 2])
01:16:10 <otobot> 0
01:16:18 <oklofok> :: ({(-> [n n] n)} [1 2])
01:16:20 <otobot> 2
01:16:44 <oklofok> hoh, that's actually a pretty bad flaw.
01:18:13 <oklofok> :: reload
01:18:15 <otobot> reload
01:18:19 <oklofok> :: ({(-> [n n] n)} [1 2])
01:18:22 <otobot> f
01:18:27 <oklofok> :: ({(-> [n n] 0)} [1 2])
01:18:29 <otobot> f
01:18:29 <oklofok> :: ({(-> [n n] 0)} [1 1])
01:18:32 <otobot> f
01:18:38 <oklofok> :<
01:18:50 <oklofok> okay, command line debug
01:18:50 <oklofok> ->
01:20:35 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]").
01:24:16 <oklofok> :: reload
01:24:19 <otobot> reload
01:24:22 <oklofok> :: ({(-> [n n] 0)} [1 1])
01:24:24 <otobot> 0
01:24:30 <oklofok> :: ({(-> [n n] 0)} [1 2])
01:24:36 <otobot> f
01:24:41 <oklofok> thank you
01:24:51 <oklofok> so *now* filter..?
01:24:55 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:24:57 <otobot> <<<20218184>>>
01:25:02 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:25:07 <otobot> An error: Atm instance has no attribute 'call'
01:25:12 <oklofok> :D
01:30:27 <oklofok> :: reload
01:30:29 <otobot> reload
01:30:35 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:30:37 <otobot> <<<20151032>>>
01:30:43 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:30:45 <otobot> An error: global name 'self' is not defined
01:30:50 <oklofok> :P
01:31:01 <oklofok> :: reload
01:31:03 <otobot> reload
01:31:06 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:31:08 <otobot> <<<20220464>>>
01:31:14 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:31:16 <otobot> An error: global name 'self' is not defined
01:31:22 <oklofok> hmm?
01:31:48 <oklofok> :: reload
01:31:50 <otobot> reload
01:31:57 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})(flr {(< _ 3)} [1 2 3 4 5])
01:31:59 <otobot> An error: Atm instance has no attribute 'call'
01:32:05 <oklofok> :D
01:32:08 <oklofok> okay lol.
01:32:43 <oklofok> last attempt, i promise
01:32:48 <oklofok> :: reload
01:32:51 <otobot> reload
01:32:53 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})(flr {(< _ 3)} [1 2 3 4 5])
01:32:55 <otobot> [1 2 3 4 5]
01:33:01 <oklofok> :D
01:33:06 <oklofok> well at least no errors
01:33:08 <oklofok> sigh.
01:34:46 <Sgeo> _oto_bot?
01:35:04 <Sgeo> I'd understand "oklobot" but otobot?
01:35:25 <oklofok> oklotalk-bot
01:35:31 <oklofok> i'll rename it to oktabot
01:36:01 <oklofok> oh
01:36:03 <oklofok> lol
01:36:10 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t))})(flr {(< _ 3)} [1 2 3 4 5])
01:36:12 <otobot> [1 2]
01:36:19 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t))})(flr {(< _ 3)} [1 2 3 4 5 0])
01:36:21 <otobot> [1 2 0]
01:36:25 <oklofok> nice
01:36:32 <oklofok> so... let's do quicksort
01:37:32 <oklofok> :: (= qs {(-> [] []) (-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t)))))})
01:37:34 <otobot> <<<19906312>>>
01:37:40 <oklofok> :: (qs [4 5 1 1 2 4 6])
01:37:42 <otobot> [1 1 2 4 5 4 6]
01:37:48 * Sgeo watches all this go way way way over his head
01:37:53 <oklofok> what
01:37:53 <oklofok> :D
01:37:56 <oklofok> :: (qs [4 5 1 2 3 6])
01:37:58 <otobot> [1 2 3 4 5 6]
01:38:08 <oklofok> doesn't work with duplicates? 8|
01:38:33 <oklofok> :: (= qs {(-> [] []) (-> (: h t) (+ (qs (ftr {(< _ h)} t)) (+ [h] (qs (ftr {(>= _ h)} t)))))})
01:38:37 <oklofok> :: (qs [4 5 1 2 3 6])
01:38:37 <otobot> <<<20328240>>>
01:38:40 <otobot> An error: Atm instance has no attribute 'call'
01:38:41 * Sgeo doesn't know either QuickSort or Oklotalk
01:38:45 <oklofok> xD
01:39:12 * Sgeo also needs a Python project to work on
01:39:21 <oklofok> Sgeo: oklotalk is a language of mine
01:39:29 <oklofok> and it is heresy not to know quicksort
01:39:29 <Sgeo> oklofok, I knew that
01:39:42 <Sgeo> (I meant, that oklotalk's yours)
01:40:04 <Sgeo> What's wrong with not knowing quicksort?
01:40:22 <oklofok> that i've known it so long i can't accept others not knowing it, mostly
01:41:05 <oklofok> it's like you would think someone is an idiot for not being able to solve 5x2 + 5x - 6 = 0, it's not something you often need, just known it forever, hard to understand some might not
01:41:44 <oklofok> (except that is actually taught to everyone, unlike quicksort)
01:42:39 <oklofok> i don't get it...
01:43:41 <oklofok> Sgeo: i do think you should learn the most popular algos if you want to be taken seriously at a programming channel
01:44:37 -!- adu has joined.
01:48:17 <Sgeo> back
01:48:40 <Sgeo> hi adu
01:49:01 <Sgeo> oklofok, meh, I guess
01:49:45 <Sgeo> Although do I really need to know e.g. quicksort in order to be able to program? I mean, it's already implemented by someone else.
01:50:30 <lament> he did say you should do it in order "to be taken seriously", not to be able to program
01:51:11 <Sgeo> brbafk
01:51:35 <oklofok> wtf filter *just worked*, how come it's broken now :D
01:52:49 <oklofok> okay, it works now... let's try ehird's list
01:57:29 <Sgeo> back
01:57:36 <Sgeo> ehird's list?
01:59:42 <oklofok> well ehird's cons cell
01:59:53 <oklofok> know what that is?
01:59:58 <Sgeo> no
02:00:30 <oklofok> a cons cell is a 2-tuple, whose first element is called car, and second cdr
02:00:42 <oklofok> and you usually use these functions to retrieve them
02:00:49 <Sgeo> I meant, what's ehird's cell?
02:01:07 <oklofok> (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
02:01:07 <oklofok> this?
02:01:11 <oklofok> this.
02:01:27 <Sgeo> Oh, ehird implemented a list in oklotalk?
02:01:56 <oklofok> yeah
02:02:06 <Sgeo> cool
02:02:08 <oklofok> although it doesn't fully work
02:02:12 <oklofok> oh
02:02:15 <oklofok> actually
02:02:17 <oklofok> it does
02:02:17 <oklofok> heh
02:02:23 <calamari> GregorR: you around?
02:02:56 <oklofok> oklotalk owns ass, i gotta say, when you look at how setcar and setcdr are done :D
02:03:26 -!- adu has quit (Remote closed the connection).
02:03:43 -!- adu has joined.
02:04:18 <adu> hi Sgeo
02:04:20 <adu> how are you
02:04:46 <Sgeo> ok. Looking at PSOX again, although no one else seems interested
02:04:47 <Sgeo> you?
02:05:37 <adu> whats PSOX?
02:05:44 <adu> i'm doing taxes
02:05:48 <adu> :P
02:06:05 <Sgeo> http://esolangs.org/wiki/PSOX
02:06:31 <Sgeo> It's a layer that goes between stdio and esolang interpreters for esolangs that can only do stdio
02:06:49 <calamari> anyone remember the url to Gregor's website?
02:06:59 <oklofok> hmm
02:07:01 <oklofok> codu.org
02:07:04 <calamari> thanks
02:07:20 -!- oklofok has changed nick to oklopol.
02:12:38 <adu> I've been thinking about something like that
02:13:37 <adu> like you know, most languages go on the top (compiled to lower language) or on the bottom (virtual machine, assembly, etc)
02:13:47 <adu> I wonder how many languages take the middle approach
02:17:27 <oklopol> :: reload
02:17:29 <otobot> reload
02:17:46 <oklopol> adu: what's the middle
02:18:07 <oklopol> anyway, damn ehird for going to sleep
02:18:07 <oklopol> i'll show the rest of you
02:18:08 <adu> :: something
02:18:12 <otobot> something
02:18:12 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
02:18:15 <otobot> <<<19870304>>>
02:18:34 <oklopol> the filter function, takes a func and a list, filters elements the func returns false for
02:18:46 <oklopol> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
02:18:49 <otobot> <<<19893304>>>
02:18:54 <oklopol> ehird's nil class
02:19:04 <oklopol> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
02:19:06 <otobot> <<<19883352>>>
02:19:12 <adu> :: (string-ref "Hello" 1)
02:19:14 <otobot> f
02:19:19 <oklopol> ehird's cons cell class
02:19:25 <oklopol> :: (= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (cons 0 nil)))))))
02:19:27 <otobot> <<<19861176>>>
02:19:35 <oklopol> list made by consing shit
02:19:40 <oklopol> adu: string-ref?
02:19:46 <oklopol> this isn't lisp
02:19:53 <adu> what is it?
02:19:59 <oklopol> :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})
02:20:01 <otobot> <<<19931984>>>
02:20:03 <oklopol> here, generic quicksort
02:20:09 <oklopol> and now the cool part
02:20:21 <oklopol> (qs list)
02:20:23 <oklopol> :: (qs list)
02:20:25 <otobot> [1 2 4 0 6 9]
02:20:33 <adu> thats not sorted
02:20:33 <calamari> I remember that Gregor had some scans of pages he wrote out while designing c2bf.. I wonder if they are still online someplace
02:20:33 <oklopol> ...
02:20:35 <oklopol> wtf :D
02:20:38 <oklopol> it like just worked.
02:20:57 <oklopol> lofl :<
02:21:03 <oklopol> i swear it worked a minute ago in my cli
02:21:54 <oklopol> hmm...
02:21:59 <oklopol> reload might not work properly.
02:21:59 <adu> maybe it thinks "0" is "5" for some reason
02:22:13 <oklopol> :: reload
02:22:15 <otobot> reload
02:23:19 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})(= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})(= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})(= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (cons
02:23:24 <otobot> An error: Application consists of 2 or 3 expressions.
02:23:28 <oklopol> :D
02:23:29 <adu> :: (= quicksort done)
02:23:35 <adu> :: (quicksort)
02:23:39 <otobot> done
02:23:41 <adu> :)
02:23:44 <otobot> An error: Application consists of 2 or 3 expressions.
02:23:48 <adu> mine is so much better
02:23:58 <oklopol> okay, let's see what happens if i reload the whole bot
02:24:02 <oklopol> adu: yes, but your call is wrong
02:24:08 <oklopol> (quicksort) doesn't make sense
02:24:17 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
02:24:37 -!- oktabot has joined.
02:25:41 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) (= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (co
02:25:43 <oklopol> does that come through? should end in (qs list)
02:25:43 <oktabot> An error: Application consists of 2 or 3 expressions.
02:25:56 <oklopol> prolly doesn't
02:26:15 <adu> :: (qs [1,2,3])
02:26:16 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
02:26:17 <oktabot> [1 ,2,3]
02:26:19 <oktabot> <<<19975264>>>
02:26:32 <adu> :: (qs [5,4,3,2,1])
02:26:34 <oktabot> [5 ,4,3,2,1]
02:26:35 <oklopol> :: (= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (cons 0 nil))))))) (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []}) (qs list)
02:26:37 <oktabot> [0 1 2 4 6 9]
02:26:46 <oklopol> yay
02:26:46 <oklopol> works now
02:27:01 <oklopol> wow
02:27:14 <oklopol> i'll make a list of rational numbers and sort it :D
02:27:20 <adu> :: (qs (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 nil))))))
02:27:22 <oktabot> [4 3 2 1 5]
02:27:27 <adu> no it doesn't
02:27:32 <oklopol> the gist being that the list type and the rational number class are both mde in oklotalk
02:27:35 <oklopol> :|
02:27:42 <oklopol> wtf.
02:28:00 <oklopol> hmph, i'll start fixing again then
02:28:21 <adu> are you sure you're implementing it properly?
02:28:30 <oklopol> :: (qs (cons 4 (cons 3 (cons 2 (cons 1 nil)))))
02:28:32 <oktabot> [3 2 1 4]
02:28:39 <oklopol> adu: i've tested it a lot
02:28:39 <oklopol> actually
02:28:54 <oklopol> :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})
02:28:56 <oktabot> <<<20152768>>>
02:29:03 <oklopol> :: (qs [4 3 2 1])
02:29:05 <oktabot> [2 1 3 4]
02:29:12 <oklopol> seriously
02:29:15 <oklopol> fuck.
02:29:21 <oklopol> :: (qs [3 2 1])
02:29:23 <oktabot> [1 2 3]
02:29:43 <oklopol> :: (= qs {(-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t))))) []})
02:29:45 <oktabot> <<<20033584>>>
02:29:52 <oklopol> :: (qs [4 3 2 1])
02:29:55 <adu> :: (qs (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 nil))))))
02:29:57 <oktabot> [1 2 3 4]
02:29:59 <oktabot> [(-> cdr t) (-> [setcar h] h) (-> [setcdr t] t) (-> [! 0] h) (-> [! n] (! t (- n 1))) (-> length (+ 1 (length t))) (-> car h) (-> cdr t) (-> [setcar h] h) (-> [setcdr t] t) (-> [! 0] h) (-> [! n] (! t
02:30:08 <oklopol> hmm okay.......
02:30:20 <oklopol> err
02:30:23 <oklopol> wtf xD
02:30:26 <adu> :: (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 nil)))))
02:30:27 <oklopol> oh, right.
02:30:30 <oktabot> <<<20022016>>>
02:30:44 <adu> :: [1 2 3 4 5]
02:30:46 <oktabot> [1 2 3 4 5]
02:30:53 <adu> :: [1, 2, 3, 4, 5]
02:30:55 <oktabot> [1 , 2 , 3 , 4 , 5]
02:31:06 <adu> :: (1 2 3 4 5)
02:31:07 <oklopol> adu: i changed the implementation, doesn't work for other than primitive lists now.
02:31:09 <oktabot> An error: Application consists of 2 or 3 expressions.
02:31:16 <oklopol> it seems the problem is my filter function
02:31:25 <oklopol> and application takes 2 or 3 expressions
02:31:27 <oklopol> not 5
02:31:36 <adu> ok
02:31:46 <oklopol> :: (2 + 4)
02:31:47 <adu> I don't know anything about your lang
02:31:48 <oklopol> :: (+ 2 4)
02:31:48 <oktabot> 6
02:31:52 <oktabot> 6
02:32:15 <adu> whats the diff between [1 2 3] and [1, 2, 3] ?
02:32:25 <oklopol> well do like ehird and just start coding in it... :D
02:32:31 <adu> lol
02:32:43 <oklopol> god i hate that dood sometimes
02:32:44 <adu> I have 3 languages like that
02:32:51 <oklopol> (read: "envy")
02:32:52 <adu> who is ehird?
02:33:00 <oklopol> adu: , is an atom
02:33:07 <oklopol> ehird is a guy who lives here
02:33:23 <adu> oklopol: so what does (,) do?
02:33:41 <oklopol> (,)? that's not a proper application
02:33:46 <oklopol> , is an atom
02:33:48 <oklopol> :: ,
02:33:53 <adu> ok so what does it do?
02:33:54 <oktabot> ,
02:34:02 <oklopol> that
02:34:04 <oklopol> it's an atom
02:34:08 <oklopol> it doesn't do anything
02:34:11 <adu> ok, so what is an atom?
02:34:22 <adu> like a symbol?
02:34:26 <oklopol> a retarded string, somewhat
02:34:29 <oklopol> yes, symbol.
02:34:33 <adu> ah ok
02:34:37 <oklopol> other name for it
02:34:38 <adu> I like symbols
02:34:42 <oklopol> *another
02:34:47 <oklopol> me too
02:34:55 <adu> can I help with your language?
02:35:14 <oklopol> well you can help me by telling what didn't work, i forgot.
02:35:18 <oklopol> help in what sense? :D
02:35:23 <adu> I know hundreds of programming languages
02:35:34 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
02:35:39 <oklopol> you do? awesome :D
02:35:45 <oktabot> <<<20326240>>>
02:36:00 <oklopol> in that case i should be able to explain this to you in an instant
02:36:12 <oklopol> :: (+ 4 5)
02:36:14 <oktabot> 9
02:36:21 <adu> I can guess that -> is lambda
02:36:28 <oklopol> nope
02:36:33 <oklopol> it's pattern matching
02:36:36 <adu> oh
02:36:36 <oklopol> {} is a lambda
02:36:43 <adu> ok
02:36:45 <oklopol> (-> ptrn expr expr expr...)
02:37:03 <adu> so I'm guessing [] is empty list
02:37:06 <oklopol> it kinda checks the pattern, and if it matches, it continues the evaluating to the expr's
02:37:11 <oklopol> yeah
02:37:15 <oklopol> [elem elem elem ...]
02:37:19 <adu> so what is '
02:37:26 <oklopol> recursion
02:37:49 <adu> what is :
02:37:54 <adu> cons?
02:37:58 <oklopol> well
02:37:59 <oklopol> it's in a pattern there
02:38:03 <oklopol> yeah
02:38:05 <oklopol> basically
02:38:12 <adu> what is @?
02:38:25 <oklopol> (@ a b) matches on both a and b
02:38:33 <oklopol> the object that is matched
02:38:43 <oklopol> (first on b, then on a, actually)
02:39:07 <oklopol> :: (flr {(> _ 3)} [1 2 32 454 5])
02:39:09 <oktabot> [32 454 5]
02:39:29 <oklopol> :: (flr {(> _ 3)} (cons 1 (cons 4 nil)))
02:39:31 <oktabot> [4]
02:39:47 <oklopol> :: (flr {(> _ 3)} (cons 4 (cons 1 (cons 4 nil))))
02:39:50 <oktabot> [4 4]
02:40:04 <oklopol> :: (flr {(<= _ 3)} (cons 4 (cons 1 (cons 4 nil))))
02:40:07 <oktabot> [1]
02:40:19 <oklopol> wtf. there needs to be something wrong with it
02:40:48 <adu> :: (= fac {(-> 0 1) (-> n (* n (' fac (- n 1)))) []})
02:40:51 <oktabot> <<<20380808>>>
02:40:52 <oklopol> err
02:40:55 <adu> :: (fac 2)
02:40:58 <oktabot> An error: maximum recursion depth exceeded
02:40:58 <oklopol> okay, my cli runs it...
02:41:04 <oklopol> :: relad
02:41:06 <oktabot> relad
02:41:15 <oklopol> errr
02:41:20 <oklopol> :: reload
02:41:22 <oktabot> reload
02:41:23 <oklopol> adu: you have an error
02:41:29 <oklopol> not my fault there
02:41:35 <adu> :: (= fac {(-> [f 0] 1) (-> [f n] (* n (' f (- n 1)))) []})
02:41:37 <oktabot> <<<27395616>>>
02:41:39 <adu> :: (fac 2)
02:41:41 <oktabot> []
02:41:46 <oklopol> :)
02:41:48 <oklopol> almost
02:41:59 <oklopol> what's f?
02:42:06 <adu> I have no idea
02:42:19 <oklopol> the first one was correct, apart from a small... defect
02:42:33 <oklopol> also the [] isn't needed
02:42:33 <adu> whats that?
02:42:42 <adu> oh ok, but you had it in yours
02:42:45 <oklopol> it's would be returned if neither pattern matched
02:42:57 <adu> whats the defect?
02:43:00 <oklopol> yes, that's for returning [] for the standard case
02:43:05 <oklopol> i mean
02:43:07 <oklopol> well
02:43:15 <oklopol> recursion
02:43:45 <oklopol> you can just recurse by (fac ...)
02:43:45 <oklopol> ' is a shorthand
02:43:46 <adu> :: (= fac {(-> 0 1) (-> n (* n (' f (- n 1))))})
02:43:47 <oklopol> + making it easier for lambdas to recurse
02:43:48 <adu> :: (fac 0)
02:43:49 <oktabot> <<<27815888>>>
02:43:51 <oktabot> 1
02:43:57 <adu> :: (fac 2)
02:43:59 <oktabot> An error: maximum recursion depth exceeded
02:44:05 <oklopol> wut
02:44:11 <oklopol> ah
02:44:20 <oklopol> getting closer
02:44:27 <adu> should "f" be "fac"?
02:44:27 <oklopol> just do what you did, again, and it should work
02:44:37 <oklopol> nope.
02:44:43 <adu> :: (= fac {(-> 0 1) (-> n (* n (' f (- n 1))))})
02:44:45 <oktabot> <<<20154248>>>
02:44:45 <adu> :: (fac 2)
02:44:47 <oklopol> you are making the call (fac f (- n 1)) there
02:44:48 <oktabot> An error: maximum recursion depth exceeded
02:44:55 <oklopol> why exactly?
02:44:55 <oklopol> :D
02:45:07 <oklopol> (fac ..) or (' ...) for recursion
02:45:09 <adu> i dunno, cuz you did it like that
02:45:11 <oklopol> not both
02:45:15 <adu> ooooooooooo
02:45:15 <adu> ok
02:45:22 <oklopol> f was the function to filter with, man :)
02:45:24 <adu> :: (= fac {(-> 0 1) (-> n (* n (' (- n 1))))})
02:45:26 <oktabot> <<<28207504>>>
02:45:27 <adu> :: (fac 2)
02:45:28 <oktabot> 2
02:45:30 <adu> YEY
02:45:35 <oklopol> hehe
02:45:41 <adu> I made a program in oklkang
02:45:52 <oklopol> oklotalk
02:45:59 <adu> oklotalk
02:46:01 <adu> right
02:46:04 <adu> sorry
02:46:06 <oklopol> yarr
02:46:22 <oklopol> :: reload
02:46:28 <oktabot> reload
02:46:35 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
02:46:37 <oktabot> <<<28325208>>>
02:46:41 <oklopol> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
02:46:43 <oktabot> <<<28364472>>>
02:46:49 <oklopol> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
02:46:51 <oktabot> <<<28801064>>>
02:47:00 <oklopol> :: (= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil)))))))
02:47:02 <oktabot> <<<27836824>>>
02:47:10 <oklopol> :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})
02:47:12 <oktabot> <<<28207344>>>
02:47:18 <oklopol> :: (qs list)
02:47:20 <oktabot> [4 3 2 1 0 5]
02:47:24 <oklopol> ...
02:47:27 <oklopol> wtf is going on
02:47:33 <oklopol> i'll reboot the bot again..
02:47:39 -!- oktabot has quit (Read error: 104 (Connection reset by peer)).
02:48:02 -!- oktabot has joined.
02:48:07 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
02:48:09 <oktabot> <<<19345080>>>
02:48:11 <oklopol> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
02:48:13 <oktabot> <<<19394512>>>
02:48:17 <oklopol> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
02:48:19 <oktabot> <<<19419384>>>
02:48:26 <oklopol> :: (= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil)))))))
02:48:28 <oktabot> <<<19445520>>>
02:48:31 <oklopol> :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})
02:48:33 <oktabot> <<<19410656>>>
02:48:37 <adu> :: (= talk {(-> ["hi" x] "Why hello!") (-> ["bye" x] "Good bye!") []})
02:48:37 <oklopol> :: (qs list)
02:48:39 <oktabot> <<<19446680>>>
02:48:41 <oktabot> [4 3 2 1 0 5]
02:48:45 <adu> :: (talk ["hi" "Mr. roboto"])
02:48:47 <oklopol> xD
02:48:47 <oktabot> Why hello!
02:48:52 <adu> :: (talk ["hi" "Mr. roboto"])
02:48:54 <oktabot> Why hello!
02:48:59 <adu> :: (talk ["bye" "Mr. roboto"])
02:49:02 <oktabot> Good bye!
02:49:08 <adu> :)
02:49:10 <oklopol> :D
02:49:42 <oklopol> but hey
02:49:48 <adu> ya?
02:49:51 <oklopol> how come that only works on my comp :D
02:49:55 <oklopol> i mean
02:49:55 <oklopol> that quicksort
02:50:01 <adu> i don't know
02:50:03 <oklopol> i just copypaste the code :D
02:51:19 <oklopol> :: flr
02:51:48 <adu> what does flr do?
02:52:00 <oklopol> filter
02:52:11 <oklopol> :: (flr {(< _ 3)} [1 2 3 4 5])
02:52:39 -!- oktabot has quit (Read error: 104 (Connection reset by peer)).
02:52:52 <oklopol> something is very wrong...
02:53:17 -!- oktabot has joined.
02:53:28 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
02:53:30 <oktabot>
02:53:40 <oklopol> ...
02:53:43 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
02:53:46 <oktabot> <<<19476032>>>
02:54:09 <oklopol> :: (flr {(< _ 3)} [1 2 3 4 5])
02:54:11 <oktabot> [1 2]
02:54:21 <oklopol> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
02:54:24 <oktabot>
02:54:26 <oklopol> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
02:54:28 <oktabot> <<<19588240>>>
02:54:35 <oklopol> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
02:54:37 <oktabot> <<<19603008>>>
02:54:53 <adu> what does + do?
02:55:05 <oklopol> :: (= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil)))))))
02:55:12 <oktabot> <<<19671160>>>
02:55:14 <oklopol> + is an atom
02:55:25 <oklopol> it doesn't have functionality
02:55:25 <oklopol> but
02:55:27 <oklopol> (+ 1 2) sends the object 1 the message [$+ 2]
02:55:33 <oklopol> as does (1 + 2)
02:55:41 <oklopol> because 1 *can* be called
02:55:41 <adu> ok
02:56:03 <oklopol> :: (flr {(<= 3 _)} list)
02:56:06 <oktabot> An error: Atm instance has no attribute 'call'
02:56:10 <oklopol> :D
02:56:15 <oklopol> okay, this is a bit spooky
02:59:12 <adu> :: (-> 1 2)
02:59:18 <oktabot> f
02:59:37 <adu> ya thats spooky
02:59:47 <adu> where did the f come from?
03:00:26 <adu> :: ({(-> 1 2) 0} 1)
03:00:28 <oktabot> 2
03:00:35 <adu> :: ({(-> 1 2) 0} 2)
03:00:37 <oktabot> 0
03:01:36 <adu> what does "tst" do?
03:03:29 <adu> :: (= filter {(-> [f (: (@ h (tst f)) t)] (: h (filter f t))) (-> [f (: h t)] (filter f t)) []})
03:03:31 <oktabot> <<<19575112>>>
03:04:14 <adu> :: (= qsort {(-> (: h t) (+ (qsort (filter {(< _ h)} t)) (+ [h] (qsort p(filter {(>= _ h)} t))))) []})
03:04:16 <oktabot> An error: Unmatching parens @ row 1.
03:04:33 <adu> (= qsort {(-> (: h t) (+ (qsort (filter {(< _ h)} t)) (+ [h] (qsort (filter {(>= _ h)} t))))) []})
03:04:38 <adu> :: (= qsort {(-> (: h t) (+ (qsort (filter {(< _ h)} t)) (+ [h] (qsort (filter {(>= _ h)} t))))) []})
03:04:40 <oktabot> <<<19728784>>>
03:04:48 <adu> :: (qsort [1 2 3 4])
03:04:51 <oktabot> +
03:04:58 <adu> lol
03:08:58 <oklopol> umm... it seems nothing works now.
03:09:09 <oklopol> which is kinda weird, because i haven't really changed anything.
03:09:19 <oklopol> adu: f is false.
03:09:49 <oklopol> adu: it should test whatever is matched with given function, and fail if it returns $f
03:10:16 <oklopol> but... nothing works now, so wtf.
03:12:19 <oklopol> ah.
03:12:25 <oklopol> i think i see what's going on...
03:12:46 <oklopol> i'll fix it by removing a feature no one knows even exists.
03:13:27 <oklopol> okay
03:13:33 <oklopol> let's try once more...
03:13:59 <oklopol> :: (= flr {(-> [p (: (@ h (tst p)) t)] (outn "a") (+ [h] (' p t))) (-> [p (: h t)] (outn "b") (' p t)) (outn "c") []})(flr {(< 3 _)} [1 2 3 4 5 ])(= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
03:14:08 <oktabot> An error: Atm instance has no attribute 'call'
03:14:14 <oklopol> err...
03:14:17 <oklopol> asd.
03:14:51 <oklopol> :: reload
03:14:51 <oklopol> ?
03:14:53 <oktabot> reload
03:15:14 <oklopol> :: (= flr {(-> [p (: (@ h (tst p)) t)] (outn "a") (+ [h] (' p t))) (-> [p (: h t)] (outn "b") (' p t)) (outn "c") []})(flr {(< 3 _)} [1 2 3 4 5 ])(= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
03:15:17 <oktabot> <<<19943992>>>
03:15:27 <oklopol> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})(= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil)))))))(= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})(qs list)
03:15:30 <oktabot> [0 1 2 3 4 5]
03:15:37 <oklopol> finally
03:16:12 <oklopol> :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})(= list [6 5 4 3 2 1 0])(= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})(qs list)
03:16:16 <oktabot> [0 1 2 3 4 5 6]
03:16:25 <oklopol> same thing, but primitive list
03:16:58 <oklopol> interface-based stuff is quite impressive when your own language supports it <3
03:17:31 <oklopol> okay, i can finally leave
03:17:33 <oklopol> :D
03:17:52 <oklopol> i'll leave the bot on, so if you wanna play, do so
03:21:09 <oklopol> adu: if you wanna read a larger example, http://www.vjn.fi/pb/p551616525.txt
03:21:14 <oklopol> the rational number class
03:21:20 <oklopol> anyway
03:21:20 <oklopol> sleep ->
03:31:21 <Sgeo> I guess I can't learn oklotalk now
03:31:33 <adu> what is \
03:56:51 -!- adu has quit ("Bye").
05:03:03 -!- captluo has joined.
05:03:06 <captluo> Brainfuck!
05:10:11 -!- Sgeo has quit (Remote closed the connection).
05:11:05 -!- oktabot has quit (Read error: 104 (Connection reset by peer)).
05:11:20 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
05:42:11 -!- Visitor-3CB98 has joined.
05:46:51 -!- oklopol has joined.
05:50:51 -!- GreaseMonkey has joined.
06:27:39 -!- RodgerTheGreat has quit.
06:55:14 -!- oklopol has quit (Connection timed out).
07:19:06 -!- calamari has quit ("Leaving").
07:35:09 -!- oklopol has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:36:44 -!- iebnn has joined.
08:36:48 -!- captluo has quit (Read error: 104 (Connection reset by peer)).
08:48:26 -!- Iskr has joined.
09:40:05 -!- oklofok has joined.
09:44:24 -!- oklopol has quit (Read error: 113 (No route to host)).
09:52:34 -!- GreaseMonkey has quit ("zzzzz").
10:16:19 -!- ehird has joined.
10:45:41 <ehird> soooooo
11:55:23 <Visitor-3CB98> Like, dude.
11:55:28 -!- Visitor-3CB98 has changed nick to Slereah.
12:10:04 -!- Corun has joined.
12:31:40 <ehird> OMG
12:31:42 <ehird> stupidfilter alpha is out
12:43:40 -!- Corun has quit ("This computer has gone to sleep").
13:42:49 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
13:43:07 -!- Judofyr has joined.
13:59:45 -!- Sgeo has joined.
13:59:47 -!- jix has joined.
14:07:05 <Slereah> I think I found a way to resolve my inner-recursion woes.
14:08:22 <Slereah> I will use the awesome U~ combinator, that I just made up.
14:08:33 <Slereah> It is called "Seor Turingos Combinator"
14:10:07 <Slereah> Of the form ^x^y [A function of y that converts to i that performs possible outputs] ((([Some conditional, function of y](xx))i)[Some function of y])
14:16:56 -!- Sgeo has quit ("Ex-Chat").
14:26:18 <ehird> \
14:26:19 <ehird> \
14:28:54 <Slereah> Of the form ^x^y [A function of y that converts to i that performs possible outputs] ((([Some conditional, function of y](xx))i)[Some function of y])
14:28:59 <Slereah> Damn
14:29:15 <Slereah> /
14:29:18 <Slereah> Thar
14:51:28 -!- timotiis has joined.
15:25:32 -!- timotiis has quit (Read error: 110 (Connection timed out)).
15:30:52 -!- timotiis has joined.
15:49:30 <ehird> hmm
15:49:39 <ehird> would building an Analytical Engine practical?
15:49:43 <ehird> ^be
16:06:19 -!- timotiis has quit (Read error: 110 (Connection timed out)).
16:06:47 -!- UnrelatedToQaz has joined.
16:09:39 <UnrelatedToQaz> hello all
16:15:05 <ehird> hi
16:20:56 <UnrelatedToQaz> do you like jonathan coulton?
16:33:07 -!- UnrelatedToQaz has quit ("ChatZilla 0.9.81 [Firefox 3.0b5/2008032620]").
16:41:18 -!- RodgerTheGreat has joined.
16:51:26 -!- jix has quit ("CommandQ").
16:51:53 -!- jix has joined.
17:13:31 -!- timotiis has joined.
17:24:52 -!- Sgeo[College] has joined.
17:25:34 <ehird> oklofok: hello
17:25:50 <Sgeo[College]> Hi all
17:38:58 <ehird> hello
17:44:21 -!- olsner has joined.
17:45:48 -!- timotiis has quit (Read error: 110 (Connection timed out)).
18:05:10 <ehird> EVERYONE IS DEAAAD
18:08:22 <olsner> ehird: no, it is you who is dead
18:11:27 <ehird> olsner: no
18:18:34 <iebnn> Brainfuck
18:19:53 * Sgeo[College] is not dead
18:20:02 <iebnn> My brain is fucked
18:20:15 -!- timotiis has joined.
18:21:38 <ehird> iebnn: hello, are you new here?
18:21:49 <ehird> don't recognize your nick
18:22:40 <Sgeo[College]> Be back soonish
18:22:53 <iebnn> yes, im new
18:22:54 <iebnn> why?
18:23:18 <ehird> iebnn: welcome!
18:23:23 <ehird> now, escape while you can
18:24:07 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
18:26:58 -!- Sgeo[College] has joined.
18:27:19 <Sgeo[College]> Back
18:28:47 -!- sekhmet has quit ("it's a reboot!1!").
18:30:24 <Sgeo[College]> Bye all
18:32:08 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
18:44:21 -!- captluo has joined.
18:45:13 -!- iebnn has quit (Read error: 104 (Connection reset by peer)).
18:46:52 -!- timotiis has quit (Read error: 110 (Connection timed out)).
18:49:23 -!- sekhmet has joined.
18:50:12 -!- timotiis has joined.
18:51:39 -!- jix has quit (Nick collision from services.).
18:51:49 -!- jix has joined.
18:52:43 <ehird> oklofok: A
19:03:45 -!- captluo has quit.
20:31:22 -!- Iskr has quit ("Leaving").
20:37:32 -!- ais523 has joined.
20:38:16 <ehird> hello, ais523
20:38:26 <ais523> hi ehird
20:41:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
20:41:56 -!- Judofyr has joined.
20:55:25 -!- Tritonio__ has quit (Remote closed the connection).
20:59:12 * ais523 is trying to write an IRC client in INTERCAL
20:59:20 <ais523> but I think there's a bug in CLC-INTERCAL's network connection code
20:59:38 <ehird> ais523: ouch :)
20:59:42 <ehird> oklofok: okoping
20:59:47 <ais523> I can send information to the IRC server, but I can't get any information back
21:00:08 <ais523> neither on freenode, or the local not-externally-accessible IRC server I use for testing
21:00:16 <ais523> s/or/nor/
21:01:02 -!- Tritonio_ has joined.
21:01:43 <ais523> the strange thing is that the same code can get information back fine from an HTTP server
21:02:16 <ehird> ais523: IRC's special chars, maybe?
21:02:19 <ehird> Beats me.
21:02:31 <ais523> actually, it may be a problem with my code
21:03:03 <ais523> I just aimed the HTTP GET code at irc.freenode.net:6667, and got typical error messages back
21:04:08 <ais523> incidentally, how's this for a filename: ickirc-c.rstclci.in
21:07:42 <ehird> ais523: rstclci ... what is THAT
21:08:01 <ais523> ehird: CLC-INTERCAL source with syscall, INTERNET, and threads extensions enabled
21:08:23 <ais523> (n.b. INTERNET != Internet; it's the name for CLC-INTERCAL's INTERCAL NETworking extension)
21:09:04 <ehird> Speaking of IRC, I am currently writing a semantic IRC framework.
21:09:21 <ehird> Which basically boils down to it understanding the semantics of the protocol innately, instead of dumbly parsing & deparsing text.
21:09:33 <ehird> e.g. 'join' messages can have callbacks, because it tracks queues of requests
21:10:07 <ais523> ah, because most of the numerics are responses to something or other?
21:10:14 <ehird> ais523: Yes
21:10:20 <ais523> and likewise ERROR is a response to QUIT as well as being a standalone message
21:10:26 <ehird> Exactly
21:10:41 <ehird> Also, each type of message has its own class
21:10:47 <ehird> PRIVMSG, PING, etc.
21:11:07 <ehird> And a PRIVMSG #esoteric :foo has 'channel' and 'text' attributes, instead of relying on dumb indexing
21:11:13 <ehird> Indeed it will even do WHOISes
21:11:18 <ehird> and give you a simple object back
21:11:23 <ehird> whereas the actual whois output is obscene
21:12:09 <ehird> Also, instead of 'bot = server connection'
21:12:18 <ehird> or even 'bot = one channel' like some things assume
21:12:23 <ehird> it knows that a bot is spread across multiple networks
21:12:27 <ehird> and a network has servers
21:13:04 <ais523> the design of IRC is quite clever. Normally, you don't need to know that a network has servers unless you're a severl operator
21:13:14 <ais523> because all the messages handle them more or less transparently
21:13:21 <ehird> ais523: I mean load-balanced servers
21:13:25 <ehird> like kubirck.freenode.net etc
21:13:29 <ais523> ehird: so did I
21:13:35 <ehird> ais523: All IRC clients have a concept of 'Networks' if you look in them
21:13:41 <ehird> 'cause they're a useful concept :-)
21:13:46 <ais523> ehird: yes, definitely
21:13:52 <ais523> knowing that a network has servers is less important
21:14:08 <ais523> the main difference it makes to the end-user is whether you get an idle-time notification in a WHOIS
21:14:54 <ehird> ais523: $CLIENT will also have servers in networks if you look closely
21:15:07 <ais523> incidentally, ais523_ is still online, despite not responding to pings
21:15:25 <ais523> it goes into an infinite loop rather than reading back from the IRC server
21:15:42 <ais523> but if I give it an alphanumeric buffer that's too small, it errors, so /something/ strange is going on
21:17:25 -!- olsner has quit ("Leaving").
21:17:31 <ehird> i have always disliked the look of /italics/
21:17:41 <ehird> and i never use underlines, so i use _italics_
21:17:44 <ehird> /random, i know
21:18:29 <ais523> in a man page, the .I directive writes an underline
21:18:49 <ais523> and so presumably in nroff too, when formatting for display on a terminal
21:19:02 <ehird> ais523: underlines are totally useless though
21:19:12 <ehird> italics & bold cover everything i need to express
21:19:17 <ais523> ehird: what about links?
21:19:35 <ehird> ais523: i don't manually underline links
21:19:42 <ais523> the reason that underlines fell out of favour was that nowadays people have become used to recognising them to indicate links
21:19:44 <ehird> in my actual text, i have no need for underlines
21:19:52 <ehird> even if links didn't exist
21:21:18 <ais523> I was always taught to use them to indicate the final outcome of a mathematical problem or other such lengthy situations
21:21:31 <ais523> e.g. if an exam question asked me what 2 + 2 was, I was supposed to answer _4_
21:22:52 <ais523> not sure of the merits of the idea except to save time for examiners, though
21:23:10 <ais523> but I suppose underlines have deteriorated since the days of ALGOL 68 and typewriters
21:23:23 -!- RedDak has joined.
21:26:01 <ehird> I prefer '4, F*CK YEAH'
21:26:07 <ehird> Or some other notable exclamation
21:26:40 <ais523> don't blame me if you get strange comments in your exam feedback, then
21:26:45 -!- RedDak has quit (Client Quit).
21:27:06 -!- RedDak has joined.
21:30:19 <ehird> oklofok: ping
21:30:23 <ehird> ais523: :D
21:30:34 <ehird> '2 + 2 = THE ONE THE ONLY 4'
21:30:43 <ehird> '2+ 2 = EFF OH YOU ARE'
21:30:49 <ehird> '2+ 2 = FOOOOOURRRRRRRRRR'
21:32:08 <lament> 2 + 2 = 1 + 3 = 0 + 4 = -1 + 5 = -2 + 6 = ... = -inf + inf = undefined
21:32:35 <ais523> lament: but NaN = 4 in this case
21:32:56 <ais523> the only reason that computers say that NaN is not equal to everything is that they can't be expected to figure out what value it actually has in that case
21:33:37 <ehird> ais523: NaN != NaN in a lot of languages
21:33:42 <ehird> because there are multiple NaNs
21:33:46 <ehird> and NaN always creates a new one
21:33:50 <ehird> JavaScript behaves like this
21:33:55 <ais523> ehird: NaN != NaN in C even if it's the same NaN
21:34:06 <ais523> and there are multiple NaNs, but they compare not equal even if they have the same payload
21:34:14 <ehird> ais523: C has NaN?
21:34:14 <ehird> Wow.
21:34:38 <ais523> ehird: you need C99 to be able to express it portably, though, and even then it's optional, I think
21:34:48 <ais523> but the rules for it are defined if it does exist
21:38:42 <ais523> 0./0. is not guaranteed to be NaN, for instance; it might be a SIGFPE instead (or presumably another implementation-defined signal)
21:47:33 <ehird> ais523: I am tempted to implement your s/// correction thing
21:47:36 <ehird> ais523: for IRC
21:47:42 <ehird> ais523: also star-correction
21:47:48 <ehird> uses leventhsethisen distance or whatever
21:47:51 <ehird> to determine which to change
21:47:57 <ais523> *Levenstein
21:48:03 <ehird> levenshtein actually
21:48:04 <ehird> ha
21:48:40 <ais523> ehird: I doubt it could handle that, two lines up and in someone else's comment, it would need to know the context of the conversation to even think of looking there
21:48:47 <ais523> and looking there as a matter of course would be stupid
21:49:36 <ehird> ais523: no, it would just scan the N latest messages
21:49:38 <ehird> and choose the one most likely
21:49:46 <ais523> even other people's?
21:50:01 <ais523> I've been known to correct my own most recent message after tens of minutes, with lots of intervening comments
21:50:19 <ais523> but it's pretty silly, not to mention a security risk, to correct other people's
21:53:02 -!- RedDak has quit (Read error: 110 (Connection timed out)).
21:53:15 -!- Dagide has joined.
21:53:29 <ehird> ais523: only correct as in 'repeat'
21:53:40 <ais523> I know
21:53:50 <ais523> so that avoids the security risk, at least
21:54:00 <ais523> you could have a bot doing that sort of correction, I suppose
21:54:12 <ais523> what about the times when I typo one of my own corrections and correct that?
21:54:27 <ais523> I often do s/a/b followed by s/$/\// when I realised I missed off the final slash by mistake
21:55:17 <ehird> ais523: it'd retry any stuff it corrects for correction
21:55:19 <ehird> if you see what i mean
21:55:26 <ais523> yes
21:55:33 <ehird> ais523: incidentally, do you know about #xkcd-signals' ROBOT9000?
21:55:41 <ais523> the solution is not too hard to see, I was just making sure you knew the problem
21:55:43 <ais523> ehird: no
21:55:59 <ehird> ais523: Basically, if you say something that has already been said before -- ever -- it mutes you.
21:56:07 <ehird> The mutes get progressively greater the more you do it but gradually decrease.
21:56:22 <ehird> So, memes get killed off extremely quickly and only original thought is left.
21:56:26 <ehird> It's an interesting idea.
21:56:33 <ais523> what do you mean by a mute, here? it devoices you, and it's a moderated channel?
21:56:51 <ehird> ais523: I think the main implementation +b's you and then -b's you after the timeout
21:57:03 <ehird> But, same thing in this case
21:57:25 <ehird> ais523: Full scoop: http://blag.xkcd.com/2008/01/14/robot9000-and-xkcd-signal-attacking-noise-in-chat/
21:57:25 <ehird> But
21:57:26 <ehird> http://media.peeron.com/tmp/ROBOT9000.html
21:57:26 <ais523> it would be more interesting to see it done with voicing
21:57:28 <ehird> there's the source
21:57:30 <ehird> in Perl
21:57:35 <ehird> so you should have no problem figuring it out
21:57:47 <ais523> so that the little V signs, or whatever the client uses, turn on and off as people accidentally repeat
21:57:58 <ais523> but you'd have to be really careful not to say things like 'yes' or 'no'
21:58:09 <ehird> ais523: Well, the idea is that you justify more than 'yes' or 'no'
21:58:14 <ehird> You go 'Yes, the system is configured so that blah.'
21:58:25 <ais523> or maybe just get your client to a ppend a sequence number to the end of everything you said [1]
21:58:27 <ehird> Not perfect for all cases surely. But interesting
21:58:35 <ehird> ais523: as for that idea,
21:58:39 <ehird> it'll just get you banned
21:58:49 <ehird> Just like all bad faith is dealt with in IRC channels
21:59:00 <ais523> hmm... maybe you could do it with whitespace so people didn't notice
21:59:18 <ais523> but it's probably not fair to try to work around that sort of restriction
21:59:25 <ehird> ais523: They would notice when you say the same thing twice
21:59:34 <ais523> depends on what that thing was
21:59:35 <ehird> But anyway
21:59:40 <ehird> My idea
21:59:47 <ehird> is a blend of Utu (you may have heard of it) and that
22:00:08 <ehird> If enough people 'hate' you (that's an actual command), it mutes you
22:00:10 <ais523> wow, that code you linked doesn't look like Perl at all, someone's tried to write it like C
22:00:11 <ehird> That's the *basic* idea
22:00:18 <ais523> it's uncomfortable seeing Perl that readable
22:00:19 <ehird> http://savingtheinternetwithhate.com/design.html
22:00:25 <ehird> But basically, doing the above but with an irc bot.
22:00:39 <ehird> ais523: Network::IRC and all that are object-oriented, clean, callback-based frameworks.
22:00:41 <ehird> Unsuprising
22:01:18 <ehird> Most 'modern' perl looks like that
22:01:21 <ehird> in my experience
22:02:05 <ais523> that isn't modern perl
22:02:16 <ais523> they call procedures using the & sigil, and that's been deprecated for ages
22:02:36 <ais523> so whoever wrote that is used to old-fashioned Perl
22:07:29 <lament> wow, robot9000 rules
22:07:48 <lament> very clever
22:08:11 <ais523> ah, they thought of the trailing-whitespace thing
22:08:30 <ehird> lament: put it in #esoteric! as an experiment? ;)
22:08:36 <ehird> xkcd fed two years of logs into it
22:08:43 <ehird> but the logs we have take back to 2004
22:08:44 <ais523> they also remove punctuation and all repeated characters
22:08:48 <ehird> that's gotta be interesting, no?
22:08:55 <ais523> they should probably do Porter stemming as well, just for the fun of it
22:08:57 <ehird> or i can do it if allowed ;)
22:08:58 <lament> we don't have any such issues, though
22:09:04 <ehird> lament: yes, but it would be interesting
22:09:15 <ais523> it might be interesting to set up a bot to report when a user would be banned, rather than actually doing it
22:09:26 <ais523> so we could see what the false-positive rate would be like
22:09:27 <lament> that just leads to more noise though
22:09:30 <lament> but yeah
22:09:34 <ehird> lament: this is just as a temp experiment
22:09:36 <ehird> but yeah, i'll get on it
22:09:36 <ehird> heh
22:09:41 <lament> ehird: can you just run it on the logs to see which lines would it match?
22:09:43 <ehird> ais523: seen StupidFilter?
22:09:48 <ehird> lament: no, it works there-and-then
22:09:51 <ehird> http://stupidfilter.org
22:09:53 <ais523> maybe report in a second channel, so that people didn't have to look at it if they didn't want to
22:09:56 <ehird> they released an alpha recently
22:09:59 <ehird> but its very slooooww
22:10:00 <ais523> ehird: I hadn't seen it
22:10:06 <lament> ehird: i'm sure it's easy to hack to work in batch mode
22:10:35 <lament> and if all it does is line matching after trimming whitespace, you don't need the bot
22:10:48 <lament> just write a program to check that
22:10:56 <ais523> lament: you don't even need to write a program
22:11:03 <ais523> some combination of sort and uniq would work
22:11:07 <lament> right
22:11:11 <ais523> but it also filters out nicks, smilies, punctuation, etc
22:11:22 <lament> so
22:11:34 <lament> throw out everything except alphabetic chars
22:11:40 <ais523> also case and control characters
22:11:43 <lament> throw out spaces even
22:11:50 <lament> they can't contribute to false positives much
22:11:51 <ais523> lament: no, do Porter stemming first
22:12:00 <lament> oh, right
22:12:07 <ais523> so that you can't just add -ing on the end of a word to create a different line
22:12:14 -!- ehird has changed nick to ROBOT9000.
22:12:17 -!- ROBOT9000 has changed nick to ROBOT9001.
22:12:17 <ais523> Robot9000 doesn't do that, by the way
22:12:39 <lament> anyway, it seems in half an hour you could get some good estimates
22:12:50 -!- ROBOT9001 has changed nick to ehird.
22:13:05 <ehird> # if the channel is quiet for too long (longer than fortune_time, in seconds),
22:13:05 <ehird> # print the output of the fortune_command. Remove to disable this feature.
22:13:07 <ehird> that's brilliant
22:13:20 <ehird> aha
22:13:22 <ehird> ais523: it IS based on voice
22:13:32 <ehird> so that unfortunately means it needs ops
22:13:33 <ehird> what a shame
22:13:35 <ehird> wait
22:13:36 <ehird> it would for +b
22:13:53 <ais523> it's based on both voice and ban as far as I can tell
22:14:08 <ais523> at least, the code is capable of doing both of those
22:14:41 <ais523> anyway, I was going to suggest running it as a simulation rather than actually banning
22:15:01 <ehird> ais523: yeah, i will
22:15:03 <ehird> just setting it up first
22:15:04 <ehird> my $dbh = DBI->connect( "DBI:mysql:database=$config->{db_name}",
22:15:04 <ehird> $config->{db_user}, $config->{db_pass} )
22:15:08 <ehird> what should that be for sqlite?
22:15:17 <lament> i think simulating it on the logs would be more informative
22:15:23 <lament> (by finding matching lines in the logs)
22:15:42 <lament> you'd find out everything the bot would have done in the past ~3 years
22:16:11 <ais523> oh, it also bans and devoices people who change nick too often
22:16:17 <ais523> and blocks newly-arriving users for a minute
22:19:55 <ehird> hmm
22:19:58 <ehird> it comes with nothing to import logs
22:19:59 <ehird> damnit.
22:20:57 <ais523> ehird: just run through each line calling the callback for someone saying something
22:21:40 <ehird> ais523: Non-trivial. Network::IRC isn't simple.
22:21:52 <ehird> & the logs are not in raw format
22:22:29 <ais523> ehird: just call irc_on_public
22:22:34 <ais523> rather than messing with Network::IRC at all
22:22:49 <ehird> ais523:
22:22:49 <ehird> my ( $self, $event ) = @_;
22:22:49 <ehird> my ( $nick, $userhost ) = ( $event->nick, $event->userhost );
22:22:49 <ehird> my ($msg) = ( $event->args );
22:22:58 <ehird> from irc_on_public
22:23:04 <ais523> that's not too complicated a call to manage
22:23:09 <ais523> it would look something like this:
22:23:15 <ehird> ais523: Add that to parsing the logs...
22:23:24 <ehird> However, I will download all the logs and munge them together
22:23:31 <ehird> Oh wait!
22:23:42 <ehird> ais523: Your idea sucks. It will retroactively punish
22:23:50 <ehird> So, e.g., most people in here will have mute times off the csale
22:23:51 <ehird> oh wait
22:23:54 <ehird> i can fix that myself
22:23:54 <ehird> heh
22:23:55 <ehird> :D
22:23:56 <ehird> okay
22:24:00 <ehird> time to brush up on my wget-fu
22:24:14 <ais523> irc_on_public($self,(nick => "somenick", userhost => "somefakeuserhost", args => $msg))
22:24:43 <ehird> yeah, and where to get the self from?
22:25:03 <ehird> ais523: Also, it interacts with irc: it will try to voice & kick etc
22:25:06 <ehird> causing havock
22:25:07 <ais523> ehird: it only cares about it when kicking
22:25:07 <ehird> *havok
22:25:21 <ais523> so just comment all the lines that use it and pass in undef or something
22:25:33 <ais523> that'll do for filling the database, then you can comment them back in again
22:25:46 <ais523> or if you're feeling clever, make it skip all those lines if $self is undef
22:26:17 <ehird> okay then
22:26:30 <ehird> i'll make it beep when it was going to kick someone
22:26:34 <ehird> interactive lightshow :D
22:27:11 <ehird> actually, my semantic irc framework would rock for this
22:27:14 <ehird> just give it a dummy irc server
22:27:16 <ehird> filled with the logs
22:27:19 <ehird> and let it go
22:27:49 <ais523> I have to go, now, anyway. Bye!
22:27:51 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
22:28:23 -!- Dagide has quit (Remote closed the connection).
22:29:21 <ehird> lament: bespin.org is FEELING MY PAIN
22:29:29 <ehird> KILL KILL KILL, YOUR SERVER MUST DIE
22:31:05 <ehird> It's on to 2006 already.
22:31:06 <ehird> Wheee...
22:35:08 <AnMaster> Deewiant, there?
22:35:52 <AnMaster> Deewiant, the HRTI test of mycology adds a total of over 0.030 seconds
22:36:14 <AnMaster> Deewiant, so far that is the single slowest fingerprint to test
22:39:13 <ehird> okay
22:39:15 <ehird> all logs downloaded
22:39:29 <ehird> 515687 lines
22:43:25 -!- jix has quit ("CommandQ").
22:43:33 <ehird> hm
22:43:43 <ehird> lament: I have 426682 lines of logs processed ready
22:44:33 <ehird> o wait
22:44:34 <ehird> if (@ARGV) { # we're only loading an existing log file, not actually running
22:44:34 <ehird> print "Loading log files...\n";
22:44:34 <ehird> &load_log;
22:44:34 <ehird> }
22:44:37 <ehird> it already can do it
22:44:37 <ehird> lulz
22:49:39 <ehird> lament: So since ROBOT9000 already supports loading logfiles, I could just quickly load it up now and then put it in here as a quick experiment.
22:49:40 <ehird> Thoughts?
22:52:50 <lament> it would take us weeks to reach any interesting conclusions; we don't talk much
22:53:16 <lament> so simulating its actions in the logs is far more informative
22:53:23 <lament> but feel free
22:53:45 <lament> as long as it doesn't actually hurt anybody :)
22:54:06 <ehird> lament: well, that's the problem -- it won't run without ops
22:54:06 <ehird> :/
22:54:15 <lament> (you just said wheeee, okay, hm and lulz in the past 15 minutes - you would be very muted now)
22:54:21 <ehird> and yes
22:54:22 <ehird> i very would
22:54:23 <lament> then fix it
22:54:27 <ehird> not just any kind of muted, but VERY muted
22:54:30 <lament> it's open source
22:54:35 <ehird> lament: i don't think i can fix it, the whole architechture is based on it
22:55:17 <lament> why don't you just search for duplicates in the log files? :)
22:55:41 <lament> i bet most of the duplicates are short things like "okay"
22:55:42 <ehird> lament: because that's nothing like what robot9000 does
22:56:00 <lament> can't you just steal its text-processing algorithm
22:56:08 <lament> presumably it's a separate procedure
22:56:11 <lament> you don't need the rest of the bot
22:56:28 <ehird> lament: no, its not a seperate procedure
22:56:31 <ehird> hmm
22:56:36 <ehird> i'm going to load the logs into it
22:56:38 <ehird> and see what happens
22:56:42 <lament> wow, this bot sounds more and more like a perl program :)
22:56:49 <ehird> lament: well, it is perl
22:56:49 <ehird> :)
22:58:46 <ehird> lament: wow
22:58:46 <ehird> zsh: bus error perl ROBOT9000.pl ROBOT9000.yml logs/combined.txt
23:00:32 <lament> and you want that thing to ban people? :)
23:01:11 <ehird> lament: hehe, well it is processing them now
23:01:14 <lament> what could possibly go wrong!
23:01:22 <lament> :D
23:01:22 <ehird> wow
23:01:27 <ehird> this is a lot of stuff
23:01:27 <ehird> :P
23:01:47 <ehird> I'll just let it do its thing..
23:03:05 <ehird> lament: it keeps recording empty lines. heh!
23:03:15 <ehird> Still, if xkcd are using it, it must work pretty well
23:06:31 <ehird> lament: Sheesh, people talk about a lot of crap in #esoteric.
23:06:42 <lament> I agree
23:06:56 <lament> it's pretty good now compared to what it used to be at one point
23:07:22 <ehird> the value is an anti-alias factor setting it to 1 disables the anti-aliasing feature this makes the output look bad but setting it too high makes the trace take a lot more time to complete
23:07:25 <ehird> that just scrolled past
23:07:28 <lament> (we actually talk about programming stuff once in a while as opposed to just talking about manga and social incompetence)
23:07:32 <ehird> (Incidentally, I would have just been muted, ironically)
23:12:06 <ehird> lament: sheehs, this is such a waste of cpu time
23:12:07 <ehird> :D
23:22:28 -!- oerjan has joined.
23:22:36 <ehird> lament: Sti-i-i-hillll going
23:25:19 -!- oerjan has quit (Client Quit).
23:27:22 -!- oerjan has joined.
23:42:01 <ehird> lament: still going
23:49:40 <lament> i wait with bated breath
23:51:36 * oerjan is surprised to learn that "bated" is the correct spelling
23:55:40 <ehird> process 3 killed
23:55:40 <ehird> time for new and improved garbage
23:55:40 <ehird> oh and that is the previous newline
23:55:40 <ehird> heh
23:55:42 <ehird> latest lines
2008-04-11
00:17:26 <ehird> lament: stillllll going
00:49:36 -!- timotiis has quit (Read error: 110 (Connection timed out)).
00:53:09 <ehird> lament: Guess what's still going?
01:01:31 -!- wildhalcyon has joined.
01:01:55 <ehird> lament: WELL, these logs have a lot to do with esoteric things
01:01:59 <ehird> but not really programming languages
01:02:00 <ehird> gregorr-w cleans his scottish claymore
01:02:00 <ehird> feesh cleans his teeth
01:02:00 <ehird> gregorr-w cleans his novelty-size 14-inch ribbed black dildo
01:02:00 <ehird> waiit
01:02:00 <ehird> gimme my dildo back bitch
01:02:02 <ehird> gregorr-w hides it somewhere and runs off awkwardly
01:02:04 <ehird> how am i meant to clean my teeth now
01:03:05 <wildhalcyon> mornin', or evenin', or whatever portion of the timecube it currently is wherever you are.
01:05:09 <ehird> wildhalcyon: quater-past ninety
01:06:17 <wildhalcyon> cool. Its about 5pi/3 here.
01:06:38 <wildhalcyon> I've decided to express all times in radians from now on.
01:07:06 <wildhalcyon> Engineers and mathematicians will understand what I'm saying. As for anyone else... screw 'em.
01:07:36 -!- Sgeo has joined.
01:08:17 <ehird> Sgeo: When did you first come in here?
01:08:36 <Sgeo> ehird, I don't remember
01:08:41 <ehird> Sgeo: Year?
01:08:47 * Sgeo doesn't remember
01:10:43 <lament> Century?
01:16:36 * oerjan wonders why google only catches the occasional page in the tunes.org logs
01:20:12 <Sgeo> "You know how in YouTube, when you click pages and the comments for that page load without having to go to a new web page? That's Web 2.0" ~me, earlier today
01:20:12 <Sgeo> :(
01:20:21 <Sgeo> (paraphrased)
01:24:10 <ehird> Sgeo: cluelessness 2.0
01:24:31 <Sgeo> ehird, sometime after that (and after he left :( ), I looked up Web 2.0
01:24:36 <ehird> oerjan: it doesn't consider 'empty' directories with no links particularly worthy
01:24:44 <ehird> Sgeo: web 2.0 is a vacant buzzword with no reason
01:24:52 <ehird> Sgeo: you are describing 'Ajax' which is another buzzword
01:25:08 <ehird> but amounts to a way to create an http request and add callbacks to it via javascript
01:25:12 <ehird> then processing the result
01:25:15 <Sgeo> ehird, I know what I described, I just thought at the time that Web 2.0 is AJAX
01:25:25 <ehird> no
01:25:29 <ehird> that would make the term even stupider
01:25:30 <ehird> :D
01:28:25 <GregorR> ehird: Havin' fun reading the logs? X-P
01:28:45 <ehird> GregorR: No, feeding them into ROBOT9000.
01:28:57 <ehird> All four years of them.
01:32:20 <wildhalcyon> has this channel really been around 4 years?
01:33:48 <ehird> wildhalcyon: longer
01:33:50 <ehird> 2003, I think
01:33:53 <ehird> but logs started in 2004
01:33:55 <wildhalcyon> wow
01:34:12 <lament> you can find the announcement message in the esolang mailing list
01:34:14 <ehird> [01:34] -ChanServ- Registered: 5 years 14 weeks 6 days (23h 3m 36s) ago
01:34:23 <ehird> [01:34] -ChanServ- Contact: andreou
01:34:24 <ehird> [01:34] -ChanServ- Alternate: lament << ONLINE >>
01:34:31 <ehird> I think andreou last came in 2003.
01:34:32 <ehird> :p
01:34:42 <ehird> from my reeee-search
01:35:01 <wildhalcyon> wished I'd gotten involved more sooner, I guess
01:35:24 <ehird> I joined here sometime in 2007.
01:35:38 <lament> esolang was a nice list
01:35:47 <ehird> lament: Is it still alive?
01:35:55 <wildhalcyon> I joined around 2006, but I never really did much. I'm still not terribly active.
01:36:16 <lament> ehird: i think so, there just haven't been any messages in years
01:36:20 <lament> so... not really
01:37:46 <ehird> lament: we should try and get comp.lang.esoteric
01:37:47 <ehird> :D
01:38:48 <Sgeo> I guess on Tuesday I'll tell him I was mistaken in my description of Web 2.0..
01:38:57 <lament> so it was 2002
01:39:07 <lament> http://esoteric.sange.fi/archive/2002-q4
01:39:13 * Sgeo still feels guilty about it
01:39:27 <lament> back then, freenode was already irc.freenode.net, but was still called OPN
01:40:25 * Sgeo goes on an ant murdering spree
01:40:26 <ehird> lament: that's EFNet
01:40:29 <ehird> look at the announcement
01:40:35 <ehird> ergo, a different #esoteric
01:40:39 <ehird> maybe there's people there... still talking
01:40:42 <lament> if you actually read the messages...
01:40:42 <ehird> and we don't know of them
01:40:57 <Sgeo> ehird, no, not now.
01:41:12 <ehird> Sgeo: did you just check? :P
01:41:16 <lament> uhh
01:41:17 <Sgeo> Maybe sometimes some people are there, but none right now.
01:41:19 <Sgeo> ehird, yes.
01:41:27 <oerjan> Sgeo: hey you have ants too?
01:41:37 <lament> ehird: do actually read the messages
01:41:45 <ehird> lament: following the guy's sig links i find http://psychanodia.blogspot.com/
01:41:51 <oerjan> or is this something game-related...
01:42:11 <Sgeo> oerjan, real ants :(
01:42:18 <Sgeo> They're all over my desk!
01:42:19 <ehird> Sgeo: you sick person :P
01:42:52 * oerjan uses a drinking glass and a piece of paper to catch them
01:43:23 <ehird> my ants help me code
01:43:25 <ehird> they are very proficient
01:43:43 <ehird> but what they love most is playing Zork
01:43:51 <ehird> 'you are in a maze of twisty passages, all alike' reminds them of home
01:44:10 * oerjan tries not to let them near the computer
01:44:14 <wildhalcyon> I hated that game
01:45:13 * Sgeo should get a tissue box and a garbage, to kill and dispose of ants
01:45:14 <ehird> wildhalcyon: How *DARE* you.
01:45:19 <ehird> wildhalcyon: Go XYZZY your PLUGH
01:46:08 <wildhalcyon> Sorry, it just wasn't my brand of humor.
01:46:30 <lament> xyzzy and plugh wasn't really zork.
01:46:49 <ehird> lament: I know that.
01:46:55 <ehird> Even so, they are words related to the game.
01:48:16 <lament> so's "the".
01:48:41 <wildhalcyon> not to mention rye.
01:48:44 * wildhalcyon shudders
01:49:09 <oerjan> evil despicable grain species?
01:49:32 <wildhalcyon> perhaps, but I think it was a type of alcohol
01:49:33 <ehird> There should be a TC esolang with no syntax somehow.
01:49:35 <ehird> I don't know how.
01:49:57 <lament> define syntax, and it shall be done.
01:51:01 <oerjan> The Taxes of Syn
01:51:29 <ehird> lament: everything involving the world 'an'
01:51:31 <wildhalcyon> A token followed by one or more additional tokens.
01:52:42 <lament> that's not much of a definition.
01:53:30 <wildhalcyon> I know, its brutal.
01:53:40 <oerjan> well the order of tokens is syntax. so for a language to be totally syntax-free, sorting the characters of a program should not change its meaning >:)
01:54:21 <oerjan> which basically leaves you with 256 unary encoded values...
01:54:26 <wildhalcyon> Not necessarily.
01:54:31 <wildhalcyon> Tokens may be larger than a single character
01:54:40 <wildhalcyon> for instance, you could use integers
01:54:42 <ehird> oerjan: how about: sorting the tokens
01:54:48 <ehird> where tokens are, oh, i don't know
01:54:53 <oerjan> ok maybe
01:54:53 <ehird> let's say many non-whitespace
01:54:57 <ehird> seperated by whitespace
01:55:26 <oerjan> what about morphology then? you could imagine a polysynthetic PL where every program was a single word
01:56:28 <ehird> oerjan: no
01:56:48 <oerjan> now there certainly are already PLs where whitespace is insignificant everywhere. brainfuck for one
01:57:09 <lament> oerjan: actually i can't imagine such a PL
01:57:34 <lament> i don't think that makes any sense at all
01:57:46 <oerjan> depends how you defined "word"
01:58:12 <lament> certainly, but i mean if BF isn't it, then nothing is
01:58:25 <lament> and it seems silly to say that BF programs are "single words"
01:59:16 <wildhalcyon> I would argue that they're not.
01:59:18 <ehird> we seem to be splitting hairs
01:59:19 <ehird> :)
01:59:33 <wildhalcyon> Even glypho has word-like elements.
01:59:51 <lament> well, actually, i suppose wierd is single-word
01:59:53 <lament> :)
02:00:01 <lament> single-symbol, even
02:19:37 <ehird> a
02:20:48 <wildhalcyon> ugh, my new language design is coming along REALLLLLLLY slowly
02:21:53 <ehird> wildhalcyon: eat it
02:21:54 <ehird> with a spoon
02:21:56 <ehird> and a fork
02:21:57 <ehird> and a spork
02:22:01 <ehird> then it will co-operate
02:22:05 <ehird> while being digested
02:22:26 <wildhalcyon> I do need the language-design equivalent of prune juice
02:26:34 <wildhalcyon> I'm just confuzzled I suppose
02:30:00 -!- ehird has quit ("This computer has gone to sleep").
02:32:03 -!- oerjan has quit ("Good night").
02:49:34 -!- calamari has joined.
02:49:41 <calamari> hi
02:50:56 <calamari> GregorR: you here?
02:51:06 <GregorR> Yuh
02:51:09 <calamari> cool
02:51:14 <GregorR> >_>
02:51:23 <calamari> I have a c2bf question for you
02:51:28 <GregorR> Heh, OK
02:51:31 <calamari> you still have those page scans ?
02:51:37 <GregorR> Sure, somewhere, just a sec.
02:51:39 <calamari> from when yopu were designing it
02:51:55 <GregorR> http://www.codu.org/c2bf.pdf
02:52:01 <calamari> been researching GCC
02:52:17 <calamari> thanks
02:53:34 <wildhalcyon> hi calamari :-)
02:53:53 <calamari> GregorR: does C expect an infinite stack?
02:54:09 <GregorR> No, of course not.
02:54:15 <calamari> hi wildhalcyon
02:54:45 <GregorR> That being said, it has no provisions for running out of stack space. When that happens your program usually dies a painful death :P
02:55:00 <calamari> ahh ok
02:55:13 <calamari> stack overflow.. not a good thing
03:07:00 -!- wildhalcyon has left (?).
04:08:19 <RodgerTheGreat> GregorR: this brings up an interesting idea- is there any minimum stack depth required by, say, the ANSI C spec?
04:53:05 <pikhq> The ISO spec, insofar as I'm aware, does not even mandate a stack. :p
04:53:44 <pikhq> (how else to implement functions is beyond me, though. (assuming real hardware. Mr. "Lambda Calculus" can just assume that functions work. :p))
05:00:32 -!- GreaseMonkey has joined.
05:41:33 <GregorR> Yyyyup.
06:10:01 -!- olsner has joined.
06:13:57 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
06:14:39 -!- Judofyr has joined.
06:23:07 -!- calamari has quit ("Leaving").
06:50:01 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
07:14:52 <Deewiant> AnMaster: yes, because of the ff*kyn especially made for fast interpreters on computers with low-granularity timers, so that T would give useful info. ;-)
07:16:33 -!- Judofyr has quit.
07:33:58 -!- Iskr has joined.
07:51:56 <AnMaster> Deewiant, hah
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:22:25 -!- GreaseMonkey has left (?).
08:23:50 -!- GreaseMonkey has joined.
08:53:26 -!- oerjan has joined.
08:54:59 -!- olsner has quit ("Leaving").
09:11:26 -!- oerjan has quit ("leaving").
10:33:02 -!- GreaseMonkey has quit ("I hope your attitude's as positive as these test results!").
10:54:00 <Slereah> http://esolangs.org/w/images/b/b8/Lazy_Bird.png <- it is still thar D:
10:55:57 <GregorR> Dot dot dot.
10:58:13 -!- lament has quit (brown.freenode.net irc.freenode.net).
10:58:13 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
10:58:15 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
10:58:15 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
10:58:15 -!- Slereah has quit (brown.freenode.net irc.freenode.net).
10:58:15 -!- sebbu has quit (brown.freenode.net irc.freenode.net).
10:58:15 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
10:58:17 -!- oklofok has quit (brown.freenode.net irc.freenode.net).
10:58:17 -!- cmeme has quit (brown.freenode.net irc.freenode.net).
10:58:17 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net).
10:58:17 -!- cherez has quit (brown.freenode.net irc.freenode.net).
10:59:16 -!- oklofok has joined.
10:59:16 -!- Slereah has joined.
10:59:16 -!- cmeme has joined.
10:59:16 -!- lifthrasiir has joined.
10:59:16 -!- sebbu has joined.
10:59:16 -!- EgoBot has joined.
10:59:16 -!- cherez has joined.
10:59:16 -!- fizzie has joined.
10:59:16 -!- lament has joined.
10:59:16 -!- tejeez has joined.
10:59:16 -!- Deewiant has joined.
11:47:12 <Slereah> Does this seems okay as an Ackerman function? A = ^xy.(((iszero(car y))(xx)i)(((iszero car y) (succ cdr y)) (((iszero cdr y) (x ((cons pred car y) i)) (x ((cons pred car y) (x ((cons car y) pred cdr y))))
11:47:28 <Slereah> And the function itself would be ``AA<m,n>
11:47:42 <Slereah> (Parenthesis might be unmatched)
12:05:19 <Slereah> http://pll.cpsc.ucalgary.ca/charity1/www/wofm/wofm2.html
12:05:20 <Slereah> wot
12:05:46 <Slereah> We're so west coast.
12:21:26 -!- jix has joined.
12:24:14 <oklofok> ehird: pong, like.
12:35:12 -!- Tritonio_ has quit (Remote closed the connection).
12:56:18 <oklofok> hmm, c by itself was proven non-tc, but is there a set of combinators that is tc when c is added, but not otherwise, i wonder
13:42:32 -!- oklofok has quit (Read error: 113 (No route to host)).
13:46:26 -!- timotiis has joined.
14:47:25 -!- Judofyr has joined.
16:00:15 -!- ais523 has joined.
16:11:20 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
16:26:38 -!- olsner has joined.
16:38:02 -!- olsner has quit ("Leaving").
16:43:31 -!- ais523 has joined.
17:25:39 <AnMaster> UNDEF: 1k # does nothing at k or jumps at k and doesn't move past #
17:25:48 <AnMaster> Deewiant, but you never test which of those it is?
17:26:00 <Deewiant> AnMaster: how could I test it?
17:26:09 <AnMaster> Deewiant, because I'm wondering if I'm really doing the right thing at concurrent execution in regards to that
17:26:20 <Deewiant> there's no way of telling the difference
17:26:46 <AnMaster> how many ticks does: 2k a
17:26:47 <AnMaster> take then?
17:26:55 <Deewiant> k always takes one tick
17:26:58 <Deewiant> no matter what
17:27:13 <Deewiant> so that takes 3, no matter what.
17:27:18 <AnMaster> hm then why does standard say that k does not execute space
17:27:19 <AnMaster> ever
17:27:23 <Deewiant> assuming that k behaviour, that is.
17:27:24 <AnMaster> that must mean zero ticks?
17:27:32 <Deewiant> no it mustn't
17:27:47 <Deewiant> I recall pasting that long e-mail of mine and the developer of befunge98 about this stuff :-)
17:27:47 <AnMaster> then how does 2kz differ from 2k
17:27:56 <Deewiant> depends on how you implement 2k
17:28:09 <Deewiant> 2kz at least can be guaranteed to be equivalent to zz :-P
17:28:22 <Deewiant> (one z for the 2, one for the k)
17:28:57 <Deewiant> whereas 2k t may spawn one or two threads depending on implementation, for instance
17:29:05 <Deewiant> because the specs are wonderfully confusing on this bit.
17:29:58 <AnMaster> hm
17:30:45 <AnMaster> well. it says k should not execute space, so what should it execute instead
17:30:57 <AnMaster> hm
17:31:23 <Deewiant> exactly.
17:31:26 <Deewiant> does that mean:
17:31:29 <Deewiant> a) reflect
17:31:37 <Deewiant> b) reach past the marker and execute next instruction
17:31:41 <Deewiant> c) do nothing
17:31:50 <Deewiant> possibly other options, that's just off the top of my head. :-P
17:32:00 * ais523 interprets it as meaning that you ignore all spaces and take the next instruction
17:32:18 <AnMaster> Deewiant, what does CCBI do there?
17:32:27 <ais523> my sense of the Funge-98 spec is that the space character literally doesn't exist (except inside strings, where separate space characters don't exist)
17:32:28 <Deewiant> do nothing
17:32:30 <AnMaster> hm
17:32:49 <ais523> the intention seems to be that 1k # should be equivalent to 1k#
17:32:49 <Deewiant> ais523: yes, that's a perfectly valid interpretation.
17:32:54 <Deewiant> but I can't be sure.
17:33:19 <AnMaster> Deewiant, tried contacting Chris Pressey?
17:34:19 <Deewiant> no
17:34:33 <Deewiant> I'm not /that/ interested ;-)
17:34:34 * AnMaster realize his Funge-108 draft made that aspect of k even more confusing than before. heh
17:34:44 <Deewiant> I think what FBBI does is it reaches past the space
17:34:50 <Deewiant> but then it doesn't skip over the instruction after executing it
17:35:03 <AnMaster> and then there is the question of ; too
17:35:07 <Deewiant> yep
17:35:19 <Deewiant> if 1k # executes # at k, then 1k;;# should as well
17:35:47 <AnMaster> hm, it says it does not execute ;
17:35:54 <Deewiant> and stuff like 1k;<code>;# is a nice obfuscation :-P
17:36:01 <AnMaster> so it can't go into "search for next ; mode"
17:36:24 <Deewiant> ; isn't an instruction
17:36:30 <AnMaster> so 1k;ab;# would execute a?
17:36:34 <AnMaster> Deewiant, indeed it's a marker
17:36:37 <Deewiant> no, it'd execute #
17:36:40 <Deewiant> and jump in to execute a
17:36:43 <Deewiant> followed by b.
17:36:44 <Deewiant> etc.
17:36:55 <ais523> AnMaster: call it Funge-:8
17:36:58 <AnMaster> "Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;)"
17:37:08 <Deewiant> AnMaster: exactly, it's a marker, not an instruction, so you don't need to execute it to do what it marks
17:37:11 <Deewiant> just like space.
17:37:16 <Deewiant> assuming you interpret k that way.
17:37:16 <ais523> Windows 3.1's file manager, when 2000 came, used to date files as being in the year 19:0
17:37:19 <AnMaster> ais523, the name was the request of Chris Pressey
17:37:29 <ais523> AnMaster: OK
17:37:32 <AnMaster> Deewiant, gah
17:37:39 <AnMaster> Deewiant, what do ccbi do on ;?
17:37:43 <AnMaster> k; I mean
17:37:54 <Deewiant> like k , nothing, I think.
17:38:00 <Deewiant> it just skips over it.
17:38:16 <AnMaster> so k;a;b;c executes a and c but not b?
17:38:25 <ais523> would that mean k;+ was equivalent to k+ if there were no other semicolons on that Lahey line?
17:38:29 <Deewiant> yes, that seems about right
17:38:41 <AnMaster> ais523, um nfc
17:38:51 <Deewiant> and if no semicolons are ever generated on any Lahey lines intersecting with that semicolon. ;-)
17:38:56 <AnMaster> Deewiant, well cfunge instead reflects on k;
17:38:58 <Deewiant> etc. etc.
17:39:14 <Deewiant> AnMaster: whatever. like said, the spec is woefully unclear.
17:39:21 <Deewiant> okay, it's not executed, but what's done instead?!
17:39:27 <ais523> AnMaster: assume I'd said "at the time" at the end of my question, I normally assume that in statements about Befunge unless I specifically state otherwise
17:39:29 <AnMaster> well I need to email Pressey and ask what he meant
17:39:39 <Deewiant> the spec cares too much about what should not happen and doesn't specify what should happen at all. :-P
17:39:48 <AnMaster> ais523, well it took a bit to think about
17:40:18 <AnMaster> Deewiant, yep so in the 108 draft I adapted the MUST/MUST NOT/SHOULD/SHOULD NOT/MAY thing from RFCs
17:40:31 <AnMaster> that SHOULD or at least MAY help a bit ;)
17:40:34 <Deewiant> whatever works
17:40:40 <Deewiant> are you going to leave any behaviour undefined?
17:40:57 <AnMaster> Deewiant, I'll try to avoid it
17:41:12 <ais523> UB tends to be a useful thing to have in specs in the case where it's clear that an interp couldn't do anything sensible
17:41:24 <AnMaster> Deewiant, anyway one thing I'm thinking about is the fingerprint/handprint system, it really is too likely with collisions
17:41:29 <ais523> the Underlambda spec I'm working on allows UB in some places because to mandate specific behaviour would make the language uncomputable
17:41:38 <AnMaster> Deewiant, some uri based system would be better
17:41:39 <Deewiant> AnMaster: yep, needs an overhaul of some kind.
17:42:13 <AnMaster> either java style: tc.catseye.HRTI
17:42:27 <AnMaster> or more like the way xml does it
17:42:30 <ais523> (the interp has to determine which Church numeral a particular function corresponds to; this is easy if it's known that the function is a Church numeral, but I allow UB in the case where it isn't because in general it's an uncomputable problem to determine whether two functions are equivalent)
17:42:39 <AnMaster> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
17:42:42 <Deewiant> sauna ->
17:42:44 <AnMaster> so http://catseye.tc/projects/funge98/library/HRTI.html
17:43:07 <AnMaster> Deewiant, hm, are Finnish ppl sauna-fanatics or something? ;P
17:43:36 <ais523> you may need to be careful with XML-style
17:43:36 <Slereah> If it is not a Church numeral, what does it do?
17:43:41 <ais523> Slereah: UB
17:43:49 <ais523> because there's no way in general to tell if it's a Church numeral or not
17:43:49 <AnMaster> ais523, hm?
17:43:55 <Slereah> Keep checking 4eva, or gives up after some time
17:43:57 <Slereah> I know.
17:44:04 <Slereah> But it can give up on checking.
17:44:05 <AnMaster> ais523, why careful with them?
17:44:13 <Slereah> That's what I used with THE JUGGERNAUT.
17:44:15 <Slereah> Bitch.
17:44:43 <ais523> AnMaster: because much of the w3c's bandwidth is used up by messed-up XML parsing libraries that request the DTD from their servers on every single parse they do
17:45:04 <AnMaster> ais523, well the file would not be machine readable
17:45:11 <ais523> if they cached common DTDs like the one for HTML, they wouldn't have to use as much bandwidth
17:45:16 <AnMaster> just a page describing in a way that is readable by humans
17:46:24 <ais523> OK
17:47:30 <AnMaster> ais523, though I actually thought about some automated system to generate skeletons. currently I got a crude shell script for it
17:47:41 <AnMaster> but that would be more or less cfunge specific
17:48:49 <AnMaster> it would contain something like: first name fingerprint name, second line "safe for sandbox" 1 or 0, third line short desc of fingerprint, 4th line, url for docs, the rest something like:
17:48:55 <AnMaster> A add
17:49:02 <AnMaster> B substract
17:49:17 <AnMaster> and then it generates function names and fingerprint loading function
17:49:37 <AnMaster> currently you have to change function name manually and fill in the names in the loading routine
17:50:23 <AnMaster> ais523, see what I mean?
17:50:31 <ais523> more or less
17:50:53 <AnMaster> see tools/gen_fingerprint.sh for the current one
17:51:35 <AnMaster> another use of this would be to autogenerate the list in manager.c
17:51:58 <AnMaster> probably autogenerate a file with just the array and then include that file
17:53:10 <AnMaster> Deewiant, btw when I run cfunge under valgrind the slow HRTI test takes about 20 times as long when concurrency support is *disabled*
17:53:18 <AnMaster> I just don't get what is going on there
17:53:29 <AnMaster> it shouldn't be affected by concurrency at all
17:53:44 <AnMaster> and why slower when it is disabled
17:53:50 <AnMaster> without valgrind: about same speed
17:54:02 <AnMaster> and that. makes no sense. to me
17:56:46 <AnMaster> ais523, you got any idea about it?
17:56:56 <ais523> no, I'm confused too
17:57:27 <ais523> BTW, I can't get hold of the cfunge source, because the version of bzr in the Ubunutu 7.10 repositories is only 0.90, and I don't want to mess with newer repositories at the moment
18:02:10 -!- Sgeo has joined.
18:05:21 -!- RedDak has joined.
18:05:48 <AnMaster> ais523, ouch
18:06:06 <AnMaster> ais523, out that they use a so outdated one
18:06:15 <AnMaster> considering they are the main developers of bzr
18:06:22 <ais523> yes, I noticed that too
18:06:50 <ais523> I haven't really had very good experiences with Ubuntu bug reports
18:06:51 <AnMaster> IMO bzr is one of the few good things that has come out of Ubuntu
18:06:53 * AnMaster runs
18:07:05 <ais523> so nowadays I just report directly to Debian, who normally answer within 24 hours
18:07:21 <ais523> normally to say that I screwed up the patch I sent them again...
18:07:35 <AnMaster> hah
18:07:40 <ais523> for some reason, every patch I've sent to Debian has been missing, or misformatted, or had the wrong sort of newlines, or something like that
18:07:45 <ais523> and it's been my fault every time
18:07:59 <AnMaster> ais523, maybe try applying it before you send it
18:08:01 <AnMaster> ie, test it
18:08:11 <ais523> AnMaster: the ironic thing is that it worked for me
18:08:18 <AnMaster> how comes it did?
18:08:23 <ais523> because I had corrected the newlines in the file I was patching against and forgotten about it
18:08:27 <AnMaster> ais523, maybe try on a copy of the clean debian sources?
18:08:32 <AnMaster> to see that it really works
18:08:40 <ais523> AnMaster: I may have to do that in future
18:09:15 <AnMaster> ais523, oh and line ending == LF for cfunge
18:09:29 <ais523> line ending ought to == 10 for C-INTERCAL too
18:09:34 <ais523> except for a few DOS-specific files
18:09:36 <AnMaster> well try dos2unix
18:09:43 <ais523> I have a newline-fixing script that does that
18:09:45 <AnMaster> a command line tool
18:09:45 <AnMaster> or
18:09:51 <ais523> but forgot to include the file in question in the script
18:10:04 <AnMaster> I got a script that cleans up newlines, and trailing whitespaces
18:10:06 <ais523> (because it has to put the right sort of newlines on the right files)
18:10:14 <AnMaster> it also make sure the file just end in a *single* newline
18:10:25 <ais523> I get Emacs to higlight trailing whitespace for me, because occasionally it's relevant
18:10:30 <AnMaster> or at least should but I noted that is kind of not working since I upgraded ed
18:10:36 <AnMaster> it is a bash script that calls ed
18:10:50 <ais523> why not use sed, which was designed for that purpose?
18:11:02 <ais523> as in, being an ed-like language that can operate on streams
18:11:13 <AnMaster> ais523, because sed -i is non-standard
18:11:17 <ais523> and operate without manual intervention
18:11:21 <AnMaster> it's a gnu extension
18:11:33 <AnMaster> ais523, and ed can operate without manual intervention
18:11:46 <ais523> perl -i is standard, and sed can be compiled trivially into Perl
18:11:55 <ais523> in fact, the compiler distributes with Perl
18:12:15 <AnMaster> eh? what compiler?
18:12:22 <ais523> s2p
18:12:33 <AnMaster> well perl is not standard
18:12:41 <AnMaster> a default freebsd install doesn't have perl
18:12:46 <AnMaster> it does however have ed
18:13:07 <ais523> my DJGPP installation has Perl but not ed
18:16:25 <AnMaster> ais523, also making sed match on newlines is a PITA
18:16:33 <ais523> AnMaster: agreed
18:16:36 <AnMaster> as in across lines
18:31:18 <AnMaster> bbl food
18:35:10 -!- Tritonio_ has joined.
18:43:54 <Sgeo> Hi all
18:43:58 <Sgeo> hi Tritonio_
18:44:13 <ais523> hi Sgeo
18:44:58 <ais523> have to go, sorry
18:45:00 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
18:47:29 -!- ehird has joined.
18:52:59 <Sgeo> hihird
18:54:24 <ehird> brb
18:57:15 -!- jix has quit (Nick collision from services.).
18:57:25 -!- jix has joined.
19:02:28 <AnMaster> Deewiant, I sent a mail to Chris now, http://rafb.net/p/JSiiZd29.html if you want to see it
19:02:38 -!- RedDak has quit (Remote closed the connection).
19:02:43 <AnMaster> <ais523> have to go, sorry
19:02:43 <AnMaster> * ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"")
19:02:43 <AnMaster> * ehird (n=ehird@91.105.104.73) has joined #esoteric
19:02:57 <ehird> heh
19:03:12 -!- RedDak has joined.
19:03:23 <AnMaster> ehird, you missied him with two minutes and 29 seconds
19:03:49 <AnMaster> missed*
19:11:57 <lament> hee
19:11:58 <lament> *ChordParser> parse parseChord "" "Am7"
19:11:59 <lament> Right (RootedChord A (fromList [0,4,7,9]))
19:11:59 <lament> *ChordParser> parse parseChord "" "C6"
19:12:00 <lament> Right (RootedChord C (fromList [0,4,7,9]))
19:12:13 <lament> \o/
19:12:40 <AnMaster> hm?
19:13:15 <lament> parsing chords!
19:13:18 <AnMaster> Deewiant, What would k do in fingerprint instructions that do a "jump right away", like those from SUBR
19:13:33 <AnMaster> lament, yeah but I can't parse the result
19:13:40 <Deewiant> AnMaster: "jump right away"?
19:14:02 <lament> AnMaster: the root notes are A and C and the pitches are exactly the same (as it happens)
19:14:06 <AnMaster> Deewiant, well say SUBR's "return from subroutine", what would happen if k iterates over it
19:14:18 <AnMaster> Deewiant, or what if k iterates on go to subroutine
19:14:25 <Deewiant> just what you'd expect
19:14:30 <AnMaster> Deewiant, in the latter case it could make sense to execute it once
19:14:32 <Deewiant> i.e. it pops k times instead of once
19:14:33 <Deewiant> or whatever
19:14:40 <AnMaster> hm true
19:24:15 <ehird> I am backkkk
19:24:42 <ehird> AnMaster: data Either a b = Left a | Right b
19:24:50 <ehird> common idiom: 'Left error', 'Right result'
19:24:53 <ehird> as in right, correct
19:29:01 <AnMaster> ehird, hm?
19:29:31 <AnMaster> lament, well I can play it on the piano but I can't parse your output :P
19:30:02 <AnMaster> also I don't know if the chords have differen't names in English
19:31:03 <AnMaster> lament, could it parse say C/F
19:31:25 <AnMaster> or F#7
19:36:03 <lament> not yet C/F but i'm working on it
19:36:57 <lament> and other alterations (eg "C7-9#11/Bb")
19:42:33 -!- timotiis_ has joined.
19:56:01 -!- timotiis has quit (Read error: 110 (Connection timed out)).
19:59:27 <ehird> lament: so you like haskell again ;)
20:16:21 -!- Corun has joined.
20:35:00 -!- oerjan has joined.
20:45:24 -!- oklopol has joined.
21:12:32 <ehird> oklopol: oko
21:13:44 -!- kwertii has joined.
21:13:53 <oklopol> okyol.
21:14:44 <oerjan> oerly?
21:15:44 -!- Corun has quit ("This computer has gone to sleep").
21:16:52 <lament> ehird: i always like haskell!
21:16:55 <lament> ehird: i just think it sucks.
21:17:44 <ehird> oklopol: okoko. oko, okoko. oko!
21:18:07 <oklopol> okokokokokokoko
21:18:08 <oklopol> okokokokokoko
21:18:09 <oklopol> okokokokoko
21:18:10 <oklopol> okokokoko
21:18:11 <oklopol> okokoko
21:18:12 <oklopol> okoko
21:18:12 <oklopol> oko
21:18:12 <oklopol> o
21:18:16 <oklopol> excuse me
21:18:17 <ehird> oklopol: okokokokokoko
21:18:18 <ehird> kokoko
21:18:33 <oklopol> ehird: okoko.
21:18:49 <ehird> OKO?!?!?! okoko.
21:19:21 <lament> ok...
21:19:29 <lament> ehird: did robot9000 ever finish?
21:20:14 <ehird> lament: I killed it because I had to go.
21:20:19 <ehird> It was 3am.
21:25:00 -!- Corun has joined.
21:25:00 <Slereah> ``````````````okokokokokokoko converts to ``o`ko :o
21:26:18 <oklopol> whuz o?
21:27:06 <ehird> okokokokokokokoko
21:27:32 <Slereah> o is `si
21:29:36 <oklopol> well, you know, so is your mother
21:37:48 <ehird> oklopol: OKO
21:40:47 -!- RedDak has quit (Remote closed the connection).
21:41:46 * oerjan finds oko utterances surprisingly short for having such low entropy per character :D
21:42:43 <ehird> oerjan: okokoko
21:43:30 * oerjan regrettably isn't fluent
21:43:48 <ehird> oerjan: OKOKO?! oko... okoko okokoko. okoko!
21:48:23 <oklopol> okokokokokokokokokokokokokokokoko...
21:48:57 <ehird> oklopol: oko
21:57:00 <lament> damn, chords are hard to parse
21:58:53 -!- Corun has quit ("Leaving").
22:01:15 <oklopol> lament: what exactly are ya parsing?
22:08:03 <lament> chords
22:09:21 -!- timotiis_ has quit (Read error: 110 (Connection timed out)).
22:11:21 <oklopol> i'm assuming from a .wav
22:11:35 <ehird> oklopol: string
22:19:20 <lament> oklopol: no, things like C7-9#11/Bb
22:19:36 <lament> (i'm not sure if that example is even correct)
22:19:46 <lament> more like C7b9#11/Bb
22:22:38 <oklopol> oh so chord names
22:22:39 <oklopol> right
22:22:54 <oklopol> forgot there actually was a standard representation
22:22:55 <oklopol> silly me
22:23:22 <oklopol> (needless to say i don't like it, i guess)
22:23:54 <oklopol> although, i just dislike it a little, it isn't entirely rotten
22:27:17 <lament> it's pretty good
22:27:52 <lament> it's not entirely general
22:28:14 <lament> (classical doesn't use it since it's not specific enough about inversions)
22:28:26 <lament> but no music-related notation is entirely general
22:30:01 <GregorR> Except for PCM :P
22:30:37 <lament> PCM does not notate music
22:30:45 <lament> it notates sound :)
22:31:36 <GregorR> That's like saying "the alphabet doesn't notate words, it notates sounds"
22:33:49 * pikhq knows of another general music-related notation.
22:33:51 <pikhq> FLAC.
22:34:01 <pikhq> If you want to be even more insane, Base-64 FLAC.
22:34:25 * pikhq would like to shake the hand of anyone who can read that
22:35:50 <ehird> pikhq: :D
22:35:59 <lament> GregorR: the alphabet does notate words. But it does not notate novels.
22:44:16 <pikhq> By the same notion, music notation notates notes, but not music.
22:46:12 <lament> good point!
22:46:38 <lament> the alphabet notates words, which notate novels.
22:46:52 <lament> music notation notates notes, which notate music
22:47:19 <Slereah> NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
22:47:22 <lament> note that you don't need the alphabet to notate novels - for example, you can read a novel aloud
22:47:37 <lament> in which case the novel is still notated by words, but now the words are notated by sounds
22:47:38 <pikhq> lament: So, a novel is notated in words.
22:47:43 <lament> that's what i said.
22:47:46 <pikhq> And there are multiple notations *for* words.
22:47:50 <lament> that's what i said.
22:47:52 <pikhq> Yes, but I was typing it before you hit enter.
22:47:54 <pikhq> :p
22:48:09 <GregorR> And PCM notates sounds which notate music BIACH
22:48:25 <lament> sounds don't notate music
22:48:29 <GregorR> It can.
22:48:48 <lament> well, okay.
22:48:58 <GregorR> In the same way that words can notate novels, or hamster power amalgamation introspective for.
22:49:00 -!- jix has quit ("CommandQ").
22:49:01 <lament> i'd rather say music notates sounds :)
22:49:11 <pikhq> Actually, sounds can notate notes which can notate music. ;)
22:49:30 <lament> pikhq: not really, sounds don't notate notes
22:49:45 <pikhq> Tell that to someone with perfect pitch.
22:49:46 <lament> given a sound, it takes human intelligence to extract "notes" from it, and even then not precisely
22:49:50 <lament> that's hardly "notation"
22:50:11 <pikhq> Given a sound, it takes human intelligence to extract 'words' from it, and even then not precisely.
22:50:16 <pikhq> That's hardly "notation".
22:50:17 <pikhq> ;)
22:51:01 <lament> at least most people who speak the language are capable of hearing all the words
22:51:09 <lament> try hearing all the notes in a symphony
22:51:17 <lament> i can't do it, and you probably can't either
22:51:40 <lament> computers can sort of do speech recognition
22:51:50 <pikhq> Not fair.
22:51:50 <oerjan> we shall have to clone Mozart for that
22:51:52 <lament> but they're far from being able to write down music
22:52:03 <pikhq> A symphony is like having several dozen people talking at the same time.
22:52:07 <lament> pikhq: sure
22:52:08 <lament> so?
22:52:13 <pikhq> Computers can't do speech recognition in that environment, either.
22:52:24 <lament> if you notate the same music on a page, it's very simple
22:53:08 <pikhq> Given a piece of music with just a melody, and no harmony, it's much easier to write the notes. Notes have well-defined pitches. ;)
22:53:31 <lament> notes don't have well-defined pitches - consider bends, slides, vibrato
22:53:43 <lament> very easy to notate on paper, very hard to get back the note from the sound
22:54:01 <pikhq> The note itself has well-defined pitches. Those are more than just notes being notated there. ;)
22:54:03 <lament> strong vibrato on violin can span more than a semitone
22:54:12 <lament> is that one note, or several notes?
22:54:26 <pikhq> That's a matter of notation.
22:54:38 <pikhq> Take an arbitrary word. What are the phonemes in there?
22:54:40 <pikhq> ;)
22:54:51 <lament> it's exactly a matter of notation
22:54:56 <lament> we use notes to notate it
22:55:07 <lament> sound is what we're notating, ultimately
22:55:11 <lament> music is notation for sound
22:55:16 -!- timotiis has joined.
22:55:20 <pikhq> Then it's imperfect notation.
22:55:22 <lament> (and not the other way around)
22:56:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:56:09 <pikhq> How would one write down, say, me being *exactly* 1 Hz off from a note when singing? (not that I can do that (intentionally) :p)
22:56:38 <lament> pikhq: you use appropriate notation
22:56:45 -!- Judofyr has joined.
22:56:54 <lament> in common practice period music, you being 1 hz off is not important or interesting
22:56:59 <lament> so it doesn't have ways to notate that
22:57:45 <pikhq> I suppose one could also argue that *the alphabet* is a notation for sounds.
22:58:09 <pikhq> (an obviously imperfect one; most human writing systems don't include pitches in the written language)
22:58:36 <lament> whether the alphabet is or isn't a notation for sounds depends on the language
22:58:52 <lament> in any case, it's a notation for _phonemes_
22:58:54 <pikhq> I assume a spoken language.
22:59:00 <lament> which are a notation for sound
22:59:13 <pikhq> Not all human writing systems are a notation for phonemes.
22:59:38 <pikhq> But, anyways, that's not the point.
22:59:52 <pikhq> And I'm not sure what the point *is*.
23:00:12 <lament> which human writing systems are not a notation for phonemes?
23:00:37 <pikhq> Chinese, Japanese kanji. . .
23:01:15 <lament> each chinese character notates one phoneme
23:01:32 <oerjan> *morph*eme
23:01:32 <lament> sorry, one syllable, several phonemes
23:01:46 <pikhq> Japanese kanji have multiple readings.
23:01:54 <oerjan> (maybe not even that)
23:02:09 <ehird> doo pe dooooo
23:02:15 <oerjan> even english has homonyms
23:02:16 <lament> pikhq: sure, but that's not really a problem - english "wind" has several readings too
23:02:32 <ehird> oerjan: they were considered inferior to heteronyms a while back though
23:03:02 <pikhq> Japanese kanji are used for meaning, not reading (usually).
23:03:42 <lament> pikhq: that's true of english words as well.
23:04:37 * pikhq hands lament his Japanese homework
23:04:52 -!- oklopol has quit (Read error: 110 (Connection timed out)).
23:05:09 <pikhq> Tell me that that list of 5 *completely* different readings imply that each character notates one syllable.
23:06:03 <pikhq> (a hint: unless you're dealing with man'yougana, they don't.)
23:08:23 <pikhq> (of course, Japanese deals in mora, not syllables, anyways)
23:14:48 <ehird> 'And with that, the channel died.'
23:15:28 * pikhq nods
23:28:00 <ehird> all irc channels should have a bot which pipes fortune(1) to the channel if it dies for too long
23:28:00 <ehird> :D
23:29:53 <ehird> actually, `fortune -a`
23:30:11 <ehird> err, -o
23:35:11 <pikhq> GregorR: Patch to Egobot?
23:36:16 <GregorR> RodgerTheGreat: Thinkgeek f***'d up the T-shirt!
23:36:23 <GregorR> Erm
23:36:27 <GregorR> s/Thinkgeek/Cafepress/ >_O
23:36:29 <RodgerTheGreat> D:>
23:36:39 <RodgerTheGreat> say it ain't so, gregor!
23:36:43 <ehird> pikhq: I could do that if GregorR would put it up <.<
23:37:08 <GregorR> Dood, EgoBot is F/OSS.
23:37:23 <ehird> I know.
23:37:30 <ehird> But I don't want to run an EgoBot clone.
23:37:33 <ehird> Since the ! would clash.
23:37:35 <RodgerTheGreat> GregorR: so, *how* is the shirt fucked up?
23:37:40 <ehird> And having it duplicate everything is pointless.
23:37:48 <ehird> So I'd only patch it if GregorR would put it up.
23:37:52 <GregorR> RodgerTheGreat: A bit tough to explain, I'll send you a photo once I send it to CafePress.
23:38:07 <RodgerTheGreat> ok
23:38:43 <ehird> actually, if EgoBot is ever rewritten
23:38:45 <ehird> it should be called
23:38:48 <ehird> EGOR
23:38:58 <ehird> EgoBot Generation O Replacement
23:39:02 -!- timotiis has quit (Read error: 110 (Connection timed out)).
23:40:24 <pikhq> Just write the patch and hand it to Gregor.
23:40:32 <pikhq> And I like that name.
23:42:34 <ehird> Oh alright, I will.
23:42:41 <ehird> It's in the file archives, right?
23:46:16 <pikhq> Right.
23:46:43 -!- oerjan has quit ("Good night").
23:47:48 <ehird> Hmm.
23:48:01 <ehird> It occurs to me that I don't know the C function to get the current unix timestamp.
23:48:27 -!- Parma-Quendion has changed nick to Quendus.
23:48:42 <ehird> Oh, wait.
23:48:46 <ehird> time_t is a numeric
23:49:00 <GregorR> RodgerTheGreat: Email addy (to send the picture to)?
23:52:24 <pikhq> Typically a signed int.
23:52:29 <pikhq> (IIRC)
23:52:45 <ehird> pikhq: Mm. And unfortunately, I am going to have to use pthreads to do this in a sane way.
23:52:57 <ehird> And one global. But the code should stay clean.
23:53:36 <ehird> I don't THINK C++ has threads in its stdlib.
23:57:15 <ehird> Hmm.
23:57:21 <ehird> This will count privmsg's to the bot as messages.
23:57:27 <ehird> But I don't think that'll really be a problem.
23:57:58 -!- Zappy has joined.
23:58:20 -!- Zappy has left (?).
23:59:18 <ehird> Hmm.
23:59:23 <ehird> GregorR: EgoBot question..
23:59:33 <ehird> I can use its daemon mechanism to spawn a long-running program, right?
23:59:41 <ehird> And its stdout will be piped to the channel
2008-04-12
00:00:35 <RodgerTheGreat> GregorR: RodgerTheGreat@gmail.com - it's on my website, too
00:00:55 <GregorR> Only the first line, the rest will be piped into the user.
00:02:26 <pikhq> What the *fuck*?
00:02:42 <ehird> Oh yes, that thing.
00:02:46 <pikhq> Vista's driver model involves *doing AES-128 on the video layer*.
00:02:56 <ehird> GregorR: I can use Procs directly, though, can't I
00:03:17 <GregorR> ehird: Shore *shrugs*
00:04:00 * pikhq wonders if they use PGP on all output from the sound drivers, too. :p
00:06:15 -!- kwertii has quit ("bye").
00:06:19 <ehird> GregorR: Hmm. If I have a Proc object, what can I *do* with it? Specifically, I want to slurp all output.
00:06:26 <ehird> I guess I'll just write my own starter. It doesnt' need to be in ps
00:12:07 -!- kwertii has joined.
00:15:07 <ehird> Okay. Coded the thread. Now to figure out pthreads.
00:19:08 <ehird> phew
00:19:10 <ehird> i think that should work
00:19:19 -!- timotiis has joined.
00:20:11 <lament> *Parser> parse parseChord "" "C7b9#11"
00:20:12 <lament> Right (RootedChord C (fromList [0,1,4,6,7,10]))
00:20:14 <lament> <3
00:20:19 <ehird> GregorR: What's more, it's a compiler option!
00:20:22 <ehird> lament: Yaey.
00:20:25 <ehird> err.
00:20:28 <ehird> Compile-time option.
00:20:32 <ehird> -DWITH_FORTUNE to enable
00:20:44 <lament> i love how if it compiles, it works
00:20:56 <lament> (i'm not sure why it compiles though)
00:22:27 <ehird> lament: yes
00:22:46 <ehird> lament: there's even libraries for HTML generation that make invalid HTML a type-error
00:23:00 <ehird> lament: I've always wanted to make one for XML where you can just write some instances corresponding to the schema
00:23:11 * pikhq loves a lot of the HTML renderers out there. . .
00:23:27 <pikhq> And how *trivial* it is to make valid, well-formed HTML that they can't render.
00:23:32 <pikhq> (or even parse)
00:24:00 <ehird> GregorR: I can't compile EgoBot on this machine because it is linux-specific. D:
00:24:04 <ehird> GregorR: Can you try my changes?
00:24:09 <ehird> pikhq: WebKit! WebKit!
00:24:14 <ehird> (It's open source, so you can't complain.)
00:24:24 <pikhq> KHTML doesn't parse it.
00:24:42 <pikhq> I have yet to find a browser that parses this: http://pikhq.nonlogic.org/test.html
00:24:45 <pikhq> It validates, though.
00:24:57 <ehird> KHTML is NOT WebKit.
00:25:10 <pikhq> I know. I'm not feeling like installing WebKit yet.
00:25:19 <pikhq> Lemme wait unto KDE 4.1.
00:25:25 <pikhq> until, even.
00:25:27 <ehird> pikhq: And suprise, it doesn't work. Guess why? *Nobody* uses short closing tags.
00:25:37 <pikhq> But it's valid and well-formed.
00:25:37 <ehird> And -- shock -- rendering engines are designed to be practical.
00:25:53 <ehird> If they were a platonic, standards-supporting ideal they wouldn't render invalid pages.
00:26:11 <pikhq> Some claim to attempt to be that ideal.
00:26:23 <pikhq> While they can't parse test.html, they fail epically.
00:26:31 <pikhq> epicly, even.
00:26:56 <ehird> None claim to be that ideal.
00:27:06 <ehird> No sane one, anyway.
00:27:15 <ehird> The standards suck, anyway.
00:28:06 <ehird> GregorR: No? :(
00:33:02 <ehird> GregorR: Well, I have a patch if you want it
00:33:08 <pikhq> Well, yeah. That SGML part is a real bitch. ;)
00:33:27 <GregorR> ehird: Remind me tomorrow.
00:35:29 <ehird> GregorR: Aww. I can't even test it locally, y'see.
00:35:38 <GregorR> LOSAH
00:47:58 -!- kwertii has quit ("bye").
00:48:12 -!- kwertii has joined.
00:51:20 <ehird> GregorR: I use a non-Linux system. So yeah.
00:51:51 <pikhq> What do you run?
00:52:25 <pikhq> If it's Windows, install Cygwin. If it's OS X, install the development environment from your install discs.
00:53:36 <pikhq> (insofar as I'm aware, Egobot runs on most POSIX targets)
01:00:17 <ehird> pikhq: It does not. cpkt.
01:00:30 <ehird> Relies on linux headers, elf, all that stuff.
01:00:48 <pikhq> GregorR: How dare you?
01:01:09 <ehird> pikhq: He didn't write cpkt.
01:01:09 <pikhq> Do you do the ELF loading yourself or some such?
01:01:12 <pikhq> Oh.
01:01:16 <ehird> He just uses it to trace the syscalls or.. something.
01:01:23 <ehird> It seems to serialize some state or.. actually I don't know what it does.
01:01:24 * pikhq kicks *cpkt* devs instead. :p
01:01:37 <ehird> Err, pikhq, I don't think it could be portable.
01:01:48 <ehird> It does pretty deep magic to lodge in to the process.
01:01:53 <pikhq> Oh.
01:01:59 <pikhq> *Why*?
01:02:07 <pikhq> Surely there's a good reason.
01:02:08 <ehird> pikhq: Because it's the only way to do... whatever it does.
01:02:22 <ehird> pikhq: aha
01:02:22 <ehird> ckpt - process checkpoint library
01:02:22 <ehird> www.cs.wisc.edu/~zandy/ckpt
01:02:22 <ehird> Copyright (c) 2002-2005 Victor C. Zandy zandy@cs.wisc.edu
01:02:25 <ehird> process checkpointing.
01:02:30 <ehird> totally non-portable in every shape or form
01:02:41 <ehird> pikhq: Basically, it can freeze a running process to disk.
01:02:44 <ehird> Then thaw it out again.
01:03:03 <RodgerTheGreat> GregorR: aw, man- that's terrible!
01:03:14 <RodgerTheGreat> how the fuck do they mess it up that badly?
01:03:49 -!- boily has joined.
01:04:57 <pikhq> Jebus.
01:05:08 <pikhq> I can understand why they have to do such deep magic. . .
01:05:16 <pikhq> But why must *Gregor* use it?
01:05:28 <ehird> pikhq: I think to remember all the definitions made in the esolangs.
01:05:30 <ehird> Between runs.
01:05:40 <ehird> Since they are in a variety of languages
01:05:45 <pikhq> Also, I wonder: can User Mode Linux run on OS X?
01:05:50 <ehird> I don't think s
01:05:51 <ehird> o
01:05:53 <pikhq> I remember some guy getting it to work on Cygwin. . .
01:05:55 <ehird> But I have Parallels and QEMU.
01:06:03 <ehird> So it isn't hard to get Linux up.
01:06:10 <RodgerTheGreat> and pikhq: how the FUCK is that supposed to be valid HTML?
01:06:18 <ehird> RodgerTheGreat: it is valid html
01:06:20 <pikhq> RodgerTheGreat: Read up on SGML.
01:06:22 <ehird> the feature is inherited from SGML
01:06:25 <RodgerTheGreat> I call total bullshit
01:06:28 <pikhq> And run it through the W3C validator.
01:06:36 <ehird> RodgerTheGreat: 'i have never heard of this obscure feature' != 'total bullshit'
01:06:49 <ehird> unfortunately a lot of people have that preconception.
01:06:53 <pikhq> It gives 4 or 5 warnings, saying basically "This is valid, but nobody *supports* it."
01:06:58 -!- olsner has joined.
01:07:06 <pikhq> And then hands me a "Valid HTML4" button.
01:07:08 -!- Iskr has quit ("Leaving").
01:07:43 <RodgerTheGreat> even if it *is* a part of the standard, it's ridiculous. It's unreadable and breaks all the preexisting conventions of the format
01:07:57 <pikhq> No it doesn't.
01:08:05 <pikhq> The preexisting conventions of the format *are* SGML.
01:08:08 <ehird> RodgerTheGreat: You are incredibly idealistic if you think that HTML has conventions.
01:08:11 <ehird> Much less reasonable ones.
01:08:15 <pikhq> Here's a hint: that SGML feature predates HTML.
01:08:19 <ehird> HTML is *unbearably* bad.
01:09:22 <RodgerTheGreat> pikhq: then it's cruft and should be deprecated
01:09:40 <ehird> RodgerTheGreat: most of HTML is cruft
01:09:42 <RodgerTheGreat> In fact, I'd interpret the fact that it's unsupported on sane browsers as deprecation
01:09:58 <ehird> there is no such thing as a sane browser. they must be insane to read most of the html out there.
01:10:14 <pikhq> It's explicitly deprecated in HTML 4.01. But, most of HTML 4.01 *is*.
01:11:40 -!- timotiis has quit (Read error: 110 (Connection timed out)).
01:11:59 <RodgerTheGreat> if it's explicitly deprecated, it isn't valid HTML, ergo my original argument stands.
01:12:34 <RodgerTheGreat> anything that was deprecated and still works is a bonus feature, rather than something you can reasonably test for compliance. Your methodology and argument is flawed.
01:12:53 <ehird> [01:12] <RodgerTheGreat> if it's explicitly deprecated, it isn't valid HTML, ergo my original argument stands.
01:12:54 <ehird> wrong
01:13:01 <ehird> deprecated != invalid
01:13:17 <pikhq> By the same notion, K&R function declarations are invalid C.
01:13:30 <pikhq> (in fact, they're deprecated but *required* by the ISO C spec)
01:13:30 <RodgerTheGreat> and for many practical purposes, they are
01:13:43 -!- boily has quit ("Schtroumpf!").
01:13:44 <ehird> RodgerTheGreat: wow
01:13:46 <ehird> what a load of crap
01:13:55 <ehird> 'invalid' is so far apart from 'practical purposes'
01:14:39 <pikhq> BTW, HTML 4.01 itself is considered deprecated. ;)
01:16:08 <ehird> pikhq: Unfortunately. XHTML is far worse.
01:16:35 <pikhq> True.'
01:16:42 <pikhq> It has some things that are nicer. . .
01:16:47 <pikhq> And an assload of things that are worse.
01:17:04 <ehird> 1. Take horrible markup format rooted in history, arcane things and ad-hoc design. 2. Take *generic* markup format that misused in 90% of cases. 3. Stick them together
01:17:16 <ehird> And before you say 'XHTML 2', *please* don't. That thing is god-awful
01:17:28 <ehird> NOW, there is slightly good news
01:17:31 <pikhq> XML *itself* is SGML-based.
01:17:33 <pikhq> ;)
01:17:41 <ehird> HTML 5 *will be better* than HTML 4.01
01:17:48 <ehird> It won't be perfect because it's mostly backwards compatible.
01:17:53 <ehird> But it *is* relatively sane.
01:17:59 <ehird> Especially the nice, short doctype: <!DOCTYPE html>
01:18:05 <ehird> Sure, that's invalid SGML. Who cares?
01:18:20 <pikhq> Basically, they're dropping the SGML base? Whee.
01:18:50 <Slereah> http://www.roesler-ac.de/wolfram/hello.htm#Intercal <- this does not seem correct
01:18:57 <ehird> pikhq: Yeah.
01:19:17 <ehird> Slereah: it's correct in a perverse way
01:19:26 <ehird> Slereah: errors in programs are printed out by the intercal compiler
01:19:30 <ehird> Slereah: at runtime
01:19:38 <Slereah> :O
01:19:40 <ehird> and 'NOT' makes a statement not executed unless explicitly enabled
01:19:44 <ehird> Of course, that is a total cheat.
01:19:56 <Slereah> Yes, but an awesome cheat
01:19:59 <ehird> pikhq: What I think is the minimal HTML 5 document: <!DOCTYPE html><html><p>Hello, world!</p></html>
01:20:21 <pikhq> Hmm. Sane.
01:20:23 <ehird> pikhq: The reason why it is quite decent is twofold:
01:20:28 <pikhq> Requiring container tags? Glee!
01:20:43 <ehird> 1. The W3C didn't get their paws on it until it was almost done
01:20:46 * pikhq shudders at the <p> tag
01:20:51 <ehird> 2. The WHATWG did it before that. The WHATWG are clever.
01:20:52 <pikhq> Well, in traditional HTML.
01:21:05 <ehird> 3. Ian Hixie did lots of work on it because he is in the WHATWG. Ian Hixie is *very* clever, and sane.
01:21:11 <ehird> So threefold!
01:21:17 <ehird> pikhq: You might be able to drop the <p>s.
01:21:33 <ehird> But <p> isn't too bad.
01:21:39 <ehird> Semantically it makes sense.
01:21:49 <ehird> And having some text in the root and others in elements is a bad weird.
01:21:50 <ehird> But meh.
01:22:41 <pikhq> My problem with <p> is how it acts in HTML 4.01 and below, actually.
01:22:48 <pikhq> Specifically, it doesn't need to be closed.
01:22:52 <Slereah> http://www.roesler-ac.de/wolfram/hello.htm#Pocket-Calculator
01:22:57 <ehird> pikhq: Ah, yes. That thing.
01:23:03 <ehird> I'm not sure if that's still in HTML 5.
01:23:04 <Slereah> With this technique, you cal also write "HELLO BOOB"
01:23:17 <ehird> HTML 5 is certainly lenient.
01:23:28 <ehird> So it retains a lot of HTML's quirks.
01:23:35 <ehird> But on the *overall*, it's sane.
01:53:40 -!- ehird has quit ("This computer has gone to sleep").
04:01:01 -!- Judofyr_ has joined.
04:01:01 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
04:04:01 -!- Deformative has quit (Remote closed the connection).
04:05:01 -!- Deformative has joined.
04:05:37 -!- Deformative has quit (Remote closed the connection).
04:06:16 -!- Deformative has joined.
05:11:04 -!- RodgerTheGreat has quit.
05:11:11 -!- RodgerTheGreat has joined.
05:11:25 -!- RodgerTheGreat has quit (Client Quit).
05:53:35 -!- cmeme has quit ("Client terminated by server").
05:53:46 -!- cmeme has joined.
05:57:37 -!- sebbu2 has joined.
06:15:05 -!- sebbu has quit (Read error: 110 (Connection timed out)).
06:40:14 -!- Sgeo has quit ("Ex-Chat").
07:35:33 -!- oklopol has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:03:47 -!- adu has joined.
08:33:03 -!- kwertii_ has joined.
08:38:41 -!- kwertii_ has quit ("bye").
08:49:05 -!- kwertii has quit (Read error: 113 (No route to host)).
09:08:18 -!- oklopol has quit (Read error: 113 (No route to host)).
09:14:21 -!- oerjan has joined.
09:17:39 -!- Iskr has joined.
09:36:24 -!- oklopol has joined.
09:36:30 -!- oklopol has quit (Remote closed the connection).
09:36:42 -!- oklopol has joined.
10:08:12 -!- adu has quit ("Bye").
10:15:53 -!- oerjan has quit ("leaving").
11:11:50 -!- oklofok has joined.
11:12:43 -!- oklopol has quit (Read error: 113 (No route to host)).
11:21:58 -!- Slereah has quit (Read error: 110 (Connection timed out)).
11:23:43 -!- Slereah has joined.
11:33:08 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
11:33:24 -!- oklopol has joined.
11:42:43 -!- timotiis has joined.
13:21:07 -!- pikhq has quit (Remote closed the connection).
13:21:22 -!- pikhq has joined.
13:48:21 -!- Judofyr has joined.
13:48:21 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
14:07:00 -!- oklopol has quit (Read error: 113 (No route to host)).
15:01:01 -!- oklopol has joined.
15:12:10 -!- ehird has joined.
15:38:04 <SimonRC> logo FAIL: http://www.harveyshopfitters.co.uk/images/menu_01.gif
15:40:15 <oklopol> ehird: that cons cell you created, can i include that with your nick/name in my oklotalk report? would be cool to have something like "user experiences" :D
15:40:57 <oklopol> more impressive if *others* can do something with it than if i can.
15:42:08 <ehird> oklopol: brb, with you in a sec
15:42:09 <ehird> and yes
15:42:13 <ehird> i wanna code some more though too
15:42:14 <ehird> :D
15:42:26 <ehird> but for the record, if you didn't know, my name is elliott hird
15:42:32 <ehird> and please don't get the wrong number of ls and ts
15:42:34 <oklopol> :D
15:42:41 <oklopol> hey, i've always known it.
15:43:25 <oklopol> would be awesome if you did something, i'm trying to get people to write me an stdlib :)
15:43:32 <oklopol> not many are that interested to :O
15:43:59 <oklopol> it's not that i'm too lazy to do it, just that it's a bit useless if i do it
15:44:38 <oklopol> because of course i can do it trivially... well, you too, but i'm also trying to get normal people to write something with it.
15:44:53 <oklopol> normal coders that is
15:44:54 <AnMaster> SimonRC, hm?
15:45:11 <AnMaster> SimonRC, yes I read it has "shoplifter" first time
15:45:15 <oklopol> naturally i consider #eso guys a few grades up :D
15:45:34 <oklopol> AnMaster: that's not the point, although i did too
15:45:55 <AnMaster> what's the point then?
15:46:03 <oklopol> :|
15:46:28 <oklopol> logo
15:46:35 <oklopol> see people in it.
15:46:38 <AnMaster> it's a boring logo yes, but boring logos with symbols meaning nothing is rather common
15:47:10 <AnMaster> err what?
15:47:26 <AnMaster> yeah could be a person using some kind of tool
15:47:30 <oklopol> it's doggie style, receiver laying down
15:47:36 <oklopol> *lying
15:47:36 <AnMaster> ...
15:47:37 <oklopol> err
15:47:42 <oklopol> english is too hard
15:47:44 <AnMaster> oklopol, you know this qualifies as "inkblot"....
15:47:51 <oklopol> no it doesn't
15:48:14 <AnMaster> pervertness then?
15:48:21 <AnMaster> or at least dirty minded
15:49:24 <oklopol> well, you know, i'm male
15:50:41 <AnMaster> so am I, and?
15:50:59 <AnMaster> and I don't think about such things all the time
15:51:40 -!- timotiis has quit (Read error: 110 (Connection timed out)).
15:53:08 <oklopol> well i do admit i'm a sick pervert, but i'm 100% sure that logo can only be conceived as a sex act
15:54:12 <AnMaster> oklopol, to me it looks like a person using a "slipmaskin" don't know English word for it
15:54:40 <SimonRC> oklopol: looks like front-to-front to me
15:55:07 <AnMaster> a handheld device that you put a paper (that got sand glued to it) on. then you use the device to make wood smooth
15:55:11 <AnMaster> what's the English word?
15:55:12 <oklopol> ironing board or smth?
15:55:20 <SimonRC> no
15:55:23 <SimonRC> sander?>
15:55:33 <AnMaster> <oklopol> ironing board or smth? <-- that would be making clothes flat
15:55:45 <oklopol> yarr...
15:55:51 <AnMaster> if you confuse them your clothes would looks very bad
15:55:54 <oklopol> i didn't know what slip was
15:55:59 <AnMaster> very important to not confuse them
15:56:08 <AnMaster> oklopol, well slip in Swedish can be other stuff too
15:56:13 <AnMaster> SimonRC, possibly
15:56:31 <AnMaster> oklopol, something to do with boats I think the other meaning is
15:56:38 <AnMaster> (I'm no boat expert)
15:57:23 <AnMaster> SimonRC, anyway google images to the rescue: http://www.fynda.se/bilder/londa_slipmaskin_ld1211.jpg
15:57:52 <oklopol> anyway, SimonRC: well, the hands seem to be on the receiver, so i would've said doggie
15:57:59 <oklopol> but stick figures, so go figure
15:58:50 <oklopol> i'm pretty sure sander was right
15:58:55 <oklopol> hmm
15:59:02 <oklopol> or is that like a hone or smth
15:59:02 <AnMaster> why not mail the company and ask which one it is
15:59:07 <AnMaster> I'm sure they would *love* it
15:59:10 * AnMaster runs
15:59:12 <oklopol> i don't really know this stuff even in finnish
16:00:42 <AnMaster> oklopol, well slipmaskin can be for other materials than wood, for example metal
16:00:54 <AnMaster> but it seems that "sander" is correct
16:01:19 <ehird> that is definately a sexual act.
16:01:19 <ehird> :p
16:01:26 <ehird> anyhoo
16:01:39 <oklopol> definitely
16:01:41 <ehird> oklopol: soo i'll write some more okocode if you put otobot in here, or give me an oklotalk interpreter
16:01:45 <oklopol> hehe
16:01:53 <oklopol> i'll put it up :-)
16:01:56 <ehird> also, if you give me an oklotalk interpreter, i'll even write a special testimonial
16:02:10 <ehird> to put in the Report on the Algorithmic Programming Language Oklotalk
16:02:15 <oklopol> haha
16:02:22 <oklopol> i can give you the compiled version.
16:02:41 <ehird> oklopol: i'm on a mac
16:02:45 <ehird> so that would be thoroughly unhelpful
16:03:16 <oklopol> compiled into pyc, man
16:03:48 <ehird> meh
16:03:50 <ehird> endianness
16:03:52 <ehird> or something
16:03:54 <ehird> :P
16:04:07 <ehird> oklopol: i'll add an awesome REPL
16:04:09 <ehird> and send you a patch
16:04:09 <ehird> :D
16:04:13 <ehird> oh
16:04:16 <ehird> and a debugger
16:04:25 <ehird> and maybe add continuations
16:04:33 <AnMaster> oklopol, I want to see it too so I can see how it works
16:04:38 <AnMaster> then I may help writing some code
16:04:57 <ehird> AnMaster: oklopol's python code uses 1-2 letter variables names and has no comments
16:04:58 <ehird> and little whitespace
16:05:03 <ehird> it is only for the hardened obfuscated python editor
16:05:09 <oklopol> there is an awesome repl already
16:05:17 <oklopol> well not awesome, but somewhat working
16:05:18 <AnMaster> "hardened obfuscated python editor"?
16:05:38 <ehird> AnMaster: you need to be really good at editing dense, obfuscated python
16:05:51 <AnMaster> well count me out then
16:05:51 <ehird> oklopol: i will add history that is stored across sesssions, completion, brace matching..
16:05:57 <ehird> :D
16:06:00 <oklopol> AnMaster: (hardened ((obfuscated python) editor)) for the parse tree
16:06:06 <ehird> and the debugger and continuation stuff, of course
16:06:11 <AnMaster> oklopol, I suggest you make your code more readable if what ehird said is true
16:06:29 <ehird> AnMaster: he likes it that way
16:06:30 <ehird> i do too
16:06:43 <AnMaster> oklopol, try something like literate programming, just for a change
16:06:53 <oklopol> it's hard to read code with comments imo :)
16:06:54 <ehird> eww
16:06:56 <ehird> literate programming
16:06:57 <AnMaster> (though IMO that is going too far in the other direction)
16:07:06 <oklopol> and the shorter the easier to read :)
16:07:06 <AnMaster> but maybe they will cancel out?
16:07:08 <ehird> oklopol: yeah, comments are mostly useless.
16:07:10 <ehird> but..
16:07:12 <ehird> a few of them is alright
16:07:18 <AnMaster> and you will end up with something usable
16:07:24 <ehird> like, instead of # loop through all elements in the array and xor them into the checksum, resulting in a floob
16:07:25 <ehird> do
16:07:25 <oklopol> well, good comments that just specify stuff like interfaces, can be very nice
16:07:31 <ehird> comments above the function
16:07:31 <oklopol> so you can just take a quick glance
16:07:34 <ehird> about what it does
16:07:36 <ehird> not how
16:07:37 <ehird> like
16:07:44 <ehird> # provides a checksum used as a floob
16:07:53 <ehird> but most of the time good code is self-explanatory
16:07:57 <ehird> comments can be misleading
16:08:06 <AnMaster> good variable names too
16:08:08 <ehird> they make it easier for someone who doesn't *really* understand the source code to try and edit it
16:08:11 <ehird> often messing up things subtly
16:08:16 <oklopol> well i have a few comments, but they are mostly useful for myself :P
16:08:22 <ehird> also, comments are very hard to keep up to date
16:08:35 <oklopol> indeed.
16:08:36 <AnMaster> ehird, I agree you shouldn't overdo comments
16:09:01 <AnMaster> but you could use good variable and function names
16:09:09 <oklopol> ehird: i might let you play with my implementation once i've submitted it
16:09:12 <ehird> AnMaster: there's a problem with all that: writing oko-python is fun
16:09:26 <AnMaster> ehird, ie, single char ones like i and j should be used for looping nothing else
16:09:30 <ehird> fuck readability and maintainability, it's fun
16:09:35 <SimonRC> dense code helps you get more on the screen
16:09:40 <AnMaster> well x and y are ok if you are doing co-ordinates
16:09:55 <AnMaster> SimonRC, agreed, but good variable names is still important
16:09:59 <AnMaster> very important
16:10:08 <ehird> AnMaster: you like to stare at code like a work of art
16:10:12 <SimonRC> there is a definite maintainability drop as code goes beyond one screenful
16:10:15 <ehird> i like to have fun when writing it
16:10:21 <ehird> SimonRC++
16:10:26 <AnMaster> SimonRC, yes that is why you split functions
16:10:31 <ehird> oklopol: well, ok, give me the pyc
16:10:32 <AnMaster> and mark them as "inline"
16:10:36 <SimonRC> no
16:10:46 <ehird> AnMaster: that is not the point
16:10:48 <AnMaster> making the code modular is good
16:10:57 <SimonRC> I meant there is a definite mainatainability drop as the length of the program goes over one screenful
16:11:05 <ehird> exactly
16:11:11 <AnMaster> ehird, still how much do you save writing "int a" instead of "int sum"
16:11:12 <ehird> instead of making the current code easy to understand
16:11:19 <ehird> think of a shorter, more self-describing way to express it
16:11:22 <ehird> a far better use of time
16:11:28 <SimonRC> macros, lots of macros
16:11:31 <AnMaster> ehird, as a variable name
16:11:36 <ehird> AnMaster: well, you use a language that doesn't require stupidly verbose type declarations
16:11:39 <ehird> so that becomes ''
16:11:41 <ehird> and you just use a.
16:11:47 <ehird> AnMaster: however, in the case of C
16:11:52 <ehird> AnMaster: please read K&R
16:12:00 <AnMaster> ehird, even then calling the variable sum is better
16:12:02 <ehird> their style is *exemplary* C
16:12:08 <SimonRC> one- and two- letter variable names help you get most functions on to 1 or 2 lines
16:12:10 <ehird> and is very short, concise, uses mostly 1-char variable names,
16:12:12 <AnMaster> SimonRC, macors do have their place yes, but again it is easy to overdo it
16:12:17 <ehird> and tries to keep things about one screenful
16:12:21 <ehird> AnMaster: and how can you argue with K&R?
16:12:25 <oklopol> this is just imo, but usually, if a variable can have a very simple name without being misleading, you are doing a conceptually trivial thing much too verbosely... but i'm prolly wrong, no need to tell me that.
16:12:34 <ehird> oklopol: yes!
16:12:37 <ehird> you're right
16:12:38 <AnMaster> ehird, because it is not available as a free pdf
16:12:39 <oklopol> you agree?
16:12:42 <AnMaster> afaik
16:12:42 <oklopol> niec.
16:12:55 <ehird> AnMaster: HAHAHAHAHA
16:13:00 <ehird> that is the funniest thing i've heard all day
16:13:07 <AnMaster> ehird, so I haven't read it
16:13:09 <SimonRC> also, document the datastructures, not the functions
16:13:15 <AnMaster> SimonRC, yes very true
16:13:17 <SimonRC> the former is rather more helpful
16:13:29 <ehird> I bet AnMaster would complain about K&Rs style if he read it.
16:13:37 <ehird> 'how can they make their code so OBFUSCATED'
16:13:42 <ehird> 'these people's C is horrible'
16:13:45 <AnMaster> SimonRC, however something like a one line comment above the prototype in the header file is useful
16:13:55 <SimonRC> for example, that prototype J interpreter is easy to read once you know what the datastructures are
16:13:57 <AnMaster> SimonRC, and if a library for others to use: much more
16:14:02 <AnMaster> on the public funtions
16:14:08 <SimonRC> AnMaster: yes, and probably yes
16:14:13 <ehird> SimonRC: yes, that prototype J interpreter is actually quite simple when you read it
16:14:39 <ehird> the immediate shock reaction is very telling of the bad assumptions programmers make
16:14:51 <AnMaster> SimonRC, would you like the man page for fopen to say: "opens a file, read source to see what the parameters are for and what the valid values for the mode parameter is"
16:14:53 <ehird> if you understand some code immediately because it has tons of comments and all that
16:14:56 <ehird> you probably understand it wrong
16:14:59 <AnMaster> that question is to ehird too
16:14:59 <ehird> and editing it is dangerous
16:15:04 <ehird> with a more concise style, you learn the code
16:15:10 <ehird> and then you learn it PROPERLY, and editing is easier
16:15:28 <ehird> AnMaster: that is a totally irrelevant question
16:15:37 <AnMaster> ehird, oh? it is code documentation
16:15:41 <AnMaster> in a way
16:15:53 <ehird> AnMaster: totally stupid attempt to clutch at straws
16:15:55 <ehird> :|
16:16:04 <AnMaster> ehird, how do you mean?
16:16:09 <SimonRC> hmm
16:16:13 <ehird> AnMaster: run this for me
16:16:15 <ehird> 'man fopen|wc -l'
16:16:35 <AnMaster> 124 on freebsd
16:16:46 <ehird> ditto here. do you know how long the gnu version is?
16:16:53 <ehird> it's god-awful
16:16:57 <AnMaster> ehird, yes, 130 lines
16:17:03 <AnMaster> so 6 more
16:17:04 <ehird> AnMaster: that must be an old version
16:17:05 <AnMaster> I checked
16:17:12 <ehird> but anyway, the gnu version *tells you less*
16:17:15 <ehird> the bsd writing style is better
16:17:21 <ehird> more concise, and more information packed
16:17:28 <AnMaster> ehird, I agree freebsd got better man pages
16:17:29 <ehird> 124 is a bit excessive, it's got bigger over the years
16:17:30 <ehird> BUT!
16:17:33 <ehird> if you read the manpage
16:17:41 <ehird> a LOT of it is stuff to do with standards compliance
16:17:45 <ehird> and historical stuff
16:17:50 <ehird> when writing a new app, normally that doesn't apply
16:17:53 <AnMaster> ehird, yes I fully agree about comments
16:18:08 <ehird> SO, if fopen was new and written today
16:18:12 <AnMaster> ehird, if you look in cfunge source you won't find a lot of comments, mostly something like "this function does foo"
16:18:14 <AnMaster> or such
16:18:15 <ehird> a good manpage would be much shorter
16:18:22 <AnMaster> + the gpl header in each file
16:18:24 <AnMaster> that is about all
16:18:31 <ehird> AnMaster: license headers in each file is so horrid
16:18:32 <ehird> i hate it
16:18:34 <ehird> so redundant
16:18:37 <ehird> but
16:18:41 <ehird> 'this function does foo'
16:18:42 <ehird> i suggest
16:18:42 <ehird> 'foo'
16:18:44 <ehird> instead of
16:18:52 <ehird> 'This function calculates the checksum of s'
16:18:53 <ehird> try
16:18:56 <ehird> 'Calculate the checksum of s'
16:19:06 <AnMaster> ehird, you said a lot in fopen man page was about standard
16:19:07 <AnMaster> wrong
16:19:21 <AnMaster> 4 lines are
16:19:21 <ehird> AnMaster: looks like it to me
16:19:24 <ehird> oklopol: .pyc plz?
16:19:29 <ehird> you can dcc it
16:19:33 <oklopol> oh righ.
16:19:34 <oklopol> t
16:19:35 <AnMaster> ehird, however man fopen is about three functions
16:19:42 <AnMaster> FOPEN(3) FreeBSD Library Functions Manual FOPEN(3)
16:19:42 <AnMaster> NAME
16:19:42 <AnMaster> fopen, fdopen, freopen -- stream open functions
16:19:44 <AnMaster> they share man page
16:19:52 <ehird> AnMaster: yes, I don't like man(1) anyway
16:19:54 <oklopol> you also get the spec wannabe, so comments on that too
16:20:00 <AnMaster> ehird, want info *runs*
16:20:01 <ehird> for documenting functions i prefer tools that extract stuff out of the source
16:20:05 <ehird> basically
16:20:11 <ehird> documentation should be as close as possible to the thing it documents
16:20:14 <AnMaster> ehird, well gnu info is worse
16:20:14 <SimonRC> yup
16:20:17 <ehird> otherwise it has a far higher chance of being irrelevant
16:20:18 <ehird> or out of date
16:20:23 <SimonRC> ehird: yup * 2
16:20:34 <AnMaster> ehird, well you could use something like doxygen then
16:20:36 <ehird> SimonRC: :)
16:20:41 <ehird> AnMaster: doxygen's a bad exampl
16:20:41 <ehird> e
16:20:42 <AnMaster> but if you use that, I just say eww
16:20:43 <SimonRC> Sun got that mostly right, with JavaDoc
16:20:46 <AnMaster> it's TOO verbose
16:20:50 <ehird> yes, doxygen sucks
16:20:56 <oklopol> ehird: cli is the repl
16:20:58 <AnMaster> good idea, bad implementation
16:21:01 <ehird> but the idea is alright
16:21:02 <oklopol> it seems it's not coming
16:21:06 <AnMaster> exactly
16:21:07 <ehird> oklopol: ?
16:21:13 <ehird> okay
16:21:13 <oklopol> hmm
16:21:15 <ehird> upload it somewhere
16:21:19 <oklopol> perhaps i'm not identified
16:21:19 <ehird> and send the url to me
16:21:21 <ehird> ah
16:21:23 <ehird> i'm not
16:21:26 <ehird> now i am
16:21:35 <AnMaster> ehird, auto generated man pages then?
16:21:47 <AnMaster> ehird, there is a gnu tool that can auto generate a man page from --help output
16:21:52 <AnMaster> help2man I think the name is
16:22:07 <SimonRC> Forth traditionally has one "screen" of pure comments for each "screen" of code.
16:22:15 <AnMaster> you need to give it some options to make sure it doesn't add the "see info page for more" crap
16:22:22 <AnMaster> but it isn't too bad with the right options
16:22:35 <ehird> oklopol: trying to figure out how to accept that
16:22:36 <ehird> :--)
16:22:43 <SimonRC> in text files, just have half of the line for comment and half for code I suppose
16:22:45 <oklopol> heh
16:23:04 <AnMaster> SimonRC, nah, too much comments, usually I need way less
16:23:05 <ehird> I really need to get a place to put my thoughts on code
16:23:16 <ehird> then i can point them to it
16:23:20 <ehird> instead of wording it badly on irc
16:23:31 <AnMaster> however: the more obfuscated the code, the more comments needed
16:23:38 <AnMaster> so it is better to give usable variable names
16:23:50 <oklopol> ehird: cli.pyc is a repl, and if you want to do something with context, oklotalk.pyc has a Runner class, which can .run() code, and stores context... and oklotalk.run() runs code
16:24:06 <AnMaster> oklopol, what is a "repl"?
16:24:11 <ehird> AnMaster: read/eval/print/loop
16:24:12 <oklopol> read-eval-print-loop
16:24:14 <AnMaster> ah
16:24:16 <AnMaster> right
16:24:20 <oklopol> damn ehird and his divine typing skills
16:24:27 <ehird> in concatenative languages you can express it almost exactly like that
16:24:37 <ehird> DEFINE loop = read eval print loop.
16:24:45 <AnMaster> mhm
16:24:54 <ehird> (loop (print (eval (read)))), is, of course, ridiculous
16:24:55 <ehird> :-)
16:25:12 <AnMaster> eh?
16:25:26 <AnMaster> isn't that the same in "lispy" syntax?
16:25:55 <ehird> yes
16:25:55 <oklopol> sexps
16:26:00 <ehird> its totally backwards
16:26:02 <ehird> :)
16:26:41 <oklopol> in concisative languages, you can write it as readevalprintloop
16:26:51 <oklopol> cise does this easily
16:26:57 <oklopol> it owns so bad
16:27:01 <oklopol> i gotta get on it soon
16:27:08 <oklopol> hmm
16:27:08 <ehird> oklopol: or rather - 'in ambigious languages'
16:27:09 <oklopol> oh, right
16:27:14 <oklopol> the send failed
16:27:14 <ehird> specifically, parsing cise is turing complete
16:27:21 <SimonRC> hehehe
16:27:22 <ehird> you need to know the definitions to parse it properly
16:27:23 <SimonRC> lol
16:27:25 -!- jix has joined.
16:27:29 <oklopol> ehird: no
16:27:31 <ehird> oklopol: yes
16:27:35 <oklopol> no.
16:27:40 <ehird> 'readevalprintloop' could be 're adev alpri ntlo op'
16:27:58 <oklopol> the magic is that you need to have those defined already.
16:28:20 <ehird> yes, oklopol
16:28:23 <oklopol> you need to have explicit tokenization somewhere in file
16:28:24 <ehird> so it is decided at runtime
16:28:26 <ehird> oh
16:28:28 <ehird> i see
16:28:32 <ehird> so if i use stuff from a library
16:28:34 <ehird> i have to specify which ones
16:28:37 <ehird> so it can parse it right
16:28:40 <ehird> won't that be verbose?
16:29:10 <oklopol> specify which ones?
16:29:18 <ehird> oklopol: imagine this
16:29:25 <ehird> 'import foolib; readevalprintloop'
16:29:31 <ehird> foolib could have 're', 'adev' etc
16:29:36 <ehird> you would have to scan foolib, i guses
16:29:37 <ehird> *guess
16:30:04 <oklopol> well yes, but i do not have all parsing rules done yet.
16:30:19 <oklopol> all i know is i'll choose something that makes sense
16:30:42 <oklopol> cise isn't at all ready yet
16:30:55 <oklopol> hmm
16:30:59 <oklopol> i'll up the interp btw
16:36:06 <oklopol> ehird: ping
16:36:09 <oklopol> ehird: pingu
16:41:14 <ehird> back
16:41:24 <ehird> downloading
16:41:32 <oklopol> okies
16:41:54 <ehird> oklopol: i guess now i'll decompile it
16:41:54 <ehird> :D
16:41:59 <oklopol> :D
16:42:12 <oklopol> that wouldn't be very fair, now would it
16:42:19 <ehird> it wouldn't be readable for one thing
16:42:35 <oklopol> python bytecode would be fun to learn
16:42:42 <ehird> The only other documented tester of Oklotalk-- is Elliott hird, who implemented a synthetic lisp style cons cell in pure Oklotalk. This was done based on solely the rational number example, implying the language can be picked up in an instance given a basic knowledge of the concepts involved.
16:42:43 <ehird> :D
16:42:47 <oklopol> it's very high-level, i'm prettu sure you could
16:42:54 <oklopol> :D
16:43:02 <oklopol> well didn't you pretty much do that?
16:43:15 <oklopol> or did i explain much :D
16:43:26 <ehird> yes
16:43:27 <ehird> i did
16:43:27 <ehird> :p
16:43:30 <oklopol> yarr
16:43:39 <oklopol> Hird
16:43:44 <oklopol> i *did* fail your name
16:43:48 <ehird> haha
16:43:51 <ehird> credit me as 'ehird'
16:43:57 <ehird> it's 1337++
16:44:08 <ehird> To be exact, also integers, strings and lists are things, but "thing" refers to user-created things (the "{...}" ones) in this document. Atoms aren't, in Oklotalk--, due to their special call behavior.
16:44:22 <ehird> things are things except when they're not
16:44:23 <oklopol> that's true for this version
16:44:24 <ehird> and you can have things
16:44:27 <ehird> which are not like the other things
16:44:29 <oklopol> :D
16:44:57 <oklopol> i put alot of thought into finding a good name for 'em :-)
16:45:05 <ehird> oklopol: how about 'responder'
16:45:09 <ehird> :D
16:45:12 <oklopol> haha :d
16:45:13 <oklopol> :D
16:45:16 <ehird> for Oklotalk, of course.
16:45:20 <ehird> oklotalk-- is set in stone too much :P
16:45:36 <ehird> oklopol: oh and i came up with a little 'syntaxful' oklotalk-- variation
16:45:42 <oklopol> do tell
16:45:42 <ehird> gonna rewrite my cons cell with it
16:46:07 <ehird> oklopol: hey, i just noticed something
16:46:11 <ehird> oklotalk doesn't need comments
16:46:13 <ehird> just use
16:46:13 <ehird> "strings"
16:47:36 <ehird> oklopol: http://pb.vjn.fi/p641631565.txt
16:47:37 <oklopol> yes.
16:47:42 <ehird> i have many more ideas for the syntax
16:47:49 <ehird> but that's just adding one or two niceties
16:47:51 <ehird> i like it
16:48:02 <oklopol> well, the thing is, "comments" are in fact just another kind of string.
16:48:11 <ehird> oklopol: well yeah
16:48:14 <ehird> but anyhoo
16:48:16 <ehird> my example
16:48:16 <ehird> :D
16:48:19 <oklopol> this is actual oklotalk ofc
16:48:39 <oklopol> yarr i thought of that too, acttually
16:48:41 <oklopol> actually
16:48:55 <oklopol> might be nice
16:49:12 <ehird> oklopol: yeah
16:49:14 <ehird> basically
16:49:20 <ehird> it's just adding infix stuff
16:49:21 <ehird> but
16:49:25 <ehird> the thing that makes it special is my indentation style
16:49:32 <ehird> try and read this
16:49:32 <ehird> (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
16:49:35 <ehird> even if you add newlines
16:49:36 <oklopol> well i meant the indentation actually.
16:49:37 <ehird> it's still hard to read
16:49:44 <ehird> but my style combined with the indentaiton
16:49:50 <ehird> makes it nice and trivial
16:49:58 <oklopol> well i read it quite easily, but indeed, some might not
16:50:12 <oklopol> yarr, i meant i thought of *the indentation style*
16:50:17 <ehird> yeah
16:50:17 <ehird> :)
16:50:29 <oklopol> i assumed infix was just automatic because... well, it usually is
16:50:33 <oklopol> i mean
16:50:37 <oklopol> for single statements
16:50:50 <oklopol> i'm also pondering whether i should add precedence to oklotalk, still
16:51:54 <ehird> oklopol: you should only add precedence when you write programs
16:51:58 <ehird> and see where parens crop up
16:52:00 <ehird> parens are evil
16:52:06 <ehird> oklopol: actually
16:52:11 <ehird> i've always wanted to do a language where
16:52:13 <ehird> 2*3 + 4
16:52:14 <ehird> and
16:52:17 <ehird> 2 * 3+4
16:52:19 <oklopol> graphica!
16:52:20 <ehird> parse like you would expect
16:52:23 <ehird> :D
16:52:26 <oklopol> i've come up with that too :)
16:52:38 <AnMaster> <ehird> yes
16:52:38 <AnMaster> <oklopol> sexps
16:52:38 <AnMaster> <ehird> its totally backwards
16:52:43 <ehird> oklopol: but what about multiple spaces
16:52:44 <AnMaster> well xml is worse
16:52:50 <ehird> 2 * 3+4 / 2 * 3+4
16:52:52 <oklopol> ehird: well, graphica isn't exactly that
16:52:56 <ehird> totally epical
16:52:57 <AnMaster> S-Expressions > xml
16:52:59 <ehird> yes, epical
16:53:02 <oklopol> is't sexps + infix if no spaces
16:53:09 <ehird> AnMaster: no the repl is backawrds
16:53:11 <oklopol> but, same basic idea
16:53:14 <ehird> *backwards
16:53:15 <oklopol> *it's
16:53:24 <AnMaster> ehird, I prefer RPN too
16:53:28 <AnMaster> ;P
16:53:36 <ehird> AnMaster: i just like concatenative languages
16:53:36 <oklopol> ...rpn? :O
16:53:39 <ehird> not just for the RPN
16:53:42 <ehird> oklopol: okorpn
16:54:02 <AnMaster> befunge is more or less RPN
16:54:02 <ehird> {$f [$pb :] ->; ...} = cons
16:54:02 <ehird> heh
16:54:08 <ehird> AnMaster: but not concatenative
16:54:20 <AnMaster> how do you push 20 on the stack? a2* would work in funge98
16:54:37 <oklopol> AnMaster: do you know concatenativity?
16:55:11 <AnMaster> oklopol, I know the word and I know forth is such a language
16:55:15 <ehird> concatenativity is RPN jesus
16:55:18 <AnMaster> but not the details indeed
16:55:19 <oklopol> the idea is that if you're point-free (meaning no variables -> no scope), you can just combine functions by combining their sources
16:55:20 <ehird> AnMaster: forth isn't concatenative
16:55:22 <ehird> really
16:55:23 <AnMaster> hm
16:55:26 <ehird> but here is the definition
16:55:33 <oklopol> i mean
16:55:34 <ehird> in applicative languages, the invisible space operator is application
16:55:35 <ehird> foo bar
16:55:36 <ehird> is foo(bar)
16:55:38 <oklopol> concatenating their sources
16:55:44 <ehird> in concatenative languages, the invisible space operator is composition
16:55:45 <AnMaster> ehird, yes right
16:55:45 <ehird> foo bar
16:55:46 <ehird> is foo . bar
16:55:48 <ehird> well
16:55:52 <ehird> pretty much
16:55:52 <AnMaster> means bash is a applicative language
16:55:55 <ehird> err
16:55:58 <ehird> no it isn't
16:56:01 <ehird> oh
16:56:01 <ehird> yes
16:56:02 <ehird> kind of
16:56:07 <AnMaster> myfunction argument
16:56:07 <ehird> a weird kind of applicative languages
16:56:08 <ehird> :-)
16:56:09 <ehird> but
16:56:14 <ehird> the cool thing about concatenative languages
16:56:18 <ehird> is that because space = composition
16:56:26 <ehird> putting two valid programs together is their composition
16:56:28 <AnMaster> so what is foo . bar
16:56:28 <AnMaster> then
16:56:34 <AnMaster> in C syntax
16:56:37 <ehird> AnMaster: foo . bar is \x -> bar (foo x)
16:56:40 <ehird> you can't express it in c
16:56:42 <ehird> it doesn't have closurse
16:56:51 <AnMaster> ehird, well then you can't express it so I get it :P
16:56:52 <ehird> well, actually that's bar . foo
16:56:58 <ehird> but concatenative languages use it like that
16:57:02 <ehird> AnMaster: basically
16:57:07 <ehird> in 'foo . bar'
16:57:10 <ehird> is a function:
16:57:13 <AnMaster> hm
16:57:16 <ehird> (x) { return foo(bar(x));}
16:57:24 <AnMaster> ok
16:57:24 <ehird> in concatenative languages, 'foo bar' is 'bar . foo'
16:57:29 <ehird> and
16:57:30 <ehird> '2'
16:57:33 <ehird> is a function pushing 2
16:57:40 <ehird> then you have [...] to make functions
16:57:40 <ehird> so
16:57:43 <ehird> 2 3 +
16:57:44 <ehird> is
16:57:51 <ehird> (x) { return +(3(2(x))); }
16:57:57 <ehird> and the initial x passed to the program
16:57:58 <ehird> is the empty stack
16:58:01 <AnMaster> and what does that evalute to?
16:58:02 <ehird> so that program pushes 2
16:58:06 <ehird> wel
16:58:08 <ehird> 2(x)
16:58:12 <ehird> is x+[2]
16:58:17 <AnMaster> assuming 2 is a function
16:58:22 <ehird> so, that makes a stack like x but with 2 added to it
16:58:25 <ehird> then passes that to 3
16:58:28 <ehird> then passes that to +
16:58:31 <AnMaster> ok.
16:58:33 <ehird> which adds the top two avlues together
16:58:34 <ehird> now
16:58:36 <ehird> when you call a function
16:58:38 <ehird> it gets the current stack
16:58:41 <ehird> i.e. 'x' gets it
16:58:42 <ehird> but
16:58:44 <ehird> at the start of the program
16:58:47 <ehird> an empty stack is passed
16:58:54 <AnMaster> ok
16:58:57 <ehird> [...] is an anonymous function
16:59:02 <AnMaster> so all it does is stack operations?
16:59:03 <ehird> '[...] i' is '...'
16:59:10 <ehird> AnMaster: kind of, but stack is an implementation detail
16:59:39 <AnMaster> can't see the point of it though really
17:00:11 <ehird> AnMaster: what's the point of anything really
17:00:16 <ehird> it's a paradigm
17:00:19 <ehird> a very interesting one
17:00:22 <AnMaster> ok
17:00:28 <AnMaster> why is it useful
17:00:40 <AnMaster> why is it better than say functional programming
17:00:41 <ehird> AnMaster: the same way any paradigm is useful over any other
17:01:01 <AnMaster> ehird, like?
17:01:35 <AnMaster> ehird, and what existing languages are concatenative
17:01:45 <AnMaster> and is any of them non-esoteric?
17:01:52 <ehird> AnMaster: most of them are non-esoteric
17:01:54 <ehird> well
17:01:58 <AnMaster> like?
17:02:07 <ehird> Joy was created to research the implications
17:02:12 <ehird> Factor, however, is the prime example
17:02:16 <ehird> Slava Pestov is its head
17:02:19 <ehird> author of jEdit
17:02:31 <ehird> it has a web server, is used to develop apps, has a small but strong community, etc
17:02:36 <ehird> it has a channel here, #concatenative
17:02:43 <ehird> factorcode.com
17:04:13 <AnMaster> wikipedia call Joy "functional"
17:04:18 <AnMaster> hm
17:05:41 <ehird> yes, functional but concatenative
17:05:43 <ehird> AnMaster: oh and Cat
17:05:46 <ehird> Cat is like Joy, but strongly typedf
17:05:56 <AnMaster> not man cat?
17:06:01 <ehird> AnMaster: no
17:06:02 <ehird> catlanguage.com
17:06:11 <AnMaster> cat is certainly "concatenative" though XD
17:06:18 <AnMaster> but not turing complete
17:06:48 <AnMaster> ehird, not related to lolcode? ;P
17:06:54 <ehird> no
17:07:02 <ehird> predates it
17:07:17 <ehird> er wait
17:07:18 <ehird> dead link
17:07:44 <ehird> http://cat-language.com/
17:08:37 <AnMaster> that one is functional too?
17:08:56 <ehird> yes
17:09:01 <AnMaster> are *all* concatenative languages functional?
17:09:05 <ehird> AnMaster: most are
17:09:07 <ehird> but
17:09:10 <ehird> most of them have side-effects
17:09:13 <ehird> so functional but not purely
17:09:26 <ehird> but all of them have [...] and use combinators for 'if' and all that stuff
17:09:30 <ehird> but in e.g. factor
17:09:31 <AnMaster> well most functional languages allow side effects, even haskell does it in special contexts iirc
17:09:33 <ehird> side effects are trivial
17:09:41 <ehird> and haskell doesn't, it just lets you emulate it
17:09:51 <AnMaster> ehird, it lets you do file IO
17:10:07 <AnMaster> or how the heck did they write darcs in haskell?
17:10:10 <oklopol> i'm fairly sure a concatenative language has to be functional
17:10:53 <oklopol> because you can't use something like goto for program flow, you have to have a way to nest code... this essentially lets you have functions
17:10:54 <ehird> AnMaster: it's hard to explain
17:11:00 <ehird> AnMaster: haskell can be used for very real, IO-doing apps
17:11:05 <ehird> AnMaster: but it is done in a purely functional way
17:11:14 <ehird> i'll word-drop... Monads
17:11:14 <oklopol> hmm, i'm assuming a stack here, perhaps a wider consideration of concatenativity might let you be imperative.
17:11:24 <ehird> AnMaster: basically, the only non-functional part is the small runtime written in c
17:11:25 <AnMaster> ehird, yes I heard that word
17:11:29 <ehird> which is 100% detached from the haskell code
17:11:29 <AnMaster> hm
17:11:36 <ehird> its hard to explain, most newbies misunderstand it
17:11:38 <AnMaster> was just about to ask what it meant
17:11:41 <ehird> but just believe me when i say --
17:11:48 <ehird> haskell is 100% purely functional
17:12:01 <AnMaster> ehird, file IO is a side effect, right?
17:12:19 <ehird> AnMaster: yes but the haskell doesn't do it
17:12:25 <ehird> i told you, it's hard to explain
17:12:27 <oklopol> AnMaster: it doesn't have side-effects, it just has a construct for ordering evaluating, in which case you can have the program receive a conceptual list of inputs that will ever be given, and read from that
17:12:33 <oklopol> this list can only be read sequentially
17:12:36 <ehird> oklopol: eeeeh, no
17:12:37 <oklopol> and is the IO monad
17:12:39 <AnMaster> right, so everyone using darcs just imagined they commited a file
17:12:39 <ehird> no that's wrong
17:12:40 <ehird> :)
17:12:42 <AnMaster> it really didn't do it?
17:12:42 <oklopol> ehird: no?
17:12:48 <ehird> AnMaster: ... what an IDIOTIC comment
17:12:57 <AnMaster> ehird, yes I'm aware of that
17:13:00 <AnMaster> but you make no sense
17:13:00 <ehird> its not the Haskell that does the IO.
17:13:14 <ehird> AnMaster: most people have a lot of trouble with monads. i'm not going to explain it over irc.
17:13:17 <ehird> just trust me. i'm right.
17:13:23 <oklopol> ehird: what's wrong about my explanation?
17:14:14 <ehird> oklopol: hm
17:14:15 <ehird> not srue
17:14:32 <oklopol> i'm not saying it's exactly that, but it somewhat corresponds to that :)
17:15:06 <oklopol> you can think of actions that effect the IO monad as taking stuff from the list
17:15:15 <oklopol> and at recursion, passing the tail
17:15:20 <oklopol> because you've used the head
17:16:14 <oklopol> well, you can also do stuff like output, and tell the IO monad how to read, but you can find a similar analogy for that too
17:16:32 <oklopol> how
17:16:33 <oklopol> i mean
17:16:34 <oklopol> what
17:17:28 <oklopol> ehird: did you try the interp?
17:17:31 <oklopol> does it work at all?
17:19:23 <ehird> oklopol: going to
17:19:46 <ehird> :: "
17:19:46 <ehird> }
17:20:10 <oklopol> it seems this is an idle day for me, so i'll be here waiting, i guess! :D
17:20:42 <oklopol> ehird: i haven't tried anything that shouldn't work btw, so don't be surprised if it's trivial to crash
17:20:44 <ehird> oklopol: well, it works
17:20:45 <ehird> :P
17:20:55 <ehird> not much to see really
17:21:02 <oklopol> well, you can't crash it that easily ofc
17:21:10 <oklopol> because it just excepts
17:22:01 <oklopol> anyway, if you find bugs, i may remention you in the report!!
17:22:12 <ehird> oklopol: there's lots of bugs
17:22:14 <ehird> just not on valid code
17:22:14 <ehird> :-)
17:22:19 <oklopol> hehe
17:22:21 <ehird> oklopol: i find the scoping odd though
17:22:23 <ehird> here's an example
17:22:24 <oklopol> prolly, prolly
17:22:42 <ehird> (= ptr {(-> o {(-> $get o) (-> [$set o] o)})})
17:22:47 <ehird> you see the o
17:22:48 <ehird> bound in
17:22:49 <ehird> [$set o]
17:22:59 <ehird> i would expect that to be local to that pattern match, and just return the o
17:22:59 <ehird> and then
17:23:01 <ehird> on a future get
17:23:04 <ehird> the get would refer to the objects o
17:23:05 <ehird> but instead
17:23:10 <ehird> it somehow 'overrides' the thing's o
17:23:15 <ehird> is that intentional?
17:23:17 <oklopol> yes.
17:23:20 <ehird> if so, how is it done consistently?
17:23:30 <oklopol> it's only a problem at recursion
17:23:52 <oklopol> mutable objects and functions at the same time don't really mix
17:23:56 <oklopol> but i wasn't afraid ofc
17:24:06 <oklopol> recursion will remake the scope
17:24:11 <oklopol> nothing else
17:24:54 <oklopol> you see, usually you will not use a *field* in a pattern, you will use new varnames... using field names in a pattern will have the side-effect of changing the field.
17:26:12 <oklopol> if you find problems with it, do tell me. sofar, it seems to have been a good idea
17:27:09 <oklopol> well, apart from the fact it may make it easy to make mistakes; this of course i don't care about at all, oklotalk is supposed to be fun and easy to code, if you *know what you're doing, and are perfect*
17:29:56 <AnMaster> oklopol, the bot is offline :(
17:30:01 <oklopol> hmm
17:30:08 <AnMaster> otobot I mean
17:30:12 <AnMaster> or whatever it's name was
17:31:26 <oklopol> wtdf
17:31:28 <oklopol> wtf
17:31:34 <oklopol> invalid username i=-1 :D
17:31:45 <AnMaster> err yes I agree it is invalid
17:31:47 <AnMaster> see irc standard
17:32:03 <AnMaster> = is not valid in nicks iirc
17:32:06 <AnMaster> brb phone
17:32:07 <oklopol> i don't use it
17:34:48 -!- oktabot has joined.
17:35:05 <oklopol> a-ha, cannot have ident and realname be the same as nick, it seems :O
17:35:17 <oklopol> :: (= ptr {(-> o {(-> $get o) (-> [$set o] o)})})
17:35:17 <oktabot> <<<25877720>>>
17:35:29 <oklopol> :: (= x (ptr 7))
17:35:29 <oktabot> <<<25884032>>>
17:35:33 <oklopol> :: (= y x)
17:35:34 <oktabot> <<<25884032>>>
17:35:38 <oklopol> :: (set x 5)
17:35:39 <oktabot> 5
17:35:42 <oklopol> :: (get x)
17:35:42 <oktabot> 5
17:35:43 <oklopol> :: (get y)
17:35:44 <oktabot> 5
17:35:51 <oklopol> :: (= x (ptr 8))
17:35:51 <oktabot> <<<25883472>>>
17:35:56 <oklopol> :: (get y)
17:35:57 <oktabot> 5
17:36:01 <oklopol> :: (set y 7)
17:36:02 <oktabot> 7
17:36:04 <oklopol> :: (get x)
17:36:05 <oktabot> 8
17:36:17 <oklopol> i have no idea why i'm doing this
17:36:29 <oklopol> i'm so goddamn paranoid stuff just stops working out of nowhere :D
17:37:42 <ehird> [17:35] <oklopol> a-ha, cannot have ident and realname be the same as nick, it seems :O
17:37:44 <ehird> you can
17:37:45 <ehird> :<
17:38:11 <ehird> :: x
17:38:11 <oktabot> <<<25883472>>>
17:38:13 <ehird> :: (+ x y)
17:38:14 <oktabot> f
17:38:23 <ehird> :: º·Ë„‰‚·„°)(ÔË°*(Ë—‚Ë_SAO—±ÅÍÚ((((ÆÒ–ºÈËU0(WA*$()£$
17:38:23 <oktabot> An error: Unmatching parens @ row 1.
17:42:08 <oklopol> ehird: well, i couldn't connect
17:42:09 <oklopol> hmm
17:42:15 <oklopol> i cannot see those chars
17:42:55 <ehird> oklopol: they're jewnicode
17:43:43 <oklopol> ah eunuchcode
17:46:50 <oklopol> ehird: well i just do whatever happens to happen if unicode is used. it's supposed to be used with ascii atm
17:46:57 <oklopol> :: 9ii09i
17:46:58 <oktabot> ii09i
17:48:07 <ehird> :: ømgø∂∑†ƒ
17:48:08 <oktabot> ømgø∂∑†ƒ
17:48:11 <ehird> :: "ømgø∂∑†ƒ")
17:48:12 <oktabot> An error: Unmatching parens @ row 1.
17:48:12 <ehird> :: "ømgø∂∑†ƒ"
17:48:13 <oktabot> ømgø∂∑†ƒ
17:48:16 <ehird> :: (length "ømgø∂∑†ƒ")
17:48:16 <oktabot> An error: invalid literal for int() with base 10: '\xc3\xb8mg\xc3\xb8\xe2\x88\x82\xe2\x88\x91\xe2\x80\xa0\xc6\x92'
17:48:17 <oklopol> heh
17:48:19 <ehird> :|
17:48:25 <ehird> oklopol: open stdin in unicode mode
17:48:26 <ehird> same with files
17:48:31 <ehird> and replace '' with u''
17:48:35 <ehird> then it'll be jewnicode
17:48:46 <oklopol> is taht so?
17:49:01 <ehird> alternatively, you could put the jewnicode into auschwitz
17:49:12 <ehird> but then you'd be an nascii
17:49:22 <oklopol> :: (length "seher")
17:49:22 <oktabot> An error: invalid literal for int() with base 10: 'seher'
17:49:36 <oklopol> perhaps i should fix that :D
17:49:49 <oklopol> you see
17:49:56 <oklopol> :: (lolimagination "14354")
17:49:58 <oktabot> 14354
17:50:13 <ehird> lmao
17:50:36 <oklopol> long story short, strings can only be int()'d atm
17:51:01 <oklopol> so i saved a few chars ;)
17:52:17 <oklopol> at some point i though i might make oklotalk only do base 16 numbers
17:53:55 <oklopol> they're much more natural
17:54:49 <ehird> oklopol: hmm, all my esoideas from earlier today have just gone
17:54:57 <oklopol> have gone?
17:55:49 <ehird> yes
17:55:56 <oklopol> liek how
17:55:59 <oklopol> forgotten?
17:57:49 <ehird> yes
17:58:42 <oklopol> do you know a set of combinators that are tc given call/cc, but not without?
17:59:06 <oklopol> i'm pretty sure that cannot exist, but...
17:59:18 <ehird> oklopol: no, i don't think there is any
17:59:18 <ehird> well
17:59:22 <ehird> you can implement loops with call/cc.
17:59:28 <oklopol> yeah, somewhat
17:59:31 <ehird> so maybe
17:59:38 <ehird> oklopol: like, make a functional equiv. of brainfuck
17:59:39 <ehird> without loops
17:59:41 <ehird> then add call/cc
17:59:42 <ehird> and maybe.
18:19:26 -!- Sgeo has joined.
18:33:20 <Sgeo> pikhq, still care about PSOX?
18:33:32 <pikhq> Barely.
18:33:42 <Sgeo> If anyone still cares about PSOX, I'm thinking of adding an ASCII mode
18:33:53 <Sgeo> pikhq, why only barely?
18:39:01 <pikhq> Because I've got an assload of other stuff to do.
18:40:15 -!- oklofok has joined.
18:46:23 <SimonRC> hehehe
18:46:39 <SimonRC> Elsenet, some people are playing with a bot called nicknick
18:46:52 <SimonRC> it steals nicks whenever anyone changes nick
18:47:02 <AnMaster> Sgeo, you didn't answer me yesterday (or was it two days ago?): what use would PSOX be to me as a befunge programmer
18:47:05 <SimonRC> to get back, you have to o two more steps
18:47:16 <SimonRC> thus resulting in 6 lines of nick changes overall
18:47:23 <Sgeo> AnMaster, none I guess
18:47:26 <SimonRC> head-spinning stuff
18:47:36 <AnMaster> ok thank you
18:47:57 <Sgeo> I mean, assuming befunge can access the network and files and stuff
18:48:42 <ehird> SimonRC: heh
18:48:57 * AnMaster wonders idly about a program that can solve the halting problem for *itself*
18:49:05 <ehird> actually, a good irc server would make all this nicky stuff automatic
18:49:08 <AnMaster> did that make any sense at all?
18:49:13 <ehird> AnMaster: same as regular halting problem
18:49:14 <ehird> like
18:49:21 <ehird> if a nick is online for more than N time
18:49:26 <ehird> it gets registered
18:49:31 <ehird> and then... somehow you can claim it
18:49:32 <ehird> i don't know
18:49:50 <AnMaster> ehird, well you need to work somewhat on the details
18:49:52 <ehird> really irc is far too klunky
18:49:57 <ehird> but
18:50:01 <ehird> you could do channel registration easily
18:50:11 <AnMaster> <SimonRC> to get back, you have to o two more steps
18:50:11 <ehird> if you go in to an unused channel it's registered to you
18:50:14 <AnMaster> well /ns ghost
18:50:15 <AnMaster> :D
18:50:22 <AnMaster> funny to kill a bot that wya
18:50:23 <AnMaster> way*
18:50:32 <ehird> if the channel dies, then it is dropped
18:50:36 <ehird> AnMaster: lots of places have no /ns
18:50:48 <AnMaster> ehird, right /msg nickserv/userserv/whatever
18:50:49 <ehird> I guess what IRC needs is a well thought out replacement
18:50:53 <AnMaster> if they got services
18:51:03 <ehird> AnMaster: not all have those
18:51:13 <AnMaster> the only bit networks without services these days are efnet and ircnet
18:51:17 <AnMaster> big*
18:51:34 <AnMaster> ehird, sure some got account based system
18:51:37 <AnMaster> or similar
18:52:12 <ehird> AnMaster: some have none
18:52:32 <AnMaster> yes ircnet and efnet these days
18:52:41 <AnMaster> as I said all other large network do use services nowdays
18:53:14 <ehird> does anyone else think irc sucks? ;)
18:54:42 <Sgeo> ehird, support Haver! lol
18:54:49 <ehird> oklopol: oklohi
18:54:55 <ehird> Sgeo: haver kinda punts on the hard stuff
18:55:17 <Sgeo> howso?
18:56:19 <ehird> it doesn't really do anything new
18:57:28 -!- jix has quit (Nick collision from services.).
18:57:29 -!- oklopol has quit (Read error: 110 (Connection timed out)).
18:57:38 -!- jix has joined.
18:59:14 -!- oktabot has quit (Read error: 110 (Connection timed out)).
18:59:36 -!- oklofok has quit (Success).
18:59:50 <ehird> NOOOOOOOOOOO
18:59:52 <ehird> NO MORE OKLOTALK
19:07:05 -!- timotiis has joined.
19:22:34 -!- Judofyr_ has joined.
19:22:34 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:23:17 -!- Judofyr_ has changed nick to Judofyr.
20:07:03 <ehird> d
20:07:10 <ehird> GregorR: so about that egobot patch..
20:13:53 <ehird> GregorR: :D
20:20:18 * SimonRC PONDERS
20:20:28 <SimonRC> SILC has an interating alternative to nicks
20:20:51 <SimonRC> everyone has cryptographic identites, and nikcs are merely decorative
20:21:24 <SimonRC> Programs that solve the halting problem for themselves are easy.
20:21:55 <SimonRC> obviously, it will always halt, because a halting-problem-solver must
20:22:02 <SimonRC> therefore it is just "true"
20:31:44 <Sgeo> Can INTERCAL do string processing"
20:31:45 <Sgeo> ?
20:36:47 <ehird> Sgeo: yes
20:36:54 <ehird> Sgeo: it is turing complete
20:36:58 <ehird> there is an intercal cgi script
20:37:02 <Sgeo> Can it do it well?
20:37:15 <ehird> Sgeo: you can't do anything 'well' in intercal
20:37:18 <ehird> every operation is tedious and verbose
20:37:20 <ehird> but you can do it
20:37:23 <ehird> it's pretty standard
20:37:45 <ehird> Sgeo: http://www.muppetlabs.com/~breadbox/intercal/ins/insstart.html
20:37:47 <ehird> intercal cgi script
20:37:53 <Sgeo> Because I'm planning a PSOX-ASCII, which will return argumnts like: 12345,hi,0
20:38:04 <Sgeo> I want to know how Intercal would handle stuff like that
20:39:55 <ehird> Sgeo: Uh, you can do binary in intercal too.
20:40:07 <ehird> But if you want true INTERCAL support, you have to do input and output in roman numerals.
20:40:11 <ehird> Since that's all that's standard.
20:40:17 <ehird> wait, no
20:40:19 <ehird> input in text numerals
20:40:21 <ehird> output in roman numerals
20:40:24 <ehird> input like:
20:40:25 <Sgeo> ..PSOX_ASCII is not about to support that
20:40:29 <ehird> 'ONE ZERO NINE FIVE ZERO'
20:40:31 <ehird> output like
20:40:33 <ehird> 'MXVIIVIVI'
20:40:38 <ehird> sometimes with bars or underscores
20:40:45 <Sgeo> *PSOX-ASCII
20:40:53 <ehird> Sgeo: Well duh, I could have guessed that. You don't like actually designing things that work..
20:41:11 <ehird> character io extensions exist
20:41:13 * Sgeo doesn't want something centered on any language
20:41:15 <ehird> but they are not standard
20:41:27 <ehird> Sgeo: PSOX is centered around brainfuck. Stating anything to the contrary is just a lie
20:41:43 <Sgeo> ehird, that's why I'm working on PSOX-ASCII
20:42:15 <ehird> Sgeo: Which will be centered around something else. Yay!
20:42:30 <Sgeo> Although I wonder if I should just break it off PSOX entirely to make it much more flexible..
20:43:05 <ehird> or just give up psox
20:44:07 <Sgeo> ehird, the current spec/codebase, or the idea entirely?
20:46:25 <ehird> Sgeo: both
21:48:59 -!- timotiis_ has joined.
21:49:47 -!- oerjan has joined.
21:55:58 -!- Judofyr_ has joined.
21:55:58 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:02:03 -!- timotiis has quit (Read error: 110 (Connection timed out)).
22:07:33 -!- Judofyr_ has changed nick to Judofyr.
22:33:59 -!- Judofyr_ has joined.
22:33:59 -!- Judofyr has quit (Connection reset by peer).
22:51:37 -!- jix has quit ("CommandQ").
23:32:13 -!- oerjan has quit ("leaving").
23:32:20 <ehird> dead day today
23:38:58 -!- pikhq has quit ("REbooting for new kernel").
2008-04-13
00:01:50 -!- pikhq has joined.
00:12:01 <ehird> pikhqhello
00:14:30 <SimonRC> ehird: merely a glitch in the net
00:15:31 <Sgeo> SimonRC, do you care about PSOX? If anyone cares about PSOX, I'm considering a PSOX-ASCII for languages that don't do NULs well, and are somewhat decent at handling text
00:16:12 <SimonRC> not much
00:16:39 <ehird> heh, the same response always
01:00:42 -!- timotiis_ has quit (Read error: 110 (Connection timed out)).
01:11:44 * SimonRC goes.
01:50:56 -!- Iskr has quit ("Leaving").
02:08:06 -!- ehird has quit ("This computer has gone to sleep").
02:08:40 -!- ehird has joined.
02:10:29 <Sgeo> rehird
02:25:12 -!- ehird has quit (Read error: 113 (No route to host)).
02:28:59 -!- calamari has joined.
02:35:05 -!- RodgerTheGreat has joined.
02:40:04 <Sgeo> Hi calamari and RodgerTheGreat
02:40:13 <Sgeo> either of you still interested in PSOX?
02:40:17 <RodgerTheGreat> hi sgeo
02:40:47 <RodgerTheGreat> I think it's an interesting concept, but to be perfectly honest I don't see myself using it anytime soon- I have a lot of other projects on hand
02:41:36 <Sgeo> I'm not working on it if there's no interest
02:41:44 <Sgeo> But I guess that counts as interest
02:42:02 <RodgerTheGreat> sorry I can only offer moral support, man
02:42:18 <Sgeo> That's all I need really. Thanks
02:42:44 <RodgerTheGreat> My advice would be to create some kind of really neat proof-of-concept depending on it- if you made a befunge webserver or something people would be all over it
02:44:07 <calamari> RodgerTheGreat: good idea
02:44:28 <pikhq> Sgeo: There's a difference between being interested and having the time to do anything with it.
02:44:38 <pikhq> I care about PSOX. I just don't have the time to do anything about it.
02:45:09 <RodgerTheGreat> not only would it be a cool and convincing way to make people want to make it a standard and play with it, but it would also stand on it's own as a neat accomplishment
02:45:21 <Sgeo> wget.b by pikhq already exists
02:45:36 <Sgeo> Although I guess a webserver would be cooler
02:45:48 <RodgerTheGreat> I
02:46:07 <RodgerTheGreat> I'd imagine if PSOX had simple socket support a webserver would be pretty straightforward
02:46:30 <RodgerTheGreat> hell, I think you can make one by hooking up a BF interpeter's I/O to netcat
02:46:31 <Sgeo> It has socket support, but I don't know how simple it is
02:46:38 <pikhq> Really, a simple wobserver is trivial if you just assume inetd.
02:46:43 <Sgeo> inetd?
02:47:15 <Sgeo> Also, I want to add a PSOX-ASCII on top of what's there already
02:47:21 <pikhq> It's a super-daemon. Listens on ports, initiates the appropriate server when a connection comes in. . .
02:47:32 <pikhq> And does all the network setup for that server beforehand.
02:48:14 <RodgerTheGreat> after that, a webserver would pretty much just be something that barfs a string when it's pinged?
02:48:19 <Sgeo> Is inetd universal, or UNIX-like only
02:48:25 * pikhq nods
02:48:31 <pikhq> Sgeo: It's UNIX-like only.
02:48:41 <pikhq> Which is to say, everything-but-Windows-only. :p
02:48:42 <GregorR> (Cygwin has an inetd)
02:48:42 <Sgeo> well, a filesystem accessing webserver would be better
02:48:48 <RodgerTheGreat> in that case, you could pick a really nasty language for the proof of concept, sgeo
02:48:49 <pikhq> GregorR: Oh. Cool.
02:48:55 <pikhq> But that is UNIX-like. :p
02:49:00 <GregorR> Touché.
02:49:13 <pikhq> I don't think straight win32 offers it.
02:49:19 <pikhq> ... Unless you could build it with mingw?
02:49:27 <Sgeo> RodgerTheGreat, without PSOX-ASCII, the language has to support sending and receiving NULs
02:49:35 <RodgerTheGreat> hm.
02:49:39 <Sgeo> With PSOX-ASCII, it has to be decent at handling strings
02:50:03 <RodgerTheGreat> bbiab
02:50:06 <pikhq> (OSX uses launchd instead, and most Linux distros use xinetd. . . Of course, they all do the same job, just in different, more fancy ways (OSX's launchd, IIRC, is also an init replacement))
03:01:46 -!- ehird has joined.
03:02:19 <Sgeo> wb ehird
03:22:22 -!- ehird has quit (Read error: 113 (No route to host)).
05:59:51 -!- adu has joined.
07:23:30 -!- adu has left (?).
07:39:06 -!- Sgeo has quit ("Ex-Chat").
07:47:11 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:23:18 -!- Iskr has joined.
09:37:10 -!- Iskr has quit ("Leaving").
09:59:13 -!- Iskr has joined.
10:10:23 -!- atsampso1 has quit (Read error: 113 (No route to host)).
10:44:56 -!- Judofyr_ has changed nick to Judofyr.
10:55:43 -!- jix has joined.
10:57:34 -!- Iskr has quit ("Leaving").
11:03:14 -!- Iskr has joined.
11:29:17 -!- atsampson has joined.
12:51:03 -!- Tritonio_ has quit (Remote closed the connection).
14:34:24 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
14:35:02 -!- Judofyr has joined.
14:54:55 -!- Tritonio_ has joined.
16:34:14 -!- ehird has joined.
16:34:15 -!- Slereah has quit (Read error: 110 (Connection timed out)).
17:31:31 -!- Tritonio_ has quit (Read error: 113 (No route to host)).
17:37:33 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
18:18:46 -!- Sgeo has joined.
18:28:42 -!- Tritonio_ has joined.
18:57:22 -!- jix has quit (Nick collision from services.).
18:57:32 -!- jix has joined.
19:03:23 -!- Zuu has joined.
19:03:40 -!- Zuu has left (?).
19:39:32 -!- timotiis has joined.
20:10:55 -!- Tritonio_ has quit (Remote closed the connection).
20:19:55 <ehird> Sometimes, people make me want to kill them!
20:19:58 <ehird> "Theses licenses are TOO weird, I prefer the 'normal' license.. 'The source is mine, is private and you must not mess with that'."
20:32:40 -!- Unnamed-4AD202 has joined.
20:39:35 <ehird> Unnamed-4AD202: hello slereah
20:40:46 -!- sebbu2 has changed nick to sebbu.
20:41:59 <AnMaster> ehird, huh at that license?
20:42:16 <AnMaster> what license was too weird
20:42:27 -!- Unnamed-4AD202 has changed nick to Slereag.
20:42:28 -!- Slereag has changed nick to Slereah.
20:42:32 <Slereah> Hello little man
20:42:40 <Slereah> I am back from der Scientologie
20:43:01 <AnMaster> Scientology is just nuts
20:43:46 <ehird> Slereah: I hope it was epic.
20:43:57 <Slereah> Well, in France, not that much.
20:44:11 <Slereah> The cops once again blocked us from protesting in front
20:44:12 <ehird> AnMaster: it was just a comment on a blog where someone had compared free software licenses
20:44:16 <Slereah> and attendance was less epic
20:44:21 <ehird> Slereah: Lame.
20:44:29 <ehird> Slereah: Was there any Rick Astley?
20:45:33 <Slereah> Well duh
20:45:54 <Slereah> It would be nice to find a way to stop the street blocage.
20:46:51 <AnMaster> Slereah, what were you doing
20:47:06 <ehird> AnMaster: anonymous scientology protests today..
20:47:28 <Slereah> Maybe I'll end up on TV and newspaper :o
20:47:30 <AnMaster> aha
20:47:40 <AnMaster> why anonymous?
20:47:48 <ehird> AnMaster: Anonymous as in the pseudo-entity
20:47:51 <AnMaster> err
20:47:52 <AnMaster> what?
20:47:58 <ehird> I think AnMaster lives under a rock
20:48:11 <Slereah> Since I was the only guy with the good idea to order my Epic Fail Guy mask in february, I was quite filmed :o
20:48:12 <AnMaster> ehird, oh no, my secret is out
20:48:15 <AnMaster> ;P
20:48:41 <AnMaster> Slereah, what is "epic fail guy mask"?
20:48:49 <ehird> AnMaster: Anonymous = *chan user.
20:48:52 <AnMaster> ie, what does it look like
20:48:57 <ehird> Anonymous = currently warring with CoS.
20:49:05 <AnMaster> mhm
20:49:19 <AnMaster> there is some organization called "anonymous"?
20:49:26 <Slereah> No.
20:49:29 <ehird> AnMaster: you know what a *chan is i presume
20:49:35 <Slereah> "Anonymous" is a collective name.
20:49:44 <ehird> and that on most of them, posts are forced to be marked as Anonymous, or at least convention dictates so.
20:49:50 <Slereah> One would say that he is Anonymous.
20:49:57 <Slereah> Not that he is a member of Anonymous.
20:49:58 <ehird> But it has sprawled into a pseudo-entity for wars such as the current one.
20:50:04 <Slereah> It's an old joke.
20:50:14 <ehird> Slereah: Quite.
20:50:35 <Slereah> From 4chan, or possibly 2chan. I'm not sure when people started to referring to Anonymous as a real single person.
20:50:47 <Slereah> I can't read jap.
20:51:06 <ehird> Slereah: It's recent.
20:51:23 <ehird> It might have even originated from 7chan or similar
20:51:27 <ehird> Perhaps even as recent as the fox report.
20:51:46 <ehird> Also, do you realise we are having a discussion about chans using punctuation and spelling and capitalization?
20:51:54 <ehird> epic fail
20:52:35 <Slereah> http://www.flickr.com/photos/24718854@N04/2407669233/sizes/l/in/set-72157604504981741/
20:52:39 <Slereah> Thar be I.
20:52:58 <Slereah> Giving some auditing, with a multimeter I got for 25 euros.
20:53:19 <ehird> Slereah: heh
20:53:24 <Slereah> (I don't have the mask there, it's fucking hard to keep that thing on)
20:53:27 <ehird> BODY THETANS DETECTED
20:53:49 <Slereah> http://www.flickr.com/photos/24718854@N04/2408506072/sizes/l/in/set-72157604504981741/
20:53:57 <Slereah> Here I am, measuring the Thetaness of my brain
20:54:18 <ehird> Slereah: It needs soap
20:54:35 <Slereah> Wot?
21:32:37 <AnMaster> ehird, yes I know what one is
21:32:40 <AnMaster> sorry was afk
21:34:42 <AnMaster> Slereah, why the multimeter?
21:35:03 <Slereah> Because it accomplishes the same thing as an E-meter :o
21:35:10 <AnMaster> what is an E-meter?
21:35:23 <Slereah> Scientology's "religious technology"
21:35:27 <AnMaster> aha
21:40:01 <AnMaster> night
21:42:46 -!- Iskr has quit ("Leaving").
22:07:03 -!- oerjan has joined.
22:13:11 -!- calamari has joined.
22:13:18 <calamari> hi
22:13:29 * pikhq would like to disband the Union.
22:13:37 <oerjan> which one?
22:13:51 <pikhq> Of the USA.
22:14:01 <pikhq> http://www.washingtonpost.com/wp-dyn/content/article/2008/04/11/AR2008041103655.html
22:14:15 <pikhq> Welcome, my fellow Americans, to the police state in toto.
22:16:29 <calamari> what else is new..
22:17:37 <calamari> I did some country research.. some of the european countries rate better in press freedom, that type of thing... but they all seem to be welfare states
22:49:44 -!- testingerator has joined.
22:49:44 -!- testingerator has quit (Excess Flood).
22:53:41 -!- testingerator has joined.
22:53:41 -!- testingerator has quit (Dead socket).
23:03:30 -!- Endeavour has joined.
23:03:30 -!- Endeavour has quit (Remote closed the connection).
23:12:24 -!- Endeavour has joined.
23:12:40 <ehird> Testing.
23:12:43 <Endeavour> ehird: You said: #esoteric
23:12:46 <ehird> Heh.
23:12:49 <Endeavour> ehird: You said: #esoteric
23:13:14 -!- Endeavour has quit (Remote closed the connection).
23:13:20 -!- Endeavour has joined.
23:13:36 <ehird> I hope this works now.
23:13:49 <ehird> Oh well.
23:14:00 <ehird> Hm, wait, why is it just being *silent*?
23:14:08 -!- Endeavour has quit (Remote closed the connection).
23:14:14 -!- Endeavour has joined.
23:14:15 <ehird> Test...
23:14:19 <ehird> Ahh, I see.
23:15:02 <ehird> Hmm, waitasecondary, why is that happening
23:15:33 * oerjan guesses that it is trying to send a message to Test...
23:15:39 <GregorR> PRIVMSG Hmm, :You said waitasecondary, why is that happening
23:15:49 <ehird> Yep, oerjan
23:15:58 <ehird> :-)
23:16:34 -!- Endeavour has quit (Remote closed the connection).
23:16:41 <ehird> As always, 'print' debugging will save the day.
23:16:45 -!- Endeavour has joined.
23:16:49 <ehird> Okay, test.
23:16:52 <Endeavour> ehird: You said: #esoteric
23:17:01 <ehird> Wait -- what the hell? It's being spammed somehow
23:17:03 -!- Endeavour has quit (Remote closed the connection).
23:18:22 * oerjan wonders if ehird knows the actual format of irc messages :)
23:18:34 <ehird> oerjan: Yes. :P
23:18:41 <ehird> It's just subtle indexing bugs..
23:18:42 -!- Endeavour has joined.
23:18:48 <ehird> oh HAH
23:18:51 <Endeavour> ehird: You said: #esoteric
23:18:52 <ehird> ['PRIVMSG endeavour', 'Endeavour: You said: endeavour', 'endeavour']
23:18:52 <ehird> endeavour
23:18:55 <Endeavour> ehird: You said: #esoteric
23:18:57 <Endeavour> ehird: You said: #esoteric
23:19:00 <ehird> iterating quine
23:19:01 -!- Endeavour has quit (Remote closed the connection).
23:19:07 <ehird> that is beautiful
23:20:20 <ehird> that should be resolved
23:20:24 -!- Endeavour has joined.
23:20:25 <ehird> test
23:20:30 <Endeavour> ehird: You said: test
23:20:33 <ehird> oh joy
23:20:38 <Endeavour> ehird: You said: oh joy
23:20:45 <oerjan> fnord
23:20:51 <Endeavour> oerjan: You said: fnord
23:21:37 -!- Endeavour has quit (Remote closed the connection).
23:21:44 * ehird tries to find out what is eating his resources
23:21:57 <ehird> something likes the disk
23:24:28 <ehird> ok, WTF is happening
23:25:05 <ehird> aha
23:25:16 <ehird> 'nobody' was running 'find'
23:25:17 <ehird> wtf
23:25:17 <ehird> :D
23:25:53 -!- Endeavour has joined.
23:26:00 <ehird> okay, it should work *without* the lag now
23:26:05 <Endeavour> ehird: You said: okay, it should work *without* the lag now
23:26:13 -!- Endeavour has quit (Remote closed the connection).
23:26:15 <ehird> Hmm.
23:26:15 <ehird> :Endeavour!n=Endeavou@91.105.104.73 PRIVMSG endeavour :Endeavour: You said: Endeavour: You said: Endeavour: You said: Endeavour: You said: Endeavour: You said: Endeavour: You said: Endeavour: You said: freenode-connect: You said: VERSION
23:27:13 -!- Endeavour has joined.
23:27:13 -!- Endeavour has quit (Remote closed the connection).
23:27:26 -!- Endeavour has joined.
23:27:35 <ehird> Now you must be awesome. No talking to yourself!
23:27:35 <Endeavour> ehird: You said: Now you must be awesome. No talking to yourself!
23:27:43 <ehird> Don't talk back to me.
23:27:43 <Endeavour> ehird: You said: Don't talk back to me.
23:27:51 <ehird> Grr! You little sh*t.
23:27:52 <Endeavour> ehird: You said: Grr! You little sh*t.
23:27:53 -!- Endeavour has quit (Remote closed the connection).
23:27:55 <ehird> Take that.
23:45:52 <ehird> <.<
2008-04-14
00:01:21 -!- oerjan has quit ("Good night").
00:06:00 -!- jix has quit ("CommandQ").
00:23:12 -!- Endeavour has joined.
00:23:13 <ehird> bother ehird
00:23:13 <Endeavour> Hey, bother ehird!
00:23:17 <ehird> HAHAHAHAHAHAHAHA
00:23:30 -!- Endeavour has quit (Remote closed the connection).
00:23:36 -!- Endeavour has joined.
00:23:36 <ehird> bother ehird
00:23:37 <Endeavour> Oi ehird!
00:23:38 <ehird> bother ehird
00:23:38 <Endeavour> ehird!
00:23:39 <ehird> bother ehird
00:23:39 <Endeavour> Oi ehird!!!
00:23:42 <ehird> ping ehird
00:23:42 <Endeavour> Hey, ehird!!!
00:23:47 <ehird> good
00:24:23 -!- Endeavour has quit (Remote closed the connection).
00:39:49 -!- Endeavour has joined.
00:39:51 <ehird> abc
00:39:55 <ehird> .seen ehird
00:39:55 <Endeavour> ehird: I last saw %s on %s%s, saying "%s"
00:39:55 -!- Endeavour has quit (Remote closed the connection).
00:40:50 -!- Endeavour has joined.
00:40:51 <ehird> .seen ehird
00:40:51 <Endeavour> ehird: I last saw ehird on 2008-04-14 at 00:40 in #esoteric, saying ".seen ehird"
00:41:52 <calamari> .seen abc
00:41:52 <Endeavour> calamari: I haven't seen abc. Sorry!
00:41:57 <calamari> .seen
00:41:57 <Endeavour> calamari: I haven't seen . Sorry!
00:42:04 <ehird> .seen Endeavour
00:42:04 <Endeavour> ehird: I haven't seen Endeavour. Sorry!
00:42:15 <calamari> .seen \n
00:42:15 <Endeavour> calamari: I haven't seen \n. Sorry!
00:43:16 <calamari> .seen
00:43:16 <Endeavour> calamari: I haven't seen . Sorry!
00:43:59 <ehird> .seen bot abusers
00:43:59 <Endeavour> ehird: I haven't seen bot abusers. Sorry!
00:44:01 <ehird> liar
00:45:28 <calamari> wow.. you are hostile towards your beta testers.. must be M$
00:45:32 <ehird> calamari: :D
00:45:41 <ehird> just kidding, of course
00:46:01 <calamari> I know
00:46:37 -!- Endeavour has quit (Remote closed the connection).
00:47:01 -!- Endeavour has joined.
00:47:03 <ehird> .seen ehird
00:47:03 <Endeavour> ehird: I haven't seen ehird. Sorry!
00:47:05 <ehird> .seen ehird
00:47:05 <Endeavour> ehird: I last saw ehird on 2008-04-14 at 00:47 in #esoteric, saying "ehird"
00:47:11 <ehird> ... Oh lulz
00:47:37 -!- Endeavour has quit (Remote closed the connection).
00:47:45 -!- Endeavour has joined.
00:47:47 <ehird> hello world
00:47:48 <ehird> .seen ehird
00:47:48 <Endeavour> ehird: I haven't seen ehird. Sorry!
00:47:51 <ehird> WTF
00:47:53 <ehird> .seen ehird
00:47:53 <Endeavour> ehird: I last saw ehird on 2008-04-14 at 00:47 in #esoteric, saying ".seen ehird"
00:48:00 <ehird> That's messed :D
00:48:03 <Sgeo> .test
00:48:05 <Sgeo> .seen Sgeo
00:48:05 <Endeavour> Sgeo: I last saw Sgeo on 2008-04-14 at 00:48 in #esoteric, saying ".test"
00:48:11 -!- Endeavour has quit (Remote closed the connection).
00:48:18 <ehird> adding debugging stuff...
00:48:19 -!- Endeavour has joined.
00:48:22 <ehird> test
00:48:24 <ehird> .seen ehird
00:48:24 <Endeavour> ehird: I haven't seen ehird. Sorry!
00:48:26 <ehird> oic
00:48:41 -!- Endeavour has quit (Remote closed the connection).
00:48:55 -!- Endeavour has joined.
00:48:56 <ehird> test
00:48:57 <ehird> .seen ehird
00:48:57 <Endeavour> ehird: I last saw ehird on 2008-04-14 at 00:49 in #esoteric, saying "test"
00:49:01 <ehird> \o
00:49:03 <ehird> o/
00:49:04 <ehird> \o/
00:49:18 <Sgeo> .seen Sgeo
00:49:18 <Endeavour> Sgeo: I haven't seen Sgeo. Sorry!
00:49:20 <Sgeo> .seen Sgeo
00:49:21 <Endeavour> Sgeo: I last saw Sgeo on 2008-04-14 at 00:49 in #esoteric, saying ".seen Sgeo"
00:49:29 <ehird> .seen Endeavour
00:49:29 <Endeavour> ehird: Endeavour? Who's he?
00:49:29 <Endeavour> ehird: I haven't seen Endeavour. Sorry!
00:49:32 <Sgeo> It doesn't see people who don't talk?
00:49:33 <ehird> oops
00:49:39 <ehird> Sgeo: No.
00:49:45 <ehird> Why should it?
00:50:11 <Sgeo> Because what you're doing more closely corresponds with a "lastspoke" than a "seen
00:50:12 <Sgeo> "
00:50:24 <ehird> Sgeo: A lot of bots 'seen' is like that
00:51:25 -!- Endeavour has quit (Remote closed the connection).
00:51:31 -!- Endeavour has joined.
00:51:31 <ehird> .seen ehird
00:51:32 <Endeavour> ehird: I last saw you on 2008-04-14 at 00:50 in #esoteric, saying "Sgeo: A lot of bots 'seen' is like that"
00:51:47 <olsner> .seen olsner
00:51:47 <Endeavour> olsner: I haven't seen olsner. Sorry!
00:51:50 <ehird> FWIW, seen.py is only 41 lines
00:52:14 <olsner> 41 lines? that's 40 lines longer than a one-liner!
00:52:26 <ehird> olsner: And good catch, fixing that
00:52:27 -!- Endeavour has quit (Remote closed the connection).
00:52:33 -!- Endeavour has joined.
00:52:34 <olsner> .seen olsner
00:52:35 <Endeavour> olsner: I last saw you on 2008-04-14 at 00:52 in #esoteric, saying "41 lines? that's 40 lines longer than a one-liner!"
00:52:50 <ehird> http://rafb.net/p/AAHTnD16.html seen.py
00:52:56 <ehird> .seen lament
00:52:56 <Endeavour> ehird: I haven't seen lament. Sorry!
00:53:00 <ehird> .seen ehird
00:53:00 <Endeavour> ehird: I last saw you on 2008-04-14 at 00:53 in #esoteric, saying ".seen lament"
00:53:01 <ehird> Ehh
00:53:07 <ehird> Someone use seen on themselves that haven't talked before
00:53:09 <ehird> pikhq: You.
00:53:18 <ehird> .seen 89¨ª•¨å•ª¨·‚
00:53:18 -!- Endeavour has quit (Remote closed the connection).
00:53:22 <ehird> LOL
00:53:45 <olsner> you seem to be having a wee bit of a data validation problem there :P
00:54:20 <calamari> it's easy to track parts/quits
00:54:52 <ehird> calamari: sure it is but why would i
00:55:08 <calamari> <Sgeo> It doesn't see people who don't talk?
00:55:17 <ehird> Fine fine fine
00:55:20 <calamari> :P
00:55:36 <ehird> BUT tomorrow
00:55:38 <ehird> Today I must go
00:55:50 <calamari> also people who are in the chan
00:56:02 <olsner> actually, I think only counting talking is quite sensible
00:56:36 -!- ehird has quit ("This computer has gone to sleep").
00:57:11 <olsner> lots of people idle on IRC when they leave/sleep/work rather than shut down their clients
00:57:49 <calamari> olsner: <calamari> also people who are in the chan ;)
00:58:04 <calamari> but I see your point
00:58:34 <calamari> "the last time we knew this person was alive" is what ehirds bot currently does..
00:58:56 * Sgeo would call that a lastspoke, not a seen
00:59:08 <calamari> actually that's probably more useful... hmm
01:06:39 -!- timotiis has quit (Read error: 110 (Connection timed out)).
01:39:37 <pikhq> Me?
01:42:27 <olsner> pikhq: you were supposed to say ".seen pikhq" before saying anything else, to test the bot
01:43:48 <pikhq> Ah.
01:43:51 <pikhq> .seen pikhq
01:44:15 <pikhq> And the bot's not here.
01:45:13 * SimonRC goes to bed
01:47:23 <Sgeo> g'night SimonRC
03:25:11 -!- RodgerTheGreat has joined.
03:25:14 <RodgerTheGreat> howdy, folks
03:26:20 <Slereah> Hello sir
03:26:35 <RodgerTheGreat> 'sup, Slereah?
03:29:46 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
03:37:26 -!- Visitor-51A12C has joined.
03:37:50 <Visitor-51A12C> What's new is, I have a bad connection
03:37:54 -!- Visitor-51A12C has changed nick to Slereah.
03:43:06 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
03:43:28 -!- bsmntbombdood has joined.
05:21:28 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
06:41:44 -!- Judofyr has joined.
06:43:53 -!- sebbu has quit (Connection timed out).
06:57:04 -!- calamari has quit ("Leaving").
07:15:18 -!- Judofyr has quit.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:40:02 -!- Iskr has joined.
08:45:59 -!- sebbu has joined.
09:18:53 -!- Sgeo has quit (Remote closed the connection).
10:30:54 -!- oklopol has joined.
10:42:49 <oklopol> words = ["head" "neck" "eye" "foot"]
10:42:51 <oklopol> match a b = if a == b then 0 else 1
10:42:53 <oklopol> sim [] [] = 0
10:42:55 <oklopol> sim a:as b:bs = match a b + sim as bs | 1 + sim as b:bs | 1 + sim a:as bs
10:42:57 <oklopol> :: sim "hed" \words
10:43:30 <oklopol> genetics-based language for trying to find the values / choice tree for least numeric result
10:45:29 <oklopol> should return "head", with 'h' == 'h' => 'e' == 'e' => drop 'a' from "head" => 'd' == 'd'
10:45:41 <oklopol> this information should be given as result
10:46:16 <oklopol> probably could hack something like this up, with exponential search time to make it always find the best result
10:46:57 <oklopol> also might be possible to automatically find the perfect solution for something that simple
10:47:59 <oklopol> automatically find the perfect solution for finding the perfect solution that is
10:48:07 <oklopol> ...
10:48:12 <oklopol> automatically find a good solution for finding the perfect solution that is
10:48:52 <oklopol> i think this corresponds to one of the known similarity metrics of strings
10:48:55 <oklopol> dunno
10:50:50 <oklopol> well... i think with memoizing this would be O(n^2), but a lot of memory would be used
10:51:33 <oklopol> so perhaps it could just realize we've always dropped a certain number of chars from the beginning, and just memoize the pair of these numbers
10:52:16 <oklopol> now, realizing the pairs are (0..len(a), 0..len(b)) lets us use a matrix for memoization, actually giving us that one dynamic programming algo for this!
10:52:17 <oklopol> i think
10:52:47 <oklopol> someone who knows anything, tell me where i failed
10:53:57 <oklopol> if it's that simple, it might have been possible to deduce the algo from just that definition, which actually suggests this might be useful
10:54:50 <oklopol> well, it's essentially an extension to prolog, ofc
10:55:24 <oklopol> except everything is made a function again... prolog does this same thing, except there, functions just return 0 or 1, so the number doesn't actually need to be seen
10:56:03 <oklopol> i think
10:56:10 <oklopol> i don't really know anything
10:56:29 <oklopol> so everyone's asleep?
10:56:41 <oklopol> olo
10:59:13 <oklopol> dsb rh rg gszg zoo xszmmvoh zodzbh hovvk zg gsv hznv grnv vevm gskfts r'n lm xszmmvoh zoo zilfmw gsv dliow?
10:59:18 <oklopol> also, god i'm slow
10:59:25 <oklopol> learned the chart this moning
10:59:27 <oklopol> *morning
10:59:43 <oklopol> took less time than writing that sentence :D
11:00:39 <oklopol> should learn char-number pairs, would be nice to be fluent in all caesar
11:02:13 -!- oklopol has set topic: http://bespin.org/~nef/logs/esoteric/ --> .pr UPPER .pr STRING p=".pr UPPER .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]) --> this_is_an_oklotalk_quine.
11:02:52 <oklopol> "hey, perhaps i should use my morning by writing an oklotalk quine so i get some semantics on strings!!"
11:02:59 <oklopol> "oh, right..."
11:04:33 <oklopol> i guess it's not technically a quine, because that's not printed to stdout
11:04:41 <oklopol> don't really know the definition
11:04:47 <oklopol> that's a repl quine
11:50:34 -!- jix has joined.
12:02:44 -!- oklopol has quit (Read error: 110 (Connection timed out)).
12:29:06 -!- UnrelatedToQaz has joined.
12:31:06 <UnrelatedToQaz> hey all
12:41:03 -!- timotiis has joined.
13:05:02 -!- Iskr has quit (Read error: 110 (Connection timed out)).
13:08:15 -!- Vintersorg has joined.
13:08:26 -!- Vintersorg has left (?).
13:23:49 -!- Iskr has joined.
13:46:20 <AnMaster> Deewiant, http://rafb.net/p/a5bUjK70.html <-- stuff are now autogenerated from lists like that :)
13:46:38 <AnMaster> including the main list of available fingerprints
14:15:43 -!- UnrelatedToQaz has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]").
15:34:48 -!- timotiis has quit (Connection timed out).
15:45:54 -!- timotiis has joined.
15:58:31 -!- oklopol has joined.
16:03:28 -!- Corun has joined.
16:23:14 -!- ehird` has joined.
16:23:32 -!- ehird` has left (?).
16:26:22 -!- Corun has quit ("This computer has gone to sleep").
16:26:45 -!- oklopol has quit (Read error: 113 (No route to host)).
16:26:51 -!- oklopol has joined.
16:27:26 -!- timotiis has quit (Client Quit).
16:31:05 -!- Corun has joined.
16:36:47 -!- asiekierka has joined.
16:36:53 <asiekierka> What happened to the Wiki?
16:37:15 <Slereah> It has more database errors than usual!
16:37:26 <asiekierka> i can't even OPEN it
16:37:30 <asiekierka> it just 404's or something
16:39:50 <asiekierka> hello?
16:39:56 <Slereah> Wot?
16:47:04 <asiekierka> i can't get to the wiki
16:47:23 <oklopol> i can't either
16:47:27 <oklopol> i just imagine it
16:48:47 -!- Sgeo has joined.
16:54:01 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)).
16:59:34 <Sgeo> Are there any database-based esolangs around?
16:59:40 <Sgeo> No, I'm not counting SQL >.>
17:00:06 <Sgeo> Also, esolangs.org/wiki 's search is erroring
17:00:19 <oklopol> i don't think there are
17:00:50 * Sgeo is designing one in his head, although the way it does conditionals is rather ugly thus far
17:01:19 <oklopol> do share it
17:01:44 <oklopol> personally, i hate sql
17:01:47 <Sgeo> There are a bunch of special tables
17:02:11 <Sgeo> time is tracked as a branch and a time
17:02:12 <oklopol> special tables used for flow control? :D
17:02:21 <oklopol> what does that mean
17:02:48 <Sgeo> there's a pl_nextime table with branch,time as a primary key, which indicates the next branch and time to go to after that branch and time is done
17:03:10 <Sgeo> there's a table for memory, which is 2-dimensional
17:03:33 <Sgeo> mem.x = 0 doesn't exist, it's used to specify constants
17:04:02 <Sgeo> there's a pl_todo table, with branch,time as primary key
17:04:14 <Sgeo> and other fields: command, destx, desty
17:04:30 <Sgeo> command is the command, like '+
17:04:36 <Sgeo> '+' or 'frommem'
17:04:58 <Sgeo> destx and desty are the destination in the memory table for the result
17:05:17 <Sgeo> there's a pl_args with primary key: branch,time,argnum
17:05:27 <Sgeo> and other fields memx,memy
17:05:42 <Sgeo> which specify where from memory to pull the argument
17:05:54 <Sgeo> or memx can be 0 to specify that memy is a constant
17:06:42 -!- oklofok has joined.
17:06:57 <Sgeo> oklopol, um, did you get what I said, or did you ping out or something?
17:07:48 <oklofok> i pingered out after memory to pull the argument
17:08:34 <Sgeo> <Sgeo> or memx can be 0 to specify that memy is a constant
17:08:34 <oklofok> hmm so
17:08:45 <oklofok> assembly with commands stored in a database, somewhat?
17:08:47 -!- oklopol has quit (Read error: 113 (No route to host)).
17:09:15 <Sgeo> Um, I don't think quite like assembly
17:09:16 <Sgeo> not sure
17:09:49 <oklofok> hmm
17:10:03 <oklofok> times are numbers of operations executed at a certain point?
17:10:13 <oklofok> or actually time
17:10:13 <oklofok> ?
17:10:47 <Sgeo> time goes sequentially unless specified otherwise in pl_nextime. You can only execute one command at a given time.
17:11:44 <oklofok> so direct correlation between time and number of operations executed, that was what i meant
17:12:12 <oklofok> anyway, basically, you will have to build new code as you go
17:12:44 <Sgeo> oklofok, you don't HAVE to do that. You can using the frommem command, but you can just specify everything in the database beforehand too.
17:12:47 <oklofok> if you allow for multiple operations per one tick, you can probably do something
17:12:57 <oklofok> frommem?
17:13:13 <oklofok> you can't have infinitely many tuples in the database, can you?
17:13:20 <oklofok> if you can, indeed, you don't have to do that
17:13:45 <Sgeo> oklofok, or for loops, just specify an entry in pl_nextime
17:13:59 <oklofok> what's that mean
17:14:18 <Sgeo> Say I want an infinite loop, and branch,time starts at 0,0
17:14:26 <Sgeo> there are 5 operations I want to do in a loop
17:14:39 <Sgeo> pl_nextime contains [0,4,0,0]
17:15:09 <Sgeo> saying that at the end of 0,4 go to branch/time 0,0
17:15:23 <oklofok> ah you can rewind time
17:15:34 <Sgeo> yes
17:16:16 <oklofok> i'm still not entirely sure how exactly evaluation works
17:16:25 <oklofok> try being a bit more formal
17:16:35 <oklofok> what do the tuples contain, and how is evaluation done
17:17:30 <Sgeo> evaluation is done by looking at pl_todo for the current branch,time
17:17:46 <Sgeo> then pulling all the arguments from pl_args
17:17:59 <oklofok> what does "current branch,time" mean?
17:18:18 <Sgeo> the entry stored in pl_time
17:18:18 <oklofok> is this a 2-tuple set to 0,0 at the beginning of the program, and moved in a funge-like fashion to some direction?
17:18:36 <Sgeo> oklofok, it's a 2-tuple, and normally just time increases, not branch
17:18:41 <oklofok> okay
17:19:08 <Sgeo> branch can change based on pl_nextime though.
17:19:28 * Sgeo just isn't sure how frommem is going to work, though
17:19:35 <oklofok> so, (branch,time) is read from pl_todo, which specifies operation, arguments, and next (branch,time)?
17:19:57 <Sgeo> pl_todo doesn't specify the next (branch,time)
17:20:05 <oklofok> so we're dealing with a two-dimensional assembly where the 2d array is stored in an associative map?
17:20:06 <oklofok> hmm
17:20:07 <Sgeo> that's done in pl_nextime
17:20:11 <oklofok> *associative array perhaps
17:20:24 <oklofok> and todo would be what?
17:20:37 <Sgeo> todo is the list of commands, one for each branch,time
17:21:26 <oklofok> pl_nextime is also indexed by (branch,time)
17:21:26 <oklofok> ?
17:21:31 <Sgeo> yes
17:21:58 <oklofok> it is assembly then, pretty much.
17:22:29 <oklofok> (not trying to crush your dream, just trying to be realistic :P)
17:23:20 <Sgeo> Does this mean I should stop bothering, or should I keep working on this?
17:23:31 <oklofok> well
17:23:42 <oklofok> you might wanna try adding some relational algebra
17:23:54 <oklofok> and perhaps derive something computationally interesting from that
17:24:24 <oklofok> you could have just trivial operations, and do more by joining and cutting tables
17:24:26 <oklofok> or smth
17:24:37 <oklofok> do you know relational algebra?
17:24:39 <Sgeo> no :(
17:24:48 <oklofok> do you know sql?
17:25:43 <Sgeo> a bit
17:25:53 <oklofok> sql is a kind of mix of relational algebra and calculus, imo you should learn both, and then try making your own lang
17:26:01 <Sgeo> I'm planning on one of the commands being "sql"
17:26:11 <Sgeo> where the program can run arbitrary sql
17:26:22 <oklofok> well i somewhat guessed
17:26:26 <oklofok> memory holds tables?
17:26:45 <Sgeo> pl_mem hold single values in a 2-dimensional array
17:26:48 <Sgeo> actually
17:27:05 <Sgeo> there is a frommem command that can pull values from memory and put it into arbitrary tables..
17:27:16 <oklofok> you could probably have flow control be based on quining, or something, making new programs with operations on the tables
17:27:17 <oklofok> dunno
17:27:19 <oklofok> hmm
17:28:57 <oklofok> hehe, i love yellow journalism, how could i have lived without knowing someone *scratched their ass in america* http://www.iltasanomat.fi/viihde/uutinen.asp?id=1518906
17:29:15 <oklofok> about pamela anderson scratching their ass with a set of keys
17:32:47 -!- Corun has quit ("This computer has gone to sleep").
17:33:13 <oklofok> Sgeo: i'm always a bit sceptic when it comes to people's first esolangs, i recommend you keep on it, but my suggestion for making a database-based esolang is 1. learn sql, relational calculus and algebra and play with 'em 2. just add simple functionality, in most cases, an esolang should be small 3. don't use an existing language and just built a separate evaluation layer on it, that's a teensy bit lame
17:34:06 <oklofok> and, well, i suggest you look at the existing body of esolangs, and actually try to use them, a language creator should know languages
17:34:59 <oklofok> to be a good esolang designer, you need to understand how a simple language can be extended with functionality from scratch... languages like that are the most interesting ones
17:36:11 <oklofok> also, wouldn't hurt trying to make a few brainfuck/unlambda clones or smth, in your case brainfuck, most have done that, it's nice not to have to do anything revolutionary right away, one will probably just go very wrong.
17:36:44 * Sgeo made a BF-RLE, does that count?
17:36:48 <oklofok> hmm
17:36:54 <oklofok> what's that?
17:36:55 <Sgeo> Or do you mean with the database thing?
17:36:55 <oklofok> don't remember
17:37:03 <oklofok> database + brainfuck
17:37:08 <oklofok> why not
17:38:36 <Sgeo> BF-RLE = BF stripped of comments, and each character can be followed by a number in base-62, the number is the number of times the character appears in a row at that point minus 3.
17:38:52 <Sgeo> It's on the wiki, but wiki doesn't seem to be working.
17:39:01 <oklofok> ah, right
17:39:02 <oklofok> that one
17:41:13 <Sgeo> who maintains the esowiki?
17:41:20 <Sgeo> "from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1194: Table 'mw_objectcache' is marked as crashed and should be repaired (localhost)"."
17:42:08 <oklofok> graue
17:42:12 <oklofok> dunno
17:42:16 <oklofok> i think it's him
17:42:41 <oklofok> yarr
17:44:27 * Sgeo emails
17:46:40 -!- asiekierka has joined.
17:46:42 <asiekierka> hi
17:49:13 <oklofok> yug
17:49:33 <Sgeo> Hi asiekierka
17:52:12 <asiekierka> I'd like a programming language that you can program with just using 4 buttons + a D-pad
17:52:20 <asiekierka> (esoteric)
17:53:32 <oklofok> whuzza d-pad
17:54:24 <Deewiant> directional pad
17:55:53 <Sgeo> asiekierka, can't be too difficult to make YABFC
17:56:04 <Sgeo> </boring>
18:07:24 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)).
18:15:19 -!- oklofok has changed nick to oklopol.
18:19:32 -!- Corun has joined.
18:20:12 <Sgeo> Hi Corun
18:29:01 <Corun> Er, hi.
18:46:12 -!- Corun has quit ("This computer has gone to sleep").
18:46:58 <SimonRC> well that lasted
18:48:36 <Sgeo> What's SQL concatonate?
18:48:37 <Sgeo> ||?
18:48:44 <SimonRC> sometimes
18:49:52 <Sgeo> What is it for MS SQL Server?
18:50:06 <SimonRC> dunno
18:50:40 <oklopol> concatonating sounds a bit like concatenating, but at the same time detonating, perhaps
18:50:46 <oklopol> so i'd say overall, it's a nop
18:50:59 <oklopol> i think i'm using overalls wrong
18:51:00 <Sgeo> lol oklopol
18:51:08 <oklopol> GregorR already busted me about it once
18:51:19 <fizzie> I think MS SQL can use '+' to concatenate strings.
18:51:36 <fizzie> Could be wrong, though.
18:52:18 -!- ais523 has joined.
18:52:34 <ais523> oh, about the wiki: it seems to be down, and I've emailed graue
18:52:58 <ais523> you can still access the wikitext of a page, however, by typing in http://esolangs.org/wiki/name_of_page?action=raw&ctype=text/css
18:53:59 <Sgeo> http://support.encoreusa.com/kb.asp?id= seems to be vulnerable to SQL injection, it expects a number in a "WHERE id=" way
18:54:25 <ais523> lots of things are vulnerable to SQL injection
18:54:58 <ais523> (I remember the story about the person who used '; DROP DATABASE; -- as their standard password, but stopped after one website they came to actually crashed when they tried to create an account)
18:55:17 <fizzie> "Little Bobby Tables."
18:55:35 <fizzie> http://xkcd.com/327/
18:55:36 <Sgeo> http://support.encoreusa.com/kb.asp?id=0%20OR%20'x'='x'%20ORDER%20BY%20id%20DESC last article in the kb
18:55:38 <ais523> fizzie: that's a different story, a well-known cartoon that probably never happened in real life
18:56:02 <ais523> Sgeo: you mean it allows SQL injection in the URL? That's a new one as far as I'm concerend
18:56:09 <ais523> although I'm not particularly surprised
18:56:21 <Sgeo> I've seen it before in an FAQ
18:56:52 <SimonRC> alas ; is forbidden
18:56:55 <Sgeo> Although SQL injection in that faq was a bit more fun, you could actually do useful things like combining all the questions from categories
18:56:56 <SimonRC> any way round that?
18:57:16 <ais523> you could use a subquery, I suppose
18:57:25 <ais523> but I don't know enough SQL to write one
18:57:36 <Sgeo> I think this thing is using some sort of LIMIT 1
18:57:42 -!- jix has quit (Nick collision from services.).
18:57:52 -!- jix has joined.
18:58:27 <Sgeo> Can't seem to get rid of it
18:58:44 <ais523> not even using --?
18:59:16 <Sgeo> http://support.encoreusa.com/kb.asp?id=553%20OR%20id=554;--
18:59:32 <ais523> what happens?
18:59:33 <SimonRC> multi-line query?
18:59:55 <SimonRC> -- only goes up to the next newline IIRC
19:00:06 <Sgeo> ais523, nothing special happens
19:00:14 * ais523 is musing about the text/css in the URL above
19:00:22 <ais523> text/css shows like plaintext in all commonly-used browsers
19:00:27 <ais523> whereas text/plain doesn't
19:00:35 <SimonRC> huh?
19:00:59 <ais523> it's forbidden as a ctype on Wikimedia because IE will run it as JScript under some circumstances
19:01:07 <SimonRC> WTF?
19:01:08 <SimonRC> !
19:01:08 <ais523> making it possible to avoid XSS restrictions
19:01:12 <EgoBot> Huh?
19:01:14 <SimonRC> hah
19:01:18 <SimonRC> EgoBot: indeed
19:01:23 * ais523 agrees with EgoBot too
19:01:27 <Sgeo> Can subqueries be run in a select clause?
19:01:38 <SimonRC> *shrug*
19:02:02 <ais523> Sgeo: don't do anything illegal, you might get in trouble for deleting entries or something like that
19:02:14 <Sgeo> I guess using where whatever IN some_select_clause
19:02:25 <Sgeo> But that's not too useful if I want to get a COUNT(*)
19:02:59 <Sgeo> I don't even know the table name
19:05:13 * Sgeo learns both the table name and a column
19:05:17 <Sgeo> http://support.encoreusa.com/kb.asp?id=0%20OR%20'x'='x'%20GROUP%20BY%20id
19:05:48 <ais523> by guessing the column name?
19:06:01 <Sgeo> kb.problem_statement
19:06:07 <Sgeo> kb.solution_text
19:08:28 <Sgeo> ais523, the SELECT isn't a *
19:08:50 <Sgeo> The fields in there are illegal since they're not in a GROUP BY
19:09:01 <Sgeo> and the GROUP BY was specified
19:09:04 <Sgeo> (in my query
19:09:15 <Sgeo> Now I can search for the first article to contain, say CD
19:09:17 * ais523 just came across this quote: "I don't want to implement it correctly. I want to maintain all the hideously poor design of the original, but in a language people may actually have compilers for."
19:10:15 <Sgeo> Ok, what's the LIKE syntax for MS SQL Server?
19:17:29 <ais523> it seems nobody here knows, you may have to look it up somehow
19:18:01 <oklopol> Sgeo: the same as usualy?
19:18:03 <oklopol> usual
19:18:09 <Sgeo> oklopol, tried it, doesn't work
19:18:49 <Sgeo> http://support.encoreusa.com/kb.asp?id=0%20OR%20solution_text%20LIKE%20'%Error%'
19:25:36 * Sgeo decides to upgrade to Fx3
19:26:23 <Sgeo> Or maybe later
19:28:24 <SimonRC> Firefox 3? Where?
19:29:33 <ais523> it's still in beta IIRC
19:29:50 <ais523> but early-adoption-style beta, I think
19:32:43 <SimonRC> is it very different?
19:34:05 <ais523> it's apparently much better in terms of memory usage
19:34:10 <ais523> and much faster at JavaScript
19:34:20 <ais523> which are two of the most commonly-heard criticisms of Firefox 2
19:34:31 <SimonRC> JITted javascript?
19:35:09 <ais523> I don't know the details
19:35:21 <SimonRC> hmm...
19:35:29 * Sgeo can't find the DL
19:36:06 <SimonRC> mmm, partially-precompiled JITted Javascript with big fat libraries
19:36:10 <Sgeo> n/m
19:36:22 <SimonRC> Javascript is in some ways a nice language than Java
19:36:37 <SimonRC> it has more oomph in its closure system for a start
19:37:15 <ais523> Javascript is a nicer language than Java in more or less every way
19:37:41 <ais523> I like its object orientation model too, I think it's my favourite OO model out of all the ones I've come across even though it flies in the face of the usual theory
19:38:16 <ais523> (there's no distinction between an object or a class the way I write JavaScript, you can derive from anything to get a new object)
19:38:26 <ais523> now, if only there was a simple way to do multiple inheritance...
19:38:31 <Deewiant> aka. prototype-based programming
19:38:56 <SimonRC> ais523: is there a method that gets called if another method isn't found?
19:39:19 <ais523> I don't think so
19:39:49 <ais523> methods are just properties with a closure as their value, anyway
19:40:02 <ais523> that you don't change except to override them
19:45:36 * Sgeo downloads and unpacks Firefox3b5, and changes some shortcut-like-thing-tat-he-always-usez
19:46:35 <Sgeo> http://en-us.www.mozilla.com/en-US/firefox/3.0b5/whatsnew/ pretty page
19:47:18 <SimonRC> what a pity; the method-not-found method is a powerful tool
19:47:22 <SimonRC> Lua has it, for example
19:47:34 <Sgeo> The font seems different
19:47:58 <ais523> SimonRC: Perl has it too, but I don't like the implementation
19:48:05 <Sgeo> Neat easy bookmarking feature
19:52:11 <ais523> looking at the release notes, I see that it now prompts to save tabs on exit
19:52:34 <ais523> I've been doing that for a while by closing Firefox with SIGHUP rather than exiting, which fools it into thinking it's crashed, when I want to save the tabs
19:53:00 <oklopol> it's quite retarded you have to do it that way
19:53:02 <oklopol> i do that to
19:53:03 <oklopol> too
19:53:11 <oklopol> isn't there another way?
19:53:21 <Sgeo> Flash doesn't seem to want to install
19:53:22 <Sgeo> Grr
19:53:48 <SimonRC> oklopol: yes
19:53:56 <SimonRC> SIGKILL works too
19:55:11 <ais523> SIGHUP is easy to send, though
19:55:19 -!- Corun has joined.
19:55:25 <ais523> I just press the power button, which SIGHUPs everything and does a controlled shutdown
19:55:36 <SimonRC> lol
19:56:44 <ais523> SimonRC: can you given an example of what you use method-not-found for? I saw a Perl program once that used it to gain all shell commands as methods, but I suspect that isn't a typical use of it
19:57:46 <SimonRC> well, you can fake multiple inheritence and do elegant delegation with it
19:58:21 <SimonRC> any non-found methods are delegated to the secondary parent or the delegate
19:59:25 * Sgeo can't seem to get flash to work
19:59:26 -!- Corun has quit (Client Quit).
20:01:22 <ais523> Sgeo: you probably don't /want/ Flash to work
20:01:30 <Sgeo> ais523, YouTube
20:01:33 <ais523> Flash was working here fine a while ago, but I got fed up of it and uninstalled
20:01:41 * ais523 never visits YouTube
20:02:12 * SimonRC found a good use for flash: http://armorgames.com/play/107/portal-the-flash-version
20:04:17 <Sgeo> How do I get flash on 3b5?
20:04:41 <SimonRC> I recommend contacting your local witchdoctor.
20:04:51 <Deewiant> same way you'd get it on 2?
20:04:55 <SimonRC> you will need a large black cock
20:04:58 <GregorR> Giving a byte-count while loading without a progress bar = retardo
20:05:00 <SimonRC> s/cock/rooster/
20:05:37 <Deewiant> a byte-count is much easier to code :-)
20:06:12 <ais523> Deewiant: depends on what language you're coding in
20:06:21 <ais523> a progress bar would be much easier than a byte-count in Underload, for instance
20:06:31 <SimonRC> huh?
20:06:33 <SimonRC> why?
20:06:50 <ais523> because byte-count means you have to translate numbers into decimal
20:06:54 <ais523> progress-bar works in unary
20:07:03 <Deewiant> >_<
20:07:06 <SimonRC> heh
20:07:08 <oklopol> :D
20:07:44 <Deewiant> ais523: giving a unary byte-count would qualify as a progress bar as well, though, so they're at least equally easy ;-)
20:07:49 <ais523> of course, both are impossible without allowing some sort of input...
20:07:56 <Deewiant> hmm, s/least/most/
20:08:14 <Sgeo> Yay it works
20:09:20 <ais523> Sgeo: for future reference, what did you do?
20:09:37 <Sgeo> Installed from the file available from the Flash site
20:09:59 <Sgeo> Instead of having Firefox do the installation from that "Missing Plugins" thing
20:33:20 <Sgeo> SimonRC, the mouse is always unreasonably slow for me in that game
20:43:22 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
21:04:25 -!- ehird` has joined.
21:04:53 <ehird`> best oklotalk quine ever
21:05:02 <ehird`> oklopol: ello
21:05:06 <ehird`> -hello
21:09:27 <oklopol> hi
21:11:09 <ehird`> oklopol: unfortunately i am not on my mac so i do not have INTERESTING OKLOTALK CODE
21:11:12 <ehird`> but did you submit it?
21:11:26 <oklopol> uhhm?
21:12:04 <oklopol> i supermitted it.
21:15:19 <ehird`> heh
21:15:22 <ehird`> any info back?
21:15:31 <ehird`> did they vomit upon seeing the lenient syntax?
21:15:39 <ehird`> OKLOTALK: EXPRESSIVENESS, POWER AND VOMIT
21:15:45 <oklopol> about the quine... by the same logic, <any number> is a quine in most (functional) languages... but still fun
21:16:00 <oklopol> oooh
21:16:08 <oklopol> submitted the interp, ah
21:16:21 <oklopol> had no idea what you meant :P
21:16:27 <oklopol> didn't yet.
21:16:57 <oklopol> but they will probably be very underqualified to say *anything* about it.
21:17:00 <ehird`> oklopol: sheesh. can i at least look at the code now? ;)
21:17:16 <oklopol> didn't even submit yet!
21:17:27 <GregorR> I love this message: WARNING: `missing` script is too old or missing
21:17:28 <oklopol> not before that at least, okay?
21:17:45 <ehird`> oklopol: aww, ok
21:17:57 <ehird`> oklopol: can i independently implement it
21:17:57 <ehird`> :DD
21:18:05 <oklopol> lofl :)
21:18:10 <ehird`> if you link to the pastebin of the primitives i will
21:18:14 <oklopol> noooooooooooooooooooooooooooooooo
21:18:20 <ehird`> oklopol: but you pastebinned it earlier
21:18:23 <oklopol> make your own langs :)
21:18:25 <ehird`> i could just look at the logs
21:18:27 <oklopol> yarrr
21:18:35 <oklopol> i can resend it
21:18:41 <ehird`> so there's no stopping me you could just be a little more helpful :P
21:18:41 <oklopol> the "spec"
21:19:30 -!- Iskr has quit ("Leaving").
21:19:33 <ehird`> noo, not that
21:19:40 <ehird`> you vjn.fi/pb'd the list of primitive functions
21:19:54 <oklopol> it's there too
21:20:08 <ehird`> :(((( downloading zips make me sad
21:20:09 <ehird`> but ok
21:20:10 <ehird`> :P
21:20:11 <oklopol> :P
21:20:23 <oklopol> well, there isn't really *anything*
21:20:36 <ehird`> oklopol: oh thats not the spec i thought
21:20:41 <oklopol> map, filter (ftr), ! indexes
21:20:42 <ehird`> i meant you vjn.fi/pb'd one
21:20:54 <oklopol> that contains it, i think
21:20:57 <oklopol> look in the end
21:21:03 <oklopol> or middle
21:21:05 <oklopol> dunno
21:21:51 <ehird`> oklopol: doesn't
21:21:56 <oklopol> hmmmm
21:22:12 <oklopol> whhhell
21:22:37 <oklopol> that stuff?
21:34:03 <ehird`> oklopol: well ok
21:34:07 <ehird`> I am now working on... OKOHIRD
21:34:16 <ehird`> it is OKO in PYTHON, but with continuations ETC
21:34:22 <ehird`> yes, OKO
21:34:23 <ehird`> not just oko
21:34:24 <ehird`> OKO
21:38:51 <ehird`> oklopol: is (a b c d) a syntax error?
21:38:57 <ehird`> or is it valid under some contexts
21:39:16 -!- olsner has quit (Read error: 110 (Connection timed out)).
21:39:51 -!- olsner has joined.
21:42:03 -!- ehird1 has joined.
21:42:10 <SimonRC> what's this about submitting oklotalk to somewhere?
21:42:17 <ehird`> SimonRC: it's for okoschool
21:42:21 -!- ehird1 has left (?).
21:42:21 <ehird`> its his okoproject
21:42:23 <ehird`> for okoschool
21:42:27 <SimonRC> *boggle*
21:42:31 <SimonRC> bastard
21:42:34 <ehird`> SimonRC: why
21:42:40 <SimonRC> he gets the interesting projects
21:42:43 <ehird`> uh
21:42:46 <ehird`> im pretty sure he chose to do it
21:42:56 <SimonRC> yes, that is my point
21:42:58 <ehird`> hes the only one crazy enough to make okotalk
21:43:04 <SimonRC> he gets the interesting projects
21:43:17 <SimonRC> or rather, he is allowed to do them
21:43:44 <SimonRC> I would not have been able to do that for any class
21:45:35 <ehird`> oklopol: oko
21:48:31 <ehird`> oklopol: ping
21:56:02 -!- Tritonio_ has joined.
21:58:37 <ehird`> HEY oklopol ANSWER :P
21:59:34 <olsner> sometimes there's two of him, other times he's not there at all
22:06:51 <ehird`> oklopol: oko
22:29:12 <ehird`> oklopol: okokokokoko
22:31:05 <SimonRC> oh wow, intreactive comic-drawing (check out the post times) http://forums.explosm.net/showthread.php?t=5296&filter=
22:31:25 <Slereah> Old.
22:31:34 <Slereah> I have the two first stories if you want
22:31:41 <Slereah> They were deleted when the forum crashed
22:31:45 <SimonRC> in a more convinient format?
22:31:53 * SimonRC likes the post of 09-13-2007, 07:22 PM
22:31:56 <SimonRC> like, surreal
22:31:59 <Slereah> It's the forum pages with only the pictures
22:32:14 <SimonRC> ok
22:32:14 -!- jix has quit ("CommandQ").
22:36:44 <oklopol> ehird`: (a b c d) is okay with ->
22:36:50 <oklopol> never otherwise
22:36:58 <ehird`> oklopol: should i treat -> as syntax
22:37:05 <ehird`> i.e. should i make (a b c d) a syntax error
22:37:11 <ehird`> its possible
22:37:35 <Slereah> SimonRC : http://membres.lycos.fr/bewulf/Explosm/
22:37:42 <Slereah> It's loading, but the first parts are here
22:38:07 <SimonRC> ok
22:38:18 <oklopol> yeah it should be a syntax error
22:38:27 <oklopol> SimonRC: the project is fairly free
22:38:49 <oklopol> just has to be related to either computers or media... which can be pretty much anything
22:39:04 <oklopol> ehird`: making oklotalk--?
22:39:18 <Slereah> There's a third story, about a zombie invasion. But the forum crashed while it was written, so I didn't save it.
22:39:27 <oklopol> why not ehirdtalk, we need to see that too :D
22:39:38 <ehird`> oklopol: i will do ehirdtalk too of course
22:39:40 <ehird`> but yes oklotalk--
22:40:24 <oklopol> whhhell, go for it, but try to make it even worse than mine, so i don't feel so bad.
22:40:31 <oklopol> (impossible? oh well...)
22:40:48 <ehird`> oklopol: but yeah, is it possible to treat -> as special syntax?
22:40:52 <oklopol> hmm
22:40:53 <ehird`> like, will it ever appear in something other than the car
22:41:04 <oklopol> well
22:41:08 <oklopol> it can be used as a normal atom
22:41:14 <ehird`> also is [...] an array or a list
22:41:18 <ehird`> oklopol: but is (a -> b) meaningful
22:41:22 <oklopol> array or a list?
22:41:29 <oklopol> like, implementation of it?
22:41:33 <oklopol> that is not specified
22:41:53 <ehird`> oklopol: what is it called
22:42:05 <oklopol> i call it a list
22:42:15 <oklopol> it's implemented as a normal python array
22:42:23 <oklopol> because it needs random access
22:42:36 <oklopol> so i thought it'd be better that way
22:43:24 <oklopol> anyway, actual oklotalk doesn't even distinguish between a list and a hashmap
22:43:31 <oklopol> because both are just functions
22:43:32 <ehird`> oklopol: but whatsit called
22:43:34 <oklopol> list.
22:43:38 <oklopol> in --
22:45:19 <ehird`> thing,list,1app,2app,atom(special case: var),int,string
22:45:22 <ehird`> oklopol: those are the oklotalk AST nodes right
22:45:32 <ehird`> well, and 4app for -> i guess
22:45:37 <ehird`> hey, is (-> a b c d e f) ok too?
22:45:43 <ehird`> like, is -> variadic?
22:45:46 <ehird`> i think so
22:46:07 <oklopol> yyes
22:46:27 <oklopol> a is pattern, the rest of the args are how the function is continued
22:46:56 <oklopol> basically, you can make different paths for execution to follow, using pattern matching
22:47:29 <ehird`> oklopol: yes yes
22:47:33 <ehird`> oklopol: ok then, another questin
22:47:40 <ehird`> oklopol: is (-> X) valid?
22:47:42 <ehird`> or just (-> X Y ...)
22:48:09 <oklopol> it should be valid
22:48:22 <oklopol> hmm
22:48:31 <ehird`> oklopol: ok
22:48:47 <ehird`> oklopol: is (X -> Y ...) or similar forms valid, or is (-> X Y Z ...) the only 'pattern match' case
22:48:53 <oklopol> only the latter
22:49:01 <oklopol> -> and = are special this way
22:49:57 <oklopol> you can use (a -> b) and (a = b) to get -> and = to work as normal operators... but well, that'd be retarded, ofc :-)
22:51:38 <ehird`> oklopol: ok
22:51:41 <ehird`> oklopol: is = variadic?
22:51:44 <ehird`> or just: (= a b)
22:51:45 <oklopol> no.
22:51:47 <oklopol> just that
22:51:50 <ehird`> okay
22:51:58 <oklopol> i need to go now, so ask quickly if you have more
22:52:00 <ehird`> oklopol: so, awesome: i'm going to parse (-> a b) as patternnodes
22:52:06 <ehird`> and (= a b) as assignment nodes
22:52:21 <ehird`> oklopol: and, (a b c d) will be a parse error
22:52:25 <ehird`> oklopol: also when will you be back?
22:53:17 <oklopol> hmm
22:53:19 <oklopol> tomorrow :|
22:53:31 <oklopol> it should be a parse error, yeah
22:53:55 <oklopol> you will prolly have the implementation ready by then
22:54:16 <oklopol> bye!
22:54:17 <oklopol> ->
23:04:13 -!- Corun has joined.
23:08:31 -!- timotiis has joined.
23:32:14 <ehird`> http://en.wikipedia.org/wiki/Datalog
23:32:15 <ehird`> discuss
23:38:37 <ehird`> Or don;t
23:38:40 -!- olsner has quit ("Leaving").
23:46:37 <ehird`> :D
23:50:32 <ehird`> Nobody alive?
23:58:35 <SimonRC> hm
2008-04-15
00:00:52 <ehird`> SimonRC: its interseting
00:00:55 <Slereah> No.
00:01:36 * SimonRC goes to bed
00:01:40 <SimonRC> ( o/~ # Pedants. / Hgh / What are they good for? / Designing air-trafic control systems. # )
00:03:12 -!- Corun has quit ("This computer has gone to sleep").
00:03:49 <ehird`> SimonRC: bye
00:03:53 <ehird`> Slereah: :P
00:08:11 <ehird`> I wonder what databases have many-to-many as their primitive relationship.
00:08:18 <ehird`> You can do many-to-one and one-to-many based on those.
00:16:43 <ehird`> nobody interested in databases?
00:28:57 * Sgeo is in a database class
00:29:07 <Slereah> http://www.itwire.com/content/view/13339/53/
00:29:08 <Slereah> Heh.
00:35:58 -!- timotiis has quit (Read error: 110 (Connection timed out)).
00:51:21 <ehird`> Sgeo: Huh?
00:53:30 <Sgeo> Why huh?
00:55:25 <pikhq> My good God, my math teacher last year is such a geek. . .
00:55:38 <pikhq> Him and his son are going to the Shadowmoor prerelease tournament.
00:55:53 <pikhq> (they're doing two-headed giant)
00:56:01 <Slereah> Well, he has a son.
00:56:12 <Slereah> So that means that he had sex at one point, I suppose.
00:56:18 <Slereah> He can't be that much of a dork.
00:56:32 <pikhq> Having relations with the opposite gender does not eliminate geekiness.
00:56:48 <Slereah> Does it not?
00:56:54 <pikhq> I have a girlfriend; does that make me un-geeky?
00:57:00 <Slereah> I could market some sort of cure otherwise.
00:57:08 <pikhq> LMAO
00:57:33 <Slereah> It would be like a whore house in a computer lab.
00:58:04 <pikhq> Meanwhile, I'll just be amused that I'm going to a prerelease tournament with my *math teacher*, of all things. :p
00:58:13 <ehird`> <Sgeo> Why huh?
00:58:16 <ehird`> your statement made no sense
00:58:19 <ehird`> * Sgeo is in a database class
00:58:29 <Sgeo> I'm taking a database class in college.
00:58:33 <ehird`> pikhq: You said that a few days ago.
00:58:34 <ehird`> Sgeo: Oh.
00:58:40 <pikhq> ehird`: Oh.
00:58:49 <ehird`> Sgeo: Let me guess: It's totally full of relational theory
00:58:54 <ehird`> Or.. not.
00:59:08 <Sgeo> We just got through Database normalization.
00:59:12 <ehird`> Heh.
00:59:58 <Sgeo> Are you here when I'm in here thursday mornings?
01:00:31 <ehird`> I am in here most any day because I have nothing better to do
01:00:39 <ehird`> But define 'morning' in GMT
01:01:04 <Sgeo> A bit past 12:30EST actually
01:01:16 <Sgeo> So not really even morning where I am
01:01:26 <ehird`> GMT.
01:01:35 <ehird`> I am a timezone bigot! :D
01:01:41 <pikhq> Sgeo, you're currently on EDT.
01:01:46 <pikhq> ;)
01:01:51 * Sgeo is not a time person
01:02:00 <pikhq> EDT, IIRC, is UTC-4.
01:02:55 <Slereah> "Call it what you want, I don't care. I make six figures being a general practitioner with a trade-school bachelor's that, in retrospect, I didn't need. I have never even needed to use high school algebra on the job. Most brilliant mathematicians and computer scientists will be stuck in academia or staff-level drone positions for their entire careers because they don't have any soft skills or business sense. They are forever
01:03:03 <Slereah> That guy is like the cool dude of computing!
01:03:15 <Slereah> He probably has all sorts of popped collars.
01:03:21 <pikhq> And I hate cool dudes.
01:04:02 <pikhq> "I have never even needed to use high school algebra on the job." Apparently, he's never had to do any algorithm more complicated than shell sort.
01:04:12 <pikhq> ;p
01:04:55 <Slereah> Since the last big program I had to write was to treat nuclear physics datas, I had to throw in a little math.
01:05:24 <Slereah> Didn't work though. I suck at C for manipulating files.
01:05:31 <pikhq> "Stuck in academia." Is being in academia as bad as all that?
01:05:46 <pikhq> (oerjan's not here, so I can't really know)
01:07:02 <lament> programming pretty much is high school algebra
01:07:14 <Slereah> "
01:07:16 <Slereah> Hey, you computer scientists...you are leaving your "I ride a high horse" comments on a web page that was probably designed, coded, managed, etc, by people who have no need for anything at all beyond basic algebra, so I would say that the article is correct -- it is not much algorithims/math that creates value, it is the thoughtful expression of a process.
01:07:17 <Slereah> Heh.
01:07:23 <Slereah> The comments are so awesome.
01:08:28 <pikhq> Link, please.
01:08:48 <ehird`> lament: but orthogonal to it
01:08:52 -!- kwertii has joined.
01:08:55 <ehird`> same difficulty, but not equals
01:08:56 <Slereah> Already gave it
01:08:59 <ehird`> they overlap of course
01:09:00 <Slereah> http://www.itwire.com/content/view/13339/53/
01:20:31 <Slereah> "
01:20:31 <Slereah> As an artist who has long been interested in computer programming I'm very interested in the philosophical (ontological and epistemological) aspects of computer programming (including mathematics and language) -but it does seem that (even in the arts) these aspects have become buried deeply out of sight =largely because of academic and commercial interests it seems.
01:20:59 <GregorR> I don't agree with that statement.
01:21:28 <Slereah> I lolled at that statement.
01:21:32 <GregorR> Certainly computer /programming/, as the menial engineering field it has become, shows this flaw, but I don't think it's true of computer /science/ at all.
01:21:48 <GregorR> (That is, I don't think it's true of academia)
01:22:36 <GregorR> Mind you, I'm trying not to lol because of the stupid way this is written :P
01:22:51 <lament> not sure what's stupid about that comment
01:22:52 <Slereah> The comments are a gold mine.
01:23:00 <Slereah> It's like a gigantic flamewar.
01:23:31 <lament> it's not at all obvious that programming should be related to math
01:23:40 <lament> (shouldn't it be related to language instead?)
01:23:56 <Slereah> "I really like cats and programming."
01:23:58 <GregorR> What I find silly about the comment is that the wording there is unnecessary, it's just there to go "OOH I'M SO SMART I'M A PHILOSOPHER BLAH BLAH BLAH"
01:24:12 <lament> "computer science" involves math simply because it's a science
01:24:16 <lament> GregorR: what's unnecessary there?
01:24:40 <lament> GregorR: "ontological" and "epistemological" are real words, they actually mean stuff
01:24:55 <GregorR> I'm not claiming that they don't.
01:25:00 <GregorR> I don't think anything was invented.
01:25:06 <GregorR> I just don't think they add anything to the comment.
01:25:09 <GregorR> Except long words.
01:26:04 <pikhq> "The algorithm is not the essential paradigm of computer science", he proclaims.
01:26:16 <pikhq> Alright. Sort a list without an algorithm.
01:26:21 <pikhq> You have infinite time.
01:26:24 <pikhq> Begin. . . Now.
01:26:46 <lament> GregorR: of course they add to the comment. Without them, it would say "i'm very interested in the philosophical aspects of computer programming".
01:26:59 <lament> that just makes you sound like a moron who has no idea about philosophy or computer programming
01:27:05 * GregorR bashes his head into the wall.
01:27:28 <pikhq> Instead, it makes him sound like a *well-educated* moron who has no idea about philosophy or computer programming. ;)
01:27:39 <GregorR> *ding*
01:28:04 <GregorR> Why do I ever get into arguments online? Soooo pointless. </>
01:28:20 <lament> i don't understand this at all
01:28:44 <pikhq> "An operating cannot be deterministic"
01:28:47 <lament> precise terminology is good
01:28:49 <pikhq> Operating system, rather.
01:29:27 * pikhq laughs his ass off until the end of time
01:29:47 <pikhq> "An operating system does not terminate"
01:29:58 <pikhq> Hrm. I dunno what shutdown -h does.
01:30:06 <pikhq> *Can't* be halting.
01:31:10 <lament> ontology is actually a pretty cool subject, ESPECIALLY as it related to computer programming
01:31:28 <lament> is code data? or is data code? or is it both at once? :)
01:31:29 <Sgeo> It doesn't HAVE to terminate due to internal causes..
01:31:44 <lament> s/related/relates
01:32:22 <pikhq> Sgeo: I can make a deterministic, halting operating system.
01:32:27 <Slereah> Plus, an algorithm doesn't have to terminate either.
01:32:39 <pikhq> And he stupidly assumes that. . . Slereah has that covered.
01:32:55 <Slereah> Hell, the original never terminated!
01:33:07 * pikhq can easily make a deterministic operating system.
01:33:34 <pikhq> Am I allowed to not use any non-deterministic hardware on the computer? :p
01:33:39 <lament> so what's an algorithm?
01:33:51 <Slereah> pikhq : Are you going to use any atoms?
01:33:52 <pikhq> A sequence of steps.
01:34:09 <pikhq> Slereah: Fine. Any physical machine will, by its very nature, be slightly non-deterministic.
01:34:16 <lament> a sequence of steps?
01:34:23 <Slereah> *series of tube
01:34:23 <lament> is a haskell function an algorithm?
01:34:34 <pikhq> Poor definition perhaps, but a fairly intuitive one.
01:34:45 <Slereah> Well, lambda calculus is done by a sequence of step
01:34:50 <Slereah> When applying beta conversion
01:34:55 <Slereah> So I assume that yes.
01:35:08 <lament> so reducing LC is done by an algorithm
01:35:16 <lament> but LC itself is not an algorithm, it's just an expression
01:35:20 <lament> a bunch of symbols
01:35:22 <lament> isn't that so?
01:35:29 <Slereah> Well, it also has transformation rules.
01:35:31 <pikhq> True. It's a way of defining algorithms.
01:35:35 <Slereah> They're as important!
01:35:43 <lament> pikhq: so what's an algorithm?
01:36:02 <lament> presumably not a sequence of steps, because there're no steps in fac n = product [1..n]
01:36:08 <lament> no sequence, either
01:36:28 <lament> it's a working program, though
01:36:29 <ehird`> A sequence of steps is a good abstraction!
01:36:32 <Slereah> Well, there is at least one!
01:36:33 <ehird`> Imperative programs can be beautiful.
01:36:44 <pikhq> Would you like a formal definition?
01:36:59 <lament> is it a useful one?
01:37:08 <pikhq> It's nonexistent, actually.
01:37:17 <ehird`> lament: Yes! There are QUITE A FEW languages based on it..
01:37:38 <lament> I think what that article really talks about
01:37:41 <pikhq> Unless you define 'algorithm' as 'anything that can be expressed in a Turing-complete language'.
01:37:45 <lament> is operational vs. denotational semantics
01:37:59 <lament> his "process expression" is simply operational semantics
01:38:17 <lament> "A logic circuit is an expression of a logical process"
01:39:18 <lament> this makes sense
01:39:43 <lament> you could talk of the "algorithm" that the logic circuit implements, of course
01:42:24 -!- ehird` has quit (Read error: 104 (Connection reset by peer)).
02:18:50 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
02:47:13 -!- Slereah has joined.
02:56:36 -!- adu has joined.
03:41:19 -!- Tritonio_ has quit (Remote closed the connection).
04:00:48 -!- adu has quit ("Bye").
04:56:41 <Sgeo> G'night all
04:57:29 -!- Sgeo has quit ("Ex-Chat").
05:16:22 <RodgerTheGreat> pikhq: you should see this: http://rodger.nonlogic.org/images/aldez/
05:18:40 <pikhq> I <3
05:18:52 <RodgerTheGreat> :D
05:18:55 <pikhq> Now, check this out: http://video.google.com/videoplay?docid=5737070239476680627
05:18:58 <pikhq> (not me)
05:19:00 <RodgerTheGreat> it's the intro to a game I'm making
05:19:09 <pikhq> (just totally fucking awesome)
05:19:16 <RodgerTheGreat> I own his CD, "The art of motion"
05:19:17 <RodgerTheGreat> and yes
05:19:54 <pikhq> Ah. Good taste.
05:26:05 * RodgerTheGreat is listening to Hiphopopotamus Vs. Rhymenocerous (Featuring Rhymenocerous And The Hiphopapoatumus) by Flight Of The Conchords from Flight Of The Conchords (Original Staging)
06:06:03 <lament> i'm the hiphoppopotomus! My lyrics are bottomless! ...........
06:07:02 <pikhq> Bloody hell. I think I can go to be, and then find out that I need to do laundry.
06:07:07 <pikhq> There goes my sanity tomorrow.
06:07:42 <GregorR> Rarely do you see so many words have so little meaning.
06:08:06 <pikhq> Never read a paper by a liberal arts major, have you?
06:08:12 <GregorR> Heh :P
06:09:23 <pikhq> "And thus, we can conclude that the underlying symbolic metaphor of the /Mona Lisa/ is a misogynistic tyrade against all women everywhere, by giving a simple example of feminine beauty for all to despise."
06:09:31 <pikhq> (translation: I am full of shit.)
06:09:58 -!- calamari has joined.
06:16:41 <calamari> hi
06:24:07 <calamari> GregorR: you here?
06:27:08 <RodgerTheGreat> pikhq: spoilers beware, but I've added the frames for the end of the demo we're finishing this week: http://rodger.nonlogic.org/images/aldez/
06:32:46 <GregorR> calamari: Not very, but a bit.
06:33:08 <calamari> GregorR: you need a site map :P ls -R would work in a pinch.. hehe
06:33:20 <calamari> location of egobot?
06:33:24 <GregorR> Site map? My site needs any sort of organization at all :P
06:33:29 <GregorR> EgoBot is on the Eso files archive.
06:33:33 <calamari> ahh ok
06:33:35 <calamari> thaks
06:33:50 <calamari> i need to rip off part of your code since I'm too lazy to write it myself
06:34:16 <GregorR> It's in C++.
06:34:24 <GregorR> Well, it's in extremely C-ish C++.
06:34:42 <calamari> yeah
06:35:00 <calamari> been messing around with a qemu sandboxed mini linux
06:35:22 <calamari> got it booting up and starting telnetd so now I just need to add the bot wrappers
06:36:06 <calamari> ooh 11.1 MB getting bigger
06:37:04 <calamari> I should probably provide a C compiler tho.. what do you think? right now it only has python
06:38:20 <calamari> wonder how much that'll bloat it
06:44:56 <GregorR> Use tcc
06:45:01 <GregorR> gcc = much bloat, tcc = tiny
06:57:27 <calamari> good idea
06:58:14 <calamari> I'll have to figure out how to cross compile that for uclibc
07:02:50 <GregorR> Oh 8-O
07:02:53 <GregorR> G'luck :P
07:18:13 <GregorR> calamari: So, why did you randomly find me on [shivers down the spine] facebook?
07:20:17 <calamari> GregorR: I was checking to see if anyone I knew was in the esoteric group
07:20:35 <calamari> so then I searched for a few people in the chat room
07:20:43 <calamari> you were the lucky one ;)
07:21:11 <calamari> yeah facebook is pretty lame
07:21:50 <calamari> I only joined it because IBM promoted it for something, don't even remember now
07:35:03 -!- kwertii has quit ("bye").
07:37:33 -!- Iskr has joined.
07:46:24 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:47 -!- olsner has joined.
10:08:37 -!- jix has joined.
11:10:00 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
11:10:10 -!- oklopol has joined.
11:33:26 -!- Corun has joined.
12:49:55 -!- Corun has quit ("This computer has gone to sleep").
13:02:23 -!- timotiis has joined.
14:39:17 -!- Corun has joined.
15:57:17 -!- Corun has quit ("This computer has gone to sleep").
16:47:03 -!- Corun has joined.
17:02:37 -!- Corun has quit (Read error: 104 (Connection reset by peer)).
18:42:03 -!- ehird` has joined.
18:42:06 -!- ehird has joined.
18:42:21 -!- ehird` has left (?).
18:50:49 <ehird> oklopol: oko
18:51:12 -!- timotiis has quit (Connection timed out).
18:53:14 -!- oklofok has joined.
18:56:44 <ehird> oklofok: oko2
18:57:45 -!- jix has quit (Nick collision from services.).
18:57:55 -!- jix has joined.
18:59:56 <oklofok> gto
18:59:58 <oklofok> jh
19:00:13 <ehird> oklofok: unfortunately noooo okohird YET
19:00:23 <ehird> didn't work on it much after you left, got distracted :(
19:00:29 <ehird> however, i will continue the parser
19:01:17 <ehird> oklofok: it will have crazily cool parse errors though
19:01:25 <ehird> like (a) -> 'Application with <2 expressions'
19:01:37 <ehird> ( -> 'EOF while parsing application'
19:01:50 <ehird> oklofok: OH, and my cons has a bug
19:01:57 <ehird> [$pb :] should be [$pb $:] if i am not mistaken
19:02:08 <oklofok> hmm
19:02:10 <oklofok> yes.
19:02:36 <ehird> oklofok: when making oklotalk i suggset trying to cut down on the $ and []s
19:02:38 <ehird> they're quite ugly
19:03:06 <oklofok> [] is implicit in oklotalk
19:03:22 <oklofok> and $ was originally §, but wasn't ascii so i changed it
19:03:28 <oklofok> indeed, i don't like $
19:03:31 <oklofok> §atom
19:03:35 <oklofok> i liked that
19:05:12 <ehird> oklofok: [] is implicit -- can;t you find a way to add elegant multi-arg funcalls to the APL-style?
19:05:14 <ehird> would be really neat
19:05:26 <ehird> oklofok: and it's more having to mark it full stop, really
19:06:30 <oklofok> http://xkcd.com/329/
19:06:39 <oklofok> whaddya mean
19:06:59 <ehird> oklofok: look at my cons code
19:07:07 <ehird> replace $ with any symbol - its still too much
19:07:29 <ehird> it will need some good thinking to work out how to cut them down though
19:08:12 <oklofok> what did you mean by that apl thing
19:08:26 <ehird> oklofok: like, instead of passing around lists when you want to pass like 5 arguments
19:08:33 <ehird> find out a way to actually have 5(etc)-argument functions
19:08:42 <ehird> while keeping in with the elegant apl/oklotalk hybrid semantics
19:09:18 <oklofok> what exactly do you mean?
19:09:22 <oklofok> currently, you would do
19:09:24 -!- oklopol has quit (Read error: 113 (No route to host)).
19:09:28 <oklofok> func Arg Arg Arg Arg Arg
19:09:35 -!- oklofok has changed nick to oklopol.
19:09:49 <ehird> oklopol: yes, but it would be passed as [arg arg arg arg arg ] or something
19:09:49 <ehird> right?
19:09:58 <oklopol> yes
19:10:00 <ehird> I mean, funcs are only unary or dyadic
19:10:01 <ehird> so
19:10:04 <ehird> what i'm saying is that's kludgey
19:10:09 <ehird> i bet you can do it without implicit []s
19:10:13 <ehird> REALLY support them
19:10:46 <oklopol> it's not kludgey, i disagree :)
19:10:57 <oklopol> anyway, going to the shop!
19:15:28 <ehird> oklopol: :(
19:15:33 <ehird> it iiiis kludgey
19:17:49 -!- oklopol has quit (Read error: 113 (No route to host)).
19:18:14 -!- oklopol has joined.
19:18:28 <oklopol> ehird: i don't see the point in not making it a list... only possibility for what i can imagine *actually supporting n-adic functions* might mean is having to match all args separately, which would only complicate stuff.
19:18:33 <oklopol> that was an obscure sentence, but anyway
19:18:35 <oklopol> i don't see the point
19:18:53 <ehird> oklopol: but :(
19:19:41 <oklopol> :P
19:19:50 <oklopol> well tell me the advantages :)
19:19:59 <oklopol> oklotalk doesn't aim for conceptual perfection.
19:25:05 <ehird> oklopol: well, implicit [] is just weird
19:25:10 <ehird> what if you want to pass an array as the last param?
19:26:54 <ehird> oklopol: = and -> are the only special cases rigt
19:27:05 <ehird> and what is a ->node called?
19:27:07 <ehird> = is an assignmentnode
19:27:09 <ehird> what about ->
19:28:22 <ehird> <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.
19:28:26 <ehird> yes -- golfscript
19:29:48 <lament> and lazy k!
19:31:06 <ehird> !dog god!
19:31:08 <EgoBot> Huh?
19:31:12 <ehird> !daemon dog bf ++++++++++[---------->,----------[>,----------]<[++++++++++.<]++++++++++.]
19:31:14 <ehird> !dog god!
19:34:17 <ehird> !undaemon dog
19:34:20 <EgoBot> Process 1 killed.
19:34:20 <ehird> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
19:34:31 <ehird> !dup !dup
19:34:42 <ehird> GregorR: EgoBrokent
19:35:05 -!- oklofok has joined.
19:35:18 <ehird> oklofok: foklo-ok
19:35:33 -!- oklopol has quit (Read error: 113 (No route to host)).
19:36:07 <ehird> !ps
19:36:09 <ehird> !ps d
19:36:10 <EgoBot> 2 ehird: ps
19:36:13 <EgoBot> 1 ehird: daemon dup bf
19:36:14 <EgoBot> 2 ehird: ps
19:36:19 <ehird> !dup lulz
19:36:23 <ehird> !undaemon dup
19:36:27 <EgoBot> Process 1 killed.
19:36:49 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
19:40:44 -!- oklopol has joined.
19:41:16 <ehird> oklopol: oko
19:46:00 <oklopol> oooko
19:46:09 <AnMaster> ok
19:46:13 <AnMaster> ;)
19:46:15 <ehird> bb
19:46:31 <oklopol> ehird: [] is also list
19:46:53 <oklopol> okokokokoko
19:47:05 <ehird> oklopol: okokokoko..
19:50:33 -!- oklofok has joined.
19:50:51 <oklofok> ehird: [] is also list
19:50:54 <ehird> yes
19:50:55 <oklofok> okokokokoko
19:50:55 <ehird> but oko.
19:50:57 <oklofok> also you can up into singleton with ^
19:50:59 <oklofok> in case those didn't come
19:51:01 <ehird> okokoko
19:52:17 <oklofok> func [Arg Arg Arg] == func Arg Arg Arg
19:52:35 <ehird> yes
19:52:37 <ehird> ugly
19:52:41 <oklofok> oh no
19:52:41 <ehird> but yeah
19:52:45 <ehird> what is a ->node called
19:52:48 <oklofok> in two meanings
19:53:05 <oklofok> "oh no" as in "who cares", and "oh no", as in "oh dear god you're wrong"
19:53:19 <oklofok> hmm
19:53:26 <oklofok> hmmhmm
19:53:32 <oklofok> i fail to remember
19:53:50 <oklofok> match node, i'd say
19:53:52 <ehird> okay
19:54:03 <oklofok> how is that ugly?
19:54:24 <ehird> thing,list,1app,2app,match,assign,atom,var(subclass of atom),int,strnig
19:54:28 <ehird> that's my ast
19:54:44 <oklofok> those are what i have, yeah
19:54:47 <ehird> oklofok: is ($-> a b) a match node
19:54:50 <ehird> or just (-> a b)
19:54:58 <oklofok> good point
19:55:02 <oklofok> only latter
19:55:57 <ehird> oklofok: same with =?
19:56:05 <oklofok> yes
19:56:24 <ehird> oklofok: what is (= a)
19:56:30 <oklofok> error
19:56:31 <ehird> is it an unary application of = to a
19:56:33 <ehird> or an error
19:56:33 <ehird> OK
19:57:04 -!- oklopol has quit (No route to host).
19:57:11 <ehird> oklofok: what about (-> a)
19:57:26 <oklofok> that's okay, i think.
19:57:32 <ehird> oklofok: what does it mean
19:57:40 <oklofok> hmm...
19:58:22 <oklofok> match on a, just return what would've been returned if it weren't for the match
19:58:31 <oklofok> my implementation fails on that.
19:58:39 <ehird> oklofok: returns []
19:58:40 <ehird> when you app it
19:58:41 <ehird> :P
19:58:49 <ehird> oklofok: are you sure it shoultn't be (-> a f)
19:58:50 <oklofok> yes, have no idea why, but lessee
19:58:51 <ehird> or even an error
19:59:17 <oklofok> no.. not an error
19:59:34 -!- sebbu2 has joined.
19:59:41 <oklofok> you should be able to do stuff like (= _ [4 5]) (-> [a b]) (+ a b)
20:00:23 <oklofok> err
20:00:25 <oklofok> of not
20:00:35 <oklofok> hmmhmm
20:00:39 <ehird> oklofok: i think (-> a) should be an error
20:00:51 <ehird> its either redundant (and only 2 chars shorter than its replacement) OR useless
20:01:03 <oklofok> ah
20:01:04 <oklofok> right
20:01:20 <oklofok> it was just for assignment, (-> [$set tail]) etc
20:01:51 <ehird> oklofok: yeah, that's kinda sucky
20:01:56 <ehird> mostly you'll want to return tail or similar
20:01:56 <ehird> s.
20:01:59 <ehird> so
20:02:13 <ehird> oklofok: my parser uses a neat trick
20:02:18 <ehird> it can .pop() because it reverses the input
20:02:50 <oklofok> neat, neat
20:03:01 <ehird> oklofok: did i mention my implementation uses unicode
20:03:08 <oklofok> hmmhmm, i think [] is a good thing to return, but i cannot quite see why my implementation does it
20:03:48 <oklofok> ah
20:04:00 <oklofok> that is one obscure way to make it return [] xD
20:04:15 <oklofok> also, try doing operations on the list
20:05:13 <oklofok> it's not an Lst, it's a python list :)
20:05:46 <ehird> oklofok: haha
20:06:03 <ehird> oklofok: my interp will have script capabilit
20:06:06 <ehird> maybe even a COMPILER
20:06:07 <ehird> into python
20:06:11 <ehird> yes with continuations
20:06:56 <oklofok> i'm gonna make a compiler later, would you recommend java or python bytecode? :)
20:07:00 <ehird> oklofok: is '2a' a valid atom
20:07:05 <oklofok> no
20:07:16 <oklofok> can't start with a number
20:07:24 <oklofok> but oklotalk-- has very retarded parsing rules
20:07:25 <ehird> oklofok: :((( that sucks
20:07:28 <oklofok> yes
20:07:31 <ehird> you should parse as a string
20:07:36 <ehird> then if everything's a digit make it an int
20:07:37 <oklofok> ...as a string?
20:07:38 <oklofok> i see
20:07:49 <ehird> oklofok: schemes do that
20:07:55 <ehird> 1+ is a valid id in a lot of them
20:08:00 <oklofok> ofc it is
20:09:02 <oklofok> anyway, i don't care much about that before you can extend syntax
20:09:21 <oklofok> i think i've come up with quite a nice way to do parsing for actual oklotalk
20:09:36 <oklofok> there will be a separate string type for strings with structure
20:09:41 <oklofok> well, list type ofc
20:11:05 <oklofok> will prolly integrate state lists, structured lists and pattern lists into just primitive lists later
20:11:11 <oklofok> but needs a lot of conceptual refinement
20:11:14 <oklofok> everything, really
20:13:41 <ehird> oklofok: oko
20:15:49 <ehird> oklofok: oops, atoms are special cases of vars
20:15:51 <ehird> not the other way around
20:16:00 <ehird> need a more generic name..
20:16:01 <ehird> NameNode
20:16:52 -!- sebbu has quit (Connection timed out).
20:16:53 -!- sebbu2 has changed nick to sebbu.
20:17:11 <ehird> oklofok: what breaks a node?
20:17:18 <ehird> is a2 'a2' or a,2
20:17:31 <ehird> just whitespace,(,),{,},[,],",$?
20:17:32 <ehird> or..
20:17:38 <oklofok> yes
20:17:39 <oklofok> the latter
20:17:44 <oklofok> umm
20:17:49 <oklofok> once you start a name
20:18:26 <oklofok> it continues until one of the ending parens of whitespace
20:18:44 <ehird> oklofok: does ( break it
20:18:47 <ehird> (-> a(b c))
20:18:49 <oklofok> no
20:18:51 <oklofok> that's okay
20:18:51 <ehird> wtf
20:18:52 <ehird> so that's
20:18:52 <ehird> a(b
20:18:53 <ehird> that sucks
20:18:55 <ehird> totally
20:19:06 <oklofok> sure
20:19:13 <ehird> oklofok: will you kill me if i break that
20:19:24 <ehird> ok, what about "
20:19:27 <oklofok> i don't consider it relevant.
20:19:27 <ehird> thats a closer AND an ender
20:19:28 <ehird> a"b
20:19:37 <ehird> and what about $
20:19:59 <oklofok> i already said what the rules are :)
20:20:03 <oklofok> a"b is okay
20:20:22 <oklofok> this is trivial stuff, who cares, is my opinion
20:20:30 <oklofok> :)
20:20:46 <oklofok> it will be made sane once i actually *make a syntax*
20:21:02 <oklofok> anyway
20:21:07 <ehird> so, oklofok: whitespace,),},]
20:21:09 <oklofok> for a clearer answer: yes, you can chan that
20:21:13 <oklofok> *change
20:22:02 <oklofok> the parser was whipped up in less than 10 minutes, before which i didn't have any idea how it should look.
20:22:10 <ehird> oklofok: 2a is 2,a right
20:22:14 <oklofok> yes.
20:22:18 <oklofok> that i'm not gonna change
20:22:36 <oklofok> but indeed, i guess making opening brackets break tokens is a must
20:24:54 <ehird> oklofok: is \n an escape sequence
20:24:55 <ehird> or: should it be
20:25:10 <oklofok> it is, and should be
20:25:30 <oklofok> \t is not
20:25:36 <oklofok> and shouldn't be, atm
20:25:54 <oklofok> i despise the tab character
20:26:23 <ehird> oklofok: why?
20:26:26 <ehird> think about it this way
20:26:31 <ehird> the tab has a semantic meaning for code
20:26:32 <ehird> it means:
20:26:35 <ehird> 'we are indenting now, ok'
20:26:37 <ehird> now
20:26:38 <ehird> the problem is
20:26:45 <ehird> that editors used to interpret that as '+N spaces'
20:26:50 <ehird> instead of semantically
20:26:57 <ehird> and people tried to use tabs for alignment
20:27:07 <ehird> so now everyone uses soft spaces, and people can't decide how they want to look at code
20:27:12 <ehird> and everything is less semantic
20:27:15 <ehird> and quite a few bytes are wasted.
20:27:21 <ehird> so in summary:
20:27:31 <ehird> tabs rock, spaces suck. but the real world means we must use spaces
20:28:09 <oklofok> well i wasn't thinking about code, i'm more an ast level guy
20:28:17 <oklofok> tabs are nice for that yeah
20:28:24 <oklofok> but, i have other issues with them
20:29:02 <ehird> oklofok: like.
20:30:07 <oklofok> let's not get into that
20:30:10 <ehird> :)
20:30:20 <ehird> oklofok: did tabs abuse you when you were young?!111212
20:30:24 <oklofok> :)
20:30:33 <oklofok> i have issues with a lot of things
20:31:01 <ehird> oklofok: so is "\r" literally a backslash then an r
20:31:08 <oklofok> no
20:31:12 <ehird> an error?
20:31:13 <oklofok> it is a syntax error
20:31:38 <ehird> oklofok: just need to parse assignment and voila
20:31:40 <ehird> i'm done with the parser
20:31:41 <oklofok> either have characters you need in source code or use the chr function for now.
20:31:43 <ehird> then i haev to er, test it
20:31:55 <oklofok> well good for you
20:32:19 <ehird> oklofok: :D
20:32:23 <ehird> continuations, compilation..
20:32:26 <ehird> AWESOMETALK
20:32:28 <ehird> --
20:32:30 <oklofok> :)
20:32:55 <ehird> Awesometalk without the -- will be THE BEST ENTERPRISE OKLOTALK
20:33:10 <oklofok> heh
20:33:31 <ehird> oklofok: it will cost $32.99
20:33:36 <ehird> and include a MEGA IDE
20:33:43 <oklofok> perhaps we can spend our lives making better and better oklotalk interps and compilers topping each other until i die of age..
20:34:22 <Slereah> Either that.
20:34:27 <Slereah> Or we could buy cotton candy.
20:34:31 <oklofok> hmm
20:34:33 <Slereah> THE CHOICE IS YOURS
20:34:36 <oklofok> you make a decent point
20:34:53 <Slereah> It's quite a conundrum.
20:34:59 <ehird> <oklofok> perhaps we can spend our lives making better and better oklotalk interps and compilers topping each other until i die of age..
20:35:08 <ehird> and trying to get people to actually use it
20:35:21 <oklofok> hmm... well then count me out :P
20:35:51 <oklofok> i don't care whether people use my stuff really
20:35:52 <ehird> oklofok: imagine when google releases its first oklotalk application
20:36:11 <oklofok> this is the reason why i don't aim for perfection in the parsing rules etc.
20:36:23 <ehird> oklofok: OH NO
20:36:26 <ehird> I have not made lists yet
20:36:27 <oklofok> :P
20:36:32 <oklofok> oh
20:36:47 <ehird> not hard
20:36:48 <oklofok> oh, right
20:36:50 <ehird> i can just rip off the Thing code
20:37:08 <oklofok> you said something about it being lame that i use the python stack
20:37:14 <oklofok> i remember the reason now
20:37:20 <ehird> what
20:37:37 <oklofok> it was just that you need to do oklotalk calls in pattern matching, and i hadn't taken that into account
20:37:46 <oklofok> so i'd have had to change the code a bit
20:38:02 <ehird> oklofok: ah
20:38:03 <oklofok> so i just started over, and the randomizer in my head didn't do it stack-based again
20:38:23 <ehird> >>> print parse('[a b c]')[0]
20:38:23 <ehird> [a b c]
20:38:29 <ehird> oklofok: an oklotalk parser in 1-3 man hours
20:38:33 <ehird> of not much work
20:38:34 <ehird> well
20:38:36 <ehird> oklotalk--
20:38:55 <oklofok> anyway, i'm pretty sure i could reimplement all of oklotalk much better now that i know the scoping/evaluation/parsing rules, so beware, i'll remake it if you finish yours, and it will own it.
20:38:58 <oklofok> hmm
20:39:03 <oklofok> some bad use of "it"
20:39:16 <ehird> oklofok: oh sure ;p
20:39:22 <ehird> but my oklotalk-- will support CALLING INTO PYTHON
20:39:32 <ehird> though if you have this:
20:39:33 <oklofok> oklotalk-- parsing is about 10 man-minutes of work, i have no idea about oklotalk, as its syntax isn't even ready yet
20:39:46 <ehird> oklofok: ah but i have very specific errors
20:39:49 <ehird> anyway
20:39:52 <ehird> oklotalk-- calls python --> python calls oklotalk-- -> oklotalk-- code
20:40:02 <oklofok> heh
20:40:05 <ehird> the rightmost oklotalk-- code's continuations will only be up to the python one
20:40:14 <ehird> since obviously you can't capture the python and upwards continuation
20:40:14 <ehird> BUT
20:40:21 <ehird> that's never ever gonna happen now is it :p
20:41:00 <ehird> oklofok: damn, this parser works FIRST TIME
20:41:09 <oklofok> mine did too
20:41:11 <ehird> i literally implemented 50% of it just now, without reloading
20:41:16 <ehird> and it is all working, with nice error messages
20:41:17 <ehird> crazy
20:41:24 <oklofok> i just wrote it, and assumed it worked :)
20:41:33 <oklofok> hmm
20:41:36 <ehird> mine isn't hideously broken though
20:41:36 <ehird> :))
20:41:40 <oklofok> is mine?
20:41:43 <oklofok> don't think so
20:41:45 <ehird> in error cases
20:41:46 <ehird> yeah
20:41:53 <oklofok> i see
20:41:55 <oklofok> how exactly?
20:42:10 <ehird> oklofok: it returns weird stuff
20:42:11 <ehird> like lists
20:42:18 <oklofok> show example
20:42:22 <ehird> mine always raisea n exception that has reasonable text
20:42:38 <ehird> oklofok: also, yours is broken
20:42:43 <oklofok> show example
20:42:43 <ehird> you cant pass a string as an argument
20:42:46 <ehird> it tries to parse as an int
20:43:30 <oklofok> show example
20:43:36 <ehird> oklofok: jesus christ
20:43:52 <oklofok> have no idea what you mean
20:43:55 <ehird> well
20:43:57 <ehird> look in logs
20:43:58 <ehird> we found it
20:44:12 <oklofok> you mean (lol "asdasdads")
20:44:13 <oklofok> ?
20:44:33 <oklofok> have no idea what you mean
20:45:38 <ehird> oklofok: look in logs
20:45:52 <ehird> okay
20:45:53 <ehird> parser done
20:45:58 <ehird> now i guess i should do types
20:46:47 <oklofok> ehird: i won't, i'll just assume you're lying
20:46:49 <oklofok> :)
20:47:06 <ehird> oklofok: ass
20:47:33 <ehird> <ehird>:: (error "DIE DIE DIE")16:40:55
20:47:33 <ehird> <otobot>An error: invalid literal for int() with base 10: 'DIE DIE DIE'
20:47:41 <ehird> <ehird>:: (+ "DIE DIE DIE" "oklotalk")16:41:18
20:47:41 <ehird> <otobot>An error: invalid literal for int() with base 10: 'oklotalk'
20:48:32 <ehird> class Oko(object):
20:48:35 <ehird> cutest code i've written all day
20:48:53 <ehird> Okoer should be the interpreter class
20:48:55 <ehird> but that's silly
20:48:56 <oklofok> hmm
20:48:57 <ehird> okit
20:48:58 <ehird> err
20:49:00 <ehird> okoist
20:49:02 <oklofok> the first one is correct
20:49:07 <oklofok> second, doesn't err
20:49:30 <ehird> oklofok: well its from logs
20:51:30 <ehird> oklofok: should objects (okos) belong to okoists (interpreters)
20:51:32 <ehird> or independent
20:53:00 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net).
20:53:00 -!- Deformative has quit (brown.freenode.net irc.freenode.net).
20:53:00 -!- AnMaster has quit (brown.freenode.net irc.freenode.net).
20:53:00 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
20:53:00 -!- Quendus has quit (brown.freenode.net irc.freenode.net).
20:53:00 -!- Deformati has joined.
20:55:04 -!- AnMaster has joined.
20:55:22 -!- Quendus has joined.
20:56:43 <AnMaster> anyone know the mail or something of ais
20:56:45 <AnMaster> in an EXTREMELY silly way
20:56:47 <AnMaster> #ifdef _POSIX_SOURCE \n #include <stdarg.h> \n #else \n #include <varargs.h> \n #endif
20:56:49 <AnMaster> well for some reason it does not define _POSIX_SOURCE on freebsd........
20:59:17 -!- RodgerTheGreat has joined.
21:01:01 -!- oerjan has joined.
21:05:38 <oklofok> ehird: strings, indeed, don't have much functionality in oklotalk--, mainly because i'm very lazy when it comes to the trivial stuff
21:05:47 <oklofok> but there is no parse error there
21:06:02 <oerjan> <AnMaster> anyone know the mail or something of ais
21:06:11 <oerjan> as a matter of fact yes
21:06:19 -!- GregorR has joined.
21:06:32 <AnMaster> oerjan, ah so I can send a bug report
21:06:36 <AnMaster> thanks could you /msg it?
21:07:58 <oerjan> I don't know if that's where he wants bug reports though
21:08:33 <oklofok> just spit it out, man!
21:12:28 <ehird> AnMaster: post to usenet
21:12:30 <ehird> alt.lang.intercal
21:12:39 <AnMaster> ehird, sent him a mail
21:12:49 <ehird> /sigh
21:12:56 <AnMaster> ehird, and I don't have any read/write news account
21:13:00 <AnMaster> so I can't post it there
21:13:06 <ehird> google offers them for free.
22:14:51 -!- Iskr has quit ("Leaving").
22:18:25 <AnMaster> Deewiant, WTF does the I of PERL fingerprint do
22:18:34 <AnMaster> Deewiant, I looked at CCBI's code and it make no sense
22:29:12 -!- jix has quit ("CommandQ").
22:47:21 -!- timotiis has joined.
22:53:34 -!- RodgerTheGreat has quit.
23:09:39 <ehird> hello chaps
23:09:52 -!- olsner has quit ("Leaving").
23:11:22 <ehird> oklofok: oh NO
23:11:23 <ehird> parser BUG
23:11:52 <ehird> fix'd
23:14:19 <ehird> oklofok: soo
23:14:26 <ehird> what's the general structure of your oklotalk-- interp?
23:14:31 <ehird> does it have multiple interps at one time?
23:21:59 <ehird> oklofok: ping
23:30:51 <ehird> ...
23:40:29 <ehird> oklofok: ping
23:44:12 <oklofok> pong
23:44:35 <oklofok> whaddyamean
23:44:39 <oklofok> multiple interps at one time?
23:44:42 <oklofok> i'm going to sleep btw
23:44:45 <oklofok> so be fast
23:45:18 <oerjan> to sleep, perchance to dream
23:45:36 <ehird> heh
23:45:36 <oklofok> no you can't purchase my dreams
23:45:43 <ehird> wish i could be ast
23:45:45 <ehird> fast
23:45:50 <ehird> but busy:(((
23:45:59 <oklofok> "multiple interps at one time"?
23:46:53 <oklofok> well
23:47:01 <oklofok> to answer what i think that sentence means...
23:47:17 <oklofok> the interpreter doesn't have interpreters at all, it only *is* one
23:47:23 <ehird> oklofok: ok
23:47:25 <oklofok> so no, it doesn't have multiple interps at one time
23:47:30 <ehird> so i cant have 2 'contexts'
23:47:34 <oklofok> oh
23:47:42 <oklofok> r=oklotalk.Runner()
23:47:49 <ehird> aha
23:47:51 <oklofok> r.run(oklotalk_code)
23:47:52 <ehird> thanks
23:47:54 <ehird> :)
23:47:57 <oklofok> returns result, stores context
23:48:03 <oklofok> you can use that from the pyc of c
23:48:06 <oklofok> *ofc
23:48:11 <ehird> oklofok: yeah
23:48:13 <oklofok> not that you didn't know that
23:48:18 <ehird> hard to use python without the src though :))
23:48:25 <oklofok> indeed.
23:48:25 <ehird> its not really oriented to that
23:48:39 <oklofok> i told you about Runner, but quite briefly
23:48:53 <oklofok> whhell
23:48:56 <oklofok> you can just dir the modules
23:49:18 <ehird> yeah
23:49:20 <ehird> even so
23:49:41 <oklofok> oklotalk.run will run contextless pieces of code
23:49:55 <oklofok> in case you're really in a hurry!
23:50:09 <ehird> :)
23:50:18 <ehird> oklofok: i bet £999 that you won't actually go to sleep
23:50:22 <oklofok> anyway, night-o
23:50:23 <oklofok> :O
23:50:29 <ehird> and that you'll stay here
23:50:30 <ehird> ;)
23:50:31 <oklofok> YES I WILL
23:50:38 <ehird> suuure
23:50:56 <oklofok> there's a naked chick next to me
23:51:04 <oklofok> still want to bet?
23:51:10 <ehird> oklofok: ok, good point
23:51:13 <ehird> i retract my bet
23:51:14 <oklofok> :)
23:51:29 <oklofok> whhhell, wouldn't be the first time i choose oklotalk over a chick
23:51:35 <oklofok> but let's hope i succeed
23:51:37 <oklofok> see ya
23:51:38 <oklofok> ->
23:51:42 <ehird> oklofok: WHAT ABOUT SCOPING
23:51:48 <oklofok> ...
23:51:48 * ehird watches oklofok reappear
23:51:58 <oklofok> you're fucking evil.
23:52:02 <ehird> totally
23:52:09 <oklofok> you know all about scoping, man
23:52:18 <ehird> nah
23:52:24 <ehird> what about dynamic container singletons
23:52:25 <oklofok> static, dynamic look-up if static finds nothing.
23:52:30 <oklofok> ...whut? :D
23:52:34 * oerjan still has doubts about the sleeping part
23:52:40 <ehird> dunno, better make up a meaning
23:52:41 <ehird> ok
23:52:42 <ehird> dynamic
23:52:43 <ehird> container
23:52:44 <ehird> singletons
23:52:50 <ehird> are containers
23:52:52 <ehird> that contain a dynamic variable
23:52:55 <ehird> and have set/get operations
23:53:02 <ehird> a -dynamically scoped- variable that is
23:53:12 <ehird> how does this interact with the stack?
23:53:28 <oklofok> hmph
23:53:40 <oklofok> err
23:53:41 -!- oerjan has quit ("Good night").
23:53:46 <oklofok> can you be more spesific...
23:53:55 <ehird> oklofok: its a structure
23:53:58 <oklofok> yes
23:54:00 <ehird> but instead of contianing structure-local lexicals
23:54:06 <ehird> it contains a dynamic variable reference
23:54:14 <oklofok> what's that, exactly, in oklotalk--?
23:54:17 <oklofok> can you code it?
23:54:31 <ehird> oklofok: maybe, dunno how to do the exact forcing
23:55:02 <oklofok> scoping is only done for variables
23:55:13 <ehird> oklofok: yes
23:55:15 <oklofok> i'm not sure what you mean here, so hard to say...
23:55:17 <ehird> but its a variable INSIDE a structure
23:55:19 <ehird> but i admit it
23:55:23 <ehird> i'm just trying to keep you here
23:55:25 <ehird> for me £999
23:55:25 <oklofok> inside it...
23:55:25 <ehird> ;)
23:55:28 <oklofok> like {a}
23:55:29 <ehird> srsly, go
23:55:29 <oklofok> :D
23:55:30 <ehird> :D
23:55:32 <oklofok> asdasdf
23:55:34 <ehird> oklofok: but
23:55:35 <ehird> like
23:55:36 <oklofok> okay, okay...
23:55:38 <oklofok> ...
23:55:40 <ehird> {(-> a ...)}
23:55:45 <oklofok> yarr
23:55:45 <ehird> but a is dynamically scoped
23:55:47 <ehird> and ... is {...}
23:55:52 <oklofok> umm
23:55:57 <oklofok> a isn't dynamically scoped
23:56:03 <ehird> i know
23:56:04 <oklofok> it's bound by the pattern match
23:56:05 <ehird> you force it to be
23:56:10 <oklofok> how?
23:56:14 <ehird> by using the other expressions
23:56:15 <ehird> like
23:56:27 <ehird> {magic setting stuff, (-> z {...}))
23:56:30 <ehird> and instead of z in the object
23:56:32 <ehird> use magic getting stuff
23:56:45 <ehird> the object 'contains' a dynamically scoped varialbe
23:56:59 <oklofok> i don't think you can do that.
23:57:05 <oklofok> but i'll really go now :D
23:57:07 <oklofok> see ya ->
23:57:29 <ehird> :D
23:57:32 <ehird> bye
23:58:30 <ehird> oklofok: you are still here.
2008-04-16
00:03:46 <Slereah> Ahah!
00:03:48 <Slereah> Gato works.
00:03:56 <Slereah> Maybe I can write the Andrei Machine 9000!
00:04:10 <ehird> Slereah: zgoshmgz
00:05:49 <Slereah> I am full of hope.
00:06:01 <Slereah> I really don't want to write it in Python.
00:06:13 <ehird> Slereah: whuts gato
00:06:46 <ehird> http://gato.sourceforge.net/http://gato.sourceforge.net/?
00:06:49 <Slereah> It's a program to write algorithms on graphs.
00:06:55 <Slereah> Yes, that one.
00:06:59 <ehird> Slereah: im sorry but that code is python
00:07:01 <ehird> they just embed it
00:07:05 <ehird> and add their own functions
00:07:25 <Slereah> Yes.
00:07:37 <Slereah> But what I mean is, I don't want to build everything
00:07:57 <Slereah> I am terrible at coding, so I really don't want to write the whole graph gestion myself
00:08:27 <Slereah> Plus, all my interpreters have some way of seeing what happens to the machine, and I don't want to make an exception.
00:09:19 <ehird> Slereah: Cool.
00:14:17 -!- timotiis has quit ("rebloodybooting! They said I wouldn't have to do this on linux!").
00:14:27 <ehird> hah
00:16:41 -!- timotiis has joined.
00:18:20 <ehird> timotiis: sorry
00:18:45 <timotiis> hehe
00:39:46 <AnMaster> http://rafb.net/p/dUgDuS45.html
00:39:53 <AnMaster> looks like ccbi is broken Deewiant ^
00:50:03 -!- Sgeo has joined.
00:53:14 -!- timotiis has quit (Connection timed out).
01:01:58 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
01:05:20 -!- Sgeo has joined.
01:17:05 <Sgeo> On Fark:
01:17:06 <Sgeo> "There are actually people named null, and yes, I've actually seen this cause problems in production database code. 'Null' was the last name where I saw it however."
01:26:31 <ehird> hmm
01:27:10 <ehird> public class Closure<T,U> { public Closure(Object... vars); public U apply(T arg); }
01:27:15 <ehird> e.g.
01:27:45 <ehird> new Closure<Integer,Integer>(a, b, c) { public Integer apply(Integer n) { return n + (Integer)this.vars[0]; } }
01:27:51 <ehird> this.vars={a,b,c}
01:28:01 <ehird> maybe nice if you are compiling a language to jvm
01:55:14 <oklofok> hah! ehird: i was not there!
01:55:25 <oklofok> *here
01:55:29 <ehird> oklofok: heh
01:57:13 <ehird> oklofok: but ... yeah
01:57:22 <ehird> that's also why you shouldnt compile oklotalk-- to the jvm, btw
01:57:25 <ehird> it doesn't like closures
02:00:10 <oklofok> i would probably make the compilation at a bit lower level
02:00:29 <oklofok> but python bytecode might be nicer
02:00:47 <oklofok> also, as i don't really like java, i don't really wanna use it's bytecode
02:00:48 <oklofok> :o
02:00:55 <oklofok> anyway, /me goes back
02:01:04 <oklofok> before you start asking again :-)
02:01:06 <oklofok> ->
02:27:05 -!- Quendus has quit (Read error: 113 (No route to host)).
02:27:42 -!- Quendus has joined.
02:30:10 <ehird> quendus
02:30:12 <ehird> haven't seen that name
02:30:13 <ehird> hi
04:06:47 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
04:25:02 <Sgeo> The Security Manager is vetoing my using Firebug in Fx3..
04:25:26 <Sgeo> >>> 2+2
04:25:26 <Sgeo> commandLine.evaluate FAILS: [Exception... "Security Manager vetoed action" nsresult: "0x80570027 (NS_ERROR_XPC_SECURITY_MANAGER_VETO)" location: "JS frame :: chrome://firebug/content/commandLine.js :: <TOP_LEVEL> :: line 100" data: no]
04:26:35 -!- fizzie has quit (Remote closed the connection).
04:26:39 -!- fizzie has joined.
04:38:56 -!- adu has joined.
05:00:34 <Sgeo> lol at http://youtube.com/watch?v=g3KufmUlF5M
05:00:39 <Sgeo> (I'm commented SJGster)
05:38:45 -!- calamari has joined.
05:38:50 <calamari> hi
05:39:36 <Sgeo> Hi calamari
05:39:41 <Sgeo> http://youtube.com/watch?v=g3KufmUlF5M == fail
05:44:37 <adu> hi
06:20:58 -!- calamari has quit ("Leaving").
06:38:41 <Deewiant> AnMaster: cheers, I'll take a look tonight
06:45:44 -!- olsner has joined.
06:47:42 -!- Sgeo has quit ("Ex-Chat").
07:14:01 -!- GregorR-L has joined.
07:14:03 <GregorR-L> http://www.cafepress.com/bizarregeek.255291006
07:14:55 <GregorR-L> (For those who like CAs :P )
07:42:46 <AnMaster> Deewiant, not that mine works perfectly either so far
07:43:08 <AnMaster> Deewiant, it fails when using garbage collector for unknown reason
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:10:35 -!- adu has quit ("Bye").
08:34:12 -!- olsner has quit ("Leaving").
08:36:00 -!- Iskr has joined.
09:02:45 <AnMaster> Deewiant, actually the issue seems to depend on how you interpret the PERL fingerprint docs... hm...
09:03:29 <AnMaster> "-e print 'A',eval(%s)" or "-e print 'A';eval(%s)"
09:03:34 <AnMaster> where %s is the popped string
10:16:42 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
10:20:48 <oklofok> okokoko
10:20:51 <oklofok> ->
11:06:50 -!- timotiis has joined.
11:28:09 <Deewiant> AnMaster: okay, so we want the Perl program to be able to use the std streams as normal, but how do we get the eval result out then?
11:28:36 <Deewiant> I'm confused as to how that would be possible
11:32:35 <Deewiant> would just "$x = eval(%s); print 'A',$x" work? can the %s mess with a variable called $x in some way? (I'm unaware of the limitations of eval in Perl)
11:43:23 -!- dbc has joined.
11:56:57 <Deewiant> and hmm, even that wouldn't work, since %s might print A and $x might contain A
12:02:17 <AnMaster> hm ok
12:02:37 <AnMaster> Deewiant, I'm no perl expert either
12:02:40 <AnMaster> far from
12:03:24 <AnMaster> bbl
12:03:27 <Deewiant> I'd say the simplest solution here is to say that accessing stdout is undefined
12:03:37 <Deewiant> alternatively make it stderr for more convenience
12:07:49 -!- Sgeo has joined.
12:36:13 -!- jix has joined.
12:59:32 <AnMaster> Deewiant, I capture both stdout and stderr
12:59:34 <AnMaster> that isn't hard
13:00:28 <Deewiant> AnMaster: yes, but how do you get the eval result
13:01:42 <AnMaster> Deewiant, just int fds[2]; pipe(fds); pid = fork() if (pid == 0) { /* in child */ dup2(fds[1], 1); dup2(fds[1], 2); .... execvp("perl", arguments); } else { ... read(fds[0], ...) ... }
13:01:54 <Deewiant> yes, capturing stderr is trivial
13:01:55 <Deewiant> I know this
13:01:56 <AnMaster> Deewiant, well a good question
13:02:16 <AnMaster> the specs are unclear on what to exactly capture I think?
13:02:21 <AnMaster> what exactly to*
13:02:24 <Deewiant> no, I think it's clear
13:02:28 <AnMaster> hm
13:02:33 <Deewiant> it's the value of the expression evaled
13:02:41 <AnMaster> hm
13:02:52 <Deewiant> e.g. eval 2+2 and get 4.
13:02:54 <AnMaster> what about loading libperl.so, I think you can do something like tht
13:02:56 <AnMaster> that*
13:03:40 <Deewiant> possibly... but it shouldn't be necessary
13:03:51 <AnMaster> true
13:03:54 <Deewiant> based on what the docs say, as well
13:04:05 <AnMaster> anyway then S would get a lot more complex
13:04:09 <Deewiant> "It pushes a 1 on the stack otherwise, indicating that the Perl language will be shelled when needed.
13:04:11 <AnMaster> say "isn't loaded yet"
13:04:25 <AnMaster> hm true
13:04:40 <Deewiant> that speaks explicitly of shelling, so libperl.so is a no-go ;-)
13:04:58 <fizzie> I haven't read the whole discussion, but based on what I've seen: no-one says you need to limit yourself to STDOUT and STDERR, why not just open a pipe for file descriptor 3, and in Perl do open FD3, ">&3"; print FD3 eval(...);
13:05:11 <AnMaster> anyway, now I really understand why ppl don't use read() but use fread() instead
13:05:27 <AnMaster> it a lot easier to work with
13:05:54 <AnMaster> fizzie, interesting
13:06:08 <Deewiant> fizzie: isn't it possible for the perl code to always be using FD3 itself, though
13:06:26 <AnMaster> fizzie, that would print both the result of the eval as well as any print statements inside the eval?
13:06:29 <Deewiant> not very likely, but possible?
13:07:16 <Deewiant> and hmm, I wonder if that's possible on windows
13:07:32 <fizzie> Well, you'd get stdout, stderr and that eval result via three different pipes. But sure, the Perl code could use file descriptor 3 for something.
13:07:46 <AnMaster> hm
13:10:33 <AnMaster> also I wonder why I get a segfault with boehm-gc if I use execlp after fork(), execvp works
13:10:49 <AnMaster> it makes no sense to me
13:14:59 <AnMaster> even more interesting is using valgrind (GC disabled then)
13:15:16 <AnMaster> using --trace-children=yes cause things to fail if I use execvp, but they work with execlp
13:15:22 <AnMaster> only under valgrind that is
13:17:36 <AnMaster> Deewiant, btw, does windows have vfork()?
13:17:43 <Deewiant> windows doesn't have fork
13:17:44 <Deewiant> of any kind
13:18:08 <AnMaster> so how do you start another process without replacing the current one
13:18:22 <Deewiant> CreateProcessA/CreateProcessW
13:18:27 <Deewiant> don't ask me about the details
13:18:35 <Deewiant> I just use what Tango provides
13:19:07 <AnMaster> as far as I can see you need to fork() then { in child: dup2 and exec } { in parent: waitpid and read }
13:19:14 <AnMaster> hm
13:19:22 <Deewiant> windows doesn't use the fork/exec model
13:19:30 <AnMaster> I see
13:19:53 <AnMaster> hm actually I spend most code at doing read and trying to handle all the error conditions/results from it
13:20:05 <Deewiant> yep, same here
13:20:06 <AnMaster> ie, "do we need to realloc and read some more or are we done yet"
13:20:09 <Deewiant> just running the program is 2 lines :-P
13:20:24 <AnMaster> well a bit more for building arguments and such here
13:20:36 <AnMaster> but the read code is really a mess
13:22:13 <AnMaster> I think doing read into same buffer and keeping extending it may be the wrong way, read and then append the buffer to another buffer would be way easier, and, due to \0 termination, faster
13:22:17 <Deewiant> I think it'd be fair to just disallow stderr for PERL
13:22:26 <Deewiant> there's no way to write to stderr in Befunge otherwise either
13:22:29 <AnMaster> hm? well capturing it isn't an issue
13:22:38 <Deewiant> no
13:22:43 <Deewiant> but then you can reserve it for the eval result
13:22:51 <AnMaster> anyway I use a perror() after forking
13:22:52 <Deewiant> i.e. print stderr eval(%s)
13:23:08 <AnMaster> in case of exec fails
13:23:22 <Deewiant> and then you can pass the perl script's stdout through to the interpreter's stdout
13:23:31 <Deewiant> whilst capturing the stderr and reading the eval result from it
13:23:52 <AnMaster> Deewiant, hm and what about print stderr eval(print stdout "foo")?
13:23:58 <AnMaster> hm
13:24:01 <Deewiant> 2008-04-16 15:23:21 ( Deewiant) and then you can pass the perl script's stdout through to the interpreter's stdout
13:24:09 <AnMaster> Deewiant, not sure if that is a good thing or not
13:24:19 <Deewiant> I think it's the least error prone option
13:24:26 <Deewiant> + simple to implement :-P
13:25:43 <Deewiant> because it allows the PERL script to do output if it so wishes
13:25:58 <AnMaster> Deewiant, btw where do you close the fd in eval in perl.d
13:26:06 <AnMaster> or is D handling that for you?
13:26:12 <Deewiant> Tango does it
13:26:26 <Deewiant> in p.execute(); I would guess
13:26:50 <AnMaster> read = p.stdout.input.read(buf);
13:26:52 <AnMaster> hm
13:26:57 <AnMaster> stdout.input?
13:27:13 <Deewiant> the input stream of the process's stdout
13:27:32 <AnMaster> err, stdout is just output, it isn't bi-directional
13:27:50 <Deewiant> but if another program is writing to it what are you going to do
13:27:54 <Deewiant> you are going to read from it, no?
13:27:55 <Deewiant> so it's input
13:28:08 <Deewiant> similarly stdin is an output stream
13:28:09 <AnMaster> hm... yeah
13:28:19 <AnMaster> Deewiant, but then is stdout.output invalid?
13:28:28 <AnMaster> when done on another process
13:28:32 <Deewiant> yes, I think so
13:29:02 <fizzie> You could also in Perl do something like: open(REALERR, ">&STDERR); open(STDERR, ">&STDOUT); print REALERR eval(...); if you wanted to have all the eval'd piece outputs (both stdout and stderr) mixed in the stdout of the executed process, leaving the real stderr for the eval result. Of course the eval'd code could still get to the real stderr if it really wanted to.
13:29:10 <AnMaster> Deewiant, what is the print A bit about really btw
13:29:25 <Deewiant> AnMaster: it took me a while to figure out, too ;-)
13:29:40 <AnMaster> Deewiant, well you do it, I don't see why thoug
13:29:41 <Deewiant> AnMaster: the idea being that if %s prints to stdout, we take only the eval result.
13:29:41 <AnMaster> though
13:29:46 <Deewiant> I think.
13:29:49 <AnMaster> ah I see
13:29:59 <AnMaster> fizzie, heh
13:30:00 <Deewiant> but of course that doesn't work if the eval result contains A so it's crap. :-P
13:30:26 <AnMaster> fizzie, I know about 0 perl, I do know hello world in perl and I do know PCRE (by libpcre)
13:30:29 <AnMaster> but that's about it
13:30:33 <Deewiant> fizzie: hm, that might be a good idea actually.
13:30:59 <AnMaster> fizzie, so forgive me if I'm ignorant, but the quotes seem mismatched?
13:31:12 <AnMaster> open(REALERR, ">&STDERR); <-- as in that
13:31:24 <fizzie> Yes, there's two "s missing. I was about to metion it, but then didn't bother. Should be ">&STDERR".
13:31:30 <AnMaster> thanks
13:31:51 <Deewiant> fizzie: and then just tell the eval'd code not to mess with a stream called REALERR? Or is there another way it can subvert the whole thing?
13:32:28 <fizzie> Well, the eval'd code could use open(WHATEVER, ">&2"); and use WHATEVER to print to the real stderr file descriptor.
13:32:57 <Deewiant> Darn. There's no way to hide the real stderr completely?
13:33:20 <fizzie> I don't think there is, except of course closing it, but that kind-of defeats the purpose.
13:34:04 <Deewiant> Alright. Hmh.
13:34:58 <fizzie> Perl might have some sandbox-y functions (probably as CPAN modules) for limiting the things the eval'd code can do. And it might be possible to hook into Perl's "open" call behaviour somehow, but that would mean even more Perl-guts.
13:35:41 <Deewiant> ugh.
13:36:59 <AnMaster> hm
13:37:05 <AnMaster> killall perl? ;)
13:38:02 <AnMaster> fizzie, would calling it say, CFUNGE_REALERR work
13:38:17 <AnMaster> then I could just say "your own fault, cfunge is my namespace"
13:38:19 <Deewiant> AnMaster: unless the code uses something called CFUNGE_REALERR.
13:38:26 <Deewiant> AnMaster: or opens ">&2".
13:38:53 <AnMaster> point is, is _ valid or not
13:39:04 <Deewiant> sure
13:39:17 <AnMaster> well considering it's perl, it is bound to have some special meaning
13:39:18 <Deewiant> if not, call it CFUNGEISMYNAMESPACEYOUDORKREALERR
13:39:18 <Deewiant> :-P
13:39:28 <Deewiant> it's a lot like C lexically.
13:39:56 <AnMaster> well iirc it does have packages, ie use foo; not #include <foo.h>
13:40:08 <AnMaster> thought they provided kind of C++ namespaces
13:40:14 <AnMaster> I may totally wrong
13:40:38 <Deewiant> yes, not 'the same as C', just 'like C'.
13:40:52 <fizzie> Actually you could open(my $realerr, ">&STDERR); open(...); eval(...); which I _think_ would mean that the eval'd code wouldn't be able to access the filehandle directly, since there's no symbol table entry for it, just the reference in $realerr. (Can't remember details about lexically scoped "my" vars and eval, but at least with some minor changes.)
13:41:11 <fizzie> Still won't help with the open(FOO, ">&2"); problem.
13:41:36 <AnMaster> hm.
13:41:40 <fizzie> (With open my $realerr you'd then do print $realerr eval(...);)
13:42:14 <AnMaster> wait a second, is $ same as in bash or something else?
13:42:30 <fizzie> $ is just the prefix for a scalar variable.
13:42:44 <AnMaster> mhm same as in bash more or less then
13:42:56 <Deewiant> fizzie: perl -e 'my $x = 2; print eval($x+$x);' prints 4, at least.
13:43:23 <AnMaster> is that evaluated lexically like a pre-processor first?
13:43:49 -!- atsampson has quit (Read error: 113 (No route to host)).
13:43:54 <AnMaster> in bash you would need to escape the \$x in an eval statement
13:44:08 <AnMaster> because of order of expanding
13:44:41 <AnMaster> (however I will not write a perl escaper in C or something like that)
13:47:20 <fizzie> Well, if nothing else works, you can always use print $realerr eval {$realerr = undef; %s}; but that's butt-ugly. I'm pretty sure there is a better way for making a variable that doesn't leak into eval; lexically scoped vars evidently do.
13:48:34 <AnMaster> fizzie, there probably is indeed, it's perl after all
13:48:41 <fizzie> Actually more like eval { local $realerr = undef; %s } to avoid gobbling the real $realerr, but then it can't be a "my" variable.
13:48:59 <AnMaster> it is probably something like z having a special meaning in a special context *runs*
13:49:09 <AnMaster> remember, perl DOES have a entry on the esolang wiki
13:49:58 <AnMaster> I think someone said that instead of "foo" you could do q/foo/ in perl.
13:50:02 <AnMaster> or something like that
13:50:08 <Deewiant> you can do that in D 2.0 as well. :-)
13:50:25 <AnMaster> Deewiant, s/)/(/
13:50:45 <Deewiant> :-P
13:50:55 <AnMaster> and that was sed not perl!
13:51:17 <AnMaster> I have no problems using sed or awk
13:51:19 <Deewiant> it's also perl.
13:51:29 <AnMaster> Deewiant, yeah I thought so
13:51:31 <fizzie> Actually, if you're really doing string-substitution in the Perl code itself, you don't need eval, and this should work: my $code = sub { %s }; open my $realerr, ">&STDERR"; open STDERR, ">&STDOUT"; print $realerr $code->();
13:51:45 <AnMaster> fizzie, eh?
13:51:56 <Deewiant> fizzie: unfortunately the specs say that it should be an eval(). :-)
13:51:57 <AnMaster> "E ('Eval') pops a 0gnirts string and performs a Perl eval() on it, possibly (or not) shelling Perl as indicated by S above. The result of the call is pushed as a 0gnirts string back onto the stack."
13:52:07 <AnMaster> fizzie, from http://catseye.tc/projects/funge98/library/PERL.html
13:53:11 <fizzie> Oh. Well, my $code = sub { return eval('%s'); } ... then.
13:53:44 <Deewiant> in fact, isn't eval(%s) equivalent to %s always?
13:54:10 <Deewiant> where %s isn't wrapped in "" or '' or whatever of course
13:54:13 <AnMaster> Deewiant, hm... couldn't you pass a string to eval, read from say stdin?
13:54:50 <Deewiant> yes, but I'm just pondering.
13:55:06 <fizzie> I don't think eval(%s) really does much, since the %s is evaluated normally, and the result is then passed to the 'eval' function.
13:55:26 <Deewiant> eval(my $x = 1; print $x) versus my $x = 1; print $x
13:55:53 <Deewiant> ah
13:55:55 <Deewiant> "Alternatively, if given a block of code - that is, the code is known at compile time - eval traps run-time exceptions."
13:56:08 <AnMaster> what does that mean Deewiant ?
13:56:14 <fizzie> Actually "eval(my $x = 1; print $x)" shouldn't be syntactically right at all.
13:56:16 <AnMaster> divide by zero or?
13:56:18 <Deewiant> I don't know
13:56:23 <Deewiant> something like that probably
13:56:30 <AnMaster> fizzie, it shouldn't?
13:56:31 <Deewiant> fizzie: only expressions?
13:56:35 <fizzie> Eval takes either a string or a block of code and evaluates it.
13:56:45 <AnMaster> hm
13:56:50 <fizzie> perl -e 'eval(my $x = 1; print $x);' gives syntax error at -e line 1, near "1;"
13:57:08 <AnMaster> fizzie, perl -e 'eval(print "bar");' works though, hm
13:57:12 <Deewiant> alright
13:57:27 <Deewiant> AnMaster: that's an expression. you can pass the result of printf to a function in C just fine as well.
13:57:34 <AnMaster> hm
13:57:39 <AnMaster> right
13:58:10 <fizzie> Since the spec speaks of strings, I think it means one should do something like eval('%s'); but that would need escaping the 's in the string.
13:58:16 <fizzie> (Or reading it from stdin or some-such.)
13:58:31 <AnMaster> um
13:58:34 <AnMaster> perl -e 'print eval(4 + 5)'
13:58:42 <AnMaster> is not same as perl -e '4 + 5'
13:58:53 <AnMaster> and with multistatement just adding a print doesn't work
13:59:43 <AnMaster> you said something about code block?
14:00:34 <AnMaster> and then there is the question of non-matching ( and ) in the input hm...
14:00:41 <Deewiant> perl -e 'print eval("my $x = 1;")' prints nothing
14:00:49 <Deewiant> but it doesn't error out either
14:01:12 <AnMaster> "print eval(%s)", "10); something here(blah"
14:01:18 <AnMaster> yay perl injection?
14:01:22 <fizzie> perl -e 'print eval("my \$x = 1;")' however prints "1".
14:01:49 <Deewiant> argh, the shell goes inside "" inside ''
14:02:06 <Deewiant> stupid bash, just do what I mean
14:02:08 <AnMaster> Deewiant, err? bash doesn't at least
14:02:17 <Deewiant> well evidently it does
14:02:19 <AnMaster> perl -e 'print eval("my \$x = 1;")' works here
14:02:25 <fizzie> I think it's actually the Perl that does mess the $x inside a ""-string.
14:02:27 <Deewiant> or no, is that perl mucking it up
14:02:34 <AnMaster> Deewiant, indeed it is perl
14:02:35 <Deewiant> ayeh
14:02:39 <Deewiant> makes sense
14:02:54 <AnMaster> fizzie, so given the specs, how would you do it?
14:03:09 <Deewiant> I think sub { return eval('%s'); } is the best idea so far
14:03:22 <Deewiant> need to do escaping in %s though
14:03:26 <Deewiant> which is tricky
14:03:31 <AnMaster> yeah something I don't want to mess with
14:03:45 <AnMaster> considering the syntax of perl probably could escape escaping
14:03:48 <Deewiant> so, instead, return eval(%s);
14:03:58 <Deewiant> and statements are disallowed thus.
14:04:08 <AnMaster> hm doesn't that break the specs?
14:04:17 <fizzie> But eval(%s) makes really no sense. The '%s' part is evaluated before even passing the result to 'eval'.
14:04:17 <Deewiant> how?
14:04:37 <AnMaster> fizzie, hm ok
14:04:47 <Deewiant> then the specs are confused or PERL is practically impossible to implement without writing the interpreter in perl.
14:05:06 <AnMaster> fizzie, could you read the stuff for eval from stdin?
14:05:18 <AnMaster> because then perl would escape it itself kind of
14:05:33 <fizzie> Well, you could. Then you'd just use eval($s); after reading into $s.
14:05:42 <AnMaster> ie, $variable = read(); eval($variable)
14:05:49 <AnMaster> I don't know the needed syntax
14:06:03 <AnMaster> fizzie, and how would you read that?
14:06:10 <Deewiant> AnMaster: and if the perl script wants to read stdin?
14:06:17 <AnMaster> Deewiant, hm true
14:06:25 <fizzie> Well, you'd probably need to have some sort of length-prefix before the code, so that you can keep the stdin open for further reads.
14:06:38 <Deewiant> aye.
14:06:56 <AnMaster> also it need to be blocking read
14:07:15 <AnMaster> so if it get to read before the parent got to write, it would wait
14:08:24 <AnMaster> fizzie, well if you can write the needed perl code to read like that, I could do the C bit
14:08:33 <AnMaster> I wouldn't be able to do the perl bit sadly :/
14:08:39 <Deewiant> perl is trivial to learn
14:08:47 <Deewiant> for short stuff like that I mean
14:08:49 <fizzie> If you don't want to use a prefix, you could use that file descriptor 3, read the code-to-evaluate and then close it.
14:08:57 <AnMaster> fizzie, prefix could work
14:09:03 <Deewiant> prefix is fine
14:09:10 <AnMaster> I guess just write(fd, strlen(perlcode))?
14:09:20 <Deewiant> however you choose to implement it
14:09:28 <Deewiant> I guess that'd work the easiest
14:09:30 <AnMaster> or if you want as a string
14:09:43 <fizzie> Well, it's easier to "read until eof" in one line of Perl than it is to "read at least this many bytes".
14:09:50 <AnMaster> ie snprintf("%d", strlen...")
14:10:07 <AnMaster> hm EOF isn't a special char is it
14:10:09 <Deewiant> it's easier in most languages without scanf.
14:10:15 <Deewiant> EOF isn't a char.
14:10:25 <Deewiant> or even with scanf, I guess.
14:10:55 <AnMaster> fizzie, well, input would be a pipe created with pipe() in C in my case
14:10:55 <fizzie> my $code = ''; open FD3, "<&3"; $code .= $_ while <FD3>; close FD3; might do it.
14:11:12 <Deewiant> using just stdin makes that a bit easier.
14:11:16 <AnMaster> not sure how I would send a EOF that way
14:11:23 <Deewiant> my $code = ''; $code .= $_ while <>;
14:11:29 <Deewiant> or what
14:11:37 <Deewiant> AnMaster: you send EOF by closing the pipe.
14:11:42 <Deewiant> or file descriptor, or whatever.
14:11:45 <AnMaster> hm ok
14:11:57 <AnMaster> Deewiant, well a pipe is a set of two connected fd's in this case
14:12:14 <fizzie> If you close the write end, the read end should get an eof.
14:12:17 <Deewiant> well you close the input stream.
14:16:32 <AnMaster> fizzie, then print eval($code) or?
14:16:39 <AnMaster> or "$code"?
14:17:25 <Deewiant> no difference in perl, just like in bash :-)
14:17:32 <fizzie> Yep.
14:17:43 <AnMaster> Deewiant, there is a difference in bash
14:17:49 <AnMaster> foo="bar quux"
14:17:53 <AnMaster> echo $foo
14:17:55 <Deewiant> nope, no difference.
14:17:55 <AnMaster> echo "$foo"
14:18:01 <Deewiant> ?
14:18:03 <AnMaster> the difference is that $foo will expand to two parameters
14:18:09 <Deewiant> yes
14:18:10 <AnMaster> while "$foo" won't
14:18:21 <AnMaster> for echo it doesn't matter
14:18:23 <Deewiant> but the string itself is the same, it's just the way it's passed to another program that differs
14:18:28 <AnMaster> for say grep on a filename it would
14:18:33 -!- timotiis has quit (Connection timed out).
14:18:33 <AnMaster> if the filename contains spaces
14:18:38 <Deewiant> since eval() is a builtin function, not another program, it makes no difference.
14:18:49 <Deewiant> I would assume that it's the same for any builtin function of bash.
14:18:51 <AnMaster> Deewiant, for bash it matters for builtins too
14:18:59 <Deewiant> example? O_o
14:19:35 <AnMaster> echo will do the same, but say: foo="echo bar"
14:19:36 <AnMaster> then
14:19:40 <AnMaster> $foo
14:19:43 <AnMaster> and "$foo"
14:19:47 <AnMaster> would be different
14:19:50 <AnMaster> the first would echo bar
14:19:51 -!- timotiis has joined.
14:20:06 <AnMaster> the second would likely say "echo bar" not such command or something like that
14:20:36 <AnMaster> Deewiant, and say test -f $file and test -f "$file" would differ when $file contains spaces
14:20:53 <AnMaster> test is a builtin yes
14:21:33 <AnMaster> Deewiant, oh and: foo="bar quux"; for i in $foo; do echo "$i"; done
14:21:43 <AnMaster> is different from: foo="bar quux"; for i in "$foo"; do echo "$i"; done
14:21:50 <fizzie> Bash is indeed prone to splitting things at spaces; but in Perl I think there's a difference only if $foo doesn't happen to be a string.
14:22:16 <AnMaster> fizzie, well there are exceptions:
14:22:23 <AnMaster> foo="abc def"
14:22:26 <AnMaster> bar=$foo
14:22:33 <AnMaster> would be the same as:
14:22:35 <AnMaster> bar="$foo"
14:22:37 <AnMaster> in that case
14:22:40 <AnMaster> however...
14:22:50 <AnMaster> foo="abc def" is not the same as foo=abc def
14:23:05 <AnMaster> the latter would try to run def with foo=abc in the environment
14:23:15 <AnMaster> Deewiant, enough examples?
14:23:17 <AnMaster> ;P
14:24:33 <AnMaster> fizzie, would this mean something like:
14:24:45 <AnMaster> my $code = ''; $code .= $_ while <>; open(CFUNGE_REALERR, ">&STDERR"); open(STDERR, ">&STDOUT"); print CFUNGE_REALERR eval($code)
14:24:45 <AnMaster> ?
14:25:39 <fizzie> Yes, if you don't mind losing the use of STDIN in the Perl code. (And of course you can avoid the CFUNGE_REALERR "problem" with a bit more trickery.)
14:26:26 <AnMaster> well how would I then save and restore the stdin?
14:26:38 <AnMaster> or actually I could just use fd3 I guess
14:26:46 <Deewiant> or just pass the length first.
14:26:54 <Deewiant> and then read only <length> bytes to $code.
14:27:09 <fizzie> Yes, but with the length-prefix the reading is more complicated. (Of course with fd3 the writing is a bit more complicated.)
14:27:20 <AnMaster> "my $code = ''; $code .= $_ while <FD3>; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)"
14:27:33 <AnMaster> assuming the \ is due to the whole thing is inside a C string
14:27:43 <AnMaster> and I'm being too lazy to remove it this time ;)
14:27:47 <Deewiant> fizzie: with fd3 I'm screwed on Windows, so I prefer the length-prefix method. ;-)
14:28:24 <AnMaster> oh wait
14:28:26 <AnMaster> no open
14:28:32 <AnMaster> "my $code = ''; open FD3, \"<&3\"; $code .= $_ while <FD3>; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)"
14:28:34 <AnMaster> hm?
14:29:22 <fizzie> Well, it looks correct, assuming the Perl code won't try opening &2, or using CFUNGE_REALERR.
14:30:00 <Deewiant> fizzie: wouldn't heredoc be the easiest way of making $code directly?
14:30:04 <Deewiant> just came to mind
14:30:35 <Deewiant> because you can always pick a heredoc string not contained within the program script
14:30:50 <AnMaster> Deewiant, finding such a string may not be that simple?
14:30:57 <fizzie> Hmm, yes; that's possible.
14:31:31 <Deewiant> AnMaster: start with "THIS_IS_MY_FOOBAR_HEREDOC_STRING" and append that to itself until the prog no longer contains it or it exceeds the prog's length, whichever comes first. :-P
14:31:55 <AnMaster> Deewiant, you need to search over the prog, linear search
14:32:02 <AnMaster> for a long program that could be an issue
14:33:30 <AnMaster> hm, closing the fd doesn't flush it it seems
14:33:40 <AnMaster> at least not if it is a file, may be different with pipe
14:33:43 <Deewiant> AnMaster: you need to write it to the file descriptor as well, which takes linear time?
14:34:16 <AnMaster> Deewiant, hm what about vectored io? oh wait that won't work for a pipe
14:34:51 <Deewiant> but I think you're right, in-memory fd writing is probably faster overall
14:34:55 <AnMaster> Deewiant, anyway that just means O(n), while searching to see if the program contains a string means at least searching it twice if you hit it
14:35:11 <Deewiant> AnMaster: which is still O(n), no matter how many times you do it. ;-)
14:35:29 <AnMaster> hm true
14:35:38 <fizzie> If you feel like doing the heredoc thing, it probably makes sense to keep in mind that Perl does variable interpolation in my $code = <<FOO; but not in my $code = <<'FOO';
14:36:38 <fizzie> Even better than heredoc would be to use Perl's magic 'DATA' filehandle, but I'm not sure how well that works when passing the program as a command line argument.
14:36:40 <Deewiant> I'm not going to do it, just wondered how well it would work. Good to know that, though.
14:39:19 <fizzie> Doesn't seem to me that reading from <DATA> returns anything after the '__END__' marker when the script is passed with the -e argument. Otherwise it could've been much like the heredoc thing but without the suitable-string-finding issues.
14:42:30 <AnMaster> seems it works with FD3
14:42:31 <AnMaster> :)
14:43:36 <AnMaster> Deewiant, so what will you do then?
14:44:02 <Deewiant> stdin with the length passed first
14:45:39 <fizzie> A normal person would've just used print eval { %s }; which might not match the letter of the spec, but does match the spirit: takes the string and gives it to the 'eval' function. Of course it's not _exactly_ the same, the code is parsed at a different time and there might be other differences.
14:45:50 <Deewiant> that's what I originally did
14:45:58 <Deewiant> and then AnMaster came complaining :-P
14:46:07 <AnMaster> Deewiant, err? you didn't use {
14:46:09 <AnMaster> you used )
14:46:10 <AnMaster> err
14:46:10 <AnMaster> (
14:46:18 <AnMaster> auto p = new Process("perl", "-e print 'A',eval(" ~ s ~ ")");
14:46:25 <AnMaster> and I didn't complain before about it
14:46:32 <Deewiant> only difference is that one accepts only expressions, I think
14:46:45 <Deewiant> if I had used {} you'd still have complained about the same issue ;-)
14:47:13 <AnMaster> fizzie, if I passed this in stdin then, should it work?: $x = "Hello world"; print $x
14:47:13 <fizzie> Well, it really isn't the same thing at all: the expression isn't evaluated by "eval", it's evaluated just like the outer code, and then the result is passed to eval.
14:48:07 <fizzie> For example, perl -e 'eval(die "foo");' will die, while perl -e 'eval { die "foo" };' won't.
14:48:57 <fizzie> File descriptor 3, not stdin, I guess. But yes, it looks like valid Perl code to me, although traditionally there's a newline after the string.
14:49:01 <AnMaster> I know I pass it on right FD
14:49:08 <AnMaster> yeah 3 was what I did
14:49:13 <AnMaster> because other stuff work
14:49:18 <AnMaster> say 4+5
14:49:21 <AnMaster> "my $code = ''; open FD3, \"<&3\"; $code .= $_ while <FD3>; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)"
14:49:29 <AnMaster> that is escaped for C
14:50:29 <fizzie> Oh, I just figured out an embarrassingly easy way to pass the code to the Perl interpreter.
14:50:37 <AnMaster> fizzie, oh?
14:50:53 <fizzie> Just do print eval($ARGV[0]); and append the code to the argument list of your "perl -e" call.
14:51:13 <AnMaster> $ARGV[0] == "perl" probably?
14:51:20 <fizzie> No, $0 == "perl".
14:51:25 <fizzie> $ARGV[0] is the first "real" argument.
14:51:30 <fizzie> Perl Does It Differently(TM).
14:51:32 <Deewiant> the first one after the program after -e?
14:51:33 <AnMaster> as in argument for script?
14:51:57 <fizzie> perl -e 'print $ARGV[0], "\n";' foo prints "foo".
14:52:06 <Deewiant> yays.
14:52:28 <Deewiant> that makes things somewhat simpler.
14:52:40 <Deewiant> although I wonder if there's a maximum limit on the length of an argument.
14:53:25 <fizzie> Well, the code was already being passed in the '-e' at some point, it's not a new problem.
14:53:42 <Deewiant> true.
14:54:01 <fizzie> Of course the code itself can't "use" the @ARGV array, but looking at the spec it doesn't seem to say anything what @ARGV should look like.
14:55:01 <fizzie> Besides, it's then especially easy to write a Perl quine; print $ARGV[0]; will do it, if you start it in that environment.
14:56:37 -!- RedDak has joined.
14:57:38 <Deewiant> AnMaster: alright, now your little test proggy prints 'hi 161'. :-P
14:58:03 <AnMaster> well I don't have the same version around any longer
14:58:05 <AnMaster> I extended it
14:58:19 <AnMaster> http://rafb.net/p/VFZ2St69.html
14:58:21 <AnMaster> is what I use now
14:58:52 <Deewiant> alright, win.
14:59:04 <AnMaster> and it works here too
14:59:10 <AnMaster> just checking valgrind and such
14:59:27 <AnMaster> fizzie, want to put you in a thanks to comment, what name should I use?
15:00:24 <fizzie> Uh, what sort of names have other people used? :p
15:00:52 <fizzie> ...er, that sounds wrong.
15:01:33 <fizzie> I'm not trying to pick a name, I just was curious about the type of names traditionally used for this sort of thing. IRC-nicks, realnames, something-else.
15:02:01 <AnMaster> fizzie, I just want to know if you want some real name, or just "fizzie on #esoteric on freenode"
15:02:01 <Deewiant> up to you. do you want your real name in the source code of befunge interpreters? :-P
15:02:15 <AnMaster> Deewiant, hahah
15:02:29 <Deewiant> I'd think deep and hard on that if I were you. ;-)
15:02:53 <AnMaster> Deewiant, well you got your one all over the source of ccbi
15:03:00 <fizzie> I think I already have my real name in the sadly defunct GLfunge98, which didn't really get up the ground. (I think googling for my realname finds, thankfully way down in the list, HP-UX packages for that Befunge interpreter.)
15:03:36 <Deewiant> AnMaster: I know, I've plunged off the deep end. :-)
15:03:46 <Deewiant> aye, GLfunge98 looked promising.
15:04:02 <fizzie> There were lots of good intentions but lack of real motivation.
15:04:04 <AnMaster> Deewiant, I'm not familiar with that proverb
15:04:16 <fizzie> So since I'm already quite a lost cause, feel free to use the real name, 'Heikki Kallasjoki'. Although I don't object to 'fizzie' either.
15:04:38 <AnMaster> well believe it or not, but some want their real names
15:05:21 <AnMaster> fizzie, you got to choose though
15:05:34 <Deewiant> AnMaster: "take the plunge, to enter with sudden decision upon an unfamiliar course of action, as after hesitation or deliberation: She took the plunge and invested her entire savings in the plan."
15:05:45 <AnMaster> hm
15:05:53 <fizzie> Er, well, just use the realname, then.
15:05:54 <AnMaster> anyway why would it matter?
15:06:31 <fizzie> There it is, on the third results page, the HP-UX packages for a Befunge interpreter. Hopefully no prospective employers will bother reading that far.
15:06:33 <Deewiant> fizzie: oh, you're the /author/ of GLfunge98? Didn't expect to find you alive with the program dead ;-)
15:07:14 <AnMaster> fizzie, well how old were you? they can hardly think something you did while you were at university would matter for example
15:07:29 <AnMaster> or that you did in your free time
15:07:36 <Deewiant> I proudly display CCBI on my CV :-)
15:07:52 <AnMaster> hm fizzie, you are from Finland?
15:07:53 <fizzie> I still from time to time get occasional pangs of regret over not continuing to play with GLfunge98, but not oftener than once every couple of months.
15:07:56 <Deewiant> and even got a summer job in the building fizzie works in, if I read google correctly.
15:08:30 <AnMaster> Deewiant, uhu?
15:08:31 <fizzie> If you mean the CIS lab at HUT, you've read correctly.
15:09:02 <Deewiant> yeah, I'm just wondering if the building is in fact the same, or not.
15:09:23 <Deewiant> I guess it's all in the same CS building so yes, I do believe so.
15:10:31 <fizzie> Actually I did have to give a 15 minute explanation about Befunge in a job interview for Nokia Research Centre (since I had "esoteric programming languages" in the CV) for a summer job in 2006, too, and got the place. Seems like it might even not be a negative thing.
15:10:44 <fizzie> (Although they were more interested in any Perl experience.)
15:10:53 <Deewiant> Yeah, ditto. I wonder whether it was positive or negative. ;-)
15:11:11 <AnMaster> fizzie, it shows a keen interest in programming on your free time?
15:11:15 <AnMaster> probably a good thing then
15:11:22 <Deewiant> I talked about Befunge, D, and Haskell whilst interviewing for a job which is probably mostly going to involve shell scripting, heh. :-)
15:11:33 <Deewiant> And C, I suppose.
15:11:46 <AnMaster> Deewiant, well you need to learn quotes in bash a bit then ;P
15:12:05 <Deewiant> AnMaster: rather, I need to learn how they interact with builtin functions.
15:12:13 <Deewiant> AnMaster: I'd just use them just in case anyhow, so it doesn't matter. ;-P
15:12:35 <AnMaster> Deewiant, apart from in [[ ]], where quotes can sometimes be harmful
15:12:47 <AnMaster> in [ ] they work as in normal context though
15:13:02 <Deewiant> I don't use such esoteric syntax. ;-)
15:13:04 <AnMaster> [ ] is same as test
15:13:10 <AnMaster> Deewiant, hm?
15:13:20 <Deewiant> [[ -f foo ]]
15:13:22 <Deewiant> &c.
15:13:25 <AnMaster> you use them in if [ "$foo" = bar ] say
15:13:36 -!- atsampson has joined.
15:13:41 -!- Sgeo has quit ("Ex-Chat").
15:13:43 <AnMaster> of course if grep foo works too
15:13:53 <AnMaster> if <command>; then foo...
15:13:58 <AnMaster> it is just about exit code
15:14:05 -!- Sgeo has joined.
15:14:16 -!- Sgeo has quit (Client Quit).
15:14:21 <AnMaster> Deewiant, and [ ] as well as [[ ]] is just a test command
15:14:33 -!- Sgeo has joined.
15:14:33 <AnMaster> but, [[ ]] got special quoting rules sometimes
15:14:41 <AnMaster> and is extended from [ ] in other ways
15:15:01 <fizzie> What I think funny is that there's a /usr/bin/[ -- in a file name it looks ugley.
15:15:19 <AnMaster> for example: both [ -z "$foo" ] and [[ -z "$foo" ]] test if $foo is" empty or unset"
15:15:33 <AnMaster> [[ -z $foo ]] works too
15:16:03 <AnMaster> [ -z $foo ] does NOT work, will be a syntax error if $foo is unset, or if it contains several words
15:16:25 <AnMaster> oh and then there is the special issue of the regex =~ match that only exists in [[ ]]
15:16:46 <AnMaster> bash 3.1 and 3.2 handles quoting differently in it
15:17:09 <AnMaster> the 3.1 behaviour was buggy
15:17:14 <AnMaster> but more logical IMO
15:17:21 <fizzie> And yet you think Perl's not-so-clear. :p
15:17:31 <AnMaster> in 3.2 it forces a literal match if the regex is quoted
15:18:00 <AnMaster> fizzie, well at least bash doesn't make every single ASCII char be an operator
15:18:08 <AnMaster> perl is close to that
15:18:29 <Deewiant> and befunge much closer. :-)
15:18:37 <fizzie> Actually Perl 6 goes and makes some Unicode chars operators, too. :p
15:18:49 <AnMaster> Deewiant, indeed
15:18:53 <fizzie> Like the single-character versions of the '<<' and '>>' quotes.
15:19:00 <AnMaster> eww
15:19:19 <Deewiant> eww? I think it's rather nice actually
15:19:22 <AnMaster> fizzie, UTF-8, or UTF-16 or what?
15:19:24 <Deewiant> get some decent looking code
15:19:32 <Deewiant> AnMaster: Unicode. UTF-* is just the encoding.
15:19:35 <AnMaster> Deewiant, well my keyboard lacks such keys
15:19:44 <AnMaster> Deewiant, yes I know, but what one does perl read source as
15:19:53 <Deewiant> probably any.
15:20:00 <fizzie> I would guess Perl 6 defaults to Unicode.
15:20:02 <AnMaster> well how could it know what one
15:20:02 <Deewiant> AnMaster: then you can type '<<' if you don't have the key.
15:20:09 <Deewiant> byte order markers exist
15:20:16 <AnMaster> hm
15:20:17 <Deewiant> you can always tell UTF-* apart
15:20:28 <Deewiant> the only problem is UTF-8 versus legacy encodings like ISO-8859-*
15:21:19 <fizzie> Recent versions of Perl 5 have a "use utf8;" pragma for writing identifiers-that-have-Unicode-chars, and also 'use encoding "foo"' for any supported encoding.
15:21:30 <AnMaster> well that's the point of UTF8, old programs being able to read the same file
15:21:49 <Deewiant> a point, yes.
15:21:57 <AnMaster> Deewiant, one important one
15:22:01 <Deewiant> yes.
15:22:35 <AnMaster> on unix you could make, say, /etc/fstab utf8 in comments, and it would not break old apps reading the file
15:23:33 <AnMaster> or /etc/passwd GECOS field could be able to contain names with åäö in them
15:24:06 <AnMaster> or as long as I don't use non-ascii here on irc, anyone that can read ASCII can read what I say, even though my client sends utf8
15:25:13 <Deewiant> but if you send UTF-8 and the receiving end assumes it's ISO-8859-1 it gets garbage.
15:25:27 <Deewiant> that's a tradeoff.
15:25:28 <fizzie> Perl 6 operators grepped from my irclogs, might be outdated: there's ^_= and »+^« and ^..^
15:25:36 <Deewiant> :-)
15:26:38 <fizzie> ^..^ is the current ".." range operator but excluding the endpoints; (5 ^..^ 9) is (6 .. 8).
15:28:11 <fizzie> But these were back in 2004. Haven't been following the Perl 6 saga since then, they might have sensiblized it.
15:28:23 -!- timotiis has quit (Connection timed out).
15:28:48 <AnMaster> Deewiant, it gets even more garbage, with, say, UTF-16
15:29:19 <Deewiant> AnMaster: but, with UTF-16, you can tell from the BOM that it is, in fact, UTF-16.
15:29:42 <AnMaster> also utf-16 got more overhead when the data is mainly in ASCII range
15:29:46 <AnMaster> as is common on irc
15:29:51 <AnMaster> or config files for *nix
15:30:59 <Deewiant> true that
15:49:56 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
16:29:33 -!- ehird` has joined.
16:29:46 <ehird`> oklofok: ANOTHER DAY, ONE TO WORK ON OKOHIRD--
16:56:16 <AnMaster> ehird`, "okohird--"?
16:56:19 <AnMaster> what is that
16:56:51 <ehird`> AnMaster: my implementation of oklotalk--
16:56:57 <AnMaster> ah
16:57:06 <AnMaster> what differs between the normal one and --?
16:57:33 <ehird`> -- has not muh syntax
16:57:34 <ehird`> and sucks
16:57:40 <ehird`> he has not made oklotalk yes
16:57:41 <ehird`> just oklotalk--
16:57:42 <ehird`> *yet
17:01:32 <AnMaster> k
17:01:44 <AnMaster> ehird`, is the syntax that hard to parse?
17:02:18 <ehird`> AnMaster: Yes, there are no syntax errors
17:02:30 <ehird`> ({{{]) is valid
17:03:47 <AnMaster> ehird`, and what would it do?
17:04:24 <AnMaster> anyway befunge technically got no syntax errors either, it is perfectly valid to use an non-implemented instruction to reflect
17:04:31 <ehird`> AnMaster: I *think* ({{{[]}}})
17:04:48 <ehird`> oklofok: am I right?
17:07:31 <oklofok> whuaa
17:09:00 <oklofok> { has a lower precedence than (, it would actually be ({{{([])}}})
17:09:23 <ehird`> okay then oklofok
17:09:34 <oklofok> the rationale is to be able to do { ptrn -> ( expr expr expr }
17:11:02 <ehird`> oklofok: surely { ptrn -> expr expr expr } should be valid!
17:11:14 <ehird`> { x -> func x $hello }
17:11:25 <ehird`> { outn "wooty"; x -> func x $hello; outn "wotty" }
17:11:33 <ehird`> ambigious
17:11:34 <ehird`> but..
17:12:28 <oklofok> it should know whether you mean (x -> func x $hello) outn "wotty"; or x -> (func x $hello; outn "wotty";) based on which is better.
17:14:21 <ehird`> oklofok: well, i am thinking
17:14:27 <ehird`> that you can introduce another seperator comma ,
17:14:31 <ehird`> which has a lower precedence
17:14:32 <ehird`> so
17:14:43 <ehird`> { outn "wooty"; x -> func x $hello; outn "wotty" }
17:14:43 <ehird`> is
17:14:52 <ehird`> { outn "wooty"; x -> (func x $hello); outn "wotty" }
17:14:52 <ehird`> but
17:15:02 <ehird`> { outn "wooty"; x -> func x $hello, outn "wotty" }
17:15:02 <ehird`> is
17:15:07 <ehird`> { outn "wooty"; x -> (func x $hello; outn "wotty") }
17:15:16 <ehird`> oklofok: seems natural to me, and fits with english puncutation
17:15:18 <oklofok> well, comma exists already.
17:15:45 <oklofok> it works exactly like that for side-effects, but is in fact a third way to make a list
17:16:18 <ehird`> oklofok: oh. well i think you should drop commas for lists
17:16:19 <ehird`> because
17:16:20 <ehird`> a, b
17:16:21 <ehird`> [a b]
17:16:27 <ehird`> it's not that much different
17:16:28 <ehird`> and
17:16:30 <ehird`> a, b, c, d
17:16:31 <ehird`> [a b c d]
17:16:33 <ehird`> is shorter
17:16:38 <oklofok> a,b,c,d
17:16:40 <oklofok> is shorter
17:16:42 <ehird`> oklofok: and my way means stuff can be shorter
17:16:46 <ehird`> ok
17:16:46 <ehird`> but
17:16:47 <oklofok> anyway, true, it's not much use
17:16:49 <ehird`> which do you do more often
17:16:50 <ehird`> make a list
17:16:52 <oklofok> and i haven't used it much.
17:16:55 <ehird`> or have multiple exprs in a function
17:17:01 <oklofok> yeah, yeah, i know your point
17:17:05 <oklofok> i'll think about it
17:17:12 <ehird`> and [...] is nicer because with ,
17:17:17 <ehird`> its hard to pick out where hte list starts and ends
17:17:21 <oklofok> hmm
17:17:29 <oklofok> there are elaborate rules for it
17:17:34 <oklofok> anyway, south park time :)
17:17:36 <oklofok> ->
17:18:11 <ehird`> oklofok: ok :)
17:31:12 * ehird` is sticking linux on this old crusty machine
17:31:29 <ehird`> I poked the distro chooser for a laugh. It's telling me Arch Linux, Slackware, OpenSuSE, Gentoo, edora
17:31:46 <ehird`> Arch and Gentoo seem the most likely ones I'd consider installing.
17:31:56 <ehird`> AnMaster: If you want to hype Gentoo, now would be the time.
17:32:06 <ehird`> Especially if you can convince me I'll have an installed system in hours rather than days.
17:35:00 <Deewiant> depends on your processor speed. :-)
17:35:19 <ehird`> Deewiant: Slow. This is not my main machine.
17:35:24 * ehird` checks
17:35:44 <ehird`> Deewiant: 1.8ghz.
17:35:48 <ehird`> Some kind of AMD Smepron shit.
17:36:00 <ehird`> Windows says I have 480mb of ram, but that doesn't sound right.
17:37:26 <Deewiant> might be a day then, but not day_s_. :-)
17:37:41 <Deewiant> if you can leave it to compile the base system overnight it shouldn't be that bad.
17:38:28 <ehird`> Deewiant: Isn't there a fancy type of install that's precompiled?
17:38:30 <ehird`> Stage 3 or something.
17:38:42 <ehird`> I mean, ideally I'd like to be using it before the day's up. I know that's not particularly realistic, but
17:38:44 <Deewiant> possibly, I'm not sure.
17:39:40 <Deewiant> in 6 hours with that processor, certainly not from stage 1, I don't think.
17:39:45 <Deewiant> depends on how big a base you want I suppose.
17:39:54 <ehird`> Deewiant: I would probably go for stage 3. That's the most compiled, isn't it?
17:40:06 <ehird`> I am not '-funroll-loops man', so :)
17:40:07 <Deewiant> I'm not sure about how the later stages work.
17:40:13 <Deewiant> :-)
17:41:26 <ehird`> Deewiant: Well, I don't see what other distro would work well.
17:41:31 <ehird`> Ubuntu sucks on here.
17:41:45 <ehird`> And the rest are either dead, related to Ubuntu or extremely minimalist.
17:42:10 <Deewiant> Slackware is fine.
17:42:41 <ehird`> Deewiant: never really liked the feel of Slackware.
17:42:52 <ehird`> I like things such as, say, *dependency management*
17:43:13 <Deewiant> :-)
17:45:21 <AnMaster> <ehird`> AnMaster: If you want to hype Gentoo, now would be the time.
17:45:22 <AnMaster> what?
17:45:24 <ehird`> I guess I could just do Debian.
17:45:27 <ehird`> AnMaster: you use gentoo.
17:45:33 <AnMaster> ehird`, gentoo and arch are both good
17:45:35 <AnMaster> I prefer gentoo
17:45:52 <ehird`> AnMaster: Right, right, just convince me that I can coerce gentoo into giving me a system _today_
17:45:54 <AnMaster> but well, gentoo, freebsd top the list, followed by arch
17:46:02 <AnMaster> ehird`, well what is your CPU?
17:46:05 <AnMaster> cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz w/ 128 KB L2 Cache]
17:46:08 <AnMaster> is what I got here
17:46:59 <AnMaster> ehird`, from first boot to KDE (base system, I never install games and such) installed about 5 hours iirc
17:47:02 <ehird`> AnMaster: amd sempron 1.8ghz. This is not my main computer, before you scream in horror
17:47:05 <AnMaster> actually less maybe
17:47:11 <AnMaster> ehird`, amd64 or?
17:47:18 <ehird`> AnMaster: No way! This is a lame 32-bit machiine.
17:47:24 <ehird`> And none of the hardware agrees with the ohter hardware.
17:47:26 <AnMaster> hm ok
17:47:34 <AnMaster> ehird`, oh? how do you mean?
17:48:10 <ehird`> AnMaster: its all incompatible in subtle ways that make it crash and creak
17:48:18 <AnMaster> anyway about system today, depends on several things: local time, (if you start just before midnight, of course not), how much time you spend chatting on irc and so on
17:48:26 <ehird`> it was upgraded in a very cobbled-together fashion
17:48:29 <AnMaster> ehird`, what components got issues with what ones?
17:48:33 <ehird`> AnMaster: and: time is 17:48
17:48:41 <ehird`> AnMaster: and, just about all of them
17:49:21 <AnMaster> well I would start in the morning
17:49:37 <AnMaster> ehird`, also I would do a stage3
17:49:45 <AnMaster> first time you will need to read the manual
17:49:47 <ehird`> AnMaster: I need a system today, so unless you can convince me I'll install debian today and consider gentoo tomorrow
17:49:51 <ehird`> Yeah, i was thinking stage3.
17:49:58 <AnMaster> ehird`, then go for arch
17:50:07 <AnMaster> arch is good for being binary
17:50:17 <ehird`> AnMaster: Hmm. How does it differ from, say, debian unstable
17:50:29 <AnMaster> ehird`, being sane
17:50:38 <ehird`> AnMaster: Debian's pretty sane
17:50:57 <AnMaster> well last I checked they used *old* pre-release compilers in stable for example
17:51:17 <ehird`> AnMaster: Nobody uses stable.
17:51:46 <AnMaster> ehird`, anyway arch is quite fast too on x86
17:51:58 <AnMaster> and last I checked rather easy to install
17:52:09 <ehird`> AnMaster: I can install Debian in under an hour.
17:52:11 <ehird`> What about arch?
17:52:28 <AnMaster> ehird`, it was quite some time ago I tried it, but I think less than half an hour
17:52:46 <AnMaster> ehird`, however this may have been about 1-1.5 years ago
17:52:52 <AnMaster> but shouldn't be worse I guess
17:52:54 <ehird`> AnMaster: that was a modern system presumably
17:53:08 <AnMaster> ehird`, it was a p4 at 1.something GHz
17:53:12 <AnMaster> 512 MB RAM
17:53:18 <AnMaster> IDE 80 GB drive
17:53:37 <ehird`> AnMaster: but the hardware was all compatible, I assume.
17:53:53 <AnMaster> ehird`, can't check exactly as I no longer have the system in question, the power supply went for a smoke and I salvaged the bits that worked
17:54:12 <AnMaster> ehird`, well I still don't see how they would be incompatible
17:54:19 <AnMaster> you haven't given any example
17:54:21 <ehird`> I don't know. This machine is a demon.
17:54:27 <ehird`> It is pure evil itself
17:54:33 <AnMaster> you got no examples then?
17:55:02 <ehird`> Not really except that it crashes for no reason and drops data because it feelsl ike it
17:55:20 -!- timotiis has joined.
17:55:27 <AnMaster> ehird`, tried memtest?
17:55:50 <AnMaster> apart from that I'd recommend trying to disable acpi
17:56:03 <ehird`> AnMaster: I should leave memtest running at one point.
17:56:14 <ehird`> Not sure what ACPI is, though. heard the term, but I don't know what it is. I'm silly,
17:56:32 <AnMaster> ehird`, it is something for power managment, as well as "find out what the computer can do"
17:56:35 <AnMaster> and a few other things
17:56:49 <AnMaster> http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface
17:56:56 <AnMaster> ehird`, however it can cause issues sometimes
17:57:56 <ehird`> interesting
17:58:16 <ehird`> AnMaster: I think I will go for Debian, I don't really care about this system, I just can't bear Windows any more
17:58:31 <AnMaster> ehird`, well windows probably cause the lockups then...
17:58:36 <AnMaster> ehird`, give arch a try
17:58:39 <ehird`> AnMaster: Nah, I've used Linux on here before.
17:58:43 <ehird`> It's actually less stable.
17:58:50 <AnMaster> ehird`, what distro did you use on it?
17:58:51 <AnMaster> debian?
17:58:55 <ehird`> various
17:58:59 <AnMaster> ehird`, list?
17:59:06 <ehird`> AnMaster: lesse...
17:59:09 <AnMaster> and was debian included in it?
17:59:17 <ehird`> FreeBSD, debian, ubuntu, fedora, slackware, and others
17:59:36 <AnMaster> then maybe time to try arch
17:59:41 <AnMaster> and see if it is more stable
18:00:33 <ehird`> Maybe.
18:00:36 <AnMaster> ehird`, anyway my system is quite stable, even though I got quite a mix of components
18:01:50 <AnMaster> ie, a sound card with midi from 2003 or so, a new geforce card from last year, and so on
18:01:56 <AnMaster> I did try suse, it was quite unstable under it, same for debian, but gentoo did turn out to be stable
18:02:05 <AnMaster> only tried arch later, on another computer
18:02:44 <AnMaster> ehird`, but since gentoo does need some patience at first install, it is probably best to try arch
18:03:34 <AnMaster> ehird`, oh and download time for cd was not included in the "half hour" for arch
18:03:40 <AnMaster> I don't know how long it took to download
18:03:50 <AnMaster> but I had a bad connection back then 512 kbps down
18:03:55 <AnMaster> so quite long I suspect
18:10:40 <ehird`> AnMaster: woot, 600kB/sec
18:10:43 <ehird`> i love my internet connection
18:10:50 <ehird`> it is made of love
18:10:53 <ehird`> and hugs
18:10:57 <ehird`> ^^ TRUTH
18:11:43 <AnMaster> well I got 8 mbit down, that means about 450-550 kilobyte / sec here
18:12:51 <fizzie> And this university student village 100Mbps connection means around 9 megabytes / sec from many places.
18:14:19 <ehird`> AnMaster: ditto
18:17:51 <AnMaster> ehird`, well arch it is then? :)
18:18:25 <ehird`> AnMaster: No, Debian. I will probably try Gentoo tomorrow.
18:18:28 <ehird`> But for today, this is fastset.
18:18:32 <ehird`> I've already downloaded it.
18:18:41 <AnMaster> ehird`, arch is good if you want binary
18:18:56 <ehird`> Too late.
18:19:01 <ehird`> It's burning now
18:19:36 <AnMaster> gentoo need a bit more patience, but things are easy to fix if they break, and they don't break often
18:19:38 <AnMaster> much easier to fix than when say debian breaks
18:20:44 <ehird`> Ohw Ell.
18:20:46 <ehird`> It's burned.
18:20:50 <ehird`> See you in $TIME
18:22:05 -!- ehird` has quit (Read error: 104 (Connection reset by peer)).
18:26:01 <fizzie> Personally my experiences wrt. the fixability of Debian and Gentoo have been exactly the opposite, but on the other hand I haven't touched Gentoo since 2003 or so.
18:28:19 -!- ehird` has joined.
18:28:58 <ehird`> eh
18:29:01 <ehird`> need to get a bigger one
18:29:23 <ehird`> AnMaster: did I mention that the 600kB/sec speed was on wireless
18:29:31 <fizzie> The people who send me spam can probably help.
18:30:01 <AnMaster> ehird`, hm?
18:30:08 <AnMaster> bigger what?
18:30:12 <AnMaster> ehird`, cd? arch then
18:30:17 -!- ehird has joined.
18:30:24 <ehird> but yeah.
18:30:26 <ehird> that was just wireless
18:32:20 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
18:42:46 -!- timotiis has quit (Connection timed out).
18:45:35 -!- olsner has joined.
18:49:13 -!- ehird` has quit (Read error: 113 (No route to host)).
18:55:10 -!- jix has quit (Nick collision from services.).
18:55:20 -!- jix has joined.
19:00:11 -!- jix has quit (Nick collision from services.).
19:00:15 -!- jix has joined.
19:10:06 -!- ehird has joined.
19:10:09 <ehird> hello from a new debian system
19:10:20 <ehird> it works, basically.
19:10:27 <ehird> is debian's gnome meant to feel non-smooth?
19:10:30 <ehird> oh wait, maybe i need gfx drivers
19:44:37 <AnMaster> ehird, KDE may work better
19:44:50 * AnMaster runs
19:44:54 <ehird> AnMaster, Don't feel like KDe today.
19:44:55 <ehird> oklofok, Hi.
19:52:35 <ehird> oklofok, Ping
19:53:05 <oklofok> ölonmg
19:54:23 <ehird> yay
19:54:39 <ehird> oklofok, ehird@debian:~/src/oklotalk$ python okofficial/cli.pyc
19:54:39 <ehird> RuntimeError: Bad magic number in .pyc file
19:54:39 <ehird> ehird@debian:~/src/oklotalk$ python -V
19:54:39 <ehird> Python 2.4.4
19:54:52 * ehird installs 2.5
19:57:36 <AnMaster> oklofok, btw you got the pyc files for me? I don't have python 2.5
19:57:39 <AnMaster> only 2.4
20:02:05 <ehird> AnMaster, just install 2.5
20:02:43 <ehird> class DisregardThat(object): # I considered appending 'ISuckCocks' to the name of this lass
20:02:45 <ehird> *class
20:05:05 <Deewiant> :-D
20:05:45 <ehird> bah
20:05:49 <ehird> my parser is broken
20:05:53 <ehird> it can't handle comments nicely
20:06:27 <ehird> oklofok, can you show me your parser src :(
20:13:24 <ehird> oklofok, haha, my interp's thing->string shows the actual code
20:13:25 <ehird> :D
20:16:28 <AnMaster> ehird, can't you disassemble the pyc
20:16:52 <ehird> AnMaster, yes but only to the bytecode instructions
20:16:54 <ehird> which are stack-based
20:17:00 <ehird> and thus very unhelpful for reading
20:17:19 <AnMaster> ah I see
20:17:33 <AnMaster> oklofok, why not open source
20:19:03 <ehird> AnMaster, its for a school project
20:19:08 <ehird> so he doesn't want to release it until the
20:19:20 <ehird> incidentally this is the 3rd time you've bugged him about it being closed source
20:19:34 <ehird> can you simply not accept the fact that closed source software exists?
20:19:56 <AnMaster> :(
20:20:28 <ehird> some of it is even *good*
20:20:59 <ehird> oklofok, scoping question
20:21:03 <ehird> if i have a var A in another scope
20:21:08 <ehird> then we have a nested scope inside that
20:21:09 <ehird> and set A
20:21:12 <ehird> is the outer scope's A mutated,
20:21:19 <ehird> or is it just created in the inner one
20:21:22 <ehird> and shadowed
20:34:01 <ehird> oklofok, qutie important
20:37:58 <oklofok> ehird: comments are trivial to do
20:38:08 <oklofok> just keep the sum of open comments or soemthing
20:38:10 <ehird> oklofok, yeah
20:38:14 <ehird> oklofok, oh crap
20:38:15 <ehird> i don't do nesting
20:38:16 <ehird> heh
20:38:17 <oklofok> inc on <--, dec on -->
20:38:18 <oklofok> oh
20:38:24 <oklofok> well then ofc even more trivial :P
20:38:24 <ehird> oklofok, and yeah, its just that i have a method
20:38:26 <ehird> .parse_one()
20:38:31 <oklofok> okay
20:38:31 <ehird> which is expected to return a value
20:38:34 <ehird> and is called in a loop
20:38:34 <ehird> BUT
20:38:40 <ehird> i can't just recurse after a comment, .parse_one()
20:38:42 <oklofok> and comments return nothing so boom?
20:38:44 <ehird> because if the comment is at the end..
20:38:49 <ehird> i have to pretend i was never called
20:39:04 <oklofok> whhhell, i'm sure you can fix that on your own :P
20:39:08 <ehird> so my hack is: .parse_many() gives a special param, after a comment, if the src is over and it is set, we return none
20:39:10 <ehird> otherwise, unexpected EOF
20:39:14 <ehird> and parse_many() checks for None
20:39:18 <oklofok> "parsing is trivial", a guy once told me
20:39:24 <oklofok> you know who taht was?
20:39:26 <oklofok> *that
20:39:31 <ehird> :)))
20:39:38 <oklofok> indeed!
20:40:06 <oklofok> okay, back to watching!
20:40:10 <ehird> oklofok, but
20:40:10 <oklofok> i'm leaving you
20:40:11 <oklofok> ->
20:40:12 <ehird> what about scoping
20:40:15 <oklofok> ...but? :|
20:40:16 <ehird> i asked a question about it
20:40:16 <ehird> :(
20:40:19 <oklofok> oh
20:40:22 <ehird> <ehird> oklofok, scoping question
20:40:22 <oklofok> aaand hmm
20:40:22 <ehird> <ehird> if i have a var A in another scope
20:40:22 <ehird> <ehird> then we have a nested scope inside that
20:40:22 <ehird> <ehird> and set A
20:40:22 <ehird> <ehird> is the outer scope's A mutated,
20:40:23 <ehird> <ehird> or is it just created in the inner one
20:40:25 <ehird> <ehird> and shadowed
20:40:25 <oklofok> lessee
20:40:27 <ehird> <ehird> oklofok, qutie important
20:40:38 <oklofok> only created in inner one
20:40:52 <ehird> oklofok, so how do i mutate outer variables
20:41:08 <oklofok> there will be other ways to set vars, but i'm not gonna tell you what they are, because you'd implement them, and i'd then have to do that too.
20:41:11 <oklofok> you don't.
20:41:15 <oklofok> or make setters
20:41:25 <ehird> oklofok, actually, could you give me a basic scoping stress-test
20:41:28 <ehird> so i can verify i get it right
20:41:33 <oklofok> asd
20:41:48 <oklofok> you know the chick i was talking about
20:41:53 <oklofok> she's threatening me
20:41:59 <oklofok> i have to watch an episode now
20:42:01 <ehird> hahaha
20:42:02 <oklofok> perhaps after taht :|
20:42:04 <oklofok> *that
20:42:08 <ehird> goodbye
20:42:12 <oklofok> bye
20:55:30 -!- Slereah has quit (brown.freenode.net irc.freenode.net).
20:56:05 -!- Slereah has joined.
21:01:10 <ehird> Slereah, hello
21:02:57 <Slereah> Hai.
21:03:39 -!- Iskr has quit ("Leaving").
21:08:08 <ehird> AnMaster, look at me! I just installed non-free software!
21:08:17 <AnMaster> ehird, oh?
21:08:19 <ehird> good to know debian is no longer run by idealist idiots
21:08:22 <ehird> ;)
21:08:48 <ehird> AnMaster, Yeah, enabled the etch non-free repo and installed the Sun Java JDK. It is the only one that supports the newest stuff.
21:08:54 <ehird> Most of the compilers don't even get 1.5 right.
21:08:58 <ehird> So the apps I use in java won't work
21:14:54 <ehird> cute:
21:14:56 <ehird> enum TinyHelloWorld{T;System s;{s.out.println("Hello, world!");s.exit(0);}}
21:15:04 <ehird> that, as far as I can tell, is the shortest java hello world you can get
21:15:07 <ehird> vs:
21:15:33 <ehird> public class HelloWorld{public static void main(String[]a){System.out.println("Hello, world!");}}
21:24:54 -!- jix has quit ("CommandQ").
21:33:46 -!- ais523 has joined.
21:34:20 <ehird> hello ais523
21:34:31 <ais523> hello ehird
21:35:52 <ais523> wow, there was actually more discussion about BackFlip
21:36:01 <ais523> I've been thinking about it a bit recently
21:36:34 <ais523> I think it would be TC if you repeated the program as a cylinder, so that the left and right sides of the program were identified, and the program was repeated vertically an infinite number of times
21:38:02 <ehird> ais523, I think I am going to implement one of your rewriting languages in somethiing silly.
21:38:13 <ais523> like Underlambda in m4?
21:38:27 <ehird> No, that's for you :P
21:38:54 <ehird> ais523, Maybe Forte in Thutu.
21:39:05 <ais523> ehird: I already did that, more or less
21:39:16 <ais523> the only Forte interp I know of was written in wimpmode Thutu
21:39:29 <ais523> (where I extended it to allow easy arithmetic)
21:39:47 <ehird> OK, then 1cnis
21:39:55 <ehird> Though it looks complex.
21:40:07 <ehird> Actually.
21:40:11 <ehird> Underload in Thue.
21:40:28 <ais523> Underload in Thue sounds good
21:41:00 <ehird> ais523, I don't think I can do output though
21:41:03 <ais523> 1cnis would probably be harder due to the need to synchronize things so that they happen effectively simultaneously
21:41:18 <ehird> Well, I mean literal output
21:41:18 <olsner> ah, this means you can soon have underload in mod_rewrite using my thue-to-mod_rewrite compiler
21:41:22 <ehird> I could probably REWRITE output.
21:41:30 <ehird> olsner, I need to see that!
21:41:32 <ais523> and although it isn't mine, a Xigxag in Thue would be interesting too
21:41:34 <ehird> Though it's pretty trivial
21:41:54 <ais523> ehird: you could use Underlambda-style output, where S outputs a function not a string
21:41:58 <olsner> yeah, four lines of sed and a few bootstrap rewriting rules in an apache config
21:42:24 <ehird> ais523, No, I mean, Thue can't output text from the initial rule.
21:42:26 <ehird> Just hardcoded
21:42:34 <ais523> olsner: why noy use cat as the CGI script that shows the final output
21:43:01 <ehird> Beh. Thue is too primitive for this.
21:43:01 <ais523> ehird: with Underlambda-style output you only need to be able to output the command characters, not all characters
21:43:11 <olsner> hmm, the final results is in the query string, and I don't think that comes on standard input
21:43:17 <ehird> ais523, Have you tried Oklotalk-- by the way?
21:43:24 <ehird> olsner, redirect on PATH_INFO
21:43:29 <ehird> /rewrite.cgi/FOO
21:43:34 <ehird> rewrite.cgi:
21:43:36 <ais523> olsner: you're right, it comes in an environment variable for GET, and on stdin for POST
21:43:38 <ehird> #!/usr/bin/env perl
21:43:44 <olsner> otoh, maybe you can rewrite things into post variables
21:43:45 <ehird> print $ENV["PATH_INFO"];
21:43:47 <ehird> i think.
21:43:59 <ehird> ais523, But yeah -- oklotalk--
21:44:02 <ais523> ehird: your Perl is atrocious
21:44:07 <ais523> ehird: I've seen bits of it but not used it
21:44:07 <ehird> And yes!
21:44:07 <ehird> It is!
21:44:10 <ais523> it looked interesting
21:44:16 <ehird> my Perl is totally atrocious
21:44:19 <ais523> and that Perl statement should have used curly brackets
21:44:20 <ehird> Because I don't know Perl
21:44:23 <olsner> ehird: in this case, I have a php script that does echo $_SERVER['QUERY_STRING'] or whatever the actual names are
21:44:25 <ehird> Oh yes, that.
21:44:26 <ais523> $ENV{"PATH_INFO"}
21:44:36 <ehird> Make it a MODERN reference!
21:44:45 <ehird> $self->env->{"PATH_INFO"}
21:44:59 <ais523> ehird: I think that can be done with blessed objects
21:45:11 <ehird> ais523, yes it can
21:47:22 <ehird> ais523, Hmm. I want to make a Lambda Calculus macro system
21:47:24 <ehird> Might be interesting
21:47:57 <ais523> or write a lambda-calculus-to-Underload-compiler in Thue or some similar language
21:48:05 <ehird> lambda calculus to underload
21:48:07 <ehird> hmmm
21:48:14 <ehird> not for thue
21:48:20 <ehird> ais523, thue can only deal with very restricted formats
21:48:20 <ais523> I tried to do one as rewrite rules as a way to specify how lambdas worked in Underlambda
21:48:34 <ais523> ehird: well, I limited variable names to x, y, and z
21:48:45 <ais523> possibly w as well, I forget
21:49:16 <ehird> ais523, But with placeholders, I bet.
21:49:20 <ehird> Thue is just string->string.
21:49:35 <ais523> well, I've been designing a new rewriting language that I haven't told anyone about yet
21:49:44 <ais523> it's interesting, but likely to be very hard to implement efficiently
21:50:01 <ehird> i'd be interested in having a go
21:50:24 <ais523> the rewriting is done on graphs rather than on strings
21:51:24 <ais523> making it a sort of 2D Thue
21:51:57 <ais523> I was going to call it Eodermdrome, and it looks like someone may have to ask me what it means because neither Google nor Wikipedia seems to know
21:52:13 <ehird> ais523, sounds like graphica
21:52:15 <ais523> I'll have to track down the book I learnt the word from, so I can use it as a source to write about it
21:52:27 <ais523> ehird: quite possibly it's been done before
21:52:29 <olsner> hmm, graph rewriting = haskell (in some abstract sense... according to what I hear)
21:52:36 <ais523> the lang looks more like Haifu, though
21:52:44 <ais523> except mostly using nonsense words, or nonsense sentences
21:52:47 <ehird> ais523, graphica is oklofok
21:52:48 <olsner> if you're talking nodes+vertices graphs rather than x/y graphs
21:52:50 <ais523> and I kept the comma=comment idea
21:53:30 <ehird> i have always wanted to make a language which is JUST powerful enough to be non-trivial (very low barrier) and powerful enough to represent all of its own model in itself
21:53:37 <ehird> so it can represent the interpreter, call stack, etc.
21:53:43 <ehird> but there must not be one unexposed bit
21:53:50 <ehird> call it Ouroboros
21:54:10 <ais523> so it can self-interpret, but isn't TC?
21:54:19 <ehird> ais523, not what i meant
21:54:20 <ehird> not self-interpret
21:54:21 <ehird> but
21:54:28 <ehird> imagine a language where the call stack was a first-class object
21:54:31 <ehird> smalltalks have them
21:54:34 <ehird> it's called CallStack or similar
21:54:44 <ehird> well, that's a bit of the interpreter 'eaten up' by the language it hosts
21:54:51 <ehird> now, the idea is to have EVERY SINGLE PART eaten up
21:54:56 <ehird> even the parts that do the eating up
21:56:04 <ais523> some sort of massive reflection, then
21:57:47 <ehird> ais523, except it's not reflection
21:57:49 <ehird> it's THERE
21:57:52 <ehird> you don't need a mirror
21:57:54 <ais523> yes
22:00:30 <ehird> ais523, wow, g++'s error messages just rock
22:00:32 <ehird> XD
22:00:49 <ais523> ehird: which one in particular did you like? gcc's are quite good, are g++'s even better?
22:01:05 <ehird> it was a joke
22:01:23 <ehird> you get used to seeing many<nested<types,oh<yes<indeed>>,abc>>
22:01:27 <ehird> on even the most basic errors
22:02:08 <ais523> ehird: I'd say that's being kind to the programmer by providing lots of information to help them track down the problem
22:02:23 <ehird> ais523, No -- you can literally have one basic error in a 10-line program
22:02:31 <ehird> and it will quote 15 STL templates
22:02:39 <ehird> with an unhelpful error message
22:02:45 <ais523> ehird: but they're part of your program too, they were just written by someone else
22:03:04 <ehird> ais523, You don't understand: STL templates use each other to depths exceeding 100.
22:03:13 <ehird> They are *never* helpful to know.
22:03:29 <ais523> ehird: your last two statements contradict each other
22:03:37 <ehird> ais523, try coding c++ some time.
22:03:44 <ehird> actually don't
22:03:45 <ehird> it's awful
22:03:49 <ais523> templates using each other to depths exceeding 100 is a great sort of thing for esolangers to like
22:03:56 <ais523> and I learnt C++ before I learnt C
22:04:02 <ais523> but it was old-style C++
22:04:10 <ais523> before it had STL or even namespaces
22:04:16 <ais523> the string class was nice, though
22:05:00 <ehird> ais523, default arguments with the magic setter stuff is so much fun...
22:05:09 <ehird> you never have to write a function body again!
22:05:13 <ais523> yay default arguments
22:05:24 <ehird> Actually, you never have to write values again, since C++ templates are turing complete
22:05:27 <ehird> Not only that,
22:05:30 <ehird> they're a lazy functional language.
22:05:38 <ehird> About 10x nicer than C++ itself.
22:05:58 <ais523> ehird: see, /that's/ what the error messages are for!
22:06:01 <ehird> ais523, Not only are they a lazy, turing complete, functional language, they're a lazy, turing complete, strongly-typed functional language.
22:06:14 <ais523> ehird: in other words, Haskell
22:06:23 <ehird> ais523, Exactly!
22:06:36 <ehird> But there's no meta-templates, so you can't use parametized types in the code. I don;'t think so at least.
22:07:07 <ehird> ais523, http://reddit.com/info/6fasr/comments/c03p4mn Maybe monad in C++ templates
22:07:13 <ehird> http://reddit.com/info/6fasr/comments/c03oswa Translation for LC->C++ templates
22:07:32 <ehird> ais523, And finally, a translation of lambda calculus church numerals to C++: http://reddit.com/info/6fasr/comments/c03ongu
22:07:46 <ehird> As for Peano numerals:
22:07:48 <ehird> struct Zero {};
22:07:48 <ehird> template <typename T>
22:07:48 <ehird> struct Succ { T v; };
22:10:24 <ehird> ais523, A toy C++ program I just wrote to refresh my memory (It's easy to forget everything about C++ in a few months)
22:10:28 <ehird> contains this wonderful constructor
22:10:28 <ehird> Greeter(std::ostream &output = std::cout) : out (output) {}
22:10:38 <ehird> note: no function body
22:10:40 <ehird> that is actually (pseudo-code):
22:10:55 -!- oerjan has joined.
22:10:55 <ehird> Greeter(std::ostream &output = std::cout) { this.out = output; }
22:11:00 <ais523> ehird: that still looks strange to me, I learnt C++ before the typename keyword was invented (they used to use 'class' back then, which was confusing because the same keyword was used for two things, and it could refer to non-classes too)
22:11:04 <ehird> wonderfully esoteric
22:14:07 <ehird> ais523, Actually, it startles me how clean you can make lambda calculus stuff with templates.
22:14:11 <ehird> It's not unpleasant, really.
22:14:20 <ais523> ehird: templates are lambda calculus, more or less
22:14:36 <ehird> ais523, Nicer actually - they have arithmetic and everything
22:14:57 <ehird> If using them without C++ underneath wasn't considered esoteric, I'd be coding in them :p
22:15:06 <ehird> boost is cool though
22:16:45 <ais523> why do so many people hate C++?
22:16:58 <ais523> it has lots of features that some people don't like, but nobody's forcing you to use them
22:17:10 <ais523> I can write C++ which is just C + the string class if I like
22:17:23 <ehird> ais523, C++ pretends C is something it's not.
22:17:27 <ehird> I personally hate it, but it's fun.
22:17:58 <ais523> C++ is a continuum of languages, from C to some sort of crazy OO template thing and everything in between
22:18:08 <ais523> so it's a good language for writing things which are slightly object-oriented
22:18:25 <ehird> lambda.cc:8: error: type/value mismatch at argument 1 in template parameter list for ‘template<template<template<class> class<template-parameter-3-1> > class<template-parameter-2-1> > class T’
22:18:32 <ehird> ais523, error messages are fun
22:18:55 <ais523> ehird: that looks like a really informative error message to me, and I'm not being sarcastic
22:19:21 <ais523> in this case, it's an argument type mismatch, so it's saying you have to pick an argument which really does have that crazy type, not some other crazy type
22:19:24 <ehird> ais523, yes
22:19:28 <ehird> sidenote:
22:19:37 <ehird> templates TOTALLY fuck up 'declaration-as-usage' :D
22:19:39 <ehird> usage:
22:19:45 <ehird> T -> typename T
22:19:53 <ehird> T<U> -> template <typename> class T
22:20:08 <ehird> T<U<V>> -> template <template <typename> class> class T
22:20:46 <ehird> actually
22:20:49 <ehird> 'class' is the return value
22:20:50 <ehird> fun
22:21:31 <oerjan> usagi:
22:21:33 <ehird> wait, no
22:21:33 <ehird> hmm
22:21:34 <oerjan> =:)
22:22:12 <ais523> oerjan: is that a smiley, or cise code?
22:22:18 <ehird> ais523 wins
22:22:24 <oerjan> a smiley
22:22:34 <oerjan> what is cise?
22:22:43 <ehird> template <template <typename> <template <typename> class> T>
22:22:45 <ehird> not right
22:22:46 <ehird> unfortunately
22:22:51 <ehird> oerjan, cise is oklofok's official concise language
22:22:54 <ais523> a language that someone in here was designing, I've forgotten who
22:22:58 <oerjan> aha
22:23:03 <ehird> he has an implementation of binary brainfuck in it that is less than 80 characters
22:23:09 <ehird> much less
22:23:14 <ehird> more like 55
22:23:25 <ais523> its operator precedences are flexible; operators are grouped according to what allows the data types to match up best
22:23:50 * oerjan recalls some of it now
22:26:08 <ais523> maybe it should do what Cyclexa does in terms of lexing
22:26:13 <lament> ais523: that's very clever and how come haskell doesn't have that
22:27:08 <ais523> many of the operators overlap characterwise (thus ??? could mean ??@? or ?@?? where @ is syntax the user can use to manually separate tokens if needed), but there are precedence rules to determine what each sequence of characters lexes as, according to what makes sense
22:27:15 <GregorR> Not having seen it in action, it sounds like the operators would be a bit nondeterministic from a human standpoint ...
22:27:52 <ehird> Hmm. I cannot get this type right.
22:27:56 <ehird> GregorR, You know C++ templates?
22:28:02 <ehird> What's the type of a template that is used:
22:28:04 <ehird> T<U><V>
22:28:06 <ehird> where U and V are typenames.
22:28:40 <GregorR> Uh, T<U><V>
22:29:30 <oklofok> don't talk about cise when i'm trying not to program!
22:29:44 <GregorR> CISECISECISECISECISECISECISECISE
22:30:00 <oklofok> unless someone here likes doing database+java homework
22:30:03 <GregorR> LIKE THE TIDE, IT WILL DRAG YOU IN
22:30:06 <GregorR> (And drown you)
22:30:11 <lament> brainfuck interpreter is 1 char in my language!
22:30:16 <oklofok> :D
22:30:44 <Slereah> lament : Is that the ESCO LANGUAGE?
22:31:04 <oklofok> lament: bbq9?
22:31:19 <lament> my language is based on lazy library loading
22:31:24 <oklofok> :D
22:31:37 <oerjan> lament: this a HQ9+ dialect? :D
22:32:03 <oklofok> oerjan: my joke was funnier cuz it had barbeque
22:32:30 <oerjan> omgwtf
22:32:31 <ais523> there are 0x10FFFF chars available in Unicode, that's 21 bits
22:32:32 <lament> it's a Haskell dialect
22:32:43 <lament> with lazy library loading
22:32:59 <ais523> if someone could get a BF interp down to 21 bits in a genuine language without cheating, then the program could be said to be 1 char long
22:33:01 <oklofok> oerjan: omq9+
22:33:13 <ais523> oh, 20 bits, because it isn't 0x1FFFFF
22:33:18 <lament> you don't have to include a library to use its functions; you don't have to have written it either
22:33:46 <oerjan> so lazy, clairvoyant library loading
22:33:50 <oklofok> lament: that is the cleverest thing anyone has ever come up with
22:34:00 <lament> it's convenient
22:34:01 <oklofok> you are a fucking god
22:34:02 <oerjan> a DWIM dialect then
22:34:15 <oklofok> holy shit how can i concentrate on my homework after this
22:34:18 <oklofok> god i'm tired
22:34:21 <oklofok> i'll continue now
22:34:23 <oklofok> !sdfj
22:34:25 <oklofok> ->
22:34:27 <EgoBot> Huh?
22:34:36 <oerjan> !never mind
22:34:39 <EgoBot> Huh?
22:35:33 <lament> it's imperative programming
22:35:36 <lament> DWIMOE
22:35:41 <lament> do what i mean or else
22:36:14 <ehird> GregorR, No
22:36:19 <ehird> I mean the template-level type
22:36:28 <ehird> template <typename> class T
22:36:30 <ehird> corresponds to the usage
22:36:31 <ehird> T<U>
22:37:03 <ais523> lament: Chris Pressey already implied that joke, when describing TURKEY BOMB as a 'peer-pressure' language
22:37:24 * oerjan realizes DWIMP is a perfect abbreviation for a certain other dialect
22:38:15 <oerjan> (do what i mean. please?)
22:38:35 <ehird> MDWIMDOTMC
22:38:40 <ehird> maybe do what i mean depending on the moon cycle
22:39:23 <oklofok> DWIMBTA
22:39:30 <oklofok> do whatever i mean by this acronym.
22:39:40 <oerjan> DWIMPPWSOT
22:39:59 <lament> TIMTOWTDWIM
22:40:09 <ehird> lament, haha
22:43:22 <ais523> that could be the name of a wiki package written in Perl
22:44:13 <ehird> use T::I::M::T::O:::W::T::D::W::I::M
22:44:17 <ehird> ais523, those are acronym namespaces
22:44:23 <ehird> A-Z, recursive
22:44:27 <ehird> :D
22:44:40 <ehird> you could use cpan as a keyboard if it could list subnamespaces
22:44:41 <ais523> the ::: is presumably a typo, rather than deliberate?
22:45:03 <ehird> oops, yes
22:45:14 <ehird> ais523, I had an idea for a package
22:45:15 <ehird> 'Cme'
22:45:20 <ehird> it is a class
22:45:29 <ais523> like Acme:: without the A?
22:45:30 <ehird> and it exports Acme
22:45:33 <ehird> which is a provided instance of Cme
22:45:42 <ehird> Cme is of course just a mirror into the acme namespace
22:45:49 <ehird> my $cme = new Cme;
22:45:56 <ehird> $cme->Cme
22:45:58 <ehird> is Acme::Cme
22:46:15 <ehird> (advert: 'Contains reproductive organs!')
22:46:36 <ehird> ais523, it would do actual evil so that Acme is-a Cme
22:48:09 <ais523> does that require actual evil, or just a tweak to @ISA?
22:48:43 <ehird> ais523, dunno
22:48:50 <ehird> packages arent objects are they?
22:48:55 <ais523> good point
22:49:32 <ais523> you could put the string "Acme" in @ISA, but you'd have to then tweak everything else to stop Perl actually trying to load it as a class...
22:49:53 <lament> i thought "actual evil" was mandatory?
22:51:06 <ehird> ais523, i cannot figure out T<U><V> type
22:51:10 <ehird> T = typename T
22:51:16 <ehird> T<U> = template <typename> class T
22:51:24 <ais523> ehird: I don't know enough about modern C++ template metaprogramming
22:51:25 <ehird> T<U,V> template <typename,typename> class T
22:51:28 <ehird> T<U><V> = ????
22:51:53 <ehird> ais523, mm
22:51:57 <ais523> it would have been a very simple template <class a><class b> when I learnt C++, but the syntax seems to have complicated since then
22:51:59 <ehird> i think its something to do with the class
22:53:44 <ehird> GregorR, Ideas?
23:02:26 <GregorR> Oh? Uh, nested templates?
23:02:31 <GregorR> Idonno :P
23:02:33 <GregorR> GTG! :P
23:05:53 <ehird> ais523, Almost got template SKI
23:06:33 -!- atsampson has quit (Read error: 104 (Connection reset by peer)).
23:07:31 -!- atsampson has joined.
23:17:17 <ehird> ais523, Hmm.
23:17:25 <ehird> ais523, I will then do template lisp.
23:17:31 <ehird> ais523, And then -- finally -- template $esolang
23:19:26 <lament> template templates?
23:19:34 <lament> <<<>><>><<<>><>><><>><>>>>
23:25:16 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
23:25:41 <ehird> I was just about to say something to ais..
23:30:19 <ehird> lament, They're fun
23:41:15 <oklofok> looks like nopol
23:41:25 <oklofok> i've always loved <>'s
23:41:34 <oklofok> i've also always hated xml
23:41:57 -!- oklofok has changed nick to oklohot.
23:42:02 <oklohot> the h and t are for HaTe
23:42:28 <ehird> oklohot, you should invent an awesome xml
23:42:40 <ehird> and then when oklotalk is released it can have a web lib plugged into that
23:42:46 <ehird> but you'd have to write a okloxml->xml
23:44:29 <oklohot> sexps are already an awesome xml
23:44:53 <oklohot> but perhaps we should just take the < and > characters from xml, and find a whole new purpose
23:45:07 <oklohot> perhaps nopol 2
23:45:19 <oklohot> i have some awesome ideas for it
23:46:09 <ehird> lambda.cc:9: error: type ‘T<V>’ is not derived from type ‘S<T>::S1<U>::S2<V>’
23:46:39 <oklohot> you know how nested lists are always context-free and shit, like, [a [b c] d] can't match a list with 4 elements no matter what b and c are...
23:46:43 <oklohot> well not in nopol!
23:46:49 <oklohot> NEGATIVE DEPTH LISTS!!
23:47:15 <ehird> oklohot, I love you
23:47:20 <ehird> That idea is oklo-hot.
23:47:23 <oklohot> turns out their semantics are serious brainfuck to figure out... but god they're hot.
23:47:32 <oklohot> yes, nopol owns.
23:47:47 <oklohot> also, nopol has the revolutionary idea of being based on no-operations, ofc
23:48:06 <oklohot> (TURING COMPLETE NOTHING! it's so clever i wanna cry my pants out.)
23:48:58 <oklohot> why did you bring nopol into this... please at least leave graphica out of this.
23:49:36 <oklohot> this and this, i suck
23:50:40 <oklohot> (<<a b c>> -> <a b c> -> a b c -> >a b c< -> >>a b c<< -- OH NO SHE DIN'T)
23:51:13 <ehird> oklohot, meanwhile i am about to infinite loop a C++ compiler
23:51:17 <oklohot> :)
23:51:18 <ehird> and it won't be a bug
23:51:25 <ehird> it'll be a real honset to god FEATURE
23:51:38 <oklohot> yarrr
23:52:07 <oklohot> ski ready yet?
23:54:34 <ehird> oklohot, the C++ ski?
23:54:36 <ehird> well, they were
23:54:41 <ehird> but i think sii-sii is untypeable
23:54:43 <ehird> :(
23:54:49 <oklohot> hmm
23:54:52 <oklohot> how's that?
23:54:55 <ehird> C++ template type system is less powerful than haskells
23:54:59 <ehird> and haskells doesn't type it
23:55:04 <oklohot> haskell fail at it too, no?
23:55:06 <ehird> oklohot, well, what's the type of sii
23:55:08 <ehird> it's
23:55:10 <oklohot> hmm
23:55:14 <ehird> (a = a -> b) -> b
23:55:15 <oklohot> n -> n n
23:55:18 <ehird> because it takes ITSELF as an argument
23:55:24 <oklohot> yeah
23:56:10 <oklohot> anyway, isn't that problem also apparent in haskellö
23:56:13 <oklohot> ä'¨'åä
23:56:36 <ehird> yeah
23:56:36 <ehird> so
23:56:38 <ehird> i'll try another ski
23:57:28 <ehird> lambda.cc:23: error: type/value mismatch at argument 1 in template parameter list for ‘template<template<class> class T> template<template<template<class> class U> template<template<class> class T> template<class> class U> struct S<T>::S1’
23:57:29 <ehird> best
23:57:29 <ehird> error
23:57:30 <ehird> ever
23:58:00 <ehird> oklohot, SKI are pretty useless in a strongly-typed environment
23:58:58 <oklohot> yeah it's prolly an fsm
23:59:07 <ehird> oklohot, err, no, C++ templates are turing complete
23:59:24 <ehird> itsproven
23:59:43 <oklohot> i meant stronly typed ski
23:59:45 <ehird> ah
23:59:46 <ehird> yeah
23:59:47 <ehird> probably
2008-04-17
00:00:02 <ehird> oklohot, but C++ template's type system (metatypes, basically) can't even handle SKSK
00:00:05 <oklohot> but i'm not sure about that, just assuming because of what recursion does
00:00:07 <ehird> because it has no polymorphism, afaik
00:00:21 <oklohot> and ski of course depends on recursion for tcness
00:00:28 <oerjan> strongly typed ski is strongly normalizing
00:00:41 <ehird> oerjan, yes, but Haskell's can do some basic things like SKSK
00:00:53 <ehird> C++'s can't, because the arguments are VERY strong..
00:00:55 <ehird> e.g.
00:00:59 <ehird> the first argument of K must be a type
00:01:02 <ehird> not a template
00:01:08 <ehird> so SKSK is invalid
00:01:19 <oerjan> ic
00:01:51 <oklohot> ```SKSK ?
00:02:26 <ehird> oklohot, yes
00:02:46 <ehird> oerjan, yeah, it's "typename a->typename b->typename a"
00:02:48 <ehird> not "a->b->a"
00:04:16 <ehird> Omg
00:04:19 <ehird> no template typedefs in gcc
00:04:26 <ehird> anyone know of a compiler that isn't a toy? ;)
00:06:20 <oerjan> ghc ;)
00:08:21 <ehird> oerjan, C++->haskell makes me weep ;)
00:08:40 <ehird> especially since it's possible - haskell's type system is TC with ghc extensions
00:09:45 <olsner> C++ templates automatically translated into haskell <3
00:09:53 <olsner> it would be so ugly it would be beautiful
00:10:25 <ehird> olsner, in to haskell type-system metaprogramming actually
00:10:28 <ehird> but thats more practical
00:10:31 <ehird> the languages are similar
00:14:26 <ehird> oklohot, doing C++ template cons
00:16:16 <oklohot> hehe
00:16:50 <oklohot> i would like seeing an automatic tm -> c++-template
00:17:09 <oklohot> i've just seen that one paper which says "it can be seen it can be done for any tm"
00:17:26 <oklohot> but doesn't actually prove it, or show an automatization
00:19:57 <Slereah> automatic tm -> c++-template?
00:20:04 <Slereah> An interpreter?
00:21:01 <oklohot> add parens around (tm -> c++ template)
00:21:19 <oklohot> anyway, i mean, just an automatic translation
00:21:31 <Slereah> Oh.
00:21:38 <ehird> oklohot, http://www.blogblog.com/no897/corner_main.gif
00:21:39 <ehird> err
00:21:44 <ehird> http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf
00:22:23 <oklohot> well yeah, that's what i meant
00:22:45 <oklohot> that's just making one translation, and saying one can see it's trivial to do for any tm
00:23:04 <oklohot> it's not an automatic translator
00:24:43 <Slereah> The original Love Machine 9000 was supposed to just be a big program that converted the input into a C program
00:24:58 <Slereah> But C being the scourge of the earth, I dropped the idea and went to Python.
00:25:45 <oklohot> THE C-MAN MACHINE 9000
00:26:21 <oklohot> do it
00:26:21 <oklohot> now
00:29:36 <Slereah> D:
00:30:07 <Slereah> Well, since my main problem was extending the memory when it was full, I suppose I could just drop that idea and just add 36000 cells or something.
00:30:38 <Slereah> And I could just do a Post machine.
00:31:00 <oklohot> you could just double the size if you run out of mem or something
00:31:10 <oklohot> and in any case, that's a trivial prob
00:31:28 <oklohot> of course, the trivial ones are the ones one doesn't really want to have to solve
00:31:34 <Slereah> Yes, probably. But then again, that would require me to know how to use those memory commands
00:31:55 <Slereah> Remember that I'm a terrible programmer D:.
00:32:22 <oklohot> there's like 3 of them, and everyone here can help you
00:32:53 <Slereah> Well, let's get that Dev C++ thingy back.
00:33:04 <oklohot> thazz the spirit!
00:33:21 <Slereah> And write a Post machine - C translator :o
00:33:32 <ehird> Slereah, malloc(size) - maek something 'size' bytes, return it
00:33:41 <Slereah> I know of this.
00:33:43 <ehird> free(x) - im done with this (always do after you malloc)
00:33:49 <Slereah> I could never make it work in class.
00:33:56 <ehird> realloc(x, size) - i dont have enough xness, give me size isntead
00:33:59 <ehird> Slereah, classes are c++
00:34:00 <ehird> not c
00:34:10 <ehird> oh
00:34:10 <ehird> class
00:34:11 <ehird> i see
00:34:13 <Slereah> *rimshot*
00:34:15 <ehird> Slereah, well, basically
00:34:17 <ehird> malloc(X)
00:34:20 <ehird> is of type T *
00:34:21 <lament> wow @ Tree
00:34:25 <ehird> where T can be anything
00:34:28 <lament> wonderful idea
00:34:36 <ehird> malloc(sizeof(T)*N)
00:34:37 <fizzie> And with realloc, it's important to remember that x can move; I think that's quite a common problem.
00:34:39 <ehird> gives you space for N Ts
00:34:53 <oklohot> Slereah: btw, if you do C++, you don't even have to understand the memory stuff, necessarily
00:35:11 <Slereah> Yes, I know there's the self-resizing array vector thing.
00:35:22 <Slereah> But that's when I read about it that I gave up on C.
00:35:38 <Slereah> So it's just going to be an array limited in size right now.
00:35:45 -!- oerjan has quit ("Good night").
00:36:01 <oklohot> well, just put all array operations behind procedure calls, and you can just add this later.
00:36:17 <oklohot> or behind a class interface, in the case of C++
00:37:02 <Slereah> My idea was along the line of writing up something simple, since it's almost 2AM.
00:37:21 <Slereah> Possibly not even use a folding function :o
00:37:35 <oklohot> whuzzat?
00:37:42 <ehird> oklohot, fold=reduce
00:38:16 <Slereah> I don't know. But in math, the folding function is a N -> Z function.
00:38:37 <Slereah> That way, it's infinite instead of half
00:38:48 <Slereah> But if I use a limited array, I'm not gonna bother.
00:41:29 <Slereah> When they say C++ template, what are they refering to exactly?
00:41:36 <Slereah> C++ without the libraries?
00:49:05 <oklohot> ehird: i assumed he meant something else cuz it was c++
00:49:16 <ehird> Slereah, No
00:49:27 <ehird> Slereah, C++ templates are kind of parametized types
00:49:31 <ehird> But turing-complete
00:49:31 <oklohot> Slereah: teh typal systemization
00:49:38 <ehird> Basically it's a kind-of macro language
00:49:41 <ehird> but turing complete
00:49:44 <ehird> and operates on types
00:49:45 <Slereah> This doesn't look good for me.
00:49:48 <ehird> so instead of being a macro language over text
00:49:50 <ehird> its a macro language over types
00:49:52 <oklohot> well yeah parametrisized typides
00:49:52 <ehird> Slereah, Yeah, no kidding
00:49:55 <ehird> You won't need it
00:50:02 <ehird> Apart from STL
00:50:05 <ehird> Slereah, std::vector<int>
00:50:11 <ehird> that's an instance of std::vector with the parameter 'int'
00:50:15 <ehird> it means a vector of ints.
00:50:19 <ehird> std::vector is a template.
00:50:28 <ehird> that's all you'll need o know
00:50:30 <ehird> *to
00:50:30 <ehird> but
00:50:32 <ehird> i suggest C
00:50:39 <Slereah> It would be nice if they gave us an actual class on C.
00:51:30 <ehird> Slereah, It's not easy to teach!
00:51:34 <ehird> I suggest buying the K&R book
00:51:37 <ehird> The C Programming Language
00:51:45 <ehird> After all, they made the language. They're pretty good with it.
00:52:00 <lament> that's not necessarily true
00:52:06 <lament> i'm not any good at languages i made up
00:52:07 <Slereah> Heh.
00:52:18 <oklohot> i usually pwn at my own languages :)
00:52:22 <Slereah> I have it somewhere.
00:52:22 <oklohot> south park time!
00:52:23 <oklohot> ->
00:52:36 <ehird> oklohot, bye bye :)
00:52:38 <Slereah> But from what I've read so far, it's what I already know.
00:52:38 <ehird> lament, hehe
00:52:43 <ehird> Slereah, Hardly!
00:52:45 -!- timotiis has joined.
00:52:46 <ehird> It teaches almost all of C.
00:52:48 <Slereah> Wait, we're already tuesday?
00:52:51 <Slereah> Holy dick.
00:53:01 <Slereah> I mean.
00:53:03 <Slereah> Wait
00:53:08 <Slereah> What's the word.
00:53:13 <Slereah> Damn English.
00:53:22 <Slereah> Thursday.
00:53:45 <Slereah> I'd better get on the leeching chan, to DOWNLOAD IT ILLEGALY.
00:53:51 <Slereah> I mean, download it legally.
00:54:41 -!- GregorR-L has joined.
00:55:03 <Slereah> According to Mr Twig, the episode's not for two hours.
00:55:12 <Slereah> What are you really doing, OkloLIAR
00:55:55 -!- timotiis_ has joined.
00:55:58 <lament> wtf is Esco?
00:56:04 <ehird> lament, an injoke
00:56:18 -!- timotiis_ has quit (Client Quit).
00:56:32 <lament> it looks vaguely serious
00:57:30 <lament> wow, it's written in C++ too
00:58:13 <ehird> lament, its vaguely serious but crap
00:58:20 <Slereah> Esco is an esoteric interpreter for a variety of languages!
00:58:25 <ehird> Slereah, win
00:58:28 <Slereah> Such as Brainfuck, Ook, Spoon...
00:58:39 <ehird> HAHA
00:59:36 <lament> seems pretty misguided
01:00:09 <Slereah> I'm all for it if he writes the interpreter for my Andrei Machine 9000.
01:00:53 <Slereah> Now I have to remember how file handling works on C.
01:18:07 -!- ehird has quit (Read error: 113 (No route to host)).
01:23:41 * pikhq mutters about that being fucking insane.
01:24:16 <Slereah> wot?
02:02:11 -!- timotiis has quit (Read error: 110 (Connection timed out)).
02:12:58 -!- GregorR-L has quit ("Leaving").
02:25:06 <oklohot> Slereah: i have all sp episodes on my hd
02:26:02 <Slereah> Same here.
02:26:24 <Slereah> Plus, they're all available on mr twig and the south park official website :o
02:26:37 <oklohot> oh
02:26:44 <oklohot> didn't know
02:27:02 <Slereah> They recently put all of them on south park studios
02:27:03 <oklohot> i've seen them, all like 5 times though, so i think i'm okay
02:27:15 <oklohot> good use of comma there
02:27:18 <oklohot> nice work
02:37:36 -!- oklohot has quit (Read error: 104 (Connection reset by peer)).
02:37:54 -!- oklopol has joined.
04:14:05 -!- Slereah_ has joined.
04:32:22 -!- Slereah has quit (Read error: 110 (Connection timed out)).
04:38:58 <Sgeo> G'night all
04:42:13 -!- Sgeo has quit ("G'night").
06:16:37 -!- calamari has joined.
06:17:29 <calamari> hi
06:20:32 <calamari> irc'ing from telnet :P
06:22:32 <calamari> I guess I'd better join another chan.. dunno if anyone seme or not
06:23:23 -!- calamari_ has joined.
06:23:35 <calamari> test
06:23:42 <calamari_> ahh ok it is working :)
06:36:03 -!- calamari has quit.
06:40:04 -!- calamari_ has changed nick to calamari.
07:12:54 -!- calamari has quit ("Leaving").
07:53:18 -!- oklohot has joined.
07:59:01 -!- oklopol has quit (Read error: 113 (No route to host)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:30 -!- oklopol has joined.
08:06:50 <oklopol> <: <<:> <<:> <:>>> <<> <> <>> >
08:06:52 <oklopol> ---
08:06:54 <oklopol> <: <<:> <<:> <:>>> ><<> <> <>>< >
08:06:56 <oklopol> ==> <: <<:> <<:> <:>>> <> <> <> >
08:06:58 <oklopol> ---
08:07:03 <oklopol> <: <<:> <<:> <:>>> >><<> <> <>><< >
08:07:04 <oklopol> ==> <: <<:> <<:> <:>>> ><> <> <>< >
08:07:06 <oklopol> ==> <<: <<:> <<:> <:>>> <> > <: <<:> <<:> <:>>> <> > <: <<:> <<:> <:>>> <> >>
08:07:08 <oklopol> using negative lists to do *map*
08:07:10 <oklopol> in nopol
08:07:14 <oklopol> actual syntax
08:07:39 <oklopol> if someone can deduce the semantics of negative lists from that, i shall bow deep enough to blow myself
08:09:11 -!- Iskr has joined.
08:09:28 <oklopol> nopol is based on explicit tree rewriting, computationally
08:09:48 <oklopol> basically, that you have to provide the rewrites as you go
08:10:00 <oklopol> as normal lists of two elements, <from to>
08:10:16 <oklopol> <:[.:]* denotes a variable>
08:10:21 <oklopol> hi Iskr, you new?
08:10:27 <Iskr> quite
08:12:00 -!- oklohot has quit (Read error: 110 (Connection timed out)).
08:13:19 <oklopol> Iskr: some nopol for you too http://www.vjn.fi/pb/p334263666.txt
08:13:52 <Iskr> ehm thanks
08:13:58 <Iskr> very ermeti
08:13:59 <Iskr> c
08:14:00 <Iskr> =)
08:14:09 <oklopol> look at the list <<> <> <>>, and pay attention to the following two expressions
08:14:22 <oklopol> it is first subtracted a layer of depth
08:14:31 <oklopol> rendering it in the upper scope
08:15:12 <oklopol> in the last part, you can see it uppified twice, and it jumps toplevel, spreading its elements one by one in the place where it used to be
08:15:34 <oklopol> so we can implement a generic map just like that
08:19:44 -!- GreaseMonkey has joined.
08:21:44 <Iskr> mh ok
08:21:58 <oklopol> :)
08:22:19 <oklopol> i smell overwhelming interest
08:22:55 <oklopol> GreaseMonkey: you interested in negative lists?
08:23:16 <GreaseMonkey> 'lo
08:23:22 <GreaseMonkey> erm... what would that be?
08:23:55 <Iskr> oklopol, i must say i'm curious about esoteric languages but i'm quite not able to understand them
08:23:59 <Iskr> it's not your fault =)
08:25:17 <oklopol> negating the list containing a, b and c inside "<<> <<a> <b> <c>> <>>": <<> >><<a> <b> <c>><< <>> ===> <<<> <a> <>> <<> <b> <>> <<> <c> <>>>
08:25:29 <oklopol> we kinda flip it inside out
08:26:19 <oklopol> >...< means unnest the list ..., <...> means nest it one level
08:27:04 <oklopol> so if a contains <<X> <Y> <Z>>, < <V> >a< <W> > would be < <V> <X> <Y> <Z> <W> >
08:27:25 <oklopol> because it's lifted into the upper scope
08:27:32 <oklopol> now double-lift
08:27:55 <oklopol> if a contains <<X> <Y> <Z>>, < <V> >>a<< <W> > would be << <V> <X> <W> > < <V> <Y> <W> > < <V> <Z> <W> >>
08:29:00 <oklopol> >>>a<<< would lift up from an even deeper list, but it cannot be done here, because we don't see the surrounding program
08:29:08 <oklopol> nopol has a fun way of escaping contexts
08:29:28 <oklopol> where's that ehird when you need him
09:17:21 -!- oklohot has joined.
09:18:24 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
09:26:26 -!- oklohot has changed nick to oklopol.
10:02:49 -!- jix has joined.
10:27:55 -!- GreaseMonkey has quit ("Unisex.").
10:59:09 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
12:05:46 -!- oklopol has joined.
13:28:33 -!- Sgeo has joined.
14:07:35 -!- timotiis has joined.
14:13:33 <Sgeo> Bye all.
14:13:47 <Sgeo> I'll be back barring any tragic accidents.
14:14:54 -!- Sgeo has quit ("Bye all.").
14:44:24 -!- ehird has joined.
14:44:36 <ehird> oklopol, i haev totally pwned j00
14:44:41 <ehird> i used the dis module to get oklotalk bytecode
14:44:42 <ehird> MWAHAHAHA
14:44:44 <ehird> er.
14:44:44 <ehird> yes.
14:46:26 <ehird> oklopol, btw i cant 'import parsing'
14:46:28 <ehird> AttributeError: 'module' object has no attribute 'set_functions'
14:46:38 <ehird> or even run it with -i
14:46:52 <ehird> seems that objects.pyc is the problem
14:50:46 <ehird> oklopol, okloping
14:54:37 <ehird> Wow. I just generated the hugerest error ever from a c++ compiler.
15:06:48 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
15:13:54 -!- jix has quit (Read error: 113 (No route to host)).
15:15:29 <oklopol> ehird: good for ya
15:17:40 <ehird> oklopol, well, fix it
15:17:43 <ehird> i want to use the modules
15:17:54 <oklopol> wut
15:18:20 <oklopol> well in case for some reason you cannot get the bytecode, why should i care? :o
15:18:44 <ehird> oklopol, because i want to use the modules
15:18:47 <ehird> but 'objects' won't import
15:18:50 <ehird> it gives an error
15:18:55 <ehird> so everything importing objects fails too
15:18:59 <ehird> the cli works though
15:19:14 <oklopol> well how the fuck is that possible
15:20:29 <oklopol> can you use Runner?
15:20:35 <oklopol> that's all you need to be able to use
15:21:02 <ehird> yes, oklopol
15:21:04 <ehird> but i want to use the parser
15:21:09 <ehird> i mean
15:21:13 <ehird> i can get the runne
15:21:17 <ehird> then grab its copy of parsing
15:21:19 <ehird> but that's weird
15:21:33 <oklopol> haha
15:21:37 <oklopol> :P
15:21:45 <oklopol> well, i have no idea how that could be possible
15:22:28 <ehird> import oklotalk ; p = oklotalk.parsing
15:22:28 <ehird> :D
15:22:40 <ehird> whut's lbd, btw
15:22:44 <oklopol> that works, but import parsing doesn't?
15:23:13 <ehird> oklopol, bingo
15:23:17 <ehird> Wait no
15:23:19 <ehird> import parsing WORKS now
15:23:20 <ehird> WTF
15:23:22 <oklopol> xD
15:23:23 <ehird> okay
15:23:27 <ehird> oklopol, 'import parsing; ...' doesn't work
15:23:31 <ehird> 'import oklotalk; import parsing; ...' DOES
15:23:43 <ehird> oklopol, do you use 'set_functions' anywhere in yoru code?
15:24:02 <oklopol> hmm
15:24:10 <oklopol> what does import parsing say?
15:24:18 <ehird> File "C:\Users\oklopol\Documents\pythonal\oklotalk\objects.py", line 548, in <module>
15:24:18 <ehird> AttributeError: 'module' object has no attribute 'set_functions'
15:24:48 <oklopol> oh
15:24:49 <oklopol> hmm
15:25:34 <oklopol> i have functions.set_functions(dyn_vrs)
15:25:40 <oklopol> in objects
15:25:49 <oklopol> this is quite fun
15:25:55 <ehird> >>> import functions
15:25:55 <ehird> Traceback (most recent call last):
15:25:55 <ehird> File "<stdin>", line 1, in <module>
15:25:55 <ehird> File "C:\Users\oklopol\Documents\pythonal\oklotalk\functions.py", line 4, in <module>
15:25:55 <ehird> File "C:\Users\oklopol\Documents\pythonal\oklotalk\objects.py", line 548, in <module>
15:25:56 <ehird> AttributeError: 'module' object has no attribute 'set_functions'
15:25:58 <oklopol> have no idea why this happens
15:26:00 <ehird> oklopol, oh lawd, is 'dat sum circular dependency?
15:26:06 <ehird> functions uses objects
15:26:09 <ehird> but objects uses functions
15:27:13 <oklopol> a lot of circular dependsncy
15:27:15 <oklopol> *dependency
15:27:25 <oklopol> in oklotalk.py, i do a reload an all modules
15:27:27 <oklopol> is that is?
15:27:34 <ehird> oklopol, probably
15:27:43 <ehird> have you submitted it yet? gimme the source and let me fix it :P
15:27:48 <oklopol> oh no
15:28:07 <oklopol> and i could fix it myself if i care even the teensiest bit
15:28:08 <oklopol> :D
15:28:13 <oklopol> *cared
15:28:51 <oklopol> there is no reason why i'd want people importing parsing
15:28:59 <ehird> oklopol, yeah -- I want to write an oklotalk compiler
15:29:02 <ehird> maybe even oklotalk->c
15:29:08 <ehird> surely that would be a good use
15:29:26 <oklopol> sounds like fun
15:29:35 <oklopol> but, well, the parsing is trivial :o
15:29:43 <ehird> oklopol, yeah but mine is broken
15:29:53 <oklopol> hmmhmm
15:30:09 <oklopol> well i say have fun fixing, is that okay? :P
15:30:17 <ehird> oklopol, no :P
15:30:19 <oklopol> damn
15:30:24 <ehird> oklopol, oh and should i add compile-time stuff
15:30:25 <ehird> like
15:30:38 <ehird> (~ (+ 2 2))
15:30:40 <ehird> is evaluated at compile time
15:30:44 <ehird> and then '4' is put in its place
15:30:58 <oklopol> go for it
15:31:40 <ehird> oklopol, untuplify=??
15:31:44 <oklopol> :)
15:32:01 <oklopol> what about untuplification? :)
15:32:17 <ehird> whut does it do
15:32:25 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
15:32:30 <oklopol> good enough answer?
15:32:35 <oklopol> so
15:32:39 <ehird> oklopol, you're an unhelpful bastard
15:32:42 <ehird> :D
15:32:50 <oklopol> oh, well, i'll retry
15:32:54 <oklopol> basically
15:33:04 <oklopol> for some reason, i have no idea why, i first parse into tuples
15:33:11 <oklopol> something like sexps, but python lists
15:33:15 <oklopol> then
15:33:33 <oklopol> i have a separate untuplification phase to put stuff in Apl's and Lst's etc
15:34:42 <oklopol> my ways to implement stuff are usually completely random, it was only after i'd made it i realized there is no use for the intermediary step
15:34:55 <oklopol> it's more verbose, more error prone and... well fucking ugly
15:36:56 <ehird> oklopol, ok but to write a compiler i want the tuple form
15:36:58 <ehird> don't i
15:37:03 <oklopol> well
15:37:05 <oklopol> perhaps
15:37:06 <oklopol> :D
15:37:29 <oklopol> it's pretty simple too
15:37:38 <oklopol> btw. what was wrong with your parsing?
15:38:08 <oklopol> or was it simply too awesome and imploded
15:38:09 <oklopol> :o
15:38:25 <oklopol> or was it just the comments, i mean
15:38:44 <oklopol> because you can always just have a separate comment-removal stage
15:42:19 <ehird> oklopol, it was a few things
15:42:31 <ehird> but my oko->c is gonna be so awesome
15:42:41 <ehird> oklopol, real oklotalk will be so awesome won't it
15:42:49 <ehird> i mean it'll come with an interpreter and a compiler and all sorts of things
15:42:51 <ehird> right? <__<
15:43:27 <ehird> oklopol, btw, is there actually a complete okoprogram written?
15:43:51 <oklopol> a program in oklotalk?
15:44:06 <oklopol> the only "program" is the one quicksorting rational
15:44:06 <oklopol> s
15:44:55 <oklopol> there's a few (trivial) additions i need in order to actually make the imperative part a bit more rational (also a few less trivial ones)
15:45:12 <oklopol> but after that i'll prolly make something to test it
15:46:39 <oklopol> oh, right!
15:46:43 <oklopol> i almost forgot
15:46:52 <ehird> oklopol, i mean one that does outn and stuff
15:46:53 <oklopol> ehird: did you read the logs? i invented negative lists!
15:47:09 <ehird> oklopol, i was there
15:47:11 <ehird> but answer me :P
15:47:17 <oklopol> (i had only actually invented uplevel lists, or "zero depth lists" before)
15:47:22 <oklopol> you were there?
15:47:23 <oklopol> oh
15:47:50 <oklopol> oh
15:47:50 <oklopol> like, interaction with the user etc?
15:47:51 <oklopol> i don't have anything for that
15:48:07 <oklopol> i've usually had all my interaction in the program source :)
15:48:24 <oklopol> mainly, ofc, because i usually write programs for myself exclusively :D
15:48:30 <oklopol> anyway
15:48:55 <ehird> oklopol, i think i'll just try (outn "hello world")
15:49:00 <oklopol> hehe
15:49:06 <oklopol> hmm, oklotalk cli might be fun
15:49:17 <oklopol> i mean, in oklotalk naturally
15:49:30 <oklopol> ehird: did you understand how i did map with a negative list?
15:49:51 <oklopol> it's really the only useful thing i can think of yet :D
15:50:00 <oklopol> but it's kinda neat, anyway
15:50:25 <ehird> No I wasn't there for all of it oklopol
15:50:37 <oklopol> oh
15:50:39 <ehird> also, oklotalk doesnt have eval does it?
15:50:44 <oklopol> no.
15:50:48 <oklopol> but trivial addition ofc
15:51:04 <oklopol> perhaps an interface to both run() and Runner()
15:51:26 <ehird> oklopol, right, don't add it just yet
15:51:31 <ehird> i want to be able to generate small executablse
15:51:32 <ehird> :D
15:51:33 <oklopol> okay, why?
15:51:36 <ehird> feel free to write oko-in-oko though
15:51:39 <oklopol> haha
15:51:41 <ehird> 'cause if you do that
15:51:44 <ehird> then you have oko-in-c
15:51:45 <oklopol> well
15:51:49 <oklopol> that would be fucking awesome
15:51:52 <ehird> oklopol, and oko-in-oko is much nicer than oko-in-c amirite ;)
15:52:04 <oklopol> yeah.
15:52:34 <oklopol> so you calling oklotalk oko?
15:52:59 <oklopol> wonder if i should change the official suffix to that
15:53:04 <oklopol> i've been using ot
15:54:31 <ehird> oklopol, .ot is a good extension
15:54:37 <ehird> but oko is a good name for referring to oklotalk
15:54:41 <oklopol> sure
15:55:31 <ehird> oklopol, so, my thing is really tupletree->C
15:55:36 <ehird> or should it be untuplified->c
15:56:24 <oklopol> dunno, dunno...
15:56:50 <oklopol> how compilatious a compilation are you going to make?
15:57:01 <oklopol> the semantics aren't exactly compilation-friendly
15:57:20 <ehird> oklopol, pretty much totally
15:57:24 <ehird> oklopol, and how aren't they?
15:57:29 <ehird> it's a pretty regular message-sending language
15:58:59 <oklopol> i guess
15:59:15 <ehird> oklopol, but yeah which form
15:59:40 <oklopol> you cannot access the code or the ast at runtime atm, so i guess it's not that bad yet
15:59:48 <oklopol> which form?
15:59:49 <ehird> oklopol, also, is 'outn' special cased or do strings respond to outn
15:59:55 <ehird> and, tuplified or untuplified
16:00:07 <oklopol> outn is a function on strings
16:00:14 <oklopol> err
16:00:18 <ehird> oklopol, there are no functions
16:00:19 <oklopol> just a function
16:00:23 <oklopol> :)
16:00:28 <oklopol> well it's not an atom
16:00:30 <oklopol> it's a thing
16:00:33 <ehird> oklopol, outn IS an atom
16:00:35 <ehird> i just tested
16:00:47 <oklopol> well
16:00:49 <oklopol> in fact
16:00:52 <oklopol> it is not.
16:00:53 <ehird> so shoudln't (outn "abc") send $outn to "abc"?
16:01:01 <oklopol> it does not
16:01:04 <oklopol> it is not an atom
16:01:07 -!- jix has joined.
16:01:35 <ehird> oklopol, :|
16:01:40 <oklopol> currently, there is no $str for standard string representations, but primitive funcs do it.
16:01:54 <oklopol> well
16:01:55 <ehird> oklopol, why not make outn a message?
16:02:01 <ehird> then things can define how they should be printed
16:02:04 <ehird> and $str is just a stringio-thingy
16:02:05 <oklopol> having that would basically just mean to add a line of code to outn :D
16:02:28 <oklopol> hmm... i prefer outn to ask for $str
16:02:41 <ehird> oklopol, ah, but that fails on infinite lists
16:02:44 <ehird> and similar
16:02:47 <ehird> and is also slower
16:03:45 <oklopol> fails on infinite lists in oklotalk--
16:03:47 <oklopol> not oklotalk
16:04:10 <ehird> <oklopol>where's that ehird when you need him
16:04:13 <ehird> we have a special bond <3
16:04:15 <ehird> xD
16:04:17 <oklopol> hehe :P
16:04:23 <ehird> BUT YEAH
16:04:26 <ehird> untuplified or ... tuplified
16:04:46 <oklopol> well i figured you might be willing to take the minute to see how negative lists worked.ö
16:04:58 <ehird> yeah i don't get them
16:05:00 <ehird> thinking about it tho
16:05:15 <oklopol> i explain it a few times, try reading
16:05:22 <oklopol> it's basically
16:05:46 <oklopol> hmm
16:05:51 <oklopol> not that trivial to explain..
16:06:35 <ehird> oklopol, also, name my intermediate compilation stage
16:06:46 <oklopol> the point is, that a negative list L is converted to a list of its context (surrounding lists) multiplied into lists that are like the original ones, but where L was, one element of it is
16:06:47 <ehird> I'm thinking OKINTERMEDIATE
16:06:47 <oklopol> hmm
16:07:14 <oklopol> especially with that capitalization, i'd say that's perfect
16:07:19 <ehird> yes
16:08:39 <oklopol> <<X> ((<<a> <b> <c>>)) <Y>> ==> <<X> (<a> <b> <c>) <Y>> ==> <<<X> <a> <Y>> <<X> <b> <Y>> <<X> <c> <Y>>>
16:08:42 <ehird> oklopol, my ide ais that:
16:08:46 <oklopol> where () is the negative list syntax
16:08:51 <ehird> {(-> a a)}
16:08:54 -!- timotiis has quit (Read error: 110 (Connection timed out)).
16:08:54 <ehird> in OKINTERMEDIATE
16:08:56 <ehird> it something like
16:08:58 <ehird> *is
16:09:02 <oklopol> it's actually >...<, but that's just to make it more confusing, ofc :)
16:09:09 <oklopol> hmm
16:09:30 <ehird> [('thing',('match',('atom',0),('atom',0)), ('name','a')]
16:09:31 <ehird> or something
16:09:45 <ehird> i don't know, it just tries to make it something more malleable to C
16:10:14 <oklopol> 'atom',0 ?
16:10:18 <oklopol> the zeroth atom?
16:10:21 <ehird> oklopol, yeah
16:10:24 <ehird> and the rest of the list is the atoms
16:10:28 <ehird> oklopol, because, there is only one $a
16:10:33 <ehird> otherwise you'd do loads of allocatering
16:10:41 <oklopol> yeah, there's just one
16:11:12 <ehird> oklopol, okotypes:
16:11:22 <ehird> atom, thing, int, string
16:11:25 <ehird> missed any?
16:11:47 <oklopol> well if you wanna separate built-in types, list..?
16:11:54 <ehird> ah yes
16:11:59 <ehird> oklopol, atom,thing,int,string,list
16:12:11 <ehird> your rtf says thats right
16:12:24 <oklopol> yarr
16:12:34 <ehird> oklopol, so i need 3 bits on a pointer
16:12:34 <oklopol> Read That, Fucker!
16:13:12 <ehird> 000=integer, 001=string, 010=list, 011=atom, 100=thing
16:13:45 <ehird> oklopol, the base data type is 'OKO'
16:13:46 <ehird> :DD
16:14:19 <oklopol> 0x0C0
16:14:38 <ehird> haha, oklopol
16:15:02 <ehird> oklopol, I love tags in pointers
16:15:03 <ehird> #define TAG_OF(x) ((x)&4)
16:15:15 <ehird> #define VAL_OF(x) ((x)>>3)
16:15:26 <ehird> also my tagging macro is ENTAG
16:15:46 <ehird> #define ENTAG(x,t) (((x)<<3)+(t))
16:16:01 <oklopol> why 4
16:16:28 <ehird> oklopol, 4 types
16:16:31 <ehird> 000...100
16:16:34 <ehird> so 4 = 111
16:16:36 <ehird> so
16:16:37 <oklopol> so not 7?
16:16:39 <ehird> 4 = 00000000000000111
16:16:46 <ehird> so, 4 will extract the tag
16:16:50 <fizzie> 4 = 0b100, actually.
16:16:56 <ehird> fizzie, yeah yeah
16:17:01 <ehird> oklopol, the tag is stored in the lowest 3 bits of the poitner
16:17:07 <oklopol> so perhaps 7?
16:17:12 <ehird> why 7?
16:17:15 <oklopol> well
16:17:16 <oklopol> umm
16:17:24 <fizzie> Because 7 = 0b111?
16:17:27 <oklopol> dunno, just don't see.. why 4
16:17:37 <oklopol> why not 111 so you get them three lowest thingularities
16:17:38 <ehird> oklopol, int,string,list,atom,thing
16:17:43 <ehird> 0=int
16:17:44 <ehird> 1=string
16:17:44 <oklopol> well
16:17:45 <ehird> 2=list
16:17:47 <ehird> 3=atom
16:17:48 <ehird> 4=thing
16:17:59 <oklopol> TAG_OF returns either 4 or 0
16:18:04 <ehird> oklopol, no it doesn't
16:18:04 <oklopol> so you have two kinds of tags.
16:18:07 <oklopol> okay
16:18:08 <ehird> you are wrong
16:18:10 <fizzie> x&4 extracts one bit: the third-lowest. It's not physically possible for x&4 to have more than two values.
16:18:12 <ehird> oklopol, & is bitwise
16:18:17 <oklopol> then the universe has changed since yesterday
16:18:21 <ehird> fizzie, Err, you're right
16:18:21 <oklopol> i'm pretty sure
16:18:22 <ehird> &7
16:18:24 <ehird> :D sorry
16:18:28 <ehird> but oklopol is still wrong
16:18:29 <oklopol> so perhaps 7?
16:18:37 <ehird> yes
16:18:40 <oklopol> okay
16:18:42 <oklopol> good
16:18:46 <oklopol> was jsut wondering about the 4
16:18:48 <oklopol> *just
16:18:58 <ehird> ((("foo")<<3)+(3)) /* this is how an atom "foo" is initialized in the header - expanded from ENTAG("foo",tag_atm) :DDDDD */
16:19:04 <oklopol> how was i wrong?
16:19:22 <ehird> oklopol, acknowledge that <<3 on a literal string is awesome
16:19:43 <oklopol> i agree
16:19:49 <oklopol> but how was i wrong?
16:20:09 <ehird> dunno
16:20:21 <ehird> template.c:17: error: invalid operands to binary <<
16:20:23 <ehird> stupid fucker
16:20:25 <ehird> need a cast
16:20:27 <oklopol> so i was right, but you want to feed my paranoia?
16:20:54 <ehird> #define ENTAG(x,t) ((OKO)((((int)x)<<3)+(t)))
16:20:56 <fizzie> Uh.. you're also shifting out the topmost three bits of the pointer; if they happen to be nonzero, VAL_OF will not recover it.
16:20:59 <ehird> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDd
16:21:11 <ehird> fizzie, Yes, there's nothing you can do about that with type tags in the pointer.
16:21:37 <ehird> apparently,
16:21:38 <fizzie> Typically you just align all pointers to a multiple of 8 or so, and use x&~7 to extract the value.
16:21:38 <ehird> OKO atm_0 = ((OKO)((((int)"foo")<<3)+(tag_atm)));
16:21:41 <fizzie> Not shifts.
16:21:43 <ehird> is not valid because it's not constant :((
16:21:49 <ehird> fizzie, Haven't seen that done.
16:21:56 <ehird> Example for ENTAG,TAG_OF,VAL_OF?
16:22:16 <oklopol> I WAS NOT WRONG
16:22:19 <fizzie> ENTAG being x|tag, TAG_OF being x&7 and VAL_OF being x&~7.
16:22:28 * oklopol starts tearing stuff apart and turns green
16:22:31 <ehird> fizzie, Do I need to do anything special or will that Just Work?
16:23:41 <fizzie> Well, you need to have all your x's aligned so that the three lowest bits are always zero. And those were for types where the value is a pointer.
16:24:13 <fizzie> If you want to stick an "immediate" (n-3)-bit value in there, you'll of course want to use shifts.
16:25:04 <ehird> fizzie, WELL, I do believe I need to think of a better stratergy.
16:25:21 <oklopol> oh you low-level geeks
16:25:30 <ehird> fizzie, http://www.accesscom.com/~darius/hacks/ichbins.tar.gz This compiler is what I stole the tagging from!
16:25:37 <oklopol> just open python
16:25:40 <oklopol> and forget about it
16:26:02 <ehird> static Tag get_tag (obj x) { return 3 & x; }
16:26:03 <ehird> static obj entag (Tag tag, unsigned value)
16:26:03 <ehird> { return tag | (value << 2); }
16:26:10 <ehird> and untag is an assert then x>>2
16:28:35 <fizzie> Well, there it works, since the "pointers" are indices to that 512*1024-sized 'heap' array, so they have lots of zero high bits.
16:28:40 <oklopol> binary stuff is so sexy
16:29:02 <ehird> fizzie, Would you consider that a practical implementation strategy?
16:29:05 <ehird> Doesn't seem like it to me.
16:29:08 <oklopol> i need to leave now, have fun
16:29:11 <ehird> But I do need a heap if I want to gc..
16:29:13 <oklopol> ->
16:29:13 <ehird> oklopol, bye :)
16:29:17 <oklopol> bies!
16:29:32 <ehird> fizzie, Any reccomendations?
16:29:42 <ehird> Ah wait a second!
16:33:11 <ehird> fizzie, Hmm, no. need suggestions
16:37:57 <ehird> fizzie, OK
16:37:59 <ehird> I have an idea
16:38:05 <ehird> We only use the very lowest bit
16:38:08 <ehird> 1 - immediate
16:38:09 <ehird> 0 - pointer
16:38:16 <ehird> no wait
16:38:17 <ehird> ok
16:38:21 <ehird> every odd number is immediate
16:38:24 <ehird> every even one pointer
16:38:30 <ehird> If pointer, the rest of the thing is a pointer to the tag.
16:38:34 <ehird> Then +1 is the data.
16:38:38 <ehird> Otherwise, the tag is the tag.
16:39:11 -!- Sgeo[College] has joined.
16:40:49 <Sgeo[College]> Hi all
16:40:50 <fizzie> Well, yes; from what I've seen, it's quite "traditional" to do tagged pointers so that one of the tag values is reserved to pointers to structures that contain first the type, then the value.
16:41:04 <ehird> fizzie, Yeah. I can't figure out a good way to do all this, though.
16:41:21 <ehird> like, tagging a literal "string"
16:43:18 -!- oklohot has joined.
16:43:44 <ehird> OKO test = &(struct STRING){TAG_STR, 0, 0, "hello"};
16:43:47 <ehird> getting there
16:43:52 <ehird> oklohot, hello
16:44:32 <fizzie> Well, I've seen it done with a two-member struct, where the first member is the type label, and the second one is an union of values of all possible types.
16:45:09 <ehird> fizzie, Yes, but that sucks for immediates.
16:45:55 <fizzie> If you're not C99-averse, given enum type { type_string, type_blob, type_foo }; struct obj { enum type t; union { char *v_string; blob *v_blob; foo *v_foo; } v; } you can have literals like (struct obj){ .t = type_string, .v.v_string = "foo" }
16:46:33 <fizzie> Or maybe it has to be { .t = type_string, .v = { .v_string = "foo" }}. Not quite sure, haven't used the syntax much.
16:47:32 <ehird> fizzie, I'm pretty C99-averse.
16:47:33 <ehird> However
16:47:36 <ehird> union BASE_CAST {OKO o; struct BASE b;};
16:47:46 <ehird> int main() {return ((((union BASE_CAST)(test)).b).t);}
16:47:48 <ehird> that actually works
16:47:49 <ehird> :D
16:47:52 <ehird> I love union casts
16:48:02 <ehird> Err wait
16:48:03 <ehird> it doesn't work
16:48:05 <ehird> Dmanit.
16:48:18 <ehird> OH
16:48:18 <ehird> of course
16:50:04 <fizzie> Well, structure/union literals are pretty C99-only. Of course it's a GCC extension too.
16:50:13 <ehird> fizzie, Can't find a simple solution to tag both structures, strings and integers.
16:50:14 <ehird> Sigh.
16:52:57 -!- oklopol has quit (Connection timed out).
16:54:08 <ehird> fizzie, Beh
16:58:44 <fizzie> I'm not sure if it's really much of a problem not being able to have literals of other types than the ints. So one could go with the simple way of doing (v<<1)|1 to construct an integer, x&1 to test if it's an integer or a pointer-to-a-labeled-struct, x>>1 to extract an integer and a simple cast to get a usable pointer for the other types.
16:59:22 <ehird> fizzie, Well, atoms are constant things.
16:59:31 <ehird> There's only a string because it's nice to be able to print 'em.
17:02:28 <ehird> fizzie, :|
17:07:48 -!- oklohot has quit (No route to host).
17:23:16 <ehird> fizzie, I'm concentrating on more interesting things
17:23:20 <ehird> like oklotalk->OKINTERMEDIATE
17:23:23 <ehird> which is the step before ->C
17:23:30 <ehird> it basically removes all nested structure from the code
17:23:37 <ehird> dividing it into code, atoms and functions
17:23:41 <ehird> so it is essentially stack based
17:23:55 <ehird> its the most work of the compiler
17:28:11 <Sgeo[College]> Be back soon all
17:28:15 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
17:32:19 -!- Sgeo[College] has joined.
17:32:25 <Sgeo[College]> back
17:35:29 <Sgeo[College]> :)test
17:35:32 -!- oklopol has joined.
17:35:36 <Sgeo[College]> Hiok
17:37:21 <ehird> oklopol, you're back!
17:37:24 <ehird> $hello is equiv. to "hello"
17:37:28 <ehird> is that intentional
17:37:37 <ehird> hello is ('var','hello')
17:37:42 <ehird> $hello and "hello" are ('str','hello')
17:39:31 <oklopol> what do you mean they are equivalent
17:39:35 <ehird> oklopol, same parse tree
17:39:41 <oklopol> $hello is ('atm',"hello")
17:39:51 <ehird> no its not
17:39:54 <oklopol> >>> parsing.parse("$asd")
17:39:54 <oklopol> ('lbd', [('atm', 'asd')])
17:39:54 <oklopol> >>> parsing.parse("\"asd\"")
17:39:54 <oklopol> ('lbd', [('str', 'asd')])
17:40:00 <ehird> o wait
17:40:02 <ehird> ur rite.
17:40:04 <ehird> :p
17:40:07 <oklopol> okay
17:40:07 <ehird> oklopol, okay, are strings immutable?
17:40:13 <oklopol> yeah
17:40:18 <ehird> oklopol, will they always be
17:40:24 <oklopol> hmm
17:40:25 <oklopol> no
17:40:36 <oklopol> hmm
17:40:37 <ehird> oklopol, okay
17:40:40 <oklopol> they will be in oklotalk--
17:40:44 <ehird> oklopol, i can't cache them anyway
17:40:45 <ehird> oklopol, but
17:40:46 <oklopol> but... it's not that simple in oklotalk
17:40:53 <ehird> oklopol, you can't create atoms at runtime right?
17:40:57 <oklopol> no
17:41:01 <oklopol> you cannot
17:41:01 <ehird> (but obviously you can strings)
17:41:05 <ehird> oklopol, good. i hope it stays like that
17:41:06 <oklopol> yeah
17:41:12 <oklopol> it will stay like that
17:41:15 <oklopol> i hope too
17:41:16 <ehird> 'cause i statically allocate all atoms right now
17:41:20 <ehird> oklopol, okintermediate is going quite well
17:41:22 <oklopol> yeah, yeah
17:42:44 <ehird> oklopol,
17:42:44 <ehird> ({(outn "hello") (-> $hello 2) (-> x x)} $hello)
17:42:49 <ehird> it can compile that save for the (-> ...)
17:43:11 <oklopol> to what?
17:44:38 <ehird> oklopol, to OKINTERMEDIATE
17:45:31 <ehird> oklopol, hmm, dunno how to handle matches
17:45:31 <ehird> because
17:45:34 <ehird> (-> X ...)
17:45:35 <ehird> the X there
17:45:38 <ehird> requires AST at runtime
17:45:43 <ehird> oklopol, because it's not oklotalk, the X, it's a DSL
17:45:45 <ehird> right?
17:45:53 -!- timotiis has joined.
17:46:37 <oklopol> dsl?
17:46:43 <ehird> oklopol, domain specific language
17:46:45 <ehird> it's a mini-language
17:46:47 <ehird> embedded in oklotalk
17:46:49 <oklopol> ah
17:46:50 <ehird> for pattern matching
17:46:50 <oklopol> well kinda.
17:46:51 <oklopol> yes
17:47:03 <ehird> oklopol, (: (: a b) (: c d))
17:47:04 <ehird> i think
17:47:06 <ehird> i can compile that to
17:47:18 <ehird> a b : c d : :
17:47:20 <ehird> (in stack form)
17:47:29 <ehird> where all the calls are..
17:47:30 <ehird> hmm
17:47:32 <ehird> this needs thinking
17:47:42 <ehird> oklopol, right now
17:47:43 <ehird> in
17:47:44 <ehird> (a b c)
17:47:45 <ehird> i compile to
17:47:48 <ehird> b c a
17:47:49 <ehird> well
17:47:52 <ehird> b c a CALL
17:48:00 <ehird> oklopol, but i should just do 'a b c CALL' shouldn't i
17:48:05 <ehird> i was just thinking, since a is what I dispatch on..
17:48:05 <oklopol> prolly
17:48:37 <oklopol> currently, the dispatching rules are very stupid, and i could just do (func arg arg)
17:48:59 <oklopol> which is why i'm not very interested in another oklotalk-- implementation :P
17:49:07 <oklopol> but i guess that one can be extended just as well.
17:49:39 <ehird> oklopol, why aren't you very interested?
17:49:40 <ehird> i mean
17:49:42 <ehird> i made a cons cell
17:49:43 <ehird> but what about
17:49:50 <ehird> 'ehird liked it so much he made a compiler to C'
17:49:50 <ehird> :D
17:49:54 <oklopol> :D
17:50:01 <ehird> oklopol, also, you have to admit that oklotalk-- IS okolicious
17:50:06 <oklopol> :)
17:50:17 <oklopol> it's nice, but i want the oklotakl dispatch rules...
17:50:20 <oklopol> *oklotalk
17:50:48 <ehird> oklopol, well, we can dothat
17:50:52 <ehird> ONCE MY COMPILER IS DONE
17:50:52 <oklopol> but i'm just too lazy to implement myself (prolly like half an hour of coding), and too stubborn to tell you what they are before i've made them
17:50:53 <ehird> :DDD
17:50:55 <oklopol> :)
17:51:02 <ehird> hey, MY compiler will be open source
17:51:02 <ehird> ;))
17:51:18 <ehird> oklopol, pattern matches only appear in -> right
17:51:59 <ehird> oklopol, hmm wait, 2-argument calls to listification, but you don't know which arguments to list until you find out which one 'wants' to do it, right?
17:54:12 <oklopol> yes
17:54:30 <ehird> oklopol, soo
17:54:31 <ehird> in (a b)
17:54:33 <ehird> i compile to
17:54:36 <ehird> b a CALL1
17:54:39 <ehird> in (a b c)
17:54:40 <ehird> i compile to
17:54:50 <ehird> b c a CALL2
17:54:55 <ehird> oklopol, does that look right to you?
17:55:04 <oklopol> sure
17:55:08 <ehird> i do <ARGS> <FIRST> <CALL1/2>
17:55:17 <oklopol> yeah, that's fine
17:55:18 <ehird> oklopol, because the first thing you try to dispatch on is the first arg right?
17:55:30 <ehird> hmm wait, the first thing you try in (a b c) is tell 'a' to 'b'
17:55:34 <ehird> err no
17:55:36 <ehird> (a b c):
17:55:37 <oklopol> yeah you can do rpn conversion with oklotalk--
17:55:39 <ehird> tell 'a' to [b c]
17:55:41 <oklopol> in oklotalk, it's impossible
17:55:43 <ehird> tell 'b' to [a c]
17:55:46 <ehird> tell 'c' to [a b]
17:55:49 <ehird> oklopol, is that right?
17:55:58 <oklopol> the language is basically designed so that no one can compile it :)
17:56:00 <oklopol> hmm
17:56:12 <oklopol> umm
17:56:19 <oklopol> you don't do that last one at all, yet
17:56:26 <oklopol> there was a reason... don't remember what
17:56:47 <ehird> oklopol, so
17:56:48 <ehird> (a b c)
17:56:50 <ehird> tell 'a' to [b c]
17:56:53 <ehird> tell 'b' to [a c]
17:56:55 <ehird> return $f
17:56:57 <oklopol> but the dispatch rules are really retarded.
17:57:01 <oklopol> yes
17:57:02 <ehird> oklopol, is that the right rules?
17:57:03 <ehird> okay
17:57:04 <oklopol> umm
17:57:06 <oklopol> actually
17:57:09 <ehird> oh wait
17:57:15 <oklopol> in case both are atoms
17:57:16 <ehird> oklopol, return $f is just return the last telling
17:57:17 <oklopol> return a
17:57:18 <ehird> which
17:57:19 <ehird> oh
17:57:19 <ehird> okay
17:57:21 <ehird> oklopol, so
17:57:27 <ehird> what is both
17:57:28 <ehird> a b and c
17:57:30 <ehird> or a and b
17:57:31 <ehird> or ..
17:57:33 <oklopol> c is not checked
17:57:36 <oklopol> just a and b
17:57:55 <ehird> oklopol, okay
17:57:56 <ehird> SO
17:58:00 <ehird> oh wait
17:58:07 <ehird> oklopol, so (a b c) is just (a [b c])
17:58:08 <oklopol> although what you described there will be done once the rules are made a bit cleverer
17:58:08 <ehird> wait no
17:58:09 <ehird> that's wrong
17:58:13 <ehird> okay
17:58:14 <ehird> right
17:58:16 <ehird> think i've got it
17:58:18 <ehird> oklopol, verify these two:
17:58:38 <ehird> (a b) => if 'a' and 'b' are atoms, return a. Otherwise, tell 'a' to 'b'. If that fails, return $f.
17:58:59 <ehird> (a b c) => if 'a' and 'b' are atoms, return a. Oherwise, tell 'a' to [b c]. If that fails, tell 'b' to [a c]. If that fails, return $f.
17:59:07 <ehird> oklopol, What about ({2} $foo)
17:59:11 <ehird> instead of $f that should be 2 right?
17:59:20 <ehird> So... the $f behaviour is just (->) returning $f on fail.
17:59:27 <oklopol> almost, except you try both (a b) and (b a)
17:59:38 <oklopol> as in lisp application
17:59:58 <oklopol> err
17:59:59 <oklopol> i mean
18:00:08 <oklopol> the notation was lisp, call a with b, then b with a
18:00:11 <ehird> oklopol, okay
18:00:21 <ehird> oklopol, am i right abut the {2} thing
18:00:25 <oklopol> yes
18:00:28 <oklopol> it should be 2
18:00:42 <ehird> oklopol, so no expressions, as in {}, is $f
18:00:47 <ehird> and (-> a ...), when failing, returns $f
18:00:52 <oklopol> no!
18:00:58 <ehird> okay whut
18:01:01 <oklopol> last evaluated expression is returned
18:01:05 <ehird> oklopol, yes
18:01:11 <ehird> and (->a ...) returns $f on failure
18:01:12 <oklopol> (->) just changed the path of evaluation
18:01:13 <ehird> so if it's the last expr
18:01:17 <ehird> it returns $f
18:01:29 <oklopol> nope! $f is just the expected return value
18:01:41 <oklopol> so if ->'s fail, the function does nothing, and thus return$f
18:01:45 <oklopol> *returns $f
18:01:45 <ehird> :: ({(-> $foo 2) 3} $a)
18:01:45 <ehird> 3
18:01:45 <ehird> :: ({(-> $foo 2) 3} $foo)
18:01:45 <ehird> 2
18:01:49 <ehird> oklopol, you are sooo wrong
18:01:50 <ehird> see? :D
18:02:01 <oklopol> ..?
18:02:05 <oklopol> where did it return $f
18:02:26 <ehird> oklopol, nowhere, see?
18:02:26 <ehird> wait
18:02:26 <ehird> here's what i'm saying
18:02:27 <oklopol> hmmhmm
18:02:32 <oklopol> i'm prolly misunderstanding you bad.
18:02:39 <ehird> (-> a ...) means 'if a matches, break through evaluation and force a return of ... - if it fails, evaluate to $f'
18:02:49 <ehird> {...} means 'return the value of the last expr evaluated'
18:03:02 <ehird> so if your match is the last expr and fails, that results in $f being returned
18:03:11 <ehird> and that's why $f is the call failure
18:03:19 <oklopol> asadasdad
18:03:23 <oklopol> wait
18:04:03 -!- oktabot has joined.
18:04:21 <ehird> oklopol, i tested this in the cli
18:04:38 <oklopol> :: ({_ (-> [] 0)} 5)
18:04:38 <oktabot> 5
18:04:41 <oklopol> .
18:04:58 <oklopol> if i understood what you mean, $f should've been returned
18:05:23 <oklopol> *meant
18:05:51 <oklopol> also the cli may be a bit outdated, although no crucial features have been changed (i think)
18:06:18 <oklopol> i think i'll get on nopol now :o
18:07:20 <ehird> oklopol, ok, (->) is confusing
18:07:25 <oklopol> well
18:07:26 <oklopol> no.
18:07:38 <oklopol> you just think of it as an uplevel expression
18:07:48 <oklopol> where in fact you should be thinking about it as something that redirects program flow
18:08:10 <ehird> oklopol, let me rephrase, -> is hard to compile
18:08:10 <ehird> :-)
18:08:19 <oklopol> :=)
18:08:22 <oklopol> that may be
18:09:22 <ehird> oklopol, okay, i can think of it in a kind of rewriting sense
18:09:29 <oklopol> okay, nopol parsing, god it's sick
18:09:38 <oklopol> perhaps even sicker than the negative lists themselves
18:09:41 <ehird> if the match succeeds, -> does act as an uplevel expression, and forces the uplevel to return its blah blah blah
18:09:42 <oklopol> i mean...
18:09:48 <ehird> it the match FAILS, -> *disappears*
18:09:52 <oklopol> < ><> <>< ><> <>< >
18:09:53 <ehird> i.e. like it was never in the source code
18:09:56 <ehird> right, oklopol?
18:09:58 <oklopol> hmm
18:10:09 <oklopol> yes
18:10:12 <ehird> oklopol, it means that your example reducse to ({_} 5)
18:10:17 <oklopol> yes
18:10:20 <ehird> and if the match succeeded, then the 'last expr is returned' kicks in
18:10:25 <ehird> anyway, yes, nopol
18:10:28 <ehird> is nopol compileable?
18:10:34 <oklopol> hmm :\
18:10:42 <oklopol> have no idea... it's basically tree rewriting
18:10:42 <oklopol> but
18:10:57 <ehird> oklopol,
18:11:01 <oklopol> tree rewriting can be used for lc quite easily
18:11:06 <ehird> Opening test.ot...
18:11:06 <ehird> Parsing code...
18:11:06 <ehird> ('lbd', [[('lbd', [('var', '_'), [('var', '->'), ('lst', []), ('int', 0)]]), ('int', 5)]])
18:11:06 <ehird> Compiling to OKINTERMEDIATE...
18:11:06 <ehird> koed: [('lbd', 0)]
18:11:07 <ehird> atoms: ['_']
18:11:09 <ehird> funcs: [[('int', 5), ('lbd', 1), ('call1',)], [('var', 0), ('lbd', 2), ('PLACEHOLDERFORMATCHINGEXPR',), ('match', None)], [('int', 0)]]
18:11:13 <ehird> oklopol, that's what it does for ({_ (-> [] 0)} 5)
18:11:22 <ehird> as soon as i get that placeholder fixed, should work well
18:11:23 <ehird> :))0
18:11:29 <ehird> oklopol, can you see how it 'flattens' it out?
18:11:34 <ehird> ('lbd',x) refers to the xth element in funcs
18:11:35 <oklopol> but i was wondering if one would be able to do *continuations* with tree rewriting + negative lists :o
18:11:37 <oklopol> hmm
18:11:45 <ehird> 'var'/'atm' like that for the atoms list
18:12:02 <ehird> oklopol, oh
18:12:07 <ehird> and the reason there's an extra func
18:12:10 <ehird> is that (-> a b c d)
18:12:11 <ehird> turns into
18:12:17 -!- RedDak has joined.
18:12:17 <ehird> {b c d} a ->
18:12:26 <oklopol> sure
18:12:42 <ehird> oklopol, that probably messes up bare (->) :-))))
18:12:53 <ehird> but -> anywhere but in the root of {} is invalid, right oklopol ?
18:12:54 <oklopol> hmmm
18:13:03 <oklopol> oh no :)
18:13:13 <oklopol> :DSDSDSDDD
18:13:44 <ehird> oklopol, damnit
18:13:45 <oklopol> ->'s expression args are evaluated as normal uplevel statements.
18:13:45 <ehird> why not
18:13:46 <ehird> :(((
18:14:20 <oklopol> it's not just pattern matching, it's s unification of pattern matching and imperative program flow
18:14:26 <oklopol> it contains "blocks"
18:14:45 <ehird> oklopol, yes but what's wrong with (->) being invalid anywhere but in {}
18:14:47 <oklopol> this will all be so much clearer when oklotalk appears in all its glory.
18:14:50 <oklopol> umm
18:14:54 <oklopol> just (->) ?
18:14:58 <oklopol> or a ->-expression
18:15:26 <ehird> oklopol, ->-expression
18:15:49 <oklopol> _ can be reset for explicit pattern matching, and it's not bad practise to do that
18:15:56 <oklopol> (look at cise for elegant uses of that!)
18:16:02 <ehird> oklopol, hmm can you use oklotalk-- in patterns
18:16:03 <ehird> like
18:16:12 <ehird> (-> (: a {(-> $foo $bar)}) ...)
18:16:17 <ehird> or similar obscenities
18:16:31 <ehird> oklopol, and doesn't that mean you need to be able to find out whether an expr is a pattern matcher or a regular expr??
18:16:41 <oklopol> if a pattern match on an application should fail, the application is evaluated.
18:17:06 <oklopol> pattern match on application == [$pb $stuff]...
18:17:22 <ehird> oklopol, :(((((( that means i can't compile it easily
18:17:29 <oklopol> well
18:17:31 <ehird> i have to compile everything in a patmatch as both a pattern and an expr
18:17:38 <oklopol> as i said, it's not a very compilable language
18:17:53 <oklopol> and it's exactly the pattern matching that made me quit
18:18:33 <oklopol> well, tbh i wasn't really trying, i more realized it might be better first to make a stupid implementation using just python
18:18:46 <ehird> oklopol, got any ideas for compiling it properly?
18:18:48 <ehird> current idea:
18:18:54 <ehird> PATMACH(foo) || (compiled)
18:18:56 <ehird> but that's dumb
18:18:56 <ehird> :P
18:20:19 <oklopol> ummum, i think i'll compile it properly in my own implementation whenever i feel like doing that :)
18:20:23 <oklopol> but no... i can't help you
18:20:28 <oklopol> hmmhmm
18:20:42 <oklopol> the prob is
18:21:13 <oklopol> it's decided at runtime whether an application is evaluated, and checked for equality, or whether it's used to split the obj
18:21:55 <ehird> oklopol, yus...
18:22:06 <ehird> oklopol, also, what about
18:22:13 <ehird> (: a (... some function call...))
18:22:19 <ehird> is the funcall evaluated if it isn't a pattern amtch?
18:22:22 <ehird> if so, very hard
18:23:29 <oklopol> normal recursive matching
18:23:40 <ehird> oklopol, hm explain
18:23:45 <oklopol> the object matched is split on :, left part matched on a, right part on that function ll
18:23:46 <oklopol> call
18:23:54 <oklopol> the function call can be, for instance, another split
18:24:12 <oklopol> we are basically doing reverse function calls here
18:25:13 <ehird> oklopol, crappity -- i could compile this apart from the pattern
18:25:21 <ehird> well I could compile it but it'd be ugly
18:26:15 <oklopol> well yeah, pmatching is the hard part
18:26:31 <oklopol> wel
18:26:32 <oklopol> well
18:26:42 <oklopol> was trivial done the way i did it, ofc
18:27:04 <oklopol> but it is hard to do if you want to do it, well, compiled-like
18:27:46 <ehird> oklopol, ok, give me something more interesting to do than compile oklotalk
18:28:13 <oklopol> is it my responsibility to come up with stuff to do for ya? ;)
18:28:55 <oklopol> whhhell, you can compile nopol... because programs do absolutely nothing, the least we can do is make them fast!!
18:28:55 -!- lament has quit ("Ducks!").
18:29:03 <oklopol> ducks.
18:29:32 <ehird> oklopol, hmm, nopol..
18:29:34 <ehird> introduce me
18:30:19 <oklopol> semantics aren't ready yet
18:30:24 <oklopol> but i have some stuff
18:30:31 <oklopol> for instance, the negative list thingie
18:30:33 <oklopol> that's for nopol
18:30:55 <ehird> oklopol, I don't get negative lists.
18:30:58 <oklopol> there's still some semantics unclear on cartesian products when you have multiple negative lists on the same level and suchamathing....
18:30:59 <oklopol> hmmhmm
18:31:02 <ehird> Explain it in words of four letters or less.
18:31:07 <oklopol> :)
18:31:10 <oklopol> let's try
18:31:25 <oklopol> so you take the list that is neg
18:31:28 <oklopol> and call it L
18:31:46 <oklopol> negd lsts have a dpth
18:31:52 <oklopol> hmm
18:31:53 <ehird> oklopol, you are so cheating
18:31:53 <ehird> :D
18:31:56 <ehird> but
18:31:56 <oklopol> ;)
18:31:57 <ehird> whats a depth
18:31:59 <oklopol> okay
18:32:00 <ehird> how does it relate to this
18:32:02 <oklopol> well
18:32:08 <oklopol> <a>
18:32:13 <oklopol> a is 1 deep
18:32:18 <oklopol> so the list's depth is 1
18:32:23 <ehird> oklopol, so .. it's a list of length 1
18:32:23 <ehird> :|
18:32:26 <oklopol> a is 0 deep in "a", on the other hand
18:32:38 <ehird> ok
18:32:42 <oklopol> and it's 2 deep in <<a>>
18:32:45 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
18:33:02 <oklopol> what this means is we have kinda taken the whole it lives in, and deepened it
18:33:04 <ehird> oklopol, OK continue
18:33:04 <oklopol> now
18:33:09 <oklopol> if we have the list <a b c>
18:33:20 <oklopol> and we put it in the middle of <x y>
18:33:26 <oklopol> we get <x <a b c> y>
18:33:37 <ehird> yes, yes we do
18:33:40 <oklopol> now, unnesting the list, or lifting it
18:33:42 <oklopol> we get
18:33:45 <oklopol> <x a b c y>
18:33:50 <oklopol> this would be a list of depth 0
18:33:53 <ehird> oklopol, yes
18:33:58 <oklopol> it can jump out of the slot given
18:34:01 <oklopol> and expand in the same list
18:34:13 <oklopol> now, let's see how negative depth lists behave
18:34:15 -!- timotiis has quit (Read error: 110 (Connection timed out)).
18:34:21 <oklopol> we start with <x <a b c> y>
18:34:28 <oklopol> lift abc up once
18:34:34 <oklopol> to get <x a b c y>
18:34:57 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
18:35:05 <oklopol> now, when we further lift it up (we would have lost context at this point, so we have to do both lifts simultaneously ofc, but this is just demonstration)
18:35:27 <oklopol> we get
18:35:40 <oklopol> <<x a y> <x b y> <x c y>>
18:36:05 <ehird> oklopol, weird
18:36:09 <ehird> kind of like a hybrid zip
18:36:12 <oklopol> the idea is, the if certain elements are atop others surrounding them, they need to somehow surround those elements without jumping out of the list
18:36:23 <oklopol> so i imagined the correct thing to do would be to me something like this
18:36:28 <oklopol> also
18:36:38 <oklopol> turned out there's at least one thing it can do
18:36:42 <oklopol> the map function
18:36:44 <oklopol> quite neatly
18:37:00 <ehird> oklopol, ok, now what about negative length lists
18:37:01 <ehird> :DDD
18:37:06 <oklopol> :D
18:37:13 <oklopol> well, i've thought about adding those too
18:37:27 <oklopol> but... well, i haven't have an epiphany about those :P
18:37:39 <oklopol> perhaps my next walk to the uni will tell me how they work.
18:37:46 <oklopol> currently, my problem is parsing
18:37:54 <ehird> oklopol, i will help tlel you how they work
18:37:55 <oklopol> because
18:37:57 <ehird> it's unhard!
18:38:03 <ehird> so, we first need a notation
18:38:09 <ehird> i'll just go with it
18:38:09 <oklopol> i want >...< to be the neglist syntax :)))))
18:38:17 <ehird> oklopol, ok, watch this:
18:38:21 <oklopol> and... well... you see how that becomes a problem
18:38:23 <ehird> (a b c) is a list of length 3
18:38:34 <ehird> () is a list of length 0
18:38:48 <ehird> {} is a list of length 0 too because there's no -0
18:38:49 <ehird> but
18:38:52 <ehird> {a} is a list of length -1
18:38:54 <ehird> {a b c} -3
18:38:58 <ehird> oklopol, with me so far?
18:39:00 <oklopol> sure
18:39:05 <ehird> ok
18:39:06 <ehird> now
18:39:14 <ehird> (a b c) + (d e f) = (a b c d e f)
18:39:25 <ehird> {a b c} + (d e f) = ()
18:39:36 <ehird> {a b c} + {d e f} = {a b c d e f}
18:39:37 <oklopol> hm...
18:39:44 <oklopol> i disagree.
18:39:48 <ehird> {a b c} + (d e f g h) = (a b c)
18:39:55 <ehird> oklopol, think of them as their lengths
18:39:59 <ehird> -3+5=2
18:40:16 <oklopol> explain last one
18:40:26 <oklopol> i mean
18:40:27 <oklopol> correct
18:40:51 <ehird> oklopol, yeah
18:40:56 -!- lament has joined.
18:40:57 <ehird> -3 + 5 = 2
18:40:59 <ehird> i interpret that as
18:41:03 <ehird> 'we bring 2 things from the -3'
18:41:05 <ehird> err
18:41:07 <ehird> so that shoudl be
18:41:08 <ehird> (a b)
18:41:12 <ehird> {a b c} + (d e f g h) = (a b)
18:41:33 <oklopol> the problem is substraction without the possibility of failure for ordered tuples isn't all that intuitive.
18:41:39 <ehird> oklopol, (d e f g h) + {a b c} = (d e)
18:41:45 <oklopol> i don't think this is the optimal way
18:41:46 <ehird> because concatenation isn't concatenative
18:41:51 <ehird> that's how i interpret the length arithmetic
18:41:55 <ehird> oklopol, ok, come up with a better way
18:42:34 <oklopol> perhaps at some point
18:42:34 <oklopol> but
18:42:44 <oklopol> right now i'm going to concentrate on negative depth
18:42:47 <oklopol> hmmhmm
18:43:02 <oklopol> i need two types of lists, evaluated ones, and non-evaluated onees
18:43:03 <oklopol> *ones
18:43:18 <oklopol> so, perhaps <:...> could be negative
18:43:27 <ehird> oklopol, i seriously can't figure out negative-length lists
18:43:30 <oklopol> <>:. is the nopol charset
18:43:30 <ehird> i need halp :D
18:43:47 <oklopol> (my favorite characters in ascii)
18:44:02 <lament> :<
18:44:10 <ehird> oklopol: lbd,var,str,int,atm, and lists which are calls
18:44:17 <ehird> oklopol, that is the oklotalk-- tag-set
18:44:18 <ehird> right?
18:44:21 <ehird> (in your parsetree)
18:44:25 <oklopol> i'd say so
18:44:40 <oklopol> lst
18:44:42 <oklopol> also
18:46:42 <oklopol> -- >...< = <-...>, clearer neglist syntax
18:46:43 <oklopol> <> <> <> == <> <> <>
18:46:43 <oklopol> < >< >< > == < <-> <-> >
18:47:09 <oklopol> i have no idea what whitespace semantics are
18:47:19 <oklopol> they're just kinda intuitive
18:47:20 <oklopol> well
18:47:29 <oklopol> i have some idea, but i don't know exactly
18:49:26 <ehird> oklopol, does oklotalk-- have runtime errors?
18:49:37 <ehird> i.e. non-syntax
18:49:40 <oklopol> my implementation has some
18:49:50 <oklopol> but they are implementation defects
18:49:52 <oklopol> it shouldn't have
18:50:02 <oklopol> before continuations that is
18:50:27 <ehird> oklopol, which ones
18:50:37 <oklopol> hmmhmm
18:50:43 <oklopol> :: (* "asd" "asd")
18:50:44 <oktabot> f
18:50:50 <oklopol> i'll check src
18:51:18 <oklopol> else:
18:51:18 <oklopol> raise "This should've been caught at parsing, IMO."
18:51:20 <oklopol> xD
18:51:33 <oklopol> if len(ptrn.val)>0 and ptrn.val[0]==Atm("any"):
18:51:33 <oklopol> if not isinstance(ptrn.val[1],Lst):
18:51:33 <oklopol> raise "$any should always have a list as the second expression."
18:51:38 <oklopol> so
18:51:52 <oklopol> :: (-> [$any $thing])
18:51:53 -!- oktabot has quit (Remote closed the connection).
18:51:59 <oklopol> :D
18:52:01 <oklopol> eh
18:52:08 <oklopol> don't i catch anymore
18:52:12 <ehird> oklopol, ok, since i'm using your parser, i will prepare for runtime errors
18:52:17 <ehird> won't trigger them right now though
18:52:38 <ehird> ERROR ot(int p, OKO *r) {...}
18:52:38 <ehird> or
18:52:45 <ehird> OKO ot(int p, ERROR *e) {...}
18:52:47 <ehird> oklopol, which? :P
18:52:51 <ehird> usage of both:
18:53:09 <ehird> OKO r; if (ot(0, &r) != OK) { error } else { use value in r }
18:53:09 <ehird> OR
18:53:12 -!- oktabot has joined.
18:53:14 <oklopol> :: (-> [$any $thing])
18:53:25 <ehird> ERROR e; OKO r = ot(0, &e); if (e..
18:53:25 <ehird> okay
18:53:29 <ehird> i prefer the latter
18:53:46 <oklopol> hmm
18:53:51 <oklopol> yeah
18:53:52 <oklopol> letter
18:53:54 <oklopol> i think
18:53:55 <oklopol> lutter
18:54:47 <oklopol> lol.
18:54:58 <oklopol> i'm raising strings as exceptions, even though it's deprecated
18:55:04 <oklopol> and i'm catching exceptions.
18:57:35 <oklopol> okay, should work now, but the ghost will never die.
19:00:15 <ehird> oktabot, question
19:00:23 <ehird> should i convert oklotalk functions to c functions
19:00:27 <ehird> or put them in one big function
19:00:36 <ehird> ot(funcid, ref-to-result)
19:00:37 <oklopol> dunno...
19:00:39 <ehird> instead of
19:00:42 <ehird> ot_funcid(ref-to-result)
19:00:47 <oklopol> yarr
19:00:50 <oklopol> well
19:00:53 <oklopol> hmm
19:00:56 <oklopol> dunno :D
19:05:30 <ehird> oklopol, :D
19:05:49 <ehird> oklopol, wanna see it so far?
19:06:23 <ehird> oklopol, http://rafb.net/p/NnBcX448.html a lot of the stuff there is just WRONG or placeholder, but still
19:07:18 <oklopol> looks like fun
19:07:38 <ehird> oklopol, you can see the okint there
19:07:43 <ehird> give it a try on some code
19:07:50 <ehird> you should see it mostly 'flatten out'
19:08:14 <oklopol> NEVER!
19:08:20 <oklopol> perhaps after going to the shop
19:08:25 <oklopol> i need something to eat
19:08:41 -!- jix has quit (Nick collision from services.).
19:08:51 -!- jix has joined.
19:18:21 <oklopol> hehe, i have a fun brain
19:18:33 <oklopol> thought about nopol for like an hour here
19:18:37 <oklopol> no idea how to do the parsing
19:18:45 <oklopol> then i go to the shop
19:18:50 <oklopol> and it's all clear :D
19:19:59 <oklopol> if a bracket *can* close the last opened bracket, then it will, if it is not separated by whitespace from the last token
19:20:04 <oklopol> otherwise it will open
19:20:26 <oklopol> this is like 10 lines of code with : and .
19:20:29 <oklopol> yay
19:20:43 <oklopol> i think i've deserved my south park time
19:21:59 <ehird> oklopol, hmm,
19:22:04 <ehird> do i need to have a var of the last evaluated expr?
19:22:04 <ehird> i think yes
19:22:18 <ehird> for e.g. matching
19:22:20 <oklopol> whuddyamean?
19:23:11 <ehird> oklopol, like
19:23:13 <ehird> a b c
19:23:15 <ehird> at 'a'
19:23:17 <ehird> last = $f
19:23:17 <ehird> at 'b'
19:23:18 <ehird> last = a
19:23:20 <ehird> at 'c'
19:23:21 <ehird> last = b
19:23:35 <ehird> oklopol, so like matches, at the end of their compiled stuff, do 'return last;'
19:24:07 <ehird> oh wait cool
19:24:09 <ehird> its stack based
19:24:11 <ehird> so i don't haev to
19:25:13 <ehird> oklopol, http://rafb.net/p/VLqSCG93.html
19:25:16 <ehird> prototype of compiler output
19:25:21 <ehird> oklopol, i think my matching sematnics are ok
19:25:28 <ehird> ignore the fact that i don't push the match-expr there
19:26:13 <ehird> oklopol, obviously MATCHES pops the matching expr
19:26:17 <ehird> so if it fails, it's like it wasn't there
19:26:46 <oklopol> looks about right
19:27:12 <ehird> oklopol, need to handle no-expr = $f though
19:27:19 <ehird> oklopol, anyway are you interested in this? if not i might stop
19:27:20 <ehird> :-)
19:27:34 <oklopol> sure i am
19:27:42 <ehird> oklopol, you said you weren't that interested in another ot--
19:27:47 <oklopol> well
19:27:57 <oklopol> dunno :D
19:28:09 <oklopol> different kind of not interested x
19:28:10 <oklopol> xD
19:28:51 <oklopol> i'm gonna make a compiler later anyway, never hurts to have competition
19:28:56 <ehird> oklopol, okay
19:29:05 <ehird> oklopol, show me my cons/nil plz?
19:29:07 <ehird> want a bigger thing to test on
19:29:17 <oklopol> also turned out my nopol parsing semantics WERE NOT PERFECT :||
19:29:22 <oklopol> okay.
19:29:28 <oklopol> wait-o
19:29:56 <oklopol> http://www.vjn.fi/pb/p244334413.txt
19:29:59 <oklopol> extract
19:34:17 <ehird> oklopol, i wish you could force strings to prettyprint with "doublequotes"
19:34:18 <ehird> in python
19:39:26 <ehird> oklopol, bah, this is boring right now
19:42:17 <ehird> oklopol, negative length lists
19:43:21 <oklopol> mmhmm?
19:44:19 <ehird> oklopol, explain them
19:44:19 <ehird> :P
19:44:31 <oklopol> i don't know anything about negative length :D
19:44:48 <oklopol> all i can think of is negative *sets*
19:45:22 <oklopol> hmm
19:45:39 <oklopol> actually multisets where objects can be stored negative times.
19:45:50 <oklopol> basically, a mapping from objects to their amounts
19:45:59 <ehird> oklopol, negative length! think about it :P
19:46:05 <oklopol> :)
19:48:40 <ehird> oklopol, :(
19:50:51 <ehird> oklopol, i'll be back in like. an hour
19:50:56 <oklopol> okily
19:59:05 <oklopol> <>< <> <> <> ><> <>< ><> === <<-> <> <> <> <- <> <>> <->>
19:59:23 <oklopol> the parsing system simply didn't do what i wanted
19:59:28 <oklopol> i need to rethink :<
19:59:31 <oklopol> asasdasda
20:01:35 <oklopol> ah
20:01:49 <oklopol> another source of ambiguity, that was the reason
20:01:56 <oklopol> well, wasn't really a surprise
20:38:56 <oklopol> < >< <> <> <> ><> < >< ><>
20:38:56 <oklopol> (+ (-) (+) (+) (+) (-)) (+ (-) (-))
20:39:21 <oklopol> works, but making the syntax less ambiguous also made it less intuitive
20:39:29 <oklopol> but, i think that's a good thing.
20:39:37 <oklopol> less ambiguous? i mean unambiguous
20:49:58 -!- RedDak has joined.
21:04:55 -!- Iskr has quit ("Leaving").
21:10:45 -!- Tritonio_ has joined.
21:49:10 <ehird> back oklopol
21:49:35 <ehird> oklopol, make it depend on whitespace
21:51:37 <ehird> so
21:51:38 <ehird> < >< <> <> <> ><> < >< ><>
21:51:43 <ehird> is
21:52:20 <ehird> (+ (-) (+) (+) (+) (-)) (+ (-) .. something)
21:52:29 <ehird> hmm
21:52:31 <ehird> oklopol, that is intuitive.
21:53:39 <ehird> oklopol, well
21:53:42 <ehird> it should be
21:53:53 <ehird> (+ (-) (+) (+) (+) (-)) (+ (-)) (+)
21:53:55 <ehird> oklopol, so almost
21:58:24 <ehird> oklopol, :D
22:00:56 -!- oklohot has joined.
22:02:08 <ehird> oklohot, hi
22:02:12 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
22:03:59 <ehird> oklohot, hi
22:12:05 <ehird> oklohot,
22:16:41 <ehird> oklohot, okoping
22:29:24 <ehird> oklohot, ok
22:39:06 <ehird> ping
22:45:12 -!- kwertii has joined.
22:47:28 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
22:48:12 -!- timotiis has joined.
23:05:09 <ehird> oklohot,
23:16:20 -!- timotiis has quit (Connection reset by peer).
23:16:35 <ehird> oklohot,
23:18:06 <GregorR> DOOD MY NEW TSHIRT RULES
23:18:10 <GregorR> IT RAWX UR HAUS
23:18:33 <GregorR> DONT U WISH U HAD IT?! U SO DO SO BUY IT http://www.cafepress.com/bizarregeek.250445859
23:18:34 <GregorR> :P
23:21:40 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
23:21:41 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
23:21:41 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
23:21:41 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
23:21:42 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
23:21:42 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
23:21:43 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
23:22:11 <lament> wtf
23:22:22 * GregorR agrees.
23:22:30 -!- jix has quit ("CommandQ").
23:23:46 <ehird> shrug
23:24:57 <GregorR> Was that your way of declaring that you bought seven?
23:33:46 -!- timotiis has joined.
23:38:01 <ehird> GregorR, Haha
23:47:27 <ehird> GregorR, I just found it funny
23:47:36 <ehird> It would have ben better if I could have actually included the image into my message.
23:47:44 <ehird> But alas I don't think IRC allows that ;)
23:48:18 <GregorR> That ... doesn't really explain the 7x post.
23:51:05 <ehird> GregorR, Just imagine a page full of that image.
23:51:09 <ehird> Well, I find it funny.
23:51:39 <GregorR> ... wow.
23:55:53 <ehird> GregorR, My sense of humour is ... unique.
2008-04-18
00:03:22 <pikhq> 2 more days until Shadowmoor prerelease. w00ts.
00:28:31 -!- Nickless-59D128 has joined.
00:28:36 -!- Nickless-59D128 has changed nick to Slereah.
00:28:38 <Slereah> Hello people
00:33:48 -!- timotiis has quit (Client Quit).
00:53:33 -!- ehird has quit (Remote closed the connection).
01:04:29 -!- Sgeo has joined.
01:04:56 -!- wildhalcyon has joined.
01:46:50 -!- UnrelatedToQaz has joined.
01:47:06 <UnrelatedToQaz> hey
01:50:54 <Slereah> Hello.
01:59:47 <UnrelatedToQaz> Was there anything interesting happening here?
02:00:24 <pikhq> On occasion.
02:00:46 <lament> no. Never.
02:07:11 <UnrelatedToQaz> I meant when I came in.
02:07:33 <UnrelatedToQaz> Have I missed half of a conversation
02:07:49 <UnrelatedToQaz> on the merits of the Church-Turing thesis,
02:07:53 <UnrelatedToQaz> that sort of thing.
02:08:35 <lament> yes
02:08:39 <lament> you missed the Church half
02:09:24 <UnrelatedToQaz> well
02:09:29 <UnrelatedToQaz> as you were
02:09:33 -!- UnrelatedToQaz has left (?).
02:21:39 -!- lament has quit (brown.freenode.net irc.freenode.net).
02:21:39 -!- pikhq has quit (brown.freenode.net irc.freenode.net).
02:21:47 -!- mental has joined.
02:21:50 -!- pikhq has joined.
02:23:40 -!- atsampson has quit (brown.freenode.net irc.freenode.net).
02:23:40 -!- Overand has quit (brown.freenode.net irc.freenode.net).
02:23:40 -!- mtve has quit (brown.freenode.net irc.freenode.net).
02:23:43 -!- Overand has joined.
02:23:51 -!- atsampson has joined.
02:23:56 -!- mtve has joined.
02:45:55 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
04:19:43 -!- calamari has joined.
04:25:05 -!- EsoBot has joined.
04:25:06 -!- EsoBot has quit (Read error: 104 (Connection reset by peer)).
04:28:24 -!- mental has changed nick to lament.
04:29:26 -!- EsoBot has joined.
04:30:05 <calamari> EsoBot: sit there doing nothing useful
04:30:05 -!- EsoBot has quit (Remote closed the connection).
04:30:10 <calamari> bad bot
04:31:53 -!- EsoBot has joined.
04:31:55 <calamari> EsoBot: sit there doing nothing useful
04:31:55 -!- EsoBot has quit (Remote closed the connection).
04:45:05 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
04:45:05 -!- pikhq has quit (brown.freenode.net irc.freenode.net).
04:45:06 -!- sebbu has quit (brown.freenode.net irc.freenode.net).
04:45:07 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
04:45:12 -!- EgoBot has joined.
04:45:13 -!- pikhq has joined.
04:45:23 -!- sebbu has joined.
04:45:45 -!- fizzie has joined.
04:48:19 -!- EsoBot has joined.
04:48:29 <calamari> EsoBot: abc
04:49:43 <calamari> EsoBot: def
04:49:57 -!- EsoBot has quit (Remote closed the connection).
04:50:09 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
04:51:25 -!- EsoBot has joined.
04:51:29 <calamari> EsoBot: def
04:51:38 <calamari> EsoBot: def
04:51:53 <lament> EsoBot: beef
04:52:09 -!- EsoBot has quit (Remote closed the connection).
04:55:11 -!- fizzie has joined.
04:55:26 -!- EsoBot has joined.
04:55:31 <calamari> EsoBot: beef
04:56:15 <calamari> I guess I'm not doing the thread right.. I should try fork instead
04:57:57 -!- EsoBot has quit (Remote closed the connection).
05:01:48 -!- EsoBot has joined.
05:01:54 <calamari> EsoBot: beef
05:01:56 <EsoBot> sh-3.2# beef
05:01:57 <EsoBot> sh: beef: command not found
05:02:07 <calamari> EsoBot: ls
05:02:09 <EsoBot> sh-3.2# ls
05:02:10 <EsoBot> [1;34mbin[0m [1;34mdev[0m [1;34metc[0m [1;34mhome[0m [1;34mlib[0m [1;34mproc[0m [1;34msbin[0m [1;34msys[0m [1;34mtmp[0m [1;34musr[0m
05:06:01 <calamari> EsoBot:export PS1="\s-\v\$\n"
05:06:14 <calamari> oops
05:08:14 <calamari> guess I need to wait on it to time out
05:10:26 -!- EsoBot has quit (Read error: 104 (Connection reset by peer)).
05:11:13 -!- EsoBot has joined.
05:11:24 <calamari> EsoBot: export PS1="\s-\v\$\n"
05:11:26 <EsoBot> sh-3.2# export PS1="\s-\v\$\n"
05:11:27 <EsoBot> sh-3.2$
05:12:36 <calamari> EsoBot: ls --color=never
05:12:47 <EsoBot> ls --color=never
05:12:47 <EsoBot> bin dev etc home lib proc sbin sys tmp usr
05:12:47 <EsoBot> sh-3.2$
05:13:07 <calamari> I think it was better before.. hehe
05:13:23 <calamari> EsoBot: export PS1="\s-\v\$"
05:13:25 <EsoBot> export PS1="\s-\v\$"
05:13:43 <calamari> EsoBot: python
05:13:45 <EsoBot> sh-3.2$python
05:13:46 <EsoBot> Python 2.4.2 (#3, Apr 13 2008, 20:46:27)
05:13:47 <EsoBot> [GCC 4.2.1] on linux2
05:13:48 <EsoBot> Type "help", "copyright", "credits" or "license" for more information.
05:14:20 <calamari> EsoBot: help
05:14:22 <EsoBot> >>> help
05:14:23 <EsoBot> Type help() for interactive help, or help(object) for help about object.
05:14:41 <calamari> EsoBot: import sys
05:14:43 <EsoBot> >>> import sys
05:14:49 <calamari> EsoBot: sys.exit(0)
05:14:51 <EsoBot> >>> sys.exit(0)
05:15:02 <calamari> EsoBot: export PS1="\s-\v\$ "
05:15:04 <EsoBot> sh-3.2$export PS1="\s-\v\$ "
05:16:20 <calamari> EsoBot: ls -lF --color=never /etc
05:16:22 <EsoBot> sh-3.2$ ls -lF --color=never /etc
05:16:23 <EsoBot> -rw-r--r-- 1 root root 10 Apr 15 05:15 group
05:16:24 <EsoBot> -rw-r--r-- 1 root root 7 Apr 15 04:29 hostname
05:16:25 <EsoBot> drwxr-xr-x 2 root root 1024 Apr 15 04:45 init.d/
05:16:26 <EsoBot> -rw-r--r-- 1 root root 22 Apr 15 04:29 issue
05:16:27 <EsoBot> -rw-r--r-- 1 root root 1412 Apr 15 04:29 ld.so.cache
05:16:28 <EsoBot> -rw-r--r-- 1 root root 330 Apr 15 04:29 mke2fs.conf
05:16:29 <EsoBot> drwxrwxrwx 6 root root 1024 Apr 15 04:29 network/
05:16:30 <EsoBot> -rw-r--r-- 1 root root 44 Apr 15 05:15 passwd
05:16:46 <calamari> EsoBot: df -h
05:16:48 <EsoBot> sh-3.2$ df -h
05:16:49 <EsoBot> Filesystem Size Used Available Use% Mounted on
05:16:50 <EsoBot> rootfs 60.7M 11.1M 49.7M 18% /
05:16:51 <EsoBot> /dev/root 60.7M 11.1M 49.7M 18% /
05:16:52 <EsoBot> devshm 14.8M 0 14.8M 0% /dev/shm
05:17:21 <calamari> I need to convince it that my terminal is crap.. I wonder how I do that
05:17:42 <calamari> EsoBot: export TERM=dumb
05:17:45 <EsoBot> sh-3.2$ export TERM=dumb
05:17:51 <calamari> EsoBot: ls
05:17:53 <EsoBot> sh-3.2$ ls
05:17:54 <EsoBot> [1;34mbin[0m [1;34mdev[0m [1;34metc[0m [1;34mhome[0m [1;34mlib[0m [1;34mproc[0m [1;34msbin[0m [1;34msys[0m [1;34mtmp[0m [1;34musr[0m
05:21:43 <calamari> time to try something stupid
05:21:49 <calamari> EsoBot: vi
05:21:50 -!- Sgeo has quit ("Ex-Chat").
05:21:51 <EsoBot> sh-3.2$ vi
05:22:14 <calamari> EsoBot: :q
05:23:56 <calamari> EsoBot: export PS1='\s-\v\$ '
05:24:14 <EsoBot> [1;1H[0J
05:25:03 -!- Sgeo has joined.
05:25:06 <calamari> hi Sgeo
05:25:15 <Sgeo> Hi
05:25:20 <calamari> EsoBot: :q
05:25:22 <EsoBot> sh-3.2# :q
05:25:23 <EsoBot> sh: :q: command not found
05:25:32 <calamari> ahh I guess it did work then.. hehe
05:25:48 <calamari> EsoBot: cd /home/root
05:25:50 <EsoBot> sh-3.2# cd /home/root
05:27:23 <calamari> EsoBot: export PS1='[\s-\v] \w\$ '
05:27:25 <EsoBot> sh-3.2# export PS1='[\s-\v] \w\$ '
05:27:34 <calamari> EsoBot: ls -a
05:27:36 <EsoBot> [sh-3.2] /home/root# ls -a
05:27:37 <EsoBot> [1;34m.[0m [1;34m..[0m
05:27:52 <calamari> EsoBot: pwd
05:27:54 <EsoBot> [sh-3.2] /home/root# pwd
05:27:55 <EsoBot> /home/root
05:29:54 <calamari> btw, is this annoying the crap out of anyone?
05:30:15 <calamari> if it is, I can stop anytime :)
05:31:56 <calamari> if not, feel free to mess around with it
05:32:16 <calamari> there isn't a c compiler yet, unfortunately.. still working on that.. but you have python
05:32:30 -!- Sgeo has quit ("Ex-Chat").
05:45:16 <calamari> I'm impressed by your self-restraint.. figured someone would have been rm -rf /'ing by now
05:49:34 <pikhq> EsoBot: echo ~
05:49:36 <EsoBot> [sh-3.2] /home/root# echo ~
05:49:37 <EsoBot> /
05:49:44 <pikhq> Hrm.
05:49:56 <calamari> ls -a --color=never /
05:50:04 <calamari> oops
05:50:09 <calamari> EsoBot: ls -a --color=never /
05:50:11 <EsoBot> [sh-3.2] /home/root# ls -a --color=never /
05:50:12 <EsoBot> . bin home sbin usr
05:50:13 <EsoBot> .. dev lib sys
05:50:14 <EsoBot> .bash_history etc proc tmp
05:50:17 <pikhq> EsoBot: :(){ :|:& };:
05:50:19 <EsoBot> [sh-3.2] /home/root# :(){ :|:& };:
05:50:20 <EsoBot> sh: `:': not a valid identifier
05:50:24 <pikhq> :(
05:50:35 <pikhq> Your shell is not a valid Bourne shell.
05:50:47 <calamari> pikhq: it's bash
05:50:59 <pikhq> Lies.
05:51:07 <pikhq> Can't be; that'd work if it were Bourne.
05:51:24 <pikhq> EsoBot: fork(){ fork|fork& };fork
05:51:26 <EsoBot> [sh-3.2] /home/root# fork(){ fork|fork& };fork
05:51:27 <EsoBot> 230
05:51:34 <calamari> EsoBot: ls -lF /bin/sh
05:51:44 <pikhq> Can't you see it's forkbombed?
05:51:48 <calamari> yes
05:52:12 <pikhq> And with that, I'm done fucking it over.
05:52:35 <calamari> lol.. it's fighting valiantly
05:52:59 <calamari> killing processes like crazy
05:54:06 <EsoBot> [sh-3.2] /home/root# sh: fork: Resource temporarily unavailable
05:54:07 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:08 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:09 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:10 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:11 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:12 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:13 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:13 <calamari> uhoh
05:54:14 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:15 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:17 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:19 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:21 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:23 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:25 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:27 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:29 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:31 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:33 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:35 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:37 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:39 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:40 <calamari> wow, it won
05:54:41 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:43 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:45 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:47 <EsoBot> sh: fork: Resource temporarily unavailable
05:54:49 <EsoBot> sh: fork: Resource temporarily unavailable
05:55:09 <pikhq> EsoBot: halt
05:55:40 <calamari> it looks like the bot lost its shell
05:56:13 -!- EsoBot has quit (Remote closed the connection).
05:56:30 -!- EsoBot has joined.
05:56:49 <calamari> EsoBot: cat /proc/meminfo
05:56:51 <EsoBot> sh-3.2# cat /proc/meminfo
05:56:52 <EsoBot> MemTotal: 30216 kB
05:56:53 <EsoBot> MemFree: 26108 kB
05:56:54 <EsoBot> Buffers: 84 kB
05:56:55 <EsoBot> Cached: 1368 kB
05:56:56 <EsoBot> SwapCached: 0 kB
05:56:57 <EsoBot> Active: 1656 kB
05:56:58 <EsoBot> Inactive: 492 kB
05:56:59 <EsoBot> SwapTotal: 0 kB
05:57:00 <EsoBot> SwapFree: 0 kB
05:57:02 <EsoBot> Dirty: 0 kB
05:57:04 <EsoBot> Writeback: 0 kB
05:57:06 <EsoBot> AnonPages: 712 kB
05:57:08 <EsoBot> Mapped: 776 kB
05:57:10 <EsoBot> Slab: 744 kB
05:57:12 <EsoBot> SReclaimable: 148 kB
05:57:14 <EsoBot> SUnreclaim: 596 kB
05:57:16 <EsoBot> PageTables: 96 kB
05:57:18 <EsoBot> NFS_Unstable: 0 kB
05:57:20 <EsoBot> Bounce: 0 kB
05:57:22 <EsoBot> CommitLimit: 15108 kB
05:57:24 <EsoBot> Committed_AS: 1884 kB
05:57:26 <EsoBot> VmallocTotal: 1007584 kB
05:57:28 <EsoBot> VmallocUsed: 0 kB
05:57:30 <EsoBot> VmallocChunk: 1007584 kB
05:57:35 <calamari> I'm impressed tho.. usually a fork bomb like that locks the system hard.. guess they've been working on it
05:58:16 <calamari> EsoBot: ls -lF /bin/sh
05:58:18 <EsoBot> sh-3.2# ls -lF /bin/sh
05:58:19 <EsoBot> lrwxrwxrwx 1 root root 4 Apr 15 04:29 [1;36m/bin/sh[0m -> [1;32mbash[0m*
05:58:46 <calamari> EsoBot: ls -lF --color=never /bin/sh
05:58:48 <EsoBot> sh-3.2# ls -lF --color=never /bin/sh
05:58:49 <EsoBot> lrwxrwxrwx 1 root root 4 Apr 15 04:29 /bin/sh -> bash*
05:59:29 <calamari> now maybe bash is just not bourne compatible enough :)
06:00:53 <GregorR> calamari: I added a site map ... JUST FOR YOU
06:00:56 <GregorR> :P
06:01:03 <calamari> GregorR: excellent!
06:01:06 <pikhq> Modern capabilities allow for users to only use so many processes.
06:01:09 <GregorR> (Even though what you were looking for at the time wasn't actually on my site :p )
06:01:49 <calamari> GregorR: turns out I didn't rip off your code.. sorry :(
06:02:18 <GregorR> You're ... apologizing for this. God I hate common politeness.
06:03:11 <calamari> lol.. maybe on the surface I was being polite
06:03:56 <calamari> but the sorry meant "sorry that your code was so bad it was easier just to write what I needed from scratch" .. that better? :)
06:04:09 <GregorR> MUCH! 8-P
06:04:59 <calamari> so now I need to learn how to use ed
06:05:23 <calamari> EsoBot: cd /home/root
06:05:25 <EsoBot> sh-3.2# cd /home/root
06:05:53 <calamari> EsoBot: ed hello.py
06:05:55 <EsoBot> sh-3.2# ed hello.py
06:05:56 <EsoBot> hello.py: No such file or directory
06:06:04 <calamari> EsoBot: ed
06:06:06 <EsoBot> sh-3.2# ed
06:06:28 <calamari> a
06:06:32 <calamari> EsoBot: a
06:06:34 <EsoBot> : a
06:07:04 <calamari> EsoBot: #!/usr/bin/env python
06:07:06 <EsoBot> #!/usr/bin/env python
06:07:19 <calamari> EsoBot: print "Hello, World!"
06:07:21 <EsoBot> print "Hello, World!"
06:07:25 <calamari> EsoBot: .
06:07:27 <EsoBot> .
06:08:15 <calamari> EsoBot: f hello.py
06:08:17 <EsoBot> : f hello.py
06:08:45 <calamari> EsoBot: w
06:08:48 <EsoBot> : w
06:08:49 <EsoBot> "hello.py", 2 lines, 44 chars
06:08:53 <calamari> EsoBot: q
06:08:55 <EsoBot> : q
06:09:07 <calamari> EsoBot: chmod +x hello.py
06:09:09 <EsoBot> Really quit? chmod +x hello
06:09:37 <calamari> argh.. .. linux is just not designed with a line printer in mind
06:10:19 <calamari> EsoBot: q
06:10:21 <EsoBot> : q
06:10:26 <calamari> EsoBot: y
06:10:29 <EsoBot> Really quit? y
06:10:45 <calamari> EsoBot: chmod +x hello.py
06:10:47 <EsoBot> sh-3.2# chmod +x hello.py
06:11:05 <calamari> EsoBot: ./hello.py
06:11:07 <EsoBot> sh-3.2# ./hello.py
06:11:09 <EsoBot> Hello, World!
06:12:15 <calamari> maybe there is a stty command I need
06:15:43 <calamari> EsoBot: du -hs /
06:15:45 <EsoBot> sh-3.2# du -hs /
06:15:46 <EsoBot> 11.1M
06:16:50 <calamari> EsoBot: halt
06:16:52 <EsoBot> sh-3.2# halt
06:17:14 -!- EsoBot has quit (Remote closed the connection).
06:18:00 <calamari> GregorR: did you write a program for your sitemap?
06:23:45 <calamari> http://choosemyhat.com/ that's pretty funny
06:27:26 <calamari> GregorR: you need a baseball cap
06:28:18 -!- oklopol has joined.
06:46:27 -!- oklohot has quit (Read error: 110 (Connection timed out)).
06:49:54 -!- EsoBot has joined.
06:51:06 <calamari> EsoBot: ls
06:53:20 <calamari> EsoBot: ps
06:55:36 -!- EsoBot has quit (Remote closed the connection).
06:57:06 -!- EsoBot has joined.
06:59:06 <calamari> EsoBot: ls
06:59:08 <EsoBot> sh-3.2# ls
06:59:09 <EsoBot> [1;34mbin[0m [1;34mdev[0m [1;34metc[0m [1;34mhome[0m [1;34mlib[0m [1;34mproc[0m [1;34msbin[0m [1;34msys[0m [1;34mtmp[0m [1;34musr[0m
06:59:25 <calamari> cool, private message is working
06:59:33 <calamari> opens a new shell
07:00:41 <calamari> still needs to check for nick changes and such so be gentle :)
07:01:36 <calamari> EsoBot: poweroff
07:01:38 <EsoBot> sh-3.2# poweroff
07:05:09 -!- EsoBot has quit (Remote closed the connection).
07:06:45 <calamari> GregorR: you around?
07:11:53 -!- GreaseMonkey has joined.
07:24:53 -!- calamari has quit ("Leaving").
07:40:57 -!- kwertii has quit (Remote closed the connection).
07:41:37 -!- kwertii has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:09:35 -!- Iskr has joined.
09:00:17 -!- atsampson has quit ("back in a minute").
09:02:02 -!- atsampson has joined.
09:17:15 -!- olsner has quit ("Leaving").
09:54:17 -!- oklohot has joined.
09:57:31 <oklohot> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg <<< i only use these (yes, yes, i use smiling dudes for my sick sex games)
09:57:35 <oklohot> i have like 7 of them
09:57:38 <oklohot> perhaps more like 20
09:58:18 -!- oklopol has quit (Read error: 113 (No route to host)).
10:02:04 -!- oklohot has changed nick to oklopol.
10:02:09 -!- oklopol has changed nick to oklofok.
10:22:42 -!- kwertii has quit ("bye").
10:59:17 -!- GreaseMonkey has quit ("Unisex.").
12:53:50 -!- oklofok has changed nick to oklopol.
12:57:15 -!- jix has joined.
15:01:25 -!- timotiis has joined.
15:03:52 -!- RodgerTheGreat has joined.
15:03:54 <RodgerTheGreat> hi
15:05:16 <oklopol> hi
15:05:42 <RodgerTheGreat> hey, oklopol- what's up?
15:06:04 <oklopol> esoteric-wise, oklotalk-- and nopol
15:06:24 <oklopol> coding-wise, those + seedfest again, if you remember that, gotten some of the evolution stuff to work
15:06:36 <oklopol> life-wise, those, plus some girl stuff
15:06:42 <oklopol> and ya?
15:08:09 <RodgerTheGreat> Hm. An extremely stressful week is drawing to a close, and all I have to worry about is an Algorithms exam. I am looking forward to the weekend and sleep, and I've started drawing the tileset for a new game idea
15:08:24 <RodgerTheGreat> Also, I lost my sketchbook last week, which really sucks. :(
15:08:52 <oklopol> was it a *the* scetchbook?
15:08:57 <oklopol> (sic)
15:09:34 <oklopol> what i mean is, was it like the scetchbook you've using your whole life, or jsut one of them
15:09:42 <oklopol> *just
15:09:51 <oklopol> algorithms exam sounds easy
15:09:59 <oklopol> how advanced?
15:10:09 <RodgerTheGreat> moderately difficult stuff
15:10:16 <RodgerTheGreat> and the sketchbook is about a year old
15:10:18 <oklopol> example?
15:10:49 <oklopol> how many pieces of art are we talking? hundreds
15:10:51 <oklopol> `?
15:11:05 <oklopol> wow, i need to leave in like 5 minutes :\
15:11:18 <oklopol> but answer both if you can'
15:11:51 <RodgerTheGreat> well, let me describe the professor- that'll give you a better idea. Three times this semester (so far), he's included homework problems that are in fact impossible. "Sorry about that, guys!"
15:12:01 <RodgerTheGreat> and yes, many many pages of drawings
15:12:20 <oklopol> lol :D
15:12:28 <oklopol> would be awesome to do that on purpose
15:13:36 <oklopol> i would prolly be the kind of professor who always gives an on-topic question the humanity has yet to answer, and says "if you solve this, or make a good attempt to, you get an A"
15:13:44 <oklopol> well perhaps not the good attempt to
15:13:48 <RodgerTheGreat> well, I guess we learned from them but it tends to make homework less fun
15:13:51 <oklopol> but would be so awesome to do stuff like that
15:13:59 <oklopol> yeah, well
15:14:10 <RodgerTheGreat> you can never be sure if you're stuck because you're missing something or because it cannot be done
15:14:14 <oklopol> making people do impossible stuff without telling them it's impossible is cool in a different way
15:14:20 <oklopol> i would prolly not do that.
15:14:38 <oklopol> it's cool as in "lol what a freak you have as a professor"
15:15:02 <oklopol> but
15:15:11 <oklopol> what kind of algos
15:15:22 <oklopol> one vague example is sufficient
15:16:25 <RodgerTheGreat> I think this exam covers brute force algorithms, divide-and-conquer and reduce-and-conquer
15:16:40 <RodgerTheGreat> there's potential for some pretty nasty stuff involving 2-4 trees as well
15:16:53 <oklopol> 2-4 tree is just a special case of b?
15:17:02 <oklopol> hmm
15:17:07 <oklopol> or not...
15:17:13 <oklopol> i don't remember now
15:17:14 <RodgerTheGreat> an isomorphism of red-black
15:17:19 <oklopol> perhaps i don't even know
15:17:27 <oklopol> hmm
15:17:30 <oklopol> avl?
15:17:53 <oklopol> okay, perhaps i don't know it, avl isn't isomorphic
15:17:55 <oklopol> just almost
15:18:10 <oklopol> anyway, good luck, i'll leave for a while now!
15:18:10 <oklopol> ->
15:19:16 -!- oklohot has joined.
15:19:47 -!- ehird has joined.
15:20:10 <ehird> oklohot, are you still dead
15:20:13 -!- oklohot has quit (Client Quit).
15:21:50 <ehird> HAHA
15:30:55 <ehird> <calamari>EsoBot: sit there doing nothing useful04:30:05
15:30:55 <ehird> EsoBotQuit with message (Remote closed the connection).
15:33:44 <ehird> <oklohot>http://content.cafepress.com/products/additional_photos/152_c6_1.jpg <<< i only use these (yes, yes, i use smiling dudes for my sick sex games)
15:33:46 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
15:33:46 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
15:33:46 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
15:33:47 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
15:33:47 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
15:33:50 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
15:33:52 <ehird> http://content.cafepress.com/products/additional_photos/152_c6_1.jpg
15:33:55 <pikhq> We *get it*.
15:33:57 <ehird> linking to anything which can lead to that picture is a trap
15:33:59 <ehird> don't do it!
15:34:03 <ehird> i can't restrain myself
15:37:06 -!- oklopol has quit (No route to host).
15:40:59 <Slereah> Is it a cockmongler?
15:55:55 -!- oktabot has quit (Connection timed out).
15:59:35 <ehird> Slereah, Perhaps.
16:17:03 -!- ais523 has joined.
16:17:32 -!- Sgeo has joined.
16:21:34 <ehird> hello, ais523
16:21:37 <ehird> hello, Sgeo
16:21:41 <ais523> hello, ehird
16:22:00 <Sgeo> Hi ehird
16:24:27 <ehird> hello, ais523
16:24:29 <ehird> Hi Sgeo
16:24:36 <ehird> (uh oh, our regexp handlers are broken)
16:24:42 * ais523 has an urge to say hello to someone else at random
16:24:46 <ais523> hello, EgoBot!
16:24:56 <ais523> that wasn't very randomly chosen, by the way
16:25:05 <ais523> maybe I should say hello to clog and cmeme too
16:25:09 <ais523> Hello, clog and cmeme!
16:25:18 <ehird> what is the diff. between clog and cmeme
16:25:23 <ehird> clog = ~ned
16:25:24 <ehird> nef
16:25:26 <ais523> any other bots in here I've missed?
16:25:26 <ehird> cmeme = ircbrowse.com
16:25:34 <ehird> but doesn't ircbrowse.com read from ~ned??
16:25:43 <ais523> no, they log themselves, I think
16:25:46 <ehird> hm, seems not
16:26:00 <ehird> ais523, the reason I said was:
16:26:19 <ehird> These logs are purposely "raw" and are intended to be parsed/reformated/wrapped before viewing.
16:26:19 <ehird> Annoyances such as horizontal window scrolling are due to the poor choice of viewer.
16:26:19 <ehird> For a so-called "pretty" view of these logs, go to http://tunes.org/~coreyr/.
16:26:19 <ehird> For even "prettier" (css'd, searchable, customizable, etc) logs, go to http://meme.b9.com.
16:26:20 <ehird> ahh
16:26:23 <ehird> meme must have used to do it
16:26:48 -!- ehird has set topic: http://tunes.org/~nef/logs/ --> .pr UPPER .pr STRING p=".pr UPPER .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]) --> this_is_an_oklotalk_quine.
16:26:51 -!- ehird has set topic: http://tunes.org/~nef/logs/esoteric --> .pr UPPER .pr STRING p=".pr UPPER .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]) --> this_is_an_oklotalk_quine.
16:26:54 -!- ehird has set topic: http://tunes.org/~nef/logs/esoteric/ --> .pr UPPER .pr STRING p=".pr UPPER .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]) --> this_is_an_oklotalk_quine.
16:26:58 <ais523> ehird: the "prettier" line doesn't say "of these logs", whereas the line above does
16:27:09 <ehird> ais523, well, yes
16:27:13 <ais523> so I reckon that they knew they were different logs all along
16:29:29 <ais523> incidentally, the topic is also a Kimian quine in INTERCAL-72
16:29:54 <ais523> but C-INTERCAL and CLC-INTERCAL will print out an error message, and line number, etc., too, as did at least the Princeton version of INTERCAl-72
16:30:00 <ais523> s/Al/AL/
16:30:52 <ehird> kimian quines are fun
16:31:10 <ehird> ais523, do you know gnome? my taskbar just moved to the side of the screen and it won't go bac
16:31:12 <ehird> k
16:31:28 <ais523> ehird: I don't know it very well
16:31:44 <ehird> :((
16:31:47 <ais523> you can remove all your customisations by deleting the appropriate dot file, and I've had to do that before
16:32:25 <ais523> (when I accidentally renamed all the files in my home directory to lowercase, it hit Desktop too, and it changed the settings automatically in an attempt to work around this, leading to ~ becoming my desktop, which was really confusing)
16:33:02 <ehird> ais523, oh jeez, i had to grab the few pixels between the top of the window buttons and the top of the taskbar..
16:33:04 <ehird> and drag it down
16:33:17 <ehird> Gnome: GUIs for genius retards
16:33:17 <ais523> you have the toolbar at the bottom?
16:33:25 <ehird> ais523, taskbar
16:33:27 <ais523> ah
16:33:33 <ais523> yes, bottom is good for a taskbar
16:33:36 <ais523> top is good for menus
16:33:43 <ehird> ais523, I prefer no taskbar
16:33:45 <ais523> that way you don't get them mixed up
16:33:57 * ais523 is used to using a taskbar
16:33:57 <ehird> I like the OS X way of almost entirely forgetting that 'app' and 'app instance' are seperate
16:34:18 <ais523> ehird: that's not very useful when you have three terminal windows open
16:34:22 <ehird> ais523, Hmm. I was too, but I adjusted to the Dock in a matter of days.
16:34:30 <ehird> And it's suprisingly useful! Click terminal, and they all appear.
16:34:33 <ehird> Or:
16:34:38 <ehird> Right click Terminal, and choose the window.
16:34:54 <ehird> Also, Expose is win when you want a specific window.
16:36:25 <ais523> ehird: but that takes multiple clicks/keystrokes
16:36:33 <ais523> I have terminal windows I'm using, and ones I want to forget about
16:36:39 <ehird> ais523, I've always found it faster than hutning around the taskbar.
16:36:43 <ais523> sometimes I'll push the ones I want to forget about onto a second desktop
16:36:52 <ehird> Anyway, Expose is the best one for finding a specific window.
16:36:59 <ais523> my taskbar is rarely cluttered, normally there are no more than 4 there at once
16:37:11 <ehird> F9, you immediately or near-immediately recognize the window you need, and shoot over and click it.
16:37:14 <ais523> and I can use Compiz to do much the same thing if I find the need to do that
16:37:22 <ais523> it's alt-shift-up here
16:37:26 <ehird> ais523, You can also F9-tab to select specific applications.
16:37:30 <ehird> Also, Compiz stole it from OS X.
16:37:34 <ais523> ehird: I know
16:37:53 <ehird> On a side node, the PHP docs are gems.
16:37:59 <ehird> People posting functions to sort objects by key!
16:38:22 <ais523> alt-shift-up then use arrow keys sounds easier than the keystrokes you mention, though
16:38:46 <ehird> ais523, F9-arrows works
16:39:07 <ais523> that sounds better, but I actually have to reach up to F9
16:39:24 <ehird> ais523, you can rebind it
16:39:25 <ais523> and being an Emacs user I can find Alt and Shift pretty quickly with my left hand, but F9 with my left hand is just painful
16:39:27 <ehird> also
16:39:32 <ehird> you can bind it to a screen corner
16:39:34 <ehird> I don't do that.
16:39:40 <ehird> But swerve-swerve-click is damn fast.
16:39:55 <ehird> Obviously if you use OS X you have to be fast with the mouse. It's not hard.
16:39:58 <ais523> rebindability is the best way to solve flame wars about keyboard layout :)
16:40:11 <ehird> Totally!
16:40:11 <ais523> ehird: I don't use a mouse most of the time, except for browsing the Internet
16:40:27 <ehird> ais523, Well then duhhh. Of course you don't think OS X is fast.
16:40:37 <ehird> Not rocket science.
16:40:48 <ais523> although I bought a new one today (I wanted a wired one so I wouldn't need batteries) and I have it connected to test that it works
16:41:00 <ehird> http://wearables.unisa.edu.au/arquake/ augmented reality quake
16:41:06 <ehird> i MUST have this
16:41:07 <ais523> I admire many things about OS X, but have no reason to spend the money to buy it
16:57:33 * ais523 has just thought of a new sort of CAPTCHA, which would manage to simultaneously be useless and annoying
16:57:42 <ais523> the website puts out a word in plaintext
16:57:55 <ais523> and the user has to make an image containing that word and upload it, which the server then has to be able to OCR
16:58:06 <ais523> easy to automate, painful for a human to do
17:01:32 <ehird> ais523, HAHA
17:01:35 <ehird> that's actually useful
17:01:40 <ais523> how?
17:01:40 <ehird> although.. no
17:01:42 <ehird> i was thinking,
17:01:45 <ehird> you could invert the result
17:01:49 <ehird> if they failed, then they're a human
17:01:53 <ehird> but ... a bot could just automatically fail
17:02:25 <ehird> ais523, I actually think good captchas can be fun
17:02:48 <ais523> the idea was prompted by the one on thedailywtf
17:02:53 <ehird> Like, solving a maths problem is irritating.
17:02:55 <ehird> But..
17:02:57 <ehird> What about in reverse?
17:03:03 <ehird> Show a regular CAPTCHA image of a number.
17:03:05 <ais523> they put one which is obviously unsolvable in Error'd
17:03:09 <ehird> And require a sum that rseults in that number.
17:03:17 <ehird> I guess, though, if you can crack the test that doesn't help.
17:03:24 <ehird> Something javascript-based with a fallback could be fun.
17:03:26 <ais523> ehird: the CAPTCHA on intercal.freeshell.org is interesting
17:03:27 <ehird> Like, a Simon Says.
17:03:32 <ehird> ais523, But irritating
17:04:00 <ais523> ehird: no, if you click the link to the explanation of mingle, then the CAPTCHA sum is used as the example in the documentation
17:05:43 <ehird> ais523, it's still irritating
17:07:25 <ais523> what, even with tabbed browsing?
17:10:03 <ehird> ais523, yes
17:23:14 <ehird> ais523, actually, a good captcha would be
17:23:18 <ehird> 'which of these jokes is funny?'
17:23:27 <ehird> because you could select exactly the kind of people who could view your website
17:23:29 <ehird> based on their sense of humour
17:23:33 <ais523> that would be a bad captcha simply because it would be too guessable
17:23:40 <ehird> for example:
17:23:45 <ais523> it could be brute-forced pretty quickly unless there were too many jokes
17:23:48 <ehird> 1. <joke from garfield>
17:23:51 <ehird> 2. <stupid joke>
17:23:53 <ehird> 3. <not a joke>
17:23:57 <ehird> 4. <joke in bad taste>
17:24:02 <ehird> 5. Watermelon!! hahaha
17:24:07 <ehird> only '4' is accepted
17:24:18 <ehird> or if you're garfield.com 1. i guess
17:24:33 <ais523> I did laugh out loud when you wrote 5, although i'd probably choose 3 if those are the only options you gave
17:24:50 <ehird> ais523, 3 would be instant admin status
17:24:54 <ais523> most likely I'd decide not to look at your website anyway, though, which is probably what you wanted
17:24:55 <ehird> I love non-jokes
17:25:08 <ehird> There are only 2 kinds of people in this world, those who understand binary and those who don't.
17:25:14 <ehird> ^^ the reason for our sentience
17:25:42 <ais523> ehird: that is a joke really, because of the way it alludes to a well-known joke
17:26:06 <ais523> sort of like "Why did the chicken cross the road?" is clearly not a joke out of context
17:26:24 <ehird> ais523, it's an anti-joke
17:26:40 <ais523> I thought it was a joke based on all the spinoffs that came up
17:26:52 <ais523> e.g. "Why did the turkey cross the road? Because it was the chicken's day off."
17:27:23 <ehird> ais523, I mean -- my joke is
17:27:32 <ais523> yes, I like antijokes
17:27:55 -!- Judofyr has joined.
17:28:18 <ehird> ais523, The officially sanctioned answer to any silly joke is 'lampposts'
17:29:04 <Judofyr> ehird: Can I have a look at your URL-routing thing you made? (What happened to Magic?)
17:29:25 <ehird> Judofyr, 1. If I can find the code 2. I started coding even less useful things
17:29:33 <Judofyr> :)
17:30:08 <ais523> [Sat Apr 5 2008] [16:09:22] <RodgerTheGreat> ais523: I have the best knock knock joke ever- say "knock knock"
17:30:16 <ais523> that's a great example of an antijoke
17:30:35 <RodgerTheGreat> indeed
17:31:14 <ais523> although it seems to be a different sort of antijoke from ehird's
17:31:25 <ehird> ais523, Knock knock
17:31:28 <ehird> knock knock knock
17:31:30 <ehird> 'Who's there?'
17:31:34 <ehird> KNOCK KNOCK KNOCK
17:31:37 <ehird> ding-dong
17:31:42 <ehird> 'Who's there?'
17:31:43 <ehird> KNOCK KNOCK
17:34:31 <Slereah> Hey.
17:34:35 <Slereah> Knock knock.
17:34:50 <ehird> KNOCK KNOCK KNOCK KNOCK
17:34:54 <ehird> 'Who's there?'
17:34:56 <ehird> ... silence ...
17:35:34 <ais523> we're not in right now, try coming back later
17:35:54 <Slereah> 9/11.
17:37:41 * ais523 looked up "Why did the chicken cross the road?" on Wikipedia, and found that there's a city with a law prohibiting chickens from crossing roads
17:38:06 <Slereah> What's the penalty?
17:38:28 <ais523> it doesn't say, and the reference given is to a paper book so I can't check
17:38:45 <ehird> ais523, there should be a city with laws mirroring mathematical laws
17:38:46 <ehird> like
17:39:09 <ehird> i don't know
17:39:10 <ehird> but
17:39:17 <ehird> 'An object must be equal to itself.
17:39:20 <ehird> with appropriate penalties
17:39:20 <Slereah> The mechanical nirvana of Mechanus?
17:39:36 <Slereah> Old school Modrons were mostly geometrical shapes.
17:40:14 <ais523> most modrons are geometrical shapes
17:40:20 <ais523> because the ones which aren't are really rare
17:42:04 <ais523> OTOH, I've never met a modron, so this is from second-hand knowledge
17:44:02 <Slereah> Heh.
17:44:20 <Slereah> But well, now they aren't shapes anymore.
17:44:25 <Slereah> They're clocks with legs.
17:46:20 <ais523> did they used to be more abstract, then?
17:46:32 <ais523> the only version of the modron I'm used to is the one updated to 3.5
17:46:55 <ais523> hmm... modrons are one of the few species which could sensibly have a beta
17:48:27 <Slereah> Well, the second ed were literaly shapes.
17:48:34 <ehird> ais523, Monkeys, humans?
17:48:39 <ehird> Joking, of course.
17:48:51 <Slereah> Like tetraedrons with hands and an eye
17:48:55 <ais523> I meant a beta for the individual animals
17:49:07 <ais523> I can imagine modrons being upgraded over time
17:49:18 <Slereah> http://upload.wikimedia.org/wikipedia/en/c/c1/Modron-Dungeons%2BDragons.png
17:49:20 <Slereah> Fear
17:50:02 <ehird> ais523, aren't all animals upgraded over time?
17:50:03 <ehird> .. essentially
17:50:19 <ais523> you don't download new firmware into individual people
17:50:39 <ais523> animals don't evolve whilst alive from a physical point of view, usually, evolution happens from one generation to the next
17:50:53 <ais523> it is possible to make a decent argument for people evolving psychologically, though
17:52:57 -!- timotiis has quit (Read error: 110 (Connection timed out)).
17:55:44 <pikhq> There is some form of 'evolution' that occurs while animals are alive (though it's not evolution in the strictest sense).
17:56:05 <pikhq> Behavior changes readily during an animals' life, assuming a sufficiently complex nervous system.
18:00:55 <ais523> what about the case of asexual bacteria? It's hard to tell when one bacterium dies, because they reproduce by splitting and you can't tell which bacterium is 'new' and which one's the 'original'
18:02:17 <pikhq> A fair point.
18:02:31 <pikhq> Arguably, that involves evolution whilst alive.
18:02:49 <pikhq> (because mutations *do* occur during mitosis)
18:04:33 <ehird> bacon
18:04:44 <Slereah> Hell, if they're unicellular, even a mutation without reproduction might have effects :o
18:05:28 <lament> evolution is just a theory
18:05:49 <Slereah> Oh you.
18:06:36 <Slereah> Damn your creationism. When I was answering, a gobling bashed my skull in D:
18:06:52 <ehird> lament, ditto with gravity
18:06:54 <ehird> this is very useful
18:08:12 <lament> sure, gravity is just a theory
18:09:16 <lament> pretty silly one, too
18:09:25 <lament> all it does is simplify some astronomical calculations
18:10:00 <Slereah> Well, it actually was checked at ground level
18:10:11 <Slereah> That's how the gravitational constant is known, too.
18:12:47 <lament> well, that things fall down is obvious
18:12:51 <lament> that's what "down" means
18:13:15 <lament> to claim that instead of "down", things fall to where gravity attracts them is just a silly theory
18:13:42 <lament> and to claim that this applies to planets is even sillier, because planets could well be just painted on their respective celestial spheres
18:14:46 <Slereah> The gravity experiments aren't down, actually.
18:14:57 <Slereah> Because when they were done, the mass of the earth wasn't known.
18:15:09 <Slereah> It's done with two balls (lulz).
18:20:54 <lament> there's so much room for experimental error there
18:21:07 <lament> perhaps the attraction between the two balls was actually due to strong force!
18:23:01 <Slereah> Only if the balls were touching. And it would be gay.
18:24:14 <lament> that's... touching
18:27:08 -!- Slereah_ has joined.
18:27:08 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
18:27:27 <Slereah_> http://www.superdeluxe.com/sd/contentDetail.do?id=D81F2344BF5AC7BB1226B76293E824B4B47D9B9CAC09B7A0
18:45:19 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
18:46:33 <ehird> oklopol is not here.
18:50:35 -!- JudoBot has joined.
18:50:35 -!- Slereah has joined.
18:50:35 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:50:39 -!- JudoBot has quit (Remote closed the connection).
18:50:40 <ehird> JudoBot, eval 2+2
18:50:42 <ehird> D'aww
18:50:49 <ehird> I was going to rm -rf /
18:52:56 -!- Judofyr has quit (brown.freenode.net irc.freenode.net).
18:52:56 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
18:52:56 -!- pikhq has quit (brown.freenode.net irc.freenode.net).
18:53:30 -!- ehird has changed nick to EgoBot.
18:53:33 <EgoBot> MWAHAhahAHA
18:53:45 -!- EgoBot has changed nick to ehird.
18:53:49 <ehird> can't guess the pw
18:53:50 <ehird> phooey
18:55:21 -!- pikhq has joined.
19:03:58 <ehird> pikhqello
19:07:10 -!- Judofyr has joined.
19:07:10 -!- EgoBot has joined.
19:08:53 -!- jix has quit (Nick collision from services.).
19:09:03 -!- jix has joined.
19:11:44 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
19:11:44 -!- Judofyr has quit (brown.freenode.net irc.freenode.net).
19:11:55 -!- EgoBot has joined.
19:30:07 <ehird> !ls
19:30:09 <EgoBot> bf/, glass/, linguine/
20:09:55 -!- oerjan has joined.
21:21:24 -!- kwertii has joined.
21:21:58 -!- kwertii has quit (Remote closed the connection).
21:22:12 -!- kwertii has joined.
21:30:53 <ehird> kwertii,
21:32:35 <kwertii> hi
21:42:52 <ehird> hi,
21:43:49 <oerjan> speed of light seems slow today
21:43:57 <kwertii> indeed it is
21:44:07 <oerjan> ah picking up
21:45:28 * oerjan wonders what will happen to the internet(s) if we colonize Mars etc. with no FTL communication found
21:46:00 <kwertii> it'll be just like 1986 all over again :)
21:46:14 <kwertii> daily Usenet drops.. relay mail packets
21:48:20 <ehird> mars eternal september
21:48:23 <oerjan> might even have to send information by spaceship...
21:48:30 <ehird> it's not as annoying
21:48:34 <ehird> because it's incredibly slow
21:48:54 <oerjan> if there isn't enough EM bandwidth
21:48:57 <kwertii> we'll also have amazing data compression by then
21:49:07 <oerjan> hardly
21:49:19 <kwertii> you expect a Mars colony in the next 10 years?
21:49:38 <oerjan> i mean there _is_ a definite bound to compression
21:49:43 <ehird> 'Magical Reduce One Byte Compression' algorithm:
21:49:46 <lament> mars is at 1.5 AU
21:50:04 <ehird> Delete the last byte of the file. Recompile the decoder with a line for that byte.
21:50:12 <lament> so we can expect up to 20min lag one-way but only when the planets are in opposition
21:50:24 <lament> and only 4 minutes in the best case
21:50:32 <kwertii> it seems to me there's an excellent chance of some kind of information theoretical breakthrough between now and the Mars colony which will shift paradigms, etc. and allow for far greater compression
21:50:37 <lament> 8 min two-way
21:51:08 <lament> even 20-minute one-way lag would be quite acceptable, say, in #esoteric
21:51:09 <kwertii> quantum compression! "This is probably what your file looked like before..."
21:51:12 <ehird> kwertii, extm txt spk
21:52:09 <oerjan> kwertii: well true AI could compress anything that isn't _actually_ random i guess - but there would be some information that _is_ truly random
21:52:45 <kwertii> I read something interesting the other day, that "random" is always a negative definition.. .i.e. it doesn't mean there is no pattern, just that nobody has yet found a pattern
21:52:54 <oerjan> census data, say, hard to imagine that not having a large random component
21:53:57 <oerjan> although by then an entire census of humanity would probably be considered a tiny amount of information
21:54:22 <kwertii> and there's a strong chance of FTL communications too. quantum entanglement looks promising
21:54:32 <lament> no it doesn't
21:54:44 <kwertii> (* on the timeframe we're talking about)
21:55:19 <oerjan> in the current theoretical setup, quantum entanglement _very_ carefully disallows FTL communication
21:55:34 <kwertii> no doubt some brilliant young PhD student will find a way around it in 50 years or so
21:55:49 <kwertii> it always happens, sooner or later.. paradigms crumble bit by bit
21:56:01 <lament> http://en.wikipedia.org/wiki/No-communication_theorem
21:56:24 <oerjan> probably, but only assuming the universe actually _does_ support FTL communication somehow
21:56:46 * ehird personally is skeptical
21:56:51 <ehird> i mean, FTL stuff would just be TOO good
21:56:59 <ehird> when has the universe ever been good and convenient for us?
21:57:00 <kwertii> and that is only assuming that 1) the universe is real, and 2) there is an objective reality, that 3) doesn't ever change its laws.. none of which have any compelling evidence IMO :)
21:57:17 <lament> sounds like arts bullshit
21:57:29 <ehird> kwertii, 1) the universe is actually a pea, 2) my arse 3) potato
21:58:01 <kwertii> ehird: best keep that theory to yourself, or they'll lock you up
21:58:10 <Slereah> There's plenty of FTL thingamabob
21:58:18 <Slereah> But they are kinda hard to implement
21:58:21 <ehird> kwertii, boo hoo
21:58:51 <kwertii> ehird: not saying you're necessarily wrong now...
22:01:15 <kwertii> lament: http://en.wikipedia.org/wiki/Quantum_teleportation is already trying to find a way around that theorem. Given the generally poorly understood nature of the overall state of quantum mechanics, i'm sure that by the time the Mars colony is ready, they'll have found something (if not that specifically)
22:01:33 <ehird> kwertii, you're far too optimistic
22:01:51 <kwertii> maybe you just think the Mars colony will be ready long before I do :)
22:02:00 <ehird> kwertii, well, when do you think
22:02:55 <kwertii> 200 years, minimum, assuming we don't all kill ourselves in a nuclear war or fry ourselves by depleting the atmosphere before then
22:04:11 <ehird> 200 years isn't enough to change the laws of the universe
22:04:54 <Slereah> OR IS IT?
22:04:59 <Slereah> To the time machine!
22:05:16 <kwertii> I'm not suggesting that the laws of the universe will be changed; just that the current understanding of those laws is imperfect and will be refined
22:05:23 <ehird> Slereah, http://qntm.org/?f16
22:05:57 <Slereah> kwertii : What you're saying is that you know that the laws will allow it
22:05:59 <ehird> best non-narrative joke fiction that fits on a screen. ever.
22:06:45 <kwertii> Slereah: no; if I knew that I would patent a FTL communications system tomorrow and become a zillionaire
22:07:02 <ehird> kwertii, that has some problems
22:07:06 <ehird> though the system is fucked enough
22:07:32 <kwertii> Slereah: Just saying it seems probable, given the history of science periodically doing "impossible" things by figuring out that the current view of the "laws" of the universe was actually incorrect in some way
22:07:35 <Slereah> kwertii : You could know, but not know how!
22:07:50 <Slereah> There's plenty of impossible things that are still impossible
22:08:04 <Slereah> Plus, it's no guarantee.
22:08:08 <ehird> <Slereah> There's plenty of impossible things that are still impossible
22:08:11 <ehird> best line ever
22:08:12 <Slereah> Not even on a statistical point of view.
22:08:17 <kwertii> right, no guarantee. I just said that it's "probable"
22:08:31 <Slereah> On what did you construct that probability?
22:08:38 <Slereah> What is the set of success and failure?
22:08:44 <kwertii> the history of paradigm shifts in science and physics in particular
22:08:48 <oerjan> hm actually patenting an FTL communications system _now_ might be a bad idea - it will be many years until it becomes very useful, and the patent might expire
22:09:06 <pikhq> Unless you're in the NSA.
22:09:07 <oerjan> except for space probes maybe
22:09:11 <Slereah> That can't change the laws of physics, kwertii
22:09:27 <oerjan> um how does FTL communications help the NSA?
22:09:41 <pikhq> (NSA patents are filed under gag order; they only take effect the moment someone *else* tries patenting the same thing)
22:09:51 <oerjan> oh
22:09:55 <kwertii> Slereah: I'm saying rather that our current idea of the laws of physics is actually incorrect in some unknown way
22:10:13 <kwertii> Slereah: just as Newton's idea of the laws of physics was subtly incorrect, as later demonstrated by Einstein and QM
22:10:53 <ehird> <pikhq> (NSA patents are filed under gag order; they only take effect the moment someone *else* tries patenting the same thing)
22:10:56 <ehird> LAND OF THE FREE
22:11:24 <Slereah> It does not matter if it is correct or not.
22:11:28 <pikhq> Land of the free, and the home of the military effected superior to the civil power.
22:11:38 <Slereah> If you do not know the correct version and its applications, you can't predict the results.
22:11:50 <ehird> pikhq, AMERICA WOOO
22:13:42 <oerjan> ehird: but once they take effect, is the expiry time from when they were originally filed or from when they take effect?
22:13:46 <kwertii> Slereah: I'm not personally going to find whatever the flaw is, but it seems likely that SOMEbody will in the next few hundred years.
22:13:50 <pikhq> From when they take effect.
22:13:54 <ehird> oerjan, No idea -- but it's retarded.
22:14:03 <pikhq> Very retarded.
22:14:05 <oerjan> er, pikhq
22:14:19 <Slereah> kwertii : Still. You don't know if it can be done :o
22:14:30 <pikhq> FTL communications?
22:14:37 <oerjan> ok if it had been the other way it would have been more reasonable
22:14:37 * pikhq grabs a couple of wormholes
22:14:48 <pikhq> I call it the 'Stargate'.
22:14:50 <kwertii> Slereah: No. I don't. I said only that it seems "probable" :)
22:14:52 <Slereah> Wormholes are so not FTL.
22:14:58 <Slereah> Probable implies probability.
22:15:20 <Slereah> People remember impossible thing becoming possible
22:15:20 <pikhq> How aren't they?
22:15:30 <Slereah> Not impossible thing remaining impossible
22:15:48 <Slereah> That's why they have such a sunny optimism.
22:16:18 <oerjan> sometimes possible things become impossible though
22:16:26 <Slereah> YeS.
22:16:33 <Slereah> Like Faster than light travel :o
22:16:38 <kwertii> Slereah: look at the history of physics.. a succession of paradigms overtaking one another.. the religious/mythological paradigm, the Aristotelian paradigm, the Newtonian paradigm, the "modern" relativity/QM paradigm.. they don't last forever, and each time previously impossible things become possible. Also, the rate at which new paradigms emerge is accelerating.
22:16:55 <Slereah> kwertii : Actually, it works both ways
22:17:00 <Slereah> Or 4 ways.
22:17:00 * oerjan recently saw a link about something called 'laserwort'
22:17:07 <Slereah> Impossible->possible
22:17:14 <Slereah> Possible->impossible
22:17:17 <Slereah> Possible->possible
22:17:18 * pikhq prefers gloomy optimism and sunny pessimism. :p
22:17:21 <Slereah> Impossible->impossible
22:17:33 <oerjan> um not quite the modern version
22:18:11 <oerjan> anyway it was a near-perfect contraceptive known to the ancient greeks and romans, and they were stupid enough to let it go _extinct_
22:18:36 <oerjan> out of greed, probably
22:20:16 <oerjan> ah it's on wikipedia: http://en.wikipedia.org/wiki/Silphium
22:20:40 <Slereah> Well, lasers as contraceptive seems a little bit over the top!
22:20:52 <ehird> oerjan, ABORTION IS WRONG</catholic>
22:21:05 <pikhq> EVERY SPERM IS SACRED!
22:21:21 <ehird> TOTALLY
22:21:24 <kwertii> Slereah: did anything previously possible become impossible during previous physics paradigm shifts? interesting question. Perhaps stories of "magic" are vague cultural memories of previously-possible things that became impossible when Aristotelian physics was imposed...
22:21:25 <ehird> WHERE'S MY BIBLE
22:21:28 <ehird> I WANT TO MISQUOTE A VERSE
22:21:39 <oerjan> it died out before christianity got very important though
22:21:42 <ehird> kwertii, HAHAHA
22:21:45 <ehird> that's great
22:21:51 <ehird> We used to be able to do magic!
22:21:55 <ehird> Then they came and oppressed us.
22:21:56 <ehird> Fuckers.
22:22:17 <Slereah> kwertii : Well, FTL travel for one thing.
22:22:42 <Slereah> The speed of light meant nothing before the 20th century.
22:22:47 <Slereah> And late 19th.
22:22:53 <kwertii> sure
22:24:25 <Slereah> Well, it was the speed *of light*
22:24:35 <Slereah> But other than that, of no physical importance.
22:29:00 <ehird> .
22:29:16 <ehird> exec -o fortune -a
22:29:17 <ehird> hmm
22:29:18 <ehird> sh: fortune: command not found
22:29:21 <ehird> XDD
22:30:44 <kwertii> ehird: yep. Damn Greeks with their damn "logic"...
22:30:52 <ehird> Destiny is a good thing to accept when it's going your way. When it isn't,
22:30:52 <ehird> don't call it destiny; call it injustice, treachery, or simple bad luck.
22:30:52 <ehird> -- Joseph Heller, "God Knows"
22:30:59 <ehird> well, /exec works
22:31:08 <Slereah> Don't diss the greeks.
22:31:11 <Slereah> They invented buttsex.
22:32:09 <kwertii> and Aristotle teaches us how magnets and fire have souls
22:32:11 <ehird> One must have a heart of stone to read the death of Little Nell by Dickens
22:32:11 <ehird> without laughing.
22:32:11 <ehird> -- Oscar Wilde
22:33:45 <Slereah> "I have to agree. I've always been an anarcho-socialist. There should be no government, and it should pay for everything."
22:34:36 <oerjan> :D
22:35:04 <ehird> Going into politics is as fatal to a gentleman as going into a bordello
22:35:04 <ehird> is fatal to a virgin.
22:35:04 <ehird> -- H. L. Mencken, "A Carnival of Buncombe"
22:37:00 <Slereah> By "recursive" I mean "defined by recursion."
22:37:00 <Slereah> --Harvard's Prof. Sacks
22:38:15 <Slereah> You can't use tact with a Congressman! A Congressman is a hog! You must take a stick and hit him on the snout!
22:38:15 <Slereah> --Cabinet member, 1906
22:38:40 <Slereah> My ancestors were Puritans from England. They arrived here in 1648 in the hope of finding greater restrictions than were permissible under English law at that time.
22:38:40 <Slereah> --Garrison Keillor
22:43:37 <ehird> Slereah, If those aren't in the fortune databases in Debian, they should be
22:44:03 <pikhq> There's a few. One needs to install them.
22:44:13 <ehird> pikhq, I have them all installed, I think, sans language packs
22:44:13 <pikhq> Oh.
22:44:15 <pikhq> Misread.
22:44:27 <ehird> fortunes-mario fortunes-bofh-excuses fortunes fortune-off
22:44:35 <Slereah> ehird : I dunno
22:44:36 <ehird> everything but debian-hints and language ones i think
22:45:30 <Slereah> If you are a good economist, a virtuous economist, you are reborn as a physicist. But if you are an evil, wicked economist, you are reborn as a sociologist.
22:45:30 <Slereah> --An Indian economist, quoted by Paul Krugman
23:06:28 <ehird> A.
23:06:56 <oerjan> Digamma.
23:07:35 <Slereah> F
23:12:17 <ehird> http://pyside.blogspot.com/2008/03/interesting-facts-about-linux-file.html
23:12:22 <ehird> linux refcounts files
23:12:28 <ehird> we need a cheney gc for files
23:12:34 <ehird> copies all live files over..
23:46:39 <ehird> Channel is dead, here is a fortune:
23:46:39 <ehird> "If religion cannot restrain evil, it cannot claim effective power for good."
23:46:39 <ehird> [Morris Cohen]
23:48:49 <GregorR> "I'm pro-choice, because fetuses are delicious."
23:48:52 <GregorR> - Gregor Richards
23:50:23 <lament> i'd give my arguments for pro-life but the FBI might start worrying
23:51:21 <ehird> pro-life, pro-choice
23:51:23 <ehird> such great terms
23:51:49 <ehird> lament, come on...
23:52:44 <oerjan> lament: i'm sure you have a modest proposal
23:53:21 <lament> modest and wholly virtuous
23:53:58 -!- olsner has joined.
23:55:18 <ehird> wait -- am i missing something here
23:55:44 <oerjan> ehird: we shall swiftly remedy that
23:55:53 <lament> oerjan: ugh.
23:56:00 <ehird> oerjan, I think everyone in here is part of a hugh in-joke and I am totally dumb.
23:56:15 <oerjan> http://en.wikipedia.org/wiki/A_Modest_Proposal
23:56:23 <pikhq> :D
23:56:31 <GregorR> I suppose a baby taken to term can feed more than a fetus, but fetuses are SO TASTY.
23:56:32 <pikhq> I love that essay.
23:56:58 <ehird> oerjan, Yes -- but the original message does not seem to tie in.
23:57:16 <ehird> Was it satirical as well?
23:57:21 <pikhq> Very.
23:57:26 <pikhq> :p
23:57:29 <ehird> GregorR, Do not put the fetus in the mouth
23:57:30 -!- Iskr has quit ("Leaving").
23:57:33 <lament> GregorR: but there's other things you can do with a baby!
23:57:38 <ehird> pikhq, Oh duh.
23:57:41 <pikhq> ehird: Do not put the baby in the essay.
23:57:41 <ehird> I am totally retarded.
23:57:46 <ehird> But my brain has been offline for all of today!
23:57:54 <GregorR> http://www.donotputthebaby.com/index.php?s=Mouth
23:58:02 <ehird> GregorR, that was my joke
23:58:47 <pikhq> I'm afraid he beat you to it.
23:58:56 <ehird> pikhq, I meant -- my joke was based on that he owns that site.
23:59:12 <GregorR> Incidentally, I haven't had any new submissions in a while >_>
23:59:25 <ehird> GregorR, Do not put the baby in the cron job
23:59:32 <pikhq> DO NOT PUT THE BABY IN THE DO NOT PUT THE BABY SITE.
2008-04-19
00:00:10 <GregorR> ehird: Too similar to in-the-code or otherwise undrawable.
00:00:13 <GregorR> pikhq: Too obvious.
00:00:25 <olsner> do not put the baby in the argument of removeDirectoryRecursive
00:00:38 <ehird> GregorR, A=Do not put the baby in the A
00:01:01 <pikhq> New idea.
00:01:10 <ehird> DO NOT PUT THE BABY IN THE NEW IDEA
00:01:10 <pikhq> "Do not put the baby"
00:01:16 <ehird> pikhq, I think I win.
00:01:24 <pikhq> Touche.
00:01:29 <pikhq> (douche)
00:02:46 <ehird> pikhq, :(
00:27:08 <ehird> Channel is dead, here is a fortune:
00:27:08 <ehird> Be free and open and breezy! Enjoy! Things won't get any better so
00:27:08 <ehird> get used to it.
00:30:02 -!- GregorR_ has joined.
00:30:19 -!- GregorR has quit (Nick collision from services.).
00:30:31 -!- GregorR_ has changed nick to GregorR.
00:31:00 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
00:31:14 -!- EgoBot has joined.
00:33:32 -!- timotiis has joined.
00:45:04 -!- olsner has quit ("Leaving").
01:17:28 -!- Slereah_ has joined.
01:17:28 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
01:27:18 -!- jix has quit ("CommandQ").
01:45:44 -!- oerjan has quit ("Good night").
01:59:25 -!- ehird has quit (Remote closed the connection).
02:01:06 -!- timotiis has quit (Connection timed out).
02:08:02 -!- timotiis has joined.
02:19:07 -!- Slereah has joined.
02:31:24 -!- timotiis has quit (Connection timed out).
02:36:16 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
02:40:03 -!- Slereah has quit (Read error: 110 (Connection timed out)).
03:18:56 <Sgeo> DO NOT PUT THE BABY IN THE POST-BIG CRUNCH UNIVERSE
03:54:49 <pikhq> DO NOT PUT THE BABY IN THE FORTUNE FILE.
03:56:10 <RodgerTheGreat> DO NOT PUT THE BABY IN THE RECURSIVE ACRONYM "DNPTBITRAD"
03:56:24 <pikhq> DO NOT PUT THE BABY IN THE MAGIC DECK.
03:57:34 <RodgerTheGreat> DO NOT PUT THE BABY IN THE INTELLIGENCE DISPOSAL UNIT
04:21:36 <GregorR> RodgerTheGreat: I got the AWESOME T-shirt.
04:21:54 <RodgerTheGreat> <:D
04:26:16 <GregorR> Is that your celebratory dunce hat?
04:26:36 <RodgerTheGreat> no, it's my cone-shaped skull
04:26:43 <RodgerTheGreat> or perhaps a unibrow
04:26:50 <RodgerTheGreat> it is a mystery
04:26:50 <pikhq> No, only *Gregor* gets a celebratory dunce hat.
04:27:00 <pikhq> (actually, you should get a dunce cap, just for the hell of it)
04:28:06 <RodgerTheGreat> GregorR: so, do we get a picture of you wearing the internet people T-shirt?
04:35:06 <GregorR> http://www.codu.org/pics/displayimage.php?album=4&pos=2
04:35:41 <RodgerTheGreat> haha- that's great
04:37:05 -!- oklopol has joined.
04:37:30 <lament> GregorR: how self-referential
04:38:52 <lament> RodgerTheGreat: a better drawing on the t-shirt on the t-shirt would be the t-shirt drawing.
04:39:06 <RodgerTheGreat> hm
04:39:22 <lament> then GregorR would be now at the end of an infinite tunnel of people from the internet
04:39:32 <RodgerTheGreat> I could draw gregor wearing the shirt, he could order this new shirt and we could repeat the process several times
04:42:40 <GregorR> I LOVE SPENDING MONEY ON THINGS I'LL ONLY USE ONCE
04:42:48 <RodgerTheGreat> heheh
04:43:08 <oklopol> wasn't that a photo of GregorR on the t-shirt? i could've sworn it was
04:43:08 <RodgerTheGreat> actually, it would be pretty hilarious to wear a series of shirts like that in sequence
04:43:13 <GregorR> I did think about getting a blank T-shirt, taking a picture of me wearing that, put the picture onto itself, etc etc, then eventually buying that on Cafepress :P
04:43:14 <oklopol> (just kidding, he's gorgeous)
04:43:19 <oklopol> *georgeous
04:43:21 <oklopol> err
04:43:23 <oklopol> grerorous
04:43:25 <oklopol> hmm
04:43:28 <Sgeo> Grr at anims at the new dilbert.com rejecting linux
04:43:33 <GregorR> georgeous: Similar to Georgia.
04:43:41 <RodgerTheGreat> everyone around you would slowly realize what was happening with the shirts
04:43:50 <GregorR> Sgeo: ?
04:44:02 <RodgerTheGreat> and just when they think they have it figured out, go to work shirtless
04:44:05 <oklopol> GregorR: i was going for similar to george, but i then realized gregor!=george.
04:44:22 <GregorR> RodgerTheGreat: You could do that with iron-on transfers and a box o' inexpensive Ts.
04:44:23 <RodgerTheGreat> "sorry 'bout that- divide by zero error..."
04:44:24 <oklopol> (not even an anagram)
04:44:33 <RodgerTheGreat> GregorR: good point
04:45:24 <GregorR> RodgerTheGreat: Just don't want to do that with things that should last, since iron-ons ... uh ... don't :P
04:48:52 <oklopol> RodgerTheGreat: by 2-4 tree, did you mean this guy http://en.wikipedia.org/wiki/2-3-4_tree ?
04:48:57 <oklopol> because that's just b
04:49:10 <RodgerTheGreat> yes
04:49:17 <RodgerTheGreat> I never claimed it isn't a B tree
04:49:21 <oklopol> no
04:49:35 <oklopol> but you said it was isomorphic to a rb-tree
04:49:43 <RodgerTheGreat> oklopol: it IS
04:49:46 <oklopol> oh
04:49:52 <oklopol> didn't know that
04:50:02 <RodgerTheGreat> http://en.wikipedia.org/wiki/Red_black_tree#Analogy_to_B-trees_of_order_4
04:50:21 <oklopol> oh, heh, cool
04:50:28 <RodgerTheGreat> yup
04:51:43 <oklopol> especially cool if that isomorphism was found later
04:52:10 <oklopol> i mean, that one of the data structures wasn't just invented on top of the other
04:52:18 <oklopol> but they just turned out to be the same
04:52:37 <RodgerTheGreat> the red-black tree page discusses the origin of the data structure
04:52:49 <oklopol> perhaps i should read that :P
04:52:55 <oklopol> i'm not really into history, though
04:53:03 <RodgerTheGreat> ok
04:53:48 <oklopol> oh
04:54:04 <oklopol> second sentence really answers my ponderings
05:00:10 <RodgerTheGreat> that was pretty much my point
05:00:49 <oklopol> well how was i supposed to know :D
05:01:06 <RodgerTheGreat> by reading
05:01:26 <oklopol> hmm, good point
05:22:06 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
05:59:49 <RodgerTheGreat> good night everyone
05:59:57 -!- RodgerTheGreat has quit.
06:04:36 -!- calamari has joined.
06:06:20 -!- EsoBot has joined.
06:08:28 <calamari> EsoBot: pwd
06:08:30 <EsoBot> sh-3.2# pwd
06:08:31 <EsoBot> /
06:32:05 -!- EsoBot has quit (Remote closed the connection).
06:32:21 -!- EsoBot has joined.
06:32:38 -!- EsoBot has quit (Remote closed the connection).
06:33:17 -!- EsoBot has joined.
06:33:18 <EsoBot> sh-3.2#
07:08:11 <calamari> EsoBot: halt
07:08:13 <EsoBot> halt
07:08:34 -!- EsoBot has quit (Remote closed the connection).
07:08:36 -!- calamari has quit ("Leaving").
07:09:00 * Sgeo wants to cause mischief with the eicar file
07:37:22 -!- Sgeo has quit ("Ex-Chat").
07:38:40 -!- kwertii_ has joined.
07:46:49 -!- Iskr has joined.
07:55:22 -!- kwertii has quit (Read error: 113 (No route to host)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:13:13 -!- GreaseMonkey has joined.
08:16:26 -!- kwertii_ has quit.
08:20:24 -!- olsner has joined.
10:33:00 -!- GreaseMonkey has quit ("Unisex.").
10:35:02 -!- Iskr has quit (Remote closed the connection).
10:52:57 -!- Iskr has joined.
11:47:50 -!- jix has joined.
12:29:13 -!- timotiis has joined.
13:02:13 -!- timotiis has quit (Read error: 110 (Connection timed out)).
14:20:25 <SimonRC> tumtitum
14:43:06 -!- sebbu has quit (Client Quit).
14:57:03 -!- sebbu has joined.
16:37:33 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
16:37:50 -!- RodgerTheGreat has joined.
16:38:02 <RodgerTheGreat> hi
16:38:17 -!- bsmntbombdood has joined.
16:39:45 -!- ehird has joined.
17:03:37 -!- Judofyr has joined.
17:06:30 <SimonRC> RodgerTheGreat: hi
17:06:44 <RodgerTheGreat> hey, SimonRC
17:07:22 <SimonRC> I have found what concatenative languages are really bad at.
17:07:29 <SimonRC> adding a paramater to something
17:07:35 <SimonRC> especially if that parameter is a function
17:08:00 <SimonRC> HoF in Factor, for example, quickly turns into spagghetti
17:08:11 <SimonRC> *turn
17:08:21 <RodgerTheGreat> hm
17:15:21 -!- mtve has quit (brown.freenode.net irc.freenode.net).
17:15:23 -!- Overand has quit (brown.freenode.net irc.freenode.net).
17:15:24 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
17:15:24 -!- sebbu has quit (brown.freenode.net irc.freenode.net).
17:15:26 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
19:26:49 -!- clog has joined.
19:26:49 -!- clog has joined.
19:26:50 <ehird> EsoBot: back yet?
19:26:54 <ehird> whoa, hi clog
19:26:59 <ehird> sorry you missed out on some stuff
19:27:12 -!- EsoBot has quit (Remote closed the connection).
19:27:22 -!- EsoBot has joined.
19:27:23 <EsoBot> [bash-3.2] /#
19:27:26 <ehird> EsoBot: ps
19:27:27 <SimonRC> f00fc7c8?
19:27:30 <EsoBot> PID USER COMMAND
19:27:31 <calamari> sorry.. forgot to restart it for ya
19:27:32 <EsoBot> 1 root init
19:27:34 <EsoBot> 2 root [kthreadd]
19:27:36 <EsoBot> 3 root [ksoftirqd/0]
19:27:38 <EsoBot> 4 root [events/0]
19:27:40 <EsoBot> 5 root [khelper]
19:27:42 <EsoBot> 27 root [kblockd/0]
19:27:44 <EsoBot> 30 root [kseriod]
19:27:46 <EsoBot> 60 root [pdflush]
19:27:48 <EsoBot> 61 root [pdflush]
19:27:50 <EsoBot> 62 root [kswapd0]
19:27:52 <EsoBot> 63 root [aio/0]
19:27:54 <EsoBot> 165 root /bin/sh /etc/init.d/rcS
19:27:56 <EsoBot> 179 root [telnetd]
19:27:58 <EsoBot> 182 root bash
19:28:00 <EsoBot> 184 root [bash]
19:28:02 <EsoBot> 187 root [bash]
19:28:04 <EsoBot> 199 root telnetd -l /bin/bash
19:28:06 <EsoBot> 200 root /bin/bash
19:28:08 <EsoBot> 202 root ps
19:28:11 <EsoBot> [bash-3.2] /#
19:28:46 <calamari> btw.. you can msg esobot directly for a new shell
19:28:53 <calamari> then you don't have to spam the channel as much
19:29:27 <calamari> it's nicer too because then you don't need Esobot in front of everything :)
19:29:50 <ehird> calamari, bah!
19:30:01 <ehird> EsoBot: python
19:30:05 <EsoBot> Python 2.4.2 (#3, Apr 13 2008, 20:46:27)
19:30:06 <ehird> EsoBot: import threading
19:30:07 <EsoBot> [GCC 4.2.1] on linux2
19:30:09 <EsoBot> Type "help", "copyright", "credits" or "license" for more information.
19:30:12 <EsoBot> >>> >>>
19:30:16 <ehird> EsoBot: while True:
19:30:21 <EsoBot> ...
19:30:23 <ehird> EsoBot: threading.Thread().start()
19:30:28 <EsoBot> ...
19:30:29 <ehird> EsoBot:
19:30:42 <ehird> calamari, That should work QUITE thoroughly.
19:30:56 <calamari> ehird: you don't need python for that
19:31:03 <calamari> oops
19:31:07 <ehird> calamari, For real threads you do
19:31:08 <calamari> bot error.. lol
19:31:36 -!- EsoBot has quit (Read error: 104 (Connection reset by peer)).
19:31:58 <calamari> pathetic bug.. I should know better
19:32:13 <ehird> calamari, what happened :D
19:32:16 <SimonRC> I will try one next
19:32:35 <calamari> if irc_message[0] == " ":
19:32:35 <calamari> IndexError: string index out of range
19:32:39 <calamari> duh....
19:33:35 <calamari> while it's down, perhaps I'll have it retry the telnet connection if it loses it
19:34:08 <calamari> the biggest part of the code is the vt102 stripping stuff tho, lol
19:34:55 <SimonRC> aren't most terminals a superset of vt102 though?
19:36:14 <calamari> well, I just went off man console_codes
19:36:37 <SimonRC> hmm
19:42:50 -!- kwertii has joined.
19:43:02 -!- EsoBot has joined.
19:43:03 <EsoBot> [bash-3.2] /#
19:43:46 <calamari> pkill telnetd
19:43:54 <calamari> oops
19:43:59 <calamari> EsoBot: pkill telnetd
19:44:27 <calamari> EsoBot: ls
19:44:53 <calamari> interesting.. I guess it takes a while for the connection to die
19:48:53 -!- EsoBot has quit (Remote closed the connection).
19:49:08 -!- EsoBot has joined.
19:49:09 <EsoBot> [bash-3.2] /#
19:49:41 <SimonRC> ok...
19:49:45 <SimonRC> EsoBot: ls /proc
19:49:50 <EsoBot> 1 221 cpuinfo kallsyms stat
19:49:51 <EsoBot> 165 27 crypto kcore sys
19:49:54 <EsoBot> 179 3 devices kmsg sysvipc
19:49:56 <EsoBot> 182 30 diskstats loadavg timer_list
19:49:58 <EsoBot> 184 4 dma locks tty
19:49:59 <EsoBot> 187 5 driver meminfo uptime
19:50:01 <EsoBot> 199 60 execdomains misc version
19:50:03 <EsoBot> 2 61 filesystems mounts vmstat
19:50:05 <EsoBot> 206 62 fs net zoneinfo
19:50:08 <EsoBot> 207 63 interrupts pagetypeinfo
19:50:09 <EsoBot> 212 buddyinfo iomem partitions
19:50:11 <EsoBot> 216 bus ioports self
19:50:14 <EsoBot> 218 cmdline irq slabinfo
19:50:17 <EsoBot> [bash-3.2] /#
19:50:18 <SimonRC> ls -ld /proc/kcore
19:50:32 <Deewiant> EsoBot: ls -ld /proc/kcore
19:50:33 <SimonRC> FAIL
19:50:37 <EsoBot> -r-------- 1 root root 33558528 Apr 19 18:50 /proc/kcore
19:50:40 <EsoBot> [bash-3.2] /#
19:50:40 <SimonRC> oops, sily me
19:50:43 <SimonRC> right...
19:50:43 <ehird> EsoBot: rm -f /proc/kcore
19:50:48 <EsoBot> rm: cannot remove '/proc/kcore': Operation not permitted
19:50:50 <ehird> EsoBot: cat /proc/kcore
19:50:51 <EsoBot> [bash-3.2] /#
19:50:54 <EsoBot> ELF44 x==CORE|CORERvmlinuxroot=0301 rw0CORE`@xxxTTN3@h@2FOth\@;;d748@0@0@AA0d` A,A88~dt~dtk5818cattd`T' @Rh98`%44SSSSSSSSSSSSWS8MA9Y.nSS
19:50:56 <EsoBot> SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSY=S
19:50:58 <EsoBot> %SSMSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSWSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSx&BPO
19:51:00 <EsoBot> >`Q5 ??U"C&"Ck6"CLD"CP\` Ph7
19:51:02 <EsoBot> "CP`P@7
19:51:02 <SimonRC> hey, thi si my turn
19:51:03 <ehird> EsoBot: echo >/proc/kcore
19:51:03 <Deewiant> EsoBot: su root
19:51:04 <EsoBot> FF0
19:51:06 <EsoBot> !MQ0000 3 .0.8 2 EQUMC -DOR M ,J"CPnf"CPPP~`0
19:51:07 <ehird> SimonRC, we must share!
19:51:08 <EsoBot> P7
19:51:08 <EgoBot> Huh?
19:51:10 <ehird> Deewiant, Already root
19:51:10 <EsoBot> FF0
19:51:13 <EsoBot> oo77|
19:51:15 <Deewiant> ehird: O_o
19:51:16 <EsoBot> 1- t ?Direct booting from floppy is no longer supported.
19:51:18 <EsoBot> Please use a boot loader program instead.
19:51:20 <EsoBot> Remove disk and press any key to reboot . . .
19:51:22 <ehird> Deewiant, It's qemu-sandboxed.
19:51:22 <EsoBot> UFHdrS%< 9t<t$s1ufhf>(UZZu)<f1)ff f
19:51:24 <EsoBot> f?fVfSf<
19:51:26 <EsoBot> ufffffff`faf[f^ffSffCffguf[fNo setup signature found...
19:51:26 <Deewiant> ah.
19:51:28 <EsoBot> fdft` uf1ffJfufffSff1fdfff1fBdfeff1ufKfudff[ff f fwdfm`ffSfffu`f$ffffuIf6ffu8fffu'ff%ffufKfuff1f[ffUfWfVfSfgfD$gfT$gf$f.gfBf=vfffffgf\$ff1f1gT$ft rftOfukM< vegf|$f<=ug?ugf\$f1f>g|$ v3gfGg8D$t*f"< v< vgf$fHf9}gfCfEf1fFfwdgfagf<$tgfff[f^f_f]fVWQfY_^fWffiQfY_ffffff@uf$ffPfh$fh)ff)fffUfWfVfSfgfL$fgfD$fgf$gf9D$}8ffPfh$fgfD$ffPfh$fpffpgf|$uf1bf%ff1f1gfD$gf(f1tfVfWfhQ%f#ffFf tffGffuf
19:51:30 <EsoBot> ffff[f^f_f]ff>H)Authuf>L)entiuf1f>P)cAMDff1ff>H)Centuf>L)aurHuf1f>P)aulsff1ff>H)Genuuf>L)ineTuf1f>P)Mx86ff1ff tf"g$gD$g<$g|$g<$tf1gfD$f%?f?ffZffVfSfftf.()fffXff fRfffZff1f f1fH)fL)fP)fHf=wMffff8)f()fff )ffff$)f> )~ffff$)fff=wff@)f,)f[f^ff1f1gf()fgf#%gf`)ftfff fAfufffUfWfVfSfgfD$gf$ff()ff1ff )fffXfffRfffZff1ft f )f~fNf/) t f )@ff`)ftff20f0gf~ff>$)f20f.();ff2gfT$gfD$f0ff()gfD$gfT$f0ffftftf`)f1gfEgf|$tf )gfT$gfgf<$tgf$gff> )~
19:51:32 <EsoBot> fuf1!f`)%fftCff[f^f_f]ffWff.ff>.u0> ?u(";.rffff"ff.ffWfVfSf>.yf.f(f%ffftf%fffTff1fTf)ffCISGf-f-f-f-ffWfSftf,ffdgvfff@-ff1f[f_ffWfVfSf1f1fp/fPAMSf ff=PAMSuufFftft ff1f.ff[f^f_ffSfff1ffgD$g|$u4tfu=<w"ufff<f1ff.f1ffZf[ffVfSf2fffNffuf1f,uf1ff[f^ffSf>.t.pf[f)fff0&f)f)fffftfV&fff1!fP&ffff,f.fffZf1f1f1 "ffVfSff1fk
19:51:33 <SimonRC> I wanted to rty this:
19:51:34 <EsoBot> gf\gfAgfgfgfgfBf vff[f^ffUfWfVfSfdfffgfL$xgf$f@tgfD$&
19:51:36 <EsoBot> gfD$&ftfgfEf"vf1ffffff0gD$ft8fyffIgD$-,ft
19:51:36 <calamari> oh for crying out loud you guys
19:51:38 <EsoBot> fIgD$+ft
19:51:40 <EsoBot> fIgD$ gD$ff gf$tfuffufIfugD$"0gfD$8gfD$ff1ffgfD$ggfD$gT"f@gfD$fugft$gfT$|f9}fff)fufg fCfgf@fg|$t
19:51:41 <ehird> calamari, Shush it's fun
19:51:42 <EsoBot> gL$gfCgf<$t*fug0fCfug0gfL$gA!gCffuf
19:51:44 <EsoBot> gT$gfCfgf@ffg0fCfHgf9D$|gfL$gfL$gD"gfCgf|$fg fCfHfffdf[f^f_f]ffUfWfVfSfgf$gfT$fff<%ugfD$ggfL$fAgfL$gf+t# t%#u;'-t0u/$gfL$gfL$gfL$gfL$ gfL$f0f wgfD$ff2*tf'gfAgfD$gfMgf}fy
19:51:46 <EsoBot> fgfL$fgfT$g:.tgfD$cgfBgfD$gJff0f wgfD$fqgfD$*u#gfBgfD$gfEgfD$fgf|$y
19:51:47 <Deewiant> 'fun'? :-P
19:51:48 <SimonRC> EsoBot: cat /dev/zero > /proc/kcore
19:51:48 <EsoBot> gfD$gfD$ghtltLtfff@gfD$gfD$g<n$<ctD<%'<XJ/<d8<i;/<stV<o<p&<u?<xgD$tg fFfOfgfEgfg fOf@ff^gf]gfT$ff)fgD$ufg fFf9gf@|ff1ggfFfBf9|fg fFfHf9|ffugfL$fgf]gft$gft$fWfgfUgfMgfUfgf+$gffg%fFf@gfL$@f1gfL$"g%fFgfD$gtgfHgfD$hf
19:51:50 <EsoBot> flugf]gfU,fhugf]gfUgD$tfgfMgfUfgft$gft$fWfff\fffgfD$gfD$gggf+4$fff[f^f_f]ffgfL$gf$gfT$gfD$f0fZffVfSfgf$gf$gf$ffffffff[f^ffSffgfff)fufCfAgug9uf1f[fff@fJg8tfuf)ffSff1fk
19:51:53 <EsoBot> gf\fBgf
19:51:55 <EsoBot> gfAf vff[ff1ffftf1ffUfWfVfSfffgf$fftf1f"ffgf9$tfMgf$fuf1fZf[f^f_f]ffWfVfSff1fUf],,f[f^f_ffWfVfSffUf]f,,f[f^f_ff><uoff>,u<<f1d,dJf><uf
19:51:58 <EsoBot> dff@f<fuff<fuf,,ffVfSfg)uAg)f<((gf9sugfCft
19:52:00 <EsoBot> fgfC gfCff(rf[f^ffVfSff<((gfYgfAf1g94uffBf9|ff(rf1f[f^ffUfWfVfSfgf$fgfD$f<(gfMgfEgfD$gfD$egyffgf;\$ufug;1tgfAfgfQff9uggf$gfgfUfgf\$gfD$fgfD$gf9D$|ff(bf<(HgS9r<ffgfKff9}&gt$gf$g2gD$gD$gfD$gfSff(rfff[f^f_f]ffVfSf1df<ftfdfgfPffgfZfffgfqffffffffffffffff ff@f fffff[f^ffVfSff=uf1BufufgfT$ffffuyfgD$.ffZf[f^ffVfSff1fffuf~f&ffNgf@f vgfCfvgfCfwfwg4fFfffuf
19:52:05 <EsoBot> ffu9f1f1,gf ff9~gfPgfPffgffAf9|ffYf[f^ffUfWfVfSff&fggf$<(f0gf$gfpf1gLuf1g|fgugDfgfft_gf$gf0gfDfPffPffPfffPfh&fff<9ufafzuf f< tfGfCgf$gf;ZWfgf$gf<$(1f[f[f^f_f]ff&fnfff tGftBftff
19:52:08 <EsoBot> ffN'f1ff=ufffffSf,f<f,f<f,f<f,f<fgff(f(f)gff9|'gfCfgff(f<f<f1f[5f[ffUfWfVfSff.,f,gf$f<gfT$f><ff<gfD$f1ygfD$f;<|fKf<f9~fgffgfT$ffff<gfT$gfBgfT$f9}f1ff)6<f sfgfD$gf$gf9D$xf<ff<ff1fUf]ff[f^f_f]ffS.f(<ffgf1fDu fffffftfSfh'ffXfZfff>)tf[f[ffUfWfVfSfffUf]fgD$f1dPtPut1<t-g|$tg|$tgD$gD$fUf]f)gfD$fZf[f^f_f]ffSff0fUf]fUf]0fUf] fUf]4fUf]ffUf]f[fffffffffVfSfffffffffffff>ffffffffffff[f^ffwfSff1fUf]4fUf]ffUf]f[>fSff1fUf] fUf]4fUf]ffUf]f[fSffgfCf<gfCf<g
19:52:14 <EsoBot> gfD$gfD$fZfYf[f^f_f]ffUfWfVfSfgf$g(f+ff1fffOffUf]Of+fffugfD$ffue@gfD$fOf1ffUf]Ou>gfD$f<fu$gf$gfBf<gfBf<f)ff1ff[f^f[f^f_f]ffWfVfS)t!fOffUf]Ouf,,,,,,,,f[f^f_ffWfVfSf
19:52:17 <EsoBot> Of1ffUf]Ou,>,f[f^f_f,#+,+,+,+,+,+,f+f,f+f,f+f,f)f,>+wfnfgffUfWfVfSfgD$ffUf]fffUf]f)fg:T$uf1,8tfUf]ffZf[f^f_f]ffUfWfVfSf,gD$f<fHfvf1f1fff(f@ff(f(ff1f(f+(ffgffffuifff fuWfuGu;fgfSu+f(fBfgfBf(g:dJgBdf@gBfEfFf<^gfD$fffYf[f^f_f]fx86-64i%d86This kernel requires an %s CPU, but only detected an %s CPU.
19:52:21 <EsoBot> This kernel requires the following features not present on the CPU:
19:52:23 <EsoBot> %d:%d WARNING: Ancient bootloader, some functionality may be limited!
19:52:25 <EsoBot> Unable to boot - please use a kernel appropriate for your CPU.
19:52:25 <SimonRC> I'm in ur sandbox, catting crap
19:52:26 -!- EsoBot has quit (Excess Flood).
19:52:29 <Deewiant> um
19:52:33 <ehird> calamari, Yeah put it in #esobot
19:52:34 <Deewiant> kcore was 33 megabytes
19:52:39 <Deewiant> ah, it died already
19:52:49 <ehird> So we don't muck up here!
19:52:54 <calamari> I pkilled it
19:52:56 <Deewiant> alternatively... implement spam limiter
19:52:56 <SimonRC> a channel for all esoteric bots?
19:53:02 <ehird> SimonRC, #esoteric-blah
19:53:10 <ehird> that's my channel
19:53:14 <calamari> the point of this point is NOt to try to destroy it
19:53:25 <calamari> it's for esolang experimentation
19:53:27 <Deewiant> the point of this point is that it's sharp and pokey
19:53:28 <ehird> calamari, Why not just put it in #esoteric-blah and let us have our fun?
19:53:36 <ehird> Honestly, if you want us to not abuse a shell, DON'T PUT ONE UP
19:53:41 <ehird> We already have EgoBot for esolangs
19:54:44 <calamari> exercise some self control
19:55:01 <ehird> calamari, The only use this channel has for a shell bot is to toy around with it.
19:55:06 <ehird> There is absolutely nothing else it does for us.
19:55:18 <calamari> ehird: really?
19:55:25 <ehird> calamari, Pretty much
19:55:34 <ehird> But it is a load of fun, so please keep it up ;)
19:55:40 <calamari> it has python.. you can code pretty much any esolang you want in that
19:55:54 <ehird> calamari, But nobody wants to.
19:55:54 <calamari> I could add a c compiler.. working on that actually
19:56:02 <ehird> calamari, No point.
19:56:08 <ehird> Now let us have our fun ;))
19:56:08 <calamari> I'm not sure you speak for everyone
19:56:35 <ehird> calamari, Everyone here has just played with it.
19:56:59 <SimonRC> indeed
19:57:09 <ehird> Nothing wrong with that.
19:57:20 <ehird> EgoBot works great, a simple irc bot is easier ... giving people python code is even easier
19:57:25 <ehird> It has no niche apart from some fun toying.
19:57:27 <ehird> But at that it's good.
19:58:21 <ehird> Now get it in #esoteric-blah because it's fun.. please? ;)
20:00:07 <calamari> ehird: by destorying it you prove nothing.. there is no challenge
20:00:18 <calamari> ehird: you're root.. game over
20:00:21 <ehird> calamari, It's fun to find new ways to do it.
20:00:32 <ehird> Besides, putting myself in a user-jail and breaking it from there sounds like something I'd do
20:01:08 <calamari> have fun writing chroot then
20:01:50 <ehird> calamari, writing chroot isn't hard
20:01:59 <ehird> now please put it up ;))
20:02:16 <calamari> I guess I need to add user accounts
20:03:03 <ehird> calamari, nooo!
20:03:06 <ehird> just make it auto-restore
20:03:15 <calamari> could still fork bomb it.. but that's about it
20:03:25 <ehird> if the telnet breaks, autorestore and reconnect
20:03:32 <ehird> calamari, if you make it unbreakable, nobody will use it for much
20:03:35 <ehird> beacuse it's all its fun/useful for
20:03:55 <calamari> according to whom?
20:04:04 <calamari> I'd like to use it for esolang experimentation
20:04:20 <Deewiant> why do you need to do it on IRC? :-P
20:04:23 <ehird> calamari, why can't you just personally use python locally?
20:04:25 <ehird> exactly
20:04:29 <ehird> nobody else is using it for experimentation
20:04:32 <ehird> we're just having fun breaking it
20:04:34 <ehird> and it IS fun
20:04:54 <calamari> Deewiant: that argument is equally applicable to EgoBot
20:05:13 <ehird> calamari, no it is not
20:05:17 <Deewiant> I know nothing of EgoBot
20:05:22 <calamari> you can run all those elsolangs locally
20:05:59 <ehird> But that is NOT the point
20:06:29 <calamari> yes it is actually.. the idea was that you could create your esolang in a private chat with esobot, then execute i
20:06:36 <calamari> t like with Egobot, publically
20:07:22 <calamari> I thought I'd made it obvious that hacking wasn't necessary, because you are root
20:07:38 <ehird> calamari, absolutely no point: When it's just a shell, I have one right here.
20:10:56 <ehird> anyway
20:11:03 <ehird> calamari, put it in #esoteric-blah once you get the C compiler up
20:11:06 <ehird> a whole new world of fun :)
20:18:27 -!- kwertii has quit.
20:21:43 <Sgeo> ehird, cal's bot is iun #esobot
20:21:56 <Sgeo> Or at least was a while ago
20:23:37 -!- okohird has quit (Remote closed the connection).
20:26:47 -!- Tritonio_ has quit (Remote closed the connection).
20:37:15 -!- mtve has joined.
20:45:46 <ehird> Hey SimonRC
20:45:56 <ehird> EsoBot wasn't responding in channel
20:46:00 <ehird> calamari said I would have to fix it
20:46:08 <ehird> So I wrote my own arbitary execution bot: http://rafb.net/p/VOZdO641.txt
20:46:13 <ehird> Then tried to 'wget' it on the esobot
20:46:15 <ehird> ... no dns!
20:46:23 <ehird> so I had to upload it to my server, get the ip, download it from there
20:46:28 <ehird> then change hte server to the ip
20:46:31 <ehird> and THEN run it from inside esobot
20:46:33 <ehird> and THEN it worked
20:48:27 <calamari> trying to catch a few more exceptions... shouldn't be long now
21:20:35 -!- oerjan has joined.
21:59:48 -!- Iskr has quit ("Leaving").
22:24:43 -!- UnrelatedToQaz has joined.
22:25:28 <UnrelatedToQaz> hey all
22:27:47 <ehird> UnrelatedToQaz: ello
22:34:06 <UnrelatedToQaz> "i hate california" is such a great song...
22:34:44 <ehird> UnrelatedToQaz: is this RelatedToEsotericProgrammingLangauges
22:40:15 <UnrelatedToQaz> hmm?
22:40:18 <UnrelatedToQaz> oh, sorry
22:40:44 <UnrelatedToQaz> i meant "java" is such a great language
22:40:48 <UnrelatedToQaz> (seriously)
22:41:36 <oerjan> i think saying that _might_ be a bannable offense in #haskell.
22:42:18 <UnrelatedToQaz> what if I say "i mean, it's so obfusticated and esoteric and weird"?
22:42:27 <UnrelatedToQaz> will they forgive me?
22:42:44 <oerjan> maybe if you put it in one line
22:43:23 <oerjan> otherwise you won't get time to say it
22:51:48 -!- Judofyr has quit.
23:00:21 * UnrelatedToQaz does some research
23:00:35 <UnrelatedToQaz> so Haskell was basically the Esperanto of functional programming languages?
23:00:44 <UnrelatedToQaz> (based on http://darcs.haskell.org/yaht/yaht.pdf)
23:00:53 <UnrelatedToQaz> p3
23:06:34 <oerjan> heh
23:06:57 <oerjan> strongly typed, lazy functional ones
23:07:15 <oerjan> *statically
23:11:26 <ehird> UnrelatedToQaz: was? is
23:11:32 <ehird> it is used for practical things.
23:11:49 <ehird> it has a very active community (for a non-major language)
23:12:00 <UnrelatedToQaz> sorry
23:12:09 <UnrelatedToQaz> reading history sections always does that to me
23:13:00 * UnrelatedToQaz continues reading
23:13:24 <UnrelatedToQaz> no! my precious side-effects and destructive updates! how shall I cope without them
23:13:41 <ehird> UnrelatedToQaz: happier.
23:15:48 <UnrelatedToQaz> ehird: I'm getting the sense that you like Haskell
23:16:03 <ehird> UnrelatedToQaz: So does oerjan. ;)
23:16:18 <ehird> also
23:16:23 <ehird> #haskell - 437 people
23:16:28 <ehird> #ruby-lang - 329
23:16:30 <ehird> QED
23:16:40 <UnrelatedToQaz> ...
23:16:59 <UnrelatedToQaz> that would be a more effective argument if I knew what ruby was
23:17:02 * UnrelatedToQaz ducks
23:17:11 <ehird> BREAKING NEWS: UnrelatedToQaz found living under rock.
23:17:26 <UnrelatedToQaz> i know, i know
23:17:39 <UnrelatedToQaz> i seem to have missed the start of this whole thing
23:17:50 <ehird> UnrelatedToQaz: ruby is a moderately good language that has got a lot of WEB TWO POINT OHH buzz lately
23:17:56 <ehird> for http://rubyonrails.org this web framewor
23:17:57 <ehird> k
23:17:59 <UnrelatedToQaz> i think i turned the wrong way at unlambda
23:18:07 <ehird> UnrelatedToQaz: Sun are supporting it etc
23:18:14 <ehird> Tim O'Reilly jumped on the bandwagon
23:18:20 <ehird> It's big right now.
23:18:34 <UnrelatedToQaz> ehird: but not as big as haskell?
23:18:53 <ehird> UnrelatedToQaz: kind of a cheat - #ruby has 196 people
23:18:55 <ehird> So add 'em up...
23:18:57 <ehird> But even so..
23:19:00 <ehird> Haskell is very alive.
23:19:23 -!- Slereah has joined.
23:19:33 <ehird> UnrelatedToQaz: Try asking in #haskell!
23:19:37 <ehird> It's friendly
23:19:45 <UnrelatedToQaz> it would be even more alive if this thing would download ghc
23:20:18 <ehird> UnrelatedToQaz: if you are, get a binary
23:20:28 <ehird> GHC compilation 1. requires a copy of GHC 2. takes around 6 hours
23:20:59 <Slereah> HASKEEEEEEEEEEEELL!
23:21:13 <ehird> Haskell scares Slereah.
23:21:17 <ehird> He tried to learn it once.
23:21:19 <Slereah> RAAAARGH
23:21:24 <Slereah> Heh.
23:21:28 <UnrelatedToQaz> he still has the scars?
23:21:34 <oerjan> he got stuck in a monad and never got out
23:21:45 <Slereah> Oh you.
23:21:50 <UnrelatedToQaz> Sounds like an episode of "The Prisoner".
23:22:29 <ehird> UnrelatedToQaz: Whenever you read 'monad', think 'warm fuzzy thing'.
23:22:30 <ehird> That is all.
23:24:19 <Slereah> But monads aren't warm or fuzzy D:
23:24:30 <Slereah> They are cold and hard.
23:24:48 <oerjan> LIES
23:26:03 <UnrelatedToQaz> aha, download's done
23:26:08 <Slereah> I got Mathematica 6 today.
23:26:16 <UnrelatedToQaz> now to endure the slownss of windows install
23:26:17 <Slereah> I hope it is awesome and all.
23:26:21 <RodgerTheGreat> cool
23:26:28 <RodgerTheGreat> I liked mathematica 5
23:26:54 <UnrelatedToQaz> slereah: I've heard of Mathematica! Is the new one good?
23:27:44 <Slereah> well, I just got it
23:27:51 <Slereah> Haven't had time to really try it out
23:28:00 <ehird> mathematica = wolfram
23:28:03 <ehird> so i am skeptical
23:28:18 <Slereah> Well, it is good and simple to do math
23:29:28 <Slereah> Not sure about programming on it though
23:33:45 <ehird> Slereah: $$$$
23:33:56 <Slereah> ehird : $0
23:34:20 <ehird> Slereah: Lucky.
23:34:42 <Slereah> No.
23:34:43 <Slereah> http://www.torrentz.com/dd1c50393c5a7a8c7f9cf59d9051f35e4a0468ee
23:34:48 <ehird> oic.
23:35:01 <ehird> is der a lunix ??
23:35:21 <Slereah> I dunno.
23:35:38 <Slereah> Probably.
23:59:36 <SimonRC> http://www.catonmat.net/blog/wp-content/plugins/wp-downloadMonitor/user_uploads/model_view_controller_song.mp3
23:59:48 <SimonRC> hmm
2008-04-20
00:00:03 <SimonRC> http://www.catonmat.net/download/model_view_controller_song.mp3 is shorter
00:04:17 <ehird> SimonRC: That guy is hilariously ridiculous
00:04:47 <ehird> "I dreamt of studying at MIT. I applied, but they rejected my application! I am angry and confused. They never told me the reason."
00:04:56 <ehird> My mother says I am a special flower! How can they reject my beautiful soul?!
00:05:42 <ehird> SimonRC: Also:
00:05:43 <ehird> http://reddit.com/info/6fi7f/comments/c03p9s7
00:05:45 <ehird> http://reddit.com/info/6fi7f/comments/c03p9t0
00:36:20 <Sgeo> ehird, what is it?
00:36:46 <ehird> Sgeo: What is ... what
00:37:01 <Sgeo> the perl code in the comment that you commented on
00:37:22 <ehird> Sgeo: Not perl code at all.
00:37:36 <ehird> It was the typical '<line noise> This perl program does X! Ha! Ha! Ha! Ha!'
00:37:49 <Sgeo> oh, I was thinking maybe it's obfuscated destructive program
00:38:21 <Sgeo> Can Perl be obfuscated to look like that?
00:39:04 <ehird> Sgeo: Yes, see Acme::Eyedrops
00:41:41 <Sgeo> How does it work?
00:51:06 <ehird> Sgeo: It uses Perl's varioous single-symbol constants
00:51:09 <ehird> $~ $| etc
00:51:12 <ehird> and regexps with eval
01:03:58 -!- jix has quit ("This computer has gone to sleep").
01:05:38 -!- UnrelatedToQaz has left (?).
01:06:35 -!- oerjan has quit ("Good night").
01:29:19 <Slereah> http://www.99-bottles-of-beer.net/language-mathematica-1090.html
01:29:21 <Slereah> Hm.
01:29:28 <Slereah> It might not be the best looking language of the world
01:42:27 -!- ehird has quit (Remote closed the connection).
01:44:55 <Slereah> Guys.
01:45:09 <Slereah> A dude is telling me he thinks APL isn't TC.
01:45:11 <Slereah> What of it?
01:52:26 <RodgerTheGreat> uhm... does he have a reason, like unbounded storage representation? I mean, it's logically complete and has flow control...
01:53:20 <RodgerTheGreat> he's probably going with the usual "OH, well computers are ALL finite state machines, so they can't be TC and APL runs on computers" bullshit, though
01:54:19 <RodgerTheGreat> and I think it's possible to make that mathematica program less ugly, although I don't have mathematica 6 on hand to experiment
02:09:14 <Slereah> Well, he wasn't sure.
02:09:27 <Slereah> So I checked here.
02:27:57 <SimonRC> Hmm, 02:26 is bedtime for me.
02:28:06 <SimonRC> I shall leave you with this 1-line Factor module that takes 60sec to compile:
02:28:09 <SimonRC> IN: testing.values USING: assocs kernel sequences ; TUPLE: asdf ; INSTANCE: asdf sequence M: asdf length drop 0 ; M: asdf nth 2drop f ;
02:55:12 <Slereah> ^z^p^x^y`````z``tky`xxi``z``tky``sb``t0y```z``t0y``v`p``tkyi``v`p``tky``xx``v``tky`p``t0y
02:55:14 <Slereah> Aaaaaaaaaaah
02:55:24 <Slereah> Writing Ackerman is maddening.
02:56:47 <Slereah> Hm.
02:57:10 <Slereah> Riddle : How come a perfectly functionning program gives me indentation errors on the python shell
02:59:38 <Sgeo> http://youtube.com/watch?v=BRG5VNNUq_E
03:02:06 * Sgeo posted the link before watching the video
03:02:19 <Slereah> I'll just reboot to der Linux.
03:02:33 -!- Slereah has quit.
03:06:14 -!- Slereah has joined.
03:08:19 <Slereah> `(``s``bb``bs``b`bs``s``bc``b`bs``c``bc``b`bc``c``bb``bc``cb`tk``siii``c``bs``cb`tk``b`sb`t0``c``bs``b`bb``b`bs``c``bb``bs``cb`t0``c``bc``b`bv``cb`tki``s``bb``bs``b`bv``cb`tk``b`c``bb``sii``b`s``bv`tk``cb`t0
03:08:25 <Slereah> Well, that's that.
03:09:27 <Slereah> Let's see if it works!
03:13:11 <Slereah> Well, A(0,0) gives me two.
03:13:19 <Slereah> This isn't a smashing success.
03:16:14 <Slereah> As well as... Everything?
03:16:17 <Slereah> Oh shit.
03:20:15 -!- calamari has quit ("Leaving").
03:44:45 -!- olsner has quit ("Leaving").
04:03:30 <RodgerTheGreat> I'm really enjoying me new copy of "Surely you're joking, Mr. Feynman!"
04:03:34 <RodgerTheGreat> *my new copy
04:03:51 <RodgerTheGreat> (unless I be a pirate, matey)
04:05:43 <Slereah> Heh.
04:06:02 <Slereah> I should buy that Feynman book about quantum gravity
04:06:16 <Slereah> But I have so much shit I still didn't finish, or at least read thoroughly.
04:06:42 <RodgerTheGreat> I'm about halfway through G.E.B., and it's nice to have something to break it up now and then
04:06:50 <RodgerTheGreat> pretty heavy reading at times
04:07:53 <Slereah> GEB?
04:09:28 <RodgerTheGreat> http://www.amazon.com/Godel-Escher-Bach-Eternal-Golden/dp/0465026567/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1208660957&sr=8-1
04:09:35 <lament> surely you're joking is a way better book than GEB.
04:09:39 <Slereah> Oh that.
04:09:54 <RodgerTheGreat> dude, seriously- if you don't own this book, buy a used copy for a couple bucks on amazon- it's awesome
04:10:28 <RodgerTheGreat> lament: it's a good book, but I don't think it's better than GEB. GEB is fascinating and enjoyable to read in ways that few books are
04:10:45 <lament> i thought geb was pretty lame :)
04:10:59 <lament> feynman is amazing though
04:11:04 <RodgerTheGreat> the whole thing is an intricate, thoughtful web of insight and brain teasers
04:11:10 <Slereah> Right now, I'm saving up for Science without numbers :o
04:11:21 <Slereah> It's out of print, so it's a whole lot of money
04:11:28 <lament> RodgerTheGreat: yes, but it's so cheezy and lame and the insight is not very deep!
04:12:26 -!- Sgeo has quit (Connection timed out).
04:13:23 <RodgerTheGreat> lament: I disagree with you, sir, but this is a battle of opinions
04:13:48 <Slereah> Does that mean that in the end, the winner is me?
04:15:29 -!- oklopol has joined.
04:17:40 <RodgerTheGreat> so it would appear
04:35:14 <oklopol> no i win.
04:35:33 <Slereah> But I win harder.
04:36:48 <oklopol> however hard you win, i always win one harder
04:37:16 <oklopol> H(me) = H(you) + 1
04:37:53 <Slereah> But if I chose infinity, we win by the same amount.
04:38:01 <oklopol> no
04:38:05 <oklopol> i win by one more.
04:38:58 <Slereah> But aleph 0 + 1 = aleph 0 :o
04:39:04 <Slereah> It has the same cardinality!
04:39:57 <oklopol> this is where i'd pin you down and start beating you
04:40:32 <Slereah> I'm aroused by that statement.
04:40:48 <Slereah> I hope this means what I think it means!
04:41:47 <oklopol> yes. you're a sick pervert
04:42:33 <oklopol> eval makes obfuscation too easu
04:42:34 <oklopol> *easy
04:42:42 <Slereah> eval?
04:43:14 <oklopol> eval usually evaluates code in whatever language you're using
04:43:21 <oklopol> like
04:44:34 <RodgerTheGreat> what would be *really* interesting would be if eval evaluated code in language *different* from the one you're using that also had an eval statement
04:44:53 <RodgerTheGreat> that could get fucked up pretty quick
04:45:15 <Slereah> What is Eval?
04:46:32 <oklopol> eval evaluates code in the language you're coding in
04:46:39 <oklopol> it takes a string, and evaluates it
04:47:06 <oklopol> if not for scoping and such, you could usually take a random line in a program, and replace with eval "origina line"
04:47:10 <oklopol> *original
04:47:15 <Slereah> A link mehby?
04:47:22 <oklopol> you don't get it yet?
04:47:46 <Slereah> I'm not quite sure.
04:47:50 <RodgerTheGreat> but the advantage is that eval can often take a string, so you can execute new code chunks at runtime. Eval is a common feature of interpreted languages
04:47:57 <RodgerTheGreat> Javascript has eval(), for example
04:47:58 <oklopol> in {eval program} program is a string, it is considered a program source, which is then interpreted as code
04:48:04 <Slereah> Oh.
05:00:37 -!- kwertii has joined.
05:26:39 -!- oklohot has joined.
05:28:42 -!- bsmntbombdood has quit.
05:44:02 -!- oklopol has quit (Read error: 113 (No route to host)).
06:04:55 -!- pikhq has quit (Remote closed the connection).
06:13:16 -!- pikhq has joined.
06:33:38 <oklohot> Slereah: the version you linked was meant to be short, this is a bit more readable http://www.99-bottles-of-beer.net/language-mathematica-378.html
06:33:47 -!- oklohot has changed nick to oklofok.
06:36:19 <RodgerTheGreat> yeah, I noticed that earlier
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:48:31 -!- Iskr has joined.
08:56:16 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
08:56:18 -!- RodgerTheGreat_ has joined.
08:59:39 -!- olsner has joined.
10:17:45 -!- oklofok has changed nick to oklopol.
10:39:27 <oklopol> okay sk seems to work in nopol now
10:39:27 <oklopol> k="<. <:> <. <::> <:>>>"
10:39:27 <oklopol> s="<. <:> <. <::> <. <:::> <: <: <:> <:::>> <: <::> <:::>>>>>>"
10:39:27 <oklopol> s=subr({"k":k,"s":s})
10:39:27 <oklopol> koed=s("""<: <: <: s k> k> <.......>>""")
10:39:47 -!- kwertii has quit ("bye").
10:39:51 <oklopol> there's a fun list rewriting system that provides scoping without closures
10:40:19 <oklopol> basically, when substitution happens at depth n, it is quoted n times
10:40:35 <oklopol> where depth is the number of functions open in the right side's substitution recursion
10:40:50 <oklopol> <: a b> applies a to b
10:42:30 <oklopol> <. a b> is a "function", it has special semantics when it is returned from a substitution
10:42:38 <oklopol> application is substitution basically, tree-rewriting
10:43:22 <oklopol> means just pattern matching arg on a and returning b with substitutions done
10:43:42 <oklopol> perhaps i should get on the negative lists now :|
10:45:34 <oklopol> if pattern matching fails, pattern-based dispatching can be done by calling functions with disjoin patterns with the arg
10:45:35 <oklopol> like
10:45:46 <oklopol> <: f1 <: f2 <: f3 arg>>>
10:45:57 <oklopol> arg will only match one, all others are identity
10:51:32 -!- Judofyr has joined.
10:59:31 <oklopol> haha, the quoting system actually seems to make it impossible to to dynamic scoping at all
11:47:26 -!- jix has joined.
13:21:00 -!- jix has quit ("CommandQ").
13:54:44 -!- jix has joined.
14:38:43 * SimonRC also likes SYJMF.
14:44:45 -!- bsmntbombdood has joined.
14:46:19 -!- timotiis has joined.
14:53:53 <SimonRC> hi * 2
14:56:22 <Slereah> Hihi
15:06:04 -!- timotiis_ has joined.
15:07:44 -!- timotiis has quit ("leaving").
15:08:14 -!- timotiis_ has changed nick to timotiis.
15:16:14 <Slereah> Lambda expressions are hard to debug.
15:21:13 <Slereah> Ahah!
15:21:19 <Slereah> A(0,0) = 1
15:21:22 <Slereah> It's a start.
15:22:35 <Slereah> And so is everything else.
15:22:37 <Slereah> Damn.
15:47:32 <Slereah> ...
15:47:32 <Slereah> Wait
15:47:32 <Slereah> Am I completely stupid?
15:47:34 <Slereah> Forgot to double the combinator D:
15:48:08 <Slereah> Still no work.
15:55:00 <oklopol> well if it's any consolation, my nopol interp worked on the first attempt
15:55:15 <oklopol> except for syntax errors and a few trivial ones
15:55:28 <oklopol> it's probably quite a consolation
15:56:22 <Slereah> Damn you and your awesome skills.
15:56:32 <Slereah> What's nopol like?
15:57:13 <oklopol> based on tree rewriting
15:57:22 <oklopol> but kinda lambda calculus too
15:57:47 <oklopol> <. a b> is a lambda, kinda
15:58:03 <oklopol> it means pattern match on a, return b with substitutions done
15:58:20 <oklopol> <: a b> calls lambda a with param b
15:58:32 <oklopol> if a isn't a lambda, or pattern matching fails, b is just returned
15:58:39 <oklopol> otherwise the result of the lambda is returned
15:58:46 <oklopol> this is the basics
15:58:59 <oklopol> i'm implementing negative lists soon, after that it might even get interesting
15:59:33 <oklopol> i did do something kinda fun for scoping
16:00:06 <oklopol> i achieve static scoping by quoting stuff in the right side of a lambda as many times as it's contained in a function there
16:00:08 <oklopol> i mean
16:00:28 <oklopol> <. <:> <. <::> <:>>> is k
16:00:39 <oklopol> <:> and <::> are just considered names08:00:48 <oklopol> if you can see how that's k, i'll continue
16:00:55 <oklopol> otherwise i'll either explain more or stop
16:02:29 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
16:02:39 <oklopol> whhhell, that was kinda rude :)
16:02:44 -!- Slereah has joined.
16:12:17 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
16:32:28 -!- ehird has joined.
16:32:33 <ehird> hello.
16:32:50 <ehird> oklopol: oh finally.
16:34:44 -!- ehird_ has joined.
16:34:44 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
16:44:15 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
16:54:27 -!- Slereah_ has joined.
17:26:01 <oklopol> finally what
17:33:57 <ehird_> oklopol: you're finally here, you've been disappeared for days
17:34:51 <olsner> oklopol: interpreter worked on the first attempt, eh? which language is it written in?
17:35:47 <ehird_> olsner: the oklotalk-- one?
17:35:48 <ehird_> if so, python
17:35:58 <ehird_> actually, always python
17:35:59 <ehird_> :-)
17:36:07 <olsner> "well if it's any consolation, my nopol interp worked on the first attempt"
17:36:30 <ehird_> Yes. Python.
17:37:36 <ehird_> <Slereah>A dude is telling me he thinks APL isn't TC.
17:37:38 <ehird_> He's an idiot
17:38:09 <ehird_> <Slereah>Riddle : How come a perfectly functionning program gives me indentation errors on the python shell
17:38:10 <ehird_> Simple!
17:38:14 <ehird_> You need extra newlines if you do:
17:38:15 <ehird_> a:
17:38:17 <ehird_> b
17:38:17 <ehird_> c:
17:38:19 <ehird_> d
17:38:23 <ehird_> so if a = def
17:38:25 <ehird_> and c = class
17:38:28 <ehird_> you need a newline between the blocks
17:39:56 <ehird_> oklopol: dude
17:40:00 <ehird_> nopol is too readable
17:40:01 <ehird_> go back to ><
17:42:10 -!- Judofyr has quit.
17:42:48 <Slereah_> I put newlines everywhere, and still does not work D:
17:43:43 <ehird_> Slereah_: show koed
17:43:55 <Slereah_> http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird%207.py
17:44:07 <Slereah_> The first problem is apparently line 285
17:45:44 -!- jix has quit ("CommandQ").
17:45:53 <ehird_> Slereah_: put newlines after each def/while/etc
17:45:59 <ehird_> def/while: two newlines
17:46:06 <ehird_> Slereah_: And <> is deprecated. Use !=
17:46:12 <ehird_> and instead of sys.stdout.write...
17:46:14 <ehird_> why not 'print'?
17:46:44 <Slereah_> Because of the newline/space with the print
17:47:54 <Slereah_> No amount of newlines seems to fix the problem
17:48:08 <Slereah_> I'll just get another interpreter.
17:48:19 <ehird_> Slereah_: Don't get another interpreter. that's silly.
17:48:20 <ehird_> Also..
17:48:24 <ehird_> in your file
17:48:26 <ehird_> put something like
17:48:29 <ehird_> help = """\
17:48:32 <ehird_> MY TEXT HERE
17:48:34 <ehird_> THE LAST LINE\
17:48:34 <ehird_> """
17:48:42 <ehird_> Slereah_: and then your block is just 'print help'
17:49:07 <Slereah_> Okay.
17:49:20 <Slereah_> Well, I don't have that problem on Linux :o
17:49:49 <Slereah_> Or on the regular Python interpreter.
17:49:54 <Slereah_> Only on the python shel
17:50:32 <ehird_> Slereah_: What is the error?
17:51:21 <Slereah_> "Inconsistent indentation detected!"
17:51:32 <Slereah_> Which is so not true dude.
17:51:34 <ehird_> Slereah_: You are indenting with both tabs and spaces.
17:51:34 <ehird_> Don't.
17:51:37 <ehird_> Use just spaces.
17:51:40 <Slereah_> Am not.
17:51:40 <ehird_> 4-space spaces.
17:51:45 <ehird_> Slereah_: And you are. Python says so.
17:51:51 <Slereah_> He lies D:
17:52:05 <Slereah_> Ah, wait
17:52:11 <Slereah_> I found a space there!
17:52:17 <ehird_> Slereah_: Good! Don't use tabs.
17:52:19 <ehird_> use spaces.
17:52:31 <Slereah_> Nah. Tabs are good.
17:53:08 <Slereah_> Wait, it seems to convert my tabs to spaces
17:53:13 <ehird_> Slereah_: Python convention sez use spaces.
17:53:13 <Slereah_> What the hell.
17:53:27 <Slereah_> Is there a big convert tabs to space buttons?
17:53:34 <ehird_> Slereah_: Yes.
17:53:41 <ehird_> Depends on your editor. :-)
17:53:46 <ehird_> Slereah_: but:
17:54:16 <ehird_> fn = 'MYPYTHONFILE'; f = open('MYPYTHONFILE').read().replace('\t', ' '); open('MYPYTHONFILE','w').write(f)
17:54:19 <ehird_> should do it
17:54:41 <Slereah_> I'm in favor of using the magic button.
17:54:47 <ehird_> Slereah_: That's a magic button.
17:54:53 <ehird_> Just replace mypythonfile with the file na,e.
17:54:54 <ehird_> And whooosh
17:54:55 <oklopol> olsner: it was my nopol interp, worked on the first attempt if you don't count trivial errors, but there were quite a lot of them
17:55:05 <Slereah_> File path, I assume
17:55:27 <ehird_> Slereah_: Yah.
17:55:29 <ehird_> Actually
17:55:32 <oklopol> also wb Slereah_
17:55:38 <ehird_> fn = 'MYPYTHONFILE'; f = open(fn).read().replace('\t', ' '); open(fn,'w').write(f)
17:55:38 <oklopol> and yes, it was python ofc
17:55:39 <oklopol> :)
17:55:42 <ehird_> Slereah_: Now you just have to change the fn one
17:56:54 <Slereah_> Wait, python accepts ; ?
17:57:19 <ehird_> Slereah_: Yea.
17:59:20 <Slereah_> "Unindent does not match any outer indentation level"
17:59:23 <Slereah_> Well, change is nice.
17:59:58 <Slereah_> I guess I'll just redo the indentation myself.
18:00:35 <Slereah_> Also the help file, that will be done.
18:01:12 <Slereah_> Any other words of wisdom?
18:01:35 <ehird_> Slereah_: Tons.
18:01:51 <Slereah_> I'm all ears.
18:01:51 <ehird_> Slereah_: Try adding some more blank lines. ;)
18:01:56 <ehird_> and <> should be !=
18:02:00 <Slereah_> Although I do also have other organs.
18:07:19 -!- ihope has joined.
18:08:09 <ehird_> ihope.. you haven't been here in a while
18:08:22 <ihope> I ought to come here more often.
18:10:27 <oklopol> so whatcha been up to?
18:11:17 <ihope> Nomics, and searching for people willing to discuss them.
18:12:46 <ehird_> oklopol: that's a good esolang idea. codify nomics
18:13:05 <oklopol> is that so?
18:13:06 <Slereah_> Nomics?
18:13:11 <oklopol> ehird_: did you read about nopol?
18:13:12 <ihope> http://nomic.info/perlnomic/, you mean?
18:13:29 <oklopol> negative lists aren't implemented yet, but enough is for it to be lc complete
18:13:32 <ehird_> ihope: NOT AN ESOLANG
18:13:45 <ehird_> oklopol: yes, <ehird_> oklopol: dude
18:13:50 <ehird_> nopol is too readable
18:13:52 <ehird_> go back to <>
18:13:54 <ehird_> (that's what i said)
18:14:01 <oklopol> hmm, what do you mean?
18:14:08 <oklopol> oh
18:14:11 <oklopol> you mean k and s there?
18:14:14 <ihope> From the Agora Nomic ruleset: "A nomic ruleset is a set of explicit rules that provides means for itself to be altered arbitrarily, including changes to those rules that govern rule changes."
18:14:29 <ehird_> oklopol: well, yeah
18:14:30 <ehird_> you have :
18:14:30 <ehird_> and .
18:14:35 <ehird_> and properly balanced stuff
18:14:38 <oklopol> : and . are for naming
18:14:43 <ehird_> go back to < >< <>< > <> >
18:14:48 <oklopol> proper balancing is for not yet having negative lists
18:14:53 <ehird_> charset='<','>',' '
18:14:56 <oklopol> hmm...
18:15:01 <ehird_> it would be far more awesome
18:15:11 <ihope> What is nopol?
18:15:11 <oklopol> hmmhmm
18:15:25 <oklopol> atm, : and . are used for tagging lists with a name
18:15:38 <ehird_> oklopol: kind of violates the conceptual purity though doesn't it
18:15:39 <ehird_> i mean
18:15:42 <ehird_> analyze my character set
18:15:46 <oklopol> but i guess you could replace that with an arbitrary tree as the first element
18:15:48 <ehird_> we have the leftness
18:15:52 <ehird_> and the rightness
18:15:54 <ehird_> balancing themselves out
18:15:56 <ehird_> to describe things
18:15:57 <ehird_> and the space
18:15:59 <ehird_> to seperate them
18:16:54 <ihope> ehird_: what do you mean when you say "NOT AN ESOLANG"?
18:17:03 <ehird_> ihope: perl
18:17:07 <oklopol> well, i would like to do something "cleverer" than encoding lc into tree rewriting
18:17:13 <ehird_> also, ihope, does it enforce the rules?
18:17:15 <oklopol> but as that isn't all that easy
18:38:54 <oklopol> it's always hard for me not to have my langauge be tc right away
18:41:20 <ehird> alright
18:41:22 <ehird> :P
18:41:26 <oklopol> thanks :)
18:42:05 <oklopol> because how could i ever do something not everyone is completely satisfied with.
18:45:11 <oklopol> not all rewriting rules make sense with tagging
18:45:18 <oklopol> also negative lists forget all about them
18:45:40 <oklopol> so they aren't really all that beautiful in the same sense as the lists themselves, and the parsing rules
18:45:48 <oklopol> which are of course genious
18:46:14 <oklopol> *us
19:02:50 -!- Sgeo has joined.
19:32:58 <ehird> oklopol: i just wrote an API for dictionaries in python
19:32:59 <ehird> i mean
19:33:01 <ehird> word dictionaries
19:33:01 <ehird> :P
19:33:14 <ehird> it uses http://ninjawords.com/!
19:39:38 -!- Judofyr has joined.
19:40:12 <SimonRC> Judofyr: hi
19:40:18 <Judofyr> SimonRC: hi :)
19:46:25 <ehird> oklopol: not interested? ;)
19:51:16 <ehird> oklopol: oh well, here it is http://rafb.net/p/qYWaAg73.html
19:51:21 <ehird> you can use it from the command line
19:51:25 <ehird> 'python ninjawords.py hello world bar'
19:51:27 <ehird> or
19:51:30 <ehird> >>> import ninjawords
19:51:39 <ehird> >>> ninjawords.define('hello', 'world', 'bar')
19:51:50 <ehird> ninjawords.define_one('foo') spares you the dictionary
19:52:03 <ehird> you can unicode()/str() words and entries
19:52:08 <ehird> and get the word name .word
19:52:10 <ehird> the entries .entries
19:52:15 <ehird> or the link to wiktionary if applicable .link
19:52:23 <ehird> the entries have .definition (the definition text)
19:52:27 <ehird> and .examples (None or the examples text)
19:52:32 <ehird> simple
19:53:10 <SimonRC> nice screen-scraping :rolleyes:
19:57:10 <ehird> SimonRC: yes :P
19:57:15 <ehird> nothing wrong with that, though
19:57:20 <ehird> ninjawords itself scrapes from wikiquote
19:57:35 <SimonRC> um, wow
19:57:55 <ehird> err
19:57:56 <ehird> wiktionary
19:57:57 <ehird> ofc
19:58:05 <oklopol> okokok
19:58:06 <oklopol> *o
19:58:14 <ehird> also
19:58:18 <ehird> i just made the API less horrific
19:58:19 <ehird> yey
19:58:20 <ehird> http://rafb.net/p/ShO6Qb79.html
19:58:26 <ehird> now define() doesn't return a silly dictionary
19:58:38 <ehird> define('hello','world','abc') => [defn of hello,defn of world,defn of abc]
20:00:50 -!- Judofyr_ has joined.
20:00:50 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
20:01:58 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
20:02:01 -!- Slereah_ has joined.
20:02:28 <Slereah_> [21:01] <Slereah_> I'm drinking some juice out of a Klein bottle.
20:02:28 <Slereah_> [21:01] <Slereah_> How awesome is this?
20:02:32 <Slereah_> Was I saying.
20:05:37 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
20:05:47 -!- Slereah_ has joined.
20:10:51 -!- fizzie2 has joined.
20:10:51 -!- fizzie has quit (Read error: 104 (Connection reset by peer)).
20:11:03 <ihope> A nomic game over IRC could be interesting.
20:11:53 <ihope> We could make it quite fast-paced if we wanted to. Propose a rule change and five minutes later, it's either passed or failed.
20:17:57 <ihope> Anyone interested?
20:18:02 <ehird> Probably not :P
20:18:05 <ehird> But.
20:18:06 <ehird> Sounds interesting.
20:18:14 <ihope> :-P
20:18:23 <ehird> #ircnomic?
20:18:43 <ihope> Sounds good.
20:18:45 <ehird> http://rafb.net/p/SxwM0e29.html ninjawords api v34348234
20:22:43 <pikhq> It's been done.
20:22:58 <ihope> Has it?
20:23:08 <pikhq> Don't remember a specific example ATM.
20:37:01 -!- Judofyr has joined.
20:37:01 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
20:39:26 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
20:41:59 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
20:42:28 -!- Judofyr has joined.
20:51:54 -!- Iskr has quit ("Leaving").
21:03:11 -!- timotiis has joined.
21:10:12 -!- jix has joined.
21:15:35 -!- calamari has joined.
21:15:37 <calamari> hi
21:16:04 <SimonRC> hi
21:27:10 -!- oerjan has joined.
21:31:52 <ehird> made the system allow >65336 bytes outputs (this is the limit of linux pipe) for this this challenge. thanks yshl for investigating.
21:31:55 <ehird> that challenge is mine
21:31:55 <ehird> ;)
21:32:01 <ehird> i made shinh fix golf! yay
22:28:42 -!- olsner has quit ("Leaving").
22:36:48 -!- Slereah_ has joined.
22:42:10 <Sgeo> Hihopehird
22:42:34 <ehird> heh
22:42:40 <Slereah_> You're on a budget for bits?
22:46:59 -!- atsampson has quit ("network card replacement").
22:58:04 -!- jix has quit ("CommandQ").
23:01:32 -!- atsampson has joined.
23:01:46 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
23:03:52 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
23:04:19 -!- Judofyr has joined.
23:13:17 * SimonRC goes to bed. ("Brazil thinks you're cute.")
23:18:24 -!- Quendus has changed nick to Parma_Quendion.
23:36:29 -!- Slereah_ has joined.
23:38:36 <ehird> SimonRC: Well, the USA thinks you're fat.
23:40:55 <oerjan> darn, then he must be enormous
23:41:05 <ehird> Exactly.
23:41:18 -!- ehird has set topic: http://tunes.org/~nef/logs/esoteric/ | Made of fluffy bell rings and envelope tings..
23:41:27 <ehird> No, I don't know what a ting is.
23:42:23 * oerjan thought that was a quote but it's not googlelicious
2008-04-21
00:00:18 <ehird> oerjan: No, but it does sound nice.
00:01:21 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
00:02:17 * oerjan now knows what a ting is, and thinks it should have been on the bell
00:22:53 -!- Slereah_ has joined.
00:28:41 <ehird> oerjan: Envelopes can't ring.
00:28:57 <oerjan> they cannot ting either
00:29:17 <ihope> They can if they have a silver lining.
00:29:46 <oerjan> which of course there always is
00:30:02 * Sgeo wonders why oerjan isn't in #ircnomic
00:31:10 -!- oerjan has quit ("Because i'm going to bed").
00:49:38 -!- timotiis has quit (Read error: 110 (Connection timed out)).
01:26:57 -!- ehird has quit (Remote closed the connection).
02:21:21 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
02:21:53 -!- Judofyr has joined.
04:05:16 <Slereah_> Two more BF clones? :o
04:05:19 <Slereah_> Will this never end?
04:08:00 <RodgerTheGreat> unlikely
04:08:25 <Slereah_> We need a new flag languag.
04:08:26 <Slereah_> e
04:08:57 <Slereah_> Something bold.
04:08:59 <Slereah_> Exciting.
04:09:05 <Slereah_> Turing complete!
04:09:44 <Slereah_> It should have a simple instruction set, and intuitive concept!
04:16:58 <Slereah_> Let's make an ESO meeting.
04:17:09 <Slereah_> Who's the PR guy of ESO?
04:18:25 <RodgerTheGreat> /// is my vote
04:18:33 <RodgerTheGreat> it's simple, intuitive, elegant
04:18:46 <RodgerTheGreat> unfortunately it's only vaguely possible that it's TC
04:19:20 <RodgerTheGreat> ais523 and I have done a bit of work on a proof-of-concept halting loop, but no real luck so far
04:36:50 <RodgerTheGreat> I'll interpret the lack of response as Slereah_ going completely insane trying to use ///.
04:37:43 <Slereah_> Well, it's 5AM here.
04:37:47 <Slereah_> So I'm not trying anything
04:38:08 <RodgerTheGreat> ah
04:41:55 <Slereah_> Looking at it, the 99 doesn't seem very loopy indeed.
04:44:59 <RodgerTheGreat> it's a simple compression algorithm, not really a loop
04:49:59 <RodgerTheGreat> clever, yes, but far less interesting
04:50:51 <RodgerTheGreat> the main reason I think /// ought to be TC is because the find-and-replace operation *itself* has to do looping and some conditional branching
04:51:41 <RodgerTheGreat> it's also possible to construct simple logic gate like things, but making them arbitrarily extensible (or resetable) is tricky
04:59:25 -!- Judofyr_ has joined.
04:59:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
05:22:37 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
05:54:47 -!- Sgeo has quit ("Ex-Chat").
06:01:05 -!- olsner has joined.
06:37:44 -!- calamari has quit ("Leaving").
06:47:06 -!- Judofyr has joined.
07:03:41 -!- jix has joined.
07:19:49 -!- Judofyr has quit.
07:49:47 -!- GreaseMonkey has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:04:01 -!- Iskr has joined.
08:46:25 -!- sebbu2 has joined.
08:56:05 -!- olsner has quit ("Leaving").
09:03:41 -!- sebbu has quit (Read error: 110 (Connection timed out)).
09:19:11 -!- jix has quit ("CommandQ").
09:28:47 -!- immibis has joined.
09:29:26 <immibis> immybo would ask "is anyone here any good with microsoft paint?" but he can't be bothered coming online.
09:29:48 <immibis> and wtf is a fluffy bell ring or an envelope ting?
09:53:08 -!- immibis has left (?).
10:47:46 -!- GreaseMonkey has quit ("Unisex.").
10:54:57 -!- pikhq has quit (Read error: 110 (Connection timed out)).
11:04:28 -!- Corun has joined.
11:56:53 -!- ais523 has joined.
12:10:11 <ais523> ais523: ping
12:10:29 <ais523> [CTCP] Received CTCP-PING reply from ais523: 42 seconds.
12:10:37 <ais523> OK, there's definitely something up with the wireless
12:10:51 <ais523> and that was without me manually editing the timestamp, by the way, and using a proper IRC client
12:17:07 <AnMaster> ais523, hi, you got the mail I sent a few days ago?
12:17:15 <AnMaster> ais523, about ick failing to compile on freebsd
12:17:31 <ais523> AnMaster: yes, did you get my reply?
12:17:35 <AnMaster> ais523, nop
12:17:51 <AnMaster> oh wait it *just* arrived
12:17:57 <AnMaster> right when I hit enter
12:18:03 <ais523> I'll try resending it
12:18:38 <AnMaster> ais523, err ^
12:19:06 <ais523> yes, I hit 'stop' on my webmail program when I read that, not sure whether it resent or not
12:19:23 <AnMaster> real name or nick, hm in a intercal... hm good question...
12:19:31 <AnMaster> nick in that case I think
12:19:37 <ais523> everyone else has used their real name so far, as it happens
12:19:47 <AnMaster> well use the real name then
12:20:08 <ais523> except for the people who created the Atari distribution, who are completely anonymous
12:20:58 <AnMaster> by the way, your mail client does "include original message in reply" in an unusual way
12:21:32 <AnMaster> it seems to include it at the end of the signature, and without the normal > in front of the lines
12:21:39 <ais523> AnMaster: I know
12:21:48 <AnMaster> what client is it?
12:21:52 <ais523> Exchange
12:21:59 <ais523> believe it or not, that's what it does in plain-text view
12:22:00 <AnMaster> eww
12:22:03 <ais523> I don't use it through choice
12:22:19 <ais523> fun fact: the webmail version of Exchange works properly in Firefox but not in IE
12:22:27 <AnMaster> eh what?
12:22:35 <AnMaster> is it an old exchange version or something
12:22:39 <ais523> it detects that the browser isn't IE
12:22:56 <ais523> and so falls back to text which doesn't use super-proprietary Microsoft extensions which also happen to be buggy
12:23:04 <AnMaster> ahaha
12:23:14 <ais523> I just get a JS error when I try it on IE sometimes, although other times it works fine
12:23:27 <ais523> I think it's something to do with the IE version or patchlevel, but I don't particularly care
12:24:02 <AnMaster> hm
12:25:40 -!- Corun has quit ("This computer has gone to sleep").
12:28:42 <AnMaster> ais523, the mail says "3 and a half bug"
12:28:44 <AnMaster> hm
12:29:01 <AnMaster> lets see, 1) 64-bit issue, 2) freebsd issue 3) ???
12:29:05 <ais523> the FTBFS on FreeBSD and Mac OS X were the same bugs
12:29:41 <ais523> --prefix
12:29:48 <ais523> and a typo in the documentation for -b
12:29:48 <AnMaster> ais523, maybe try autoscan, it generates a configure.scan file with tests it think are needed, could be useful for see if something is missing in configure.ac
12:29:56 <ais523> AnMaster: I did, and used it as a guide
12:30:03 <AnMaster> ah
12:30:05 <ais523> when I redid the autoconfiguration
12:30:29 <ais523> I've rewritten quite a bit of the file to allow for proper --prefix sandboxing, though
12:30:35 <AnMaster> by the way, does any system lack stdargs.h these days?
12:31:12 <ais523> AnMaster: not as far as I know, but CLC-INTERCAL still supports Baudot and punched cards, and maintaining compatibility as far back as possible is a running INTERCAL in-joke
12:31:23 <AnMaster> ok
12:31:34 <AnMaster> what is "baudot" btw?
12:31:38 <ais523> I've never come across a single INTERCAL program written in EBCDIC, but C-INTERCAL + convickt could run it if possible
12:31:47 <ais523> baudot was a 5-bit character set used by teletypewriters
12:31:58 <ais523> so slightly more advanced than Morse Code, but not by much
12:32:07 <ais523> I think it predates networked computers, but am not sure
12:32:24 <AnMaster> ok...
12:33:01 <ais523> according to Wikipedia, it was proposed in 1874, and the advanced version with shift codes was implemented around 1901
12:33:06 <ais523> so old indeed
12:33:21 <AnMaster> did computers use it?
12:34:23 <ais523> not sure, it was mostly a teletypewriter code
12:34:30 <AnMaster> ok
12:34:46 <ais523> it's a bit awkward to use in computers due to the shift codes involved
12:34:57 <AnMaster> shift codes is?
12:35:12 <ais523> 5-bit characters aren't enough to encode all the character set by themselves
12:35:19 <AnMaster> indeed
12:35:30 <ais523> so some characters are reserved as shift characters which modify the meanings of future characters
12:35:37 <AnMaster> ah I see
12:35:54 <ais523> ordinary Baudot has a shift to interpret characters as letters, and a shift to interpret characters as numbers/punctuation
12:36:24 <ais523> CLC-INTERCAL extended Baudot allows double-shift-codes that do lowercase letters and characters from the INTERCAL character set that aren't in the standard punctuation set
12:36:57 <AnMaster> well maintaining ick must be painful
12:37:17 <ais523> the Baudot stuff's in a separate file
12:37:31 <ais523> clc-cset.i handles all the CLC-INTERCAL character sets, and everything else is done in Latin-1, ASCII, or UTF8
12:37:32 <AnMaster> even so, in general I mean
12:37:48 <ais523> anyway, there's an interesting caveat with your --prefix problem:
12:37:55 <AnMaster> ais523, err, you do the conversion in intercal?!
12:38:05 <ais523> AnMaster: no, in C
12:38:12 <ais523> it certainly could be done in INTERCAL
12:38:13 <AnMaster> "<ais523> clc-cset.i handles all the CLC-INTERCAL character sets..."
12:38:20 <AnMaster> sounds like you meant .c?
12:38:24 <ais523> yes, I meant .c
12:38:26 <ais523> sorry
12:38:27 <AnMaster> ah
12:38:36 <AnMaster> ok, what's the problem with --prefix?
12:38:55 <ais523> in order to install Info documentation, you need to modify /usr/share/dir (locations vary)
12:39:08 <ais523> but by default the prefix is /usr/local, so the documentation can't be installed
12:39:18 <AnMaster> iirc you only need to modify the "dir" file in the same directory that you install in
12:39:27 <ais523> AnMaster: there is only one "dir" file on the system
12:39:36 <ais523> at least on my laptop
12:39:43 <ais523> if there is a "dir" file on the system, great
12:39:56 <AnMaster> err...
12:40:01 <AnMaster> there are several here
12:40:05 <ais523> s/system/prefix directory/
12:40:12 <AnMaster> /usr/share/info/dir
12:40:12 <AnMaster> /usr/share/info/emacs-22/dir
12:40:15 <AnMaster> /usr/share/binutils-data/x86_64-pc-linux-gnu/2.17/info/dir
12:40:16 <ais523> AnMaster: so that method will work on your laptop
12:40:18 <AnMaster> and so on
12:40:24 <ais523> s/laptop/computer/
12:40:26 <ais523> (sorry)
12:40:44 <AnMaster> ais523, I think there is a list of the dir files somewhere central
12:40:57 <ais523> on setups like mine where the prefix doesn't contain a dir file (as would happen with your create-this-for-me prefix)
12:41:02 <AnMaster> /etc/env.d/00basic:INFOPATH="/usr/share/info"
12:41:04 <AnMaster> /etc/env.d/50emacs:INFOPATH=/usr/share/info/emacs-22
12:41:06 <AnMaster> yep
12:41:06 <ais523> I now don't install into the main documentation tree
12:41:10 <AnMaster> and env-update builds the list
12:41:12 <ais523> by default, at least
12:41:19 <AnMaster> at least on gentoo
12:41:25 <AnMaster> ais523, so there can indeed be more than one dir file
12:41:27 <ais523> I instead give a warning saying that the Info stuff won't be installed because the dir file isn't inside the prefix
12:41:42 <ais523> AnMaster: can be, but on some systems isn't, and I need to handle those
12:42:07 <AnMaster> ais523, anyway on gentoo an ebuild should never touch the dir file, it is regenerated by some system scripts when needed
12:42:09 <ais523> if the user wants to install to the dir tree anyway (outside the prefix), they can request that by symlinking a dir file from inside the prefix to outside
12:42:45 <ais523> for the man database, there's a much simpler method: I only regenerate that if you install as root
12:43:09 <ais523> and otherwise leave it alone for maintenance scripts to update
12:43:34 <AnMaster> ais523, so if ick ever becomes a gentoo package, it would error out with something like: "error can not install this package, it is trying to overwrite a file it shouldn't" I think
12:43:54 <ais523> the people who packaged it would just comment out those lines
12:43:57 <AnMaster> or that may only happen when the file is owned by some other package, in this case it may not detect it as the file doesn't below to any package
12:44:13 <ais523> besides, I check for install-info in the config script, if it isn't there I assume it isn't needed
12:44:27 <AnMaster> install-info does exist
12:44:53 <AnMaster> ais523, man database?
12:44:58 <ais523> check for mandb too
12:45:04 <ais523> but only use it if the install process runs as root
12:45:28 <AnMaster> err, you mean for apropos?
12:45:44 <ais523> yes
12:45:58 <AnMaster> there is no mandb command
12:46:05 <ais523> well, I check for it
12:46:10 <ais523> and if it isn't there I assume it isn't needed
12:46:32 <AnMaster> makewhatis is used to generate the db
12:46:36 <AnMaster> at least on gentoo
12:46:41 <AnMaster> and it is in a cron script
12:47:10 <ais523> it's in a cron on Ubuntu too, but it's hardly userfriendly to install documentation with no obvious way to access it
12:47:25 <ais523> (less severe for man than for install-info, because typing man directly would work)
12:47:25 <AnMaster> um? man ick?
12:47:33 <ais523> yes, man ick works
12:47:58 <AnMaster> for telling man to search the right dir, well it's MANPATH set in /etc/env.d/somefile on gentoo
12:48:11 <ais523> manpath's rarely a problem
12:48:28 <AnMaster> so if you needed a custom one, you could install say /etc/env.d/60ick or something like that
12:48:32 <ais523> apart from mandb sometimes picking up two copies of man pages in /usr/local because it finds them both via a symlink and the realpath
12:48:43 <ais523> and I don't need a custom man directory
12:48:45 <AnMaster> well mandb is stupid then?
12:48:50 <ais523> AnMaster: yes, it is
12:49:02 <AnMaster> whatever "makewhatis" is, I think it is smarter
12:50:01 <AnMaster> ais523, anyway, why a symlink?
12:50:16 <ais523> I didn't put it there, it's in the default directory structure
12:50:26 <ais523> it's something like /usr/local/man to /usr/local/share/man
12:50:27 <AnMaster> of what? debian?
12:50:35 <ais523> Ubuntu, so presumably Debian
12:50:51 <AnMaster> hm gentoo got that too heh
12:51:53 <ais523> probably to increase portability of installs
12:52:05 <ais523> install-info is arguably broken when installing to a symlink, anyway
12:52:09 <AnMaster> ais523, btw want me to try to compile ick on openbsd? I can do that later this week
12:52:19 <ais523> AnMaster: the more operating systems the better
12:52:33 <ais523> actually, I should probably send the patched development somewhere
12:52:39 <ais523> to make this a bit less cathedral-style
12:52:58 <AnMaster> try version control, distributed version control should fit you perfectly
12:54:02 <ais523> yes, likely a good idea
12:54:38 <AnMaster> ais523, of course, if you really do need it on dos......
12:54:42 <ais523> my current version control is reasonably frequent .tgz snapshots (getting more frequent in the run-up to a release), and setting Emacs to backup files in a directory other than the originals
12:55:04 <ais523> AnMaster: I just copy the .tgz to DOS, and test it there, and if it fails change some things and test the resulting source on Linux, etc., iterating to a solution
12:55:41 <ais523> the other-directory thing, by the way, is so I don't lose work typing 'rm *' (I once deleted all my files about Underlambda that way, which is why I set up the separate-directory backup)
12:56:06 <ais523> I didn't mean to type rm *, it was a typo, but it's something that it's useful to be protected against
12:57:00 <AnMaster> well... version control would also help
12:57:14 <ais523> yes, it would
12:57:21 <ais523> I may switch to that when I have the time
12:57:34 <ais523> probably using darcs, because that's installed here already and I have a vague idea of how to use it
12:58:24 <AnMaster> it isn't hard really, like 1-2 minutes. start with a clean source copy. (no *.o and such), run the command to make a repo, for bzr it is: bzr init, other ones are similar
12:58:53 <AnMaster> then bzr add . for bzr, to add recursively. commit. then build. see what "unknown files" are listed, and add those to the ignore list
12:59:01 <AnMaster> bzr ignore "*.o" for example
12:59:14 <AnMaster> then commit the ignores when you are happy with them
12:59:28 <ais523> should I include temp/parser.c, temp/lexer.c and temp/oil.c?
12:59:32 <AnMaster> ais523, the exact commands differ between bzr/hg/git, but the basic idea is the same
12:59:35 <ais523> they're compiled from yacc and lex files
12:59:47 <AnMaster> ais523, generated files should probably not be included
12:59:48 <ais523> but I include them in the distribution for DOS users without yacc or lex
13:00:13 <AnMaster> I don't include configure, only configure.ac, HOWEVER, in a distributed tar ball I include configure
13:00:18 <AnMaster> ie, make dist
13:00:30 <AnMaster> you can make automake handle the make dist
13:00:35 <ais523> makes sense
13:00:43 <ais523> although I don't use automake
13:00:47 <AnMaster> to generate a directory ready to be distributed, then tar it up
13:00:53 <AnMaster> well, something similar then
13:00:58 <AnMaster> a shell script or whatever
13:01:31 <ais523> presumably it /can/ handle the need to generate a compiler compiler from source (using yacc as a compiler compiler compiler), then using it to compile the compiler
13:01:34 <ais523> but I don't want to try
13:01:36 <AnMaster> you can export clean copies, bzr export, don't know the commands for the other ones
13:01:53 <AnMaster> then run some shell script to generate the missing files, ie: configure, your *.c files and such
13:01:56 <ais523> for tarring up for me, it's make distclean, then ls -R1 > MANIFEST.txt, then tar it up
13:02:19 <AnMaster> ais523, well, make distclean could leave some *~ files or such around possibly
13:02:20 <ais523> sh etc/ctrlmfix.sh too if I've been editing on DOS to try to fix the line endings
13:02:29 <ais523> AnMaster: my distclean removes *~ files
13:02:45 <ais523> but I generate those in a separate directory nowadays, as I said earlier
13:02:45 <AnMaster> while a command like bzr export, only export the version controlled files
13:02:55 <AnMaster> something like:
13:03:01 <AnMaster> #!/usr/bin/env bash
13:03:24 <AnMaster> rm -rf dist; mkdir dist && bzr export . dist
13:03:27 <AnMaster> cd dist
13:03:30 <AnMaster> autoreconf
13:03:39 <AnMaster> <command to generate the *.c files>
13:03:55 <AnMaster> echo "Done, now rename it to the ick-1.2.3.4 and tar it up!"
13:04:11 <AnMaster> autoreconf generates the configure files and so on
13:04:23 <AnMaster> much better than the older way with a complex ./autogen.sh
13:04:33 <AnMaster> ais523, see the basic idea :)
13:04:58 <AnMaster> actually not sure if you need to mkdir it before exporting, could depend on what version control system and so on
13:05:17 <ais523> the best thing about version control is that I can still do things with my makefile if needed
13:05:25 <ais523> just letting version control handle controlling versions
13:05:28 <AnMaster> ais523, even if there are no *~, there could be other things, say *.orig from a patch or so on
13:05:40 <ais523> I go over the MANIFEST by eye
13:05:44 <AnMaster> hm?
13:05:49 <AnMaster> ah
13:05:54 <ais523> I don't like stray files littering the src directory anyway
13:06:07 <ais523> and I may need to take action concerning them
13:06:20 <ais523> so I find doing it manually to be useful
13:06:25 <AnMaster> well then bzr ignored could list all ignored files, again similar commands exist for other programs
13:07:23 <ais523> it's also nice to be reminded at the same time of all the files which are there
13:07:35 <AnMaster> ais523, anyway, generating files for a tar ball should be quite easy :)
13:07:39 <ais523> yes, it's easy both ways
13:09:26 <AnMaster> and then you need some place to put the repo, some webspace, depending on what version control system you select the needs are different, for example bzr can work with a "dumb" webserver, ie, no special configuration. you can send file over by, scp or ftp to upload
13:09:42 <AnMaster> hg prevers some cgi script to work well
13:09:48 <AnMaster> git I don't know
13:10:01 <AnMaster> ais523, but there are hosting sites for them
13:10:17 * ais523 is annoyed at darcs and mySQL for erroring on -ise spellings and accepting -ize
13:10:22 <AnMaster> bzr: launchpad, which should fit you as an ubuntu user
13:10:23 <ais523> how am I meant to remember which to use?
13:10:33 <ais523> it's as bad as the COLOR/COLOUR in BASIC
13:10:36 <AnMaster> err?
13:10:42 <AnMaster> ais523, what?
13:10:55 <AnMaster> I use Brittish English in my programs
13:11:13 <ais523> yes, but my gripe is with keywords which differ in American and British English
13:11:16 <ais523> they should accept both spellings
13:11:38 <ais523> using British English in the Win32 API will cause loads of link errors, for instance
13:11:39 <AnMaster> well I assume intercal does that?
13:11:55 <ais523> AnMaster: I think all INTERCAL keywords are dialect-agnostic
13:12:20 <AnMaster> ais523, well why not POSIX, most of the time it isn't full words
13:12:22 <ais523> and internal identifiers tend to be abbreviated anyway
13:12:42 <AnMaster> just stuff like memcmp instead of memory compare (that may actually be ANSI C rather than POSIX, not sure)
13:12:52 <ais523> have you seen SQL, by the way? It seems even better than Cobol as a candidate for the language INTERCAL's statement syntax was parodying
13:12:56 <AnMaster> windows would have called it MemoryCompareEx
13:13:02 <ais523> AnMaster: heh
13:13:14 <AnMaster> ais523, I used some sql yes, mainly postgresql
13:13:19 <ais523> you're right, of course
13:13:39 <ais523> my favourite SQLism: ANY and SOME do the same thing
13:13:55 <AnMaster> but nothing apart from the basic SELECT/INSERT/UPDATE/DELETE stuff
13:14:04 <ais523> so you can write `column` = ANY (...) and also `column` <> SOME (...)
13:14:12 <ais523> so it flows more naturally in English, you see...
13:14:14 <AnMaster> ais523, done some sqlite too
13:14:16 <ais523> it's almost as bad as PLEASE
13:14:41 <AnMaster> I don't remember what ANY or SOME does
13:15:05 <ais523> mysql> help analyse;
13:15:05 <ais523> Name: 'PROCEDURE ANALYSE'
13:15:11 <ais523> mysql> help analyze;
13:15:11 <ais523> Name: 'ANALYZE TABLE'
13:15:14 <ais523> that really is bad
13:15:20 <AnMaster> yeah indeed
13:15:22 <AnMaster> report a bug?
13:15:34 <ais523> can't be bothered right now
13:16:11 <ais523> I might at some point, but I'm just using mysql to learn SQL because it's what I happened to get when collecting dependencies
13:16:35 <ais523> (I'm learning how to write server-side web applications at the moment, so I installed MediaWiki for the dependencies.)
13:17:36 <ais523> anyway, expr op ANY (list) returns TRUE expr op value is TRUE for any value in the list
13:17:43 <ais523> and SOME does exactly the same thing as ANY
13:17:50 <AnMaster> ok
13:18:41 <ais523> the other related operator is ALL, which does what you'd probably expect given the above description
13:19:49 <ais523> (incidentally, J's 'you never need a loop' philosophy is taken even further to the extremes in SQL)
13:20:06 <AnMaster> by the way, a MemoryCompareEx on windows would take 7 arguments, three of them are pointers to structs with unions in them with even more parameters
13:20:07 <ais523> SQL is almost Turing-complete, but there's no way to write an infinite loop without extensions, I think
13:20:19 <ais523> I've seen a LOOP statement but don't know if it's standard
13:21:04 <ais523> AnMaster: thinking about what they'd likely do, two would be handles to the memory pages the memory is allocated in, two would be offsets within the pages, and one would be a pointer to a struct describing the request and setting parameters, so I'd guess 5 params
13:21:18 <ais523> actually, 6, because the Ex normally means they had to add an extra parameter at some point
13:21:24 <AnMaster> ah right
13:21:53 <ais523> (adding extra params to the struct is backward-compatible in Windows API because they have to list the sizeof the struct as its first element)
13:22:15 <AnMaster> huh, that's insane
13:22:56 <ais523> I've been known to use that technique for binary file formats I create, when I feel like creating a binary file format (usually as the save file for a game)
13:23:20 <AnMaster> hm, a version number is saner
13:23:24 <ais523> but if doing it in an API is a good idea, you've got more fundamental problems elsewhere
13:23:29 <ais523> such as API bloat
13:24:44 <AnMaster> ais523, consider how inspircd does protocol for example, in the initial protocol negotiation the servers send protocol version numbers, if they don't match they abort the link
13:25:11 -!- Corun has joined.
13:25:20 <ais523> well, I don't intend to change the file format once I've finished initial development
13:25:23 <AnMaster> I think the current protocol version is 1105, 11 for 1.1, and 05 for the 5th revision since 1.1.0 was released
13:25:35 <AnMaster> all of them happened in early versions
13:25:45 <ais523> but I use the save files to help test things, and it would be a bit awkward to have to continuously replay the games every time I changed their format
13:25:53 <ais523> so I put auto-update-from-older-version code in
13:26:08 <AnMaster> what games are these?
13:26:54 <AnMaster> anyway the normal way of handling it is adding some form of cheat mode while developing
13:27:01 <ais523> little toy things that have never been released
13:27:05 <ais523> there are cheat modes too
13:27:17 <ais523> but having a consistent game state is more useful
13:27:30 <ais523> as well as allowing me to develop the program and map/levels simultaneously
13:27:30 <AnMaster> for example supertux got a console that lets you run things in the script language it use (squirrel)
13:27:44 <ais523> one of my games stored all its information in binary
13:27:47 <AnMaster> ais523, oh and why binary formats?
13:27:54 <ais523> and you could type a cheat combination and type in raw hex
13:27:56 <AnMaster> supertux use S-Expressions :D
13:28:24 <AnMaster> binary formats is harder to maintain
13:28:35 <ais523> binary formats because it saves atoi overhead, and because breaking portability is sort-of what you want with games
13:28:46 <AnMaster> you want that?
13:28:49 <ais523> you don't want it easy for the user to edit the save file either
13:29:32 <AnMaster> hm
13:29:43 <AnMaster> ais523, well level files shouldn't be in binary then
13:29:52 <ais523> they're in text in some of the games
13:30:02 -!- Corun has quit (Client Quit).
13:30:12 <ais523> in some cases I store them in spreadsheets, using the background colour directly
13:30:15 <AnMaster> ais523, allowing users to make custom levels in fun
13:30:20 <ais523> yes
13:30:24 <AnMaster> err..? spreadsheets??
13:30:26 <ais523> I used to extract the colours with Excel macros
13:30:39 <AnMaster> wait a second... this sounds insane?
13:30:48 <ais523> but OpenOffice.org macros are lousy, so now I parse the raw ODF
13:31:01 <AnMaster> ais523, why a document format for it!?
13:31:13 <ais523> writing a level editor is hard
13:31:14 <AnMaster> I mean... even xml is better than that
13:31:28 <ais523> setting pixels by higlighting them in a spreadsheet program and clicking on a background colour is easy and intuitive
13:31:46 <ais523> and you can type commands directly into the cells
13:31:59 <ais523> yes, so it's insane, but useful in some cases, especially when you have many different background colours
13:32:08 <ais523> most text editors don't have a decent rectangle fill
13:32:29 <AnMaster> ais523, writing a level editor is simpler than parsing a spreadsheet file
13:32:33 <ais523> and with the ones that do, it isn't as intuitive as a spreadsheet, plus you can't store commands in the same place as the colours without breaking the ASCII art
13:32:35 <AnMaster> and less prone to bitrot
13:32:42 <AnMaster> file formats change
13:32:51 <AnMaster> I think openoffice changed it's once, not sure
13:34:19 <ais523> http://filebin.ca/xkcbq/ods2gbm.pl <-- you can write a level editor simpler than that?
13:34:36 <ais523> and OpenOffice.org did change its file format once, to comply with the international ODF standard
13:35:14 <ais523> pretty much all office suites except MS Office use ODF nowadays, and the bits of that standard I use are unlikely to change
13:35:23 <AnMaster> ais523, you can reuse a lot between the game and the level editor
13:35:28 <AnMaster> ie, rendering, parsing and so on
13:35:52 <ais523> with a level editor, you generally want much larger amounts of the level to fit onto screen at once than when playing the game
13:36:08 <AnMaster> yes, and?
13:36:37 <ais523> now suppose you're using a custom bitmap tileset, which I often am
13:36:43 <AnMaster> if you use opengl to render it you could just move the camera further away
13:36:46 <ais523> and the tiles become indistinguishable from each other when scaled down
13:36:51 <ais523> AnMaster: nothing nearly so advanced
13:36:55 <ais523> my Windows games used GDI
13:37:02 <ais523> and just blitted prerendered bitmaps to the screen
13:37:08 <ais523> although I am learning OpenGL at the moment
13:37:14 <AnMaster> ais523, supertux use tiles of *.png, it renders them by either sdl or opengl, the level editor is opengl only
13:37:19 <ais523> most of the games ran under DOS
13:37:23 <ais523> some were even text-mode
13:37:26 <AnMaster> zooming is easy, just some matrix tranformation
13:37:36 <ais523> I have an ASCII-art platformer somewhere
13:37:56 <AnMaster> ais523, well nothing wrong with that, but you can't show more of the level with that
13:38:00 <ais523> actually, IBM-extended-art
13:38:07 <ais523> AnMaster: no, you couldn't
13:38:28 <AnMaster> anyway you want to be able to zoom in a level editor, to see both the details and to get an overview
13:38:29 <ais523> I just used edit.com as an editor for that (it worked the best out of the editors I had installed on Windows at that time)
13:38:38 <ais523> if I was doing it nowadays I'd probably use Emacs
13:38:53 <ais523> AnMaster: you aren't helping your case that a level editor is easier than just parsing some ODF
13:39:06 <ais523> after all, both Excel and OpenOffice.org already have zoom functions
13:39:14 <ais523> as well as nifty things like copy-paste
13:39:21 <AnMaster> ais523, point is you can reuse a lot of the game engine
13:39:28 <AnMaster> at least if you do it with opengl or similar
13:40:01 <AnMaster> ais523, and level parsing/writing is done with serializing classes to <your custom format>
13:40:29 <AnMaster> or structs if you aren't used object orientation
13:41:12 <ais523> mostly arrays, actually
13:41:20 <AnMaster> ok
13:41:36 <ais523> and when using binary I just write them with fwrite
13:42:25 <AnMaster> in supertux you can have multiple tilemaps, some solid, other not, to create say rising lava in a level you would fill a tilemap with lava, set it to solid, and add a path, then add a script activator somewhere to start the moving of the tilemap along the path
13:43:02 <AnMaster> each tilemap is a class, the tileids are stored in an array of the tilemap
13:44:13 <ais523> heh, to create rising lava I just fill lots of squares with character 219, foreground set to red...
13:44:24 <AnMaster> and how do you make it rise?
13:44:55 <AnMaster> anyway having multiple tilemaps, with different z-index, well... a spreadsheet wouldn't work then
13:45:34 <ais523> AnMaster: 2D, one direction is gravity
13:45:36 <AnMaster> ais523, with a design such as that of supertux, a level editor is quite simple. a lot of code can be shared, just add a few dialog boxes and a draw tool basically
13:45:41 <ais523> so I make it rise by filling in more square
13:46:14 <AnMaster> supertux is also 2D
13:47:07 <AnMaster> ais523, point is, depending on the design of the game engine, adding a level editor need not be harder than trying to parse a spreadsheet
13:47:23 <ais523> did you look at my spreadsheet parser?
13:47:28 <ais523> it's only a couple of screens of Perl
13:47:29 <AnMaster> I did
13:47:38 <ais523> and a substantial portion of that is defining which colours map to which tiles
13:50:25 <AnMaster> ais523, yet how would you handle multiple tilemaps in a spreadsheet
13:50:36 <AnMaster> or features like adding a path
13:50:38 <ais523> what do you mean by multiple tilemaps, here?
13:50:53 <AnMaster> ais523, say a foreground tilemap, a background one and so on
13:50:57 <AnMaster> that are overlayed
13:51:07 <AnMaster> some can be solid
13:51:27 <AnMaster> at least one should be solid
13:51:31 <AnMaster> but more are allowed
13:51:34 <ais523> I've used patterns (an Excel) feature before when doing that sort of thing, and they could be used for that purpose
13:51:51 <AnMaster> ais523, a limit on amount of tilemaps then
13:52:23 <AnMaster> I think supertux doesn't have a limit, though 3-5 are recommended, more than that and the game could become slow on old computers
13:52:26 <ais523> I never used more than 1 anyway
13:52:44 <AnMaster> ais523, it is quite useful for creating effects
13:52:52 <AnMaster> and nice looking levels
13:53:04 <ais523> effects are a bit advanced for what I was doing
13:53:26 <ais523> except for the most recent stuff, it was a case of black blobs are walls, cyan blobs are people, etc...
13:53:28 <AnMaster> ais523, consider that some tiles can be transparent, say a grass tile doesn't take up the whole tile
13:53:34 <AnMaster> then you want a tree in the bg
13:53:38 <ais523> yes it does
13:53:46 <ais523> and if I want a tree I'll place a tree tile
13:53:57 <AnMaster> ais523, with a bush in front?
13:54:05 <AnMaster> you need a custom tile for each one then
13:54:16 <ais523> but I'm looking at the game world from above
13:54:18 <AnMaster> instead, you could place a tree and in front of it a bush
13:54:24 <AnMaster> ais523, ah? not a side scroller?
13:54:38 <ais523> my side scrollers never got beyond the ASCII-art stage
13:54:40 <AnMaster> supertux is a side scroller
13:55:07 <AnMaster> ais523, oh and what about secret areas
13:55:23 <ais523> some games didn't have any
13:55:37 <ais523> other games just had them far enough from the main view that they weren't onscreen at the same time as the main areas
13:55:47 <AnMaster> you want say a grotto on the side that is hidden, then when you enter it, the wall fades away so you can see what's inside the area
13:55:48 <ais523> because you could only see about 4 tiles away from where you were in most games
13:55:54 <AnMaster> then you want several tilemaps
13:56:07 <ais523> AnMaster: I did that with lots of triggers and recolour commands
13:56:19 <ais523> go near the wall and it creates the cavern for you
13:56:21 <AnMaster> ais523, sounds like harder to maintain
13:56:25 <ais523> walk away from the wall and it fills it back in
13:56:30 <ais523> and it was hard to maintain
13:56:52 <AnMaster> with supertux you could add a script trigger with say: tilemapfoo.fade();
13:57:05 <AnMaster> (you can name objects that you can use in scripts heh)
13:57:19 <AnMaster> actually not sure it is fade(), need to check script api docs XD
13:57:43 <AnMaster> http://supertux.lethargik.org/wiki/Scripting_reference
13:58:01 <AnMaster> ah it's: fade(float alpha, float seconds)
13:58:22 <ais523> not FadeTilemapEx?
13:58:25 <AnMaster> hahaha
13:58:38 <AnMaster> ais523, well the api is somewhat sane IMO
13:58:42 <AnMaster> compared to windows API
13:58:55 <ais523> AnMaster: you could say that about most APIs
13:59:07 <AnMaster> and it is object orientated so...
13:59:12 <ais523> I'd even venture to say that the C-INTERCAL external calls API is somewhat sane compared to the Windows API
13:59:14 <AnMaster> ais523, well sane overall
13:59:16 <ais523> and it has COME FROMs in
14:00:31 <AnMaster> ais523, the only issue is that calls tend to be non-blocking, so if you want a cut scene where you want to fade and wait for it to finish, then do something else and so on, you need to add calls to wait()
14:00:58 -!- timotiis has joined.
14:01:02 * ais523 envisions what a cross between C++ and bash would be like
14:01:08 <ais523> tilemapfoo.fade(a,b) &;
14:01:09 <AnMaster> ais523, err why?
14:01:14 <AnMaster> hahah
14:01:38 <AnMaster> ais523, well, I don't know how the internals of the scripting part work on the C++ side actually
14:01:52 <AnMaster> but the scripting language is one called squirrel
14:02:05 <AnMaster> and there is where the issues are, rather than in the scripting API
14:02:41 <ais523> actually, that C++/bash hybrid doesn't seem so ridiculous; bash has a nice easy-to-use attitude to concurrency
14:03:09 <ais523> then all we need are ONCE, AGAIN, computed ABSTAIN, REINSTATE, and COME FROM, and you can construct most threading primitives pretty easily
14:03:09 <AnMaster> want a variable that stays around until next time the script snippet is called? IIRC, you do something like: this.foo <- true
14:03:11 <AnMaster> for example
14:03:37 <AnMaster> ais523, just one thing: bash does concurrency by fork() iirc
14:03:50 <ais523> yes, fork/exec
14:03:56 <AnMaster> brb food?
14:03:58 <ais523> its concurrency model isn't powerful, or anything like that
14:04:01 <AnMaster> err s/?/
14:04:12 <ais523> it's just that it's easy to type and think about
14:12:45 <AnMaster> hm
14:13:06 <AnMaster> ais523, oh and it does fork for a lot of other cases where it really isn't needed
14:13:07 <AnMaster> say:
14:13:33 <AnMaster> foo is a bash function, it only uses bash built-ins
14:13:48 <AnMaster> then you do say: myvariable=$(foo bar quux)
14:13:55 <AnMaster> that will fork and capture the output
14:14:06 <AnMaster> when the function is builtin, it really wouldn't be needed
14:14:41 <AnMaster> ais523, the only way to return a value from a function therefore is to use a out variable
14:14:42 <ais523> that's why bash recommends $(< file) rather than $(cat file)
14:14:43 <AnMaster> so:
14:14:54 <AnMaster> foo myvariable bar quux
14:14:56 <AnMaster> then in foo
14:15:08 <AnMaster> printf -v "$1" "%s" "$tempvariable"
14:15:18 <AnMaster> that needs bash 3.1 or later
14:15:28 <AnMaster> the -v option to printf didn't exist before that
14:15:37 <AnMaster> ais523, well for reading a file sure
14:15:58 <ais523> BTW, $() is just backquotes, but nestable, right?
14:16:33 <AnMaster> ais523, iirc yes, there may be more syntax differences related to quoting though, but not sure
14:16:42 <AnMaster> just using $() is simpler
14:16:47 <AnMaster> easier to read and so on
14:17:07 <AnMaster> and unless you need it to run on really old shells it works fine
14:17:30 <AnMaster> of course for a configure script for example you want backquotes therefore
14:17:48 <ais523> I like backquotes anyway
14:17:58 <ais523> I'm glad they're in ASCII
14:18:07 <AnMaster> well so are $ and ( and ) iirc?
14:18:13 <ais523> yes
14:18:17 <AnMaster> ais523, anywa ` is just `<space> here
14:18:21 <ais523> but I'm not surprised that they're in ASCII
14:18:22 <AnMaster> anyway*
14:18:28 <AnMaster> ie, ` is a "dead key"
14:18:31 <AnMaster> on Swedish keyboard
14:18:46 <ais523> makes sense, most languages need more letters than English does
14:18:49 <AnMaster> for stuff like é and such
14:19:11 <fizzie2> ` is dead in the normal Finnish keymap, too, but I always make it undead, since I need ~s and such far oftener than strange accented characters.
14:19:27 <AnMaster> actually the forward one is just same as the backward one, same key but ` is shift key as well
14:19:44 <AnMaster> fizzie2, err, "need ~s"?
14:19:55 <AnMaster> what has ~ got to do with `?
14:20:24 <fizzie2> At least here ~ is a dead key too. All three of ^, ~ and ¨ are in a single completely corpse-like key.
14:21:00 <ais523> on this UK keyboard I only have £ as non-ASCII characters, also a key which sometimes produces a weird vertical-bar-but-not-really char on Windows but is mapped to | on Linux
14:21:00 <AnMaster> ~ is a dead key here too, hm: AltGr+<dead key that is for stuff like ë> followed by space
14:21:25 <ais523> over here ~ is right next to return, so much so that you can type rm * rather than rm *~ by mistake
14:21:31 <AnMaster> ais523, you mean the split vertical bar thing?
14:21:37 <ais523> yes
14:21:44 <fizzie2> Finnish and Swedish keymaps should be pretty similar, I've used the Swedish one with NetBSD or something which didn't have a specific Finnish one in the default set.
14:21:47 <AnMaster> isn't that just a case of weird dos font?
14:21:52 <ais523> only the key /marked/ split vertical bar is over backspace
14:21:57 <ais523> that produces regular vertical bar
14:22:01 <AnMaster> fizzie2, yeah iirc they are more or less the same
14:22:10 <ais523> the key which looks like a regular vertical bar is AltGr-`
14:22:17 <ais523> and it produces split vertical bar on Windows
14:22:28 <AnMaster> http://en.wikipedia.org/wiki/Keyboard_layout#Swedish.2FFinnish
14:22:29 <ais523> and shade-half-the-pixel vertically on DOS
14:22:34 <ais523> s/pixel/texel/
14:22:34 <AnMaster> fizzie2, wikipedia says they are the same
14:23:11 <AnMaster> <ais523> only the key /marked/ split vertical bar is over backspace <-- I got no one marked like that here
14:23:25 <ais523> not surprising
14:23:26 <AnMaster> and, over backspace? that would be F11-F12 on this keyboard
14:23:28 <ais523> and not backspace
14:23:30 <ais523> backslash
14:23:32 <AnMaster> ah
14:23:34 <ais523> and 'over' as in with shift
14:23:41 <AnMaster> well \ is AltGr-+
14:23:47 <fizzie2> Actually in this particular keyboard the normal | key is marked with the broken-bar symbol.
14:23:48 <AnMaster> + being right of 0
14:23:50 <ais523> here \ is to the left of z
14:24:05 <ais523> `1234567890-=<backspace>
14:24:10 <AnMaster> fizzie2, AltGr-< you mean?
14:24:16 <ais523> <tab>?qwertyuiop[]<return>
14:24:24 <fizzie2> AnMaster; Yes. Of course it doesn't produce the silly broken-bar symbol.
14:24:34 <ais523> <capslock>asdfghjkl;'#<return>
14:24:35 <AnMaster> 1234567890+<dead key for backquote><backspace>
14:24:37 <AnMaster> ais523, ^
14:24:45 <ais523> <shift>\zxcvbnm,./<shift>
14:24:48 <AnMaster> § is in front of 1
14:24:53 <AnMaster> weird IMO
14:24:55 <ais523> I don't have section-sign on this keyboard
14:25:09 <fizzie2> We have a §, and shift-§ produces a ½.
14:25:23 <ais523> and | and € are the only chars on the whole keyboard that use AltGr
14:25:28 <fizzie2> I don't remember when I've last pressed that key non-accidentally.
14:25:31 <AnMaster> well I do, but that key looks unused (some keys no longer have readable symbols on them)
14:25:44 <AnMaster> it's about as useless as Shift-4 being ¤
14:25:48 <AnMaster> another symbol I never use
14:26:09 <AnMaster> fizzie2, same about the ½ bit
14:26:38 <AnMaster> I have used that once, in this channel, when I suggested that oklotalk should be able to parse that symbol as a fraction meaning 1/3
14:26:38 <ais523> my keyboard's really quite impoverished
14:26:39 <AnMaster> XD
14:26:43 <ais523> but US keyboards are even worse
14:26:49 <ais523> They have two keys for \, I think
14:27:00 <AnMaster> ais523, well there are more with AltGr, that aren't marked
14:27:05 <AnMaster> µ = AltGr-m
14:27:11 <ais523> that's actually useful
14:27:23 <AnMaster> that is about the only non-marked one I actually use
14:27:30 <AnMaster> wish there was one for pi
14:27:33 <AnMaster> but I don't think there is
14:27:37 <fizzie2> My home keyboard layout has altgr-[a-z] mapped to "correct" greek letters.
14:27:43 <AnMaster> oh AltGr-e = €
14:27:45 <fizzie2> So altgr-p would produce the pi symbol.
14:27:54 <AnMaster> AltGr-p = þ
14:27:55 <AnMaster> here
14:27:59 <AnMaster> whatever that one is
14:28:17 <fizzie2> Yes, the standard xfree/xorg altgr mapping is full of all kinds of unlikely characters.
14:28:33 <ais523> hey, it works here too, but they're unmarked chars
14:28:39 <AnMaster> fizzie2, I use more or less standard Swedish layout, except that I used xmodmap to do something useful with the windows keys
14:28:45 <AnMaster> one is meta, the other is super
14:28:53 <ais523> 攢ðeđŋħ→jĸłµnøþ@¶ßŧ↓“ł»←«
14:29:06 <ais523> oh, and the single Windows key here is super
14:29:22 <ais523> strange that there's a Windows key at all, though, because the laptop came with Linux preinstalled
14:29:22 <fizzie2> Þ and ð are part of at least the Icelandic alphabet.
14:29:26 <ais523> and XP manuals
14:30:08 <ais523> which was doubly confusing: both because a Linux computer doesn't need XP manuals, and because I didn't realise such manuals existed (I've haven't seen them with a Windows computer since 3.1)
14:30:40 <AnMaster> there are xp manuals?
14:30:53 <fizzie2> I can understand µ, since that's so very useful, but I don't quite see why of all the greek letters they've included kappa (ĸ) and not π or λ.
14:30:58 <AnMaster> iirc all there was was a "getting started" 4-page thing
14:31:48 <ais523> AnMaster: I think it may have just been a getting started thing, but it was about 100 pages long
14:34:09 <AnMaster> hm, the one I can find here, contains stuff like "here is how you find the help system, and this how awesome xp is"
14:34:35 <AnMaster> 6 pages in fact
14:35:02 <ais523> so they could only write 6 pages about how awesome XP was? Sounds about right
14:35:11 <ais523> Vista would have about 1 and a half pages of how wow it was
14:35:13 <AnMaster> well a lot was pictures
14:35:45 <AnMaster> and one page is how to find online help
14:35:56 <AnMaster> so 5 pages with a lot of pictures
14:36:25 <AnMaster> ais523, note that this isn't even a4, it is more like 20*10 cm, where 10 is the height
14:36:36 <ais523> mine was small too
14:36:42 <ais523> manuals rarely are A4
14:36:43 <AnMaster> quite thick and blank paper though
14:37:03 <AnMaster> ais523, well they are rarely wider than they are high though
14:37:07 <AnMaster> which this one is
14:37:20 <ais523> BTW, the reason I haven't been here much recently is that I was recovering from writing a report with a page limit of 80 pages in a group of 10 people
14:37:20 <AnMaster> I don't have a ruler here so can't check exactly
14:37:34 <AnMaster> ais523, about what?
14:37:37 <ais523> I had the job of reformatting it from 129 pages down to 80 without changing the paper size or font size
14:37:40 <ais523> AnMaster: university project
14:37:43 <AnMaster> ah
14:37:44 <ais523> I managed it, though
14:37:54 <AnMaster> ais523, what about margins then?
14:37:59 <ais523> standardising vertical whitespace, using tiny margins, and changing the font to Arial Narrow
14:38:04 <AnMaster> ah
14:38:12 <ais523> also moving pictures next to each other
14:38:27 <ais523> we had to move 3 pages worth of stuff to appendices to leave room for page numbers, though
14:38:28 <AnMaster> ais523, well not very readable then
14:38:33 <ais523> perfectly readable
14:38:44 <ais523> just not as space-wasting as usual
14:38:45 <AnMaster> I mean, too wide lines are not readable
14:38:59 <ais523> but the lines weren't much wider than regular lines
14:39:08 <AnMaster> hm, you said tiny margins?
14:39:10 <ais523> the margin was dropped from 1 in to 1 cm
14:39:19 <ais523> that's not a ridiculous proportional increase in line length
14:39:27 <AnMaster> so how long was the line then?
14:39:41 <AnMaster> anything wider than 12-13 cm is hard to read IMO
14:39:49 <ais523> A4 page width - 2 cm
14:39:50 <AnMaster> less is preferable
14:39:55 <ais523> you can work it out from that
14:40:37 <fizzie2> I had to fit an amount of text into a four-page two-column conference paper format without changing font sizes, fonts at all, margins, or just about anything; since they were all dictated by the latex template enforced by the conference organizers. Fortunately there weren't that many extra lines of text, so I got it done by tweaking the inter-figure/table spacing to be a bit narrower.
14:40:38 <AnMaster> well, that means something like 19 cm wide I think
14:40:59 <AnMaster> fizzie2, heh
14:41:49 <fizzie2> Now I just stuck the same text to a standard one-column \documentclass{article} template, since they're going to let me extend the paper a bit for study credits; and suddenly it produced a 12-page output file.
14:42:13 <ais523> the vertical whitespace is what saved most of the space for me
14:42:36 <ais523> we edited the report in Google Docs, and some people copy/pasted from Microsoft Word (which is not advisable)
14:42:36 -!- Corun has joined.
14:42:58 <ais523> so I exported as OpenOffice.org and used regexps to fix the paragraph breaks
14:43:14 <ais523> and then set paragraph spacing to single and between-paragraph spacing to half a line
14:44:05 <AnMaster> fizzie2, oh?
14:44:10 <AnMaster> interesting
14:44:37 <AnMaster> well the \documentclass{article} got sane line length IMO
14:45:17 <AnMaster> with 2 columns you can fill more of the page of course
14:45:29 <fizzie2> Yes, and the conference paper format was pretty space-efficient, two columns and 9pt font, or 8pt for references.
14:45:54 <AnMaster> 9 pt, a bit small
14:54:58 <fizzie2> The line length (when measured in characters) of the 9pt two-column thing seems to be about 80% of what the default article-class (12pt or 11pt or some-such font, nice and wide margins) has.
14:58:28 * ais523 has seen a web page where they have a middot with every possible combining diacritical mark on it
14:58:39 <ais523> to its credit, Firefox rendered the resulting mess plausibly
15:00:18 <ais523> http://forums.thedailywtf.com/forums/t/8425.aspx <--- it's a very esolang-attitude thing they're doing there, although you have to appreciate how bad the forum software is to get what they're doing
15:04:22 <fizzie2> I came across a rather horrible 10-or-so-combining-characters example somewhere on unicode.org, too, but the site is so hugey I can't find it againt; it wasn't in any of the three places I thought it might be.
15:06:14 <AnMaster> fizzie2, hm how is that possible?
15:06:33 <AnMaster> ais523, and that link doesn't seem to have those dots?
15:06:51 <ais523> AnMaster: they discussed using them for a while, and then moved onto even more insane things
15:07:05 <ais523> the whole discussion is what's interesting
15:07:06 <AnMaster> ais523, it's a long page, I can't find it
15:07:22 <ais523> basically, the forum software used doesn't escape anything but <script> and <object>
15:07:34 <AnMaster> hah
15:07:35 <ais523> also, it stores all the tags used anywhere in a hidden field on the page
15:07:48 <ais523> so they're trying to bring it down by generating huge numbers of tags
15:08:08 <AnMaster> haha
15:08:13 <ais523> they're using the no-escape thing to create fake posts; someone has a fake post generator in their signature
15:08:29 <ais523> the middot expands into a lot of HTML in the all-tags things whilst being very small onscreen
15:08:44 <ais523> but they wrote greasemonkey scripts to automatically put bits of hex in tags whenever they post
15:09:47 -!- Corun has quit ("This computer has gone to sleep").
15:10:57 <AnMaster> I see
15:11:18 <AnMaster> ais523, and this is thedailywtf, this means the whole site is a wtf in itself
15:11:19 <AnMaster> heh
15:11:36 <ais523> just the forums
15:11:55 <ais523> the SpectateSwamp threads are also worth dipping into, but they're massively long
15:12:44 <fizzie2> There's the character, ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.
15:13:46 <ais523> from thedailywtf, or from the Unicode pages?
15:14:05 <ais523> I find it hard to tell what that character is on Konqueror, although it looked plausible
15:14:09 <fizzie2> From thedailywtf; findable with the string "possible combining".
15:14:38 <ais523> wow, it looks crazy in the tunes.org logs
15:15:14 <AnMaster> fizzie2, in my irc client that looks. um. unusual
15:15:38 <fizzie2> Firefox's "view selection source" seems to show it uncombined, ie. it's a long string of various dots and hooks and whatnot.
15:15:40 <ais523> AnMaster: how does ERC handle it?
15:15:43 <AnMaster> actually, I'm using a bnc with two clients connected to it, erc can not show that bit of unicode correctly at all
15:15:48 <AnMaster> it just handles the basic stuff
15:16:04 <AnMaster> xchat, on my other computer that is also connected to the bnc, well it shows it
15:16:16 <AnMaster> looks like corrupted screen image or something
15:16:35 <AnMaster> ais523, ERC just shows a lot of boxes with ? in in the font I use in it
15:16:42 -!- timotiis has quit (Read error: 110 (Connection timed out)).
15:16:48 <ais523> tunes.org seems to be trying to interpret it as latin-1 or something
15:16:50 <AnMaster> sadly emacs isn't good at utf8 stuff
15:17:17 <AnMaster> ais523, I run GNU emacs under X, I guess even running it in console would look better for that odd stuff fizzie2 posted
15:17:38 <AnMaster> actually in xchat, I THINK it is corrupted screen image in fact
15:17:44 <AnMaster> because it changes when I select it
15:17:46 <AnMaster> in odd ways
15:17:54 <AnMaster> ie, becomes twice as long and such
15:18:01 <ais523> I'll take a screenshot of what it looks like for me
15:18:04 <AnMaster> fizzie2, can you post a screenshot of how it *should* look
15:18:17 -!- Corun has joined.
15:18:41 <AnMaster> ais523, hm, emacs segfaulted when I tried to select that text, was running it under X
15:18:46 <AnMaster> but well I use cvs emacs so...
15:18:53 <ais523> looks like you found a bug
15:19:04 <AnMaster> ais523, tried it again, not reproducible
15:19:05 <fizzie2> I have no idea how it *should* look, and it looks remarkably different in Firefox and in this rxvt-unicode. It doesn't look pretty in either.
15:19:18 <fizzie2> It looks like http://www.cis.hut.fi/htkallas/tmp.png (scaled to 200%) in my terminal here.
15:19:25 <AnMaster> fizzie2, I think it is "undefined"
15:19:29 <ais523> I don't know if it makes sense at all
15:19:37 <ais523> it's basically a middot with every possible accent combined onto it
15:19:52 <AnMaster> fizzie2, it is about 20 chars long here
15:20:21 <AnMaster> fizzie2, xchat that is
15:20:33 <AnMaster> I'll upload screenshots
15:20:46 <ais523> http://imagebin.ca/view/9oqxjy.html
15:20:52 <ais523> what it looks like in my IRC client
15:21:38 <fizzie2> It seems to be a middot combined with backquote, forward quote, a small inverted cup, a tilde, a dash, a longer dash, a cup, a dot, two dots (diaeresis), a hook, a small ring (like in å), a different tilde, a different sort of cup, apostrophe, doublequote, ...
15:22:05 <ais523> all possible combining diacritics, in fact, as was explained in the thread
15:22:22 <ais523> the idea was to produce a character that was compact on screen but very long when escaped in HTML
15:23:07 <fizzie2> ... a bit tilted doublequote, a triangle, another different-looking inverted cup, a.. smudge, a sideways cup (both directions), inverted apostrophe; and that was just one third of 'em, I guess it doesn't make much sense to describe the rest.
15:24:14 <fizzie2> Yes, it pretty much seems to be the characters in http://www.unicode.org/charts/PDF/U0300.pdf in order.
15:25:48 <fizzie2> Although strictly speaking it's not all possible combining characters, there's a couple of supplemental unicode blocks containing... ahem, "less used" ones.
15:26:19 * AnMaster waits for image to compress
15:26:33 <fizzie2> Like u+20e3, "combining enclosing keycap", which draws a figure of a keyboard key around the character in question.
15:26:37 <AnMaster> http://omploader.org/vZ251 and http://omploader.org/vZ252
15:27:16 <ais523> combining enclosing keycap is a great idea! I can't believe I didn't know about that earlier.
15:27:27 <AnMaster> fizzie2, what do you think of how xchat renders it
15:27:28 <ais523> Can it be adapted to go round multiple characters?
15:27:31 <AnMaster> that is GTK
15:27:38 <fizzie2> The character before that is a combining enclosing screen, which is a vaguely tv-screen-shaped box.
15:28:13 <AnMaster> what does GTK use to render fonts?
15:28:21 <fizzie2> Well, the xchat screenshot looks like it's rendering quite a lot of the characters, but needs some work in combining them together.
15:28:44 <fizzie2> They've got the Pango library specifically for text layout.
15:28:46 <AnMaster> fizzie2, well it just use whatever GTK uses to render fonts
15:28:51 <AnMaster> ah pango then
15:28:57 <AnMaster> so probably a bug in pango I guess
15:29:01 <AnMaster> at least the version I got
15:29:11 <AnMaster> pango-1.18.4
15:29:15 <AnMaster> last stable on gentoo
15:29:43 <fizzie2> Well, that second screenshot is almost exactly what it looks like in the firefox "view source" window.
15:30:14 <ais523> unfortunately, combining enclosing keycap doesn't seem to be in any of my fonts
15:30:17 <AnMaster> fizzie2, wow if you select it left to right the speed of which the selection move is about 1/10 of that of the mouse
15:30:29 <AnMaster> that does not happen when selecting right to left
15:30:54 <AnMaster> with speed I mean, when you dragged the mouse 10 cm just about 1 cm has been selected
15:31:28 <AnMaster> total text corruption if you change so you begin in the middle and then drag the mouse upwards
15:31:34 <fizzie2> I don't think the Pango developers will lose any sleep over misrendering that particular character-combination even if it's their fault.
15:31:44 <ais523> although it's a single character for me, I can select bits of it
15:32:05 <AnMaster> fizzie2, indeed, however xchat does interesting things with Right-to-left override symbol
15:32:24 <AnMaster> ie, it looks reversed at first, but when you select it, it goes back to "normal"
15:32:36 <AnMaster> as in if there had been no right-to-left override
15:32:58 <AnMaster> and it only changes back when you scroll it out of view and then scroll it in again
15:33:01 <ais523> there was a punctuation mark that became a very minor Internet meme a while ago (the sort that registers on Wikipedia and then gets forgotten)
15:33:08 <AnMaster> (or changes to another tab and back)
15:33:19 <ais523> everyone was copying it around with copy-paste, and it had an RLO stuck to it that selected along with it
15:33:19 <AnMaster> ais523, oh? what one?
15:33:31 <ais523> and so it caused the rest of the page to be written right-to-left
15:33:52 <AnMaster> ais523, err depends, well maybe that happens in html
15:33:59 <ais523> I don't know its official name; it was being referred to as a 'circle of commas', but it wasn't the char itself but the RLO next to it that caused the chaos
15:34:01 <AnMaster> xchat changes back on new line at least
15:34:26 <AnMaster> ais523, oh, I see, forums wouldn't filter it I bet
15:34:30 <AnMaster> I see the problem XD
15:35:56 <AnMaster> HAH, if I copy and paste that symbol fizzie2 into the input box of xchat, then it looks like one char
15:35:57 <AnMaster> hehehe
15:36:04 <AnMaster> just not in main channel view
15:36:29 -!- fizzie2 has changed nick to fizzie.
15:36:44 <fizzie> Huh, hadn't noticed I was a -2 even after all that talk.
15:37:06 <ais523> if you're interested, here's the circle-of-commas char: ‫‬‭‮‪‫‬‭‮‫‬‭‮‪‫‬‭‮҉. It seems to manage the reversal just fine in my client (although it's probably the RLO doing that)
15:37:20 <ais523> does the effect extend to this line?
15:37:25 <ais523> apparently not
15:37:44 <ais523> I like the way it managed to reverse the parens; presumably they're opening and closing paren, not left and right
15:37:48 <AnMaster> oh kwrite renders it correctly
15:38:08 <AnMaster> selection is still slightly broken, but not as much as in GTK
15:40:09 <ais523> I'm using Konversation, which presumably renders it the same way
15:40:15 <ais523> what did the circle of commas do?
15:40:28 <AnMaster> ais523, about reversal
15:40:36 <AnMaster> xchat fails to handle it on the next line
15:40:44 <AnMaster> so "my client ..." is "normal"
15:40:53 <ais523> so it goes back to normal, or everything's still reversed?
15:41:05 <AnMaster> if I make the window wider, it reverses those too when they end up on same line
15:41:15 <AnMaster> ais523, I mean it goes back to normal no new line
15:41:22 <AnMaster> new even when it is in the same message
15:41:27 <ais523> so nothing's reversed?
15:41:47 <AnMaster> ais523, yes it is, up to, but not including: "my"
15:42:01 <ais523> that doesn't make any sense at all
15:42:07 <ais523> did your client line-wrap there?
15:42:08 <AnMaster> ais523, because due to window width, "my" ends up on a new line...
15:42:11 <ais523> ah
15:42:13 <AnMaster> exactly
15:42:17 <ais523> so it just effects the line of text
15:45:09 <AnMaster> ais523, aye, and another thing, how did you make that circle?
15:45:18 <ais523> I copy/pasted it from the Wikipedia move log
15:45:24 <AnMaster> move log hm?
15:45:25 <ais523> someone had created an article at that title
15:45:31 <ais523> and I remembered the title it had been moved to
15:45:35 <AnMaster> and then it was moved where?
15:45:41 <ais523> 'Circle of commas', I think
15:45:53 <ais523> but it's a redirect now
15:46:34 <ais523> it's much easier to find the original page with admin priveliges, though, because the move summary line in the history that makes it easy to find was deleted
15:47:05 <AnMaster> ais523, hah
15:47:46 <ais523> [[Wikipedia:Articles for deletion/Circle of commas]] also contains the character, it may be easier to get it from there if you aren't an admin
15:48:09 <AnMaster> Wikipedia does not have an article with this exact name. Please search for Articles for deletion/Circle of commas in Wikipedia to check for alternative titles or spellings.
15:48:10 <AnMaster> hm?
15:48:17 <AnMaster> http://en.wikipedia.org/wiki/Articles_for_deletion/Circle_of_commas
15:48:21 <AnMaster> ?
15:48:36 <ais523> yes
15:48:39 <ais523> how did I do that?
15:48:46 <ais523> must be weirdness in my client
15:48:57 <AnMaster> err what?
15:49:01 <ais523> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=Wikipedia:Articles_for_deletion/Circle_of_commas
15:49:03 <AnMaster> ah
15:49:12 <AnMaster> because your client did [[ ]]
15:49:18 <AnMaster> or you did
15:49:25 <ais523> I did the [[]]
15:49:28 <AnMaster> ah
15:49:29 <ais523> but it didn't work for some reason
15:49:38 <AnMaster> ais523, work? what do you mean?
15:49:39 <ais523> I have http://en.wikipedia.org/wiki/Special:Search?go=Go&search=e: for links to Esolang too
15:49:47 <ais523> um...
15:50:00 <ais523> \quote PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Special:Search?go=Go&search=e:
15:50:03 <AnMaster> if you write [[ ]], you send [[ ]]
15:50:05 <ais523> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=e:
15:50:15 <ais523> yes, but I'm trying to put an e: inside the [[]]
15:50:22 <AnMaster> anyway I missed the Wikipedia: that's all
15:50:34 <AnMaster> [[e:]]
15:50:35 <AnMaster> yes?
15:50:39 <ais523> yes
15:50:43 <AnMaster> what about that
15:50:45 <ais523> I tried to send it in a /quote privmsg
15:50:50 <ais523> and I've set it to link to Esolang
15:50:53 <ais523> e.g. http://esolangs.org/wiki/BackFlip
15:50:57 <AnMaster> eh
15:51:08 <AnMaster> oh you got some client side script that is messing up for you?
15:51:41 <ais523> yes
15:53:07 <ais523> anyway, ‫‬‭‮‪‫‬‭‮‫‬‭‮‪‫‬‭‮҉. could come in useful for writing Befunge programs
15:55:52 <AnMaster> ais523, err, how?
15:56:13 <AnMaster> the interpreter would read char (8 bits) by char
15:56:16 <ais523> allowing right-running text to appear the right way round to the user
15:56:28 <ais523> you put a RLO and LRO around the text
15:56:37 <AnMaster> ais523, so if the editor showed it as less than that, ie, it would handle unicode
15:56:40 <ais523> so it's readable but actually runs the other way in the source code
15:56:47 <AnMaster> well... columns wouldn't match
15:56:49 <AnMaster> so say:
15:56:52 <AnMaster> > v
15:56:59 <AnMaster> v ö <
15:57:22 <AnMaster> while that looks like the v points to the < it wouldn't do so for the interpreter
15:57:30 <AnMaster> because ö would be multiple bytes
15:57:45 <ais523> well, use zwnjs or something in the other rows to line up against them
15:58:26 <AnMaster> ais523, is that how long ö is in bytes?
15:58:40 <ais523> depends on the encoding
15:58:44 <ais523> yes in UCS2
15:58:49 <ais523> not sure in UTF8, probably not
15:59:05 <ais523> but you have nbsps if you need a 2-byte UTF8 char
15:59:11 <AnMaster> anyway zwnjs are all valid funge instructions, w alters direction of ip, and j jumps ip so...
15:59:17 <AnMaster> ;aaa;
15:59:18 <AnMaster> maybe
15:59:42 <ais523> &zwnj;
15:59:52 <AnMaster> ais523, in either case I don't recommend doing it, because it would be hard to edit
15:59:59 <ais523> like a space, but zero-width and doesn't wrap
16:00:11 <AnMaster> ais523, you are still talking about befunge source code?
16:00:20 <ais523> yep
16:00:25 <AnMaster> it doesn't do &whatever; you know
16:00:26 <AnMaster> that's HTML
16:00:29 <ais523> but I have to call the character something
16:00:32 <AnMaster> ah
16:00:35 <ais523> and you wouldn't be able to see it if I pasted it literally
16:00:44 <AnMaster> &zwnj; is what?
16:01:03 <AnMaster> I mean, what is it for
16:01:04 <ais523> zero-width non-joiner
16:01:12 <AnMaster> ok, still what is it for
16:01:18 <ais523> mostly used in certain scripts where characters flow into each other, to say that they shouldn't
16:01:26 <AnMaster> ok hm
16:01:30 <ais523> I don't know any of the languages where it's useful, though
16:01:55 <AnMaster> Arabic got flow together thing I think
16:02:35 <ais523> there's also &zwj;, which is just as invisible to someone who uses English
16:02:40 <ais523> it's sort of the opposite
16:03:00 <AnMaster> "The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.)"
16:03:29 <AnMaster> that does not mean unicode though, it means systems where the native size of characters are several bytes
16:03:36 <ais523> ah, in that case it works like UCS2
16:03:43 <AnMaster> as in sizeof(char) != 8
16:03:46 <ais523> 'stored in multiple bytes' is interestingly ambiguous
16:03:54 <ais523> I'd argue that char is always 1 byte, by definition
16:04:04 <ais523> now, sizeof(char) might != sizeof(wchar_t)
16:04:11 <AnMaster> ais523, not really, or why is #define CHAR_BIT 8 in some header
16:04:13 <ais523> but the whole wchar_t stuff is a big mess that confuses me
16:04:24 <ais523> AnMaster: so you know there are 8 bits in a byte
16:04:24 <AnMaster> because some systems did not have 8 bit bytes
16:04:29 <AnMaster> indeed
16:04:31 <ais523> some other systems might have CHAR_BIT higher
16:04:37 <AnMaster> ais523, or lower
16:04:39 <ais523> limits.h exists to tell you what CHAR_BIT is
16:04:43 <AnMaster> exactly
16:04:49 <ais523> and 8 is the minimum, implementations have to pretend if bytes are smaller
16:05:14 <AnMaster> ais523, well, for C maybe, but I think 7 bit computers have existed
16:05:25 <ais523> yes, I'm referring to C
16:05:36 <AnMaster> anyway trinary systems then?
16:06:33 <ais523> C89 doesn't handle them well
16:06:40 <AnMaster> ais523, anyway according to Deewiant, that part of the funge98 standard does not mean unicode in any way
16:06:49 <ais523> I think it allows trinary floating-point, but forces binary integers
16:10:22 -!- ehird has joined.
16:11:01 * ais523 is avoiding a regex loop this time
16:11:03 <ehird> hi ais523 oklopol Slereah_ ....
16:11:14 <ehird> ais523: oh but i don't obey the rfc
16:11:44 <ais523> glad it got through, I sent it with /quote and so didn't get any feedback from my client
16:12:05 <ehird> ais523: you can do
16:12:11 unexpected log event :(
16:12:16 <ehird> in konversation
16:13:15 <ais523> I don't like the way Konversation displays notices
16:13:29 <ais523> they should be just like privmsgs, but with a different sort of bracket around the username
16:13:38 <ehird> ais523: xchat kind of does that
16:13:41 <ehird> -ais523/#esoteric- hi ehird
16:13:45 <ehird> it shows the channel name on channel notices
16:13:52 <ehird> so you can differenciate between them and user notices
16:14:18 <ais523> well, shouldn't a user notice look like a user privmsg to me?
16:14:45 <ais523> it seems that Konversation just displays it in whatever channel I'm in, which is wrong IMO
16:15:20 <ehird> ais523: no
16:15:24 <ehird> that's how it's meant to be done
16:15:28 <ehird> that's why a notice is different from a privmsg
16:15:44 <ais523> the only difference IMO should be that notices can't get into a loop
16:16:11 <ehird> nahh
16:16:35 <AnMaster> ais523, so a CTCP reply should open a new tab?
16:16:58 <ais523> AnMaster: that's CTCP, and is going to be special-cased anyway
16:17:06 <AnMaster> ok
16:17:18 <ais523> if it's mixed CTCP/not CTCP, then yes
16:17:27 <ais523> but I don't know of any clients that handle that, despite it being in the spec
16:17:29 <AnMaster> well notices shouldn't open new tab
16:18:21 <ais523> in chatzilla user privmsgs didn't open a new tab if there wasn't one already
16:18:31 <ais523> you just got it in your current view, which was fine
16:18:49 <ais523> doing /query opened a tab, and if I have an open query with a user notices from that user should definitely end up there
16:19:11 <ais523> here's an example:
16:19:14 -!- ais523 has left (?).
16:19:24 <AnMaster> err
16:19:31 -!- ais523 has joined.
16:19:44 <ais523> did that come up in #esoteric for you?
16:20:01 <AnMaster> ais523, no, it came up in ##socialites, which was the current tab
16:20:09 <ais523> but that makes no sense at all
16:20:11 <ais523> I wasn't there
16:20:18 <AnMaster> nor were you here
16:20:21 <AnMaster> when you sent it
16:20:28 <ais523> exactly
16:20:29 <AnMaster> and you didn't send it to channel it seems
16:20:35 <ais523> that was deliberate
16:20:48 <AnMaster> ais523, however chan/nickserv notices end up in current tab that way
16:20:50 <ais523> an ais523 tab is the only logical place for that to come from if you're separating conversations into tabs
16:20:53 <AnMaster> and that is what you want
16:21:03 <ehird> AnMaster: ##socialites... what are you doing in here?! :P
16:21:08 <AnMaster> ehird, why?
16:21:16 <ehird> this is a place for people with no life!
16:21:18 <ais523> AnMaster: maybe they should come up in the server tab?
16:21:20 <AnMaster> ehird, well I'm there because I'm in the channel access list as an op
16:21:28 <ehird> AnMaster: EVEN WORSE
16:21:39 <AnMaster> ehird, well it was better before in some ways
16:21:46 <AnMaster> ehird, back when it was called #winflame
16:21:57 <ehird> AnMaster: okay, how did that transition happen
16:22:09 <AnMaster> ehird, while I was away at holiday
16:22:15 <ehird> AnMaster: but... HOW
16:22:20 <AnMaster> so can't really answer
16:22:30 <ais523> typo?
16:22:44 <AnMaster> ais523, eh?
16:22:58 <AnMaster> ehird, anyway it became more and more of a social channel so the old name didn't really fit
16:23:12 <ais523> trying to guess how you ended up in an access list while you were on holiday
16:23:21 <ehird> AnMaster: but people on irc are inherently not socialites! :P
16:23:24 <AnMaster> ais523, because I were on access list in the old channel
16:23:32 <AnMaster> ais523, so when it moved...
16:23:43 <AnMaster> ais523, I was just away for about two weeks anyway
16:23:51 <AnMaster> without computer access
16:24:46 <AnMaster> and without telephone or tap water btw
16:24:56 <AnMaster> manual fetch from a well heh
16:25:11 <ais523> I can understand how you could connect to the internet with a telephone, but how do you manage that with tap water?
16:25:22 <ehird> HAHAHA
16:25:42 <Slereah_> Maybe you could build a mechanical internet.
16:25:54 <Slereah_> Sending compression waves in the water pipes.
16:26:05 <ais523> that's why it wouldn't work in a well
16:26:24 <oklopol> negative lists seem to work now
16:26:27 <Slereah_> Well, as we all know, the internet must be a series of tube.
16:26:49 <ais523> a big truck would be more efficient, though
16:27:01 <oklopol> < < <::..> > <:.> <::> <::.>< <:::>>> ===>
16:27:01 <oklopol> < < < <::..> <:.> <:::>> < <::..> <::> <:::>> < <::..> <::.> <:::>>>>
16:27:09 <oklopol> this required quite a lot of debugging actually
16:27:15 <ehird> oklopol: Too many symbols
16:27:15 <oklopol> forgot to flush the recursion stack, silly me!
16:27:17 <ais523> apparently the fastest known way to send data, in terms of bandwidth, is to load a lorry full of hard drives
16:27:20 <oklopol> ehird: old
16:27:26 <ais523> huge bit-per-second rate, but a large latency
16:27:43 <oklopol> the point is the negative lists work
16:27:49 <oklopol> they are independent of the evaluation model.
16:28:01 <oklopol> i'll show a real-life example
16:28:24 <oklopol> <: <. <::> < <::> <::>>> > <::> <:::> <::::><> ===>
16:28:24 <oklopol> < < <::> <::>> < <:::> <:::>> < <::::> <::::>>>
16:28:32 <ehird> of .... curse.
16:28:34 <oklopol> this is the map example
16:28:35 <ehird> *course
16:28:58 <oklopol> > <::> <:::> <::::>< is the negative list
16:29:11 <oklopol> (- (+::) (+:::) (+::::))
16:29:27 <oklopol> the outer <: a b> is application, a is applied to b
16:29:49 <oklopol> <. <::> <<::> <::>>> is, well, ``sii
16:29:49 <ehird> :D
16:29:57 <oklopol> now
16:30:13 <oklopol> the negative list does a fun flip, and effectively maps the function to the list
16:30:35 <oklopol> because it extracts the elements one by one, and then evaluates a list with applications done separately to each element
16:30:46 <AnMaster> ais523, hah
16:31:12 <oklopol> but my semantics aren't at all perfect, for instance (- (+ ...)) != (+ (- ...)) in the general case
16:31:20 -!- ihope has quit (Read error: 104 (Connection reset by peer)).
16:31:28 <AnMaster> anyway it was on a small island outside the Swedish west coast
16:31:37 <AnMaster> there was electricity though
16:31:42 <oklopol> also they are basically just useful for mapping yet i'm not sure you can even write *map* :D
16:32:14 <ehird> oklopol: plz maek negative length lists
16:32:34 <ais523> this reminds me of Cyclexa's antitext
16:32:51 <ais523> programs (as opposed to expressions) are matched against the null string
16:32:55 <oklopol> <. <<::> <:.>> <<::> >> <:.><<>> might be map
16:32:59 <ais523> but you can match against negative text to insert things into the string
16:33:04 <ehird> ais523: his lists are negative depth lists
16:33:05 <AnMaster> oklopol, wtf does that mean?
16:33:10 <ehird> () = 0 depth
16:33:12 <ehird> (a b c) = 1 depth
16:33:17 <ehird> ((a b) (c d)) = 2 depth
16:33:17 <ehird> etc
16:33:19 <ais523> antitext is pretty useful, though
16:33:21 <ehird> he has -1, -2, depth
16:33:49 <AnMaster> ais523, how do you write "negative text"
16:33:56 <oklopol> AnMaster: a bit hard to explain, you can check my interp for reference ;;;)
16:34:05 <oklopol> (it's *way* worse than my oklotalk interp)
16:34:23 <AnMaster> oklopol, what interpreter of yours?
16:34:25 <ais523> (abc)^abc is a noop (except for capturing abc as a group)
16:34:34 <ais523> the ^ in this context antitexts something
16:34:51 <AnMaster> ais523, so, strlen(^"abc") == -3?
16:35:00 * AnMaster gets confused (even more that is)
16:35:01 <ais523> AnMaster: pretty much
16:35:22 <AnMaster> ais523, so, I load 5 GB antitext into memory and then I can run 4 vmware at the same time? ;)
16:35:30 <ais523> the rules are more complex than that, mostly to stop things like /ab/ matching "c" by introducing antitext into it
16:35:38 <AnMaster> I only got 1.5 GB RAM
16:35:44 <ais523> AnMaster: unfortunately, it requires positive RAM for computers to store
16:35:48 <AnMaster> awww.. ;(
16:36:04 <AnMaster> ais523, I still don't see how it is used though
16:36:20 <ais523> AnMaster: so that you can put things in the input string that weren't there originally
16:36:29 <ais523> lots of other uses too, but that's the main one
16:37:05 <oklopol> <: <. < <::> <:.>> <: <::> > > <:.><<>> < <. <::> < <::> <::>>> < <::> <:::> <::::>>>> ===>
16:37:05 <oklopol> < < <::> <::>> < <:::> <:::>> < <::::> <::::>>>
16:37:07 <AnMaster> um. snprintf(buffer, buffersize, "%s%s", str1, str2); ?
16:37:08 <oklopol> it was map :DDDD
16:37:12 <AnMaster> ais523, is that what you mean?
16:37:21 <ais523> s/a/b/ becomes a=b in Cyclexa, but that's shorthand for ((a|.)+)(b|.):1^
16:37:27 <AnMaster> of course printf is a stupid way to do it
16:37:32 <oklopol> ehird: can you read that at all? or anyone? :D
16:37:38 <AnMaster> strncat would be better
16:37:44 <ehird> Nope, oklopol
16:37:46 <oklopol> i've explained it multiple times, but i doubt it's possible to read anyway
16:37:48 <oklopol> darn
16:37:53 <oklopol> want me to explain?
16:37:57 <ehird> Nope, oklopol
16:37:57 <ehird> :P
16:37:59 <oklopol> :)
16:38:04 <ais523> I've somehow managed to miss all the oklotalk explanations
16:38:10 <ais523> and seeing them in the logs isn't quite the same
16:38:10 <oklopol> this is about nopo
16:38:10 <oklopol> l
16:38:15 <ehird> I just accept that you're the best person for making crazy esolangs in here and go on with my life ;)
16:38:22 <ehird> ais523: oklotalk--
16:38:22 <ais523> nopol = cobol with added NOP?
16:38:27 <oklopol> :D
16:38:29 <ehird> oklotalk itself will be even crazier
16:38:33 <oklopol> no just the name is from cobol
16:38:37 <ehird> i personally plan to port ALL MY APPS to it
16:38:41 <oklopol> nopol is based on nops
16:38:50 <oklopol> also negative depth lists, they're kinda cool
16:39:16 <oklopol> nopol has nothing to do with oklotalk or cobol
16:39:18 * AnMaster gives up trying to understand the logic of negative text storage
16:39:26 <AnMaster> or whatever it was meant to do
16:39:43 <oklopol> negative information is fun, it should be used more in esolangs
16:39:53 <AnMaster> oklopol, how would it be used
16:40:14 <ais523> AMICED
16:40:16 <AnMaster> for syntax when describing, some semi-C prefered
16:40:19 <oklopol> dunno, i can imagine something like pattern matching could make use of it, being a kind of backwards-evaluation anyway
16:40:29 <oklopol> but this is just a hunch
16:40:59 <ais523> AnMaster: generally you don't store it, you match against it and then you rematch the text you just generated
16:41:11 <AnMaster> ais523, and the result of that is?
16:41:23 <ais523> depends on what program you're writing
16:41:37 <ais523> I'll try to write a prime-printer in unary so you can see what I mean
16:41:50 <AnMaster> mhm
16:42:31 <oklopol> i'm gonna explain the syntax once more even though no one prolly cares / understands: if the last character was whitespace, whatever bracket is encountered will open a list; < opens a positive one, > a negative one; if the last character was not whitespace, and is the closing bracket of the last open bracket (> for <, < for >), a list is closed
16:42:35 <oklopol> eof closes all brackets
16:42:50 <oklopol> this makes it possible to use <, space and > for two kinds of brackets
16:43:00 <oklopol> and is quite intuitive when they're not mixed
16:43:08 <ais523> a^@{2,}?(a{2,}{2,}$!'')?(?0a*)$''
16:43:17 <ais523> those are double-apostrophes, by the way
16:43:19 <oklopol> when they're mixed, you just have to remember to start your lists with "< " or "> "
16:43:24 <AnMaster> ais523, ok how does it work
16:43:35 <ais523> a^@{,2}(a{2,}{2,}$!'')?(?0a*)$''
16:43:36 <oklopol> and you always have to end lists without spaces before the closing bracket
16:43:39 <ais523> sorry, I've corrected it
16:43:46 <ais523> it's mostly regex notation
16:43:55 <ais523> the @ separates tokens where the lexer would get it wrong otherwise
16:44:05 <ais523> '' is a fail, ! is a cut
16:44:11 <AnMaster> hm ok
16:44:16 <ais523> ?0 sets the group number to 0 so there's output
16:44:24 <oklopol> you lost me at "a".
16:44:34 <ais523> and a^ removes a negative a from the input string
16:44:38 <ais523> i.e. adds a positive a to the input string
16:44:45 <oklopol> yeah
16:44:46 <oklopol> okay
16:44:57 <oklopol> umm
16:45:01 <oklopol> that finds primes?
16:45:06 <oklopol> a^@{,2}(a{2,}{2,}$!'')?(?0a*)$'' <<< this
16:45:14 <ais523> yes
16:45:17 <ais523> and prints them out in unary
16:45:26 <oklopol> i find that relatively awesome
16:45:29 <ais523> without line breaks or separators, unfortunately, let me fix that
16:45:30 <oklopol> lets see
16:45:42 <AnMaster> ais523, so. it is just a case of saying a^ adds a positive a,
16:45:52 <ais523> a^@{,2}(a{2,}{2,}$!'')?(?0a*(\n)^+)$''
16:46:06 <ais523> AnMaster: it's more complicated than that, but that's the most common use for it
16:46:18 <ais523> that and matching one template against another, but there's = syntax for that
16:46:32 <ais523> (for TCness, you can specify that two expressions should match the same way)
16:46:33 <AnMaster> you could just say that in C strcat removes it's negated parameter?
16:46:37 <ais523> yes
16:46:40 <AnMaster> instead of saying that it appends it
16:46:48 <oklopol> {,2} does this mean 0-2?
16:47:16 <ais523> no, infinity-2
16:47:20 <AnMaster> then what is the point of negative strings, you could just call them positive ones and reverse the name of the operations of them
16:47:21 <ais523> but preferring 2
16:47:23 <AnMaster> ..
16:47:39 <oklopol> AnMaster: how is that less pointless?
16:47:41 <ais523> AnMaster: try writing ('ab'+)$('cd+'):1^
16:47:59 <AnMaster> ais523, I'm not familiar with that syntax
16:48:02 <AnMaster> is it PCRE?
16:48:05 <ais523> no
16:48:07 <ais523> it's Cyclexa
16:48:08 <oklopol> ais523: put it up on a bot
16:48:09 <ais523> '' = []
16:48:10 <oklopol> i wanna try it
16:48:15 <ais523> oklopol: I haven't written an interp yet
16:48:19 <oklopol> i see
16:48:20 <ais523> it took me several hours just to write the parser
16:48:41 <ais523> I'll paste the parser, which contains the spec as a POD, though, if you like
16:49:04 <ehird> ais523: please do
16:49:07 -!- Corun has quit ("This computer has gone to sleep").
16:49:08 <AnMaster> <oklopol> AnMaster: how is that less pointless? <-- well, instead of saying that foo() removes a negative string from the end of another string, you could just say that it appends a string to it
16:49:10 <ehird> I might implement it :DD
16:49:24 <oklopol> AnMaster: and what's the difference?
16:49:29 <ais523> ehird: you may change your mind when you see the incomplete spec
16:49:35 <AnMaster> oklopol, being able to think clearly about it?
16:50:17 <ais523> http://pastebin.ca/992032
16:50:38 <AnMaster> I don't see how it differ from normal strings except for terminology
16:51:00 <ehird> ais523: Oh shiet.
16:51:09 <ehird> HEY WHO WANTS TO HELP ME IMPLEMENT CYCLEXA ^_^
16:51:21 <ais523> ehird: I do, but I'm not sure if it's within my abilities
16:51:22 <AnMaster> ie, if you rename the operator from remove to append, and call the string positive instead, it would be the same
16:51:24 <ehird> ^_^ IT'LL BE TOTALLY FUN AND NOT HARD AT ALL ^_^
16:51:28 <ais523> you can use the parser I've written if you like
16:51:30 <ehird> ^_^ HOW COULD YOU SAY NO TO THIS FACE
16:51:35 <ais523> and that's just tokenizing
16:51:36 <AnMaster> oklopol, like multiplying everything by -1
16:51:37 <AnMaster> ..
16:51:39 <oklopol> w/e, i need to take a shit now... ais523: code and ircbottify cyclexa asap, and i have trouble understanding that example, so if you have time, perhaps comment it to be suitable for slow people like me, and all of you, NOPOL is SERIOUS STUFF, read my explanations about it!!
16:51:42 <ais523> and calculating group numbers
16:51:45 <oklopol> now ->
16:51:53 <ehird> ais523: Perhaps compiling it to e.g. Perl would be the best solution
16:52:01 <ehird> Most good regexp engines compile, so.
16:52:40 <ais523> ehird: It's not as uncompilable as Befunge, but still hard to compile
16:52:53 <ais523> the amount of state information being dragged around is quite substantial
16:52:54 <ehird> ais523: why?
16:53:07 * ais523 tries to remember whether they wrote down the multithreading syntax they were planning
16:53:13 <AnMaster> ais523, how does negative strings differ from postive ones except in the name of the operations on it
16:53:31 <ehird> ais523: maybe you should make it compileable - it'd probably be easier than interpreting
16:53:40 <ais523> AnMaster: you can mix them both in the same string
16:53:51 <ehird> also
16:53:52 <ehird> ais523: # '#"#)#}
16:53:54 <ehird> best line ever
16:53:56 <AnMaster> ais523, hm and?
16:53:57 <ais523> for instance you can have ab^c
16:54:16 <ais523> ehird: that's for fixing the Emacs syntax highlighter, which is confused by POD
16:54:42 <ais523> AnMaster: they don't really differ except for the names of operations, but it's very convenient to be able to reverse all your operations easily
16:54:50 <ais523> that way the = command can work
16:55:00 <ais523> and in normal regex engines you can't match against an input string and make it longer
16:55:18 <ehird> ais523: by the way, does that thing really parse it?
16:55:22 <ehird> I mean -- do we get a parse tree?
16:55:25 <AnMaster> ais523, indeed you can't edit input string
16:55:34 <ais523> ehird: it tokenises
16:55:42 <ehird> ais523: ah. so we still need another parser step
16:55:47 <ais523> there are bits of parse tree existing, but it doesn't create a full parse tree at any point
16:56:18 <ais523> but yes, it's mostly a lexer
16:56:26 <ais523> parsing is done to determine which number each group should be given
16:56:27 <ehird> ais523: i'm scared. i think i might mess this up :-)
16:56:50 <ehird> actually, i think i'll wait until you remember why it is hard to compile
16:56:54 <ehird> so you can fix that ;) a compiler will be easier.
16:57:52 <AnMaster> ais523, so basically you could consider the remove(negative("string")); same as append("string"); and so on?
16:57:54 <ais523> ehird: I know why it's hard to compile
16:58:06 <ais523> it's because you have to keep a record of what you did at each stage
16:58:07 <ais523> AnMaster: yes
16:58:17 <ehird> ais523: i don't get it
16:58:19 <ais523> ehird: so you can do the same thing later
16:58:22 <ais523> a simple example:
16:58:25 <ehird> how is it different from a really souped up regexp lib?
16:58:28 <ehird> they compile very well
16:58:29 <ais523> (a+)b+:1c+:1
16:58:31 <ehird> not to actual ccode, mind you
16:58:31 <AnMaster> ais523, except sometimes a string may end in a negative bit, so you would have to store it and complete it when you add something matching?
16:58:34 <ehird> but a DFA (iirc)
16:58:48 <ais523> that matches a certain number of as, followed by that many bs, followed by that many cs
16:59:01 <ehird> ais523: right, you can compile that to something like --
16:59:03 <ais523> AnMaster: I just store each character with a flag indicating whether it's negative or positive
16:59:18 <ais523> actually, red, green, blue, or purple, because I find colours make it easier to visualise
16:59:38 <ais523> two of those colours do the same thing, but I was planning to make them slightly different for output purposes
16:59:44 <ehird> $c0=0;$c1=0;$c2=0;while(consume("a")){$c0++};while(consume("b")){$c1++;}if($c1!=$c0) ...
16:59:44 <ehird> etc
16:59:50 <ehird> ais523: of course that's a very high level translation
16:59:52 <ehird> but you get the idea
16:59:55 <ehird> you CAN compile it
17:00:02 <ehird> by just having loads of state variables
17:00:12 <ais523> ehird: yes, but the more complicated the expression gets, the more the state variables multiply
17:00:21 <ais523> also, those state variables can be scoped, and so on
17:00:24 <ehird> ais523: well, even an interpreter will have tons of state variables
17:00:26 <AnMaster> ais523, ah, so what happens if (upper case negative, lower case positive, consider them same otherwise): remove "HJ" from "abHJahjyHJa"
17:00:28 <ais523> I don't think compiling's impossible, but it's difficult
17:00:31 <ehird> doesn't make it hard to compile
17:00:38 <ehird> its inevitable for any method of executing these
17:00:50 <AnMaster> or
17:01:00 <AnMaster> add "hj" to "abHJahjyHJa"
17:01:10 <ais523> AnMaster: you get "hjabHJahjyHJa", but there are other possible matches so backtracking returns other possibilities
17:01:16 <ais523> ehird: I suppose so
17:01:18 <ehird> ais523: I can't see how the state stuff is any different than interpreting.
17:01:26 <ehird> ais523: I mean, you need to keep track of exactly the same things when interpreting.
17:01:29 <AnMaster> ais523, hm. ok
17:01:30 <ais523> I imagined an interp containing its own call stack, state stack, choicepoint stack, etc
17:01:31 -!- nopolie has joined.
17:01:34 <ehird> ais523: of course, we need to garbage collect state
17:01:35 <ehird> :)
17:01:42 <ehird> :: 2
17:01:43 <oklopol> ^run <<<::..> > <:.> <::> <::.>< <:::>>>
17:01:44 <nopolie> < < < <::..> <:.> <:::>> < <::..> <::> <:::>> < <::..> <::.> <:::>>>>
17:01:44 <ehird> :: <>
17:01:47 <ehird> oh
17:01:49 <ehird> ^run <>
17:01:49 <nopolie> <>
17:01:51 <ehird> ^run ><
17:01:51 <nopolie> ><
17:01:54 <ehird> ^run < >< >
17:01:54 <nopolie> <>
17:01:58 <ais523> ^run < > < >
17:01:59 <oklopol> hmm
17:01:59 <nopolie> <>
17:01:59 <ehird> ^run < >a b c< >
17:01:59 <nopolie> invalid, like, characters
17:02:02 <oklopol> :)
17:02:03 <ehird> ^run < >:< >
17:02:04 <nopolie> <>
17:02:06 <ehird> ^run < >.< >
17:02:07 <nopolie> <>
17:02:10 <ehird> ^run >.<
17:02:10 <nopolie> >.<
17:02:11 <oklopol> hmm
17:02:15 <ehird> ^run >><<
17:02:15 <nopolie> pop from empty list
17:02:18 <oklopol> xD
17:02:18 <ehird> ^run >> <> <<
17:02:19 <nopolie> pop from empty list
17:02:21 <ehird> ^run >> <::> <<
17:02:21 <nopolie> pop from empty list
17:02:22 <oklopol> hmmhmm
17:02:23 <ais523> oklopol: so what do . and : do?
17:02:23 <oklopol> ah
17:02:25 <ehird> ^run > . > <::> < . <
17:02:25 <nopolie> pop from empty list
17:02:28 <oklopol> they're just tags
17:02:29 <AnMaster> spammy
17:02:31 <ais523> at least nopol seems easier to lex than Cyclexa does
17:02:33 <ehird> ^run <><>< <> < >< ><>>< > <> <>< > <> < >>
17:02:33 <nopolie> <> <> < <> < >< ><>> < > <> <>< > <> < > ><<><>
17:02:55 -!- Sgeo has joined.
17:03:05 <ehird> ais523: Any thoughts on why compilation is hard?
17:03:06 <oklopol> ehird: if you make a negative list deeper than then positive list on top of it, it's an error
17:03:10 <AnMaster> oklopol, how do you write hello world in that language
17:03:12 <oklopol> currently error @ python in my implementation
17:03:15 <oklopol> AnMaster: you don't
17:03:25 <AnMaster> oklopol, no input or output?
17:03:27 <oklopol> an actual implementation shouldn't even show the result
17:03:36 <ehird> hmm, if i'm goign to be coding Perl...
17:03:38 <oklopol> we are just manipulating nopular lists
17:03:39 <ehird> I need to install emacs
17:03:51 <ais523> ehird: because you'd have to simulate the callstack, choicepoint stack, state info, group match info, etc, meaning a compiled version would basically be an interp bundled with the code
17:03:53 <ehird> Tap tap tap tap
17:03:54 <ehird> $ sudo apt-get install emacs-snapshot-gtk emacs-goodies-el
17:04:01 <ehird> ais523: I doubt it
17:04:04 <ehird> Ever read a regexp compiler?
17:04:05 <AnMaster> ehird, why would your system lack emacs?
17:04:09 <oklopol> ais523: it's easy to parse, i already told all the rules
17:04:11 <ehird> AnMaster: it's new
17:04:15 <AnMaster> ah right
17:04:21 <AnMaster> ehird, did you try arch=
17:04:22 <AnMaster> ?
17:04:24 <ehird> Package emacs-snapshot-gtk is not available, but is referred to by another package.
17:04:29 <ehird> AnMaster: No.
17:04:49 <ais523> oklopol: I know it's easy to parse, I was pointing out that Cyclexa was hard
17:05:03 <ais523> C has both + and ++ as operators, but uses longest-prefix
17:05:05 <oklopol> ^run <: <. <::> <<::> <:.:> <::>>> <.:.:.>>
17:05:05 <nopolie> < <.:.:.> <:.:> <.:.:.>>
17:05:12 <oklopol> ais523: how do you know it's easy to parse?
17:05:15 <oklopol> hmm
17:05:21 <oklopol> i guess you might have read my explanation
17:05:23 <ais523> Cyclexa uses favoured-operators; it tries to lex out high priority operators before low priority operators
17:05:27 <ais523> oklopol: I did read it
17:05:54 <ehird> ais523: So ... I don't see why Cyclexia is hard to compile. Sure, you have to simulate the choicepoint stack and all of that: So what? Prolog compilers have to too.
17:05:57 <oklopol> ^run <: <. <::> <. <:> <::>>> <.:.:.>>
17:05:58 <nopolie> <. <:> <.. <.:.:.>>>
17:06:00 <oklopol> k applied once
17:06:01 <ehird> As well as the group stuff: just like a regexp ompiler
17:06:03 <ehird> *compiler
17:06:10 <ais523> ehird: OK, maybe I said the wrong thing
17:06:13 <oklopol> it adds a <.. >, meaning "quote"
17:06:24 <ais523> you did manage to compile Underload, after all
17:06:36 <ehird> ais523: But underload is legitimately hard to compile. :-)
17:06:46 <ehird> Cyclexia seems pretty sundry to me
17:06:47 <ais523> I just need to rewrite my Unlambda -> Underlambda compiler, then we can easily have a Unlambda -> C compiler
17:06:50 <oklopol> this is basically how i solved the renaming problem lc often has
17:06:52 <ais523> ehird: read the spec yet?
17:06:53 <oklopol> *-often
17:06:58 <ehird> ais523: Skimmed
17:07:01 <ais523> s/$/ :)/
17:07:33 <ehird> It's not like it has eval or self-modification, is it?
17:07:50 <ehird> But think about an interpreter ... it really seems like compiling it will be easier, because of all the full-program analysis you'll need to do
17:07:56 <ais523> it's meant to get eval eventually
17:08:09 <ehird> ais523: please don't :P
17:08:12 <ais523> but my personal guess is that you'll end up with some sort of bizarre interp/compiler mix
17:08:17 <ehird> Just add functions or something. Yay functions
17:08:24 <ais523> ehird: you asked me to add eval in the first place!
17:08:25 <ehird> ais523: Well -- Cyclexa::Runtime will be involved, I'm sure.
17:08:51 <ais523> and each group is capable of acting as a function, unless it was made anonymous with ?? (in which case its number is inaccessible to the user)
17:08:55 <ehird> ais523: But doing all that full analysis and then just simulating it as an interpreter...
17:09:08 <ais523> let's see how it turns out
17:09:16 <ais523> parsing will be the same for both interps and compilers, after all
17:09:43 * Sgeo wonders why ehird isn't in #ircnomic
17:10:02 <ehird> Sgeo: Your hints are not very subtle
17:10:07 <ehird> ais523: Indeed.
17:10:09 <ais523> Sgeo: why ehird in particular?
17:10:18 <ais523> should we all be in that channel?
17:10:25 <Sgeo> ais523, because ehird was in there before?
17:10:28 <ais523> ah
17:10:29 <Sgeo> But everyone's invited
17:10:35 <ais523> I'll see what it's like
17:11:37 <oklopol> it's not as empty as i assumed!
17:13:07 <oklopol> okay, i'll get going now, hope you can live without nopolie, even though everyone seems incredibly interested in nopol!
17:13:14 -!- nopolie has quit (Read error: 104 (Connection reset by peer)).
17:13:28 <oklopol> byes
17:14:04 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
17:39:31 -!- Corun has joined.
17:49:41 -!- timotiis has joined.
18:08:02 -!- Deewiant has quit (Remote closed the connection).
18:09:12 -!- ineiros has quit (Read error: 101 (Network is unreachable)).
18:09:12 -!- Deewiant has joined.
18:14:54 -!- Corun has quit ("This computer has gone to sleep").
18:17:36 -!- Corun has joined.
18:28:20 -!- timotiis has quit (Remote closed the connection).
18:42:51 -!- olsner has joined.
18:50:10 -!- Corun has quit ("This computer has gone to sleep").
19:00:48 -!- ec has joined.
19:02:01 <ec> ehird: ping
19:02:12 <ais523> hello ec
19:02:23 <ec> hey ais523
19:02:29 <ais523> we're in a conversation in #ircnomic at the moment, including ehird
19:02:39 <ec> Ah, didn't see that on his /whois
19:03:00 <ais523> I think it's still marked secret
19:03:07 <ais523> because it's unregistered
19:03:12 <ec> Ahhah
19:03:18 <ec> What's this channel for?
19:03:50 <ehird> ec: who are you
19:03:56 <ehird> oh
19:03:58 <ehird> from #slicehost
19:03:59 <ehird> hi!
19:04:04 <ec> me? huh?
19:04:07 <ehird> this channel is for esoteric programming languages.
19:04:10 <fizzie> I think the topic used to say what it was for, but now it's just fluffy bell rings.
19:04:13 <ais523> ec: here we discuss esoteric programming languages
19:04:20 <ec> whitespace brainfuck polyglot quines ftw!
19:04:32 <ec> That's the extent of my esoteric programming language knowledge )-:
19:04:51 <ais523> ec: well, we can teach you a lot more if you like
19:04:52 -!- thutubot has joined.
19:04:57 <ec> Anyway, just wanted to ping ehird, as I heard he was a fellow ban-ee from #Ruby-Lang. That, and we have the same first name.
19:05:01 <ais523> +ul (:aSS):aSS
19:05:01 <thutubot> (:aSS):aSS
19:05:24 <ais523> ec: I noticed that, I was wondering if you were ehird to start with because of that, but obviously not
19:05:31 <ec> lmao nope.
19:05:49 <ec> Never found another person with a first name spelled exactly the same as mine, it's uncommon. So yeah, hi other elliott d-:
19:06:15 <ec> I think zenspider really, really doesn't like said nomber.
19:06:27 <ehird> ec: I don't think zenspider likes anyone who isn't in his clique.
19:06:30 <ec> That too
19:06:39 <ehird> What did you get banned for? I got banned for 'being annoying'.
19:06:42 <ec> You should join the #ruby-lang banee channel, #rubyforce
19:06:57 <ec> I got banned for "I'm sorry, I thought there was a flood going on"
19:07:07 <ehird> ec: aperios is banned now? :P
19:07:07 <ec> And "Oops, I forgot to unban you before I went offline"
19:07:11 -!- timotiis has joined.
19:07:17 <ec> ehird: nah, but wolfe and I think a few others there are
19:07:35 <ehird> ec: #ruby-lang is easy-peasy to get banned for. I'm more awesome: I got banned from #python/
19:07:54 <ec> Never been in there, but i've heard python programmers are pretty... eccentric
19:08:00 <ec> Sounds like a group I should join d-:
19:08:02 <ehird> They're mostly friendly, though.
19:08:52 <lament> ehird: pfff! i got banned from #python several times
19:10:28 <ais523> lament: how?
19:10:58 <lament> i don't really remember
19:10:59 <ais523> anyway, first I'll point ec to http://esolangs.org/wiki/
19:12:42 <ais523> because that's one of the best resources for learning esolangs
19:21:39 -!- Corun has joined.
19:21:43 <ais523> hi Corun
19:23:54 -!- timotiis_ has joined.
19:27:57 -!- ais523 has changed nick to ais523_.
19:28:06 -!- ais523_ has changed nick to ais523.
19:29:36 <Sgeo> ehird, how did you get banned from #python ?
19:30:05 <ehird> Sgeo: beats me
19:43:10 <ais523> wow, there's a golfing/coding forum on thedailywtf.com
19:43:26 <ais523> not linked directly from the front page, but you can get to it by going to the sidebar and going up a few levels
19:44:43 <ehird> ais523: Or click 'Forums'
19:49:11 <ais523> ehird: it seems that your print-a-lot anagolf challenge was failing due to a bug that limited the maximum output size, that was fixed while the challenge was running
19:49:27 <ais523> that's why my C program timed out; it was trying to write to a full pipe
19:50:01 <ais523> many of the runtimes are pretty near the limit, which is 3 seconds for most langs
19:50:06 -!- timotiis has quit (Read error: 110 (Connection timed out)).
19:50:43 <ehird> ais523: yep
19:53:56 <ais523> heh, the 1000 digits thing was the output from Ruby's random number generator when given the right seed
19:54:58 <ehird> ais523: yeah
19:55:02 <ehird> mersene twister
20:20:24 <ec> lmao
20:28:06 -!- ehird has changed nick to ircnomic.
20:28:12 -!- ircnomic has changed nick to ehird.
20:37:30 <ais523> ehird: I was trying better than that, I wanted to give a compression challenge where the output was the binary for malloc
20:37:40 <ais523> but unfortunately it didn't seem to be stable between runs of my test C program
20:45:12 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
20:45:57 -!- thutubot has quit (Remote closed the connection).
20:52:04 -!- ehird has changed nick to nomiclog.
20:52:09 -!- nomiclog has changed nick to ehird.
21:06:34 -!- Overand has quit (Read error: 104 (Connection reset by peer)).
21:21:06 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
21:33:12 <SimonRC> "Brazil thinks you're cute." is a quote.
21:37:27 <GregorR> "Too bad you don't speak Portuguese HA HA HA"
21:39:46 <lament> learning portuguese is definitely worth it if brazil thinks you're cute
21:50:34 -!- oklopol has joined.
21:55:56 -!- Iskr has quit ("Leaving").
22:18:56 -!- timotiis_ has changed nick to password13.
22:18:59 -!- password13 has changed nick to timotiis.
22:22:02 <ehird> oklopol: Hi.
22:32:10 -!- Corun has quit ("This computer has gone to sleep").
22:37:38 -!- Corun has joined.
22:42:25 -!- oerjan has joined.
23:02:35 -!- olsner has quit ("Leaving").
23:20:02 <ehird> dfgdfg
23:20:02 <ehird> (php, although my favorite language is Visual Basic :-DD)
23:20:06 <ehird> die die die
23:35:27 <ehird> http://forums.thedailywtf.com/forums/p/6504/126446.aspx#126446 Wow.
23:42:26 <SimonRC> BTW, "Brazil" in that quote meant the country as a whole, not the individual people.
23:56:17 <lament> if the entire country thought i was cute
23:56:33 <lament> i would RUN to the airport
2008-04-22
00:00:40 <SimonRC> well, the situation that it was an analogy for was almost that scary
00:01:40 <lament> ...to fly to brazil, i mean
00:02:35 * oerjan recalls such a situation in the webcomic A Miracle of Science
00:02:42 <oerjan> except it was Mars, not Brazil
00:02:59 <ehird> oerjan: googling tells me that that is the source of the quote
00:03:35 -!- pikhq has joined.
00:04:23 <oerjan> ah
00:05:16 * Sgeo forces pikhq and oerjan into #ircnomic
00:05:59 <ehird> well, oerjan DID participate in a nomic, iirc
00:06:01 <ehird> so maybe he will come
00:06:29 <oerjan> except once again, i am preparing to go to bed
00:06:47 <oerjan> besides, probably not
00:31:18 -!- timotiis has quit (Read error: 110 (Connection timed out)).
00:42:40 -!- oerjan has quit ("Good night").
00:51:34 * SimonRC goes to bed (00:51).
00:58:07 -!- ec has left (?).
01:08:49 -!- sebbu2 has quit ("@+").
01:26:51 -!- Corun has quit ("This computer has gone to sleep").
01:36:22 -!- immibis_ has joined.
01:36:40 <immibis_> [12:32] *** immybo has been kicked from the channel by immybo (Cause you suck).
01:37:08 <oklopol> hi immy
01:37:10 <oklopol> whazzup
01:38:57 <bsmntbombdood> oklopol you are finnish right?
01:39:49 <immibis_> The opposite of down
01:43:19 <oklopol> bsmntbombdood: i'm that
01:44:50 <oklopol> bsmntbombdood: i'm assuming you had a reason to ask :D
01:44:59 <bsmntbombdood> no not really
01:45:19 <oklopol> i see, i see
01:45:28 <oklopol> so i hear that nopol owns ass
01:45:33 <oklopol> what do you think?
01:45:50 <bsmntbombdood> who is nopol?
01:46:17 <ehird> language
01:47:14 <oklopol> my newest language, characterized by having Too Many Characters in the charset
01:48:09 <oklopol> 4 that is, <.:>
01:48:23 <oklopol> ehird keeps crying about the dotties :|
01:51:05 -!- nopolie has joined.
01:51:20 <oklopol> <: <<<> <<> <>>> <<> <>>>
01:51:24 <oklopol> ^run <: <<<> <<> <>>> <<> <>>>
01:51:25 <nopolie> list index out of range
01:51:27 <oklopol> :<
01:51:42 <oklopol> ^run <: <<> <<> <>>> <<> <>>>
01:51:42 <nopolie> < <> <>>
01:51:53 <oklopol> ^run <: <<::> <<::> <::>>> <<> <>>>
01:51:54 <nopolie> < <> <>>
01:52:03 <oklopol> ^run <: <. <::> <<::> <::>>> <<> <>>>
01:52:04 <nopolie> < < <> <>> < <> <>>>
02:08:29 -!- Sgeo_ has joined.
02:22:17 -!- Sgeo has quit (Connection timed out).
03:19:58 -!- Sgeo_ has changed nick to Sgeo.
03:52:09 <RodgerTheGreat> oklopol: too many <>, not enough .:
03:52:55 <ehird> RodgerTheGreat: Lies
03:53:03 * RodgerTheGreat shrugs
03:53:09 <RodgerTheGreat> hey, I just tell it like it is
03:53:27 <ehird> RodgerTheGreat: He originally had it just <> and space
03:53:42 <ehird> < ><><>< <><<><>> <>>
03:53:42 <RodgerTheGreat> hm
03:53:42 <ehird> etc
03:53:45 <ehird> it was beautiful
03:53:57 <RodgerTheGreat> what's the actual language like?
03:54:49 <ehird> RodgerTheGreat: It has lists of negative depth.
03:54:51 <ehird> () = 0 depth
03:54:53 <ehird> (a b c) = 1 depth
03:54:57 <ehird> ((a b) (c d)) = 2 depth
03:55:07 <ehird> (((a b) (c d)) ((e f) (g h))) = 3 depth
03:55:08 <ehird> etc
03:55:12 <ehird> it has -1 depth, -2 depth ..
03:55:16 <RodgerTheGreat> so were they turned inside out, or did they cancel>
03:55:22 <ehird> RodgerTheGreat: turned inside out basically.
03:55:29 <ehird> RodgerTheGreat: and the language is based on tree rewriting of those lists
03:55:30 <RodgerTheGreat> interesting
03:55:39 <RodgerTheGreat> sounds like it'd be tricky to make unambiguous
03:55:49 <ehird> RodgerTheGreat: even the syntax is ambigous
03:55:52 <ehird> >...< is a negative list
03:55:54 <ehird> <...> a positive one
03:56:01 <ehird> it uses whitespace to determine which it is
03:56:24 <RodgerTheGreat> this is pretty much like every oklopol language, then
03:56:29 <ehird> RodgerTheGreat: I know, I love 'em
03:56:57 <ehird> and I am talking to you, RodgerTheGreat, at 3:57 AM.
03:57:03 <ehird> I may or may not be tired.
03:57:11 <RodgerTheGreat> well, you can't help but admire the creativity if nothing else
03:57:43 <ehird> what, of being up a- Oh.
03:57:44 <ehird> ;)
04:03:42 -!- Slereah_ has joined.
04:03:47 <Slereah_> Guys.
04:03:49 <Slereah_> In Chef.
04:04:02 <Slereah_> Can you add curry to the recipie for functional programming?
04:04:39 <ehird> Slereah_: #ircnomic
04:04:58 <Slereah_> Wot
04:20:25 -!- pikhq has quit (Read error: 110 (Connection timed out)).
04:24:11 <GregorR> Nobody's invited me to #ircnomic D-8
04:25:58 <Slereah_> It's a secret conspiracy against you.
04:27:05 <ehird> GregorR: #ircnomic!
04:33:53 <Slereah_> Is the term bounded storage machine widespread?
04:34:14 <Slereah_> Google has like 32 results, and the first result is the esowiki
04:34:43 <Slereah_> And a lot of the results are from the esolang communauty.
04:35:38 <Slereah_> The only other sauce seems to be "Constant-Round Oblivious Transfer in the Bounded Storage Model"
04:36:37 <ehird> Slereah_: i've heard it
04:55:01 <Sgeo> GregorR, please do join #ircnomic
04:55:42 <Sgeo> Currently, a proposal that could kill the ruleset is passing.
04:59:16 <ehird> GregorR: Yes, please do
05:03:53 <ehird> GregorR: ping
05:23:15 -!- immibis_ has quit (Read error: 104 (Connection reset by peer)).
05:43:28 -!- Sgeo has quit ("Ex-Chat").
06:13:35 -!- cherez has quit (Remote closed the connection).
06:13:58 -!- cherez has joined.
06:23:58 <ehird> so -- cool domain names
06:24:01 <ehird> voyni.ch
06:39:58 -!- olsner has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:37 -!- Iskr has joined.
08:23:25 -!- ehird_ has joined.
08:39:36 -!- ehird has quit (Read error: 110 (Connection timed out)).
08:49:53 -!- GreaseMonkey has joined.
09:09:35 -!- immibis has joined.
09:10:07 -!- immibis has set topic: http://tunes.org/~nef/logs/esoteric/ | Made of fluffy bell rings and envelope tings, whatever they are..
09:23:37 -!- ehird_ has set topic: http://tunes.org/~nef/logs/esoteric/ | Made of fluffy bell rings and envelope tings, whatever they are. also green flowers.
09:34:14 -!- immibis has set topic: htpt://tunes.org/~nef/logs/esoteric/ | Made of fluffy oil rigs and envelope tings, whatever they are. Also green flowers. http://kevan.org/rubicon/.
09:35:59 -!- immibis has set topic: http://tunes.org/~nef/logs/esoteric/ | Made of fluffy oil rigs and envelope tings, whatever they are. Also green flowers. http://kevan.org/rubicon/ | We are getting paid $0.00 to advertise Rubicon in our topic. Yay, free money!.
09:48:22 -!- oklopol has quit (Read error: 110 (Connection timed out)).
09:49:15 -!- nopolie has quit (Read error: 110 (Connection timed out)).
10:12:06 -!- immibis has quit ("Leaving.").
10:17:57 -!- ehird_ has set topic: http://tunes.org/~nef/logs/esoteric/ | some irish people have been noted here, please report them if you find any.
10:22:17 -!- oklopol has joined.
10:28:30 <ehird_> oklopol: oklohi
10:28:37 <ehird_> i am oklotired
10:28:52 <ehird_> all words involving oklopol in any way must be prefixed oko- or oklo-
10:31:56 <oklopol> is taht so :o
10:32:02 -!- sebbu has joined.
10:35:44 -!- Corun has joined.
10:36:53 <ehird_> oklopol: slept, i have not
10:37:30 <fizzie> ITYM "olkoslept" HTH HAND.
10:37:42 <fizzie> Aagh, the typo.
10:40:50 -!- GreaseMonkey has quit ("Unisex.").
10:48:56 <ehird_> sdfsdf
10:54:50 -!- oklopol has quit (Read error: 110 (Connection timed out)).
12:25:03 -!- oklopol has joined.
12:39:01 <oklopol> {x:_;y:_;?x<?y&x>y=>(x,y)=(y,x)} <<< sorting a list in Ef, should run in O(n^2 lg n) average time despite of being quite clearly declarative
12:39:30 <oklopol> in Ef (Ef is for Fixed point) function calls are executed infinite times
12:39:42 -!- sebbu2 has joined.
12:40:11 <oklopol> so sort={x:_;y:_;?x<?y&x>y=>(x,y)=(y,x)};sort [4 3 5 2 6] will actually do fixed_point(sort,[4 3 5 2 6])
12:40:40 <oklopol> this is quite fun as we can calculate stuff like pi exactly, well, superficially
12:41:01 <oklopol> floating point numbers just have an epsilon
12:41:14 <oklopol> more interesting than nopol?
12:41:27 -!- Corun has quit ("This computer has gone to sleep").
12:41:31 <oklopol> i hope so, i haven't heard about a fixed-point language
12:41:58 <oklopol> atm, it seems to me like it's a whole new paradigm
12:42:05 <oklopol> probably a sucky one, but different.
12:42:57 <oklopol> basically, functions just try to find something they can fix in their arguments, and automatically recurse
12:43:12 <oklopol> explicit recursion is possible, in case the declarative way is too slow
12:44:24 <oklopol> i have no proof it's n^2 lg n, perhaps it's more like n^3
12:45:16 <oklopol> oh
12:45:18 <oklopol> actually
12:45:38 <oklopol> it's O(n^2), because insertion sort arises from the definition.
12:45:45 <oklopol> :)
12:46:03 <oklopol> or actually bubble sort
12:47:57 <oklopol> isn't that awesome?
12:48:11 <oklopol> isn't it?!?!?!
12:48:14 -!- sebbu has quit (No route to host).
12:48:15 -!- sebbu2 has changed nick to sebbu.
12:48:23 <oklopol> hmph :<
12:49:11 <oklopol> lemme explain that sort, in case it's not all that intuitive
12:49:34 <oklopol> x:_; y:_; <<< set x alopol ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )")
14:54:02 -!- ehird_ has quit (Remote closed the connection).
15:18:58 -!- oklopol has joined.
15:19:50 -!- Slereah has joined.
15:34:29 -!- ehird has joined.
15:41:58 -!- ehird has set topic: http://tunes.org/~nef/logs/esoteric/ | some irish people have been noted here, please report them if you find any.
15:44:38 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
15:58:46 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
16:30:42 -!- oklopol has joined.
16:34:55 -!- timotiis has joined.
16:38:51 -!- RodgerTheGreat has joined.
16:57:39 -!- oklopol has quit (No route to host).
17:38:07 -!- oklopol has joined.
17:48:17 <Slereah> I'm trying to come up with something so completely useless that one might wonder if I didn't completely lost my mind.
17:48:34 <Slereah> A brainfuck interpreter in recursive functions.
17:58:23 -!- oklopol has quit (Read error: 113 (No route to host)).
18:04:25 <ehird> Slereah: easy
18:05:44 <Slereah> For you maybe!
18:06:56 <Slereah> I'm not even exactly sure how to execute each instruction for an arbitrary number of them
18:10:04 -!- lament has quit ("Ducks!").
18:11:14 -!- testyfoo has joined.
18:11:20 <testyfoo> test
18:11:22 -!- lament has joined.
18:11:30 -!- testyfoo has quit (Remote closed the connection).
18:11:41 -!- testyfoo has joined.
18:11:48 <testyfoo> Test numero 2.
18:12:25 <lament> how come as soon as i saw testyfoo i knew it was ehird?
18:12:43 <ehird> lament: I'm the only one who spams #esoteric with tests, apart from immibis
18:12:44 <ehird> ;)
18:15:30 -!- testyfoo has quit (Remote closed the connection).
18:23:20 -!- oklopol has joined.
18:25:09 -!- oklofok has joined.
18:47:14 -!- oklofok has quit (No route to host).
18:47:33 -!- oklopol has quit (Read error: 113 (No route to host)).
18:53:47 -!- oklopol has joined.
19:16:54 -!- timotiis_ has joined.
19:28:17 -!- timotiis has quit (Read error: 113 (No route to host)).
19:37:18 -!- timotiis_ has changed nick to timotiis.
20:06:26 -!- Iskr has quit ("Leaving").
20:10:53 <ehird> oklopol: you know how you always wished pygame just let you pushed pixels
20:13:53 <oklopol> i might know
20:24:48 <ehird> oklopol: you said that pygame would be far awesome if it was just put(x,y,col)
20:25:28 <ehird> well
20:25:31 <ehird> i just made TINYGAME
20:25:35 <ehird> which wraps around pygame
20:25:37 <ehird> and is basically that
20:26:38 <ehird> oklopol: http://rafb.net/p/FQCAY754.html here it is
20:26:59 <ehird> the example game is where you control a 10px square with the arrow keys, and it slides around the window.
20:27:16 <ehird> gonna do GoL now
20:27:17 <ehird> :D
20:30:28 <oklopol> hehe, fun :D
20:35:25 <ehird> oklopol: the example is really addictive isn't uit
20:38:05 <oklopol> :)
20:38:05 <oklopol> shuuuure
20:39:04 <ehird> oklopol: you didn't try it
20:39:05 <ehird> :<
20:39:40 <oklopol> i did.
20:40:02 <oklopol> i did not find a challenge, so i didn't find it addictive
20:40:13 <oklopol> have you tried bounca?
20:40:50 <ehird> oklopol: it is a challenge: can you actually write anything with that
20:40:53 <ehird> because it's quite slow
20:41:02 <ehird> i'm sure you can squeeze something out of it ;)
20:47:09 <oklopol> hhmm
20:47:21 <oklopol> well, i've written stuff using slower drawing speeds...
20:47:37 <oklopol> like my ti-89 pong :P
20:47:54 <ehird> oklopol: actually, pong would be really easy with that thing
20:48:01 <oklopol> also i made the game where you eat apples with a snake
20:48:05 <ehird> you should try it, i can guarantee you it's 59x nicer than pygame ;)
20:48:10 <ehird> oh, snake would be easy too
20:48:17 <oklopol> 2 hours with the basic
20:48:23 <oklopol> the basic sucks ass
20:48:26 <oklopol> god i hate it
20:48:31 <oklopol> hmm
20:48:48 <oklopol> easy, yes
20:48:56 <oklopol> i can scribble pong for ya
20:59:38 <oklopol> hmm
20:59:50 <oklopol> interesting choise of names for height and width
20:59:57 <ehird> oklopol: are they reversed
20:59:58 <ehird> :(
21:00:02 <ehird> no
21:00:03 <oklopol> sure
21:00:04 <ehird> they're right
21:00:05 <ehird> i think
21:00:07 <oklopol> okay
21:00:11 <ehird> hmm no
21:00:13 <ehird> you are right
21:00:15 <ehird> oklopol: okay, one sec
21:01:14 -!- Sgeo[College] has joined.
21:01:33 <ehird> oklopol:
21:01:33 <ehird> okay
21:01:56 <ehird> oklopol: http://rafb.net/p/RGME0U77.html
21:01:57 <ehird> updated
21:02:08 <ehird> oklopol: so, when you want a colour
21:02:10 <ehird> do (r,g,b)
21:02:19 <ehird> game[x,y] = col
21:02:25 <ehird> game[x,y] will get the value dunno if that's useful
21:02:33 <ehird> game.redraw(), makes it redraw (duh)
21:02:40 <ehird> on_tick is called each step of the game loop
21:02:52 <ehird> on_event whenever something happened, keypress or whatever. just passed as a pygame event. trivial.
21:02:57 <ehird> on_start is executed just before the game loop starts.
21:03:13 <ehird> oklopol: so you just subclass Game and override on_{tick,event,start} as you fish using the functions it gives
21:03:24 <ehird> and then do the Game(...) stuff and .run() it
21:10:14 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
21:11:23 <ehird> oklopol: how's the pong looking
21:11:29 <ehird> does my lib suck. if so how :p
21:12:04 <oklopol> there's a lot to type, nothing intresting yet.
21:12:38 <oklopol> interesting
21:13:12 <ehird> oklopol: is there a lot to type for my widdle framework?
21:13:13 <ehird> that's bad
21:13:19 <ehird> i tried to make 0 typing needed
21:13:23 <ehird> what is taking a long time to type? :(
21:13:45 <oklopol> i can paste the code soon
21:13:52 <oklopol> almost "playable"
21:18:11 -!- Sgeo[College] has joined.
21:19:02 <oklopol> okay
21:19:04 <oklopol> ready
21:19:16 <oklopol> i'm harrassed on almost every channel, so took a while
21:19:30 <oklopol> anyway, it's a very stupid and trivial pong
21:19:33 <oklopol> i can paste
21:19:38 <ehird> oklopol: but it's PONG with MY LIBRARY
21:19:39 <ehird> that's AWESOME
21:20:08 <oklopol> http://www.vjn.fi/pb/p546351241.txt <<< the parts i could reuse i stole from yours
21:20:33 <oklopol> essentially just wrote it on top of yours as dirty as possible
21:20:35 <ehird> oklopol: its still called Test
21:20:36 <ehird> :DDD
21:20:39 <oklopol> well
21:20:45 <oklopol> the comment is the same :P
21:20:56 <ehird> oklopol: the class is called Test
21:20:58 <ehird> anyway
21:21:00 <oklopol> hah
21:21:02 <oklopol> indeed :D
21:21:03 <ehird> oklopol: was my farmework cool
21:21:08 <oklopol> well
21:21:10 <ehird> or does it have CRAPNESS in it
21:21:24 <oklopol> that's all a game programming framework needs to offer.
21:21:33 <ehird> oklopol: but you said there was a lot of typing
21:21:51 <oklopol> well
21:21:56 <oklopol> not *that* much
21:22:04 <oklopol> hmm...
21:22:15 <ehird> oklopol: you're setting float pixels
21:22:15 <ehird> coo
21:22:38 <oklopol> when doing 2d, you need to use vectors, usually, perhaps let game be indexed with them
21:22:39 <oklopol> umm
21:22:43 <oklopol> i mean complexes
21:22:49 <oklopol> am i now? :D
21:22:50 <oklopol> indeed
21:22:52 <ehird> oklopol: and you have height/width mixed up
21:23:01 <ehird> and also you print '-1' for ages on the console on a lose
21:23:37 <oklopol> yarrrrr
21:23:39 <ehird> oklopol: but the game rocks
21:23:40 <ehird> totally
21:23:43 <ehird> just need to put the fps up
21:23:47 <oklopol> fastest way to show who won
21:23:50 <oklopol> hmm
21:23:54 <oklopol> actually could just have crashed.
21:24:05 <ehird> (maxfps kw option, in case you're lazy)
21:24:09 <ehird> you could just make it move more pixels though
21:24:22 <oklopol> hmm
21:24:27 <oklopol> you mean el ball?
21:24:30 <ehird> oklopol: well, if you make the ball go a bit faster
21:24:33 <ehird> then i'll add networking
21:24:33 <ehird> maybe
21:24:34 <ehird> :D
21:24:51 <oklopol> xD
21:24:55 <oklopol> sounds awesome
21:25:39 <oklopol> hmm
21:25:43 <oklopol> the game needs a twist.
21:25:48 <oklopol> perhaps i'll add spins.
21:26:55 <ehird> oklopol: pygame is so bloated for providing more than what i do isn't it ;)
21:27:01 <oklopol> yeah
21:27:14 <oklopol> :D
21:27:21 <oklopol> okay, i'll add spins now
21:27:25 <ehird> though it is admittedly *marginally* faster...
21:27:27 <oklopol> they're gonna be awesome, maybe.
21:28:11 <oklopol> hmm
21:28:26 <oklopol> python's built-in lists should be poppable from both ends
21:28:31 <oklopol> are they? iirc they aren't
21:29:10 <ehird> oklopol: no
21:29:12 <ehird> python has a deque for that
21:29:14 <ehird> but
21:29:18 <ehird> x=lst[0];del lst[0]
21:30:48 <oklopol> yeah but isn't that O(n)?
21:30:52 <oklopol> thaz whaddi meant
21:31:03 <ehird> oklopol: i dunno
21:31:06 <ehird> but... use a deque
21:31:24 <ehird> oklopol: from collections import deque
21:31:36 <ehird> you have .append,.appendleft,.clear,.extend,.extendleft,.pop,.popleft...
21:31:39 <ehird> http://docs.python.org/lib/deque-objects.html
21:37:35 <oklopol> yarr
21:39:20 <ehird> oklopol: python does have libraries you know, you might want to look at them sometime ;0
21:39:22 <ehird> *'_
21:39:23 <ehird> *;)
21:39:35 <oklopol> :D
21:39:38 <oklopol> perhaps some day
21:39:54 <oklopol> can i use it another two years every day first, and then check?
21:40:17 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
21:42:52 <ehird> oklopol: hehe, ok :P
21:42:59 <ehird> oklopol: how's pongv2 coming?
21:43:21 <oklopol> hard to debug when you can't see the errors
21:43:25 <oklopol> but it's almost ready
21:43:31 <ehird> oklopol: can't see the errors?
21:43:48 <oklopol> whhhell, to see errors i need to run from idle
21:43:56 <oklopol> which crashes the whole comp when using pygame
21:44:05 <oklopol> or, i need to catch the exception
21:44:15 <oklopol> but that sounds like cheating
21:45:05 <ehird> <oklopol> whhhell, to see errors i need to run from idle
21:45:07 <ehird> ???
21:45:13 <ehird> just run it from windows cli
21:45:34 <ehird> oklopol: and it'll work
21:45:40 <oklopol> and when it errors, it closes
21:45:52 <ehird> err no, oklopol
21:45:54 <ehird> not if you do
21:45:56 <ehird> start->run->cmd
21:45:59 <ehird> cd to the dir
21:46:01 <ehird> and THEN 'python filename'
21:46:04 <ehird> the window will stay.
21:46:05 <oklopol> yes yes...
21:46:13 <oklopol> it's not that i don't know this
21:46:14 <ehird> just keep a cli open in the right dir
21:46:15 <ehird> :-)
21:46:22 <oklopol> i'm just, well, lazy.
21:46:26 <oklopol> well
21:46:28 <oklopol> true
21:46:37 <ehird> oklopol: if you're lazy then seeing the errors would speed up your coding
21:46:38 <ehird> ;)
21:46:43 <oklopol> heh
21:47:08 <oklopol> true... but true laziness means being too lazy to think what's most work.
21:47:33 <oklopol> asdasd
21:47:35 <ehird> oklopol: thats why i just did the thiinking for you
21:47:36 <ehird> ;)
21:47:42 <oklopol> "python" is not recognized...
21:47:44 <oklopol> i need to set path
21:47:47 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
21:48:15 <oklopol> hmmhmm... where's path in vista..
21:48:34 <ehird> oklopol: you can do it from cli
21:48:40 <ehird> set PATH=blahblah:%PATH%
21:48:42 <ehird> i think
21:48:49 <ehird> doesnt persist, but.
21:48:52 <ehird> oklopol: also
21:48:55 <ehird> just type out the full path
21:49:01 <ehird> and use up-arrow to get the cmd frmo the history
21:49:04 <ehird> when you want to run it again
21:50:29 <oklopol> i put it there permanently now
21:53:28 <Slereah> Hm.
21:53:30 <Slereah> "Incidentally, even the solutions of the differential equations for a three-body gravitational system are non-computable."
21:53:34 -!- timotiis has quit (Read error: 104 (Connection reset by peer)).
21:53:35 <Slereah> This is false.
21:53:46 <Slereah> It makes me doubt the accuracy of the Gravity article D:
21:54:08 <oklopol> okay i hve spins
21:55:25 <Slereah> It has no good solution, but there's converging series for the three body problem
21:56:22 <oklopol> hehe
21:56:26 <oklopol> perhaps i should link the game
21:56:27 <oklopol> i mean
21:56:28 <oklopol> paste
21:56:36 <oklopol> i'll make the ball inc its speed, and then link
22:01:58 <oklopol> hmm
22:02:05 <oklopol> it's a bit buggy, but what the heck
22:09:15 <oklopol> http://www.vjn.fi/pb/p425253333.txt <<< width/height still wrong
22:09:23 <oklopol> and sorry, i got addicted
22:09:28 <oklopol> so took a while to paste'
22:09:58 <oklopol> argh
22:10:04 <ehird> oklopol: just flip width/height
22:10:06 <ehird> the param names
22:10:07 <ehird> and its ok
22:10:11 <oklopol> made a trivial change just before pasting, and managed to make an error :D
22:10:20 <ehird> and ill check it in a sec
22:10:26 <ehird> not right now, but just in a min
22:10:41 <oklopol> erwpase
22:10:42 <oklopol> repase
22:10:44 <oklopol> repaste
22:10:59 <oklopol> http://www.vjn.fi/pb/p132165433.txt
22:11:03 <ehird> oklopol: if someone told me i could write a pong game with as good as ball as that in that amount of code i'd have called them a liar
22:11:04 <ehird> :P
22:11:29 <lament> how much code?
22:11:33 <lament> oh
22:11:40 <lament> well, of coures! it's python!
22:11:42 <ehird> lament: that fully implements pong
22:11:45 <oklopol> i didn't especially aim for shortness
22:11:48 <ehird> lament: using MY LIBRARY
22:11:50 <ehird> :D
22:12:15 <oklopol> could do a lot shorter, i'm not sure what i aimed for, perhaps just wanted not to have to think at all
22:12:20 <oklopol> anyway, check out the spins :P
22:12:40 <oklopol> i always kill myself with them :<
22:12:48 <oklopol> you can pass the ball to yourself :P
22:13:19 <ehird> oklopol: i will in ~60sec
22:14:26 <ehird> oklopol: i want to bloat tinygame up a bit though
22:14:32 <ehird> so that you can do a bit more than just pixels
22:14:34 <ehird> for only one reason--
22:14:36 <ehird> speed
22:14:46 <ehird> i can't do the awesome things i want to do with it right now
22:14:51 <ehird> because it won't go fast enough ;)
22:14:52 <oklopol> lol @ the spins, i just ended up passing the ball to myself 5 times, just to end up dying :D
22:14:58 <oklopol> well true
22:15:42 <ehird> oklopol: it will still be VERY VERY TINY though
22:15:44 <ehird> so don't worry
22:16:21 -!- timotiis has joined.
22:16:23 <oklopol> LOL this game is AWESOME xD
22:16:34 <oklopol> make something for networking, i wanna own you at this :D
22:17:09 <ehird> oklopol: will do once i test it
22:17:15 <ehird> i will do it the AWESOME route
22:17:17 <ehird> invent dpy
22:17:20 <ehird> distributed python
22:17:26 <ehird> oklopol: you just give it an object
22:17:28 <ehird> and it exposes it
22:17:29 <oklopol> yeah
22:17:31 <ehird> so you can do
22:17:37 <ehird> dpy.expose(foo, port=453453)
22:17:37 <oklopol> that would be awesome
22:17:39 <ehird> and then in another app
22:17:53 <ehird> foo = dpy.fetch(host='foobar', port=453453)
22:18:00 <ehird> and voila
22:18:33 <ehird> oklopol: ruby has basically that called DRb (distributed ruby)
22:18:37 <ehird> python needs it
22:18:38 <ehird> it's awesome
22:20:39 <ehird> oklopol: anyway, brb in a sec
22:20:41 <ehird> then i'll test
22:20:47 <ehird> then i'll NETWORK
22:20:57 <ehird> oklopol: oh and i won't handle latency or anything. that's not hardcore enough
22:24:28 <oklopol> http://www.vjn.fi/pb/p444246132.txt <<< officialest version
22:24:36 <oklopol> and last for tonight prolly
22:24:46 <oklopol> try the spins, man :D
22:24:58 <oklopol> ehird: did you read about Ef?
22:24:59 <ehird> oklopol: ok, gimme 60 secs or so
22:25:00 <ehird> then ill network
22:25:01 <ehird> and yeah
22:25:03 <ehird> ef loooks cool
22:25:04 <oklopol> my fixed point language
22:25:28 <oklopol> did you get both the examples?
22:25:38 <oklopol> i've just made a slow sort, and pi.
22:25:42 <oklopol> sort = {x:_;y:_;?x<?y&x>y=>(x,y)=(y,x)};
22:25:43 <oklopol> pical = (.acc, denom, sign):{(acc + sign/denom) (denom + 2) (-sign)};
22:25:43 <oklopol> pi = (pical 1 3 -1) * 4;
22:26:08 <oklopol> the pi there is fairly clear, i think, although there actually shouldn't be commas in the argument list
22:29:05 -!- oerjan has joined.
22:31:40 <oklopol> god this game is addictive
22:32:03 <oklopol> i've been playing for like half an hour
22:32:06 <oklopol> one player per hand
22:32:07 <oklopol> :D
22:34:11 <ehird> vcvxnmmnvbcvbnnbvcnvbnm,.n,mbnmnm,.mn,m..../,.,m././,.mn,mn,.m,nbvcvvbnbvncbnmnasdfgghfdgsddghfhdfsdfghj.kjkklk;;klk;l;rewetuyreyuyiuqewertoiuiu31`1`314356867890[]-090-0-987yuyttqwerttyurtuiupo79op[
22:34:14 <ehird> ]0i;irhgfagdhgjkujllkuyjhdfnm,nvc
22:34:15 <ehird> sorru
22:34:38 <ehird> oklopol: gonna look now
22:35:37 <ehird> oklopol: fix the hight/weight
22:35:40 <ehird> just flip the names
22:35:41 <ehird> :D
22:35:42 <oklopol> :D
22:35:44 <oklopol> bbbut
22:35:52 <oklopol> i have to flip them in *two files*
22:36:09 <ehird> oklopol: no
22:36:13 <ehird> i already showed you the updated game one
22:36:17 <ehird> ready to paste
22:36:53 <oklopol> i did a manual swap already
22:36:56 <ehird> oklopol: yours doesn't report the winner any more.
22:36:57 <oklopol> all you did was change the names?
22:36:57 <ehird> it just exits
22:37:01 <oklopol> yeah
22:37:08 <ehird> i guess its obvious though
22:37:11 <oklopol> i figured you will know which side the ball was one
22:37:12 <oklopol> *on
22:37:20 <ehird> oklopol: how does i accellerate ball
22:37:22 <ehird> and flip
22:37:28 <oklopol> whhhel
22:37:29 <oklopol> so
22:37:34 <oklopol> first of all
22:37:47 <oklopol> it takes a bit of the speed the... puck has
22:37:52 <oklopol> puck?
22:37:53 <oklopol> anyway
22:37:57 <oklopol> also, it takes spin
22:38:05 <ehird> oklopol: aha
22:38:06 <ehird> gotcha
22:38:06 <ehird> okay
22:38:07 <oklopol> spin works as it does for something like a ping pong ball
22:38:10 <ehird> now i network it
22:38:15 <oklopol> go for it
22:38:47 <ehird> i warn you, oklopol, dpy may be the most awesome thing ever
22:39:41 <ehird> oklopol: also, it will be a huge security risk
22:39:42 <ehird> but ;)
22:39:43 <oklopol> nothing can beat the awesomeness of the suicide spins
22:39:46 <oklopol> in the game
22:39:50 <oklopol> heh
22:41:24 <ehird> 7079 is an awesome port, oklopol
22:41:27 <ehird> (py in ascii)
22:43:32 <oklopol> asdadsadsasdasdadsadasd the spins are too hard for me
22:43:52 <Slereah> sdfsdfsdf
22:45:25 <ehird> oklopol: khdsfkjhsdflkhsdfkjsdhfjksdfj dpy is hard
22:45:26 <ehird> :(
22:45:30 * ehird tries to find another way to do it
22:45:52 <ehird> oklopol: http://rpyc.wikispaces.com/ hmm
22:46:42 <oklopol> http://www.vjn.fi/pb/p365653263.txt <<< minimal change in Ball
22:47:33 <oklopol> lol
22:48:27 <oklopol> this game must bethe most authentic ping pong game ever made
22:48:43 <ehird> oklopol: its hard
22:48:53 <ehird> its 2d but the ball acts 3d
22:49:04 <oklopol> when you get a good ball going, it's awesome
22:49:05 <oklopol> hmm?
22:49:09 <oklopol> now it doesn't
22:49:12 <oklopol> *no
22:49:30 <ehird> oklopol: wow. i just bashed it, and it curved round right into my goal
22:49:31 <ehird> XDXDXD
22:49:38 <ehird> 'no, fuck YOU'
22:49:41 <oklopol> :DDD
22:49:42 <oklopol> yeah
22:49:51 <oklopol> it's because the spin lasts quite long
22:50:04 <oklopol> perhaps i should make it a bit shorter
22:50:16 <oklopol> a bit.
22:52:00 <oklopol> hehe
22:52:06 <oklopol> the ball got stuck in the middle :)
22:52:56 <ehird> oklopol: what port# for okopong
22:53:23 <oklopol> hmmm
22:53:33 <oklopol> 9049
22:54:06 <ehird> oklopol: so, what exactly will a client need to access on the other end...
22:54:13 <ehird> Ball or just the player object
22:54:14 <ehird> or ... what
22:54:29 <ehird> i guess lup/rup or whatever
22:54:41 <oklopol> depends... i've always felt the os should do networking for me :)
22:54:46 <ehird> oklopol: :|
22:54:52 <oklopol> but
22:54:54 <oklopol> yes
22:54:55 <oklopol> aaaand
22:55:11 <oklopol> i think it might need some modification to be networkable
22:55:12 <oklopol> hmm
22:55:13 <oklopol> or not
22:55:30 <oklopol> hmm
22:55:33 -!- GreaseMonkey has joined.
22:55:35 <oklopol> if one is server
22:55:37 <oklopol> and one is client
22:55:41 <ehird> oklopol: one server, one client. yeah
22:55:46 <oklopol> server needs to know what client has pressed
22:55:55 <oklopol> and client needs to know where all objects are
22:56:00 <oklopol> well
22:56:07 <oklopol> i guess server=left+ball
22:56:09 <oklopol> and client=right
22:56:11 <oklopol> or smth
22:57:57 <ehird> oklopol: beh
22:58:01 <ehird> wanna help me code this
22:58:01 <ehird> :P
22:59:18 <oklopol> http://www.vjn.fi/pb/p124112365.txt <<< last update fucked everything up, you are all prolly playing this like crazy, so here's the fixed version
22:59:22 <oklopol> straight from the oven
22:59:25 <oklopol> hehe :D
22:59:28 <oklopol> whhhell
22:59:36 <oklopol> my way
22:59:42 <oklopol> ...would be to make a new language
22:59:57 <oklopol> WITH TUPLESPACES SHARED OVER NETWORKS AND AAAAAAHH
23:01:30 <ehird> oklopol: euuuuuurgh
23:01:33 <ehird> i was just coding the network
23:01:34 <ehird> and you update it
23:01:35 <ehird> :|
23:01:40 <ehird> tell me which parts you changed
23:01:53 <oklopol> :P
23:01:55 <oklopol> okay
23:02:00 <oklopol> which version you had?
23:02:03 <oklopol> it's just 1->0
23:02:05 <ehird> second-last
23:02:06 <oklopol> let me show the line
23:02:14 <oklopol> if abs(self.d[0])<0.6:
23:02:14 <oklopol> self.d=(self.d[0]*1.01,self.d[1])
23:02:14 <oklopol> if abs(self.d[1])>5:
23:02:14 <oklopol> self.d=(self.d[0],self.d[1]*0.95)
23:02:14 <ehird> http://www.vjn.fi/pb/p365653263.txt
23:02:18 <oklopol> this was changed
23:02:21 <ehird> http://www.vjn.fi/pb/p365653263.txt -> that
23:02:21 <ehird> how
23:02:47 <oklopol> self.d=(self.d[0],self.d[1]*0.95) <<< this line
23:02:53 <oklopol> used to be
23:02:57 <oklopol> self.d=(self.d[0]*0.99,self.d[1])
23:02:59 <oklopol> or smth
23:03:41 <oklopol> how did you choose to do it?
23:03:56 <oklopol> the simple way would be just to make client send keystrokes
23:04:05 <oklopol> although that is less stable ofc
23:04:24 <ehird> oklopol: i am just syncing every single property
23:04:27 <ehird> probably won;'t work
23:04:30 <ehird> btu yeah i might just do that
23:04:47 <oklopol> ah
23:04:58 <oklopol> well keystrokes might work because they're fast to send.
23:05:09 <ehird> oklopol: wtf
23:05:10 <ehird> TypeError: cannot marshal <class '__main__.Pong'> objects
23:05:12 <ehird> oh
23:05:15 <oklopol> hmm
23:05:16 <ehird> because of the pygame objects
23:05:17 <ehird> ok
23:05:18 <ehird> that's alright
23:05:24 <ehird> oklopol: gonna restart and just make it send keystrokes
23:05:28 <ehird> oklopol: but how will the client display
23:05:28 <oklopol> you can just marshal balls and players
23:05:33 <oklopol> hmm
23:05:51 <oklopol> both display the same, it's just client just sets all positions when asked by the server
23:05:57 <ehird> oklopol: okay
23:05:59 <oklopol> and just skips all moving and such
23:06:16 <ehird> oklopol: BUT
23:06:22 <ehird> to allow the host to call stuff on clients
23:06:27 <ehird> Pong stuff must be marshallable
23:06:28 <ehird> gah
23:06:31 <ehird> i'll just invent my own protocol
23:06:33 <oklopol> ummummumm
23:06:40 <oklopol> you need to call stuff on clientS?
23:06:42 <oklopol> what does that mean?
23:06:43 <ehird> oklopol: uhhh duh
23:06:46 <ehird> to set the attrs
23:07:03 <oklopol> errrr
23:07:20 <oklopol> client sends keystrokes to server, server sends 3-tuples with positions to client
23:07:29 <oklopol> you need to marshal these.
23:07:35 <oklopol> nothing else, afaik
23:08:06 <ehird> oklopol: the server can't 'send' anythign to the client
23:08:08 <ehird> the client is a client.
23:08:09 <ehird> not a server.
23:08:21 <oklopol> right, right
23:08:46 <oklopol> well, i was meaning more server/client, conceptually
23:08:51 <oklopol> not in any physical aspect
23:09:11 <oklopol> i would send stuff both ways, like i describeds
23:09:14 <oklopol> *described
23:09:19 <ehird> oklopol: btw, if the server sends off rdn/ldn etc
23:09:23 <ehird> then you have lag after pressing a key
23:09:26 <ehird> because you dont immediately see it
23:09:59 -!- Corun has joined.
23:10:09 <oklopol> yeah if there's lag, then the puck will just move onwards like a ghost
23:10:24 <oklopol> or just stay put
23:10:36 <ehird> oklopol: just stay put
23:10:40 <ehird> oklopol: i hope your net conn. is good
23:10:45 <oklopol> stays
23:10:46 <ehird> we'll take turns hosting
23:10:47 <ehird> ;)
23:10:49 <ehird> oklopol: actually
23:10:49 <oklopol> :D
23:10:52 <ehird> let's decide one thing
23:10:54 <ehird> host=left
23:10:56 <ehird> client=right
23:10:58 <ehird> or other way around
23:11:04 <oklopol> does it matter much?
23:11:09 <oklopol> err
23:11:10 <oklopol> well
23:11:15 <oklopol> a bit if we're actually playing
23:11:16 <oklopol> btw
23:11:23 <oklopol> wanna make it restart when someone dies?
23:11:24 <oklopol> i mean
23:11:28 <oklopol> games last like 3 seconds
23:11:29 <oklopol> :D
23:11:32 <ehird> oklopol: i mean, really the server has to send off the X and Y of the pucks. Instead of just which way they're moving.
23:11:40 <ehird> Otherwise everything will be out of sync.
23:11:45 <oklopol> they send out coordinates
23:11:48 <oklopol> never speeeds
23:11:50 <oklopol> speeds
23:11:56 <oklopol> client doesn't know what's moving
23:12:17 <oklopol> or it can know where the ball is moving, just to make sure it looks smoothy
23:12:23 <oklopol> matter of choise
23:12:25 <oklopol> choice
23:12:34 <ehird> oklopol: your model doesn't save the co-ordinates though
23:12:35 <ehird> does it?
23:12:42 <ehird> oh
23:12:43 <ehird> it does
23:12:46 <ehird> okay then oklopol
23:12:47 <oklopol> kinda.
23:12:49 <ehird> so, wait
23:12:50 <ehird> let's say
23:12:51 <ehird> left=server
23:12:53 <ehird> right=cilent
23:13:01 <oklopol> yea
23:13:06 <ehird> oklopol: the server only has to send the DIRECTIONS of left
23:13:12 <ehird> it doesn't need to send rup/rdn
23:13:13 <ehird> HOWEVER
23:13:18 <ehird> the *client* must send rup/rdn
23:13:28 <ehird> and dutifully accept every data the server gives it
23:13:30 <ehird> oklopol: am i rite
23:13:42 <oklopol> yes
23:13:51 <oklopol> well
23:14:03 <oklopol> client sends keystrokes to server, server sends 3-tuples with positions to client <<< this was my idea
23:14:03 <ehird> oklopol: i can do this with help :D
23:14:27 <oklopol> dunno if that's good, but seems you're doing something like that
23:14:32 <oklopol> so, if you are, that's that
23:15:04 <oklopol> err
23:15:05 <oklopol> okay
23:15:08 <oklopol> you said exactly that
23:15:09 <oklopol> good, good
23:15:31 <oklopol> i kinda suck at understanding what people say :)
23:16:34 <oklopol> wow, like 20 hits before i lost
23:16:44 <oklopol> i love this game <3
23:17:28 <ehird> oklopol: make pucks accellerate
23:17:42 <ehird> if i hold down the up key when at the bottom, i should speed up while getting to the top
23:18:01 <ehird> will make your acelleration stuff much nicer
23:18:10 <oklopol> i left that out intentionally, they speed up a bit if the ball moves fast... but i guess that might be nice
23:18:14 <oklopol> let's do networking first tho.
23:18:32 <ehird> oklopol: 'kay
23:19:32 <oklopol> do you like the playground size? i kinda enjoy the tininess
23:19:42 <ehird> oklopol: yes
23:19:54 <ehird> oklopol: OKAY so networking protocol
23:20:02 <ehird> uhh
23:20:06 <ehird> okay
23:20:13 <ehird> oklopol: so
23:20:17 -!- Corun has quit ("This computer has gone to sleep").
23:20:17 <ehird> it's tcp/ip.
23:20:18 <ehird> and.
23:20:23 <ehird> the client connects to the server
23:20:27 <ehird> then
23:20:36 <ehird> they exchange 'pickle packets'
23:20:39 <ehird> oklopol: which is my word!
23:20:40 <ehird> basically
23:20:43 <ehird> NUMBER ...
23:20:44 <ehird> means
23:20:48 <ehird> you get a NUMBER
23:20:49 <ehird> then a space
23:20:52 <ehird> then NUMBER bytes
23:20:55 <ehird> and you can depickle those bytes.
23:20:57 <ehird> oklopol: okay?
23:21:07 <oklopol> that's the cutest word i've ever heard.
23:21:08 <ehird> so, when a client sends a message, it's
23:21:11 <oklopol> pickle packet
23:21:16 <ehird> (rup,rdn)
23:21:17 <ehird> right?
23:21:22 <ehird> oklopol: but
23:21:22 <oklopol> hmm
23:21:24 <ehird> when a server sends it
23:21:25 <ehird> it's
23:21:26 <oklopol> sure.
23:21:30 <ehird> (plrs,ball,lup,ldn)
23:21:41 <ehird> oklopol: hmm. isn't rup/rdn duplicate couldn't you just have 'r'?
23:21:49 <oklopol> yes.
23:21:50 <ehird> as 0-2
23:21:51 <oklopol> well
23:21:52 <oklopol> kinda.
23:22:00 <oklopol> umm
23:22:01 <ehird> oklopol: do you want to do it like that or..
23:22:08 <oklopol> yeah i could just have it -1...1
23:22:20 <ehird> oklopol: good idea or not
23:22:25 <oklopol> good idea, sure
23:22:33 <ehird> oklopol: lets just get it working though
23:22:38 <oklopol> yes.
23:22:48 <oklopol> i can quickly change that later, or you can
23:22:53 <oklopol> it's like 30 seconds of work
23:24:35 <oklopol> after Ef, my next language will have implicit storing of the past, meaning you don't have to store something like "where the puck was 10 moves ago" in a list, you can just use the old value, and it will be seen @ compilation, and automatically stored
23:24:51 -!- Corun has joined.
23:24:54 <oklopol> (lps stores last positions, in case you haven't read the code)
23:26:06 <oklopol> i often end up not adding a feature if i have to add code somewhere other than where i'm currently adding stuff
23:26:43 <oklopol> also, i think stuff should be described where it's used, doing something like keeping old positions in a list does not make sense at the point when you're storing them
23:26:43 <ehird> ok, maybe got the protocol down oklopol
23:26:46 <oklopol> just when you start using them
23:26:50 <oklopol> okay, i'll stop my rant
23:26:50 <ehird> now i just have to ... code it
23:27:01 <oklopol> heh :)
23:27:04 <oklopol> well, sounds simple enough
23:27:20 <oklopol> what's it called?
23:28:15 <ehird> oklopol: port no again?
23:28:25 <oklopol> 9049
23:28:36 <oklopol> PONg
23:28:45 <ehird> oh heh, oklopol :)
23:28:51 <ehird> that is LAME
23:28:58 <oklopol> sure :)
23:33:08 <oklopol> i gotta go to sleep now
23:33:14 <ehird> oklopol: nooo
23:33:16 <ehird> i almost got it working
23:33:21 <oklopol> is that so?
23:33:24 <ehird> yes!
23:33:29 <oklopol> well, i guess i can play for a while
23:33:37 <oklopol> how long?
23:33:43 <ehird> oklopol: ehh not long
23:33:43 <oklopol> would you say less than half an hour
23:33:46 <ehird> yeah
23:34:23 <ehird> oklopol: hm
23:34:34 <ehird> instead of keypresses, I can just make the client send (rup,rdn) can't I?
23:34:39 <oklopol> yeah
23:34:40 <ehird> since they are the only things affected by the keys
23:35:54 <ehird> oklopol: how often should the server send stuff?
23:35:55 <ehird> every tick?
23:35:57 <ehird> every N ticks?
23:36:10 <oklopol> every tick perhaps, it shouldn't be a problem
23:36:33 <oklopol> every n ticks is just as easy to do and allows for every tick.
23:37:23 <oklopol> hmm
23:37:33 <oklopol> those sentences may have been bit contradictory
23:37:39 <oklopol> i'm getting a bit tired
23:38:05 <ehird> socket.error: (111, 'Connection refused')
23:38:08 <ehird> weiiird
23:38:26 <ehird> oh
23:38:27 <ehird> i see
23:38:47 <oklopol> i don't know much about sockets in practise
23:38:56 <oklopol> i'm not even sure i've ever made a game with networking
23:39:23 <oklopol> i've made hashmap chat and irc stuff though :D
23:39:30 <oklopol> Hat was awesome
23:40:40 <oklopol> the idea was to make a shared hashmap, but my implementation was too slow to allow for pong.
23:41:13 <ehird> oklopol: hmm
23:41:14 <ehird> ironing bugs
23:41:17 <ehird> and it SHOULD be ok
23:41:52 <oklopol> you still have 20 long minutes
23:42:34 <ehird> oklopol: eeek
23:44:36 <ehird> oklopol: you know how to get all router ports forwarded and stuff right
23:44:38 <ehird> so you can host
23:45:01 <oklopol> umm
23:45:14 <oklopol> i don't know anything, ever.
23:45:46 <oklopol> also the router isn't here
23:45:46 <ehird> AttributeError: '_socketobject' object has no attribute 'flush'
23:45:48 <ehird> that's silly
23:45:52 <oklopol> i can't access it
23:45:57 <oklopol> indeed it is
23:46:10 <ehird> oklopol: hmm well it connects
23:46:12 <ehird> can't tell if it makes any sense
23:46:45 <oklopol> try playing it?
23:47:03 <ehird> oklopol: trying to, but its hard to switch between windows
23:47:37 <oklopol> well
23:47:41 <oklopol> you can always slow it down
23:48:11 <ehird> oklopol: i have total bugzzz
23:48:13 <ehird> help? :(
23:48:22 <oklopol> perhaps a little
23:48:45 <oklopol> if you paste the code, i can prolly take a look
23:48:59 <ehird> oklopol: http://rafb.net/p/jePCoF48.html
23:49:05 <ehird> 'python netpong.py' => server
23:49:08 <ehird> it gives you a hostname
23:49:14 <ehird> 'python netpong.py thathostname' => clien
23:49:14 <ehird> t
23:49:17 <ehird> the syncing is just all weird
23:49:21 <ehird> i don't get what is happening
23:52:25 <ehird> oklopol: so yeah
23:52:50 <oklopol> hmm
23:52:57 <oklopol> where does all reading happen?
23:53:57 <oklopol> also it seems to me like both act as both server and client
23:54:16 <ehird> oklopol: yes it does
23:54:25 <ehird> the client has to tell the server its direction
23:54:32 <ehird> the server has to tell the client... well, everything
23:54:38 <ehird> oklopol: and .. ctrlf to find the reading
23:54:39 <ehird> :-)
23:55:05 <oklopol> okay
23:57:01 <oklopol> ima_server_send is executed no matter whose on_tick is ruunning
23:57:03 <oklopol> running
23:57:33 <ehird> oklopol: okay
23:57:45 <oklopol> okay?
23:57:49 <oklopol> "okay"?
23:57:57 <ehird> oklopol: okay as in i will fix
23:58:36 <oklopol> i need to go now, sorry :|
23:58:39 <oklopol> early morning
23:58:40 <ehird> bye :(
23:58:41 <ehird> :)
23:58:45 <ehird> test it tomorrow
23:58:56 <oklopol> i'm actually lying, i can sleep quite long
23:59:04 <oklopol> but, i also *wanna* sleep quite long
23:59:25 <oklopol> yarr i'll PWN your ass tomorrow.
23:59:27 <oklopol> ->
2008-04-23
00:01:20 <oklopol> <-
00:01:24 <oklopol> in the game, that is
00:01:36 <oklopol> just had to make sure i'm not misunderstood
00:01:37 <oklopol> ->
00:04:10 -!- timotiis has quit (Read error: 110 (Connection timed out)).
01:01:31 -!- sebbu has quit ("@+").
01:34:03 -!- ehird has quit (Remote closed the connection).
01:49:40 -!- Corun has quit ("This computer has gone to sleep").
02:09:51 -!- Sgeo has joined.
03:43:07 <GregorR> http://www.codu.org/wiki/?title=Card-Based+Nomic // idea for a card-based nomic
03:48:23 * oerjan vaguely recalls the first nomic game he played had all the initial rules printed on cards
03:49:12 <oerjan> other than that, it was probably an original Suber version
04:09:31 <Sgeo> Goodbye cruel Internet... at least until Midnight EDT..
04:10:45 <Slereah> kthxbai
04:14:32 <Slereah> http://en.wikipedia.org/wiki/Alex_Smith_%28The_Simplest_Universal_Computer_Proof_contest_winner%29
04:14:39 <Slereah> I know a guy on Wikipedia D:
04:17:14 <oerjan> omgwtfbbq
04:19:32 <oerjan> yay wikipedia's Search has autocompletion?
04:19:52 <Slereah> Wot?
04:22:32 <oerjan> for some reason, i went to wikipedia by hand and started writing Alex Smith in the search box...
04:22:58 <oerjan> it came up with a menu...
04:24:51 <Slereah> ...
04:24:55 <Slereah> He's younger than me D:
04:25:07 <Slereah> what am I doing with my life, not winning awesome awards.
04:31:06 <Slereah> What amuses me is that the article's title isn't his name.
04:31:16 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
04:31:29 <Slereah> It's "Alex Smith (The Simplest Universal Computer Proof contest winner)", like his name alone would be too obscure so they have to add that.
04:32:18 <oerjan> which it is, in that he is not the most famous person named Alex Smith
04:32:51 <Slereah> Sure, but that seems a little long.
04:33:06 <oerjan> curiously Alex Ian Smith is unused...
04:34:04 <oerjan> as is Alexander Ian Smith
04:39:01 -!- pikhq has quit (Read error: 110 (Connection timed out)).
04:40:25 <Slereah> I can't seem to do any programming nowadays.
04:40:36 <Slereah> It's frustrating.
04:42:33 <Slereah> Maybe I should write that Post-to-C on Python.
04:42:41 <Slereah> I don't really need to write it in C.
04:48:50 <GregorR> Uh, it's probably because his name is too /common/.
04:49:26 <GregorR> Yeah, just "Alex Smith" leads to the page of someone whose life is nowhere near as valuable.
04:50:27 -!- Sgeo has joined.
04:52:10 <oerjan> unfortunately quarterbacks beat geeks in famousness 90% of the time :D
04:54:03 <Slereah> Who ever said life was fair?
04:54:13 <Slereah> I don't know, but I bet he was a quarterback.
05:28:18 <GregorR> Sgeo: http://www.codu.org/wiki/?title=Card-Based+Nomic
05:28:51 <Slereah> Hm.
05:29:07 <Slereah> With the Post-to-C translator, I get this thing for a short program : http://membres.lycos.fr/bewulf/Russell/b.c
05:29:32 <Slereah> But I get incompatible type for assignment on the state="b";
05:29:49 <Slereah> Where state is char state[20]="a";
05:29:54 <GregorR> Uhhh, what idiot wrote if (state=="a")?
05:30:00 <Slereah> Me.
05:30:05 <Slereah> I know, I'm bad :(
05:30:07 <GregorR> TEE HEE
05:30:10 <GregorR> Go lurn C
05:30:10 <Slereah> ...
05:30:12 <Slereah> Oh.
05:30:16 <Slereah> Right.
05:30:21 <Slereah> C has no simple string comparaison.
05:30:43 <GregorR> Sure it does ... just they're in the standard library, not the language proper :P
05:30:52 <Slereah> How lame is that!
05:31:04 <Slereah> I'm too spoiled by Python.
05:31:16 <GregorR> Seems appropriate for a language that basically is just portable assembler.
05:32:13 <Slereah> I didn't want to involve the libraries.
05:32:16 <Sgeo> Slereah, proof that Python is dangerous for humans!
05:32:49 <Slereah> More men were lost at C than they were swallowed by Python.
05:33:06 <GregorR> PUN ... SO ... LAME ...
05:33:15 <Slereah> Indeed.
05:33:16 <GregorR> MUST ... NOT ... RIP OUT ... VITAL ORGANS ...
05:33:38 * oerjan makes a call to the pun police
05:34:39 <Slereah> I used to have some sort of C sheet full of functions.
05:34:57 <Slereah> I wonder where it went
05:37:02 <Slereah> Ah, strcpy
05:37:04 <Slereah> and cmp
05:45:41 -!- oerjan has quit ("leaving").
05:45:46 <Slereah> http://membres.lycos.fr/bewulf/Russell/b.c
05:45:51 <Slereah> This look allright?
05:45:57 <Slereah> It compiles, at least.
05:46:08 <Slereah> (Program is a:@:b;b:<:c;c:a:d;d:!:d )
05:53:08 <GregorR> strcmp returns 0 if the strings match.
05:53:28 <Slereah> Oh.
05:53:34 <Slereah> I'll add a bang.
05:53:43 <GregorR> That's what she said.
05:53:49 <Slereah> Oh you.
05:54:03 <Slereah> Thar.
05:54:13 <Slereah> Other than that, seems okay?
05:54:22 <Slereah> In a Post machine kind of way.
05:54:36 <Slereah> It's 7 AM, I don't really want to deal with IO to find out.
06:21:58 <Sgeo> http://www.youtube.com/watch?v=1WfJT_0WKEM earthrise+set if anyone cares
06:37:22 <RodgerTheGreat> nifty
06:38:11 <RodgerTheGreat> footage from a japanese satellite?
06:39:10 <Sgeo> http://inventorspot.com/articles/japanese_spacecraft_records_full_earth_rising_over_moon_13000
06:39:30 <Sgeo> http://forums.fark.com/cgi/fark/comments.pl?IDLink=3556810
06:43:13 -!- Sgeo has quit ("Ex-Chat").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:16:46 -!- jix has joined.
08:37:58 -!- Def has joined.
08:39:09 -!- olsner has quit ("Leaving").
08:47:55 -!- Def has quit (Read error: 104 (Connection reset by peer)).
08:48:10 -!- Def has joined.
08:57:49 -!- Def has quit (Read error: 104 (Connection reset by peer)).
08:58:15 -!- Def has joined.
09:01:58 -!- Iskr has joined.
10:28:02 -!- Corun has joined.
10:41:02 -!- GreaseMonkey has quit ("Unisex.").
10:57:20 -!- ais523 has joined.
11:15:04 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).
11:37:20 -!- lifthrasiir has joined.
13:03:16 -!- Corun has quit ("This computer has gone to sleep").
13:07:43 -!- timotiis has joined.
13:30:32 -!- timotiis has quit (Read error: 110 (Connection timed out)).
13:31:24 -!- pikhq has joined.
14:06:37 -!- Corun has joined.
14:11:25 -!- Corun has quit (Client Quit).
14:12:28 -!- Corun has joined.
15:13:55 -!- timotiis has joined.
15:37:50 -!- Corun has quit ("This computer has gone to sleep").
15:42:40 -!- timotiis has quit (Read error: 110 (Connection timed out)).
15:49:32 -!- Corun has joined.
16:15:23 -!- ehird has joined.
16:19:38 <ehird> oklopol: your pong rocks
16:19:44 <ehird> i think the network might require more work though
16:24:04 -!- sebbu has joined.
16:25:49 <ais523> [16:27] [CTCP] Sending CTCP-PING request to oklopol.
16:25:49 <ais523> [16:27] [CTCP] Received CTCP-PING reply from oklopol: 123 seconds.
16:26:08 <ais523> so oklopol actually implemented my idea of a fake timestamp as a ping response?
16:26:31 <ais523> I've thought of some new esoteric IRC ideas, one of which is even better than /swapnick
16:26:36 <ais523> I call it 'hunter2 mode'
16:26:50 <ais523> whenever you try to send your own password, it instead sends a sequence of asterisks
16:26:51 <ehird> ais523: i can imagine what that does
16:26:53 <ehird> yep
16:27:07 <ehird> ais523: /swapnick swaps call occurences of X with Y right?
16:27:08 <ehird> well, in nicks.
16:27:12 <ais523> not just ordinary asterisks, though, it uses lots of different asterisks from Unicode to create an asterisk sequence unique to you
16:27:23 <ais523> ehird: no, it swaps nicks with another user with a client like yours
16:27:24 <ehird> >oklopol< CTCP VERSION ... no reply :)
16:27:33 <ehird> ais523: i think oklopol uses no-name-script
16:27:36 <ehird> which is an mirc extension
16:27:38 <ehird> which does loads of crap
16:27:43 <ehird> probably the ping thing is down to that
16:27:50 <ehird> * [oklopol] (n=nnscript@oklopol.yok.utu.fi): oklopol ominovorol
16:27:52 <ehird> so yeah, nnscript
16:28:05 <ais523> anyway, the point of that asterisk thing is that other people can copy/paste your asterisks, and you'll see your own password
16:28:10 <ehird> ais523: Befunge CTCP: it asks you how you want to reply
16:28:15 <ehird> :D
16:28:23 <ais523> but if they copy/paste someone else's asterisks, all you'll see is asterisks
16:28:33 <ehird> ais523: you could reverse it, maybe
16:28:37 <ehird> also
16:28:37 <ehird> http://www.akalin.cx/2008/04/23/bfpp-embed-brainfuck-in-cpp/
16:28:53 <ais523> ehird: when I ctcp version oklopol, I get the answer back in bold
16:29:07 <ais523> and yes, it is NoNameScript
16:29:07 <ehird> ais523: no name script does stuff like that
16:29:28 <ehird> it's vaguely annoying but apparently nice to use
16:30:24 <ehird> ais523: by the way, do you know how to force google into calculator mode?
16:30:30 <ehird> calc:foo doesn't work
16:30:33 <ehird> even thugh define:foo does
16:30:37 <ais523> I think it's = at the start of the line
16:30:54 <ais523> no, end of the line
16:31:11 <ehird> ais523: 'a=' still goes a-searching
16:31:18 <ehird> so does '0b1='
16:31:27 <ais523> ehird: it ignores the = on a parse failure
16:31:33 <ehird> ais523: 0b1 isn't a parse failure
16:31:37 <ehird> try '0b1 in hex'
16:31:39 <ais523> but otherwise the = forces it into calculator mode, according to Google's documentation
16:31:57 <ehird> what i'm saying is that in a calculator if you put a number in you expect that number out
16:32:06 <ehird> ais523: idea --
16:32:09 <ehird> change X into (X)+0=
16:32:54 <ehird> ais523: by the way, epiphany fails at its google search
16:33:00 <ais523> ehird: how?
16:33:01 <ehird> if you have + in a search term it turns it into a space
16:33:08 <ehird> i assume it just pastes it after google.com/search?q=
16:33:10 <ais523> oh, bad encoding
16:35:24 <ais523> ehird: I've tried to implement hunter2 mode using Konversation replaces (not using my real pwd, of course)
16:35:32 <ais523> what do you see after the colon? : ⁎⁡*⁕⁑⁢⁂⁎
16:35:37 <ehird> ⁎⁡*⁕⁑⁢⁂⁎
16:35:45 <ais523> grr, I just see asterisks on the reply
16:35:45 <ehird> it doesn't really look like a bunch of asterisks though
16:35:51 <ais523> there's an invisible times sign in there as well
16:35:52 <ehird> ⁎ ⁡* ⁕ ⁑ ⁢⁂ ⁎
16:35:55 <ehird> (with added spaces)
16:35:58 <ais523> and it is a bunch of asterisks
16:36:03 <ehird> ais523: but ugly looking
16:36:04 <ais523> just not aligned horizontally
16:36:09 <ehird> i suggest filtering it to comic-swears
16:36:16 <ehird> £&*$@!£$(*
16:36:37 <ais523> grr, it seems the autoreplace doesn't work properly incoming
16:36:48 <ais523> oh, and invisible times sign is a great idea for a Unicode character
16:36:57 <ais523> there's invisible function application, too
16:37:21 * ais523 turns off hunter2 mode
16:37:43 <ehird> ais523: On the subject of comic swears --
16:38:01 <ehird> a while ago there was someone who got fed up of tinyurl sites and invented a site that let you gave urls an arbitary name
16:38:03 <ehird> and called it DecentURL
16:38:14 <ehird> http://decenturl.com/
16:38:23 <ais523> New Scientist uses notlong.com, which I think does the same thing
16:38:38 <ehird> $SEKRITPERSONIINTERNETKNOW owns http://indecenturl.com/
16:38:44 <ehird> and it is in a private beta right now
16:39:01 <ehird> it is the most technologically advanced site for turning a perfectly innocent URL into something with a long string of profanity
16:39:07 <ehird> it even lets you configure what character it seperates them by
16:39:11 <ehird> and what categories the words are chosen from
16:39:30 <ehird> it is quite the pointless waste of time, but an admirable one
16:40:12 <oklopol> vjn.cc does what decenturl does too
16:40:35 <ehird> right
16:40:41 <ehird> i was just stating what indecenturl was a direct parody of
16:40:46 <ais523> oklopol: they beat tinyurl.com in terms of domain name length
16:40:57 <ehird> ais523: metamark has a good short domain
16:40:58 <oklopol> who beat?
16:41:01 <ais523> the shortest registered domain names are apparently 4 chars long
16:41:09 <ehird> ais523: yes
16:41:10 <oklopol> we have vv.vu
16:41:12 <ehird> like a.tv
16:41:14 <oklopol> ah
16:41:18 <ais523> oklopol: strlen("vjn.cc") < strlen("tinyurl.com")
16:41:19 <oklopol> indeed, .
16:41:26 <ehird> the most practiacl ones to get are a 2-letter tld and a 3 letter domain
16:41:28 <oklopol> ais523: right, we not they, we
16:41:32 <ehird> srz.ct and stuff like that
16:41:32 <oklopol> *well not
16:41:40 <ehird> ais523: but i have a good system for keeping url lengths tiny after the slash
16:41:47 <ais523> Unicode?
16:41:54 <ehird> ais523: no -- you are meant to be able to remember them
16:41:55 <ais523> (most Web browsers would /love/ that!)
16:42:19 <ehird> but basically, by the time i get to e.g. 5 digits, the site has either been up really long, or got digg'd, slashdotted, and reddit'd at the same time for 10 days in a row
16:42:32 <ehird> example url: http://srz.ct/d7E
16:42:36 <ehird> simple
16:42:41 <ehird> srz.ct isn't a good example of course
16:42:43 <ehird> but you get the ied
16:42:46 <ehird> *idea
16:42:54 <ais523> "digg'd, slashdotted, and reddit'd at the same time for 10 days in a row"?
16:42:59 <ais523> I don't think that's ever happened to anyone
16:43:03 <ehird> ais523: exactly
16:43:17 <ehird> ais523: also, have you heard my idea for INTERNET GARBAGE COLLECTION?
16:43:18 <fizzie> There's a.fi, b.fi, c.fi etc for the .fi ccTLD root name servers, but I don't think they'll officially give out one-letter names to anyone.
16:43:25 <ais523> particularly slashdottings rarely last more than a day or so
16:43:26 <ehird> that was spawned by my thinking about how to reuse urls with my idea
16:43:33 <ais523> fizzie: I think i.am exists, but I've never tried to visit it
16:43:46 <oklopol> i.am is a redirection service too
16:43:47 <ehird> if you haven't heard it, however, let me know
16:43:49 <ehird> because it is AWESOME
16:43:52 <fizzie> There are a few old two-letter .fi domains like pp.fi and such.
16:44:06 <oklopol> i.am/oklopol
16:44:22 <ehird> ais523: have you heard the idea? it is truly revolutionary
16:44:30 <Slereah> oklopol!
16:44:38 <ais523> ehird: I haven't heard it
16:44:44 <fizzie> (pp.fi used to be the domain for EUnet's dialup users; currently it's some sort of web-based-data-storage-for-home-users thing.)
16:44:46 <ehird> ais523: okay
16:44:58 <ehird> it's actually WEB GARBAGE COLLECTION
16:44:59 <ehird> so
16:45:10 <ehird> you start by going through every page on the internet
16:45:19 <ehird> if you find a link to one of your URLs
16:45:21 <ehird> you set the mark bit on it
16:45:24 <ehird> you do this recursively
16:45:27 <ehird> now, you go through every url
16:45:31 <ehird> and remove the ones without the mark bit set
16:45:37 <ehird> ais523: VARIATION: Cheney web garbage collection
16:45:41 <ais523> ehird: what about dynamically-generated content?
16:45:42 <ehird> you make a new heap
16:45:45 <ehird> and go through every page on the internet
16:45:49 <ehird> if you find a link to one of your URLs
16:45:53 <ehird> you copy it over to the new heap
16:45:53 <ais523> you would, for instance, delete most search results pages on Google
16:45:55 <ehird> you do this recursively
16:45:58 <ehird> then you free the old heap
16:46:43 <fizzie> For some reason, although it's not at all similar, that reminds me of the multiple-universes-interpretation quantum-mechanical O(1) sort algorithm.
16:46:54 <ehird> fizzie: :)
16:47:07 <fizzie> No, O(n) because there was the sortedness testing.
16:47:09 <ehird> ais523: the same person who owns indecenturl pointed out EMAIL and IM
16:47:10 <ais523> ah, quantum bogosort
16:47:16 <ais523> but that's O(n)
16:47:16 <ehird> so i made it go through EVERYTHING on the internet
16:47:22 <ehird> ais523: then he mentioned graffiti
16:47:36 <ehird> so eventually it involved analyzing every atom in the universe.
16:47:46 <ais523> what, just the one universe?
16:48:06 <ehird> ais523: Yes, it's distributed: the equivilent services in the other universes handle their own universes
16:48:08 -!- Corun has quit ("This computer has gone to sleep").
16:50:06 <ehird> ais523: have you seen tinygame? it's so AMAZINGLY AWESOME AND INTUITIVE that oklopol picked it up in minutes and now knows it better than i do
16:50:06 <ais523> but seriously, what about dynamic pages?
16:50:11 <ehird> and...
16:50:12 <ehird> hmm
16:50:15 <ehird> you time travel.
16:50:20 <ais523> ehird: if it's that intuitive, you'd know it as well as oklopol
16:50:28 <ehird> actually that's a better way to do GC than mine
16:50:39 <ehird> step 1. time travel into the future when the GC has already been performed
16:50:49 <ehird> step 2. go back to the present
16:50:52 <ehird> step 3. delete all URLs not in the future
16:51:18 <ais523> ehird: but then /any/ set of URLs would be time-loop-consistent
16:51:31 <ais523> so you have to be very careful to pick the right possible future to time travel to
16:51:40 <ais523> which requires you to do the garbage collection
16:51:50 <ehird> ais523: use an oracle
16:52:02 <ais523> ehird: then you don't need the time machine
16:52:23 <ehird> ais523: reminds me of http://qntm.org/?f16
16:52:36 <ehird> also, tinygame IS intuitive, I just HAVEN'T OPENED MY MIND TO ITS PARADIGM YET
16:53:29 <ehird> ais523: http://rafb.net/p/pj1Jed90.html tinygame in its entirety. SAVE IT because it must be noted: i am going to bloat it up, for SPEED
16:53:43 <ais523> ehird: whose is it?
16:53:49 <ehird> ais523: Mine. :P
16:54:03 <ehird> ais523: Oklopol wrote a TOTALLY AWESOME pong game in it yesterday.
16:54:06 <ais523> and what's in pygame.locals?
16:54:12 <ehird> It has COOL FLIP THINGS
16:54:16 <ehird> and SPEEDUPS
16:54:21 <ehird> and it rocks more than any pong i've played
16:54:23 <ehird> ais523: pygame isn't mine
16:54:27 <ehird> bt
16:54:28 <ehird> but
16:54:29 <ais523> I guessed
16:54:30 <ehird> the reason i import it all
16:54:35 <ehird> is so that when you do 'from tinygame import *'
16:54:37 <ais523> but I sort of need to know what it does to understand the code
16:54:39 <ehird> you get pygame's locals
16:54:43 <ehird> ais523: that code doesn't use any of them
16:54:51 <ehird> but when you do 'from tinygame import *'
16:54:52 <ehird> you get things like
16:54:53 <ehird> KEYDOWN
16:54:55 <ehird> for event types
16:55:20 <ais523> OK, and pygame itself does things like graphics handling
16:55:31 <ehird> ais523: yeah, but i only use a very low level section of it
16:55:37 <ehird> a screen which i can push pixels on.
16:55:41 <ehird> ais523: and i redraw fully
16:55:45 <ais523> hmm... it looks to me like you're just implementing the standard message-list idea
16:55:46 <ehird> ais523: this is of course hideously slow and inefficient
16:55:59 <ehird> which is why i am going to bloat it
16:56:00 <ais523> I think Windows is the best-known system that works like that, but there are others
16:56:02 <ehird> for speed
16:56:06 <ehird> ais523: that's not the interesting part
16:56:14 <ehird> ais523: its because oklopol said once
16:56:23 <ehird> that pygame and stuff would be much better if they just had put(x,y,color)
16:56:47 <ehird> the reason i have a few methods to override is that you want to handle events specially, and you can only do game stuff each tick
16:56:48 <ais523> oh, you implement a persistent background
16:56:50 <ehird> and you want to initialize it somehow
16:56:58 <ais523> that you can put things on and take things off
16:57:14 <ehird> ais523: can't take them off -- just put the pixel of the background colour
16:57:15 <ehird> :)))
16:57:21 <ehird> ais523: http://rafb.net/p/rOeGat40.html oklopol's 150line AMAZING pong game
16:57:25 <ehird> a/z - player 1
16:57:29 <ehird> k/m - player 2
16:57:35 <ehird> exit code is -1 for player 1 won
16:57:38 <ehird> and 1 for player 2 won
16:57:41 <ais523> ehird: that URL reminds me of RodgerTheGreat's username
16:57:49 <ehird> ais523: the ball inherits some of the paddle's speed, kinda.
16:57:56 <ehird> and the spins are when you hit it at a certain direction.
16:58:03 <ehird> and the paddles speed up if the ball is going fast.
16:58:06 <ehird> ais523: and me too
16:58:07 <ais523> ehird: now write it in just 150x150 pixels in Gammaplex
16:58:22 <ehird> ais523: look at the Player and Ball classes
16:58:30 <ehird> i would not want to write them in gammaplex
16:58:42 <ehird> well, player is alright
16:58:44 <ehird> but ball..
16:59:01 <ais523> ball isn't that bad
16:59:07 <ais523> I think gammaplex has trig routines in its standard library
16:59:32 <ehird> ais523: oklopol's pong is HARSH
16:59:37 <ehird> one pixel off, bad luck, you lose
17:00:06 <ais523> ehird: sounds like gammaplex :)
17:00:21 <ehird> ais523: oklopol got the ball stuck in the middle at one point
17:00:24 <ehird> i have no idea how
17:00:33 <ehird> but i am glad that my game api leads to such rocking games
17:00:38 <ehird> ais523: erase_on really makes me laugh :)
17:01:17 <ehird> ais523: also, it's pretty easy to bash the ball and have it curve right back into your goal
17:01:20 <ehird> due to the spins
17:01:36 <ais523> ehird: we're busy blaming you over in #ircnomic
17:01:44 <ais523> is it your fault that there are no rules and no propositions?
17:01:55 <ehird> ais523: no
17:01:56 <ehird> check the logs
17:01:58 <ehird> it was voted on
17:27:42 -!- jix has quit ("CommandQ").
17:29:37 -!- gigo has joined.
17:31:37 -!- jix has joined.
17:48:45 <RodgerTheGreat> ais523: http://www.nonlogic.org/dump/text/1208969249.html
17:48:49 <RodgerTheGreat> ^ that's mine
17:49:16 <ais523> what language? BASIC?
17:49:44 <RodgerTheGreat> Chipmunk BASIC, to be precise
17:49:51 <RodgerTheGreat> 412 bytes
17:50:16 <RodgerTheGreat> one player, AI opponent included
17:51:28 <ehird> RodgerTheGreat: oh, pong?
17:51:35 <RodgerTheGreat> yup
17:51:37 <ehird> wow
17:51:40 <ehird> okay
17:51:42 <ehird> we need to golf pong
17:52:10 <ais523> ehird: http://pastebin.ca/992032
17:52:22 <ais523> (this seems like a better channel for the Cyclexa conversation)
17:52:28 <ais523> but I agree about Pong golf
17:52:31 <ehird> ais523: what is the convention for perl packages that are just docs?
17:52:37 <ehird> put them in a pm with just the docs and then 1;?
17:52:40 <ais523> ehird: no idea
17:52:43 <ehird> or have it outside the source tree
17:52:45 <ehird> like cyclexa.pod
17:52:46 <ais523> I generally put them in the same file as the source code
17:52:55 <ais523> but I'm me and that's probably completely wrong
17:53:03 <ehird> ais523: cyclexa in one file will be impossible to navigate
17:53:08 <ehird> and having it just in the lexer file would be weird
17:53:17 <ais523> ehird: probably hard to navigate, yes
17:53:26 <ais523> although I do have hierarchical comment lines
17:53:27 <oklopol> RodgerTheGreat: nice work
17:53:30 <oklopol> i gotta top that
17:53:31 <RodgerTheGreat> thanks
17:53:35 <ehird> ais523: also, shouldn't we use CPerl's default indentation rules?
17:53:37 <ais523> by changing the number of # signs before a comment
17:53:38 <ehird> which is 2 spaces
17:53:43 <ehird> not sure why, but it seems more common than any other
17:53:55 <ais523> I am using 2 space indentation already
17:53:59 <ais523> I nearly always do
17:54:01 <RodgerTheGreat> I'm not sure I can crunch it any further in that language, so if you can get smaller you'll have me beat for a while
17:54:04 <ais523> except sometimes I use 1 for BF
17:54:06 <ehird> ais523:
17:54:07 <ehird> #
17:54:07 <ehird> sub cxa_normalise($)
17:54:07 <ehird> #
17:54:07 <ehird> {
17:54:07 <ehird> #
17:54:09 <ehird> # Read the arguments
17:54:11 <ehird> #
17:54:13 <ehird> local $_ = shift;
17:54:15 <ehird> err, ignore the extra #s
17:54:17 <ehird> but that is 4 spaces
17:54:33 <ais523> ah, I had the wrong file open, ignore me
17:54:37 <ais523> it's meant to be 2 anyway
17:54:48 <oklopol> what's fn?
17:54:50 <oklopol> RodgerTheGreat: fn
17:54:57 <RodgerTheGreat> function call
17:55:04 <oklopol> oh okay
17:55:21 <oklopol> perhaps we should golf brainfuck pong
17:55:33 <RodgerTheGreat> or "extended function"- fn 48 gets the y coordinate of the last pen input
17:55:44 <RodgerTheGreat> (this interpreter runs on PalmOS)
17:55:47 <ehird> ais523: ~/src/cyclexa/impl/src/Cyclexa/Lexer.pm
17:55:52 <ais523> oklopol: BF doesn't have graphics or cbreak capabilities, but I'm sure there's some way to work around them
17:56:03 <ais523> ehird: I wouldn't expect any less from a proper Perl directory tree
17:56:04 <oklopol> well
17:56:12 <oklopol> we would make a protocol stub for graphics
17:56:14 <ais523> CLC-INTERCAL's gets like that
17:56:30 <oklopol> like, output is xyc
17:56:31 <ais523> oklopol: pity Sgeo isn't in the channel, they'd just add it to PSOX
17:56:36 <oklopol> yeah
17:56:37 <oklopol> but
17:56:42 <ais523> but shouldn't it be Language::Cyclexa?
17:56:46 <ehird> ais523: no, he'd spend days debating over how to add it elegantly to PSOX
17:56:46 <oklopol> that would need initialization
17:56:51 <RodgerTheGreat> http://www.pouet.net/prod.php?which=5060
17:56:54 <RodgerTheGreat> and bbl
17:57:07 <ehird> and no, i don't think so -- I mean, web frameworks aren't Net::Web::Catalyst
17:57:13 <ehird> Language:: seems to be smaller languages
17:57:30 <oklopol> we could just make something like each three bytes output mean x, y, color
17:57:36 <oklopol> and input is just keys
17:57:41 <oklopol> or null
17:57:44 <ehird> ais523: by the way, i'm going to remove the ($$$) things because every time i was in #perl being always ranted about them for days on end
17:57:49 <ehird> so i guess they don't like them, for some presumably good reason
17:57:55 <ais523> prototypes?
17:58:00 <ehird> yeah
17:58:05 <ais523> they don't like them because they clash with old code
17:58:08 <ehird> no
17:58:09 <oklopol> someone wanna make a server for that protocol? might be nice for pong golfing in any language
17:58:09 <ais523> always using them is fine
17:58:12 <ehird> ais523: nope
17:58:13 <ais523> never using them is very slightly less fine
17:58:15 <ehird> they're Considered Harmful in there
17:58:29 <ehird> they link to a biiig email that takes them apart one-by-opne
17:58:41 <ais523> ehird: it's because they break the traditional Perl argument syntax
17:58:50 <ehird> ais523: nope, never heard that mentioned
17:58:53 <ais523> and screw with the parser without the user's knowledge
17:59:10 <ais523> now, I'm an esolanger, so screwing with the parser for better syntax is fine by me
17:59:29 <ais523> and ehird, you talked about how much you like Lisp macros, so Perl's lesser version of syntactic sugar should be fine by you too
17:59:33 <ais523> where is that email, anyway?
18:00:21 <ais523> maybe I should ask in #perl
18:00:27 <ehird> possibly
18:00:41 <ehird> but they just really didn't seem to like it
18:00:52 <ehird> ais523: also, i have a feeling that 'use Fatal qw(open close)' can't be good in a library module
18:01:00 <ais523> ehird: definitely
18:01:02 <ehird> not sure if i'll have to change the code to handle errors from them in that case though
18:01:06 <ehird> or if it'll be ok
18:01:10 <ais523> it's fine in the main program for saving on error handling though
18:01:18 <ais523> my code isn't really production-ready yet
18:01:27 <ehird> ais523: yeah
18:01:31 <ehird> just cleaning it up so i can put it in the module tree
18:01:43 <ehird> by the way, shouldn't 'local $_' just be '$_'?
18:01:59 <ais523> ehird: almost certainly not
18:02:07 <ehird> also, it occurs to me that using $_ as an argument name messes up when callers were using $_ for something else
18:02:14 <ais523> local $_ saves the value of $_
18:02:19 <ais523> and restores it at the end of the procedure
18:02:22 <ais523> so you don't mess up the caller's $_
18:02:25 <ehird> okay
18:02:30 <ehird> shouldn't it just be a named argument?
18:02:36 <ehird> i mean, for most of the functions :)
18:03:11 <ais523> ehird: $_ exists to save on typing in // and similar expressions
18:03:31 <ais523> as it exists precisely for that purpose, I figured it was worthwhile using it
18:03:39 <ehird> ais523: yeah
18:03:46 <ehird> ; #or do{die "Unmatched {{$1{ found in program.";};
18:03:49 <ehird> ais523: why's that commented out?
18:04:02 <ehird> also, hmm. it occurs to me that making long regexps work on multiple lines is non-trivial
18:04:13 <ais523> I don't know
18:04:28 <ais523> and ehird, there's a regexp modifier that allows . to match newlines
18:04:42 <ehird> also, eek at our login sscript
18:04:44 <ehird> UPPERCASEHTMLTAGS
18:04:45 <ehird> :-)
18:05:03 <ais523> ehird: sorry
18:05:06 <ehird> also, ais523
18:05:06 <ehird> my $checkpass = $dbh->prepare("SELECT COUNT(*) FROM users WHERE username = ? AND password = SHA1(?)");
18:05:12 <ais523> I got into the habit of doing that before lowercase was standardised
18:05:12 <ehird> shouldn't you just SELECT *
18:05:16 <ehird> to get the user itself back
18:05:18 <ais523> ehird: no no no
18:05:23 <ehird> okay
18:05:25 <ais523> SELECT * is /very/ evil
18:05:32 <ehird> that's a new one.
18:05:39 <ehird> got any sources to back that?
18:05:50 <ais523> ehird: it breaks your applications when you add or change the order of columns
18:06:05 <ehird> ais523: that's why you get it back as a hash or an object.
18:06:05 -!- timotiis has joined.
18:06:12 <ehird> accessing rows by offset is the evil thing.
18:06:15 <jix> ais523: not if you fetch the result as a hash
18:06:21 <ehird> very evil.
18:06:23 <ais523> ehird: but you can get the COUNT(*) back as a single-element array
18:06:29 <ehird> ais523: please read what i said
18:06:36 <ais523> ehird: I did
18:07:00 <ais523> oh, and I was talking to the #perl people about prototypes
18:07:07 <ais523> they don't do what most people expect
18:07:12 <ais523> but do do what I expect
18:07:24 <ais523> I must be too used to esolangs, because I'm fine with expecting weird things
18:07:36 <ehird> ais523: but yeah, is there a reason your 'die' is commented out?
18:07:43 <ais523> I can't think of one offhand
18:07:49 <ais523> we could try uncommenting it to see what happens
18:07:53 <ais523> I can't remember why I commented it
18:08:06 <ais523> wait...
18:08:09 <ehird> ais523: there has to be a better way to do errors than die'ing
18:08:12 -!- Sgeo has joined.
18:08:19 <ais523> it may be an issue when you have two {{a{}a}} blocks in a program
18:10:13 <ais523> but it oughtn't to be one
18:10:27 <ais523> as long as they're properly matched form left to right
18:10:44 <ehird> ais523: don't tell me that perl has no error handling mechanisms! ;)
18:10:57 <ais523> ehird: oh, the die is normally replaced by the standard Carp module
18:11:01 <ais523> I've never learnt how to use it
18:11:11 <ais523> but basically it causes the module that called you to die, unless handled
18:11:22 <ais523> so you do that when it's your caller's fault
18:11:23 <ehird> ais523: I can see our collaborative perl efforts will be fun
18:11:29 <ais523> ehird: yep!
18:11:50 <ehird> 'In module Cyclexa::X, we see an object-oriented interface to the parser, utilizing closures and many CPAN libraries'
18:11:55 <ais523> our programming styles are so different that a) we catch things the other wouldn't, and b) we spend ages with nitpicky stylistic arguments
18:12:01 <ehird> 'In module Cyclexa::Y, we see something from the early 90s.'
18:12:17 <ais523> ehird: yes, we should have both available
18:12:27 <ehird> croak - die of errors (from perspective of caller)
18:12:28 <ais523> but should probably mostly work on X to start with, even though I hate Perl's OO model
18:12:29 <ehird> that seems like what I want
18:12:34 <ais523> ehird: that's it
18:12:44 <ehird> ais523: also, why is there no standard on what qw style to use to import from modules
18:13:12 <ais523> ehird: my guess is that you're supposed to decide what to import based on the module anyway
18:13:18 <ehird> ais523: I mean
18:13:22 <ehird> use sdfsdf qw/foo/;
18:13:23 <ehird> vs
18:13:25 <ehird> use sfsdfsd qw(bar);
18:13:27 <ehird> etc
18:13:34 <ais523> user's choice of delimters, surely
18:13:41 <ais523> I normally see qw()
18:13:51 <ais523> but the hole point of the quote-like operators is you choose a quote that works with your data
18:13:57 <ais523> s/hole/whole/
18:13:59 <ehird> ais523: also, hmm. i don't think i *can* shorten your >80col rxp
18:14:02 <ehird> without making it multiline
18:14:08 <ehird> and then i'd force you to document each line of the regexo
18:14:09 <ehird> ;)
18:14:10 <ehird> *regexp
18:14:12 <ais523> which one?
18:14:17 <ehird> s/(?<!\\)(?<!\\c)((?:\\\\|\\c.)*)\{([^\{\}]*[^\{\}0-9,][^\{\}]*)\}/$1.quotemeta($2)/gse;
18:14:37 <ais523> ehird:it's fine to split /e regexps at the slash
18:14:43 <ehird> oh
18:14:44 <ehird> of course
18:14:47 <ais523> search on one line, replacement on the next
18:15:08 <ehird> s=(?<!\\)((?:\\\\)*)(\([+^*]*(?:\?(?:\*?[0-9]+|\?))?)=
18:15:08 <ehird> $1.join('@@@',split(//,$2)).'@'=gse;
18:15:11 <ais523> things get a lot saner once backslash escaping has been handled
18:15:14 <ehird> i cannot believe that there is a program which can execute this
18:15:15 <ehird> :-)
18:15:23 <ais523> ehird: but you're an esolanger
18:15:23 <ehird> ais523: oh, meep:
18:15:25 <ehird> s/(?<!\@)(?<!\\)((?:\\\\)*)([^@])/$1\@$2/gs while m/(?<!\@)(?<!\\)((?:\\\\)*)([^@])/s;
18:15:35 <ehird> i can split on the while though
18:15:54 <ehird> ais523: I am spending an awful long time just adding spaces between binary ops
18:15:54 <ehird> :P
18:16:12 <ais523> ah, if you like that style, then that's fine
18:16:14 <ehird> my $cr="\\\@\\".join "\\\@\\",split(//,$ct); /// i have no idea how precedence applies here
18:16:17 <ais523> I tend to oscillate myself
18:16:20 <ehird> is it a.(b,c)
18:16:22 <ehird> or (a.b),c
18:16:26 <ehird> or a,c.b
18:16:29 <ehird> or watermelons
18:16:32 <ais523> it has to be a.(b,c)
18:16:36 <ais523> or the types wouldn't match
18:16:45 <ais523> oh, and comment in Perl is # not ///
18:16:46 <ehird> ais523: so how does that thing work
18:16:50 <ehird> shouldn't it be
18:16:59 <ehird> b;my $cr = a . b;
18:17:00 <ehird> err
18:17:00 <ehird> a.c
18:17:05 <ehird> or does it actually do something
18:17:16 <ais523> ehird: it does actually do something
18:17:27 <ehird> ais523: do I really want to know
18:17:42 <ais523> it puts the string \@\ at the start, end, and between every char of $ct, and stores the result in $cr
18:17:44 <ehird> also, i may suggest that you use more qw when generating perl code
18:17:58 <ais523> ehird: qw is used to write array literals
18:18:04 <ehird> oh. yeah
18:18:04 <ehird> I mean qq
18:18:14 <ais523> I could have written "\\\@\\" as '\@\', I suppose
18:18:17 <ehird> ais523: ohhh wait
18:18:18 <ehird> that join thing is
18:18:22 <ehird> a.join(b,c)
18:18:23 <ehird> isn't it
18:18:30 <ais523> actually, does \ work inside '? I keep forgetting
18:18:31 <ais523> ehird: yes
18:18:36 <ehird> my $cr = "\\\@\\" . join("\\\@\\", split(//, $ct)); # that's better
18:19:03 <ais523> ehird: yes, if you haven't had much practice reading punctuation-based line noise with parens matched
18:19:10 <ehird> ais523: local $^W=0; # oh my what
18:19:11 <ehird> :D
18:19:22 <ais523> ehird: it means the block contains an expected warning
18:19:32 <ais523> and tells Perl not to produce a warning message for that block if warnings are on
18:19:34 <ehird> but...
18:19:35 <ehird> $^W
18:19:36 <ehird> o.O
18:19:45 <ehird> oh
18:19:45 <ehird> i see
18:19:50 <ehird> ais523: what is the warning?
18:19:57 <ais523> ehird: undef used as a key of a hash
18:20:01 <ehird> is that bad
18:20:08 <ais523> ehird: not if you do it deliberately
18:20:21 <ais523> but using undef tends to get you warnings because it means you didn't do error checking properly
18:20:30 <ais523> it's sort of like getting a null pointer from malloc
18:20:38 <ehird> ais523: $lgu set to a call to ugn
18:20:40 <ehird> just wow
18:20:41 <ais523> yes, you can store that in a data structure, but probably you didn't mean to
18:20:56 <ais523> ehird: last groupnumber used
18:20:58 <ehird> ais523: s/\G/'?'.($lgu=ugn($lgu,%groupnumbers),$groupnumbers{$lgu}=1,$lgu)/e
18:20:59 <ehird> while (scalar(/\@\((?>[+^*]*)(?!\?)/g));
18:21:00 <ehird> shouldn't that be
18:21:04 <ais523> and unique group number
18:21:08 <ehird> i mean..
18:21:09 <ehird> just..
18:21:14 <ehird> ais523: can't /e be multiple statements
18:21:31 <ais523> ehird: no idea, you probably have to use a do{} because it says 'expression' not 'block'
18:21:43 <ehird> ais523: I'll do that. it's nicer than the current thing at least
18:21:48 <ais523> and for some reason I prefer (,,,) to do{;;;}, probably because of golfing
18:22:00 <ais523> after all, it's much the same
18:22:05 <ais523> also, (,,,) also works in C
18:22:10 <ais523> so your code is more portable :)(
18:22:13 <ais523> s/(//
18:22:24 <ais523> s/\(/\(/
18:22:34 <ehird> ais523: oh my lord, cperl-mode failed to indent properly
18:22:36 <ehird> that has to be a sign
18:22:52 <ais523> ehird: Emacs is really bad at parsing Perl
18:22:57 <ais523> I often use kate to edit Perl for that reason
18:23:27 <ehird> ais523: http://rafb.net/p/03B3sx47.html
18:23:33 <ehird> it indents the next lines properly if i do that at least
18:23:44 <ehird> but if you add a newline after }
18:23:46 <ehird> it indents the / in
18:23:59 <ais523> ehird: it's just not used to compound statements inside regexps
18:24:24 <ais523> maybe you should have stuck to the expression after all...
18:24:35 <ehird> ais523: nah, this way i can actually read it
18:24:36 <ehird> :-)
18:24:40 <ehird> it's still obfuscated!
18:24:49 <ais523> no, that's my non-obfuscated Perl
18:24:53 <ehird> oh holy.
18:24:54 <ais523> obfuscated Perl is a lot worse than that
18:25:06 <ehird> ais523: i'm going to remove your main program thingy, as it's a library
18:25:07 <ais523> I can also write specially crystal-clear Perl too, but I find it harder to read
18:25:13 <ais523> ehird: the main program was just for testing
18:25:48 <ehird> ais523: http://rafb.net/p/AKCgd474.html
18:26:02 <ehird> there's your "lexer", as marginally more readable by me
18:26:02 <ehird> :D
18:26:13 <ehird> oh
18:26:15 <ehird> better remove the print
18:26:16 <ehird> hehe
18:26:35 <ais523> that looks fine
18:26:40 <ais523> I find it just as readable as the original
18:26:55 <ehird> ais523: so ... do we parse it now, or do we try and do something less scary
18:26:57 <ehird> actually
18:26:58 <ais523> OFC, it was probably meant to be /more/ readable, but if it is for you that's a Pareto improvement
18:27:00 <ehird> we put it in a repository now
18:27:03 <ais523> yes
18:27:04 <ehird> tap tap tap github.com tap tap
18:27:10 <ais523> git?
18:27:24 <ehird> ais523: unless you'd like to use somethign else
18:27:27 <ais523> isn't that the version control system you use when you need 5000 different branches all run by different companies?
18:27:35 <ais523> Somehow I doubt Cyclexa will get that big
18:27:35 <ehird> haha
18:27:39 <ehird> no
18:27:39 <ehird> no it's not
18:27:47 <ehird> ais523: git is great for small projects
18:27:54 <ehird> it's darcs, but made by linus torvalds
18:28:01 <ehird> so that gives you an approximate idea of what it's like
18:28:05 <ais523> I would have suggested darcs
18:28:15 <ais523> because Linus designed git for a reason
18:28:19 <ehird> ais523: github is too wonderful to pass up - https://github.com/
18:28:35 * ais523 looks at it
18:29:10 <Slereah> Hm.
18:29:22 <Slereah> I think my -function language will be made with a translator.
18:29:27 <Slereah> Easier to do.
18:29:46 <oklopol> trans FUCKING lator
18:29:47 <ehird> ais523: welp, i just made the cyclexa repository
18:29:51 <Slereah> oklopol!
18:29:59 * ehird adds the tree
18:30:00 <Slereah> I made one for der Turing machine to C.
18:30:01 <ais523> ehird: seems reasonable. Would I have my own personal copy on my computer too?
18:30:07 <Slereah> Although actually a Post machine
18:30:09 <ehird> ais523: yes, it's distributed
18:30:16 <Slereah> But it is pretty much a binary Turing machine
18:30:23 -!- Corun has joined.
18:30:25 <ehird> it is also very fast (written in C and shell), and takes up less space for repositories than darcs
18:30:45 <ehird> but then, it's linus. what do you expect :-)
18:31:01 <ais523> I was worried you were going to say it was written in csh then
18:31:18 <ehird> ais523: CAVEAT - don't install debian's git package
18:31:23 <ehird> it's actually the gnu interactive file manager.
18:31:25 <ehird> it's git-core.
18:31:27 <ehird> that you want
18:32:06 <ais523> OK, installing
18:32:24 <ais523> how many file managers can be in existence, anyway?
18:32:37 <ehird> ais523: caveat 2: it seems that debian stable still has cogito
18:32:44 <ehird> which was meant to be a friendly layer upon git
18:32:47 <ehird> this implies that the git is very old
18:32:54 <ehird> as git now has most of cogito's features and cogito is obsolete
18:32:58 <ais523> I have three GUI ones on my Ubunutu+Kubuntu system by default
18:33:04 <ehird> so i would build it myself -- http://git.or.cz/
18:33:09 <ais523> oh, and Ubuntu runs a frozen version of Debian unstable IIRC
18:33:28 <ais523> $ git --version
18:33:28 <ais523> git version 1.5.3.6
18:33:30 <ais523> is that bad?
18:33:37 <ehird> ais523: 1.5.5.1 is the latest
18:33:47 <ais523> still, is that bad?
18:33:51 <ehird> 1.5.3 is sept 07
18:33:52 <ehird> so probably not
18:34:30 <ais523> OK, so how do I check out my own program?
18:35:04 <ehird> ais523: you can't, i haven't compiled my own git yet
18:35:06 <ehird> (new system)
18:35:12 <ehird> and ergo haven't put it up yet
18:35:15 <ais523> OK
18:35:41 <ehird> ais523: i love how git is made in mainly c and shell, but it requires tcl and perl anyway because people wrote tools in those languages that were accepted into the core
18:35:59 <ais523> they should have compiled them into C
18:36:01 <ais523> or maybe into sh!
18:36:18 <ehird> haha
18:36:33 <ehird> ais523: well perl->anything is impossible
18:36:35 <oklopol> so for the pong multiplay: wouldn't it be awesome if @ network play you'd just connect a centralized server, and the server would choose you a random guy to play with instantly, assuming at least one other played was connected
18:36:35 <ehird> perl2c is a cheat
18:36:35 <ehird> :)
18:36:44 <oklopol> and, after the game, another random game right away
18:36:44 <ehird> oklopol: kinda
18:36:49 <ehird> yeah i guess s
18:36:54 <oklopol> well
18:37:00 <oklopol> ofc you'd have like statistics
18:37:01 <ehird> but i'd need a way to find out who i'm playing with. otherwise i'll be sad and never hear of them again! ;))
18:37:18 <oklopol> who you usually win and who wins you
18:37:19 <oklopol> and such
18:37:27 <oklopol> well yeah, nicks
18:37:30 <ais523> oklopol: INTERCAL's networking model does that automatically
18:37:41 <oklopol> cool
18:37:54 <ais523> only by default it scans only you LAN, because most routers won't let you portscan the entire Internet with one command
18:38:38 <oklopol> anyway
18:38:48 <oklopol> the point was: you'd just open the game, and start playing
18:39:03 <oklopol> and statistics would automatically be kept, and you could chat if you wanted
18:39:07 <oklopol> but wouldn't have
18:39:18 <ehird> ais523: register for git-hub, you need to add your ssh key
18:39:18 <oklopol> i'd love that
18:40:00 <ais523> oklopol: the stats would require some sort of centralised server
18:40:04 <ais523> the rest would be fine, though
18:40:13 <ehird> ais523: he said he wanted a centralized server
18:40:16 <ehird> also, no they don't
18:40:19 <ehird> bittorrent-style stats
18:40:26 <ais523> ehird: I was thinking about that just now...
18:40:49 <ehird> ais523: got github & ssh key set up?
18:40:52 <oklopol> how does bt do it?
18:40:59 <ais523> ehird: not yet, I'm doing it now
18:41:19 <ehird> ais523: when you do, just tell me your username
18:41:43 <ais523> ehird: you can likely guess what I'll choose
18:41:52 <ehird> :)
18:42:03 <ehird> ais523: shall i set it private by the way?
18:42:10 <ehird> right now, anyone can go and get their dirty paws on the source
18:42:14 <ehird> and even fork it with a click
18:42:30 <ais523> ehird: nah, this should be open-source eventually
18:42:38 <ais523> there isn't a licence on it yet, though, so forking would be illegal
18:42:54 <ehird> ais523: I would say 'MIT license', but I'm not sure if the Eiffel Forum License Version 2 isn't better
18:42:55 <ehird> it's short
18:43:19 <ehird> see: http://inamidst.com/stuff/eiffel/
18:43:24 <ais523> ehird: I can't sign up to that site
18:43:30 <ehird> ais523: which site? github?
18:43:32 <ehird> if so, why not?
18:43:32 <ais523> yes
18:43:46 <ais523> adblocking is against their terms of service
18:43:51 <ehird> ais523: is it?
18:43:52 <ehird> are you SURE?
18:43:54 <ais523> yes
18:43:59 <ais523> I'm reading them right now
18:44:01 <ehird> ais523: uh, it doesn't HAVE ads.
18:44:06 <ais523> http://github.com/site/terms
18:44:15 <ais523> number 7
18:44:19 <ehird> ais523: you can't violate it: there's nothing to block ergo you are not blocking ads
18:44:20 <ehird> :-)
18:44:53 <ehird> ais523: but OK
18:44:57 <ehird> we can do gitorious instead
18:45:02 <ehird> which is just like github, but not as nice
18:45:23 <ehird> gsdf
18:45:24 <ais523> let me read their TOS first
18:45:27 <ehird> ok
18:45:31 <ehird> i don't think i can delete a repo though
18:45:41 <ehird> ah no
18:45:43 <ehird> i can
18:45:57 <ehird> ais523: however, technically you don't violate the github tos
18:45:58 <ais523> heh, they don't have one
18:46:49 <ehird> ais523: http://reddit.com/info/6guod/comments/
18:46:51 <ehird> feel free to vote up
18:46:54 <ais523> Email is too short (minimum is 3 characters) <--- error I got on gitorious when I pressed Enter by mistake rather than tab
18:47:17 <ehird> ais523: you can't have a valid email <3 chars
18:47:21 <ehird> a@b is the minimum
18:47:39 <ais523> ehird: oh, I forgot that you didn't need a TLD for email, technically speaking
18:47:46 <ais523> I was assuming that the minimum was actually longer than that
18:47:53 <ais523> and I don't have a reddit account
18:48:04 <ehird> ais523: gitorious is nice but just not as pretty as github. Ergo: eso-std needs to include a git thingy when it's up ;)
18:48:48 <oklopol> how does bittorrent keep stats?
18:49:00 -!- Corun has quit ("This computer has gone to sleep").
18:49:06 <ehird> oklopol: no just distribute the stats via something like BT
18:49:13 <oklopol> ah.
18:49:42 <ehird> ais523: gitorious wants me to choose a license Right Now
18:49:51 <ais523> what options?
18:49:52 <ehird> MIT, Eiffel Forum v2, or Other?
18:50:01 <ais523> MIT should be fine, I think
18:50:02 <ehird> and, ais523, you can say Other
18:50:03 <ehird> so every one
18:50:11 <ehird> actually
18:50:13 <ehird> why not pubilc domain, ais523?
18:50:32 <ais523> interesting question
18:50:35 <ehird> i asked myself that question once
18:50:48 <ehird> the only answer i could come up with was "but i can't just let ANYONE do what they want with it!"
18:50:55 <ehird> and then i realised that's what i hated about the gpl :-)
18:50:57 <ais523> one problem is that public domain may land you into more trouble with warranties than a permissive license
18:51:14 <ehird> ais523: we can steal a no-warranty clause from another license
18:51:15 <ehird> i guess
18:51:42 <ais523> ehird: then it's just a simple permissive license
18:51:55 <ais523> and you may as well enforce the no-misrepresentation-of-copyright rule while you're at it
18:52:00 <ehird> ais523: no
18:52:02 <ais523> (the CC 'by' clause)
18:52:10 <ehird> "This software is released into the public domain.
18:52:11 <ehird> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18:52:11 <ehird> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18:52:11 <ehird> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18:52:11 <ehird> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18:52:11 <ehird> HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18:52:13 <ehird> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18:52:15 <ehird> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
18:52:17 <ehird> OTHER DEALINGS IN THE SOFTWARE."
18:52:19 <ehird> ais523: that still releases any copyright
18:52:35 <ais523> ehird: I think there may be a legal contradiction there
18:52:41 <ais523> but I don't really understand how these things work
18:52:47 <ehird> ais523: if there is, then public domain means we're not liable to be sued anyway
18:52:51 <ais523> that's why sticking to established licenses is better
18:52:58 <ais523> proper lawyers have checked them
18:52:59 <ehird> but personally, i'll give warranties for cyclexa!
18:53:12 <ehird> ais523: okay then
18:53:13 <ehird> WTFPL?
18:53:17 <ais523> ehird: you just know that Microsoft is going to use it now and sue you for several billion
18:53:17 <ehird> it's considered a debian free license
18:53:22 <ais523> ehird: really?
18:53:23 <ehird> http://sam.zoy.org/wtfpl/
18:53:25 <ehird> yes
18:53:27 <ais523> did they actually announce that?
18:53:31 <ehird> ais523: most linux distros come with files under the wtfpl
18:53:54 <ehird> ais523: the wtfpl has no 'no warranty' clause though
18:53:56 <ehird> you have to add your own
18:53:59 <ehird> it says so on the site
18:54:11 <ehird> "There is no such thing as “putting a work in the public domain”, you America-centered, Commonwealth-biased individual. Public domain varies with the jurisdictions, and it is in some places debatable whether someone who has not been dead for the last seventy years is entitled to put his own work in the public domain." <-- THIS IS PARANOIA AND NOT TRUE
18:54:15 <ehird> just thought i would piont that out
18:54:29 <ais523> for permissive licenses I generally use BSD3
18:54:39 <lament> what do you mean, paranoia and not true?
18:55:00 <ehird> eh
18:55:01 <ais523> oh, and as far as public domain's concerned, in some countries like Germany you can put things into the public domain but the courts will insist on enforcing your copyright anyway
18:55:02 <ehird> let's just do mit
18:55:02 <ehird> ;P
18:55:09 <ais523> MIT it is, then
18:55:15 <ehird> ais523: solution -- insert comments involving nazis into the code
18:55:19 <ehird> then germany will ban it anyway
18:55:24 <ais523> ehird: no
18:55:27 <ehird> :)))
18:55:57 <ais523> grr... why does Konqueror not have middle-click to close tab?
18:56:05 <ais523> it's one of my most-often-used Firefox mouse shortcuts
18:56:38 <ehird> ais523: epiphany doesn't even have backspace = back
18:56:41 <ehird> but i am used to it now
18:56:45 <ehird> epiphany is lightweight, at least
18:56:52 <ehird> it handles 6 windows of 20 tabs on thsi machine
18:57:00 <ais523> ehird: neither does Firefox
18:57:10 <ais523> backspace = scroll back one page
18:57:17 <ehird> ais523: you can set that
18:57:21 <ehird> and it's the default on everything but lunix
18:57:39 <ais523> I'm used to Alt-left being back now
18:57:51 <ais523> it's consistent between programs on Ubuntu
18:57:52 <oklopol> i like ie, crashes less than firefox :)
18:57:59 <ais523> they've done a good job keeping all the keyboard shortcuts better
18:58:04 <ais523> oklopol: that's ridiculous
18:58:13 <oklopol> it is true though.
18:58:24 <ais523> back in the ages of IE5, I made a web page which had two frames, both of which were the original web page
18:58:24 <oklopol> i mean
18:58:27 <oklopol> in my experience
18:58:34 <oklopol> hehe, cool
18:58:38 <ehird> ais523: infinite loops hang things!
18:58:40 <ehird> wow
18:58:42 <ais523> when I tried to open it, the amount left to load kept halving indefinitely
18:58:50 <ehird> ais523: try that in firefox.
18:58:51 <ehird> same thing
18:58:59 <ais523> then IE said it was running low on memory and asked whether to cancel
18:59:04 <ehird> more than FF does
18:59:06 <ais523> whether you said yes or no it kept on going anyway
18:59:17 <ais523> then it crashed and caused your Start toolbar to disappear
18:59:30 <ehird> ais523: got your pubkey up on gitorious?
18:59:37 <ais523> so you couldn't even log out because it was a ridiculously locked-down system
18:59:38 <ais523> ehird: yes
18:59:49 <ehird> hmm
18:59:54 <ehird> 'Ceci n'est pas une initial commit.' is even funnier than it was when i typed it
19:00:40 <ehird> ais523: 'git clone git://gitorious.org/cyclexa/mainline.git'
19:00:46 <ehird> will get you the directory 'cyclexa', i believe
19:00:56 <ehird> project page: http://gitorious.org/projects/cyclexa
19:01:01 <ehird> main repo page: http://gitorious.org/projects/cyclexa/repos/mainline
19:01:05 <ehird> source tree: http://gitorious.org/projects/cyclexa/repos/mainline/trees/master
19:01:13 <ais523> ehird: it did, but it's called mainline
19:01:19 <ehird> ais523: 'mv'
19:01:24 <ehird> apparently, it renames things.
19:01:26 <ais523> no, I'm happy with its current name
19:01:27 <ehird> :D
19:01:44 <ais523> I used the standard anti-tarbomb tactic of putting the repo in a new directory
19:01:51 <ehird> ais523: i hope Lexer.pm is alright for you
19:02:14 <ais523> ehird: you forgot the 1; right at the end of the program
19:02:21 <ehird> ais523: oops
19:02:21 <ehird> also
19:02:24 <ehird> normalize is a vague name
19:02:25 <ehird> but
19:02:27 <ehird> Lexer::normalize
19:02:27 <ehird> is alright
19:02:34 -!- timotiis has quit (Read error: 110 (Connection timed out)).
19:02:38 <ehird> ais523: does 'use' pollute namespaces by default in perl?
19:02:40 <ais523> ehird: the point is that it takes a program and lexes it into another Cyclexa program
19:02:52 <ehird> ais523: it used to be cyx_normalize
19:02:53 <ais523> ehird: yes if you use export, no if you use export_ok in the module
19:03:10 <ehird> ais523: i didn't use either. what should i do
19:03:13 <ais523> you used neither so the module is useless
19:03:15 <ehird> just leave it i guess
19:03:16 <ehird> oh
19:03:17 <ehird> okay then
19:03:29 <ehird> ais523: which should I do?
19:03:30 <ehird> and how :)
19:03:31 <ais523> ehird: I'm not used to the syntax, but it's something like @EXPORT_OK = qw( normalise )
19:03:33 <ehird> perl learner here!
19:03:37 <ais523> let me look it up
19:03:40 <ehird> should i use @EXPORT or @EXPORT_OK
19:04:10 <ais523> @EXPORT_OK
19:04:14 <ais523> in a BEGIN block, apparently
19:04:21 <ehird> ais523: okay, i've never seen @EXPORT_OK used though
19:04:24 <ais523> you do it that way to not pollute people's namespaces
19:04:31 <ehird> never seen it used is all i'm saying
19:05:03 <ehird> ais523: hmm
19:05:08 <ehird> you need to 'require Exporter;'
19:05:11 <ehird> and @ISA exporter
19:05:12 <ehird> and stuff
19:05:16 <ehird> ais523: i don't think this is commonly used
19:05:40 * ehird takes a look at one of the only readable perl modules he's seen to see what they do
19:05:44 <ais523> wait, let me find the docs, I've got too many windows open
19:06:28 <ais523> ehird: if you don't use Exporter, you have to define import yourself
19:06:35 <ais523> so most modules inherit from Exporter
19:06:49 <ehird> ais523: still gonna check the Clean Module though
19:06:49 <ehird> ;)
19:07:03 <ais523> and EXPORT_OK is recommended
19:07:09 <ais523> EXPORT pollutes people's namespace by default
19:07:17 <ais523> EXPORT_OK pollutes namespace only on request from the caller
19:08:35 <ais523> package YourModule;
19:08:35 <ais523> require Exporter;
19:08:35 <ais523> @ISA = qw(Exporter);
19:08:35 <ais523> @EXPORT_OK = qw(munge frobnicate);
19:08:45 <ais523> that's the example straight from the Perl documentation
19:10:14 <ehird> ais523: Alright then.
19:11:19 <ehird> ais523: 'git pull'
19:11:52 <ais523> got it
19:12:09 <ehird> ais523: so are we compiling or interpreting?
19:12:31 <ais523> I think first, we're parsing
19:12:54 <ehird> ais523: i think that's my cue to run
19:12:56 <ehird> ;)
19:13:01 <ehird> okay, let me test out normalize a bit
19:13:08 <ehird> ais523: so how does perl pretend to have a REPL?
19:13:12 <ehird> something to do with the debugger right?
19:13:17 <ais523> yes
19:13:17 <ais523> perl -d
19:13:20 <ais523> is the debugger
19:13:25 <ehird> ais523: okay, how do i use it as a repl
19:13:28 <ais523> and it will just repl anything you input that looks like Perl
19:13:34 <ehird> aha
19:13:36 <ehird> 'perl -d -e0'
19:13:36 <ais523> it works INTERCAL-style, I think
19:13:38 <ehird> and i get a repl
19:13:43 <ehird> DB<1> print 2+2;
19:13:43 <ais523> it repls anything that isn't a debugger command
19:13:43 <ehird> 4
19:14:06 <ehird> $ rlwrap perl -d -e0
19:14:08 <ehird> that should do the trick
19:14:27 <ehird> ais523: Well the lexer is broken
19:14:32 <ehird> I forgot begin {}
19:14:36 -!- timotiis has joined.
19:14:54 <ehird> Global symbol "@ISA" requires explicit package name at Cyclexa/Lexer.pm line 9.
19:14:54 <ehird> Global symbol "@EXPORT_OK" requires explicit package name at Cyclexa/Lexer.pm line 10.
19:14:56 <ehird> ais523: :((
19:15:10 <ais523> our @ISA to avoid the strictness check
19:15:23 <ais523> our is like my, but as a public variable
19:15:23 <ehird> aha
19:15:25 <ehird> ais523: yeah
19:15:32 <ehird> ais523: we don't target perl<5.6 do we
19:15:41 <ehird> is that like, 1995
19:16:08 <ais523> ehird: I still have 5.005 on my DOS computer, but modern Perl is fine for this
19:16:17 <ais523> I couldn't live without recursive regexen for some things
19:16:23 <ehird> syntax error at Cyclexa/Lexer.pm line 49, near "}"
19:16:33 <ehird> ais523: your 'or carp(foo)' fails
19:16:35 <ehird> for the regexp
19:16:38 <ehird> i hcanged it to carp
19:16:39 <ehird> but yeah
19:16:40 <ehird> syntax error
19:16:45 <ehird> while (/\{\{([0-9a-zA-Z_])\{/) {
19:16:46 <ehird> s/\{\{([0-9a-zA-Z_])\{(.*)\}\1\}\}/quotemeta($2)/se
19:16:46 <ehird> or carp("Unmatched {{$1{ found in program.");
19:16:46 <ehird> }
19:17:02 <ehird> ais523: oh wait
19:17:04 <ehird> {{$1{
19:17:05 <ehird> that's wrong
19:17:10 <ehird> doesn't {$foo} work?
19:17:16 <ehird> ergo, we need to escape
19:17:25 <ais523> yes, escaping is probably needed
19:17:28 <ehird> ais523: yep
19:17:33 <ais523> the {{a{ is a complicated escaping mechanism anyway
19:17:38 <ehird> ais523: :(( my do { } doesn't work
19:17:43 <ais523> which one?
19:17:48 <ehird> both
19:17:52 <ehird> %groupnumbers{$lgu} = 1;
19:17:53 <ehird> that line fails
19:18:01 <ehird> well actually
19:18:02 <ehird> all of them
19:18:09 * ehird asks in perl
19:18:11 <ehird> err
19:18:12 <ehird> #perl
19:19:24 <ehird> ais523: you were the VERY ESSENCE OF WRONG
19:19:25 <ehird> <nadim> as should s//statement ; statement/e I believe
19:19:53 <ais523> it should be $groupnumbers{$lgu}=1;
19:19:56 <ais523> that's an obvious error
19:20:03 <ehird> ais523: oh thanks
19:20:05 <ais523> and a very easy one to make, too
19:20:10 <ais523> was that mine?
19:20:14 <ehird> yes
19:20:24 <ehird> conclusion: FSCK SIGILS
19:20:25 <ehird> :D
19:20:32 <ehird> woot
19:20:33 <ehird> the lexer wurks
19:20:42 <ais523> ehird: it's that Perl sigils say the return type, not the data type of the variable
19:20:54 <ais523> so a hash value is a scalar, so you put $ on the hash's name...
19:21:11 <ehird> yeah
19:21:12 <ais523> I think I have some hard-to-lex examples as tests
19:21:15 <ehird> but they causeBUGS
19:21:15 <ehird> :D
19:22:01 <ehird> ais523: hmm
19:22:03 <ais523> ^*(+?5abcd\cxe++??*?+(??fg|h'ij|kl'm)!-)('abc=def'|ghi=jkl)$+$*12345-???{^*(+?5abcd\cxe++??*?+(??fg|h'ij|kl'm)!-)('abc=def'|ghi=jkl)$+$*12345-???}{{a{}a}}}a}}\\\\\(\\\\\\()\\\\\@\\@\@\x6b@cdef
19:22:04 <ehird> removing do { and }
19:22:05 <ehird> works
19:22:06 <ehird> BUT
19:22:10 <ehird> cperl fails at it
19:22:13 <ehird> i can use just { and }
19:22:15 <ais523> what's cperl?
19:22:17 <ehird> but then it gets indented weirdly
19:22:19 <ehird> (just 1 or 2 spacse)
19:22:24 <ehird> ais523: emacs' cperl-mode
19:22:28 <ehird> wait -- do you use perl-mode?
19:22:31 <ais523> yes
19:22:33 <ehird> maybe that's why you think emasc sucks at perl
19:22:34 <ehird> haha
19:22:38 <ehird> perl-mode is obsolete for like 10 years now
19:22:40 <ais523> that would explain a lot
19:22:41 <ehird> try 'cperl-mode'
19:22:43 <ehird> its included in emacs
19:22:49 <ais523> so why does it have multiple modes for the same thing?
19:22:55 <ehird> ais523: because perl-mode is old leik dinosaurs
19:23:04 <ehird> and they went 'shit this is broken' so they wrote cperl-mode
19:23:07 <ais523> then why didn't they just replace it with the new one?
19:23:08 <ehird> but some idiots like perl-mode
19:23:10 <ehird> for some stupid reason
19:23:17 <ehird> ais523: it gets in the way a bit
19:23:20 <ehird> it's a 'framework mode'
19:23:20 <ehird> kinda
19:23:23 <ehird> but..
19:23:26 <ais523> ehird: we need a # -*- cperl -*- at the start of the files
19:23:27 <ehird> (defalias 'perl-mode 'cperl-mode)
19:23:28 <ehird> fixes everything
19:23:35 <ehird> ais523: nahh, nobody sane uses perl-mode any more
19:23:53 <ehird> ais523: but yeah, {..} shouldn't be a 1-space indent should it?
19:23:54 <ais523> ehird: Emacs still maps .pl to perl-mode by default...
19:24:11 <ehird> ais523: not if you do that defalias.
19:24:14 <ehird> which EVERYONE does
19:24:16 <ais523> ehird: that's not by default
19:24:17 <ehird> i've googled here
19:24:20 <ehird> i've done my research
19:24:26 <ehird> nobody who will edit perl code will not have that line
19:24:27 <ehird> :-)
19:25:19 <ais523> ehird: some of them might just not know of cperl-mode
19:25:38 <ehird> ais523: then they won't edit with emacs ;) google shows i'm right!
19:25:47 <ehird> besides
19:25:50 <ehird> some people like perl-mode.
19:26:06 <ehird> leaving it at normal will be perl-mode, so people who like cperl-mode's aliases will be alright
19:26:32 <ais523> they should have made the two versions minor modes within a perl-mode
19:26:50 <ais523> because otherwise they force you to put UI decisions into the mode line if you put one there
19:27:19 <ehird> ais523: your hard example:
19:27:21 <ehird> Use of uninitialized value in list assignment at Cyclexa/Lexer.pm line 136.
19:27:22 <ehird> at Cyclexa/Lexer.pm line 136
19:28:09 <ais523> wait a moment, I'm just commenting about the quality of some BF on a forum, I'll be back with this conversation in a moment
19:28:21 <ehird> ais523: I must see this
19:28:22 <ehird> :D
19:29:48 <ehird> ais523: hmm
19:29:54 <ehird> ais523: http://perldoc.perl.org/Exporter.html#Playing-Safe
19:29:57 <ehird> Exporter::Easy looks nice
19:30:32 <Sgeo> ehird, I'd edit Perl code without that line if I knew Perl.. but then again, I don't really use Emacs
19:31:01 <ehird> Sgeo: hopefully you wouldn't edit my perl in the first place
19:31:01 <ehird> :P
19:31:32 <ais523> ehird: http://forums.thedailywtf.com/forums/p/8523/162030.aspx
19:31:45 <ehird> ais523: but yeah -- should we use a BEGIN {} like it says, or Exporter::Easy or. .
19:32:25 <ais523> I'm disappointed that nobody else noticed it was compiled from Brainfuck, after all INTERCAL gets mentioned there every now and then
19:32:47 <ehird> ais523: they mention it but know nothing about it
19:32:51 <ehird> it's just geek cred. they've heard of it.
19:33:04 <ehird> the daily wtf is unfortunately very low on intelligence
19:33:19 <ais523> ehird: no, the daily wtf has a very large standard deviation of intelligence
19:33:28 <ehird> ais523: even in the posts
19:33:31 <ehird> MFD.
19:33:31 <ais523> some of the people there are excellent, some are completely stupid
19:33:32 <ehird> QED..
19:34:14 <ehird> mandatory fun day is so bad i just can't cope
19:34:20 <ais523> ehird: they've discontinued it
19:34:28 <ehird> ais523: yeah -- thank god
19:34:30 <ais523> and I could ignore it once they hid it behind hyperlinks from the front page
19:34:32 <ais523> so I did
19:34:37 <ehird> may it never come back
19:35:09 <RodgerTheGreat> alright, I have returned
19:35:30 <ehird> oh no
19:35:36 <ais523> let me look at that line 136 now
19:35:59 <ehird> ais523: most bizzare thing i've seen on TDWTF:
19:36:01 <ehird> http://i27.tinypic.com/2k3r13.png
19:36:07 <ehird> ais523: also, its the map of groupnumbers
19:36:17 <ehird> also, answer me about exporter
19:36:18 <ehird> ;)
19:36:30 <ais523> ehird: that isn't an error
19:36:31 <ais523> that's a warning
19:36:47 <ehird> ais523: no. it aborts the call.
19:36:48 <ais523> it's the warning I knew about, explained earlier, and put in the $^W to suppress
19:36:54 <ehird> and $^W is still there
19:37:03 <ehird> but it aborts
19:37:05 <ehird> ergo.
19:37:28 <ais523> OK, change the $_ at the start to (defined($_)?$_:'')
19:38:08 <ehird> ais523: that expression is now 3 lines
19:38:09 <ehird> scary
19:38:22 <ais523> not really
19:38:26 <ehird> %groupnumbers =
19:38:26 <ehird> map { (defined($_) ? $_ : '') => 1 }
19:38:26 <ehird> (m/(?<!\\)\([+^*]*\?(?:\*?([0-9]+)|\?)/g);
19:38:30 <ehird> possibly a bit too verbose, ais523
19:38:32 <ais523> I just scan the program to see which group numbers were explicitly used by the user
19:38:33 <ehird> but readable, i guess
19:38:40 <ais523> does it run?
19:38:41 <ehird> do you need those parens around the regexp
19:38:54 <ais523> which ones?
19:38:58 <ehird> ais523: (m//)
19:38:59 <ehird> err
19:39:00 <ehird> ais523: (m//g)
19:39:04 <ais523> yes I do
19:39:07 <ais523> so that it's in list context
19:39:13 <ehird> DB<3> print normalize "^*(+?5abcd\cxe++??*?+(??fg|h'ij|kl'm)!-)('abc=def'|ghi=jkl)$+$*12345-???{^*(+?5abcd\cxe++??*?+(??fg|h'ij|kl'm)!-)('abc=def'|ghi=jkl)$+$*12345-???}{{a{}a}}}a}}\\\\\(\\\\\\()\\\\\@\\@\@\x6b@cdef";
19:39:14 <ehird> ^*?0@(+?5@a@b@c@d@@e@+@+@??@*?@+@(?3@f@g@|@h@'@i@j@|@k@l@'@m@)@!@-@)@(?1@'@a@b@c@=@d@e@f@'@|@g@h@i@=@j@k@l@)@1@2@3@4@5@-@??@?@\^@\*@\(@\+@\?@5@a@b@c@d@\@e@\+@\+@\?@\?@\*@\?@\+@\(@\?@\?@f@g@\|@h@\'@i@j@\|@k@l@\'@m@\)@\!@\-@\)@\(@\'@a@b@c@\=@d@e@f@\'@\|@g@h@i@\=@j@k@l@\)@1@2@3@4@5@\-@\?@\?@\?@\}@a@\}@\}@\\@(?2@\\\(@)@\\@\@@k@
19:39:17 <ehird> ais523: that's with removed parens though
19:39:17 <ais523> so that $_ becomes equal to the number that was matched
19:39:19 <ehird> i'll fix that
19:39:36 <ehird> DB<2> print normalize "^*(+?5abcd\cxe++??*?+(??fg|h'ij|kl'm)!-)('abc=def'|ghi=jkl)$+$*12345-???{^*(+?5abcd\cxe++??*?+(??fg|h'ij|kl'm)!-)('abc=def'|ghi=jkl)$+$*12345-???}{{a{}a}}}a}}\\\\\(\\\\\\()\\\\\@\\@\@\x6b@cdef";
19:39:37 <ehird> ^*?0@(+?5@a@b@c@d@@e@+@+@??@*?@+@(?3@f@g@|@h@'@i@j@|@k@l@'@m@)@!@-@)@(?1@'@a@b@c@=@d@e@f@'@|@g@h@i@=@j@k@l@)@1@2@3@4@5@-@??@?@\^@\*@\(@\+@\?@5@a@b@c@d@\@e@\+@\+@\?@\?@\*@\?@\+@\(@\?@\?@f@g@\|@h@\'@i@j@\|@k@l@\'@m@\)@\!@\-@\)@\(@\'@a@b@c@\=@d@e@f@\'@\|@g@h@i@\=@j@k@l@\)@1@2@3@4@5@\-@\?@\?@\?@\}@a@\}@\}@\\@(?2@\\\(@)@\\@\@@k@
19:39:41 <ehird> ais523: same with and without the parens
19:39:44 <ehird> maybe you mean (m//g, )
19:39:45 <RodgerTheGreat> bbl
19:39:51 -!- RodgerTheGreat has quit.
19:40:01 <ehird> same even with (m//g, )
19:40:11 <ehird> ais523: isn't list context a misnomer, anyway
19:40:19 <ehird> ais523: i think just m//g is fine
19:40:26 <ehird> since it doesn't change anything
19:40:34 <ais523> ehird: I think Perl's intelligent enough to put it into list context itself even without the parens there
19:40:37 <ais523> but I prefer things to be explicit
19:40:44 <ehird> ais523: okay. isn't (x) = x though
19:40:49 <ais523> ehird: no
19:40:49 <ehird> (x,) might force it into list context
19:40:54 <ehird> ais523: okay then
19:40:56 <ehird> i'll add the parens
19:40:59 <ais523> (x) can force it into list context in some cases
19:41:07 <ehird> ais523: ok. so now about exporter
19:41:13 <ehird> http://search.cpan.org/~ferreira/Exporter-5.62c/lib/Exporter.pm#Playing_Safe
19:41:24 <ehird> ais523: should we use one of the examples there, or just what i put, or Exporter::Easy, or.
19:41:33 <ais523> let me look at it first
19:41:57 <ais523> for some reason Konqueror can't find cpan's DNS, so I have to open it with Firefox
19:42:33 <ais523> the BEGIN block method is probably best
19:42:42 <ais523> it makes sense to C++ programmers, anyway
19:42:47 <ehird> ais523: yeah, the 'use base' and 'use parent' things seem to have Side Effects
19:42:50 <ehird> ais523: right?
19:42:56 <ais523> specify what methods a class has at compile time
19:43:00 <ais523> the other methods specify it at runtime
19:43:21 <ehird> the question mark was to put it into question context, ais523 ;)
19:43:31 <ais523> ehird: I know
19:43:37 <ehird> couldn't resist that joke
19:44:10 <ais523> I think that the base/parent methods, seeing as they defer the decision of what methods the module has until runtime, are unclear conceptually and I wouldn't want to use them
19:44:21 <ehird> ais523: and google code search finds no search results for Exporter::Easy
19:44:25 <ehird> which looks nice otherwise
19:44:32 <ehird> ergo, ugly BEGIN block it is
19:44:33 -!- gigo has quit ("Leaving.").
19:44:36 -!- RodgerTheGreat has joined.
19:44:45 <ehird> ais523: maybe we should make it a class and remove possibilities of name pollution and everything ;)
19:44:57 <ais523> ehird: modules are classes, more or less
19:45:03 <ehird> you could even replace $_ with an instance var
19:45:08 <ehird> and have $self->do_rx
19:45:09 <ehird> :P
19:45:12 <ais523> ehird: that's what local is for
19:45:14 <ehird> ais523: of course, it's probably pointless for this
19:45:18 <ehird> ais523: and the reason i said it
19:45:23 <ehird> was that deat etc could mutate the class
19:45:24 <ais523> it's only for localising $punct variables, everything else uses my
19:45:25 <ehird> silly :D
19:45:37 <ehird> Lexer->new("Foo")->normalize; # is probably pointless anyway
19:45:47 <ehird> so Lexer::normalize("Foo") it is, even if that requires HUGE BAGS OF UGLY
19:46:14 <ais523> the BEGIN isn't ugly
19:46:19 <ais523> it says 'this should happen at compile time'
19:46:32 <ehird> ais523: i know
19:46:35 <ais523> that's hardly an ugly thing to request when defining what functions are in a module
19:46:36 <ehird> i was just being silly, of course
19:46:42 <ehird> ^*?0@(+?5@a@b@c@d@@e@+@+@??@*?@+@(?3@f@g@|@h@'@i@j@|@k@l@'@m@)@!@-@)@(?1@'@a@b@c@=@d@e@f@'@|@g@h@i@=@j@k@l@)@1@2@3@4@5@-@??@?@\^@\*@\(@\+@\?@5@a@b@c@d@\@e@\+@\+@\?@\?@\*@\?@\+@\(@\?@\?@f@g@\|@h@\'@i@j@\|@k@l@\'@m@\)@\!@\-@\)@\(@\'@a@b@c@\=@d@e@f@\'@\|@g@h@i@\=@j@k@l@\)@1@2@3@4@5@\-@\?@\?@\?@\}@a@\}@\}@\\@(?2@\\\(@)@\\@\@@k@
19:46:46 <ehird> ais523: is that normalization right?
19:46:48 <ehird> it contains a special char
19:46:53 <ais523> it could take a while to check
19:47:02 <ais523> the special char is right, it should be control-X
19:47:27 <ais523> hmm... there are actually two special chars, let me try to remember what the other one is
19:48:03 <ais523> they're both control-Xs
19:48:05 <ehird> ais523: git pull
19:48:13 <ehird> and yeah
19:48:16 <ehird> i haev two c-x's
19:48:23 <ehird> ais523: also, you should totally read my commit messages
19:48:24 <ehird> they rock
19:48:49 <ais523> seems about right
19:49:58 <ais523> wait, the second one shouldn't be a c-x, that's a bug
19:50:03 <ehird> ais523: oh wonderful
19:50:05 <ais523> it should have been a literal \cx
19:50:06 <ehird> well, if you've git pulled
19:50:08 <ehird> go and fix it
19:50:08 <ehird> oh
19:50:10 <ehird> you're right
19:50:10 <ais523> there must be operator precedence problems
19:50:12 <ehird> it's \<special>
19:50:25 <ehird> ais523: or at least
19:50:27 <ehird> 'print' prints it as
19:50:33 <ehird> \<insert a real control-x here>
19:51:09 <ais523> that's a bug
19:51:15 <ais523> I'll try to track it down...
19:51:20 <ehird> ais523: as long as you've 'git pull'd
19:51:25 <ais523> I have
19:51:26 <ehird> by the way
19:51:34 <ehird> i am NEVER going to work on this lexer if i can avoid it, ais523
19:51:36 <ehird> :D
19:51:45 <ehird> ais523: also, look at your emacs modeline. 'Git:master' indeed!
19:52:03 <ais523> ehird: I have it open in Kate, so I can't see that
19:52:16 <ehird> ais523: will i have to fix some more indentation
19:52:17 <ehird> what fun
19:52:17 <ehird> :D
19:52:18 <ehird> :p
19:56:25 <ais523> ehird: I think the bug's on line 57
19:56:53 <ehird> ais523: well that's certainly a very simple line.
19:57:38 <ais523> sorry, line 62
19:58:07 <ehird> ais523: well, why is it duplicated
19:58:19 <ehird> i think that's the bug
19:58:21 <ehird> i see why
19:58:22 <ehird> in the comments
19:58:24 <ehird> but i bet that causes the bug
20:00:11 <ehird> ais523: i don't know how, though
20:00:16 <ehird> your code is slightly inscrutable
20:00:21 <ais523> only slightly, though
20:00:29 <ais523> I think the problem is in the backslash detector
20:00:44 <ais523> before things are tokenised, you have to check to see if things are preceded by an even or odd number of backslashes
20:08:31 <ehird> ais523: any ideas on how to fix it? :P
20:08:45 <ais523> ehird: not yet, I've been in an argument in a different channel
20:09:11 <ais523> as you know
20:09:13 <ehird> ais523: sounds like an odd channel
20:09:17 <ehird> i wonder which one you mean
20:09:20 <ehird> freenode is generally friendly
20:09:24 <ehird> do you mean on efnet?
20:10:31 <ais523> ehird: Question context not accepted in this context.
20:10:41 <ehird> ais523: hah
20:10:53 <ais523> ehird: how do you run that parser as a test?
20:10:53 <ehird> no warnings;
20:10:54 <ehird> no strict;
20:10:58 <ehird> ais523: and
20:11:00 <ehird> perl -d -e0
20:11:05 <ehird> use Cyclexa::Lexer qw/normalize/;
20:11:08 <ehird> print normalize "your mom";
20:11:08 <ais523> I'm wondering how to test {\ca}
20:11:12 <ais523> that's a minimal test case
20:11:32 <ehird> ?0@\<CTCP>@
20:11:38 <ehird> ais523: after \ is a special char
20:11:41 <ehird> U+0001 apparently
20:11:47 <ehird> ais523: i assume you mean "\c"
20:11:48 <ehird> not "\\c"
20:11:51 <ais523> OK, that's the bug
20:11:55 <ais523> and I do mean \c
20:11:57 <ehird> DB<2> print normalize "{\ca}";
20:11:57 <ehird> ?0@\<CTCP>@
20:11:57 <ehird> DB<3> print normalize "{\\ca}";
20:11:57 <ehird> ?0@\\@@a@
20:12:10 <ais523> those are both broken
20:12:11 <ehird> ais523: i hope you don't expect people to put lit. \cs in their code
20:12:20 <ais523> \c quotes a control char
20:12:30 <ais523> but it should itself be quoted by the braces so it never comes up
20:12:38 <ehird> ais523: i should put these to a file
20:12:39 <ais523> so you can type \cg for control-G, if you like
20:12:40 <ehird> in the file
20:12:42 <ehird> would i put \c literally
20:12:46 <ehird> that is backslash character then 'c'
20:12:48 <ais523> backslash then c
20:12:49 <ehird> or would i put '\c'
20:12:50 <ehird> okay
20:12:55 <ehird> ais523: then i tested your previous one wrong
20:12:55 <ehird> :D
20:13:04 <ais523> oh, is that what's happening?
20:13:13 <ais523> you're putting control characters in the source code?
20:13:17 <ehird> ais523: yeah.
20:13:23 <ehird> i'll write a script to test the lexer from a file
20:13:24 <ais523> no wonder the tests seemed to be failing
20:13:39 <ehird> ais523: my $text = <>;
20:13:43 <ehird> that reads in a file or stdin right
20:13:55 <ehird> (and how to i append to the load path?)
20:13:56 <ais523> one line from a file or stdin
20:14:03 <ais523> do undef $/ first to get the whole file
20:14:31 <ehird> but yeah
20:14:32 <ais523> or the golfing equivalent $/=$] which gets the whole file unless it contains the Perl version number as text
20:14:33 <ehird> load path
20:14:42 <ais523> -L I think
20:14:50 <ehird> ais523: i mean inside the script
20:14:50 <ais523> I don't think I've used that option before, though
20:14:52 <ehird> it's $: right
20:15:00 <ais523> ehird: I thought it was a longer name than that
20:15:08 <ehird> ais523: ruby's is single-char
20:15:10 <ais523> try doing it wrong, the error message tells you what it is
20:15:11 <ehird> so i assume perl's is too
20:15:11 <ehird> oh wait
20:15:12 <ehird> @INC
20:15:13 <ais523> oh, it's @INC
20:15:17 <ais523> snap
20:15:27 <ehird> ais523: push @INC, dirname(__FILE__) . "/src";
20:15:28 <ehird> should work
20:15:36 <ais523> yes
20:15:53 <ehird> ais523: ah, in a BEGIN {} though
20:16:01 <ehird> okay
20:16:03 <ehird> and there's no dirname()
20:16:32 <ehird> ais523: what should i use instead of dirname() then
20:16:33 <ais523> hmm... not as standard, it's probably in some module
20:16:34 <ehird> or is it in a package
20:16:39 <ais523> as a hack you could use `pwd`
20:16:43 -!- olsner has joined.
20:16:58 <ehird> ah, apparently File::Spec is better than dirname
20:17:43 <ehird> ais523: File::Spec->splitpath(__FILE__)[1]
20:17:44 <ehird> how ... nice
20:17:55 <ehird> aha
20:17:58 <ehird> use File::Spec::Functions;
20:17:59 <ehird> then it's
20:18:02 <ehird> splitpath(__FILE__)[1]
20:18:22 <ehird> ais523: i'll just use File::Basename though
20:18:31 <ehird> ais523: also, should BEGiN { } have a ; at the end?
20:18:34 <ehird> BEGIN {...};
20:18:43 <ais523> I don't think it needs one
20:18:49 <ehird> ais523: should it have one, is the q
20:19:01 <ais523> ehird: not if you're a C programmer
20:19:06 <ais523> and I know you are really
20:19:15 <ehird> ais523: haha, why do you say that :D
20:19:26 <ais523> ehird: I was teasing
20:19:46 <ais523> but your ninjacode stuff gave a big insight into your coding personalit
20:19:49 <ais523> s/$/y/
20:19:55 <ehird> ais523: haha, how so?
20:20:04 <ehird> also, 'git pull' and impl/lex.pl does the obvious
20:20:15 <ais523> the way you were looking for efficiency
20:20:18 <ehird> oh
20:20:21 <ehird> that was just for fun
20:20:22 <ehird> :)
20:20:29 <ehird> i don't care about efficiency oftne
20:20:33 <ehird> heck sometimes i use ruby.
20:20:54 <ehird> but ninjacode was to be a really, really weird, esoteric language that unlike most every esolang out there, had both many functions and libraries and was blazing fast
20:20:58 <ehird> just to be different
20:21:31 <ais523> unfortunately, it's still buggy
20:21:36 <ais523> even with definitely literal backslashes
20:22:05 <ehird> ais523: oh, and here's a quick way to use lex.pl
20:22:13 <ais523> perl lex.pl?
20:22:32 <ehird> ais523: err, but then you get an extra newline
20:22:37 <ehird> so the normalized is different
20:22:54 <ais523> ehird: never heard of C-d C-d?
20:23:10 <ais523> once flushes stdin, twice does an EOF
20:23:22 <ais523> newline also flushes stdin which is why a single C-d is EOF after a newline
20:23:27 <ehird> ais523: wow, really?
20:23:30 <ehird> i am a retard!
20:23:35 <ehird> THANK YOU
20:23:46 <ehird> ais523: ah but then the output is on the same line
20:24:15 <ais523> ehird: what do you expect? there wasn't a newline
20:24:20 <ehird> ais523: :)))
20:24:22 <ais523> you can add one in your script if you like, for display purposes
20:24:50 <ehird> ais523: you do it, you haven't committed at all
20:24:51 <ais523> I'm still trying to find what's wrong
20:24:52 <ehird> ;)
20:24:59 <ehird> quick git tutorial:
20:25:01 <ehird> $ git add fileichange
20:25:06 <ehird> $ git commit -m 'I suck'
20:25:07 <ehird> $ git push
20:25:19 <ehird> you can do 'git comit -am' to just include every changed file
20:25:26 <ehird> git commit -i lets you choose files etc. interactively
20:25:37 <oklopol> so what's ninjacode?
20:25:38 <ehird> err
20:25:40 <ehird> --interactive
20:25:42 <ehird> oklopol: dead unfortunately
20:25:43 <ehird> :(
20:25:48 <oklopol> i just recall being on a channel with that name
20:25:56 <ehird> yeaeh
20:26:33 <oklopol> the language was never created?
20:26:35 <ehird> nope
20:27:11 <ais523> fatal: The remote end hung up unexpectedly
20:27:11 <ais523> error: failed to push to 'git://gitorious.org/cyclexa/mainline.git'
20:27:20 <ais523> ehird: have you given me commit access?
20:27:46 <ehird> ais523: hmm
20:27:49 <ehird> let me examine
20:28:34 <ehird> ais523: git remote add origin git@gitorious.org:cyclexa/mainline.git
20:28:40 <ehird> ais523: then, 'git push origin master'
20:28:45 <ais523> 14:08 to 14:31
20:28:46 <ehird> after that you can just do 'git push' from then on
20:28:55 <ais523> sorry, wrong channel
20:34:01 <ais523> ehird: the remote add was already done
20:34:08 <ais523> and git push origin master gives the same error
20:36:19 <ais523> I think I preferred darcs, it was simpler
20:36:36 <ais523> but git it is for this, if you can give me some tips on how to get it working
20:37:00 -!- toybot has joined.
20:37:14 -!- toybot has quit (Remote closed the connection).
20:37:28 <ehird> ais523: i don't know
20:37:29 <ehird> paste your session
20:37:37 <ais523> ehird: that's kind-of difficult
20:37:41 <ais523> it's full of #ircnomic logs
20:37:45 <ais523> because they're echoing to the terminal
20:37:54 <ais523> I'll try to reconstruct it from my bash history
20:38:56 <RodgerTheGreat> oklopol: so, have you beaten me yet?
20:38:58 -!- toybot has joined.
20:39:16 -!- toybot has quit (Remote closed the connection).
20:39:29 -!- toybot has joined.
20:39:31 <toybot> test
20:39:33 <toybot> test 2
20:39:48 -!- toybot has quit (Remote closed the connection).
20:39:58 -!- toybot has joined.
20:39:59 -!- toybot has left (?).
20:40:56 <oklopol> RodgerTheGreat: well i've been idling.
20:41:02 <ais523> ehird: join #ircnomic-flood and I'll paste the commmands I ran
20:41:13 <ais523> their output is too buried in logs to chase down, unfortunately
20:48:05 -!- ais523 has quit ("Looking for another connection").
20:54:58 -!- Judofyr has joined.
20:55:28 -!- ais523 has joined.
20:55:37 <ehird> * ais523 (n=ais523@gb01-fap02.bham.ac.uk)
20:55:40 <ehird> odd hostname.
20:55:53 <ais523> not my choice
20:55:57 <ais523> my computer thinks its hostname is 'dell'
20:56:02 <ais523> but ngircd wouldn't accept that
20:56:08 <ais523> so I tried all sorts of invalid addresses
20:56:13 <ais523> and in the end settled on irc.example.com
20:56:23 <ehird> ais523: i don't want to know how your university staff pick random hostnames
20:56:25 <ehird> it's vaguely disturbing
21:08:05 <ais523> ehird: when I do git commit, I get errors saying that impl/lex.pl is "Changed but not updated"
21:08:10 <ais523> am I using the wrong command?
21:08:59 <ais523> ehird: ping?
21:11:34 <ais523> figured it
21:11:40 <ais523> you need to use git commit -a
21:12:28 <ehird> back
21:12:31 <ehird> ais523: yes
21:12:32 <ehird> OR
21:12:34 <ehird> git add impl/lex.pl
21:12:44 <ehird> its how it does cherry picking
21:12:51 <ehird> ais523: or - git commit --interactive
21:13:06 <ais523> OK
21:13:09 <ais523> just complicated, then
21:13:18 <ais523> try pulling to see if my trivial change to lex.pl worked
21:13:36 <ehird> ais523: not more complicated than darcs
21:13:39 <ehird> it doesn't have the 'add' thing
21:13:46 <ehird> but by default 'darcs' asks you what you want to do
21:13:49 <ehird> like --interactive in git
21:13:54 <ais523> oh, I see
21:13:55 <ehird> and you need 'darcs record -a' if you want them all
21:14:06 <ais523> in SVN you have to add files you want to be controlled, and not files you don't
21:14:09 <ehird> ais523: so it's just like darcs, but it's unixy in that instead of being interactive by default, it just tells you to do it seperately
21:14:13 <ais523> so git made the opposite decision
21:14:17 <ehird> and .. no
21:14:19 <ais523> where you have to mark files each time...
21:14:24 <ehird> nah, not really
21:14:26 <ehird> darcs requirse it too
21:14:29 <ehird> it just bundles it into one command
21:14:34 <ehird> 'darcs record'
21:14:45 <ehird> ais523: there's still a .gitignore
21:14:49 <ehird> for 'git commit -a'
21:14:54 <ais523> ehird: aarrgghh!
21:15:00 <ehird> but yeah, git matchse darcs except it prefers multiple program invocations
21:15:02 <ehird> over one interactive one
21:15:05 <ais523> you mean I can't litter my directory with useless binaries and backups?
21:15:06 <ehird> but still has the interactive mode available
21:15:10 <ehird> ais523: you can!
21:15:14 <ehird> it has decent ignores by default
21:15:15 <ehird> and
21:15:19 <ehird> you have to 'git add' the file
21:15:22 <ehird> in the fisrt place
21:15:26 <ehird> otherwise git will ignore it forever
21:15:27 <ais523> so it is like SVN, then
21:15:31 <ehird> kind of
21:15:36 <ais523> I still don't like being told about them, though...
21:15:38 <ehird> it just has more per-commit cherrypicking
21:17:35 <ais523> important decision: what should we parse the code into?
21:17:59 <ais523> (/me jumps channel whenever the topic skews to something that fits in one channel in particular)
21:18:51 <ehird> ais523: CLASSES
21:19:01 <ehird> <oklopol> LISTS
21:19:06 <ehird> <ais523> MORE NORMALIZED STRINGS
21:19:22 <ais523> ehird: sorry, you can always tell when I've been writing excessive Thutu
21:19:37 <ais523> but normalized strings are bad for stuff with matched brackets
21:19:45 <ehird> ais523: parse it into RPN
21:19:45 <ehird> duh!
21:19:47 <ais523> at least if you don't want your code to be a whole computational order slower than it should be
21:20:26 <ais523> ehird: you got me imagining an RPN Underload now, I don't think it makes sense because Underload is RPN already
21:20:32 <ais523> that's the sort of matched brackets I meant
21:21:51 <ehird> ais523: X - stop execution, quote everything until the next X
21:21:59 <ehird> U - wrap the last thing we didn't execute in brackets
21:22:09 <ehird> Z - push (X)
21:22:25 <ais523> it's actually possible to write Underload without nested parens
21:22:35 <ehird> ais523: i know -- i wrote the compiler remember?
21:22:49 <ais523> ehird: I wrote the /pseudocode/ for the compiler...
21:22:55 <ais523> you just translated it into a real language
21:23:03 <ais523> never mind, let's just get the parser sorted out
21:23:33 <ehird> ais523: no you didn't
21:23:43 <ehird> i wrote the scheme compiler after having came up with the flattening idea myself
21:23:49 <ehird> you may be confused
21:23:50 <ehird> :)
21:23:55 <ais523> ehird: I'm talking about something else
21:24:02 <ais523> your compiler does flattening data-structure wise
21:24:06 <ehird> yeah
21:24:07 <ehird> i came up with that
21:24:08 <ehird> :|
21:24:09 <ais523> I was talking about the original Underload source code
21:24:12 <ehird> oh
21:24:15 <ehird> right
21:24:16 <ehird> well
21:24:17 <ais523> ehird: yes, you came up with what you were talking about
21:24:20 <ehird> that didn't include anything on compilers
21:24:21 <ehird> :D
21:24:51 <ais523> I was talking about the rewrite rules for that ()-less Underload you invented
21:24:59 <ehird> oh
21:25:00 <ais523> they work by flattening an Underload program
21:25:03 <ehird> ais523: you never invented them though!
21:25:05 <ehird> :p
21:25:11 <ais523> yes I did
21:25:14 <ehird> i did the compiler all on my own
21:25:15 <ais523> I pasted the rewrite rules for that
21:25:16 <ehird> seperate inventions maybe
21:25:21 <ais523> then you wrote them into a compiler
21:25:21 <ehird> oh
21:25:22 <ehird> that thing!
21:25:29 <ehird> ais523: i was talking about my underload compiler
21:25:35 <ehird> but that thing is called dei
21:25:49 <ais523> yes, dei
21:25:58 <ais523> wow, after 35 comments we're finally talking about the same thing
21:26:10 <ehird> :D
21:27:04 <ais523> (once you get your qdb up, put this exchange there)
21:27:06 <ehird> ais523: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477454 someone is a fragile flower...
21:27:35 <ehird> ais523: and i will
21:27:53 <ais523> when I clicked on that link, KDE popped up a box to tell me it was loading the progress bar for loading that website...
21:27:59 <ais523> well, not popped up, placed in the taskbar
21:28:02 <ais523> but still...
21:28:40 <ais523> OK, it seems Konqueror's only connecting at 15 bytes per second for some reason
21:30:14 <ais523> ehird: that link: that should have been marked major rather than serious, otherwise it's a legit report
21:30:39 <ehird> ais523: but a silly one
21:30:44 <ehird> and censorship
21:31:08 <ais523> ehird: not really, being seriously insulted in production code that may be deployed in distributions across the world seems a bit much
21:31:33 <ehird> ais523: :))
21:31:39 <ehird> its just a music player.
21:32:08 <ehird> actually i would replace it with something without the profanity but just as offending -- but in a way that i can claim it's not
21:40:46 -!- Iskr has quit ("Leaving").
21:58:45 -!- olsner has quit ("Leaving").
22:33:05 -!- Slereah_ has joined.
22:33:06 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
23:28:59 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
23:36:44 <ehird> Slereah_: Hi
23:37:49 <Slereah_> Hai.
23:39:30 <ehird> Slereah_: You'd probably find #ircnomic interesting. It's more organized now.
23:41:52 -!- Deform has joined.
23:42:02 <ehird> Def: Deform: Deformati: stoppit
23:42:15 -!- Def has quit (Read error: 104 (Connection reset by peer)).
23:42:39 <Deform> Connection issues.
23:42:43 -!- Deform has changed nick to Deformative.
23:43:38 <Slereah_> ehird : I'm not sure
23:44:16 <ehird> Why not?
23:45:33 <ehird> Slereah_: why not?
23:50:44 <Slereah_> I dunno
23:50:49 <Slereah_> Not too interested by the game
23:51:25 <ehird> Slereah_: But there's not 5 active people in there.
23:51:27 <ehird> So we have no quorum!
23:52:59 <Slereah_> quorum?
23:53:11 <ehird> Slereah_: Join and read the rules! It'll explain'quorum'.
23:53:48 <Slereah_> I'm not falling into that trap
23:55:06 <ehird> Slereah_: actually, it's not
23:55:11 <ehird> i just can't explain right here
23:55:11 <ehird> :D
23:55:52 <Slereah_> Sneaky, ehird.
23:55:56 <Slereah_> Well done.
23:56:27 <ehird> :|
23:56:32 <ehird> its not a trap! :P
23:59:17 -!- Slereah_ has changed nick to Ackbar.
23:59:22 <Ackbar> I disagree.
23:59:28 <Ackbar> "This nickname is owned by someone else"
23:59:33 <Ackbar> Fuck you Amiral Ackbar.
23:59:39 -!- Ackbar has changed nick to Slereah.
2008-04-24
00:00:21 <ehird> Slereah: Aww come on
00:00:23 <ehird> :<
00:00:41 <Slereah> Fine.
00:07:18 -!- timotiis has quit (Read error: 110 (Connection timed out)).
00:13:29 -!- Corun has joined.
00:40:33 -!- Slereah has changed nick to Amiral_Ackbar.
00:40:40 -!- Amiral_Ackbar has changed nick to Slereah.
00:41:17 <Slereah> ehird : You don't know what you want!
00:54:34 -!- ehird has quit (Remote closed the connection).
00:54:43 -!- Corun has quit ("This computer has gone to sleep").
01:37:01 -!- sebbu has quit ("@+").
01:45:25 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)).
01:45:49 -!- lifthrasiir has joined.
04:57:43 -!- pikhq has quit (Read error: 110 (Connection timed out)).
05:21:16 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
05:35:17 <Sgeo> G'night all
05:36:59 -!- Sgeo has quit ("Ex-Chat").
06:33:27 -!- olsner has joined.
07:34:30 -!- olsner has quit ("Leaving").
07:39:20 <oklopol> off to database normalization demonstration situation menstruation ->
07:39:22 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:53 -!- Deformati has quit (SendQ exceeded).
08:30:46 -!- Slereah has quit (Read error: 110 (Connection timed out)).
08:30:55 -!- oklopol has joined.
08:45:35 -!- Iskr has joined.
09:43:58 -!- oklofok has joined.
09:47:30 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
09:47:54 -!- oklopol has joined.
09:48:25 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
09:50:32 -!- oklofok has joined.
09:51:03 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
10:54:05 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
10:54:23 -!- oklopol has joined.
11:17:43 -!- oklopol has quit (Connection timed out).
11:35:55 -!- oklopol has joined.
11:48:42 -!- Corun has joined.
12:48:26 -!- Corun has quit ("This computer has gone to sleep").
12:49:11 -!- Corun has joined.
13:37:08 -!- pikhq has joined.
13:55:29 -!- Corun has quit ("This computer has gone to sleep").
14:29:27 -!- oklopol has quit (Read error: 110 (Connection timed out)).
14:53:31 -!- ehird has joined.
14:58:18 -!- Corun has joined.
15:09:44 -!- Judofyr has joined.
15:13:30 -!- timotiis has joined.
15:17:15 -!- Epic_Fail_Guy has joined.
15:17:16 -!- Epic_Fail_Guy has changed nick to Slereah.
15:19:12 <ehird> Slereah: I think you just caused a paradox
15:21:31 <Slereah> D:
15:21:38 <Slereah> I'm innocent
15:54:45 -!- ais523 has joined.
15:55:35 <ais523> hello ehird
15:55:49 <ehird> hello!
15:55:57 * ais523 is busy upgrading Ubuntu
15:56:11 <ehird> ais523: what fun
15:56:25 <ais523> it worked fine last time
15:56:29 <ais523> the problem is it takes about 4 hours
15:57:09 <ehird> ais523: http://gitorious.org/projects/cyclexa/repos/mainline there's something distinctly arty about that "No Data"
15:57:21 <ais523> and stops every now and then to ask questions
15:57:33 <ehird> ais523: 'do you still love me?'
15:57:36 <ehird> 'are you sure?'
15:57:40 <ehird> 'okay, continuing installation'
15:58:01 <ais523> ehird: it's more 'these are all the changes that will be made, are you sure about them'
15:58:23 <ehird> ais523: that's so pointless. what if you're far enough in the upgrade that there's no other option anyway??
15:58:27 <ais523> I suspect Firefox and Konversation will randomly stop working at some point, as bits of them are uninstalled and they weren't open
15:58:33 <ais523> and those questions happen before there's no option
15:58:49 <ais523> once you've said yes, like I just did, it restricts itself to asking about configuration clashes
15:59:03 <ais523> i.e. when you've customised something, and they've customised the same thing a different way
15:59:06 <ehird> ais523: i have an idea -- what would levenshtein distance look like in cyclexa?
15:59:11 <ehird> i assume cyclexa has multiple inputs.
15:59:11 <ehird> if not, that sucks
15:59:32 <ais523> ehird: I haven't implemented multiple inputs
15:59:44 <ehird> ais523: you haven't implemented any of it, as far as i know
15:59:44 <ais523> but I have syntax for multiple outputs, and a multiple input syntax would work the same way
15:59:49 <ehird> that's good
15:59:52 <ais523> ehird: I mean I haven't specced them
15:59:55 <ehird> also, i assume the output and input are lazy?
16:00:01 <ehird> that is, if you run a cyclexa program output=stdout and input=stdin
16:00:07 <ehird> you can use it like e.g. an interactive BF program
16:00:11 <ais523> ehird: output is lazy
16:00:20 <ehird> ais523: but input isn't? that is a shame
16:00:29 <ais523> input of the original program isn't lazy, but could be
16:00:29 <ehird> ais523: that means you can't e.g. do a proper brainfuck in cyclexa
16:00:32 <ais523> runtime input is lazy
16:00:38 <ais523> there's a lazy input command
16:00:41 <ehird> we can always fix this later, anyway
16:00:53 <ais523> that is, Cyclexa inputs from an input string nonlazily
16:00:58 <ais523> and also optionally from the user lazily
16:01:11 <ais523> in a Cyclexa program, as opposed to Cyclexa used as a regex engine, the input string is the null string
16:01:21 <ehird> ais523: also, I am so going to use cyclexa in any perl program i make from now on :-)
16:01:47 <ais523> ehird: half the time I was using the lexer I was wishing I could use Cyclexa, because it would have been easier
16:02:03 <ehird> my $c = Cyclexa->new("..."); my $out = ""; $c->run("hello", \$out)
16:02:06 <ehird> \$out passes a reference to $out right?
16:02:07 <ehird> or is that &$out
16:02:11 <ehird> well, whatever it is :-)
16:02:26 <ehird> though there'll probaly be a Cyclexa->run("...", "hello") -> out
16:02:56 <ais523> \$out passes a reference to $out
16:03:04 <ehird> sub run { my ($cls, $expr, $in) = @_; my $self = $cls->new($expr); my $out = ""; $self->run($in, \$out); $out; } # I believe
16:03:07 <ais523> &$out passes a procedure whose name is given by $out
16:03:18 <ais523> symbolic references, you have to love them
16:03:32 <ais523> alternatively, if $out happens to be a reference to a procedure, then &$out is that procedure
16:03:54 <ais523> of course, with prototypes, you can avoid the need for the \
16:03:59 <ais523> but that just confuses the user
16:04:10 <ehird> ais523: perl's variable sins are odd, but php's odder
16:04:14 <ehird> why, you ask?
16:04:17 <ehird> variable variables
16:04:18 <ais523> like the $ sigil?
16:04:25 <ehird> $foo = "hello"; $bar = "foo"; $$bar -> "hello"
16:04:31 <ais523> ehird: you can do that in Perl too
16:04:33 <ehird> they can nest to an infinite depth
16:04:37 <ais523> yep
16:04:38 <ehird> ais523: but can perl do this:
16:04:51 <ehird> $obj = ...; $foo = "obj"; $bar = "meth"; $$foo->$bar(...);
16:04:58 <ehird> that's $obj->meth(...)
16:05:05 <ais523> I think so
16:05:11 <ais523> you may need braces in there somewhere for disambiguation
16:05:26 <ais523> I think nowadays you're meant to write ${$foo} if you really want $foo to be the name of the variable
16:05:28 <ehird> ais523: okay, then, perl is just crazy
16:05:30 <ehird> :D
16:05:40 <ehird> ais523: but php's use of $ is just ridiculous
16:05:46 <ehird> it's .... just ... i mean..
16:05:46 <ais523> ehird: agreed
16:05:49 <ehird> it doesn't mark anything.
16:05:51 <ehird> it's just there.
16:05:54 <ehird> for no damn reason.
16:06:05 <ais523> ehird: in Perl, a symbol table entry is a data tyep
16:06:08 <ais523> s/tyep/type/
16:06:19 <ais523> and I think you can assign to them to do operand overloading INTERCAL-style
16:06:22 -!- timotiis has quit (Read error: 110 (Connection timed out)).
16:06:23 <ehird> ais523: you can get to perl's call stack, can't you?
16:06:31 <ais523> ehird: yes, but I don't know how
16:06:43 <ais523> that's how Carp works, for instance, I think
16:06:43 <ehird> ais523: i guess you can't do real continuations though
16:07:56 <ais523> ah, I've looked up how symbol table overloading works
16:08:01 <ais523> *foo = *bar;
16:08:07 <ais523> causes $foo to actually refer to $bar
16:08:16 <ais523> and likewise @foo to actually refer to @bar
16:08:17 <ais523> and so on
16:08:29 <ais523> this was once useful
16:08:34 <ais523> nowadays there are saner alternatives
16:08:35 <fizzie> I've written one piece of perl in continuation-passing-style, which gives you real-enough continuations.
16:08:51 <ehird> fizzie: Continuation-passing style is awkward. Why would I want to code liek that?
16:09:03 <ehird> Plus, since EVERYONE ELSE's code isn't in CPS, your continuations only span a little bit
16:09:34 <ais523> the main benefit of CPS is that you don't need to maintain a call stack
16:09:38 <fizzie> It was a very stand-alone piece of code; but I'm not saying anyone would _want_ to write like that.
16:11:05 <fizzie> Tragicomically Perl doesn't realize it's CPS, and even throws a "deep recursion in foo" error at one point.
16:11:20 <fizzie> s/error/warning/
16:11:45 <ehird> fizzie: NEWSFLASH! Perl does not do TCO!
16:11:52 <ehird> Also, Perl cannot magically realise how your program is written!
16:11:54 <ehird> Amazing.
16:12:04 <ehird> (was that assish enough)
16:12:12 <fizzie> I think it was quite assy, yes.
16:12:32 <ehird> :)
16:13:23 <ehird> but seriously, how is that tragicomical?
16:13:32 <ehird> perl can't see what you're program is about
16:14:03 <ehird> ais523: hm, don't you need to fix a lexer bug before writing hte cyclexa parser?
16:14:12 <ais523> ah yes, that one
16:14:18 <ais523> that particular bit confuses me
16:14:24 <ais523> and it can be fixed at any time later
16:14:35 <ais523> because the output the lexer produces is still valid
16:14:42 <ais523> just doesn't correspond to the input
16:14:51 <ais523> it's not like \ca is a major language feature anyway
16:15:18 <ehird> ais523: but ... what is the actual bug and how do we fix it :)
16:15:36 <ais523> the bug is that \ca is escaped incorrectly by {}
16:15:44 <ehird> okayy
16:15:45 <ais523> I think because preceding backslashes aren't being detected properly
16:15:55 <ehird> (can you tell i don't understand your lexer?)
16:16:22 <ais523> ehird: the problem is that Cyclexa has lots of escaping mechanisms
16:16:39 <ais523> \+ means a literal +, and the same with any punctuation mark
16:17:18 <fizzie> Maybe it's only tragic; but at least that's what it is. Think of the poor interpreter, ceaselessly toiling on the call stack, all in vain.
16:19:54 <ais523> {stuff containing no braces and with a non-digit non-comma character} escapes everything between the braces
16:19:54 <ais523> and {{identifier{stuff}identifier}} escapes stuff
16:19:54 -!- ais523 has quit (Remote closed the connection).
16:20:09 -!- ais523 has joined.
16:20:09 -!- ais523 has quit (Remote closed the connection).
16:20:25 -!- ais523 has joined.
16:20:38 <ehird> upgraded, mr ais523?
16:20:51 <ais523> ehird: lost wireless
16:20:56 <ais523> what's the last thing I said you saw
16:21:15 <ais523> and I'll have to start the upgrade again now because it happened during the download
16:21:36 <ais523> near the start, luckily
16:22:39 <ais523> they should have a proper download manager...
16:23:01 <ais523> once the download phase is done (which happens first and is cancelable), then it does all the installation
16:24:38 <ehird> ais523: so is the lexer trivially fixable, or.
16:24:56 <ais523> ehird: not trivially, in fact I found another bug
16:25:04 <ais523> \\\ wasn't tokenised correctly as \\@\
16:25:06 <ais523> but as \\\
16:25:24 <ais523> it's good enough to start work on the rest of the compiler, though
16:25:41 <ais523> maybe we should rewrite the lexer from scratch to give a token list rather than a flat-string
16:25:41 <ehird> ais523: okay
16:25:45 <ehird> hmm
16:25:46 <ehird> that seems good
16:26:03 <ehird> ais523: maybe even make token tags OBJECTS!!2121 ... Nah, I'm not THAT evil.
16:26:10 <ehird> But a rewrite seems nice. The current one is just crazy.
16:26:22 <ais523> ehird: if you make them objects, pick a language that isn't Perl
16:26:30 <ais523> Perl's OO model is awful
16:26:44 <ehird> ais523: I agree. But for a *parse tree*, I expect that objects will be the best way.
16:26:47 <ehird> (Not a lex list)
16:26:59 <ais523> ehird: OK
16:27:01 <ehird> However, Perl is tempting because it has turing-complete regexps already
16:27:02 <ehird> :-)
16:27:11 <ais523> ehird: not really, you have to embed inline Perl in them
16:27:19 <ehird> Yeah, I guess so.
16:27:30 <ehird> ais523: But I can't think of any language that would really be good at this.
16:27:42 <ais523> nether can I
16:28:47 <ehird> ais523: Ruby would work but in this case I think it'd just function as a Perl with less powerful regexps and nice OOP.
16:28:49 <ais523> ah, this connection's a lot better, I'm 1/3 of the way through the download already. (I just went round the corner to a different part of the library.)
16:28:51 <ehird> Also it'd be dog-slow.
16:29:05 <ehird> Well, Perl is dog-slow already. But ruby is one of the slowest languages out there.
16:29:06 <ais523> ehird: no, not Ruby for something like this that's likely to be inefficient anyway
16:29:19 <ehird> ais523: Well, if we're compiling that isn't a problem
16:29:28 <ais523> ehird: we're still going to need a hefty runtime
16:29:40 <ais523> besides, if we're compiling, what are we compiling into?
16:29:45 <ehird> ais523: True -- but we don't have to compile *to Ruby* if we use Ruby.
16:29:50 <ehird> I'm not convinced, though.
16:30:03 <ehird> I mean, the classes rock, but I can't see many advantages on the others.
16:30:14 <ehird> I mean, it is golfable so it's better than many other languages, but even so
16:30:23 <ehird> And I have no idea regarding what to compile into.
16:30:31 <ais523> Perl's about as golfable as Ruby
16:30:32 <ehird> A lot of regexp engines compile to a DFA.
16:30:36 <ehird> But we'd need a Turing machine.
16:30:38 <ais523> and if we're compiling into something, I'd like it to have an eval()
16:30:39 <ehird> That's pretty pointless.
16:30:59 <ehird> ais523: yes, it is more golfable -- but Ruby's OOP is not horrific, is what i'm saying
16:31:02 <ais523> compiling into something with backtracking capabilities built-in may be a good idea
16:31:03 <ehird> still not convinced though
16:31:06 <ehird> hmm
16:31:08 <ehird> prolog?
16:31:09 <ehird> ;)
16:31:10 <ehird> no eval though
16:31:14 <ais523> but that limits the field to Prolog and INTERCAL
16:31:17 <ais523> neither of which has an eval
16:32:05 <ehird> ais523: why is eval so important
16:32:16 <ais523> it's not all that important
16:32:27 <ais523> but it would be nice to be able to call Cyclexa regexps at runtime
16:32:41 <ais523> i.e. just write cyclexa("regex","input") in a program, and call it
16:32:54 <ais523> that either requires an interpreter or a compiler into something interpretable/evalable
16:33:52 <ehird> ais523: oh, yes, i want that too
16:33:52 <ais523> anyway, here's a plan for an improved lexer:
16:34:11 <ehird> hmm ... it really seems like Perl is the best route for this
16:34:14 <ais523> start with a data structure containing the entire program marked as unlexed
16:34:15 <ehird> HOWEVER!
16:34:19 <ais523> and change bits into token lists marked as lexed
16:34:23 <ehird> the parser will either have to be very ugly for Perl's OOP
16:34:26 <ehird> or unpleasant to work with
16:34:41 <ehird> ais523: wouldn't a regular lex-esque approach work?
16:34:51 <ais523> ehird: lex can't handle Cyclexa lexing
16:35:11 <ehird> ais523: why not? Is it TC?
16:35:14 <ais523> operator tokenisation preferences are something only Cyclexa has AFAIK
16:35:23 <ais523> and also the escaping methods require infinite lookahead
16:35:36 <ehird> ais523: do they? yiieeeeks
16:35:56 <ais523> {123456123456123456,123456123456123457} is a repetition count
16:36:09 <ais523> {123456123456123456,12345612345612345a} is an escaped string
16:36:21 <ehird> ais523: >_<
16:36:24 <ais523> the rule is it's a repetition count if there's nothing but commas and digits inside the bracse
16:36:28 <ais523> and an escaped string otherwise
16:36:41 <ais523> {} escaping is really convenient, though
16:37:08 <ehird> ais523: can't you pick another character
16:37:13 <ais523> {string} is more readable than \s\t\r\i\n\g (assuming the string's actually made of punctuation marks)
16:37:17 <ehird> like <...>
16:37:22 <ais523> ehird: most punctuation characters are strongly overloaded already
16:37:34 <ais523> and I wanted to leave a few for use by the user
16:37:44 <ais523> the language isn't designed to be easy to lex, but to be easy to use
16:37:55 <ais523> the lexing isn't ambiguous and doesn't require TCness
16:37:57 <ehird> ais523: that isn't easy to use though, really
16:38:00 <ais523> it just needs to be done in several stages
16:38:09 <ais523> ehird: why not?
16:38:29 <ais523> although, I suppose that using <> for quoting would make quotations nestable
16:38:36 <ais523> like they are in Underload
16:38:45 <ais523> not sure how useful that is in Cyclexa, but there's probably some use for it
16:38:58 <ais523> I'm a bit dubious about {{a{}a}} quoting too
16:39:04 <ehird> ais523: it seems kinda hacky
16:39:15 <ehird> <abc> stands out
16:39:19 <ais523> the idea was that you can pick appropriate identifiers so you can put anything there without worrying about injection attacks
16:39:19 <ehird> you could always leave ascii behind
16:39:37 <ais523> but quotemeta does that just as well
16:40:47 <ais523> so, we're settled on <quote> and \q\u\o\t\e for the time being?
16:41:01 <ehird> ais523: seems good
16:41:01 <ehird> i mean
16:41:01 <ehird> what would you want < and > for anyway?
16:41:05 <ehird> a lot of normal regexp engines utilize < and > iirc
16:41:37 <ais523> ehird: I was imagining using them as nestable chars for working in a sort of Thutu/Cyclexa mix
16:41:49 <ais523> but \CAPITALLLETTER works just as well
16:41:51 <ehird> ais523: hmm
16:41:54 <ais523> they all become nonexistent characters that can't be in the input string
16:41:56 <ehird> nesting quotes doesn't sound too good
16:42:00 <ehird> <<<<> might be useful
16:42:01 <ehird> you never know
16:42:18 <ais523> ehird: actually, nesting quotes would mix strangely with backslashes
16:42:23 <ais523> because <\a> should be \\\a
16:42:29 <ais523> but what should <\>> be?
16:42:39 <ais523> that's a problem even without nesting quotes
16:42:46 <ais523> for the {} I banned {} inside a {}
16:42:58 <ehird> ais523: <\>> should be \>
16:43:05 <ais523> \\\>, you mean
16:43:16 <ais523> s/$/?/
16:43:17 <ehird> ais523: no
16:43:19 <ehird> it shouldn't
16:43:23 <ehird> because then that's ambigious
16:43:36 <ehird> you need to special case \> so that <...> quoets can contain any string
16:43:36 <ehird> wait
16:43:38 <ais523> what should it mean? Is it a syntax error due to the unmatched >?
16:43:41 <ehird> <\>> is 'literal >'
16:43:49 <ehird> <\\>> is a syntax error, unmatched >
16:43:54 <ais523> so \ escapes < and > even inside <>, but nothing else?
16:44:00 <ehird> <\\\>> is 'literal \', 'literal >'
16:44:02 <ais523> well, < > and \, but nothing else
16:44:52 <ais523> if we do that, \ should be taken literally if followed by any character not in \ < >
16:45:19 <ehird> ais523: no, that's ambigious..
16:45:19 <ehird> i think
16:45:21 <ehird> maybe
16:45:23 <ehird> hmm
16:45:23 <ehird> no
16:45:23 <ehird> that's good
16:45:24 <ehird> i think
16:45:31 <ehird> <\a\\\>>
16:45:41 <ehird> is 'literal \', 'literal a', 'literal \', 'literal >'
16:45:42 <ais523> is a literal \a\>
16:46:15 <ais523> oh, I remember what I was planning to use <> for, but this is a crazy idea that should probably never be done
16:46:28 <ais523> the idea was you could match against <font color='red'>a</font> and it would match a red a in your document
16:46:32 <ais523> rich-text regexps
16:46:52 <ehird> ais523: err, i think not
16:47:00 <ais523> yes, that's probably best avoided
16:47:16 <ais523> [ and ] aren't being used at the moment except for backwards compatibility with ordinary regexps
16:47:24 <ais523> they're depreciated in favour of '
16:47:44 <ais523> so if rich-text matching is really a requested feature, we can use bbcode rather than HTML
16:48:00 <ais523> but let's stick to plaintext for now
16:48:18 <ehird> ais523: backwards compatibility? bah
16:48:42 * ais523 thinks about what a Levenstein difference function would be
16:49:03 <ais523> that's +1 for each insertion, deletion, or change, isn't it?
16:49:24 <ehird> ais523: http://en.wikipedia.org/wiki/Levenshtein_distance yes
16:49:48 <ehird> ais523: beware the algorithm on that page
16:49:53 <ehird> it mixes 0..X and 1..X arrays
16:49:55 <ehird> it's awful
16:49:55 <Slereah> Kitten.
16:52:09 <ehird> ais523: so should we nuke Lexer.pm?
16:52:14 <ehird> or move it out of impl/ i guess
16:52:20 <ais523> ehird: yes, move it to some old/ directory
16:52:33 <ehird> mkdir ../../scraps; mv Lexer.pm ../../scraps
16:52:36 <ehird> ais523: so, in impl/ but not src/
16:52:40 <ehird> impl/scraps
16:52:48 <ehird> scraps isn't a good name but i have never foudn a better name for it
16:52:52 <ehird> i often have it in projects
16:52:55 <ehird> i put * in it
16:53:09 <ehird> ais523: hokay, let's see how git likes moves
16:53:23 <ehird> 'git mv' is what i need i believe
16:54:12 <ehird> ais523: pushing now
16:54:14 <ehird> that was very easy
16:54:42 <ehird> compare with CVS, which doesn't like files moving :-)
16:54:44 <ehird> (in case you've never tried to use CVS: it has no renaming/moving operation)
16:54:47 <ehird> (you have to either lose all your revision history, or manually hack the RCS files to point to the new name)
16:54:54 <ehird> ais523: 'git pull'
16:55:46 <ehird> okay, i will now start on a new lexer
16:56:01 <ais523> (x*)^+(.|(+??.)|(+??.)|)\D(.|(+??.)||(+??.)):2(|x|x|x)^:2(?0\1)$
16:56:02 <ehird> ais523: as far as your data structure idea goes: Cyclexa::Lexer can be a class
16:56:10 <ais523> I think
16:56:11 <ehird> that's not that ugl
16:56:12 <ehird> y
16:56:28 <ehird> Lexer->new("my cyclexa program")->lex;
16:56:31 <ais523> that's Levenshtein distance in unary
16:56:42 <ehird> ais523: nice
16:56:49 <ehird> actually, you know what bothers me about languages
16:56:57 <ehird> there's no way in most of them to unify strings & files & stuff
16:57:03 <ehird> that is, a generic 'Sink'
16:57:10 <ehird> or rather... Tap, I guess.
16:57:22 <ehird> but, a lexer could make use of it, so you could pass it just about anything
16:57:27 <ais523> ehird: that's very inefficient, though, the way I wrote it
16:57:29 <ais523> it's O(4^n)
16:57:36 <ehird> Levenshtein is inefficient, period
16:57:39 <ais523> I think it could be made more efficient, but it wouldn't be as simple
16:57:50 <ais523> ehird: what I wrote isn't even P-time
16:58:09 <ais523> oh, there was an error
16:58:09 <ehird> ais523: you know what's funny?
16:58:11 <ais523> (x*?)^+(.|(+??.)|(+??.)|)\D(.|(+??.)||(+??.)):2(|x|x|x)^:2(?0\1)$
16:58:12 <ehird> a CMS site that doesn't run on that cms
16:58:21 <ais523> that fixes it
16:58:24 <ais523> ehird: do you have one in mind?
16:58:44 <ehird> ais523: Yes. I just found one randomly:
16:58:44 <ehird> http://www.hippocms.org/
16:59:41 <ais523> some version control systems are designed for some purposes
16:59:57 <ais523> in such cases using a different version control system for the system's source itself could be beneficial
17:00:18 <ehird> ais523: I just like bootstrapping. :)
17:02:01 <ehird> ais523: Cyclexa should be written in Cyclxea
17:02:05 <ehird> *Cyclexa
17:02:10 <ais523> ehird: I thought that too
17:02:17 <ais523> but we need to get the cycle started somehow
17:02:32 <ehird> ais523: No we don't. Ninjacode was going to be written in ninjacode.
17:02:42 <ais523> ehird: but you still need something to bootstrap it
17:02:48 <ehird> ais523: oh no
17:02:50 <ehird> To git@gitorious.org:cyclexa/mainline.git
17:02:50 <ehird> ! [rejected] master -> master (non-fast forward)
17:02:50 <ehird> error: failed to push some refs to 'git@gitorious.org:cyclexa/mainline.git'
17:02:53 <ais523> even if it's a minimal Ninjacode interp in C, for instance
17:03:01 <ehird> i think that means i forgot to pull your changes
17:03:02 <ehird> :)
17:03:09 <ehird> yep
17:03:27 <ehird> git pull, git merge, git push.
17:03:43 <ais523> I still have the newest commit according to gitorious.org
17:03:47 <ais523> and why is git merge needed?
17:03:48 <ehird> ais523: yes, my push failed
17:03:58 <ehird> and because you changed lex.pl and i changed without updating
17:03:59 <ehird> not merge really
17:04:03 <ehird> it just needs to sync them
17:08:35 <ehird> ais523: oh, that was easy
17:08:53 <ais523> you still haven't committed...
17:08:54 <ehird> it was actually me not understanding git that made me take so long
17:09:10 <ehird> ais523: ah, i have *committed*
17:09:12 <ehird> just not pushed
17:09:12 <ehird> :)
17:09:17 <ais523> OK
17:09:41 <ehird> ais523: http://gitorious.org/projects/cyclexa/repos/mainline
17:09:42 <ehird> tada
17:09:49 <ehird> also note that it generated another revision to merge
17:09:52 <ehird> really it looks like this
17:09:58 <ehird> merge blah blah
17:10:00 <ehird> / \
17:10:06 <ehird> ditch old lexer add a newline
17:10:12 <ehird> but the display there is linear
17:10:14 <ehird> so it looks odd :)
17:10:28 <ehird> ais523: Try 'gitk' once you pull.
17:10:28 <ais523> merging is the thing that git's really good at
17:10:34 <ehird> It shows a graphy thingy on the side of the revision list
17:10:52 <ehird> You can see how the same revision splits for our two changes, and then it gets unified again.
17:11:20 <ehird> ais523: P.S. you need to set your email in git
17:11:23 <ais523> I've got the change
17:11:24 <ehird> http://gitorious.org/projects/cyclexa/repos/mainline
17:11:25 <ehird> err
17:11:26 <ais523> ehird: how?
17:11:27 <ehird> <ais523@dell.linuxdev.us.dell.com>
17:11:30 <ehird> is the current one
17:11:31 <ehird> and mine is
17:11:33 <ehird> ehird@debian.(none)
17:11:40 <ehird> ais523: man git-config
17:12:05 -!- olsner has joined.
17:12:12 <ehird> 'git config user.email foo'
17:12:13 <ehird> i believe
17:13:07 <ehird> ais523: it occurs to me that that merge was pointless
17:13:09 <ehird> lex.pl is now uselses
17:13:14 <ehird> d'oh!
17:13:32 <ehird> i'll just remove it, because it's trivial and not useful for having around reall
17:13:33 <ehird> y
17:13:46 <ais523> it wasn't quite pointless, it let me learn how to push
17:13:53 -!- Sgeo[College] has joined.
17:13:54 <ehird> haha :-)
17:13:58 <ehird> ais523: no, my merge was
17:14:04 <ehird> my merging of your lex.pl change and my Lexer.pm move
17:14:11 <Sgeo[College]> Hi all
17:14:14 <ehird> whereas, lex.pl is now useless, so it can be just deleted
17:14:17 <ehird> which i'm doing now
17:14:19 <ehird> Sgeo[College]: hello!
17:15:00 <ehird> ais523: pushed the removal
17:15:46 <ais523> "13 deletions?"
17:15:55 <ais523> did it mark one for each line in the file, or something?
17:16:04 <ehird> ais523: Yes.
17:16:12 <ehird> Also, my name is now showing as ehird, instead of elliott hird.
17:16:15 <ehird> And is linked. Wtffff
17:16:19 <ais523> ehird: to where?
17:16:24 <ehird> ais523: Okay, set your email to whatever it was in your gitorious profile
17:16:30 <ehird> that's how gitorious knows you're the user ais523
17:16:32 <ehird> see: http://gitorious.org/projects/cyclexa/repos/mainline
17:16:37 <ehird> it only just now got that i'm ehird
17:16:57 <ehird> ais523: because, if you clone a git repository onto gitorious
17:17:02 <ehird> it'll show users as their name, unlinked
17:17:06 <ehird> if it doesn't recognize them by email
17:17:10 <ehird> it thought i was some random person
17:17:16 <ehird> but now my email is correct it knows i'm the user ehird
17:17:32 <ehird> hmm, I wonder if cia.vc supports git. I've always wanted to test that
17:17:43 <ais523> ehird: what's that?
17:17:49 <ehird> http://cia.vc/
17:17:54 <ehird> ais523: it is a project stats tracker
17:17:56 <ehird> but most commonly,
17:17:59 <ehird> it's a bot on freenode
17:18:06 <ehird> that sends out messages to a channel on commits and similar
17:18:59 <ehird> http://cia.vc/doc/
17:19:11 <ehird> ais523: it makes us show up in a central channel too
17:19:11 <ehird> #commits
17:19:38 <ais523> ehird: are you testing it now?
17:19:46 <ehird> ais523: might as well
17:19:53 <ehird> #cyclexa, because anywhere else would be out-of-place
17:19:57 <ehird> don't want to flood #esoteric obviously
17:29:55 <ehird> ais523: fun fact -- git used to pollute the global namespace
17:29:56 <ehird> that is
17:30:02 <ehird> 'merge-base', 'write-tree', 'commit-tree'
17:30:03 <ehird> were the commands
17:30:58 <ais523> OK, pushed
17:31:14 <ais523> ehird: you mean /usr/bin namespace?
17:31:18 <ais523> MySQL is worse
17:31:23 <ais523> it installs a command called perror
17:31:32 <ehird> ais523: yeah, /usr/bin
17:31:33 <ehird> and heh
17:31:47 <ehird> ais523: okay, so let's get this new lexer started
17:31:56 <ehird> Cyclexa::Lexer is a class which stores the neccessary data
17:32:00 <ehird> that seems like an elegant base to me
17:32:08 <ais523> the class stores data?
17:32:09 <ehird> also, the lex tree is a list of tokens of some sort... Cyclexa::Token?
17:32:12 <ais523> or an object based on the clas?
17:32:12 <ehird> ais523: err, the instance
17:32:14 <ais523> or an object based on the class?
17:32:30 <ehird> the object based on, yeah
17:32:43 <ehird> ais523: I mean, two classes won't be too bad will they?
17:32:47 <ehird> just having a generic Token type
17:32:52 <ais523> ehird: this is Perl's OO model we're talking about
17:32:55 <ehird> yes
17:32:58 <ais523> I don't understand it at all, really
17:33:02 <ehird> ais523: i kind of understand it.
17:33:06 <ehird> It's not too hard:
17:33:22 <ehird> a->b(...) is classofa::b(a, ...)
17:33:28 <ehird> and
17:33:34 <ehird> bless X, classname is magic
17:33:40 <ehird> basically, you give it a hash (most likely)
17:33:44 <ehird> and it turns it into an object
17:33:45 <ehird> so that
17:33:48 <ehird> blass a, classname
17:33:50 <ais523> I sort of get that much
17:33:51 <ehird> means that in the above
17:33:53 <ehird> classofa is classname
17:34:02 <ehird> ais523: now, classes are kind of their own class
17:34:03 <ehird> so
17:34:04 <ais523> but you need to give lots of stuff telling it how to bless
17:34:07 <ehird> X->new is X::new(X, ...)
17:34:14 <ehird> so you do
17:34:16 <ehird> my $cls = shift;
17:34:17 <ehird> then
17:34:21 <ehird> bless {}, $cls;
17:34:31 <ehird> ais523: and no, you don't really
17:34:52 <ehird> ais523: however, 'new' isn't a special name
17:35:12 <ehird> is worth mentioning
17:35:12 <ehird> http://search.cpan.org/~rgarcia/perl-5.10.0/pod/perlobj.pod seems to make sense
17:35:17 <ais523> I can just type perldoc perlobj over here to get that
17:35:30 <ais523> just like perldoc spec.pod gives me the Cyclexa spec when I'm in the right directory
17:35:46 <ehird> ais523: i like the web
17:35:47 <ehird> :)
17:36:09 <ais523> ehird: you're normally connected to it :)
17:36:44 <ehird> ais523: :))
17:36:45 <ehird> http://rafb.net/p/qqYkbQ67.html
17:36:51 <ehird> basic perl class skeleton as i see it
17:37:00 <ehird> kinda ugly, but not too complex
17:37:12 <ehird> ais523: maybe we should use Moose
17:37:21 <ehird> http://search.cpan.org/~stevan/Moose-0.40/lib/Moose.pm
17:37:39 <ehird> ais523: it's a perl object system thingy, but has aspects and stuffs.
17:37:41 <ehird> maybe too much.
17:37:42 <ais523> ehird: I want to avoid using modules as much as possible, or you end up with dependency hell
17:37:43 <ehird> but it looks nice
17:37:55 <ehird> ais523: Perl, with its CPAN, having depdenency hell is so hilarious
17:37:56 <ais523> I prefer to stick with the ones which come with Perl, like Carp
17:38:00 <ehird> i hate CPAN so much, it's horrible to use
17:38:07 <ehird> sure it has a lot of packages
17:38:09 <ehird> but good luck using them
17:38:12 <ais523> ehird: I can't open links to CPAN in Konqueror for some reason
17:38:19 <ais523> Firefox works fine
17:38:25 <ais523> but Konqueror can't resolve the DNS
17:38:29 <ais523> yes, I know that's a contradiction
17:38:34 <ais523> maybe it has a bad cached value, or something
17:38:49 <ehird> has 'src' => (is => 'r', isa => 'Str') # this is nice though, admit it
17:38:56 <ehird> as well as "extends 'Foo';"
17:39:16 <ehird> also, a sane 'super'
17:39:27 <ais523> does it support multiple inheritance?
17:39:33 <ehird> ais523: i think so
17:39:34 <ehird> extends 'Foo';
17:39:36 <ehird> extensd 'Bar';
17:39:44 <ehird> however i rarely see the need for MI
17:41:20 <ehird> ais523: also, use Moose; means use warnings; use strict;
17:41:21 <ehird> automatically
17:41:22 <ehird> :)
17:41:36 <ais523> ehird: wow, that's bad practice
17:41:39 <ais523> I like warnings and strict
17:41:45 <ais523> but I should specify them myself
17:41:51 <ehird> ais523: in #perl Moose is *very* highly regarded
17:41:51 <ais523> they shouldn't be specified in another module
17:42:10 <ais523> #perl seems dedicated to preventing new users cutting themselves
17:42:16 <ais523> that's a worthy goal, but I'm used to C...
17:42:42 <ehird> #perl has always been quite unfriendly to me as a newbie
17:42:44 <ehird> so i doubt that
17:44:02 <ais523> anyway, our token class...
17:44:21 <ehird> ais523: yes, that hting
17:44:24 <ais523> there's the default command, which needs a token for every character in existence and a few extra
17:44:33 <ehird> ais523: trivial
17:44:37 <ais523> yes, trivial
17:44:44 <ehird> $tok->type = Token::LITERAL; $tok->char = 'a';
17:44:46 <ehird> or similar
17:44:47 <ais523> then there are other commands, which have tokens of their own
17:44:53 <ehird> although, really, we should have Literal subclassing Token
17:44:58 <ehird> and we run into perl's object system again... /sigh
17:45:02 <ehird> maybe we SHOULD use moose. :-)
17:45:04 <ais523> ehird: no, don't do it like that
17:45:13 <ais523> because you have to create a new file for each class you create
17:45:20 <ehird> ais523: I know! That's what sucks.
17:45:30 <ais523> ehird: agreed
17:45:41 <ais523> I think type and data is a better way to do it
17:45:47 <ehird> ais523: But also totally silly.
17:45:58 <ais523> ehird: maybe if you're an extreme OO programmer
17:46:04 <ais523> but there's extreme ORK/Java OO
17:46:09 <ais523> and there's sane C++/Python OO...
17:46:16 <ehird> oh heck no, i'm not an extreme OO programmer
17:46:19 <ehird> but a Literal is-a Token
17:46:22 <ehird> and it makes sense
17:46:26 <ehird> just not to perl :-)
17:46:55 * ais523 is capable of extreme OO
17:46:58 <ais523> but doesn't like doing it
17:47:06 <ais523> except in university OO projects
17:47:14 <ais523> to show the ridiculousness of the whole thing
17:47:20 <ais523> (that is, the project)
17:47:35 <ais523> the problem with object-orientation is that it's useful up to a point, and then you get diminishing returns
17:47:49 <ais523> once you get down to the very low details OOness become more of a pain then an aid
17:48:04 <ais523> "There is a scribe called Writer."
17:48:37 <ehird> ais523: yeah
17:48:49 <ehird> it's funny how i keep running into Perl trying to express my thoughts into code here, though
17:48:55 -!- timotiis has joined.
17:51:00 <ais523> ehird: how are we going to handle literal \D and other special characters?
17:51:06 <ehird> ais523: no idea.
17:51:10 <ehird> i'm still yelling at perl
17:51:13 <ehird> but it's a good point
17:51:14 <ehird> i am not sure
17:51:30 <ais523> we need to keep a flag on characters in the input string anyway
17:51:43 <ais523> to allow for some being positive text, some being antitext, and some being antitext-in-progress
17:54:22 <ehird> ais523: hmm
17:54:30 <ehird> i think i'll just push a basic skeleton of Lexer
17:54:35 <ehird> and let you start it off, because i'm not sure what structure you want
17:54:37 <ehird> Token too
17:55:05 <ehird> ais523: hmm
17:55:10 <ais523> ATM I'm wondering how to tokenise group options
17:55:13 <ehird> if I have 'use Cyclexa::Token' in Lexer.pm,
17:55:20 <ais523> like the ?? that says a group shouldn't be numbered
17:55:21 <ehird> how can I make it imported as just 'Token'?
17:55:30 <ais523> ehird: use Haskell
17:55:32 <ehird> ais523: maybe a seperate class for those
17:55:33 <ehird> and heh
17:55:37 <ehird> we should do that!
17:55:42 <ehird> we could even use plain strings
17:55:45 <ehird> because getContents etc
17:55:45 <ehird> :)
17:56:01 <ais523> Haskell may be a better lang than Perl for this
17:56:06 <ais523> especially if we want complex data structures
17:56:54 <ehird> ais523: indeed, but since we are doing significant text wrangling in the interp itself..
17:57:04 <ehird> haskell no likely regexps
17:57:17 <ehird> ais523: I think we should use C. Then we can just interface it to whatever language we want. ;)
17:57:29 <ais523> I was thinking about C too
17:57:38 <ais523> although if you're doing it OO you'll want C++ for its OO features
17:57:46 <ais523> you can write the rest of it C-style
17:57:57 <ais523> (/me is used to writing C/C++ mixes)
17:58:11 <Sgeo[College]> (/me just did that (/me thing in another channel)
17:58:26 <ehird> ais523: C++ would buy us std::string & a load of hell.
17:58:28 <Sgeo[College]> at the same time too
17:58:39 <ais523> ehird: std::string may be useful
17:58:45 <ehird> Sgeo[College]: SYNTAX ERROR: unmatched parentheses at line 1. Abort.
17:58:48 -!- oklopol has joined.
17:58:51 <ais523> the thing that people don't get about C++ is: you don't have to use all its features!
17:58:51 <ehird> ais523: of course, you can;t interface C++ to many languages
17:58:53 <ehird> e.g. Haskell
17:59:02 <ais523> ehird: you can, you just interface via C
17:59:07 <ais523> C can be linked to C++
17:59:18 <ehird> ais523: Yes, but now I want to decapitate myself ;)
17:59:18 <ais523> if you have appropriate wrappers in the C++
18:00:12 <ehird> ais523: Let's write it in Ninjacode.
18:00:22 <ehird> Then we can just make ninjacode whatever we need to code cyclexa.
18:00:27 <ais523> ehird: only if it compiles into INTERCAL
18:00:48 <ehird> ais523: bah
18:01:24 <lament> ais523: you do have to learn the features
18:01:34 <ais523> lament: of C++?
18:01:41 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
18:01:41 <lament> right
18:01:42 <ais523> but you don't have to use them
18:01:49 <ais523> and you don't pay the runtime cost if you don't
18:01:49 <lament> using stuff is easy
18:02:01 <lament> learning stuff is hard :)
18:02:02 -!- Judofyr has joined.
18:02:27 <ehird> ais523: you know, maybe we should prototype it in 50 languages at once
18:02:28 <ehird> and pick the best
18:02:38 <ais523> which 50?
18:02:42 * Sgeo[College] should learn C(\+\+)? someday
18:03:42 <ehird> Sgeo[College]: you suck at regexp
18:03:45 <ais523> Sgeo[College]: they are two completely different languages
18:03:47 <ais523> learn both of them separately
18:03:49 <ehird> err, wait
18:03:50 <ehird> hmm
18:03:53 <ais523> and then you'll realise you can program in either of them
18:03:54 <ehird> how CAN you shorten that..
18:03:57 <ais523> or any intermediate mix
18:04:03 <ehird> ais523: actually, don't learn both
18:04:07 <ehird> because you will fail at one of them.
18:04:19 <ais523> ehird: learn both in case the one that you fail at is the one you learn
18:04:45 <ais523> just don't think of them as being the same language
18:04:57 <ehird> ais523: well, no -- once you've learned one the other is about five million times harder to learn :)
18:05:13 <ehird> and as for the 50 languages..
18:05:16 <ais523> ehird: not if you have a well-adjusted mind
18:05:20 <ehird> let's list the ones we've suggested in chronological order
18:05:29 <ehird> ruby, c, c++ i think so far
18:05:35 <ehird> we can ignore the joke ones :p
18:05:39 <ais523> we mentioned Perl and Haskell
18:05:56 <ehird> ais523: we're already doing perl
18:06:00 <ehird> ruby, haskell, c, c++ then
18:06:07 <Sgeo[College]> ehird: how do I fail at regex?
18:06:16 <ehird> ais523: maybe we should do smalltalk, classes would be totally lightweight :P
18:06:50 <ais523> Sgeo[College]: ehird assumed that the regex could be shorter, but there isn't an obvious shorter way to write it
18:06:52 <Sgeo[College]> ehird: so if I can only learn one, which should I learn?
18:07:00 * ais523 would say C
18:07:26 <ehird> me too
18:07:26 <ais523> C is reasonably unique among languages, in that it's one of the only truly portable languages that runs on absolutely anything and can even be used for embedded systems
18:07:32 <ehird> C++ is basicallly an awful language
18:07:36 <ais523> whereas C++ is nice, but there are other languages that do the same thing
18:07:44 <ais523> and about 50% of programmers hate it
18:08:10 <Slereah> Heh.
18:08:16 <ehird> ais523: just a warning - never, ever try and read just one everything2 article
18:08:19 <ehird> it *does not work*
18:08:33 <ais523> ehird: you end up reading other articles as well?
18:08:39 <ehird> ais523: yes
18:12:32 <ehird> ais523: hmm, Sam Hughes just added a comment system
18:12:32 <ehird> he
18:12:35 <ehird> 's so selling out
18:12:40 <ehird> with all this dynamic moo-harkey
18:15:45 -!- pikhq has quit (Remote closed the connection).
18:15:59 -!- pikhq has joined.
18:16:09 <ais523> ehird: what we really need is a metalanguage
18:16:18 <ais523> which is clear and easy to use
18:16:20 <ehird> ais523: alpaca
18:16:23 <ais523> multi-paradigm
18:16:37 <ais523> and compiles into all commonly-used languages which support the same paradigms you use
18:16:49 <ais523> so we just start off by writing the objects and some of the code
18:16:53 <ehird> ais523: ehis523talk
18:17:03 <ais523> then we can compile into Perl's OO model, or Haskell's, or C++'s, at will
18:17:37 <ehird> haskell doesn't have objects
18:17:38 <ais523> although I do kind of like your idea of using Smalltalk, I'd have to learn it first
18:17:44 <ais523> ehird: not in the OO sense
18:17:48 <ais523> it has data structures
18:17:51 <ais523> and first-class functions
18:17:54 <ais523> therefore you can write OO in it
18:18:01 <ehird> ais523: doesn't help with inheritance
18:18:06 <ehird> or duck typing
18:18:08 -!- sebbu has joined.
18:18:16 <Corun> duck duck duck duck duck duck duck...
18:18:17 <ais523> ehird: you can do inheritance by assignment
18:18:19 <Corun> GOOSE!
18:18:32 <ais523> duck typing is harder but can be done using hashes
18:19:28 <ais523> in fact I was planning to use that method to do OO in Overload
18:19:33 <ehird> ais523: We are ridiculous
18:19:36 -!- jix has quit ("This computer has gone to sleep").
18:19:46 <ais523> ehird: we're in #esoteric, what do you expect?
18:21:28 <ehird> ais523: Writing it in C would be fun.
18:21:45 <ais523> ehird: how do you want to store the parse tree?
18:21:47 <ehird> *this->mrx_stkp[-7] = ++x.ptrr;
18:21:53 <ehird> hand optimized!
18:21:55 <ais523> structs, like C-INTERCAL does?
18:22:04 <ehird> ais523: Beats me.
18:22:20 <ais523> ehird: negative array indexes are always fun in C
18:22:32 <ehird> ais523: holy crap, ubuntu 8.04 looks nice
18:22:45 <ais523> ehird: I'm downloading it at the moment
18:22:54 <ais523> I may create a new user afterwards just to see what it looks like by default
18:23:04 <ais523> because it keeps all settings across a distribution upgrade
18:23:22 <ais523> only 300 or so downloads out of about 2000 to go
18:23:32 <ehird> ais523: i've always hated that about upgrade
18:23:48 <ehird> i wish i could say 'I want to see this in shiny newness! I totally fscked up this system! Revert EVERYTHING!'
18:23:52 <ehird> 'But please keep my precious data.'
18:24:00 <ais523> ehird: then you delete the dot files in your home directory
18:24:04 <ais523> and you get that
18:24:17 <ehird> ais523: but that's Dangerous
18:24:26 <ais523> ehird: yes, you probably don't want to revert all your settings
18:24:31 <ais523> so decide which ones you do want to revert
18:24:43 <ais523> I was just telling you how to do a revert EVERYTHING like you said
18:25:09 <ais523> and OFC, you can always just create a new username and have all those settings restored
18:25:29 <ais523> if you messed up the system settings, you just keep /home and reinstall everything else
18:26:32 <ehird> ais523: So... on the subject of X)80f.sroiuoI|.
18:26:48 <ais523> ehird: I can't acctually make sense of that
18:26:52 <ais523> what lang is it in?
18:26:57 -!- Corun has quit ("This computer has gone to sleep").
18:27:07 <ehird> ais523: keyboard
18:34:34 <ehird> ais523: So hmm. I don't think Cyclexa WANTS to be implemented.
18:34:45 <ais523> better Cyclexa than Magenta
18:34:55 <ehird> define
18:35:17 <ais523> http://esolangs.org/wiki/Magenta
18:35:27 <ais523> it's cursed, never try to implement it, you'll fail
18:35:49 <ehird> Is it yours
18:36:05 <ehird> hm
18:36:07 <ehird> seems not
18:36:19 <ehird> ais523: has anyone attempted?
18:36:26 <ais523> ehird: yes
18:36:31 <ehird> ais523: how many?
18:36:41 <ais523> I can't remember
18:36:50 <ais523> the value 2 is at the back of my mind, but probably for a different reason
18:36:51 <ehird> 'I got to be in charge of something without bollixing it up or giving it up too early' <-- Well, it'd be nice to be able to do this ;)
18:36:58 <ehird> ais523: anyone recently?
18:37:04 <ais523> no
18:37:09 <ais523> I think 1999 was the last try
18:37:32 <ehird> wanna try? :)
18:38:31 <ais523> ehird: no, it's cursed
18:38:32 <Sgeo[College]> Bye for now al
18:38:33 <Sgeo[College]> all
18:38:38 <ais523> bye Sgeo[College]
18:38:39 <ehird> ais523: exactly!
18:38:42 <ehird> Sgeo[College]: bye
18:39:30 <ehird> ais523: :)
18:40:04 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
18:40:36 <ehird> ais523: it doesn't look hard..
18:41:47 <ehird> ais523: does it?
18:41:59 <ais523> ehird: ever tried to implement INTERCAL?
18:42:07 <ais523> Implementing Magenta reminds me of that a bit
18:42:11 <ehird> ais523: no, i haven't
18:42:13 <ehird> but i want to, sometime
18:42:32 <ais523> ehird: the problem is that interactions between flow control statements can get out of hand
18:42:36 <ais523> and Magenta has loads of them
18:42:45 <ais523> although it really needs the but-first statement too
18:43:27 <ehird> ais523: I'm trying to come up with a unique idea for an esolang
18:43:29 <ehird> It's hard!
18:43:48 <ais523> ehird: we don't have enough declarative esolangs at the moment
18:44:08 <ehird> ais523: i was just thinking of a prolog-alike
18:44:08 <ehird> heh
18:44:09 <ehird> except,
18:44:12 <ehird> without the truthnese
18:44:19 <ehird> that is, there's no actual 'return value'
18:44:24 <ehird> prolog has a pseudoreturn of true/false
18:44:31 <ais523> you mean pass/fail
18:44:35 <ehird> true(X) would result in true being put in X though
18:44:37 <ehird> ais523: well, yeah
18:45:34 <ais523> OK, downloading Ubuntu H has finished
18:45:44 <ais523> so all sorts of breakage may happen at my end from now onwards
18:46:04 <ais523> due to mixes between old and new bits of programs
18:46:18 <ais523> I'll just have to be careful to not close anything open, so the old FDs stay in existence
18:46:55 <ehird> ais523: any other esolang ideas?
18:47:10 <ais523> there was my graph-rewrite idea I mentioned a while ago
18:47:15 -!- Hiato has joined.
18:47:18 <ais523> I didn't tell anyone the spec, though, just that I had the idea
18:47:26 <ais523> I can explain the spec reasonably simply over IRC
18:47:34 <ais523> if people here are interested
18:47:36 <ehird> :|
18:48:00 <ais523> implementing it will be hard, though, I can't think of a marginally efficient way to do it, but am sure that one exists
18:49:02 <ehird> ais523: any others? :-P
18:49:17 <ais523> probably, but I'll have to think harder
18:49:22 <ais523> I want to do an update to BackFlip
18:49:31 <ais523> which is TC despite still keeping the BackFlip style
18:49:42 <ais523> it's a very simple change:
18:49:52 <ais523> the program is wrapped into a cylinder
18:50:06 <ais523> the left and right sides are identified, so if you go off the right you end up back at the left, like in Befunge
18:50:25 <ais523> the program is copied upwards and downwards, so if you go off the top or bottom you end up in a different copy of the original program
18:50:28 <ais523> that's enough for TCness
18:50:33 <ais523> (I also have some I/O ideas)
18:50:44 -!- Corun has joined.
18:50:45 <ais523> oh, and you only need flipping mirrors for that, the arrows are unnecessary
18:50:51 <ehird> meh
18:50:51 <ehird> :P
18:51:39 <ais523> ehird: oh, also my hyper-Prolog, but it's uncomputable and so can't be implemented
18:52:27 <ehird> unhelpful
18:52:53 <ais523> ehird: you seem really picky at the moment
18:53:11 <ais523> kyevan seems to have a decent idea for a new lang in #ircnomic, though...
18:54:59 <ehird> ais523: i am always picky
18:54:59 <ehird> :D
19:00:08 -!- Hiato has quit ("Leaving.").
19:02:27 <ehird> So!
20:09:50 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
20:26:22 -!- oklofok has joined.
20:27:39 -!- oklopol has quit (Connection timed out).
20:30:14 <ehird> oklofok: oko
20:35:20 <oklofok> heh, right now, i had to use IE because firefox just couldn't open webpages :)
20:35:26 <oklofok> firefox is my default
20:35:31 <oklofok> when it crashes
20:35:32 <oklofok> i open IE
20:35:36 <oklofok> and everything works again <3
20:35:40 <oklofok> :))))))
20:35:50 <oklofok> ehird: okofolorance
20:36:02 <ehird> oklofok: aodoaogk
20:37:26 -!- oklofok has changed nick to oklopol.
20:38:07 <ehird> oklopol: came up with any AWESOME ESOLANG IDEAS yet????
20:38:49 <Slereah> We need one oklopol!
20:39:02 <Slereah> Because everyone is tired of Brainfuck!
20:40:57 <oklopol> nopol was my esoest idea in a while
20:41:13 <oklopol> i keep coming up with *usable* languages :<
20:41:26 <ehird> oklopol: usable languages .. cool!
20:41:27 <ehird> tell me one
20:41:35 <oklopol> i mean, the fixed point idea, plus my best-effort prolog were quite nice, but neither is all that eso
20:42:00 <Slereah> Just make it eso!
20:42:21 <Slereah> Like replace all logical operator with | in your prolog thingy or something
20:42:30 <oklopol> Ef i'm actually gonna implement, best-effort prolog is my impossible extension to prolog, perhaps i should integrate it with ais's
20:43:34 <oklopol> what i'd like to invent after Ef is a whole new model of computation
20:43:42 <oklopol> i just have to come up with one
20:43:48 <oklopol> i mean
20:43:58 <oklopol> not in the paradigm sense, the CA sense
20:44:18 <oklopol> hmm
20:44:19 <oklopol> not CA
20:44:23 <oklopol> someone gimme the term
20:44:32 <ehird> oklopol: i want to implement ef
20:44:33 <ehird> can i?
20:44:38 <oklopol> :P
20:44:52 <oklopol> perhaps, once i specify it a bit more
20:45:05 <oklopol> atm, i just have a vague idea about the evaluation model, and the two examples
20:45:47 <Slereah> Ef?
20:45:56 <oklopol> Ef is for Fixed point
20:46:29 <oklopol> the idea is, function calls are executed infinite times
20:46:41 <oklopol> yet the language is mostly imperative
20:46:52 <oklopol> i mean
20:46:53 <oklopol> hmm
20:47:13 <oklopol> functions are first-class
20:47:15 <ehird> oklopol: examples plz
20:47:20 <oklopol> just the two exist
20:47:21 <oklopol> you've seen them
20:47:35 <oklopol> sort = {x:_;y:_;?x<?y&x>y=>(x,y)=(y,x)};
20:47:35 <oklopol> pical = (.acc denom sign):{(acc + sign/denom) (denom + 2) (-sign)};
20:47:35 <oklopol> pi = (pical 1 3 -1) * 4;
20:47:56 <oklopol> pi is calculated in the last to lines
20:48:03 <oklopol> the first one is a slow sort function
20:48:22 <oklopol> kinda like an imperative selection sort
20:48:26 <ehird> oklopol: show factorial
20:48:28 <ehird> :DDDDDDDDD
20:48:42 <oklopol> lessee
20:50:05 <oklopol> fac = (n .acc):{n > 0 => n-1 acc*n}
20:50:14 <oklopol> implicit recursion, and i'm using the whitespace separation thing
20:50:23 <oklopol> so it's a bit eso :)
20:50:33 <ehird> oklopol: whut's acc
20:50:38 <oklopol> result
20:50:46 <oklopol> oh, that's incorrect
20:50:52 <oklopol> fac = (.n acc):{n > 0 => n-1 acc*n}
20:51:01 <oklopol> we are finding the fixed point of n
20:51:14 <oklopol> this is an imperative factorial
20:51:17 <ehird> i dun get it
20:51:20 <oklopol> :)
20:51:21 <oklopol> good, good
20:51:30 <oklopol> it's a *bit* different from what you see usually
20:51:32 <oklopol> basically
20:51:36 <oklopol> i'll step-through
20:51:58 <oklopol> fac = (...):{...} <<< just make the function, (...) is for args, {...} is the body
20:52:07 <oklopol> (.n acc) means we take two arrgs
20:52:09 <oklopol> *args
20:52:14 <oklopol> n and acc
20:52:21 <oklopol> . means we are taking the fixed point of n
20:52:27 <oklopol> meaning we continue until n doesn't change anymore
20:52:33 <oklopol> now for the body
20:52:51 <oklopol> {a => b} means if a, then do b
20:53:06 <oklopol> a is n>0, so we do b until not a
20:53:15 <oklopol> because there's implicit recursion when we return
20:53:15 <ehird> oklopol: this handles infinite recursion doesn't it
20:53:38 <ehird> func = (.n):{n+func(n/2)}
20:53:40 <ehird> using explicit recursion
20:53:41 <ehird> but
20:53:43 <oklopol> well yeah you pretty much have to shortcut infinite recursion because you cannot escape it from within the language.
20:53:44 <ehird> func(1) => 2
20:53:46 <ehird> or something
20:53:47 <ehird> right?
20:53:53 <oklopol> umm
20:53:59 <oklopol> wha
20:54:02 <oklopol> :)
20:54:08 <oklopol> aaa
20:54:12 <oklopol> yeah, that should work.
20:54:40 <oklopol> it should be able to do something that simple perfectly, but usually you just get an abstraction
20:54:48 <oklopol> it's actually designed to be pretty *fast*
20:54:55 <oklopol> being imperative and all
20:55:15 <oklopol> my confusion was cuz i though that tried to be factorial
20:55:19 <oklopol> but indeed, you aren't a retard
20:56:04 <oklopol> umm
20:56:12 <oklopol> ehird: it's not correct though
20:56:16 <oklopol> :)
20:56:22 <ehird> oklopol: :(((
20:56:36 <oklopol> it's used a bit differently, you have to do it tail-recursively
20:56:41 <oklopol> you *can* do it like that
20:56:47 <oklopol> but that part of the language isn't done yet
20:56:57 <oklopol> and it's not supposed to be used that way
20:57:09 <oklopol> i'll try to fix it
20:57:24 <ehird> oklopol: yay
20:58:40 <oklopol> double = (n add):{n+add add/2}
20:58:40 <oklopol> double 7 3.5
20:58:45 <oklopol> this is how you should do it atm
20:59:14 <oklopol> don't worry, it will get better, it's just i want to keep it pure until i have the basics.
20:59:34 <ehird> oklopol: i don
20:59:37 <ehird> 't get why two params
21:00:09 <oklopol> well
21:00:43 <oklopol> (7 3.5) => (7+3.5 3.5/2) => (7+7/2+7/4 7/4) etc
21:00:44 <oklopol> and
21:00:45 <oklopol> actually
21:00:53 <oklopol> double = (n .add):{n+add add/2}
21:00:58 <oklopol> so we get the fixed point of add
21:01:08 <oklopol> wait for it to reach zero, that is
21:02:05 <oklopol> i'll try to explain why yours would recurse infinitely
21:02:21 <oklopol> func = (.n):{n+func(n/2)}
21:02:22 <oklopol> hmm
21:02:23 <oklopol> actually
21:02:26 <oklopol> quite trivial:
21:02:32 <oklopol> err...
21:02:38 <oklopol> okay
21:02:53 <oklopol> it's not that trivial to explain, it seems, but let's expand it
21:02:59 <oklopol> see what it evaluates to
21:03:16 <oklopol> first of all
21:03:39 <oklopol> f(n) means f(f(f(...f(n)...))) in Ef
21:03:41 <oklopol> so
21:04:06 <oklopol> f(f(f(...f(n + f(f(...f(n/2)...)))...)))
21:04:33 <oklopol> f(f(f(...f(n + f(f(...f(n/2 + f(f(...f(n/4)...)))...)))...)))
21:04:44 <oklopol> is this what you want?
21:05:18 <oklopol> you are thinking functional, you should be thinking fixed-point :)
21:06:12 <oklopol> recursion should not be used just like that, unless you're using "boring functions", which i'll prolly call functions that don't take fixed point automaticall :)
21:06:13 <oklopol> y
21:06:45 <oklopol> but, you can do non-deterministic stuff, which pays up a bit for the fact you cannot easily do recursive stuff
21:07:52 -!- olsner has quit ("Leaving").
21:08:08 -!- Iskr has quit ("Leaving").
21:08:33 -!- oerjan has joined.
21:08:53 <oklopol> ehird: couldn't handle the fact you made an error and died?
21:09:04 <ehird> oklopol: nope
21:09:53 <oerjan> typical darwin award candidate?
21:10:04 <oklopol> i guess boring functions aren't needed actually, it will just be a bit harder to do non tail-recursive stuff
21:10:07 <oklopol> i'm fine with that
21:10:31 <oklopol> it doesn't have to be a good paradigm, i just want it to be different!
21:11:40 <ehird> oklopol: invent a language based on oko.
21:11:44 <ehird> not the 3 characters
21:11:47 <ehird> but the zen of oko
21:11:49 <ehird> the oko of zen
21:11:50 <ehird> oko
21:11:57 <oklopol> :)
21:12:04 <oklopol> yes, that must be done
21:12:26 -!- ais523 has joined.
21:12:31 <ehird> ais523: upgrade works?
21:12:48 <ais523> ehird: no
21:12:50 <ais523> but I fixed it
21:12:54 <ais523> there was a file in /usr/local interfering with things
21:12:56 <ais523> after the upgrade, I could only boot to command-line
21:13:01 <ais523> and that file caused loads of things to fail
21:13:04 <ais523> even man and netcat
21:13:16 <ais523> so I renamed it
21:13:21 <ais523> and then everything started working
21:13:35 <ais523> and it was just a case of using synaptic to fix dependencies
21:13:35 <ehird> ais523: /usr/local/iwillkillyou?
21:13:40 <ehird> a common issue.
21:13:44 <ais523> I stuck xx at the start of the filename
21:13:46 <oklopol> atm, i'm thinking for my next language i'll make something so complicated it can only be understood after 20 years of meditation in tibet, yet so beautiful after understanding it there is no need to continue living, the gist has been seen.
21:14:51 <oklopol> that's all i've decided sofar
21:15:00 <ehird> oklopol: is that the oko language
21:15:30 <ais523> yes! It finally managed to update Linux itself
21:15:36 <ais523> that's failed twice before
21:15:39 <oklopol> ehird: most likely
21:16:00 <ehird> oklopol: i submit this as a code snippit
21:16:05 <ehird> %< >
21:16:14 <ehird> understanding what it does is one of the core tenents of oko
21:16:24 <oklopol> i was thinking programs would sound like poems in an alien language
21:16:33 <oklopol> but perhaps that too.
21:17:06 <oklopol> put _ for space in case there were others than the one between < and >
21:17:33 <oklopol> i wanna get that right, because fulfilling random wishes is important to me.
21:17:54 -!- ais523 has quit ("rebooting, will hopefully be back soon").
21:21:56 <ehird> oklopol: watch...
21:22:07 <ehird> %< o: { 1+ }>
21:22:13 <ehird> the art of where to put spaces is part of oko
21:22:19 <ehird> but isn't that code beautiful
21:23:04 <oklopol> grcalc = (a b .ratio):{a+b a a/b}
21:23:04 <oklopol> goldenratio = grcalc 1 1 ! ratio
21:23:08 <oklopol> this is quite neat, imo
21:23:44 <oklopol> calculating golden ratio from the fact it's the limit of the ratio of two adjacent fibs
21:23:51 <ehird> ^> ,3 (a []) <
21:23:55 <ehird> oklopol: isnt this oko lovely
21:23:55 <oklopol> ehird: it is pretty pretty
21:24:01 <ehird> even my latest symbol?
21:24:02 <ehird> it's ambigious
21:24:07 <ehird> but in a very pretty way
21:24:07 <oklopol> are there spaces?
21:24:11 <ehird> yes
21:24:14 <oklopol> i mean
21:24:14 <ehird> the spaces give deep meaning to the code
21:24:21 <oklopol> use _ for them, i can't see them.
21:24:23 <oklopol> i mean
21:24:24 -!- ais523 has joined.
21:24:30 <oklopol> if there are two adjacent ones
21:24:31 <ehird> oklopol: not more than one in a row
21:24:34 <oklopol> okay.
21:24:35 <ehird> but:
21:24:47 <ehird> a~__a$ \~
21:24:52 <ehird> oklopol: looks nicer with just spaces though
21:24:56 <ehird> a~ a$ \~
21:24:57 <ais523> ehird: I think the system's still OK, but it's running a scheduled fsck
21:25:00 <ehird> truly okoick
21:25:16 <ais523> so I'm on IRC via telnet, from a UNIX box
21:25:18 <oklopol> i really cannot see spaces
21:25:33 <oklopol> %< o: { 1+ }>
21:25:33 <oklopol> ^> ,3 (a []) <
21:25:33 <oklopol> a~__a$ \~
21:25:40 <oklopol> are these the deep, meaningful examples?
21:25:56 <ais523> presumably they have no obvious meaning
21:26:03 <ais523> that can easily be explained over IRC
21:26:43 <oklopol> well
21:26:46 <oklopol> presumably
21:26:54 <oklopol> these examples don't actually do anything meaningful
21:26:59 <oklopol> but they are crucial to understand
21:27:08 <oklopol> because they capture some of the key ideas of oko.
21:27:20 <oklopol> ehird: oh, right
21:27:29 <oklopol> i failed.
21:27:31 <ais523> and they key ideas can't easily be explained either, presumably
21:27:53 <oklopol> well, they haven't yet been invented
21:27:59 <ehird> `-` a .. b `-`
21:28:00 <oklopol> but no, they couldn't be explained easily.
21:28:06 <ehird> oklopol: between the `-`s and the middle bit is 2 spaces
21:28:37 <ehird> but .. you've got to admit that these are mirrors ontowhich the oko may be viewed; nay, merely reflected - as such a viewing must be realised via contemplation of oko.
21:29:03 <ehird> a true oko would be foolish, or even impossible - as it is such that it must be realised independently and not given;
21:29:09 <oklopol> okay. now do you want any of this to mean what one might expect from normal languages? i'm thinking it isn't really parsed, or just executed from source like brainfuck... but something weird in-between
21:29:16 <ehird> understanding oko code may be part of a path to which realisation may be achived.
21:29:26 <oklopol> well said.
21:29:28 <oklopol> :)
21:29:29 <ehird> oklopol: it's .. hard to explain. like the rest of oko!
21:29:38 <oklopol> indeed!
21:29:54 <oklopol> we don't have enough mystery in the esolang world.
21:30:07 <ehird> \=-_ "Ao" .<->
21:30:09 <ehird> oklopol: some more oko
21:30:12 <oklopol> ehird: comment @ golden ratio!
21:30:15 <oklopol> tell me it's awesome!
21:30:16 <ehird> and it's awesome
21:30:28 <oklopol> hmm
21:30:31 <oklopol> i'm thinking
21:30:39 <oklopol> in oko, there are *entities*
21:30:49 <oklopol> entities are *aware* of everything happening around them
21:30:53 <ehird> oklopol: yes
21:31:07 <oklopol> everything depends on everything, somehow... in deep, meaningful ways
21:31:07 <ehird> _-&29 [<]
21:31:11 <ehird> some more oko, but that's BAD OKO
21:31:13 <ehird> you shouldn't use it
21:31:20 <ehird> it does not have the pseudo-symmetrical oko nature
21:31:30 <oklopol> i'll put that on the BAD list
21:31:34 <ehird> you can just look at it and feel the hard crash it makes upon the oko psyche
21:31:35 <ehird> can't you?
21:31:48 <ehird> it does not blend and fold like most oko; nay, it fights against them, to remove the enlightenment
21:32:00 <ehird> a major part of oko is learning to ward off such anti-oko with real, pure oko.
21:32:05 <oerjan> the oko that can be realized is not the true oko
21:32:30 <ehird> oerjan: but you can realise it in seperate peices, and you must combine them only as the oko nature within describes;
21:32:47 <ehird> therefore you can utilize the true oko but not all at once, if realised all at once, it is not powerful, nay it is harmful
21:32:53 <ehird> and this is why true oko cannot be given
21:33:36 <oerjan> also, how do you know when a programmer is lying about oko? his fingers are typing.
21:33:54 <ehird> oerjan: hehe
21:34:25 <oklopol> hmm... about the language, it must be the opposite of languages trying to hide details and allow programmers to create new abstract levels on which to code...
21:34:26 <oklopol> in oko
21:34:35 <ais523> oerjan: we're discussing Agora over in #ircnomic at the moment
21:34:36 <oklopol> you have to understand the program as a whole
21:34:51 <ehird> oklopol: it's kind of...
21:34:55 <ehird> you can understand the peices of oko contained within
21:34:58 <ehird> and the program reveals itself
21:35:31 <oklopol> xD
21:35:34 <oklopol> yes!
21:35:37 <oklopol> exactly!
21:36:37 <oklopol> the spec begins with 50 pages of meta-explanation about the true nature of oko
21:36:57 <oklopol> and it ends with the realization the language cannot actually be conceived via a spec.
21:37:56 <ehird> oklopol: you can conceive the language via a spec. it can be fully and totally formally defined and implemented.
21:38:04 <ehird> think about that. then, you will know oko more.
21:38:27 <oklopol> it can be defined and implemented, yes
21:38:31 <oklopol> but not actually understood.
21:39:32 <ehird> oklopol: wrong
21:39:34 <oklopol> perhaps the spec need not say that
21:39:37 <oklopol> is it?
21:39:38 <ehird> it can be understood.
21:39:40 <ehird> think about that.
21:39:42 <ehird> it is very deep
21:39:47 <ehird> just think..
21:39:49 <oklopol> oh, is it now?
21:39:51 <oklopol> i shall.
21:40:48 <ehird> oklopol: STOP THINKING IMMEDIATELY
21:40:54 <ehird> Now you understand oko more.
21:40:59 <ehird> Am I right?
21:43:13 <ehird> oklopol:
21:43:26 <oklopol> yes.
21:44:24 <ehird> <-- *& >-- <
21:44:30 <ehird> oklopol: that is 'mediaanre oko'
21:44:35 <ehird> it controls the flow of bad and good oko
21:44:41 <ehird> it is itself bad oko, but controlled
21:45:08 <lament> oko?
21:45:12 <oklopol> sounds good
21:45:16 <ehird> lament: Read logs.
21:45:52 <ehird> oklopol: oko also has the concept of 'recursive metaphors'
21:46:28 -!- ais523_ has joined.
21:46:35 <oklopol> can you elaborate on them?
21:46:51 <oklopol> perhaps show me an example of that concept syntactified
21:46:53 -!- ais523 has quit ("my laptop is up again, yay!").
21:46:59 -!- Slereah_ has joined.
21:47:06 -!- ais523_ has changed nick to ais523.
21:48:07 -!- Slereah has quit (Read error: 110 (Connection timed out)).
21:50:42 <oklopol> i'm thinking oko needs a parse *graph*
21:55:45 <oerjan> clearly its grammar is not context-free. i think it is not even context-sensitive, and possibly not even general recursive, but proving so would probably violate Godel's incompleteness theorem.
21:56:28 <ehird> oklopol: recursive parse graph
21:56:29 <ehird> hi ais523
21:56:37 <oklopol> recursive?
21:56:39 <ais523> hi ehird
21:56:41 <oklopol> what does that mean? :)
21:56:55 <ehird> oklopol: self-containing parse trees
21:57:23 <oklopol> a graph can "contain itself" by having internal links
21:57:32 <oklopol> graphs = sex
21:58:17 <ehird> heh
22:00:23 <ehird> oklopol: 1
22:00:29 <oklopol> 1?
22:00:43 <oklopol> recursive metaphor example?
22:01:58 <oklopol> hmm, a syntax with a separate letter part (with somewhat sensible CV-structure) and character part might be nice
22:02:16 <ehird> oklopol: rec metaphor:
22:02:26 <ehird> = ~*a<#*~
22:04:48 <oklopol> http://www.vjn.fi/pb/p415442436.txt <<< what do you think?
22:06:14 <ehird> oklopol: No load
22:06:20 <ehird> ah
22:06:23 <ehird> hmmm
22:06:40 <ehird> no, that's bad oko - it has no pseudosymmetrical nature
22:06:49 <ehird> and is badense
22:07:14 <oklopol> i was more referring to the letter - character separation :)
22:07:25 <ehird> ah
22:07:30 <ehird> unsure
22:07:38 <oklopol> i kinda likes it.
22:07:39 <ehird> it needs more blend
22:07:50 <oklopol> blend?
22:08:38 <ehird> yes
22:08:58 <oklopol> i'm not entirely sure what that means... should i... think about it?
22:09:06 <oklopol> the answer is already within me?
22:09:25 <oklopol> or do you mean actual syntacic blending? :)
22:09:28 <oklopol> t
22:09:50 <ehird> oklopol: both
22:13:11 <oklopol> oko needs to be a very high-level language with the same "awkwardness" of adding stuff that something like thue has
22:13:21 <ehird> no
22:13:23 <oklopol> both lack of modularity and high-levelness
22:13:27 <oklopol> no?
22:14:22 <oklopol> i love the idea of every program being something of a work of art that's basically impossible to comprehend, and even the slightest attempt to modify renders it useless
22:14:48 <oklopol> but, with complex high-level concepts
22:16:30 <oklopol> something like intercal, but more insane.
22:16:45 <oklopol> much much more, i hear people can actually use it without going insane
22:19:30 <oerjan> they can? *cackle* *cough* *chirp*
22:21:29 <oklopol> well, people can't keep entirely sane using it, but they can usually fake a fairly good sane person afterwards. i'm talking poo out your mouth walk on your nose crazy
22:28:50 -!- Corun has quit ("This computer has gone to sleep").
22:29:07 <oerjan> poo out your mouth, walk on your nose? can insanity make you able to do that?
22:29:17 <oerjan> i must have got a defect version.
22:30:12 <Slereah_> Only rhinogrades can walk on their noses!
22:30:51 <oerjan> O_O
22:33:09 <oerjan> "Thus perished all traces of the snouters, their unique ecosystem, and all the world's specialists on that intriguing subject . who happened to be holding their congress there at the time" :D
22:34:15 <Slereah_> I wonder, was there ever a gigantic hoax in computer science?
22:34:20 <Slereah_> apart from Malbolge, that is!
22:37:30 <lament> wow, python is stupid
22:37:40 <lament> or rather, lazy
22:37:49 <ais523> lament: Haskell is lazy, not sure about Python
22:37:50 <lament> print foo(), bar(), baz()
22:37:53 * oerjan assumes the Museum of Hoaxes link in that wikipedia article could lead you to something compsci
22:38:05 <lament> if baz() raises an exception, foo() and bar() are still printed
22:39:49 <ehird> lament: seriously?
22:39:49 <ehird> wow
22:39:52 <ehird> well, fixed in py2k
22:39:56 <ehird> print will be a function
22:40:32 * oerjan hypothesises a genus of snouters that had returned to the sea, and remain to be rediscovered
22:42:59 <lament> py3k
22:43:05 <lament> but yes
22:53:52 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
22:59:55 <lament> woohoo, esperanto dictionary lookup
23:00:02 <lament> lament@zayin ~/eo $ eo surtere
23:00:02 <lament> surtera : terrestrial
23:00:21 <lament> (python is SO much easier to write this in than haskell would be :( )
23:04:29 <ehird> lament: source?
23:05:35 <lament> http://z3.ca/~lament/eo.py
23:06:13 <lament> it's really simple, but in haskell it would take me probably... five times longer to write?
23:06:32 <lament> with the same number of lines of code in the result...
23:10:16 -!- timotiis has quit (Read error: 104 (Connection reset by peer)).
23:18:21 <ehird> lament: am i allowed to make stylistic suggestions?
23:18:32 <ehird> ok, first, 'file' is deprecated and going away in py3k. use 'open'
23:18:36 <ehird> secondly, you never close that file
23:18:44 <ehird> if you are on 2.5 use this:
23:18:50 <ehird> with open(DICT_FILE) as dict:
23:18:53 <ehird> for line in dict: ...
23:18:59 <ehird> if you're not, heres your ugly solution:
23:19:05 <ehird> dict = open(DICT_FILE)
23:19:05 <ehird> try:
23:19:07 <ehird> ....
23:19:09 <ehird> finally:
23:19:11 <lament> er... why?
23:19:11 <ehird> dict.close()
23:19:17 <ehird> lament: because that closes the file
23:19:18 <lament> why should i close it?
23:19:30 <ehird> um, you should always close files you open.
23:19:36 <lament> why?
23:19:43 <oklopol> it's fun
23:19:43 <ehird> /sigh
23:19:46 <lament> the program itself closes immediately
23:19:57 <ehird> lament: the os keeps hold of file references
23:19:59 <ehird> even after program exist
23:20:05 <ehird> linux refcounts files and everything -- it can get sticky
23:20:07 <ehird> best to close them all
23:20:13 <lament> eh
23:20:22 <lament> sounds magical
23:20:35 <lament> next you'll be telling me i should free() all memory before exiting
23:20:55 <oklopol> well the truth is that's pretty fun too.
23:20:57 <lament> are you saying the python runtime does not do this for me?
23:21:02 <ehird> lament: no, it does not
23:30:21 <lament> well, tough luck
23:30:33 <lament> i didn't realize both python and linux sucked so badly
23:30:45 <lament> i still don't believe it, though :)
23:30:57 <lament> what can happen if i open a file and don't close it?
23:31:20 <lament> why would linux fail to notice that a program that opened the file died?
23:31:58 <ehird> lament: don't ask me
23:32:06 <ehird> but linux does refcount files and files aren't magically closed
23:32:31 <lament> it's rather hard to believe
23:32:51 <oklopol> files are so retro
23:33:19 <ehird> lament: i guess linux does it for speed
23:33:22 <lament> besides, suppose my program crashes
23:33:36 <lament> for example i shut down the computer
23:33:42 <lament> the file clearly doesn't get closed
23:33:49 <lament> obviously linux should be able to deal with situations like that
23:34:09 -!- oerjan has quit ("To crash, perchance").
23:35:50 <lament> nice, added an irssi alias
23:37:19 -!- kwertii has joined.
23:39:11 <sekhmet> ehird: Do you have a reference for that, btw? Or example code?
23:39:25 <sekhmet> I'm quite surprised by that too, and my simple tests haven't been able to reproduce what you were saying yet
23:40:18 <ehird> sekhmet: i don't know, but just about every programming language i've used has had the majority strongly advocate it, and i'm sure i read something about it somewhere
23:40:32 <ehird> i'd love to know if it's cargo cult programming -- doing it is really annoying
23:40:51 <sekhmet> Well right, it's Good Practice to close things you open in code
23:41:09 <sekhmet> I just find it really hard to believe that Linux would keep filehandles open after the owning process has died
23:41:14 <lament> ehird: i bet it is
23:41:35 <ehird> lament: if it is then it's cargo cult programming that ~90% of intelligent programmers reccomend
23:41:37 <ehird> which would seem odd.
23:41:38 <lament> (closing files before exiting)
23:41:49 <lament> ehird: oddly i have never seen that recommendation.
23:42:01 <lament> like, never
23:43:01 <sekhmet> I've seen the recommendation quite often, and it certainly makes sense if you're writing long-running processes (daemons, other things that run in servers, etc)
23:43:08 <ehird> lament: maybe you should write your program in like every single language
23:43:09 <ehird> and pick the best
23:43:24 <ehird> you should do erlang next. parallel dictionary crunching!
23:43:37 <lament> sekhmet: there's a big difference between releasing resources in general, and releasing resources before exiting
23:44:17 <lament> ehird: i just wanted an esperanto dictionary lookup program. I don't need to write it again. :)
23:45:06 <ehird> lament: but you can decide the best language that you will love and never whine to #haskell about it again ;)
23:45:07 <lament> on the plus side, i can write "/eo foje" or something and find out what the hell foje is
23:50:37 <ehird> lament: what is /eo eo
23:51:31 <lament> eo is esperanto
23:52:31 <lament> "eo" is not an esperanto word, so /eo eo is "eo : Not found"
23:52:38 -!- Corun has joined.
23:53:17 <ehird> lament: :)
2008-04-25
00:28:36 -!- Sgeo has joined.
00:38:47 -!- sebbu has quit ("@+").
00:51:10 <Sgeo> pikhq, how did you become an Agoran scamster?
01:03:47 -!- ehird has quit (Remote closed the connection).
01:57:26 -!- Corun has quit ("This computer has gone to sleep").
02:14:17 -!- SchrodingersCat has joined.
02:14:43 <Sgeo> Hi SchrodingersCat
02:14:48 <SchrodingersCat> hi
02:15:11 <Sgeo> There is at least one other person awake in #ircnomic
02:15:32 <Slereah_> Just call me, and I will raise an army of sockpuppets!
02:15:42 <Slereah_> But ehird seems to no like
02:16:20 -!- SchrodingersCat has left (?).
02:54:10 -!- Corun has joined.
03:06:17 <pikhq> Sgeo: By scamming cleverly.
03:06:27 <Sgeo> What was your scam?
03:06:32 <pikhq> (actually, *am* I H. Scamster?)
03:06:54 <pikhq> I discovered that the recordkeeper for an asset may create any number of an asset.
03:07:02 <pikhq> And thereby won.
03:07:53 <Sgeo> What asset were you recordkeeper of?
03:08:02 <pikhq> Points.
03:08:21 <Sgeo> So you abused the trust of the people..
03:08:22 -!- Corun has quit ("This computer has gone to sleep").
03:08:22 <pikhq> I believe I had 6 months' service in that role before going idle.
03:08:22 <Sgeo> >.>
03:08:26 <pikhq> No, I didn't.
03:08:41 <pikhq> I discovered that bug in the rules long after becoming scorekeeper.
03:08:52 <pikhq> And it was generally considered a decent, reasonable scam.
03:09:38 * Sgeo was reading the SLR just before, and didn't really care about that feature
03:10:50 * pikhq will be coming off hold soon after graduation. . .
03:10:53 <pikhq> Just not enough time ATM.
03:26:51 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
03:27:08 -!- oklopol has joined.
03:50:00 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
03:50:13 -!- Judofyr has joined.
05:19:33 -!- pikhq has quit (Read error: 110 (Connection timed out)).
05:20:57 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
06:42:20 -!- Judofyr has joined.
06:55:07 -!- oklofok has joined.
07:06:54 <Sgeo> G'night all
07:07:20 -!- cherez has quit (Remote closed the connection).
07:07:31 -!- cherez has joined.
07:07:34 -!- cherez has quit (Remote closed the connection).
07:07:38 -!- Sgeo has quit ("Ex-Chat").
07:07:38 -!- cherez has joined.
07:16:03 -!- oklopol has quit (Read error: 113 (No route to host)).
07:17:34 -!- olsner has joined.
07:24:57 <oklofok> heh, for a while now i've had the problem that firefox, when opening webpages, always opens the login page the wireless connection i'm using has... once again, IE was the solution! it's such a perfect browser <3
07:25:09 <oklofok> i don't get why i even bother using FF
07:28:48 -!- kwertii_ has joined.
07:44:34 -!- kwertii has quit (Read error: 113 (No route to host)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:25:32 -!- Iskr has joined.
08:33:20 <oklofok> ah, the joys of word, untuplify? no, no, you must mean NULLIFY
08:33:22 <oklofok> :D
08:33:48 <oklofok> yes, i typoed nullify into untuplify, well done, word.
08:34:19 <oklofok> if someone knows why the fuck that might happen, do enlighten me
08:39:31 -!- ais523 has joined.
08:47:14 <olsner> you've obviously double-typed u, swapped the n and u, then typoed l into pl and somewhere in the middle of it your cat pressed t
08:47:35 <olsner> *ll into pl
08:50:14 -!- olsner has quit ("Leaving").
08:55:09 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
09:08:33 -!- immibis has joined.
09:10:28 * immibis notices that apparently 10 megabytes * 3 teaspoons/second * the answer to life, the universe and everything * 4 years/metre = 78 392 973.4 newtons
09:11:54 <immibis> and that 100 degrees C * 94 metres per metre is 35 076.1 degrees Kelvin
09:21:41 <immibis> and that 4 cups/teaspoon = 129
09:21:44 <immibis> *192
09:25:03 <immibis> and that 10K * 5F = 50m^-2kg^-1s^4A^2K. Now how did amperes get in there...!!!
09:27:51 -!- kwertii_ has quit ("bye").
10:08:07 -!- oklofok has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
10:24:00 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to).
12:07:20 -!- dbc has quit (Client Quit).
12:20:46 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
12:21:18 -!- Judofyr has joined.
12:51:31 -!- oklopol has joined.
13:21:04 -!- sebbu has joined.
13:21:08 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
14:45:00 -!- Corun has joined.
15:03:57 -!- oklopol has joined.
15:12:47 -!- ehird has joined.
15:21:20 -!- Tritonio_ has joined.
15:21:22 -!- timotiis has joined.
15:45:42 <ehird> oklopol: oko
15:49:39 <oklopol> hi
15:49:48 <oklopol> i'm busy today!
15:52:09 <ehird> exciting
15:57:41 -!- Tritonio_ has quit (Remote closed the connection).
15:59:03 -!- Parma_Quendion has changed nick to Quendus.
16:06:26 <oklopol> ehird: yes!
16:06:39 <ehird> oklopol: do you further understand the zen of oko?
16:11:52 <oklopol> almost, almost
16:12:05 <ehird> oklopol: { < > }
16:12:11 <ehird> that is one of the purest oko that exist.
16:16:29 <oklopol> i agree it is very pure.
16:18:51 <ehird> oklopol: `
16:18:54 <ehird> that is in fact bad oko
16:19:06 <ehird> as you will realise that the mini-symmetry of ` is not self-balancing
16:19:09 <ehird> and `' is crooked
16:19:16 <ehird> ergo, ` should only be used in special cases
16:19:19 <ehird> as a controlled box of bad-oko
16:37:42 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
16:38:38 -!- bsmntbombdood has joined.
16:43:04 -!- ais523 has joined.
16:45:18 -!- jix has joined.
17:02:03 -!- jix has quit ("CommandQ").
17:38:09 -!- Corun has quit ("This computer has gone to sleep").
17:47:10 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
17:47:33 -!- ais523 has joined.
18:01:55 -!- olsner has joined.
18:08:37 -!- olsner has quit ("Leaving").
18:16:13 -!- Corun has joined.
18:46:20 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
18:46:56 -!- Judofyr has joined.
18:47:12 -!- Corun has quit ("This computer has gone to sleep").
19:01:56 -!- Sgeo has joined.
20:29:46 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
20:30:19 -!- Judofyr has joined.
20:41:45 <ehird> ais523: as you wish
20:41:49 <ehird> now comment on my lisp interp skeleton ;)
20:42:25 <ais523> your garbage collector does nothing
20:42:41 <ais523> at least, to the program, it seems fine for debugging
20:43:15 <ehird> ais523: before you told me that, i thought it was a real, completed gc
20:43:18 <ehird> thanks for letting me know.
20:43:41 <ehird> actually, my heap thing is wrong
20:43:44 <ehird> i need to start at the current scope
20:43:51 <ehird> beh, i should do this in python. :PPP
20:43:55 <ehird> but i already have like 3 lisps in python
20:43:57 <ehird> and so does oklopol
20:45:02 -!- Corun has joined.
20:47:01 <oklopol> i thought i had two
20:47:05 <oklopol> well
20:47:11 <oklopol> i do have *like* three.
20:50:04 <ehird> oklopol: :))
20:50:13 <ehird> oklopol: but yours don't have a manual GC
20:50:19 <ehird> you should make a new one, which has a custom GC
20:50:22 <ehird> and all the stuff
20:50:30 <ehird> so that it can be your Final Scheme In Python
20:52:55 <oklopol> did you finish the one with a manual gc?
20:53:21 <ehird> oklopol: yeah
20:53:40 <ehird> oklopol: it was just a simple mark/sweep
20:56:27 <oklopol> i know, and i knew you finished the *gc*
21:02:13 <ehird> oklopol: meh :P
21:08:40 <oklopol> you didn't? perhaps i've confused all finishations and antifinishances
21:12:16 <ehird> i did finish it
21:14:44 <oklopol> then i have confused nothing!!
21:16:19 <oklopol> it's funny, i start university in 5 months, and i already have like a sixth of my studies done
21:16:25 <oklopol> 5? more like 3
21:19:43 -!- ehird has changed nick to The_Wooly_Hat.
21:19:47 -!- The_Wooly_Hat has changed nick to ehird.
21:20:17 -!- ais523 has changed nick to The_Wooly_Hat.
21:20:22 -!- The_Wooly_Hat has changed nick to ais523.
21:50:04 <Judofyr> ehird: Have you found the routing-stuff? :P
21:50:25 -!- ehird has changed nick to nobody_in_partic.
21:50:31 -!- nobody_in_partic has changed nick to ehird.
22:00:26 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
22:02:59 -!- ais523 has joined.
22:03:22 <ehird> Judofyr: Can't. Wiped.
22:03:35 <Judofyr> crap :P
22:03:50 <Judofyr> you don't have the private pastie-url in your history either?
22:08:29 -!- ihope has joined.
22:08:55 <ihope> When I'm at school, I ponder how interesting a certain thing inspired by Thue and neural nets would be. Then I get home and do something completely unrelated.
22:09:13 <ihope> And much more boring, too.
22:09:44 <oklopol> same thing. i get tons of idea when i'm off the comp, and when i return, i open south park
22:09:55 <oklopol> and watch the old episodes over and over in a deep coma
22:10:15 <oklopol> sometimes make a random incomprehensible contribution on a random channel
22:10:25 <ais523> o
22:10:38 <oklopol> o
22:11:06 <ehird> k
22:11:40 <ehird> i'll be back in, oh, i dunno, 30 mins?
22:12:39 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:13:25 -!- Judofyr has joined.
22:14:24 <ihope> We need a herd of eager programmers with no ideas.
22:14:40 <ais523> ihope: what for?
22:15:09 <ihope> So you can tell them what type of thing would be interesting rather than having to do it yourself.
22:16:46 -!- Judofyr has quit (Client Quit).
22:22:26 <bsmntbombdood> me me me
22:22:33 <oklopol> you !!! :)
22:23:30 <bsmntbombdood> oklopol: university is for fail
22:24:10 <oklopol> well tuition might be, but being a professor or something sounds tempting
22:24:51 <oklopol> also i usually get quite nice ideas during lectures, and getting ideas is *way* better than sex
22:25:11 <bsmntbombdood> damn finns and their sexin
22:25:35 <bsmntbombdood> american nerdy kids need love too!
22:25:46 <oklopol> :)
22:25:52 <oklopol> so when were you coming to finland?
22:26:05 <oklopol> *double-wink*
22:26:12 <lament> i think i'll take sex over getting ideas any day
22:26:54 <bsmntbombdood> oklopol: now that i don't have school i could go right now
22:27:06 <oklopol> sometimes you get both, for instance oklotalk's pattern matching was partly designed in bed
22:27:15 <oklopol> i mean, the current one
22:28:14 -!- ais523_ has joined.
22:28:31 <oklopol> bsmntbombdood: i can only fix you an ugly chick atm, and as for those homoerotic fantacies about me you have, i'm sorta seeing this chick
22:28:57 -!- ais523 has quit (Nick collision from services.).
22:29:00 -!- ais523_ has changed nick to ais523.
22:29:04 <bsmntbombdood> lawl
22:29:17 <oklopol> anyway, how is it hard to get sex?
22:29:31 <oklopol> i usually just tell girls they're hot and they spread their legs :|
22:29:38 <oklopol> you should try that
22:29:57 <lament> that's some low-quality sex
22:30:03 <lament> so you should compare it to low-quality ideas
22:30:14 <lament> those aren't hard to get either!
22:30:14 <oklopol> :P
22:30:26 <oklopol> oh you!
22:30:53 <oklopol> bsmntbombdood: so you quit it all?
22:31:00 <oklopol> how's the brewery going?
22:31:00 <bsmntbombdood> yep
22:31:14 <bsmntbombdood> slowly
22:31:32 <oklopol> any ideas for the future?
22:31:37 <oklopol> chillin'?
22:31:45 <oklopol> that was my second option after uni
22:32:50 <bsmntbombdood> not really
22:34:24 <oklopol> what then? feed me with your tasty ideas for the future
22:35:03 <bsmntbombdood> i mean, i don't have any plans
22:35:14 <oklopol> ah
22:35:26 <bsmntbombdood> i might go be a hobo for a while
22:35:37 <oklopol> wow
22:35:43 <oklopol> that would be so awesome
22:35:50 <oklopol> can i be your hobo buddy?
22:36:11 <bsmntbombdood> definitely
22:36:18 <oklopol> the problem is, i can't really mix programming and living on the street
22:36:23 <oklopol> cuz you need electricity
22:36:41 <bsmntbombdood> laptop
22:37:32 <ihope> An XO-1 laptop.
22:37:52 <bsmntbombdood> no, those are fail
22:38:10 <lament> XO are fail?
22:38:14 <bsmntbombdood> yeah
22:38:17 <lament> you're fail.
22:38:26 <lament> clearly you're not suited for hobo life.
22:40:56 <bsmntbombdood> xo were hardly designed with me in mind
22:41:24 <Sgeo> c'mon people, let's go to #ircnomic
22:41:37 <oklopol> your mother wasn't designed with you in mind.
22:41:51 <ehird> <lament> i think i'll take sex over getting ideas any day <-- maybe you could design an esolang that got you sex
22:42:02 <ehird> i mean, everyone knows girls love esoteric programming languages, right?
22:43:08 <oklopol> many do, until they realize you're not talking about them for sex talk, but actually trying to teach.
22:43:25 -!- ais523_ has joined.
22:43:30 <Sgeo> lol oklopol
22:43:46 -!- ais523 has quit (Nick collision from services.).
22:43:47 <ehird> oklopol: i'll , you, then . -- and , again until there is no more!
22:43:49 -!- ais523_ has changed nick to ais523.
22:44:07 <ehird> i would convert some other, more interesting BF program ... but i'm lazy
22:45:26 <bsmntbombdood> time for work
22:45:39 <oklopol> now why would you comma me, then period double-hyphen me like that?
22:46:05 <ehird> oklopol: -- was an emdash, fool
22:46:12 <ehird> ,[.,] is obviously the program
22:49:21 <oklopol> basically, you're gonna cat me up?
22:49:51 <oklopol> that's a pretty serious threat
22:57:25 -!- Iskr has quit (Remote closed the connection).
22:59:11 <ehird> oklopol: it was meant to be more of an innuendo
23:00:37 <lament> pussycat
23:01:06 <oklopol> basically you'll eat me until i'm finished or smth?
23:01:37 <oklopol> i'm not sure i have the proper machinery for that
23:02:04 <oklopol> hmmhmm
23:14:48 <oklopol> sleep
23:14:49 <oklopol> or
23:14:50 <oklopol> ef
23:15:11 <oklopol> or perhaps read trivial web programming stuff?
23:15:20 <oklopol> !
23:15:24 <EgoBot> Huh?
23:15:31 <oklopol> !help
23:15:35 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
23:15:37 <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
23:15:40 <oklopol> any of these languages capable of randomization?
23:16:31 <ehird> <oklopol> ef
23:16:31 <ehird> <oklopol> or perhaps read trivial web programming stuff?
23:16:33 <ehird> blend these
23:16:36 <ehird> ef on the web!
23:16:39 <ehird> fixed-points of pages!
23:17:02 <oklopol> hmm... well
23:17:33 <oklopol> something like substituting php with the output of the program might take the fixed point of substitutions
23:17:43 <oklopol> in case the script creates another script etc.
23:18:09 <ehird> oklopol: php, bah
23:18:10 <oklopol> but, that's all fixed-point like i can come up with without further ponderification
23:18:13 <ehird> just use ef to output html.
23:19:05 <oklopol> hohoo
23:19:06 <oklopol> eval
23:19:08 <oklopol> takes
23:19:08 <oklopol> the
23:19:09 <oklopol> fixed
23:19:10 <oklopol> point
23:19:11 <oklopol> :)
23:19:24 <oklopol> that is a fun thought :P
23:19:46 <oklopol> "takes an Ef expression and executes it infinite times on given input"
23:22:00 -!- skorgu has joined.
23:25:20 <oklopol> what this means is, of course, that having ef scripts in the file that are executed to get the html content will automatically realize if you produce a page that has further scripts
23:25:32 <oklopol> not that it makes a difference, really
23:25:39 <oklopol> but it's fairly fun
23:27:01 <ehird> oklopol: write an ef->javascript compiler
23:27:05 <ehird> then you can have it client-side too!
23:27:07 <ehird> Efjax!
23:28:52 <oklopol> effin' javascript and xml
23:29:28 <ehird> oklopol: x means EXTREME in efjax
23:29:33 <ehird> it communicates with ef code
23:29:39 <ehird> in an oklotalk wrapper
23:29:43 <oklopol> ah!
23:29:44 <oklopol> :)
23:30:01 <oklopol> Ef is for Extremely Fucking cool
23:30:09 <oklopol> hmm... ef is for Extremely Fucking cool
23:30:31 <ehird> i considered an acronym for ESO once (ais523 will like this):
23:30:36 <ehird> ESO(0) = Esoteric Standards Organization
23:30:41 <ehird> ESO(N) = ESO(N-1) Standards Organization
23:30:46 <ehird> it's a recursive acronym with a base case!
23:30:54 <ais523> ehird: yes, I do like that
23:31:07 <ehird> and they are the same lengtj!
23:31:09 <ehird> *length
23:31:10 <ehird> joy!
23:31:40 <Slereah_> ESOTERIC STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STANDARD ORGANISATION STA
23:32:20 -!- Corun has quit ("This computer has gone to sleep").
23:32:44 * Slereah_ takes sum sleeping pills
23:32:50 <Slereah_> NOM NOM NOM
23:34:01 <ihope> Since I don't want to programmatific'y my Thue neural idea, I guess I'll stick it on the wiki under the horrible portmanteau "Thueural".
23:34:13 <ehird> oh lawd, is 'dat sum sleeping spills?
23:41:16 -!- Corun has joined.
23:44:10 -!- skorgu has quit (Remote closed the connection).
23:47:34 -!- ais523 has quit (Remote closed the connection).
23:47:49 -!- ais523 has joined.
23:54:37 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
2008-04-26
00:13:02 <ihope> My password for the esolang wiki is "esoteric"? How insecure.
00:13:53 <ehird> ihope: No, it's not.
00:14:14 <ehird> <.<
00:14:14 <ihope> You didn't try it, did you?
00:14:17 <ehird> Yes
00:14:18 <ehird> Yes I did
00:14:19 <oklopol> no one would ever expect it to be that simple!!
00:14:32 * ihope Swhacks oklopol
00:14:58 <oklopol> did you just shit me?
00:15:04 <ehird> no
00:15:05 <ehird> swhack
00:15:07 <ehird> it's an #ircnomic term
00:15:22 <ehird> i do believe you are a player
00:15:23 <ehird> therefore
00:15:27 <ehird> oklopol: do you accept the Swhack?
00:15:59 -!- pikhq has joined.
00:16:22 <ehird> pikhq: You'd like #ircnomic. It has silly Agora-Like Uppercase Terms
00:16:30 <ehird> The new ruleset is proving to be quite a joy,
00:16:44 <oklopol> i don't know what swhacking is, but my pun works no matter what it is
00:17:28 <ehird> oklopol: You must answer yes or no - do you accept the Swhack?
00:18:00 <oklopol> you are confusing the real world with ircnomic, man :)
00:18:12 <oklopol> i refuse to do either until i know what swhackin is
00:18:19 <oklopol> *g
00:18:24 <ehird> oklopol: that's not an option. Do you accept the Swhack or not?
00:18:35 <pikhq> ehird: w00ts.
00:18:45 <oklopol> :)
00:18:48 <pikhq> There's but one problem: ATM, I don't have time for much in the way of nomics.
00:18:53 <ehird> pikhq: and ihope is an admin there, so there's even part of Agora in there
00:18:55 <pikhq> I will post-graduation, though.
00:19:00 <ehird> and it's not like ircnomic does anything
00:19:04 <ehird> it's not the most in-depth nomic
00:19:07 <lament> don't nomics kinda suck?
00:19:08 <pikhq> Which will be in a month.
00:19:11 <pikhq> lament: I love them.
00:19:13 <ehird> lament: no.
00:19:14 <ehird> no they don't
00:19:26 <lament> don't they all die because the players lose interest because the game is so boring?
00:19:32 <oklopol> nomi omi o
00:19:45 <oklopol> lament: isn't that true for everything?
00:19:54 <pikhq> lament: Agora is in its second decade of existence.
00:20:11 <lament> oklopol: no, people manage to finish other games quite often
00:20:27 <oklopol> games that can be finished are never fun
00:20:42 <lament> the finish that can be finished is not the true finish.
00:20:55 <oklopol> hmm, i guess you got me there
00:20:56 <ehird> lament: Heck, you should pop in to #ircnomic. It's not *totally* lame, I promise ;)
00:21:09 <ehird> Although some people don't like the vote-tracking bot, you probably will, because it's PYTHON OH GOD
00:21:10 <oklopol> i'm going to do some serious sleeping now
00:21:10 <oklopol> ->
00:21:23 <ehird> (The rule list website is also written in Python, so I guess you like that too)
00:23:31 <lament> how many rules are there?
00:23:48 <ihope> Of Agora?
00:23:49 <ehird> lament: only like 14
00:23:51 <ehird> and they're short
00:23:56 <ihope> Oh, right.
00:23:56 <ehird> of agora, though, a few hundred
00:24:30 <lament> what is agora?
00:25:07 <ehird> lament: The longest-running nomic.
00:25:13 <ehird> Started in 1993/
00:25:15 <ehird> Still going today.
00:25:24 <ehird> Not the oldest one, but the longest-running
00:25:24 <lament> i mean apart from being a nomic
00:25:34 <ehird> lament: It's just ... a very long-running, famous nomic.
00:25:41 <lament> well
00:25:47 <ihope> It's a nomic with many rules.
00:25:47 <lament> the united states is a nomic, but it's also a country
00:26:03 <ehird> ihope: "(Yep, I just said I disliked scamming in another message.)" -- you
00:26:06 <ihope> The canonical example is Canada, not the United States. :-P
00:26:06 <pikhq> Oh, right. I forgot that recent Agoran ruling.
00:26:17 <ehird> pikhq: ihope just did a great scam by defining Marvy
00:26:33 <pikhq> ehird: Unless it's in the rules, the definition does not apply.
00:26:35 <ehird> and is now messing around with things for not Dancing a Powerful Dance
00:26:38 <ihope> Nobody's paying attention to it yet. :-P
00:26:42 <ehird> pikhq: Well it's on general-business
00:26:54 <pikhq> (believe me, I've tried to scam a lack of definition for something before)
00:27:27 <ihope> The Marvies accused are a contract, myself, and an instance of a currency. I'm guessing that I'm the only one that can actually be charged with anything.
00:28:09 <lament> heh, the map of agora is interesting
00:28:13 <pikhq> ihope: Unless the rules define a Marvy, Marvies do not exist, as far as that rule is concerned.
00:28:27 * ihope shrugs
00:28:48 <ihope> At least I have that contract that aspires to be a rule.
00:29:16 <pikhq> ihope: Stick the power-4 rule in the contract, and start an equity case. :p
00:30:43 <ehird> lament: anyway, although Agora is a nomic it's hard to define what else it is, because the gameplay that isn't meta is much less long-lived
00:31:03 <ehird> The gameplay itself rapidly changes and disappears and reappears.
00:31:11 <ehird> and there's multiple modules of gameplay at once - or none
00:31:15 <pikhq> ehird: The *mechanics* of the gameplay change rapidly.
00:31:23 <pikhq> The types are actually fairly stable.
00:31:33 <ehird> Well, yes.
00:31:53 <pikhq> The electoral system, courts, contests, and contracts have been in the rules since '93 or '94.
00:32:05 <pikhq> Of course, the mechanics since then have changed so incredibly much. ;)
00:33:16 <lament> sounds cool
00:33:34 <pikhq> Oh, can't forget the patent title system.
00:33:58 <pikhq> There's a few hundred, at my last count.
00:34:14 <pikhq> (which, admittedly, is a bit old.)
00:39:26 <lament> "Esperanto conferences average 2000 to 3000 participants every year whereas Ido conferences have had anywhere from 13 to 25 participants over the last decade. Each language also has a number of regional conferences during the year on a much less formal basis, and with smaller numbers."
00:39:32 <lament> heh
00:39:52 <lament> if the world conference has 13 participants, then how many participants does a conference "with smaller numbers" have?
00:40:06 <lament> is it still a conference when there're two participants? :)
00:41:01 -!- olsner has joined.
00:41:36 <pikhq> Whereas Esperanto may be averaging a few hundred per smaller conference.
00:41:39 <pikhq> ;)
00:42:10 <ihope> Doesn't the Bible define a conference or something? :-P
00:42:31 * pikhq knows that the Esperantido is smaller, but damn; didn't know it was that much smaller.
00:42:49 <ehird> esperantido, heh
00:43:15 <pikhq> ehird: That *is* the etymology of Ido.
00:43:26 <ehird> pikhq: But amusing
00:43:36 <pikhq> And there's a reason for it, to.
00:43:39 <pikhq> s/to/too/
00:43:51 <pikhq> Ido *is* an Esperantido. The very first, in fact. ;)
00:44:43 <ehird> Esperanto is lame. I like lojban.
00:44:44 <pikhq> (Esperantido being the family of languages related to Esperanto; the term comes from Esperanto: "Esperantido".)
00:44:47 <ehird> If only because I know the very basics
00:44:55 <ehird> mi'e .Eli,at.xrd.
00:44:56 <ehird> I do believe
00:45:09 <pikhq> I think Lojban is a very interesting linguistic experiment.
00:45:22 <pikhq> Unlikely that many will use it, but interesting, nevertheless.
00:45:25 <lament> i think lojban is far more lame than esperanto.
00:45:40 <ehird> Lojban is a lot of fun.
00:45:50 <lament> esperanto has the goal of allowing people to communicate.
00:45:54 <lament> which is a lot of fun.
00:46:09 <lament> lojban has the goal of trying to be weird.
00:46:21 <lament> which is... kinda lame in comparison :)
00:46:29 <pikhq> lament: Esperanto is meant as a practical interesting language. Lojban is meant as *just* an interesting language.
00:46:50 <pikhq> Both are admirable goals. . . Especially since Lojban does it in a way easily parsable by computers.
00:47:00 <ehird> Lojban has a defined goal
00:47:02 <pikhq> (the official Lojban grammer is published in BNF)
00:47:02 <ehird> And yeah.
00:47:05 <ehird> pikhq: no
00:47:08 <ehird> it's published as a yacc file
00:47:10 <lament> i strongly believe lojban is pure idiocy
00:47:10 <ehird> which is more impressive
00:47:35 <pikhq> ehird: The BNF file is considered official, the YACC file is considered something useful, and *should* be equivalent to the BNF (but isn't necessarily).
00:47:46 <lament> having a computer-parsable grammar should not be a design goal for human languages, for several reasons, of which the main one is that humans aren't computers
00:47:59 <ehird> lament: It's not designed for every-day use.
00:48:04 <ehird> It's an experiment, an idea.
00:48:04 <pikhq> lament: The main suggested uses of Lojban involve artificial intelligence usage.
00:48:07 <ehird> It's interesting. It's fun to learn!
00:48:14 <ehird> What's wrong with that?
00:48:17 <lament> for an example of something else that was designed to be readable by both humans and computers, see XML.
00:48:31 <ehird> lament loses the conversation
00:48:37 <ehird> for saying the stupidest thing imaginable
00:48:39 <pikhq> For an example of XML failing at that, see SVG.
00:48:51 <ehird> pikhq: He was being sarcastic.
00:48:57 <ehird> But in a totally lame, irrelevant way
00:48:58 <pikhq> ehird: And I'm not.
00:49:03 <lament> i'm not being sarcastic, i'm saying lojban is similar to xml in a way
00:49:13 <lament> it tries to do two things, and is pretty bad at both :)
00:49:30 <lament> ehird: you don't need a whole new language to talk to computers.
00:49:41 <ehird> lament: .. you don't understand what lojban is for
00:49:54 <ehird> but I can only point you to #lojban for an explanation of why you are wrong
00:50:05 <lament> yes, that's your usual strategy for arguments :)
00:50:15 <ehird> It's valid.
00:50:18 <lament> you claim something, you can't substantiate it at all, and you direct me to some IRC channel.
00:50:54 <lament> no, it's not, if you know i don't understand then i have to assume that you do understand, otherwise how could you know i don't? And if you understand, then you could tell me.
00:50:55 <pikhq> In this case, he's saying "I suck at arguing this point; these people don't."
00:50:59 <ehird> what's wrong with an irc channel if they can explain better than I can, lament?
00:51:15 <pikhq> (or, alternatively, "I have no fucking clue; these people do.")
00:51:21 <ehird> pikhq: Oh come on.
00:51:41 <pikhq> ehird: In this case, it's not you saying *that*, though.
00:54:17 <lament> ehird: my issue with this line of argument is not that they can explain better than you do. I'm sure they can.
00:54:36 <lament> my issue is that you're wrong to begin with. :)
00:55:03 <ehird> lament: you are wrong
00:55:12 <lament> i mean, this is why your way of arguing can't work
00:56:07 <lament> as far as i'm concerned, i'm right (otherwise i wouldn't be arguing)
00:56:37 -!- timotiis has quit (Read error: 110 (Connection timed out)).
00:56:39 <lament> if somebody explains to me why i'm wrong, i can accept that.
00:56:53 <ehird> lament: that somebody resides within a certain channel.
00:57:15 <lament> they're free to argue with me if they want to, but i don't think they do.
00:57:25 <lament> you're in a way pushing _your_ responsibility on them.
01:04:29 <lament> the goal of lojban is to be geeky.
01:04:33 <lament> I quote wikipedia:
01:04:36 <lament> "There are generational "classes" of Lojbanists: Old Growth, Sci-Fi (in the late 1980s, recruited through Sci-fi cons), Conlangers (in the early 1990s, recruited through constructed language afficionadodom), Geeks (always present, but somewhat more prominent in the late 1990s, recruited mostly through computer science interest), New Growth."
01:05:26 <ehird> lament: uhh, so what wikipedia thinks of lojban users means that the language itself has a certain property
01:05:36 <ehird> pikhq: deferring this to you, i have better things to do - like sleep
01:09:57 <pikhq> lament: My retort: who cares? It's an interesting linguistic experiment; leave it at that.
01:11:58 <lament> pikhq: oh, certainly.
01:17:50 <pikhq> Obviously, I'm not a major Lojban freak. ;)
01:20:16 <pikhq> BTW: one of the most painful things ever is hearing Shatner in "Inkubo".
01:20:48 <lament> you watched that movie? In Eo?
01:21:23 <pikhq> It's only in Eo.
01:21:38 <lament> is it as terrible as everybody says?
01:21:47 <pikhq> The pronunciation, yes.
01:21:51 <pikhq> (I've only seen short clips)
01:22:20 <pikhq> Shatner speaks Esperanto with a French accent, for God's sake.
01:22:44 <lament> you speak eo?
01:23:12 <lament> shouldn't eo be fairly insensitive to pronunciation, being universal and all?
01:23:46 <pikhq> I speak some Esperanto, yes.
01:24:02 <pikhq> It's still possible to royally fuck up the pronunciation.
01:24:23 <lament> ooh
01:24:45 <lament> i'm trying to learn eo at the moment
01:26:37 * pikhq wonders how the Esperanto in "Red Dwarf" is. . .
01:27:58 <pikhq> ("Red Dwarf" is a British comedy series from the 80's, set in a bilingual space ship: eo-utf8 and en-uk-utf8)
01:29:14 <ehird> pikhq: I don't think they specified utf-8.
01:29:25 <lament> oddly, the (English) wikipedia article on Red Dwarf doesn't mention esperanto at all :)
01:29:27 <pikhq> ehird: Probably not.
01:29:32 <pikhq> lament: Odd.
01:29:35 <lament> (but the esperanto one does)
01:30:08 * pikhq nods
01:30:25 <pikhq> The Wikipedia page on Esperanto culture, IIRC, mentioned it.
01:30:28 <pikhq> (in en)
01:30:42 <pikhq> ehird: You're right. eo-spoken and en-uk-spoken, then? :p
01:31:18 <ehird> pikhq: how about Esperanto and British English, you dork
01:31:28 <pikhq> ehird: But I'm a dork!
01:32:10 * pikhq looks at the Japanese page on it
01:33:09 <pikhq> Not seeing it there.
01:34:06 * pikhq looks at the Japanese article on Esperanto. :p
01:34:45 <lament> Esperanto kaj Brita anglo :)
01:34:51 <pikhq> Jes.
01:35:53 <lament> how long did you learn eo for?
01:37:12 <pikhq> 4 years, *but* I've only really studied intensively for a few weeks. Do, mia Esperanto ne bonegas.
01:37:26 <pikhq> (and not recently, either)
01:38:19 -!- ehird has quit (Remote closed the connection).
01:40:56 <pikhq> Amusing; the Japanese Esperanto article has a section on words Esperanto borrows from Japanese.
01:41:40 <pikhq> Did not know Eo used "hasxioj" for chopsticks.
01:41:51 <pikhq> (from the Japanese, "hashi".)
01:50:29 <lament> the Chinese must be pretty upset about that one.
01:53:24 <lament> although the mandarin pronunciation is very close, so it's easier for them as well.
01:54:29 <pikhq> Odds are, the Chinese pronunciation was closer when the Japanese first used that as a loan word. ;)
01:55:20 <lament> only if japanese is more conservative
01:56:20 <pikhq> Pronunciation-wise, at least.
01:56:36 <pikhq> They've dropped a few phonemes in the past several hundred years, though.
03:42:32 -!- Corun has quit ("This computer has gone to sleep").
04:15:49 -!- evincarofautumn has joined.
04:19:09 <evincarofautumn> Hey there.
04:19:19 <pikhq> Hey.
04:19:46 <evincarofautumn> Fairly dead, then, eh?
04:19:53 * pikhq nods
04:20:00 <evincarofautumn> To be expected.
04:20:02 <pikhq> At least, ATM.
04:20:38 <pikhq> Get something going about esoteric programming languages, and people atart talking more.
04:20:49 <evincarofautumn> Hm.
04:21:04 <evincarofautumn> Well, it's been a while for me, so I figured I'd get back in the swing, you know?
04:21:09 <pikhq> Mmkay.
04:21:32 <evincarofautumn> Last time I implemented an esolang was...
04:21:37 <evincarofautumn> maybe a few years ago.
04:21:42 <pikhq> Shameful.
04:21:51 <evincarofautumn> Sho' you right.
04:22:03 <pikhq> Not that I'm one to talk.
04:22:10 <evincarofautumn> Ha.
04:22:10 <pikhq> My last work on PEBBLE was last year.
04:22:14 <evincarofautumn> Happens to the best of us.
04:22:32 <pikhq> Senior year of high school takes a lot of time, oddly. :p
04:22:48 <pikhq> Full high school + college workload: not the wisest of ideas.
04:24:00 <evincarofautumn> Heh. I'm a senior right now.
04:24:17 <evincarofautumn> It's a damn shame the way school gets in the way of learning sometimes.
04:24:26 <pikhq> Seriously.
04:24:39 <evincarofautumn> So.
04:24:40 <pikhq> Just let me write my kernel in peace.
04:24:41 <evincarofautumn> Esolangs.
04:24:56 <evincarofautumn> I have an idea formulating.
04:25:00 <pikhq> Mmkay.
04:25:41 <evincarofautumn> Let's see... it's 2d. There's an execution pointer as a vector offset into the space. Some standard-issue commands, whatever.
04:25:48 <evincarofautumn> But.
04:25:58 <pikhq> So far, it's standard Funge. . .
04:25:58 <evincarofautumn> Execution can be branched.
04:26:09 <pikhq> Forkfunge? Oh god.
04:26:21 <evincarofautumn> You can have multiple execution pointers running at once.
04:26:27 <evincarofautumn> They're guaranteed to run concurrently.
04:26:29 <pikhq> Like I said: forkfunge.
04:26:36 <evincarofautumn> If they crash together, they unify into one thread.
04:26:57 <pikhq> And the direction?
04:27:01 <evincarofautumn> Hm.
04:27:03 <evincarofautumn> Oh, man.
04:27:05 <evincarofautumn> Best idea ever.
04:27:10 <evincarofautumn> Attractors.
04:27:17 <pikhq> :D
04:27:25 <evincarofautumn> There are attractors, toward which a thread moves.
04:27:38 <evincarofautumn> The attractor can be moved when the thread reaches a certain position.
04:27:43 <evincarofautumn> There's your event-handling code, right there.
04:27:55 <pikhq> :D
04:28:02 <evincarofautumn> I think maybe one attractor for each thread?
04:28:24 <evincarofautumn> And moving two attractors to the same position guarantees that the threads will crash and unify.
04:28:37 <evincarofautumn> I'm on a roll!
04:28:52 <evincarofautumn> But to think of syntax...
04:28:54 <evincarofautumn> Um.
04:28:56 <evincarofautumn> Help.
04:29:05 <pikhq> Funge it.
04:29:05 <evincarofautumn> Ack!
04:29:08 <evincarofautumn> Help!
04:29:13 <evincarofautumn> Yeah...
04:29:23 <evincarofautumn> Wait, what am I saying.
04:29:30 <evincarofautumn> Basic instruction set before syntax.
04:29:38 <evincarofautumn> (It _has_ been a while)
04:30:21 <evincarofautumn> Um. Well, we can assume one thread that starts at (0, 0), attracted to the bottom right of the program.
04:30:48 <evincarofautumn> Should vertical and horizontal movement be independent?
04:30:55 <evincarofautumn> Otherwise you'd have the problem of rounding.
04:33:15 <pikhq> DUnno.
04:35:47 <evincarofautumn> Well, whatever. This one kind of crapped out on me.
04:35:53 <evincarofautumn> I'll sleep on it later.
05:00:01 -!- dbc has joined.
05:11:03 <evincarofautumn> Hello.
05:11:23 <evincarofautumn> Too late, must sleep.
05:11:29 <evincarofautumn> I'm outta here.
05:11:31 -!- evincarofautumn has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
07:39:01 -!- Sgeo has quit ("Ex-Chat").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:06:42 -!- Iskr has joined.
09:08:13 -!- bsmntbombdood has quit (Read error: 113 (No route to host)).
09:09:19 -!- bsmntbombdood has joined.
09:12:00 <oklopol> at least the user base of lojban is very clear on lojban being made for *actual use*, my arguments about adding modules, and having less words for boring real life objects and more for abstract concepts aren't usually taken that well.
09:12:08 <oklopol> because it's made for use by people
09:12:22 <oklopol> which i find stupid, who cares about people, i want a good language.
09:13:22 <oklopol> lojban is indeed more computer-friendly than many languages, but in my opinion it is way too set in its ways, for instance, you cannot program in it directly, during conversation
09:16:21 <oklopol> attractor based programming seems like a genuinely new idea
09:16:31 <oklopol> i'll go drink coffee ->
09:17:02 <oklopol> remind me to tell evin to fuck themselves if they return, for inventing it before me!
09:17:02 <oklopol> ->
09:30:23 <oklopol> hmph, no i have in mind an incredibly cool language, WITH GRAPHS, but the main idea is still to attract the computational agent towards a certain spot, just to move that spot before it gets there
09:30:26 <oklopol> *now
09:30:44 <oklopol> and that was not an original idea, so it's totally useless
09:31:25 <oklopol> asd
09:37:03 <oklopol> lojban's main problem, imo, is the fact every construct has its own brackets for nesting
09:37:31 <oklopol> i guess it might be easier for humans, again, but it's not very pure
09:38:08 <oklopol> lalna did nesting using rising and falling tones, it was far more beautiful
09:38:35 <oklopol> i should continue it
09:40:24 <oklopol> lojban has a very weird *vocabulary*, nothing else is weird about it
09:41:03 <oklopol> also magenta disappointed me, most of it is quite ordinary and boring
09:41:08 <oklopol> but ais prolly doesn't logread
09:41:16 <oklopol> ehird prolly does
09:41:24 <oklopol> i'm not sure if they care or anyone else cares
09:41:33 <oklopol> hehe
09:41:48 <olsner> please, do continue ;-)
09:42:16 <oklopol> btw, that graph thing is the ultimate uncompilable language: when an agent moves towards an attractor, it always takes the shortest path within the graph :D
09:43:08 <oklopol> you can have any number of agents, and attractors, both have a "color", and agents move towards the closest attractor of same color, or towards a black one
09:43:18 <oklopol> now
09:43:33 <oklopol> nodes may contain operations that modify the graph
09:43:38 <oklopol> well
09:43:42 <oklopol> really quite a lot of things
09:44:07 <oklopol> what this means is, we essentially need to do a bredth-first search for the whole graph for each agent each cycle :)
09:44:23 <oklopol> olsner: i can't! that was it about magent
09:44:23 <oklopol> a
09:44:25 <olsner> so it's pathfinding, walking a vertex, then modifying the graph? how are modifications synchronized between agents?
09:44:41 <oklopol> they happen simulateneously.
09:45:10 <oklopol> show me an example of two actions within a graph that cannot, and i'll explain why you're wrong!
09:45:31 <oklopol> but yes, that's the evaluation model.
09:45:50 <oklopol> there is a lot of attractor teleportation and graph expanding ofc
09:46:19 <olsner> I believe there are useful N-to-N pathfinding algorithms out there, so you might not have to BFS the whole graph every time
09:46:22 <oklopol> i'd love something like this in graphs, it's fairly tiring using a set number of dimentions½!
09:46:40 <oklopol> indeed, and you just have to search new paths.
09:46:50 <oklopol> i mean
09:47:03 <oklopol> if something changes, just check if that has an effect on an agent
09:47:04 <olsner> yeah, graphs are the shit
09:47:28 <oklopol> ...so do you know graphica HAVE I MENTIONED GRAPHICA?
09:47:42 <olsner> no, and I believe you just mentioned it
09:48:05 <oklopol> i'm so gonna paste my n-dimensional hypercube now.
09:48:15 <oklopol> http://www.vjn.fi/oklopol/graphica.txt
09:48:58 <olsner> that looks somewhat like haskell
09:49:11 <olsner> but also not
09:49:33 <oklopol> the graph creation model was inspired by the haskell type system
09:49:37 <oklopol> well, the syntax of it
09:50:17 <oklopol> just the idea that because you can make a tree very nicely with that kinda recursive structure
09:50:27 <oklopol> it might be nice to use that as the base
09:50:27 <oklopol> but
09:50:41 <oklopol> we can make it an arbitrary graph by tagging nodes
09:50:45 <oklopol> and later connecting to a certain tag
09:51:46 <oklopol> i have no idea what happens in that code.
09:51:57 <oklopol> :: tags a node
09:52:05 <oklopol> = redirects the evaluation of a node
09:52:06 <oklopol> umm
09:52:27 <oklopol> it basically means the node is re-evaluated as whatever is the ropd
09:52:30 <oklopol> right operand
09:52:48 <oklopol> so Main = BHCube 5 means we don't make a main node, but a bhcube instead
09:53:02 <oklopol> because main is assumed to be the node created
09:53:33 <oklopol> i've prolly explained all this to you separately too :D
09:53:51 <oklopol> it's just i have a boner for graphica, because it's one of my few *awesome* ideas
10:01:10 <oklopol> i'm getting desperate, if anyone knows of a keyboard where keys aren't in fact dispersed completely randomly, meaning keys in all rows are on top of each other or that the top and the bottom row are, and the middle row is half a key off so it's a diagonal grid kinda, i'm willing to pay anything
10:01:48 <oklopol> i just can't take it, it makes no sense
10:01:59 * oklopol explodes
10:08:35 <oklopol> i don't understand how people can use this thing
10:08:36 <oklopol> i mean
10:08:53 <oklopol> especially if you use the whole home row system
10:09:04 <oklopol> fingers need to bend in very weird positions
10:09:29 <oklopol> do even dvorak keyboards still use these key positions?
10:10:52 <oklopol> http://www.maltron.com/images/keyboards/maltron-usb-dual-l90-uk-mac-dvorak-1-large.jpg <<< there is a god!!!
10:11:02 <oklopol> hmm
11:25:37 -!- UnrelatedToQaz has joined.
11:26:13 <UnrelatedToQaz> hey all
11:41:30 -!- Corun has joined.
11:42:11 -!- Corun has quit (Client Quit).
11:42:22 -!- UnrelatedToQaz has quit ("ChatZilla 0.9.81 [Firefox 3.0b5/2008032620]").
12:13:58 <oklopol> o
12:14:29 -!- olsner has quit ("Leaving").
12:24:06 -!- timotiis has joined.
13:01:11 -!- ihope has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
13:26:54 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
13:29:52 -!- Slereah has joined.
13:59:47 -!- ehird has joined.
14:03:46 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
14:04:25 -!- ehird has joined.
14:13:25 <ehird> <oklopol>lojban is indeed more computer-friendly than many languages, but in my opinion it is way too set in its ways, for instance, you cannot program in it directly, during conversation
14:13:32 <ehird> I eagerly await the pronounciation guide for oklotalk
14:14:58 -!- Slereah_ has joined.
14:15:06 <ehird> <oklopol>but ais prolly doesn't logread09:41:08
14:15:06 <ehird> <oklopol>ehird prolly does
14:15:07 <ehird> we both do
14:15:11 <ehird> religiously
14:15:11 <ehird> ;)
14:19:21 <ehird> oh, and if ais523 is logreading, it seems http://indecenturl.com/ got put up for realz
14:27:32 -!- Corun has joined.
14:30:54 -!- oklofok has joined.
14:32:23 -!- ihope has joined.
14:33:22 <ehird> oklofok: time to logread
14:33:26 <ehird> i replied to your logreads
14:38:48 -!- oklopol has quit (Success).
14:41:03 -!- Slereah has quit (Read error: 110 (Connection timed out)).
14:41:12 -!- ehird has quit ("Leaving").
14:41:27 -!- ehird has joined.
14:52:09 <ehird> Silly idea: Make your cursor transparent, put xeyes in each corner.
15:04:15 <SimonRC> lol
15:08:23 <ehird> SimonRC: Also, use twm.
15:08:50 <SimonRC> "twm"?
15:10:24 <fizzie> "the window manager of last resort", to quote wikipedia.
15:13:19 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
15:15:08 <ehird> if we had Endeavour in here, i'd just do this:
15:15:10 <ehird> .w twm
15:15:14 <ehird> and it'd quote the opening paragraph
15:15:15 <ehird> beat that
15:16:20 <SimonRC> yeah
15:17:49 <ehird> SimonRC: it wouldn't screen-scrape either, oh no
15:17:56 <ehird> it would get the raw wikitext and render that into text
15:18:01 <SimonRC> nice
15:18:42 <ehird> SimonRC: e.g. http://en.wikipedia.org/w/index.php?title=twm&action=raw
15:18:58 <ehird> and then just change things like ''a'' to *a*
15:19:04 <ehird> well
15:19:06 <ehird> ''a'' to _a_
15:19:08 <ehird> since it's italics
15:19:13 <ehird> so:
15:20:05 <ehird> In computing, *twm* (*Tom's Window Manager* or *Tab Window Manager*) is the standard window manager for the X Window System, version X11R4 onwards. twm was created by Tom LaStrange. It is a re-parenting window manager that provides title bars, shaped windows and icon management, and is extensively configurable.
15:20:09 <ehird> If it highlighted links:
15:20:31 <ehird> In <computing>, *twm* (*Tom's Window Manager* or *Tab Window Manager*) is the standard <window manager> for the <X Window System>, version X11R4 onwards. twm was created by Tom LaStrange. It is a <re-parenting window manager> that provides title bars, shaped windows and icon management, and is extensively configurable.
15:21:01 <SimonRC> neat
15:22:06 -!- oklopol has joined.
15:22:12 <ehird> helloklopol
15:23:31 <Slereah_> Hi... klopol.
15:23:34 <oklopol> hello
15:23:41 <oklopol> hieslereah
15:24:38 <SimonRC> kl;;klayhdfoig
15:29:35 <pikhq> 'Lo.
15:30:19 <oklopol> loes
15:32:10 <ehird> SimonRC: asjhdkj
15:32:38 <SimonRC> aoeu
15:36:42 <ehird> ghjk
15:37:38 <oklopol> okokoko
15:38:41 <oklopol> { ´. _a--¤
15:39:13 <SimonRC> oklopol: you have a weird keyboard
15:39:37 <ehird> SimonRC: finnish
15:39:39 <ehird> I think.
15:43:49 -!- timotiis_ has joined.
15:55:58 -!- timotiis has quit (Read error: 110 (Connection timed out)).
16:14:54 -!- timotiis_ has changed nick to timotiis.
16:16:20 <oklopol> yeah finnish
16:16:39 <SimonRC> as I said, a weird keyboard
16:17:19 <oklopol> but ¤ is just the generic currency symbol, it's an encoding issue
16:17:22 <oklopol> nnscript fails
16:17:29 <oklopol> or whatever the name is
16:18:34 <ehird> oklopol: hmm
16:18:38 <ehird> name a good gc algo!
16:18:55 <ehird> wanna do a fun scheme in python again :P
16:32:29 <ehird> oklopol: link to your schm interp
16:32:31 <ehird> i wanna rip it off
16:34:34 <ehird> oklopol: actually
16:34:51 <ehird> oklopol: if i give you one php file that'll add searching to vjn.fi/pb will you add it?
16:34:56 <ehird> then i can just find my own scm each time i want it
16:34:56 <ehird> ;)
16:36:02 <pikhq> ehird: There aren't any. There's only crappy and more crappy.
16:36:02 <pikhq> :p
16:37:11 <ehird> pikhq: :P
16:48:08 <ehird> oklopol: plz?
16:49:27 <oklopol> ehird: i can do a search myself, the biggest problem is having to connect to the page to upload it
16:49:40 <ehird> oklopol: yeah, but this is one php file that does it all for you
16:49:47 <ehird> and supports everything grep does, regexps etc
16:50:32 <oklopol> well, as hard as it is to write a program to search a set of files for a regexp given a built-in support for that exact thing, i think i could manage.
16:51:27 <oklopol> also i'm not sure i want people to search it, i've uploaded a lot of private stuff,.
16:52:33 <ehird> oklopol: heck, the only person who would use it is me, to find your scheme interpreter, once in a blue moon
16:54:08 <ehird> oklopol: also, mine bolds the text that matches and stuffs :P
16:54:59 <ehird> also, i've almost finished writing it
16:55:00 <ehird> :-P
17:00:57 <ehird> oklopol: think it's done.
17:00:59 <ehird> can't test it
17:01:03 <ehird> wanna upload it to test? :<
17:01:42 <ehird> oklopol: well, here it is http://www.vjn.fi/pb/p464335445.txt
17:01:49 <ehird> put it as vjn.fi/pb/search.php and everything SHOULD work
17:04:15 <ehird> oklopol: if it doesn't work, add more oko to it
17:04:16 <ehird> then it should
17:04:26 <ehird> hmm wait
17:04:28 <ehird> it's not ready yet
17:04:36 <ihope> Hum. What did I say my password for the wiki is?
17:04:50 <ehird> oklopol: http://www.vjn.fi/pb/p336232313.txt fixed
17:04:53 <ehird> ihope: 'esoteric'
17:04:55 <ehird> but it doesn't work
17:05:15 <ihope> I'll try it a few more times.
17:05:34 <ihope> Hmm. Subtle typing error, I guess.
17:06:04 <ehird> ihope: Don't worry. I'll work it out for you!
17:06:25 <ihope> I already figured it out. :-P
17:06:30 <ehird> ihope: What is it?
17:06:45 <ihope> "esoteric", of course.
17:07:04 <ehird> ihope: Which wiki account is this?
17:07:09 <ihope> ihope127.
17:07:18 <ehird> ihope: The password for Ihope127 is not: esoteric
17:07:22 <ehird> I just tried it. Multiple times.
17:07:31 <ihope> You might stumble upon a revelation that allows you to log in as me eventually. :-P
17:07:40 <ihope> You're right. It's not "esoteric".
17:08:07 <ehird> it's not: "esoteric" either
17:08:10 <ehird> it's not even: 'esoteric
17:08:10 <ihope> "esoteric" is just the mnemonic.
17:08:31 <ehird> ihope: sotric?
17:08:36 <ehird> sotearic?
17:09:02 <ihope> |_00|<, 1'|\/| &1\/1|\|& `/0|_| |\/||_|(|-| 0|= +|-|3 1|\||=0|2|\/|4+10|\| `/0|_| |\|33|).
17:09:04 <ehird> oklopol: plz?
17:10:08 <ehird> oklopol: i dun wrote it gud
17:10:15 <ihope> Now quit trying to log in as me :-P
17:10:44 <ehird> ihope: Oh come on, I'm not THAT good at leetspeak
17:20:13 <oklopol> me leaves!
17:20:14 <oklopol> ->
17:20:16 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
17:20:54 <ehird> sghsfgsdgfhdfg
17:28:39 -!- Corun has quit ("This computer has gone to sleep").
17:56:58 <ehird> hmm
17:57:01 <ehird> anyone know grep
17:57:03 <ehird> if so
17:57:09 <ehird> how can i reverse the filename and regexp arguments?
17:57:15 <ehird> specifically, i want to put the regexp after --
17:57:19 <ehird> so no options are interpreted in it
17:57:22 <ehird> like, -+
17:57:58 -!- oklopol has joined.
17:59:10 <ehird> oklopol: yay you're back
17:59:15 <ehird> i actually made my pastey search work
17:59:16 <ehird> i tested it
17:59:17 <oklopol> yes.
17:59:18 <ehird> :D
17:59:30 <ehird> there's only one teeeeny bug i need to fix and even then it doesn't affect anything
17:59:33 <oklopol> well, good for you!
17:59:38 <ehird> oklopol: now put it up
17:59:39 <ehird> :<
17:59:48 <oklopol> whhhhell
17:59:50 <ehird> i'll paste it
17:59:56 <oklopol> i'm not sure i want people to search the pastespace
17:59:57 <oklopol> because
17:59:59 <oklopol> i have
18:00:00 <oklopol> private
18:00:01 <oklopol> stuff
18:00:02 <oklopol> in there
18:00:11 <oklopol> perhaps i could refresh the folder
18:00:13 <oklopol> or smth
18:00:17 <ehird> hmm
18:00:22 <ehird> refresh the folder but keep the scheme interp
18:00:22 <ehird> :P
18:00:25 <ehird> heck
18:00:27 <oklopol> :D
18:00:30 <ehird> oklopol: gimme the paster source
18:00:32 <ehird> i'll add private pastes
18:00:37 <ehird> their url will be longer and they won't be searched
18:00:44 <ehird> should only take ~5 min
18:00:45 <oklopol> i could make a search for logged in users with admin levels and search for ya?
18:01:00 <ehird> oklopol: whole point is don't wanna botehr you :P
18:01:06 <ehird> but if you gimme the source i'll just add private pastes
18:01:11 <ehird> actually
18:01:13 <ehird> neat idea:
18:01:16 <ehird> private pastes keep the current urls
18:01:21 <ehird> non-private pastes get different-looking urls
18:01:25 <ehird> and the search ignores private pastes
18:01:30 <ehird> oklopol: then you don't need to do anything
18:01:33 <ehird> because all current pastes get private
18:01:36 <ehird> and kept
18:01:50 <oklopol> the pb is not entirely mine, and officially, it's not at all mine.
18:02:04 <oklopol> you can make your own pastebin and put your search in there maybe? :)
18:02:08 <ehird> oklopol: i'm sure you'll be killed for improving it without any effect
18:02:09 <ehird> :P
18:02:22 <ehird> since this wouldn't require any kind of moving etc etc
18:02:24 <oklopol> volimo does not like people touching his code
18:02:35 <oklopol> but yeah, i guess it wouldn't be that bad, it's just i don't want a search there.
18:02:44 <oklopol> so...
18:02:50 <ehird> oklopol: why not, if only public-marked pastes are searched
18:04:37 <oklopol> yeah it's no prob then, but i don't have time to add the functionality
18:04:45 <oklopol> and you cannot do it, sry.
18:04:59 <ehird> oklopol: :P
18:05:05 <oklopol> what i should be doing is to read about web programming :D
18:05:19 <ehird> oklopol: in php? you'd rather rot out your brain, i assure you
18:05:31 <oklopol> what in php?
18:05:35 <ehird> web programming in php
18:05:41 <oklopol> the course includes quite a lot of languages
18:06:04 <oklopol> multiple for asp and cgi, javascript, applets, php, perl, ruby etc.
18:06:30 <ehird> oklopol: so if i make a pastebin just like the vjn.fi one but with awesome searchy and private pastes and coolness itself and ... will you use it? :P
18:06:34 <ehird> or at least put your scheme interp on it
18:07:23 <oklopol> i don't see why i should use it, i can just add the search at some point myself :|
18:07:34 <oklopol> it's like 3 lines of code
18:07:49 <ehird> oklopol: :P
18:07:54 <oklopol> grep_with_line_numbers()
18:07:57 <ehird> it would have syntax highlightinggg....
18:08:13 <oklopol> just call it like that, and it'll make the form to ask for the regexp, then search
18:08:23 <oklopol> php is just that awesome
18:08:26 <ehird> oklopol: ah yes but mine links to the pastes and seperates by filename and it's all fancy
18:08:34 <ehird> and it's only like 30 lines
18:08:34 <ehird> :P
18:09:12 <oklopol> (link_to_paste_where_regexp_was_found line_number_of_first_occurrance "\n")*
18:09:14 <oklopol> ?
18:09:33 <ehird> oklopol: noes
18:09:36 <ehird> mine is far more awesome
18:09:40 <oklopol> aha
18:09:44 <oklopol> well, tell me
18:09:45 <ehird> and you'll only see how awesome if that's uploaded as search.php
18:09:46 <ehird> :D
18:09:52 <ehird> its hard to explain
18:09:55 <ehird> but the output is truly awesome.
18:09:58 <oklopol> a-ha
18:10:01 <ehird> nicest search interface, evar
18:10:06 <oklopol> just tell me what it is.
18:10:12 <ehird> oklopol: it even sorts it, damnit
18:10:12 <oklopol> nothing is hard to exlain
18:10:14 <oklopol> *explain
18:10:23 <ehird> yeah, oko is
18:10:26 <ehird> that searcher is a bit like oko
18:10:46 <oklopol> you called the primitive sort function? how the fuck did you manage to do that ;)
18:11:03 <oklopol> just tell me exactly what it output
18:11:04 <oklopol> s
18:11:20 <ehird> oklopol: uhh i could paste loads of html i guess
18:11:30 <oklopol> do
18:11:35 <ehird> but just put it up for like 3 seconds and give it a search like: '^class '
18:11:39 <ehird> and see the awesome
18:11:50 <ehird> and then like make it only available to admins
18:11:52 <ehird> :P
18:11:55 <ehird> (which IS like 3 lines)
18:12:02 <ehird> (i assume)
18:12:52 <oklopol> i'm not going to do that especially if you won't tell me what's so awesome about it.
18:13:48 <ehird> oklopol: it sorts it right, it handles everything like you'd expect, the links are in a nice place and are nicely standing-out, the included matching lines display is great, ...
18:14:10 <oklopol> so give me the bnf representing the output, man
18:14:23 <oklopol> (link_to_paste_where_regexp_was_found line_number_of_first_occurrance "\n")* <<< can't imagine anything better than this
18:14:26 <ehird> oklopol: that would make no sense
18:14:32 <ehird> and yeah, it is better than that
18:14:34 <ehird> it lists matches great
18:14:39 <ehird> seriously, just goddamn upload it and look at it
18:14:40 <ehird> for like 3 seconds
18:14:42 <ehird> then remove it
18:14:54 <oklopol> (link_to_paste_where_regexp_was_found line_number_of_occurrance+ "\n")* ?
18:14:57 <ehird> no
18:15:11 <oklopol> sorry, man, no sale.
18:15:17 <ehird> oklopol: it's more like
18:15:31 <ehird> <b>Paste <a href="...">NUMBER</a></b>
18:15:32 <ehird> then
18:15:33 <ehird> in monospaced
18:15:42 <ehird> (line_number occurance "\n")+
18:15:42 <oklopol> what's number?
18:15:46 <ehird> oklopol: paste number
18:15:48 <ehird> like 23872349
18:15:59 <ehird> but upload it and try it out
18:16:00 <ehird> it's great
18:16:10 <oklopol> ("Paste" link_to_paste_where_regexp_was_found (line_number_of_occurrance "\n")+ "\n")*
18:16:14 <ehird> oklopol: nope
18:16:32 <ehird> you forgot the styling (which makes it look a lot nicer believe me - i tweaked with it a bit)
18:16:35 <ehird> and the actual occurance
18:16:37 <ehird> etc etc etc
18:16:47 <ehird> see this is why it's hard to explain, it's great, try it out
18:16:56 <oklopol> i don't care much for styling
18:17:13 <ehird> oklopol: it's not STYLING
18:17:15 <ehird> it's just marking
18:17:18 <ehird> it makes it a lot easier to skim the results
18:17:20 <oklopol> show me an example, if you've tested it, you should have one
18:17:23 <ehird> & click quickly
18:17:30 <ehird> and i tested it but it was in my cache and it's gone now
18:17:37 <ehird> and i don't have good enough test data to demonstrate it properly
18:18:03 <oklopol> i just want to see how it shows its findings.
18:18:13 <oklopol> i can't see how it can be different from what i said
18:18:17 <oklopol> but i hear it's far more awesome
18:18:24 <ehird> oklopol: if you don't get it then you'll just need to look at it
18:18:28 <ehird> because i have explained it in various ways
18:18:59 <oklopol> (<b>Paste <a href="...">NUMBER</a></b> (line_number occurance "\n")+ paste_separator)+
18:19:05 <oklopol> you explained something like this
18:19:09 <ehird> oklopol: kiiiiind of
18:19:14 <ehird> but you need to see it to 'get' it, really
18:19:15 <oklopol> this is exactly what i said
18:19:19 <oklopol> a-ha
18:19:32 <oklopol> will you give me the source for upload?
18:19:34 <oklopol> or did you already?
18:19:53 <oklopol> hmm
18:20:02 <oklopol> i guess if you give me the source i could just look at that
18:20:03 <ehird> i'll paste it
18:20:06 <ehird> to make sure it's the latest version
18:20:17 <ehird> also, the source undersells it
18:20:18 <ehird> believe me
18:20:21 <ehird> oklopol: http://www.vjn.fi/pb/p526561254.txt
18:20:38 <oklopol> so basically, i put that up in the same folder as search.php or smth, and then open it in browser?
18:20:41 <ehird> totally honest when i say it's the best search interface for anything i've used
18:20:49 <ehird> oklopol: you put that up in /pb/
18:20:55 <ehird> and then go to http://vjn.fi/pb/search.php
18:21:02 <ehird> and enter a regexp - for example, '^class '
18:21:08 <ehird> and apply pressure to the button
18:21:22 <oklopol> so exactly what i said?
18:21:47 <ehird> oklopol: yes
18:21:47 <ehird> :)
18:22:57 <ehird> oklopol: it must be in /pb/ though
18:23:02 <ehird> and it must be called search.php
18:23:04 <ehird> otherwise breakage
18:24:37 <oklopol> okay, so it was (link_to_paste (line_number line_content separator)+ separator)+
18:24:57 <oklopol> that was hard tell me because..? :D
18:25:11 <ehird> oklopol: wait, how did you check that -- it's not on the server
18:25:12 <ehird> :P
18:25:17 <oklopol> oh yeah it is
18:25:26 <ehird> oklopol: how can it work, it links to search.php directly
18:25:39 <oklopol> yes, but i illegally changed the code so it works :|
18:25:42 <ehird> haha
18:25:45 <oklopol> so you can't use it before i remove it!!
18:25:48 <ehird> oklopol: now will you add it :P
18:25:54 <ehird> plzzzz, it's awesoe
18:25:55 <ehird> *awesome
18:26:05 <ehird> and i'll only use it to get the scheme and other code you've linked
18:26:07 <ehird> promise <3
18:27:27 <oklopol> http://www.vjn.fi/pb/p435344445.txt <<< lolwat :D
18:28:06 <ehird> oklopol: beats me, will you put the search up now and i'll love you forever and ever :p
18:28:11 <oklopol> http://www.vjn.fi/pb/p222552612.txt <<< this has some history related notes in finnish
18:28:24 <oklopol> it is up, you just can't find it! :D
18:28:32 <ehird> oklopol: it's not called oko.php
18:28:34 <ehird> or okosearch.php
18:28:36 <ehird> or searchoko.php
18:29:07 <ehird> oklopol: a hint plz? :<
18:29:22 <oklopol> eh, you think the random generator in my head is that logical?
18:29:44 <ehird> oklopol: hint :<
18:30:00 <oklopol> it's a random set of characters
18:30:05 <oklopol> well, pronouncible
18:30:12 <oklopol> *pronouncable
18:30:16 <ehird> oklopol: it's not saf
18:30:17 <oklopol> *pronouncoble
18:30:18 <ehird> *sadf
18:30:26 <ehird> oh just link it :P
18:30:32 <ehird> i wanna see how it works with a real data set actually
18:30:35 <ehird> my little baby!
18:30:47 <oklopol> you can't find it. and no i won't link it, really, there's private stuff in there.
18:31:12 <oklopol> most of it in finnish, but i'm a very paranoid guy. make your own pastebin : D
18:31:28 <ehird> oklopol: i can't find the code you give to me using my own pastebin :>
18:31:32 <oklopol> but really, i gotta check what the bin contains, it seems people outside vjn are using it nowadays :|
18:31:37 <ehird> also: why not just leave it there for 3 minutes, sheesh ;P
18:31:45 <ehird> i can hardly read anything private in 3 minutes
18:31:52 <ehird> also, reading private things is not what us unicorns do
18:31:56 <oklopol> you can search all.
18:32:12 <oklopol> and you probably would, you sneaky bastard!! :D
18:32:24 <ehird> oklopol: no i wouldn't, sheesh, you think i care about anything personal about you? :p
18:32:54 <oklopol> that has nothing to do with this, make you own pb :)
18:33:02 <ehird> oklopol: i can't find the code you link me with my own pb
18:34:13 <oklopol> btw you were right, it was different from what i said, you also printed the line
18:34:27 <ehird> oklopol: i was right then, i must be right now
18:34:27 <oklopol> but that was really a defect in my bnf, i meant to put content there
18:34:29 <ehird> so link me :D
18:34:44 <ehird> i just wanna see what it looks like on a data set bigger than 3 test files..
18:34:47 <oklopol> sorry, doesn't exist anymore.
18:34:51 <oklopol> i can paste you the result.
18:34:53 <ehird> and find the scheme helpfully while i'm at it
18:35:01 <ehird> oklopol: :( alright then
18:35:06 <ehird> did you find the scheme?
18:35:41 <oklopol> http://www.vjn.fi/pb/p255331634.txt <<< this may be some version of it
18:36:10 <ehird> oklopol: yep! any others there or was that it
18:36:13 <oklopol> http://www.vjn.fi/pb/p213151116.txt <<< thi too
18:36:17 <ehird> and .. can you paste the search results then
18:36:17 <ehird> :D
18:36:20 <oklopol> no other containing sch.
18:36:24 -!- Corun has joined.
18:36:30 -!- Sgeo has joined.
18:36:31 <ehird> also, those two are identical
18:38:06 <ehird> oklopol: now paste the search results
18:38:09 <ehird> so i can see my coool app
18:38:44 <oklopol> http://www.vjn.fi/pb/p234546123.txt
18:38:59 <oklopol> they are exactly the same? you checked
18:39:00 <oklopol> ?
18:39:56 <ehird> at a glance yes
18:40:29 <ehird> oklopol: that's not a long search
18:40:30 <ehird> :P
18:40:31 <ehird> however
18:40:40 <ehird> my search is kinda cool right mabye you should put it up for admins only
18:40:47 <ehird> and then whenever i yell at you you can just do a quick search
18:40:47 <ehird> :p
18:41:38 <oklopol> peeeeeerhaps i could, perhaps i could... but actually making it admin-only requires *some* work
18:42:04 <oklopol> anyway, opening a power-point thingie now, so see you in a while ->
18:54:53 -!- Judofyr has joined.
19:02:45 <ehird> Judofyr: so you like ruby a lot - coderay sucks. what can i use?
19:02:46 <ehird> pygments is great.
19:02:55 <ehird> it actually, you know. supports languages.
19:06:36 <ehird> Judofyr: no?
19:30:12 <Judofyr> ehird: I'm back!
19:30:36 <Judofyr> Ultraviolet is awesome!
19:30:54 <Judofyr> ehird: http://ultraviolet.rubyforge.org/
19:32:45 <Judofyr> uses TextMate-themes :)
19:32:53 <Judofyr> but your not there right now, or?
19:47:34 <ehird> back
19:47:46 <ehird> Judofyr: i'd rather something that didn't use textmate-themes
19:47:50 <ehird> the yare the thing that sucks about TM
19:47:50 <ehird> :)
19:47:59 <Judofyr> what?
19:48:06 <Judofyr> they are awesome!
19:48:07 <Judofyr> :P
19:48:25 <ehird> also, i'd rather it didn't use textmate syntax files
19:48:26 <ehird> they suck
19:48:27 <ehird> :)
19:48:35 <ehird> right now i'm just going to shell out to pygments
19:49:31 <ehird> Judofyr: Oh, and feel free to tell the author of ultraviolet that hogging two-character command names is bad.
19:49:32 <Judofyr> do what you like; I like both TM syntax + themes :P
19:49:45 <ehird> Especially for something as unimportant as a syntax highlighter
19:49:56 <Judofyr> I don't know the author :P
19:50:00 <ehird> and that abbreviating namespaces sucks highly, and that it should be 'Ultraviolet' not 'Uv'
19:50:20 <ehird> Judofyr: Ever seen TextMate's Haskell support? Yeeeahhh.
19:50:45 <ehird> Personally I want to shell out to emacs and somehow get HTML out of that - Since the highlighters are arbitary emacs lisp code, it handles just about everything
19:50:51 <ehird> Even 2D languages and similar
19:51:04 <Judofyr> I don't use Haskell, so I don't care about that :)
19:51:24 <Judofyr> as long as it does JS, HTML, CSS and Ruby I'm fine :)
19:53:21 <ehird> Judofyr: I think I'll just make this expect a class with a .highlight(source) method and expect html back
19:53:24 <ehird> :-P
19:53:38 <Judofyr> ^^
19:53:53 <Judofyr> what are you doing?
19:54:04 <Judofyr> something cool? :P
19:54:35 <ehird> Judofyr: pastebin
19:54:59 <ehird> i usually favour python over ruby these days. But Rack is close enough to WSGI and far enough away from the ugly Ruby frameworks that I'm considering trying it out :-)
19:55:13 <Judofyr> Rack is awesome
19:55:25 <Judofyr> are you using Rack::Request & Response too?
19:55:49 <ehird> Judofyr: Dunno. Should I?
19:55:58 <ehird> A Hash isn't very nice to play with, that's true.
19:56:11 <ehird> Judofyr: Also, if you like Rack you gotta give credit to ruby - it's almost a 100% rip-off of WSGI :)
19:57:20 <Judofyr> ehird: It's probably easier to work with Req & Res than a Hash :P And I know that Rack is based on WSGI :)
19:57:29 <ehird> Judofyr: 'based on', heh.
19:57:42 <ehird> you can port wsgi apps almost 1:1
19:57:48 <Judofyr> have you read the slides? http://chneukirchen.org/talks/euruko-2007/chneukirchen-euruko2007-introducing-rack.pdf
19:57:59 <Judofyr> it's an example of Req & Res there :)
19:58:00 <ehird> no, i don't like presentations
19:58:10 <ehird> i like good rdocs
19:58:56 <Judofyr> then you better look at the source...
19:59:08 <ehird> Judofyr: I said rdocs
19:59:10 <ehird> http://rack.rubyforge.org/doc/
19:59:11 <Judofyr> they're poorly documented :(
19:59:45 <Judofyr> the online doc isn't updated for 0.3...
19:59:58 <ehird> I forgot how much I hate the web
20:00:00 <ehird> :)
20:01:27 <Judofyr> yeah, I find web-developement booring..
20:01:32 <Judofyr> booooooring*
20:02:26 <ehird> Judofyr: but the output fun.
20:02:48 <Judofyr> yeah :)
20:03:11 <ehird> great mail I just got from nearlyfreespeech.net: "Hello, <quote> Yes. Thanks, Jeff"
20:03:56 <Judofyr> lol
20:04:26 <Judofyr> what did you ask about?
20:04:47 <ehird> Judofyr: web apps that weren't PHP or CGI
20:04:53 <ehird> i asked if they weren't supported
20:05:16 <ehird> which is understandable, although they run seperate DB instances and are often faster than a VPS or similar etc they're still a shared host
20:05:28 <ehird> the prices are niiiice though
20:05:50 <Judofyr> the best thing is to have your own server, though
20:07:53 <ehird> Judofyr: as in a literal dedi?
20:07:55 <ehird> a friend has one of them.
20:08:29 <Judofyr> great for testing out things and be able to do whatever you like
20:09:02 <ehird> Judofyr: take a look at nearlyfreespeech.net though
20:09:05 <ehird> it's not like the typical shared hosts
20:09:25 <ehird> Judofyr: it's charged based on your usage
20:09:30 <ehird> $10=1GB
20:09:40 <ehird> but if you get an influx of traffic it doesn't drain the bank
20:09:44 <ehird> because of how the system woorks
20:09:44 <Judofyr> traffic or storage?
20:09:47 <ehird> Judofyr: traffic
20:09:57 <Judofyr> that sounds good
20:10:02 <Judofyr> but only PHP + CGI?
20:10:12 <ehird> Judofyr: it IS a shared host
20:10:13 <ehird> but yes
20:10:17 <ehird> however, they support tons of cgi languages
20:10:23 <ehird> 12+ according to them
20:10:26 <ehird> and the versions appear to be recent
20:10:27 <Judofyr> like Ruby?
20:10:36 <ehird> yes
20:10:39 <ehird> even Haskell
20:10:49 <ehird> http://example.nfshost.com/versions.php lists the versions for the most popular languages
20:11:10 <Judofyr> 1.8.6 isn't bad..
20:11:52 <ehird> Judofyr: oh cool:
20:11:53 <ehird> Data Transfers (Bandwidth): Starts at $1.00 per gigabyte and goes down.
20:11:57 <ehird> "What does "and goes down" mean? It means that we keep track of how much bandwidth you use; the more you use, the cheaper it gets:
20:11:58 <ehird> "
20:12:11 <Judofyr> übercool
20:13:01 <ehird> Judofyr: one of the main things they toot about it though is that they don't censor (could you guess from the name? totally suprising.)
20:13:17 <ehird> it would be nice to be able to run non-PHP&non-CGI languages though
20:13:25 <ehird> i guess they're just not popular enough to warrant them doing it yet
20:13:35 <ehird> also, loads of the long-running process solutions are quite unstable and eat memory
20:13:41 <Judofyr> well, right now I'm fine with my own server :
20:13:42 <Judofyr> :) *
20:14:57 <ehird> Judofyr: i'm with slicehost right now, so it's a vps
20:15:05 <Judofyr> slicehost looks fine
20:15:23 <ehird> but they don't seem to be very strong proponents of the 'no censorship' maxim
20:15:34 <ehird> i mean, their TOS says non-illegal stuff, but they don't seem to make it one of their points
20:18:16 -!- calamari has joined.
20:18:25 <calamari> hi
20:18:40 <Judofyr> hi ):
20:18:43 <Judofyr> :) *
20:19:16 -!- atsampson has quit ("nope, turns out I do still need a -rt kernel...").
20:21:20 <Judofyr> anyone tried Neko?
20:21:55 <calamari> Judofyr: this? http://en.wikipedia.org/wiki/Neko_%28programming_language%29
20:22:06 <Judofyr> yes
20:22:31 -!- atsampson has joined.
20:22:47 <calamari> first I've heard of it :)
20:23:02 <calamari> looks like php
20:23:23 <ehird> calamari: i think $ means 'primitive'
20:23:36 <ehird> People seem to use http://www.haxe.org/ which compiles to Neko's VM.
20:25:14 <calamari> compile to javascript.. interesting idea
20:25:58 <Judofyr> and flash
20:26:31 <Judofyr> chirrp is built with haXe
20:26:40 <Judofyr> http://hackety.org/2008/04/23/yourEightSecondCallingCard.html
20:42:13 -!- Judofyr_ has joined.
20:51:08 <ehird> oklopol: i haff a cool language in the works
20:51:11 <ehird> it's kind of like oklotalk
20:51:12 <ehird> but not
20:55:51 <ehird> oklopol: take a look
20:55:51 <ehird> (set '_cdr'
20:55:51 <ehird> {(x i)
20:55:51 <ehird> (if (== i (- (length x) 1))
20:55:51 <ehird> []
20:55:52 <ehird> (++ [(at x i)] (_cdr x (+ i 1))))})
20:55:54 <ehird> (set 'cdr'
20:55:56 <ehird> {(x) (_cdr x 0)})
20:58:41 <ehird> oklopol: it has message sendy thingies
20:58:45 <ehird> but it supports any number of args
20:59:39 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
21:01:31 <ehird> oklopol: likey
21:01:32 <ehird> ?
21:03:14 <oklopol> ooo
21:03:45 <ehird> oklopol: all i have to do now is implement BORING THINGS like strings
21:03:49 <ehird> and get the actual primitives down
21:03:51 <ehird> and the parser
21:03:54 <ehird> wanna help? :PPPP
21:04:01 <oklopol> i have no idea what that code does
21:04:02 <ehird> also, i call names 'toms'
21:04:04 <ehird> geddit
21:04:04 <ehird> 'atom'
21:04:05 <ehird> 'tom'
21:04:07 <ehird> oklopol: and
21:04:09 <ehird> it's lisp cdr!
21:04:17 <ehird> (cdr [1,2,3]) -> [2,3]
21:04:23 <ehird> set does what you expect
21:04:27 <ehird> {(args) code} is a function
21:04:29 <oklopol> well, duh, got i have no idea how it works
21:04:34 <ehird> ++ is append
21:04:39 <oklopol> yeah do explain
21:04:44 <ehird> oklopol: which part don't you get
21:04:46 <ehird> i'll translate to python
21:05:00 <oklopol> (x i) <<< what's x
21:05:14 <oklopol> oh
21:05:26 <ehird> oklopol: also, (at LST INDEX)
21:05:28 <ehird> is LST[INDEX]
21:05:52 <ehird> hmm
21:05:55 <ehird> i haff bug;
21:05:56 <ehird> :DD
21:06:02 <oklopol> i didn't get it's {(args) (expr) (expr)...}
21:06:16 <oklopol> mainly cuz i didn't read it through and didn't see the actual cdr
21:06:19 <oklopol> just _cdr
21:06:46 <ehird> oklopol: okay wait
21:06:47 <ehird> look:
21:07:24 <ehird> (set 'drop' {(i x) (if (== i (length x)) [] (++ [(at x i)] (drop (+ i 1) x)))})
21:07:31 <ehird> (set 'cdr' {(x) (drop 1 x)})
21:07:34 <ehird> oklopol: drop is like haskell drop
21:07:38 <ehird> drop 1 [1,2,3] => [2,3]
21:07:43 <ehird> drop 5 [1,2,3,4,5,6] => [6]
21:07:44 <ehird> etc
21:07:50 <ehird> so, in that case:
21:07:54 <ehird> 'set' is a primitive function
21:07:57 <ehird> but '==' is a message
21:07:59 <oklopol> yeah the other raeson was the bug
21:08:02 <oklopol> *reason
21:08:03 <ehird> 'length' is a message, so is '++'
21:08:12 <ehird> 'drop' is a function
21:08:15 <oklopol> couldn't deduce "at", because it made no sense
21:08:15 <ehird> 'at' is a message
21:08:18 <ehird> 'if' is a function
21:08:21 <ehird> oklopol: yeah
21:08:28 <ehird> if in (A B C ...), A is not a function
21:08:32 <ehird> and it's a Tom instead
21:08:40 <ehird> we send A to B with C ... as the arguments
21:08:53 <ehird> so (at [1,2,3] 0) sends 'at' to [1,2,3] with arg 0
21:09:17 <oklopol> so exactly like oklotalk--?
21:09:27 <oklopol> do you generalize over n args?
21:09:45 <ehird> oklopol: yes, n args
21:09:48 <ehird> but not exactly like oklotalk--
21:09:53 <ehird> i'll show you the impl
21:09:53 <oklopol> what's different?
21:09:57 -!- timotiis_ has joined.
21:10:01 <oklopol> oh
21:10:23 <ehird> oklopol: http://www.vjn.fi/pb/p463212552.txt
21:10:27 <ehird> all that needs to be added is
21:10:29 <ehird> 1. more primitives
21:10:32 <ehird> 2. more messages
21:10:32 -!- timotiis has quit (Nick collision from services.).
21:10:33 <ehird> 3. a parser
21:10:34 <ehird> :P
21:10:37 -!- timotiis_ has changed nick to timotiis.
21:11:20 <oklopol> class Koed(Lst): :P
21:12:02 <ehird> oklopol: my little homage to okoness
21:12:05 <ehird> or should it be okoity
21:12:09 <oklopol> what does it mean to send "at" to an object with arg 0?
21:12:21 <oklopol> how is that received?
21:13:01 <ehird> oklopol: welllll, in python (at X 0)
21:13:02 <ehird> translates to
21:13:11 <ehird> X.sent('at', [Num(0)])
21:13:19 <ehird> oklopol: this is done in Koed's eval
21:13:22 <ehird> look at it :)))
21:13:59 <oklopol> doesn't help me
21:14:03 <oklopol> how is it received?
21:14:11 <ehird> oklopol: whut do you mean
21:14:12 <oklopol> as a 2-tuple?
21:14:17 <ehird> oh
21:14:18 <ehird> uhhh
21:14:19 <ehird> what
21:14:20 <ehird> no
21:14:23 <ehird> X.sent('at', [Num(0)])
21:14:23 <oklopol> if you send "at", and give 0 as param
21:14:27 <ehird> yes
21:14:27 <oklopol> how would you receive that?
21:14:32 <oklopol> in the functino
21:14:34 <ehird> oklopol: read Koed's eval!!!!
21:14:34 <oklopol> function
21:14:42 <ehird> and
21:14:45 <ehird> functions are specially handled
21:14:54 <oklopol> please just who me in that-language code
21:14:56 <ehird> there's no way to make a message-reciever in user code
21:14:57 <ehird> yet
21:15:00 <oklopol> oh
21:15:03 <ehird> but
21:15:06 <ehird> it will look something like this
21:15:09 <oklopol> so "i dunno" would've been the answer
21:15:18 <ehird> (recv {(msg args) ...})
21:15:23 <oklopol> ah
21:15:26 <oklopol> so as a 2-tuple
21:15:26 <oklopol> thans
21:15:28 <oklopol> thanks
21:15:33 <ehird> oklopol: not as a 2-tuple
21:15:34 <ehird> as 2 args
21:15:37 <ehird> it has real args, remember?
21:15:51 <oklopol> if it gets zero args, how do you receive
21:15:52 <oklopol> ?
21:16:03 <oklopol> (msg [])
21:16:07 <ehird> oklopol: yes
21:16:10 <oklopol> and one is (msg [arg])
21:16:15 <ehird> yes
21:16:15 <oklopol> two is (msg [arg arg])
21:16:15 <ehird> BUT
21:16:20 <ehird> they're real arguments
21:16:21 <ehird> because
21:16:23 <ehird> {(a b c) ...}
21:16:24 <oklopol> okay, so special syntax for 2-tuple
21:16:28 <ehird> it's not passed as a tuple DAMNIT
21:16:34 <oklopol> who cares? same thing
21:16:36 <ehird> {(a b c) ...}
21:16:37 <ehird> is
21:16:39 <ehird> (lambda (a b c) ...)
21:16:43 <ehird> they're real, honset-to-god args
21:17:28 <oklopol> i don't see a difference
21:18:02 <oklopol> the point wwas
21:18:03 <oklopol> *was
21:18:09 <oklopol> just to get what the gist is
21:18:24 <oklopol> i don't care how much you wanna emphasize the fact it's not a list
21:18:25 <ehird> oklopol: but it's different from ot--
21:18:29 <ehird> i hope you agree :<
21:18:35 <oklopol> to me, it's a list, but you cannot pattern match on it with a var.
21:18:58 <oklopol> so it's just a list with functionality stripped
21:19:36 <oklopol> ehird: yeah it's a bit different
21:19:47 <ehird> oklopol: nooo it's like scmtalk
21:20:42 <oklopol> function calling is pretty much always the same, you send an argument object to the function.
21:20:50 <oklopol> sometimes that argument object is fixed to be a list
21:21:09 <oklopol> and pattern matching can make a conceptual distinction between a real list, and "multiple arguments"
21:21:46 <ehird> oklopol: i wonder what would happen if you made a language that was integrated with pygame
21:21:46 <ehird> like
21:21:48 -!- calamari has quit ("Leaving").
21:21:48 <ehird> okogame
21:21:51 <ehird> and then wrote pong in it
21:21:55 <ehird> i predict asplosions
21:22:10 <oklopol> but when you said something about messages and params being separate, i thought you might have something special in mind for those, kinda like oo does with method names... but you didn't, it was a list, which is why i said "so it's a 2-tuple" or whatever i said
21:23:12 <ehird> oklopol: it is method names
21:23:13 <ehird> thingy
21:24:06 <oklopol> yes, i know it is, you explained about the tuple thing
21:24:15 <oklopol> so
21:24:22 <oklopol> how does {(a b c) ...} workl
21:24:23 <oklopol> *work
21:24:24 <oklopol> i mean
21:24:33 <oklopol> if you do a call (a b c d e f) and a can be called
21:24:45 <oklopol> what arg-tuple is a called with?
21:24:47 <oklopol> if it can be called
21:25:32 <oklopol> *is "a" called
21:25:35 <ehird> oklopol: it's called with (b c d e f)
21:25:38 <ehird> and crashes and burns :D
21:25:42 <oklopol> oh
21:25:45 <oklopol> and if a can't be called
21:25:47 <oklopol> then
21:25:51 <ehird> oklopol: then it depends
21:25:52 <ehird> if it's a tom
21:25:55 <ehird> then we do the sendy sendy dance
21:25:56 <oklopol> b is called with (a [c d e f])
21:26:01 <ehird> otherwise, we buhrn
21:26:01 <ehird> and n
21:26:02 <ehird> and no
21:26:07 <ehird> message sends are NOT CALLS
21:26:08 <ehird> NOT NOT CALLS
21:26:16 <ehird> they're totally seperate
21:26:18 <oklopol> what's the difference?
21:26:31 <ehird> functions <-- things you can applyerate --> things that respond to things
21:26:56 <ehird> (recv {(msg args) ...}) <-- recv just lets you give it a function and it gives you a responder that just forwards it to that function
21:27:25 <oklopol> forwards what to that function?
21:27:36 <oklopol> whatever it's called with?
21:27:39 <ehird> oklopol: the message and the arguments
21:28:21 <oklopol> okay, so there's two kinds of things which can be sent stuff, functions, which are called, and ***'s, which are sent messages?
21:28:35 <ehird> oklopol: yes
21:28:41 <oklopol> ah.
21:28:45 <ehird> oklopol: the ***s native tounge is python
21:28:48 <ehird> look at def sent()
21:29:03 <ehird> oklopol: actually, here's one way to put it
21:29:06 <ehird> when you do {...}
21:29:13 <ehird> you get a *** that responds to only one message: apply
21:29:25 <ehird> and the arguments you give with that message are passed to the code block.
21:29:32 <ehird> oklopol: and that's *actually how it's implemented*
21:29:32 <ehird> so
21:29:38 <ehird> ({...} b c)
21:29:39 <ehird> is
21:29:45 <ehird> (apply {...} b c)
21:29:51 <ehird> or in python:
21:29:59 <ehird> ({...} b c) -> {...}.sent('apply', [b,c])
21:30:04 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
21:30:06 <ehird> (a b c) -> a.sent(b, [c])
21:30:08 <ehird> err no
21:30:10 <ehird> b.send(a, [c])
21:30:24 -!- Judofyr has joined.
21:30:28 <oklopol> in case a is... what?
21:30:32 <oklopol> err
21:30:35 <oklopol> i mean
21:30:40 <oklopol> hmm
21:30:49 <oklopol> oh
21:31:39 <oklopol> so, functions need to be called as the first param, in message passing you have to have the object that receives the message as the second param
21:31:51 <oklopol> but
21:32:07 <ehird> oklopol: ... but ....
21:32:24 <oklopol> the question is, what's the difference between a function and a thing that receives a message, syntactically
21:33:19 <ehird> oklopol: okay:
21:33:24 <ehird> when i say {...} i mean 'some function'
21:33:29 <ehird> when i say 'foo' i mean 'some atom'
21:33:34 <ehird> when i say '?' i mean 'something else'
21:33:39 <ehird> here's how it translates into python:
21:33:47 <ehird> ({...} b c) -> {...}.sent('apply', [b,c])
21:33:58 <ehird> (foo b c) -> b.sent('foo', [c])
21:34:05 <oklopol> i know this
21:34:05 <ehird> (foo b c d) -> b.sent('foo', [c,d])
21:34:12 <ehird> (? ...) -> ERRORERRORERROR
21:34:48 <oklopol> in this case, what might b be?
21:35:03 <oklopol> if it is sent "foo", [c,d]
21:35:11 <ehird> oklopol: b is a recevier
21:35:15 <oklopol> ...
21:35:18 <oklopol> what's that?
21:35:21 <ehird> oklopol: umm
21:35:22 <ehird> a receiver
21:35:27 <oklopol> what's the difference between a function and a thing that receives a message?
21:35:39 <oklopol> b can't be a function?
21:35:39 <ehird> oklopol: one's a function and the other is a thing that receives a message..
21:35:50 <ehird> well, functions are receivers that only respond to 'apply'
21:35:53 <ehird> <ehird> ({...} b c) -> {...}.sent('apply', [b,c])
21:35:53 <ehird> <ehird> (foo b c) -> b.sent('foo', [c])
21:35:55 <ehird> with those
21:35:56 <ehird> we can see
21:35:56 <ehird> that
21:36:03 <ehird> (apply {...} b c) -> {...}.sent('apply',[b,c])
21:36:10 <ehird> which you'll notice is the same as the first rule
21:36:18 <ehird> oklopol: and look at the code for 'Func'
21:36:22 <oklopol> please just tell me what the fuck a receiver is, THE WORD ITSELF DOES NOT MEAN ANYTHING
21:36:25 <ehird> the response to 'apply' is to do a normal function call
21:36:29 <ehird> and ... read the goddamn code
21:36:39 <ehird> it's an abstract concept
21:36:39 <ehird> sheesh
21:36:42 <oklopol> no. if you can't explain this, i'm going to sleep
21:36:47 <oklopol> umm
21:36:53 <oklopol> can you give me an example, perhaps?
21:37:04 <oklopol> basically
21:37:43 <ehird> oklopol: i can't.
21:37:45 <ehird> just read it.
21:37:49 <ehird> it's only 100 lines of trivial code
21:38:27 <oklopol> def sent(self, name, args):
21:38:27 <oklopol> if name == '++':
21:38:27 <oklopol> return self._oppy(lambda a,b: a+b, '++', args)
21:38:30 <oklopol> okay, i opened it
21:38:34 <oklopol> and it seems b can be a list
21:38:36 <oklopol> is this correct?
21:38:57 <ehird> oklopol: well err
21:39:00 <ehird> that's just in Lst
21:39:09 <ehird> that's just the code for adding two Lsts
21:39:11 <ehird> oklopol: see _oppy
21:39:13 <ehird> it's a little helper
21:39:16 <oklopol> so it cannot be a list?
21:39:18 <ehird> ....
21:39:22 <ehird> weoprkopfkopfkeorjoiwejfiojfifgjerlg
21:39:23 <ehird> READ THE CODE
21:39:37 <oklopol> well
21:39:47 <oklopol> you are saying you cannot give an example what b could be
21:39:53 <ehird> oklopol: i can
21:39:55 <ehird> it is a Lst.
21:39:57 <ehird> read _oppy
21:39:59 <ehird> please
21:40:00 <ehird> READ _OPPY
21:40:01 <oklopol> but, it seems if b is a list, it can handle the message ++
21:40:07 <ehird> how can you expect to understand it if you don't READ _OPPY
21:41:19 <oklopol> it seems ++ would append a list to a list
21:41:28 <oklopol> but i don't see what use reading _oppy was
21:41:59 <ehird> oklopol: because you were asking about ++
21:42:07 <oklopol> okay, is (++ [1 2] [3 4]) correct?
21:42:12 <oklopol> ==> [1 2 3 4]
21:42:15 <ehird> oklopol: err, of course it is
21:42:17 <ehird> why wouldn't it be
21:42:31 <oklopol> so in (a b c), when a is an atom, and b is sent a message, b can be a list?
21:42:39 <ehird> oklopol: b can be ANYTHING
21:42:55 <ehird> EVERYTHING responds to .sent, but if you send something silly it goes 'i can't handle this' and throws an error
21:42:59 <oklopol> 23:36… oklopol: please just tell me what the fuck a receiver is, THE WORD ITSELF DOES NOT MEAN ANYTHING
21:43:01 <ehird> what the heck is hard to understand
21:43:07 <oklopol> i mean
21:43:11 <ehird> oklopol: ITISANABSTRACTCONCEPT
21:43:23 <oklopol> why couldn't you just say it's an object?
21:43:31 <ehird> it's not
21:43:33 <oklopol> abstract concept with no meaning
21:43:35 <oklopol> is nothing.
21:43:39 <ehird> it doesn't resemble an object
21:43:41 <ehird> it's just a THING
21:43:44 <oklopol> but
21:43:44 <ehird> that can get a message
21:43:48 <oklopol> an example of it is a list
21:44:04 <ehird> oklopol: or a function
21:44:06 <ehird> or a number
21:44:07 <ehird> or a string
21:44:08 <oklopol> this is a bit contradictory, because you said at some point you cannot give an example of it
21:44:09 <ehird> or an atom
21:44:17 <ehird> or an error
21:44:21 <ehird> EVERYTHING is a receiver
21:44:25 -!- Judofyr_ has joined.
21:44:32 <oklopol> 23:36… oklopol: can you give me an example, perhaps?
21:44:32 <oklopol> 23:36… oklopol: basically
21:44:32 <oklopol> 23:37… ehird: oklopol: i can't.
21:44:36 <oklopol> i assumed nothing is.
21:44:39 <oklopol> sofar
21:44:48 <ehird> oklopol: look at Obj
21:44:50 <ehird> it has a sent method
21:44:51 <oklopol> in which case i would've assumed the answer "nothing yet"
21:44:54 <ehird> ergo everything is a receiver
21:45:08 <ehird> (+ 1 2) ends up with Num's sent being called
21:45:12 <ehird> and it uses _oppy
21:45:14 <oklopol> if you say something, i assume it overrides the code.
21:45:18 <ehird> _oppy handles a lisp-style variadic
21:45:25 <ehird> you give it a lambda of two args
21:45:28 <oklopol> it is very annoying to make me read tons of code over something trivial.
21:45:30 <ehird> and it unwraps your value
21:45:32 <ehird> and the first args value
21:45:35 <ehird> and wraps the result of that
21:45:36 <oklopol> tons = over 2 lines
21:45:39 <ehird> then recurses with the rest of the args on that result
21:45:45 <ehird> so (+ 1 2 3) works
21:45:49 <ehird> it ends up being (+ (+ 1 2) 3)
21:45:51 <ehird> thanks to _oppy
21:47:07 <oklopol> yes, but this is irrelevant, so, how do functions pmatch on calls, and how on messages?
21:47:23 <oklopol> [...] for calls, and (atm, [...]) for messages?
21:47:24 <ehird> oklopol: no pattern matching
21:47:33 <ehird> and..... FUNCTIONS CANNOT BE USED AS RECEIVERS
21:47:35 <ehird> well
21:47:35 <ehird> kinda
21:47:38 <ehird> {...} will accept ONE message
21:47:39 <ehird> 'apply'
21:47:47 <ehird> it does what you expect. applies the function to the arguments given
21:47:48 <ehird> oklopol: BUT
21:47:51 <ehird> (recv {...})
21:47:52 <oklopol> ...
21:47:53 <ehird> is a receiver
21:47:57 <ehird> which when sent a message
21:48:01 <oklopol> you just said a function can be a receiver.
21:48:01 <ehird> calls the function given with (msg args)
21:48:04 <ehird> AND IT CAN
21:48:07 <ehird> BUT ONLY WITH ONE MESSAGE
21:48:11 <ehird> oklopol: READ FUNC'S .SENT()
21:48:12 <oklopol> ehird: and..... FUNCTIONS CANNOT BE USED AS RECEIVERS
21:48:15 <ehird> IT CAN
21:48:15 <oklopol> ...
21:48:17 <ehird> BUT JEEZ
21:48:22 <ehird> READFUNC'S.SENT()READFUNC'S.SENT()READFUNC'S.SENT()READFUNC'S.SENT()
21:48:36 <ehird> def sent(self, name, args):
21:48:36 <ehird> if name == 'apply':
21:48:37 <ehird> .......
21:48:38 <ehird> etc
21:48:49 <ehird> oklopol: SO IT RESPONDS to one fixed message: APPLY, which does function application
21:48:53 <ehird> IF YOU WANT TO MAKE YOUR OWN RECEIVER
21:48:55 <ehird> there is a heper function
21:48:57 <ehird> (recv {...})
21:49:02 <ehird> gives you a receiver
21:49:10 <ehird> which when sent the message M with args A
21:49:13 <ehird> calls the function with (M A)
21:50:39 <oklopol> so "b can be anything but a function that has not been wrapped with recv"? would've been the answer to "oklopol: in this case, what might b be?"
21:50:47 <oklopol> *-?
21:51:00 <ehird> oklopol: no
21:51:02 <ehird> it can be a function
21:51:07 <ehird> but it won't receive the message or whatever
21:51:07 <oklopol> oh?
21:51:13 <ehird> it'll just error out, unless you're sending it 'apply'
21:51:20 <ehird> because the function class responds to 'apply'
21:51:22 <oklopol> so "can be anything" would've been the answer
21:51:22 <ehird> for function application
21:51:33 <ehird> and in ({...} ...) it sends apply to {...}
21:51:41 <oklopol> "is a receiver" means: "it is whatever b is in that situation"
21:51:43 <ehird> oklopol: yes, but {...} by itself is not useful if you want to make a receiver for yourself
21:51:49 <ehird> recv helps
21:52:01 <oklopol> are there other ways?
21:53:02 <ehird> oklopol: yeah .. write a python subclass of Obj
21:53:09 <ehird> and override .sent(name, args)
21:53:10 <ehird> :-)))
21:53:16 <oklopol> anyway, all i wanted was an answer to that question, you are a bit hard to get stuff out of, sometimes
21:53:18 <oklopol> hmm
21:53:19 <ehird> (name will be a string, args a list of Obj subclasses of some kind)
21:53:21 <oklopol> rright.
21:53:46 <oklopol> and the use of this distinction is?
21:54:11 <oklopol> the fact you cannot just use a function for any message
21:54:18 <ehird> oklopol: because...that's not what a function is
21:54:32 <oklopol> right, i guess there doesn't have to be a reason
21:54:54 <oklopol> except that it wouldn't make sense, or something
21:54:54 <oklopol> but
21:55:06 <ehird> oklopol: a function is something that has a lexical closure and takes some arguments, runs some code, and returns something
21:55:21 <ehird> a receiver is just something that will give you something if you give it a message name and a list of objects
21:55:21 <ehird> :)
21:55:22 <oklopol> i'm assuming these method-call like things where you send the atom name and args separately are used for making objects?
21:55:45 <ehird> oklopol: the swapping of the first two args is just so that you can use lisp-style prefix syntax
21:55:51 <ehird> (length x) instead of (x length) etc
21:56:21 <oklopol> it is? i thought it was for message passing
21:56:24 <oklopol> i mean
21:56:28 <ehird> oklopol: welllll
21:56:28 <ehird> okay
21:56:31 <ehird> let's get to the bottom of this
21:56:34 <ehird> i'll explain it simply
21:56:35 <ehird> first
21:56:38 <ehird> forget about functions
21:56:42 <oklopol> a-ha
21:57:00 <ehird> (a b ...) means 'send the message b to a, with the arguments ....'
21:57:01 <ehird> now
21:57:07 <ehird> b and a and all the args are evaluated
21:57:12 <ehird> so
21:57:16 <ehird> that's not a special case
21:57:16 <ehird> but
21:57:18 <ehird> (a b ...) is like
21:57:21 <oklopol> i do understand it already, it's just i don't see why you're making the distinction between calling and message passing, i'm assuming message passing is for objects, but you said it's not like that
21:57:26 <oklopol> so i'm assuming you just do it for fun?
21:57:27 <ehird> b.sent('a', ...)
21:57:32 <ehird> oklopol: I SAID FORGET ABOUT FUNCTIONS
21:57:36 <oklopol> k
21:57:40 <ehird> until you stop talking about functions i can't explain it properly
21:57:46 <ehird> now do you get the evaluation strategy so far, oklopol?
21:57:53 <ehird> you just send something a message.
21:58:07 <ehird> now, that's just things getting a name and some stuff and doing some stuff.
21:58:14 <ehird> oklopol: important - THEY DON'T HAVE LEXICAL CLOSURE
21:58:20 <ehird> because there's no concept of closure
21:58:21 <ehird> or body
21:58:24 <ehird> or anything
21:58:25 <ehird> they're opaque
21:58:46 <ehird> oklopol: now, say we want functions -- which are things which remember their env as a closure, have a func body which is run through, ETC
21:58:49 <oklopol> oh, so that's the difference, why didn't you say so?
21:58:50 <ehird> there's some special syntax
21:58:52 <ehird> {argspec ...}
21:58:54 <ehird> so
21:58:56 <oklopol> different scoping.
21:58:58 <ehird> how do we represent that as a receiver?
21:59:00 <ehird> oklopol: URHGHGHGGHHGHGHGHg
21:59:02 <ehird> NO!!!!!!!
21:59:05 <oklopol> k
21:59:08 * ehird bangs head against wall
21:59:10 <oklopol> anuway
21:59:19 <ehird> oklopol: receivers and functions HAVE ABSOLUTELY NO RELATION WHATSOEVER
21:59:29 <oklopol> ehird: (a b ...) means 'send the message b to a, with the arguments ....' <<< i thought a is called with ('apply', [b ...])
21:59:45 <ehird> oklopol: FORGETABOUTGODDAMNFUNCTIONSJESUSCHRIST
21:59:49 <ehird> FORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONS
22:00:09 <oklopol> k
22:00:28 <ehird> oklopol: okay
22:00:28 <ehird> now
22:00:34 <ehird> forget everything i've said about the application
22:00:34 <ehird> and
22:00:36 <ehird> (a b ...)
22:00:37 <ehird> this means
22:00:52 <ehird> 'x = evaluate a; y = evaluate b; evaluate all of ...'
22:01:00 <ehird> 'send y to x with the arguments ...'
22:01:04 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
22:01:09 <oklopol> k
22:01:12 <ehird> oklopol: the ONLY propery about x is that it'll happily take a message name and some arguments
22:01:14 <ehird> and give you a value
22:01:18 <ehird> *property
22:01:28 <ehird> there's nothing relating to function bodies, scoping... ANYTHING specified in it
22:01:30 <ehird> ok?
22:01:33 <oklopol> k
22:01:40 <ehird> now, let's say that we want functions in this language
22:01:46 <ehird> how will we represent that as a receiver?
22:01:46 <ehird> ah!
22:01:51 <ehird> we could respond to a message like 'apply'
22:01:56 <ehird> and give the function the arguments we get
22:02:01 <ehird> OK.
22:02:08 <ehird> So, now let's say we want to make our own special receivers
22:02:17 <ehird> Hey, we can just pass the message name and arguments to a function!
22:02:25 <ehird> So we need a function that takes a function and gives us a receiver
22:02:30 <ehird> (recv {(message args) ...})
22:02:34 <ehird> oklopol: ok. got it now?
22:03:33 <oklopol> not really
22:03:34 <oklopol> because
22:03:51 <oklopol> ehird: (a b ...) means 'send the message b to a, with the arguments .... <<< i don't see this in code
22:04:05 <ehird> oklopol: elif func.tag() == 'tom':
22:04:06 <ehird> return args[0].sent(func.val, args[1:])
22:04:08 <ehird> then you can't read.
22:04:12 <ehird> (func is a bad name)
22:04:16 <ehird> (func is just the first argument, evaluated)
22:04:27 <oklopol> umm
22:04:33 <oklopol> doesn't that send the message a to b?
22:04:35 -!- Judofyr has joined.
22:04:57 <ehird> oklopol: func is the first argument
22:04:59 <ehird> (a b c)
22:05:02 <ehird> func = a, evaluated
22:05:06 <ehird> args = [b,c] evaluated
22:05:23 <oklopol> so a is sent to b, with arg c?
22:05:47 <ehird> oklopol: no
22:05:48 <ehird> with args [c]
22:05:53 <ehird> (a b c d) would be with args [c,d]
22:06:03 <oklopol> that's not the point
22:06:13 <oklopol> ehird: (a b ...) means 'send the message b to a, with the arguments .... <<< so you mixed a and b?
22:06:22 <ehird> oklopol: yes
22:06:23 <ehird> yes i did
22:06:25 <ehird> :p
22:06:44 <oklopol> okay, well, you didn't provide me any new information, but you did confuse me a bit.
22:06:49 <oklopol> i get it all now
22:06:53 <ehird> oklopol: yayyy :P
22:07:03 <ehird> now do you see that this lang != ot--
22:07:03 <ehird> :P
22:07:12 <oklopol> sure
22:07:13 <oklopol> now
22:07:44 <oklopol> what i was originally trying to ask
22:07:44 <oklopol> is
22:07:55 <oklopol> hmm
22:08:55 <oklopol> it was "why do you separate between a receiver and a function, why not just have a function?"
22:09:05 <oklopol> both take a list of args, and return a result
22:09:22 <oklopol> but, scoping makes a difference
22:09:34 <ehird> oklopol: looks like you didn't read what i said!
22:09:37 <oklopol> i did get it, it's just i didn't see what the use was.
22:09:39 <ehird> scoping isn't ASKJDHJKASDHKLSJDH relevant
22:09:41 <ehird> asdjoiasdjoidfujoidsfgjsiofgjsofgijsodig
22:09:44 <oklopol> sure is
22:09:46 <ehird> SCOPING IS JUST NOT ANYTING IN IT
22:09:48 <ehird> goddamn it
22:09:54 <oklopol> :)
22:09:57 <ehird> this is such a bunch of crap, i've explained it so many god damn times
22:10:01 <ehird> and you haven't listened once
22:10:03 <oklopol> heh
22:10:08 <oklopol> i have understood it all along
22:10:15 <ehird> no
22:10:17 <ehird> you haven't
22:10:21 <ehird> <oklopol> it was "why do you separate between a receiver and a function, why not just have a function?"
22:10:21 <ehird> <oklopol> both take a list of args, and return a result
22:10:21 <ehird> <oklopol> but, scoping makes a difference
22:10:22 <ehird> that shows it
22:11:18 <oklopol> asd.
22:11:46 <ihope> It sounds like you've been misunderstanding each other for over an hour.
22:11:54 <ehird> ihope: tell me about it
22:13:42 <ihope> What are you talking about, anyway?
22:14:13 <oklopol> ehird's language
22:14:51 <ehird> back in ~30m
22:17:03 <oklopol> i'm pretty sure the fact a function only takes "apply" as the first arg separates whatever conceptual functions you have into two groups, ones that are called (func arg ...) and (atom receiver arg ...), i just don't see what the reason is.
22:17:38 <oklopol> receiver can also be called as (receiver arg ...), in which case it is told with the "apply" atom that it is used as a function
22:17:46 <oklopol> not a message-receiver
22:17:56 <oklopol> but, you haven't said why, that's all i've been asking
22:19:01 <oklopol> anyway, i'm off to sleep, i'll read the spec if you finish this, so i can explain to you why you did all this.
22:19:02 <oklopol> ->
22:21:17 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
22:22:25 -!- Iskr has quit ("Leaving").
22:24:39 <oklopol> meh as if i could sleep after being told i still don't get it
22:25:41 <oklopol> i guess i have to read the code
22:27:51 -!- Judofyr_ has joined.
22:29:51 <oklopol> perhaps you think i didn't understand that a function is a special case of a receiver, because i asked why you had both? i was just wondering why not have a function be a normal receiver.
22:33:39 <oklopol> in case the second sentence showed i didn't get it, why exactly? "both take a list of args, and return a result" isn't this entirely true? first takes the list [atom args], second takes just args, if the atom is "apply", otherwise fails
22:33:45 <oklopol> but they are both conceptually functions.
22:33:49 <oklopol> they take stuff, and return stuff
22:35:22 <oklopol> "scoping makes a difference" <<< this was the only thing resembling an explanation, i first assumed it might be you wanted receivers to be more like objects, and conceptually differentiate between them and functions... but apparently that was completely wrong too
22:35:53 <oklopol> 23:55… oklopol: i'm assuming these method-call like things where you send the atom name and args separately are used for making objects?
22:35:54 <oklopol> 23:55… ehird: :)
22:35:59 <oklopol> actually, you didn't say no
22:36:01 <oklopol> :)
22:38:03 <oklopol> dunno, hopefully you return soon, and are willing to explain this to me all night long
22:39:40 <ihope> Yeah, looks like a function is a type of receiver, and functions and receivers are effectively the same thing.
22:39:49 <oklopol> yes.
22:40:10 <oklopol> but apparently, saying so shows one has no idea how all this works.
22:40:46 <ihope> If you can transform a function that does a certain thing when called with certain arguments into a receiver that does the same thing when sent the same arguments, and vice versa, and it doesn't look all cluttered, functions and receivers are the same thing.
22:41:00 <oklopol> yes, exactly.
22:41:16 <ihope> If there is a difference, it will be difficult to express one or the other, and ehird will be able to give you an example of it.
22:41:23 * ihope shrugs
22:41:41 <ihope> I said that he was able, not that he should.
22:41:41 -!- oerjan has joined.
22:42:05 <oklopol> well, took me ten minutes to get the fact a list can be a receiver out of him.
22:42:23 <oklopol> this might be a bit harder
22:43:21 <ihope> Do you really want to know, if you have to do that to find out?
22:43:34 <oklopol> i cannot sleep if i don't know.
22:43:38 <oklopol> really.
22:44:05 <oklopol> i have my reasons for not being all that good at leaving irc.
22:44:07 <ihope> He said to read the code, yes? Where is the code?
22:44:14 <oklopol> http://www.vjn.fi/pb/p463212552.txt
22:44:33 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
22:48:38 <ihope> There's a thing called an Obj, and it has a val that's set when created, and I assume that __repr__ and __str__ are just for display and all, and its tag is 'obj', and it can't be eval'd, and I'll get to _oppy later, and if you try to send it a message, you get an "unhandled message" error.
22:49:53 <oklopol> yeah
22:50:37 <ihope> When you _oppy an object, its value and the first argument are "added", then self.__class__(the "sum") is sent the message with the rest of the arguments.
22:50:45 <ihope> What's __class__?
22:51:26 <oklopol> containing class
22:51:28 <oklopol> i mean
22:51:35 <oklopol> the class the object is instance of
22:52:15 <ehird> Back
22:52:28 <ihope> ehird: what does op() do?
22:52:29 <oklopol> basically, that call to it is changing the primitive object back into an object of ehird's creation
22:52:37 <ehird> receiver can also be called as (receiver arg ...), in which case it is told with the "apply" atom that it is used as a function
22:52:38 <ehird> nope
22:52:42 <ehird> that only applies if it is actually a real function
22:53:06 <oklopol> aha
22:53:07 <oklopol> so
22:53:36 <oklopol> you have a clear distinction between receiver and function, yet both these are conceptually functions, and yet you don't have two kinds of conceptual functions?
22:53:37 <ihope> Oh, it's an argument.
22:54:13 <ehird> oklopol: they're nt both conceptually functions
22:54:14 <ehird> :)
22:54:22 <ehird> ihope: oppy is quite complex
22:54:25 <ehird> if you are a number 1
22:54:27 <ehird> and you're told to '+'
22:54:29 <ehird> with [2,3,4]
22:54:31 <oklopol> ihope: oppy does exactly what you said
22:54:32 <ehird> then
22:54:34 <ehird> the underlying function
22:54:36 <ehird> is basically
22:54:37 <ehird> lambda x,y: x=y
22:54:38 <ehird> err
22:54:39 <ehird> x+y
22:54:40 <ehird> but
22:54:43 <oklopol> umm
22:54:45 <ehird> the x and y are wrapped in the .vals
22:54:54 <ehird> so _oppy does the unwrapping/rewrapping required
22:54:57 <ehird> and then recurses
22:54:59 <ihope> Must you split your sentences over so many lines?
22:55:00 <ehird> so that you can do variadicness
22:55:06 <ehird> ihope: stream of conciousness. :)
22:55:17 <ehird> my sentences are lazily loaded
22:55:21 <ehird> i write the first part, and then the rest
22:55:25 <ihope> Maybe I should find a way to get my client to concatenate them.
22:55:31 <oklopol> ehird: how is a receiver not conceptually a function?
22:55:39 <ehird> oklopol: it's just ... not :<
22:55:46 <oklopol> you said it takes a message, and an arg, and returns something
22:55:53 <oklopol> then it is a function.
22:55:55 <ehird> they're just not the asme thing
22:55:55 <ehird> :))
22:55:59 <oklopol> a-ha
22:56:19 <oklopol> if you leave it at that, i'll assume you have no idea yourself, and go to sleep
22:56:24 <ehird> oklopol: nope
22:56:24 <ehird> i do
22:56:24 <oklopol> is that case?
22:56:26 <oklopol> *the
22:56:28 <ehird> i've tried to explain
22:56:29 <oklopol> okay.
22:56:31 <ehird> apparently my methods of explanation suck
22:56:42 <ehird> ihope: anyway oppy is just an internal helper
22:56:44 <ehird> ergo the unerscore
22:56:45 <ehird> *under
22:56:58 <ihope> So you _oppy stuff with an operation, and when you _oppy a vanilla Obj, the operation is performed on the Obj and the first argument, and then... yeah.
22:57:10 <oklopol> ehird: it is fairly easy to tell me why it's not a function, just tell me what separates it from a function
22:57:11 <ehird> ihope: on the obj's VALUE
22:57:15 <ehird> and the first arguments value
22:57:25 <ehird> it unwraps the values, passes it to the operation, wraps it again
22:57:34 <ehird> and then that wrapped thing is told to do the same thing with the rest of the args
22:57:35 <oklopol> if the only difference is name, then you don't know what "conceptual" means
22:57:42 <ehird> oklopol: it's hard to explain!
22:57:56 <oklopol> okay.
22:57:59 <ihope> Oh, I see.
22:58:27 <ehird> ihope: so
22:58:29 <ehird> (+ 1 2 3)
22:58:30 <oklopol> ihope: how did you not get that, you explained it earlier in your own words?
22:58:33 <ehird> 1 is told to + with [2,3]
22:58:38 <ehird> so we unwrap the python int inside the 1 object
22:58:40 <ehird> same with 2
22:58:43 <ehird> and pass it to the python-int-adder
22:58:44 <ihope> oklopol: I didn't know what op was, I suppose.
22:58:48 <ehird> then wrap it into a number object again
22:58:52 <ehird> and we have 3
22:58:55 <ehird> so we tell 3 to + with [3]
22:59:01 <ehird> and it does the same thing, but then we run out of args
22:59:03 <ehird> so we stop
22:59:34 <oklopol> well, you did say it's used to make a sum, perhaps you didn't know the sum was made with folding the lambda
22:59:46 <ehird> oklopol: it's kinda folding yeah
22:59:55 <ehird> but it's used for variadic division too
23:00:01 <ehird> and variadic list concatenation
23:00:16 <oklopol> ...so not folding, or not sum?
23:00:24 <ehird> uhhh
23:00:55 <ihope> If you send + with no arguments to a number, you get the number; if you send - with no arguments to a number, you get its opposite. If you send an arithmetic operation with arguments to a number, you get fancy folding.
23:01:12 <ihope> Left-associative folding, I assume.
23:01:13 <oklopol> ihope: exactly
23:01:20 <oklopol> yeah
23:01:21 <ehird> ihope: it's just so (+ 1 2 3) works
23:01:24 <ehird> you could make it do
23:01:29 <ehird> Num(self.val + args[0].val)
23:01:34 <ehird> but that wouldn't be as nice
23:01:59 <oklopol> ehird: how is a receiver conceptually not a function??
23:02:01 <ihope> And now you have Toms, which are cute, I guess.
23:02:13 <ehird> ihope: Toms are atoms
23:02:15 <ehird> just names
23:02:18 <ehird> 'A tom'
23:02:51 <ihope> Hmm, that's nice.
23:03:30 <ihope> And that link, http://www.vjn.fi/pb/p463212552.txt, is all there is to it?
23:04:02 <ehird> ihope: It needs primitives, more messages, and a parser!
23:04:03 <ehird> But yes.
23:04:05 <ehird> That's all there is to it.
23:04:30 <ihope> And Toms are applicable.
23:04:57 -!- Judofyr has joined.
23:05:03 <ihope> Hmm, are Koeds the result of parsing stuff like (+ 1 2 3)?
23:05:18 <ihope> Does sound like "code".
23:05:32 <oklopol> it means code
23:06:33 <ehird> ihope: Toms are only applicable because they're what we send off to receivers
23:06:33 <ehird> :P
23:06:41 <ehird> Koed is "code", yeah.
23:06:46 <ehird> Just like skoep is the skope
23:06:47 <ehird> *scope
23:06:53 <ihope> And if you send apply to a Func, something I didn't feel like reading happens. I presume the Func is applied.
23:07:03 <ihope> Oh, scope. Cool.
23:08:28 <ihope> And Prim is some wacky little thing.
23:08:48 <ehird> ihope: Prim is for primitive functions.
23:08:59 <ehird> Builtins, if you will.
23:09:08 <oklopol> ehird: how is a receiver conceptually not a function??
23:09:17 <ehird> oklopol: how is a receiver conceptually not a function??
23:09:37 <ihope> So yeah, everything's a receiver, and receivers are an odd way of making (+ 1 2 3)... do what it does.
23:10:03 <oklopol> ehird: asking me?
23:10:09 <ihope> I don't see why you send 1 the message + with the arguments 2 and 3 rather than calling + with the arguments 1, 2 and 3, but I guess skoep has something to do with it.
23:10:17 -!- Judofyr__ has joined.
23:10:21 <ehird> ihope: Because ... that would just be functions.
23:10:23 <ihope> So all three of us are right. Happy ending!
23:10:47 <oklopol> ihope: that's the distinction between functions and receivers that no one understands.
23:11:16 <ehird> brb.
23:11:19 <oklopol> :|
23:11:21 <oklopol> oh fuck
23:11:28 <oklopol> i'm not gonna sleep tonight, am i?
23:11:43 <ihope> You can convert a receiver into a function easily enough. I think the set of receivers, though, is finite and unchanging and all.
23:12:22 <oklopol> that would not make them not conceptually functions, though
23:12:32 <ihope> Receivers are conceptually functions.
23:12:35 <oklopol> are they?
23:12:42 <oklopol> ehird has clearly stated they aren't.
23:12:42 <ihope> From my reading of it, yes.
23:12:54 <oklopol> should i assume he's *wrong*, and go to sleep?
23:13:01 <ihope> Well, when you see (+ 1 2 3) and are told that it adds 1, 2 and 3, do you think of 1 as being the function here?
23:13:17 <ihope> It's the receiver, because ehird wanted it to be implemented that way for some reason.
23:13:30 <oklopol> well i know that, the idea is from oklotalk
23:13:55 <oklopol> but, conceptually, a function takes something, and returns something, ehird says receivers aren't conceptually functions, yet do exactly this
23:14:02 <oklopol> i find this a bit weird.
23:14:15 <ihope> I think how in (+ 1 2 3), 1 doesn't seem like a function is the limit to how receivers aren't conceptually functions.
23:14:46 <ihope> If that 1 isn't "conceptually" a function, receivers aren't "conceptually" functions. If that 1 is "conceptually" a function, receivers are "conceptually" functions.
23:14:57 <oklopol> :)
23:16:43 <oklopol> so basically, receivers and functions are separate in that receivers are *objects*, they take a method name, the atom, and dispatch primarily on that
23:17:02 <oklopol> still function.
23:17:16 <ehird> back
23:17:23 <oklopol> all i've been asking is "why the distinction?"
23:17:36 <oklopol> "no specific reason" is fine
23:17:43 <oklopol> but "you just don't get it, idiot" is not.
23:17:46 <ihope> Well, there is kind of a reason.
23:17:58 <ehird> wellll
23:18:03 <ehird> it's just like how oko can't be explained
23:18:06 <ihope> 1, treated as a receiver, is what it is. 1, treated as a function, is junk.
23:18:07 <ehird> apparently when you explain it
23:18:09 <ehird> nobody understands :)
23:18:37 <ihope> A function, when treated as a receiver, needs "apply" to do anything meaningful. A function, when treated as a function, is just that.
23:19:07 <ihope> "Hi! Do you want me to be a number or a function today?"
23:19:38 <ihope> The message you're sending: "Be a function. Take these arguments."
23:19:38 <ehird> Wellll no ihope
23:19:39 <oklopol> so basically, receivers are objects, that's what objects are, functions that are used as data, and who are always called with an atom as the "message"
23:19:43 <ehird> A function is just a receiver
23:19:51 <ehird> with some sugar for sending a certain message - apply
23:19:52 <ihope> oklopol: sounds about right.
23:20:10 <oklopol> in my opinion too, but ehird hasn't said that, so i'm assuming it's wrong
23:20:22 <ihope> oklopol: well, I agree with you.
23:20:42 <ihope> It sounds like ehird is trying to convince you that his way of looking at it is the correct one.
23:20:45 <oklopol> and even if they were, if the object 1 has an input->output interface with no side-effects, it is a function, conceptually.
23:20:52 <ihope> Yeah.
23:21:50 <ehird> Conceptual example: a number should be a receiver, but the identity function a..well,function
23:21:56 -!- Judofyr_ has quit (Success).
23:22:24 <ihope> So a receiver that returns its message is impossible?
23:22:38 <ihope> Or just discouraged?
23:23:06 <ihope> If it's impossible, I assume that's because messages aren't objects.
23:23:14 <oklopol> ehird: distinction between data and functions, no problem, except 1 still has a function interface, right?
23:23:28 <ehird> <ihope> So a receiver that returns its message is impossible?
23:23:30 <ehird> not impossible
23:23:37 <ehird> but .... nonsensical
23:23:45 <ehird> oklopol: no
23:23:47 <ehird> 1 is only a receiver
23:24:51 <oklopol> people should, by convention, use receivers for data and functions for functions, but they are jsut two types of functions called differently?
23:24:56 <oklopol> *just
23:26:31 <ehird> nooooot really ... i mean everything is a func [see LC]
23:26:50 <oklopol> everything is not a function. you've said receivers aren't functions
23:27:00 <ehird> oklopol: everything in the world is a function
23:27:02 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
23:27:03 <ehird> the lambda calculus proved this
23:27:04 <oklopol> ehird: no
23:27:19 <ehird> there is nothing in any TC language you cannot express as a function.
23:27:38 <oklopol> ...so everything in the world is a function?
23:27:48 <oklopol> so, everything in the world is an iota combinator?
23:27:54 <ehird> oklopol: yes
23:28:10 <oklopol> a-ha
23:28:32 <oklopol> a function is a set of pairs (a, b), where no two pairs exist with the same a
23:28:44 <oklopol> and you use it by giving it an a and getting a b out
23:28:49 <ehird> oklopol: btw - how do you have a zeroadic message?
23:28:51 <ehird> (a)
23:28:53 <ehird> a can only be a function
23:28:57 <ehird> because there's nothing to send a to
23:29:22 <oklopol> then it's a function with just the one pair (() result)
23:29:44 <ehird> oklopol: but it can't be a messagesend to a receiver
23:29:56 <ehird> so recv sends != funcalls
23:29:59 <ehird> Q.E.D.
23:30:23 <oklopol> (IO a, IO b) pairs if you have side-effects, no prob for functions
23:30:29 <oklopol> IO being the state of the world
23:30:55 <oklopol> just different definitino of function
23:30:57 <oklopol> *definition
23:31:00 <oklopol> well
23:31:09 <oklopol> with that IO thing, same definition, ofc
23:31:40 <oklopol> ehird: that is a syntactic thing
23:31:46 <oklopol> (a) can mean "send nothing to a"
23:31:58 <ehird> nope, message comes first oklopol
23:32:15 <ehird> and 'nothing' cant be sent
23:32:24 <oklopol> well, they already had syntactic differences
23:32:29 <oklopol> how the fuck does this change anything?
23:33:19 <ihope> oklopol: I advise you to stop listening to ehird.
23:33:29 <ehird> ihope: :(
23:33:35 <oklopol> ihope: that might be good for my mental health
23:34:12 <oklopol> unfortunately my mental health is already in bad enough shape for me to be quite unable to do that.
23:34:19 <oklopol> err
23:34:32 <oklopol> negate that once, in an appropriate way.
23:34:45 <oklopol> eh
23:34:47 <oklopol> donät
23:34:50 <oklopol> god i'm tired
23:34:56 <oklopol> perhaps it's time to do a sleep
23:34:56 <ihope> oklopol: what would happen if you just went to bed?
23:35:29 <oklopol> well, right now, i prolly would fall asleep.
23:35:41 <oklopol> i'm starting to feel i *did* get it all along
23:35:43 <ihope> Sleep, then; you're tired. :-)
23:35:48 <ihope> I think you're right.
23:35:56 <oklopol> is that a direct order?
23:36:11 <ihope> It is.
23:36:19 <oklopol> well, i don't really have a choice then!
23:36:21 <oklopol> nighty nigt!
23:36:24 <oklopol> *night
23:36:25 <oklopol> ->
23:36:26 <ihope> So if you don't get to bed, fancy serotonin things will yell at you.
23:36:29 <ihope> Good night :-)
23:46:20 <oklopol> no way i'm gonna fall asleep :P i really should see a shrink or something, perhaps time to continue my reading
23:47:54 -!- evincarofautumn has joined.
23:48:24 <oklopol> evincarofautumn: i hate you! (but don't worry, it's not real hate)
23:48:25 <evincarofautumn> Hello all.
23:48:29 <oklopol> i mean
23:48:31 <evincarofautumn> Dang.
23:48:34 <oklopol> recall that attractor idea
23:48:40 <evincarofautumn> Best. Greeting. Ever.
23:48:43 <oklopol> :)
23:48:43 <evincarofautumn> Ha!
23:48:45 <evincarofautumn> No way.
23:48:50 <evincarofautumn> I've already started a spec.
23:49:01 <evincarofautumn> And I'm doing a reference interpreter in--
23:49:03 <evincarofautumn> get this
23:49:07 <evincarofautumn> --QuickBASIC.
23:49:09 <evincarofautumn> Yes sir.
23:49:14 <evincarofautumn> I feel like abusing myself.
23:49:15 <RodgerTheGreat> hoorays
23:49:18 <evincarofautumn> And others, matter of fact.
23:49:30 <ehird> evincarofautumn: Wow -- you split sentences up MORE THAN ME!
23:49:31 <oklopol> well, my idea was about graphs... but the concept of a moving attractor was gotten from you :D
23:49:41 <oklopol> qbasic <3
23:49:58 <oklopol> well not moving, perhaps more like jumping
23:50:06 <evincarofautumn> ehird--We make eso langs. We should have eso speech.
23:50:34 <ehird> evincarofautumn: I quite like the Queen's English, thanks.
23:50:57 <oklopol> i've made a few esoteric natural language stubs
23:51:01 <oklopol> conlang
23:51:58 <evincarofautumn> Conlangs are great.
23:52:09 <evincarofautumn> I was working on an ideographic system for English recently.
23:52:14 <evincarofautumn> Worst idea ever, I might add.
23:52:18 <evincarofautumn> It's just not built for it.
23:53:21 <oklopol> ideographic = phonetic?
23:53:23 <oklopol> wuzzit
23:54:08 <oklopol> how did you do that attractor thing btw, what path is used to get to the attractor?
23:54:10 <evincarofautumn> each character represents an idea, carrying with it one or more pronunciations.
23:54:15 <evincarofautumn> Like...japanese kanji.
23:54:18 <oklopol> oh.
23:54:23 <oklopol> i see, i see
23:54:30 <evincarofautumn> oklopol--Oh, it just increments the x and y each execution frame.
23:55:01 <evincarofautumn> ...Or decrements, as the case may be.
23:55:09 <oklopol> okay, so first diagonally, then horizontall-/vertically
23:56:03 <evincarofautumn> Um...no?
23:56:14 <oklopol> i found all possible movement in n dimensions a bit clumsy, except for real numbers, for which it's just too hard, so i went for graphs
23:56:17 <oklopol> no?
23:56:29 <evincarofautumn> x and y movement are independent...
23:56:37 <oklopol> hmm
23:56:42 <oklopol> let me get this straight
23:56:49 <oklopol> there's a set number of dimensinos
23:56:53 <oklopol> dimensions
23:57:10 <oklopol> and, each point is identified by a vector giving coordinates
23:57:16 <evincarofautumn> if attractor-x > thread-x then thread-x++
23:57:21 <evincarofautumn> That kind of thing.
23:57:21 <evincarofautumn> Yessir.
23:57:28 <oklopol> and there are attractors
23:57:29 -!- Judofyr has joined.
23:57:49 <oklopol> and there are turtles
23:57:52 <oklopol> moving towards them
23:58:11 <evincarofautumn> Yep. When a turtle walks over a command character, it executes it.
23:58:15 <oklopol> okay.
23:58:16 <oklopol> so
23:58:24 <oklopol> let's say the turtle is at (0, 0)
23:58:31 <oklopol> and the attractor is at (5, 10)
23:58:35 <oklopol> what would the turte do?
23:58:39 <oklopol> *turtle
23:59:19 <oklopol> move first through n in [1..5]: (n, n)
23:59:21 <oklopol> then
23:59:28 <oklopol> (5, [6, 10])
23:59:30 <oklopol> err
23:59:35 <oklopol> (5, [6...10])
23:59:48 <oklopol> n in [6...10]: (5, n) in my earlier notation
2008-04-27
00:00:10 <oklopol> where [a..b] is a range from a to b, inclusive in both ends
00:00:25 <oklopol> amirite?
00:00:39 <oklopol> and, well, am i making any sense?
00:01:05 <oklopol> i did just invent a random notation on the fly, if it's incomprehensible, do tell me
00:04:37 <evincarofautumn> No, I get it.
00:04:52 <evincarofautumn> The x and y are both changed each frame.
00:05:11 <evincarofautumn> So it would go (0, 0), (1, 1), (2, 2), ... (5, 6), (5, 7), (5, 8)
00:05:14 <evincarofautumn> etc.
00:05:38 -!- Judofyr_ has joined.
00:06:02 <oklopol> oklopol: okay, so first diagonally, then horizontall-/vertically <<< can you reaffirm this was not correct after saying that?
00:08:31 <oklopol> i guess that's mostly a reality-check, i'm feeling a bit insecure atm.
00:08:49 <ehird> oklopol: so ... let's stop arguing
00:09:45 <oklopol> didn't we already stop? :D
00:09:45 <evincarofautumn> Yes, I was just misunderstanding you.
00:09:48 <evincarofautumn> Heh.
00:09:49 <oklopol> okay
00:10:22 <oklopol> can you tell me about the commands?
00:10:49 <evincarofautumn> Just a moment, please. I'm reviewing some college stuff. ^_^
00:11:28 <oklopol> i was thinking something massive that fucks up the whole graph, for the commands in the nodes, and preferably the same action for all nodes
00:11:59 -!- Judofyr___ has joined.
00:12:27 <oklopol> shortest path in my case is the shortest path within the graph, in case many are the same length, any of them may be chosen
00:13:35 <ehird> evincarofautumn: there's something wrong with your eyes and mouth
00:13:54 <oklopol> save that for when he joins next time!
00:14:14 -!- Judofyr__ has quit (Read error: 110 (Connection timed out)).
00:17:29 <ehird> oklopol: he's still here
00:17:39 <evincarofautumn> Pseudo-so.
00:17:45 <evincarofautumn> I'm distracted.
00:17:47 <evincarofautumn> Just a moment.
00:17:48 <oklopol> i know i know, that joke was partly for him too
00:18:58 -!- revcompgeek has joined.
00:22:16 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
00:23:05 -!- Corun has quit (Read error: 110 (Connection timed out)).
00:26:08 -!- Judofyr has joined.
00:26:47 <evincarofautumn> Okay.
00:26:51 <evincarofautumn> Let's do this, yo.
00:27:06 <evincarofautumn> And yes, my eyes and mouth have become suspiciously Japanese all o' sudden.
00:27:14 <evincarofautumn> Anyhow.
00:27:15 <evincarofautumn> Commands!
00:28:28 <evincarofautumn> Each thread has only one associated attractor. I think I may not have made that clear.
00:28:53 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
00:28:57 <evincarofautumn> So I'm thinking something along the lines of...
00:29:17 <evincarofautumn> increase attractor jump size, jump attractor up/down/left/right,
00:30:09 <oklopol> almost good.
00:30:22 <evincarofautumn> fork thread (forking creates a new attractor for the new thread at the opposite position on the graph)
00:30:31 <oklopol> but, you need to be able to create new command nodes
00:30:43 <oklopol> node being a position
00:30:45 <evincarofautumn> ?
00:30:48 <oklopol> i mean
00:31:00 <oklopol> at the end of program, there are commands at certain positions
00:31:04 <oklopol> you need to be able to add those
00:31:33 <evincarofautumn> I don't quite follow...
00:31:40 <oklopol> oh
00:31:41 <oklopol> shit
00:31:48 <oklopol> at the beginning of program, there are commands at certain positions
00:32:01 <oklopol> you need to be able to add more of those, during evaluation
00:32:01 <evincarofautumn> Yes...
00:32:12 <evincarofautumn> I'm getting there.
00:32:15 <oklopol> i'm assuming infinite grid?
00:32:17 <oklopol> oh.
00:32:17 <oklopol> right
00:32:45 <evincarofautumn> No, toroidal, with the initial size determined by the maximum line width of the source / number of lines of source.
00:32:58 <oklopol> finite number of cells?
00:33:52 <evincarofautumn> Yeah. But unlimited in terms of what the programmer can request.
00:33:58 <evincarofautumn> Program space is data space.
00:34:12 <oklopol> well, is it extendable @ runtime?
00:34:15 <evincarofautumn> I was thinking of having a stack for inter-thread communication.
00:34:26 <evincarofautumn> Nah. That makes it too easy.
00:34:41 <oklopol> umm no it doesn't, just makes it computationally interesting
00:35:26 <revcompgeek> queues would make more sense for communication
00:35:38 <revcompgeek> which means that a stack would be better for an esoteric language
00:35:49 <oklopol> if it's finite, it can be interesting, but usually finite stuff that is interesting is infinite stuff with an arbitrary limit
00:36:20 <evincarofautumn> The limit _is_ arbitrary. It's programmer-defined.
00:36:35 <oklopol> why not just have it infinite?
00:37:42 <oklopol> if you limit it to be finite, i'm afraid the language itself will become limited
00:37:58 <evincarofautumn> But then you can't have it wrap around.
00:38:00 <ehird> everything finite sucks.
00:38:02 <ehird> ^ truth
00:38:06 <ehird> evincarofautumn: yes you can
00:38:09 <ehird> 0 - 1 = infinity
00:38:10 <evincarofautumn> I like the idea of tangly loopy crazy thread interaction.
00:38:11 <ehird> figure that one out
00:38:12 <ehird> ;)
00:38:39 <oklopol> evincarofautumn: have n dimensions, where m of them wrap
00:38:42 <oklopol> or, just 2?
00:39:07 <oklopol> then 1 infinite, one wrapping
00:39:29 <oklopol> also easier to visualize than whole wrapping, which doesn't have a 3d form.
00:40:01 <oklopol> ehird: that works for real coordinate movement quite well, but he's doing discrete
00:40:50 <oklopol> i found mostly real + graphs interesting with attractors, because in other cases "shortest path" needs to be a hack of some sort
00:41:01 <oklopol> but as i said, reals are a bit complicated
00:41:21 <evincarofautumn> Hm. I like my graph quantized.
00:41:38 -!- Corun has joined.
00:41:43 <evincarofautumn> I like 2 dimensions, 2 wrapping. Then it's standard-issue fungery.
00:41:56 <oklopol> well you can have funge-style wrapping.
00:42:09 <oklopol> infinite + wrapping, that is.
00:42:15 <evincarofautumn> Argh.
00:42:20 <evincarofautumn> I really don't get how that's useful.
00:42:30 <revcompgeek> its not
00:42:33 <revcompgeek> that is the point
00:42:43 <oklopol> because if it's finite, it's harder to tell you why you need to be able to extend command space
00:42:46 <revcompgeek> esoteric languages aren't meant to be useful
00:43:01 <oklopol> and by command space, i mean the set of program cells that contain commands
00:43:14 -!- Judofyr___ has quit (Read error: 110 (Connection timed out)).
00:43:30 <oklopol> revcompgeek: no, they're meant to be *interesting*, infiniteness has nothing to do with usefulness, it's about being interesting
00:43:32 <evincarofautumn> Yeah, but I want the finite restriction to be a mark of the program's elegance, of how tiny it can be made to work.
00:43:49 <revcompgeek> oklopol: exacly!
00:43:58 <revcompgeek> s/exacly/exactly/
00:44:09 <oklopol> revcompgeek: i was trying to explain why you were wrong :)
00:44:14 <oklopol> oh
00:44:15 <evincarofautumn> If you can get a hello world or a cat working in 2 lines of 5 chars instead of 25 lines of 80, then there's something to be said for the beauty of your code.
00:44:15 <oklopol> sorry
00:44:16 <oklopol> :)
00:44:43 <evincarofautumn> Besides, we haven't even talked about how this is supposed to be a threaded language.
00:45:20 <revcompgeek> evincarofautumn said that he doesn't get how that is useful and i was saying that it wasn't supposed to be useful
00:45:20 <oklopol> evincarofautumn: don't be like that, if it can trivially be extended to infinity, please do it, if it can't, it's probably not interesting.
00:45:38 <evincarofautumn> Hm.
00:45:41 <evincarofautumn> Well.
00:45:45 <oklopol> revcompgeek: yes, and i failed to understand what you meant at first, and apologized
00:45:53 <revcompgeek> k
00:46:38 <evincarofautumn> I suppose you could dynamically alter execution *speed* instead of direction, and repeat blocks of code by having unbounded memory to which you copy previously executed code.
00:46:39 <oklopol> evincarofautumn: i'm just saying... why not have it infinite, unless you have something like pointer size to stop ya
00:47:09 <oklopol> changing execution speed = ?
00:47:12 <evincarofautumn> Why not have it finite, when it begins to demand more elegant coding practices?
00:47:24 <oklopol> finite doesn't mean harder, usually.
00:47:27 <evincarofautumn> The rate at which the instruction pointer moves through space.
00:47:38 <oklopol> so, what does that mean exactly?
00:47:41 <evincarofautumn> Then we're not in funges so much.
00:48:15 <evincarofautumn> Well, you could have a position vector coupled with velocity and acceleration, and model the thread's journey through space using gravity.
00:48:29 <evincarofautumn> You could have missiles fired from a home base (say (0, 0))
00:48:42 <evincarofautumn> And they must reach planets to execute instructions.
00:48:46 <evincarofautumn> Whatever.
00:48:55 <oklopol> think about the turtle, how exactly is it's movement from (0,0) to (5,10) changed if speed changes?
00:49:23 <oklopol> does it move first to (0.5,0.5), then (1,1), then (1.5,1.5) etc?
00:50:15 <evincarofautumn> It could, if you're working with reals. It could just as easily go (0, 0), (2, 2), (4, 4), (5, 5), etc.
00:50:25 <evincarofautumn> (5, 6) I mean.
00:50:44 <evincarofautumn> I think this isn't really in the spirit of my original concept.
00:50:51 <oklopol> it isn't
00:50:54 <evincarofautumn> Which somebody called forkfunge.
00:51:00 <evincarofautumn> I want to keep that feeling.
00:51:02 <oklopol> real -> very different
00:51:48 <oklopol> hmm
00:51:49 <oklopol> actually
00:51:59 <oklopol> are you planning to have something like *numbers* to store stuff in?
00:52:10 <oklopol> perhaps a stack and operations for calculating stuff?
00:52:30 <evincarofautumn> Kind of.
00:52:45 <oklopol> i was assuming the computation and data are within the simple attractor following, and command space altering
00:52:52 <evincarofautumn> The only numbers you get are your location vector and the data pointed to by your parent's location vector.
00:53:05 <oklopol> hmm
00:53:05 <evincarofautumn> Plus I/O and stack.
00:53:10 <oklopol> ...stack?
00:53:18 <evincarofautumn> Stack is just for IPC.
00:53:29 <oklopol> i mean, if you have stack+bignums, you don't need infinitely extendable codespace
00:54:03 <oklopol> if you have two stacks and finite nums, once again tc
00:54:14 <evincarofautumn> I think we're starting to come together on this.
00:54:22 <oklopol> perhaps
00:54:36 <evincarofautumn> I like the devilish idea of attractors.
00:54:42 <evincarofautumn> Then you can't control how you get somewhere.
00:54:49 <evincarofautumn> You only control where you're going.
00:54:56 <evincarofautumn> ...in a manner of speaking.
00:55:09 <evincarofautumn> It's not as intuitive as setting a direction, anyway.
00:55:10 <revcompgeek> like Gravity!
00:55:59 <oklopol> yes, makes program flow harder
00:56:34 <revcompgeek> it seems like most esoteric languages are designed to be overly painful to use
00:56:44 <oklopol> but i think i'm going to go a bit more native with my graph version, stacks and numbers are just too easy ;)
00:56:51 <oklopol> well
00:56:53 <revcompgeek> and people just work to make them worse
00:57:01 <oklopol> heh
00:57:17 <evincarofautumn> Bingo, revcompgeek.
00:57:31 <revcompgeek> best example: malbolge
00:57:49 <oklopol> well the ones with a computational agent, a turtle, are the ones people usually make, simple to invent, usually tc, not at all nice to program
00:58:03 <evincarofautumn> You know, this idea doesn't seem hard enough, come to think of.
00:58:05 <oklopol> because usually you want arbitrary nesting for your structures
00:58:28 <evincarofautumn> s/of/of it/
00:58:35 <oklopol> is taht so?
00:58:51 <oklopol> oh shit i need to sleep
00:58:54 -!- timotiis has quit (Connection timed out).
00:58:54 <oklopol> cya!
00:58:55 <oklopol> ->
00:59:08 <evincarofautumn> What time zone are you?
00:59:12 <oklopol> finland
00:59:13 <oklopol> sp
00:59:16 <oklopol> *so
00:59:18 <oklopol> +2
00:59:31 <evincarofautumn> Ah.
00:59:38 <oklopol> 3 am
00:59:39 <evincarofautumn> I'm -5.
00:59:44 <oklopol> heh
01:00:16 <oklopol> now, sleep
01:00:17 <oklopol> ->
01:00:28 <evincarofautumn> Okay.
01:00:30 <evincarofautumn> Later.
01:00:48 <revcompgeek> has anyone looked at BRZRK?
01:01:29 <evincarofautumn> Looking it up right now.
01:03:00 <ehird> revcompgeek: Hello! You are one of the few people who uses the forum.
01:03:01 <evincarofautumn> Can't find it...
01:03:02 <ehird> I use the forum too!
01:03:23 <revcompgeek> the website appears to be down
01:03:25 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).
01:03:34 <revcompgeek> ehird: i just found it a few days ago
01:03:35 <ehird> No it's not.
01:04:03 <revcompgeek> http://esoteric.voxelperfect.net/wiki/BRZRK
01:04:27 <evincarofautumn> Dang. Should have looked on the wiki.
01:04:32 <evincarofautumn> :P
01:07:26 <evincarofautumn> Okay.
01:07:34 <evincarofautumn> It's interesting.
01:07:39 <Sgeo> What forum?
01:08:03 <evincarofautumn> http://esoteric.voxelperfect.net/forum/
01:09:34 <revcompgeek> it isn't the best forum that could be used
01:09:38 <ehird> revcompgeek: Yes it is.
01:09:56 <revcompgeek> yes what is?
01:10:00 <ehird> I am ready to fully and strongly argue the point that the software is far superior to phpBB and clones, but Graue already did that in a previous thread.
01:10:25 -!- Judofyr_ has joined.
01:10:30 <ehird> Summary of why the software is better (linked from the previous thread about this on the forums): http://wakaba.c3.cx/shii/shiichan
01:13:29 <evincarofautumn> Hm.
01:13:51 <revcompgeek> umm....
01:14:15 <revcompgeek> anyway, what do you guys think about
01:14:19 <revcompgeek> BRZRK
01:14:23 <revcompgeek> sry
01:14:49 <evincarofautumn> Like I said, it's interesting.
01:14:55 <evincarofautumn> I tend to prefer more obfuscated things.
01:15:29 <evincarofautumn> This seems more...high-level specialisation in lieu of outright obfuscation.
01:16:01 <revcompgeek> so... how could i make it more obfuscated
01:16:43 <revcompgeek> it was actually designed to be more powerful and less obfuscated
01:16:54 <revcompgeek> it is obfuscated none the less
01:16:57 <evincarofautumn> I think that's a fine goal.
01:17:05 <evincarofautumn> And it certainly is obfuscated to some extent.
01:17:07 <evincarofautumn> Yeah.
01:17:20 <revcompgeek> i want it to be object oriented at some point
01:17:22 <evincarofautumn> I like the way your cat looks.
01:17:42 <revcompgeek> yeah, that is what i want most of the code to look like!
01:17:46 <evincarofautumn> It's almost understandable...
01:17:51 <evincarofautumn> I like that, actually.
01:18:13 <evincarofautumn> I think you should be able to figure out how a language works but have a hard time using it nonetheless.
01:18:21 <revcompgeek> it hurts my brain less to write something that is both powerful and obfuscated
01:18:22 <evincarofautumn> esolang, of course.
01:18:31 <evincarofautumn> Heh, I know the feeling.
01:18:47 <revcompgeek> rather than pure obfuscation
01:19:00 <evincarofautumn> The closest I ever came was something called "symbol", which I never released.
01:19:00 <revcompgeek> like malbolge (YUCK!)
01:19:14 <ehird> revcompgeek: I love malbolge.
01:19:19 <evincarofautumn> Yuck in a really cool way, though.
01:19:20 <ehird> I mean sure, doing something like it is old hat now
01:19:32 <revcompgeek> ehird: have you written anything useful in it?
01:19:35 <ehird> But there was a trend LEANING towards that way at the time, and Malbolge just took it and slammed it to death.
01:19:40 <ehird> It is the ultimate.
01:19:50 <ehird> revcompgeek: No -- nothing. But it is lovely.
01:19:54 <evincarofautumn> None has written anything useful in it by hand.
01:20:02 <revcompgeek> GA
01:20:08 <revcompgeek> Genetic Algorithms
01:20:17 <evincarofautumn> No human, anyway.
01:20:19 <revcompgeek> i wrote a GA library in D recently
01:20:21 <evincarofautumn> Heh.
01:20:25 <evincarofautumn> Nice.
01:20:30 <evincarofautumn> What functionality?
01:20:42 <revcompgeek> it would be reasonably simple to make a malbolge evolver
01:20:49 <revcompgeek> functionality?
01:20:51 <revcompgeek> explain
01:21:08 <evincarofautumn> What features does your library include?
01:21:14 <revcompgeek> you can look at the source in dsource.org/projects/AID/
01:21:25 <revcompgeek> basic string evolution
01:21:38 <evincarofautumn> 500: Project AID does not exist.
01:21:53 <revcompgeek> uh oh, let me check
01:22:19 <revcompgeek> make aid lower case
01:22:35 <revcompgeek> i like ai
01:22:38 <ehird> <evincarofautumn> None has written anything useful in it by hand.
01:22:40 <ehird> Yesss they have!
01:22:51 <revcompgeek> one plus to my language is that it would be easy to use in genetic programming
01:23:07 <evincarofautumn> ehird:Has the news broken and I missed it?
01:23:09 <evincarofautumn> Crap!
01:23:14 <ehird> evincarofautumn: It was ages ago!
01:23:17 <ehird> But he hasn't revealed his secrets.
01:23:18 <evincarofautumn> Crap!
01:23:19 <ehird> He's evil!
01:23:22 <ehird> http://www.antwon.com/index.php?p=234
01:23:22 <evincarofautumn> Oh.
01:23:24 <ehird> 2000, in fact!
01:23:24 <evincarofautumn> Of course.
01:23:37 <ehird> '"Hello, world." — blatant self-promotion — a keen observation '
01:23:40 <ehird> three programs
01:23:49 <ehird> hand-crafted (it seems, from the look of them) malbolge programs
01:24:06 <ehird> evincarofautumn: Also - http://esoteric.voxelperfect.net/wiki/Malbolge_programming
01:24:10 <ehird> And: http://www.lscheffer.com/malbolge.shtml
01:24:41 <ehird> evincarofautumn: There's also a real-loop 99bob in Malbolge.
01:25:07 <evincarofautumn> I've seen that one.
01:25:17 <evincarofautumn> Nearly crapped my pants.
01:25:35 <evincarofautumn> Most loops like to terminate like crazy.
01:25:57 <ehird> heh
01:26:02 <ehird> 'PLEASE!! LET ME TERMINATE!!! :('
01:26:27 <ehird> hmm
01:26:33 <ehird> esolang's Malbolge page has the FSA category
01:26:36 <ehird> but no justification
01:26:59 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
01:27:15 <evincarofautumn> Odd.
01:27:21 <evincarofautumn> Has it been proven tc?
01:27:23 <revcompgeek> i just added a more obfuscated cat to the BRZRK page
01:28:02 <revcompgeek> S_0While!=_*2+67`BS_'$_
01:28:52 <revcompgeek> if i renamed the loops to shorter and more obfuscated names, would that be better?
01:28:54 <evincarofautumn> Nice.
01:29:10 <ehird> revcompgeek: no
01:29:11 <evincarofautumn> I was just about to say, I'd like a symbol for the commonly-used loops.
01:29:12 <ehird> that's selling out
01:29:13 <ehird> :-)
01:29:28 <evincarofautumn> Maybe you could eliminate for?
01:29:34 <evincarofautumn> That's just me.
01:29:36 <evincarofautumn> I never like for loops.
01:29:41 <revcompgeek> i am almost out of symbols to use
01:29:47 <ehird> revcompgeek: the While looks kinda cute
01:29:56 <revcompgeek> for will stay there, but it doesn't have to be used
01:30:10 <evincarofautumn> It is kind of cute, sitting there all alone, surrounded by line noise...
01:30:16 <revcompgeek> how about While -> W
01:30:22 <revcompgeek> Do -> D
01:30:26 <revcompgeek> For -> F
01:30:32 <revcompgeek> If -> I
01:30:38 <revcompgeek> Ifelse -> Ie
01:30:49 <ehird> revcompgeek: nononono
01:31:09 <revcompgeek> can i have anyone else's opinion?
01:32:34 <revcompgeek> apparently no one else has an opinion
01:33:19 <ehird> revcompgeek: no. everyone else just isn't here
01:33:40 <revcompgeek> what about evin?
01:33:53 <revcompgeek> or evincarofautumn
01:33:59 <revcompgeek> that name is too long
01:34:07 <evincarofautumn> Ha.
01:34:19 <evincarofautumn> I have no opinion, I guess.
01:34:26 <evincarofautumn> Or a neutral opinion.
01:34:46 <revcompgeek> which is better: S_0While!=_*2+67`BS_'$_ or S_0W!=_*2+67`BS_'$_
01:34:53 <revcompgeek> wow that looks better
01:35:00 <revcompgeek> S_0While!=_*2+67`BS_'$_
01:35:05 <revcompgeek> vs S_0W!=_*2+67`BS_'$_
01:35:26 <revcompgeek> that looks quite obfuscated to me
01:36:44 <evincarofautumn> Maybe you could offer both, if you can't decide.
01:37:21 <revcompgeek> i would like the interpreter to be able to output the obfuscated version of the code
01:37:27 <revcompgeek> ie: without comments or whitespace
01:37:57 <revcompgeek> having multiple names for loops makes it even more fun to obfuscate!
01:38:09 <revcompgeek> i like it
01:38:15 <evincarofautumn> Call them "Traditional" and "Simplified" after Chinese.
01:38:24 <revcompgeek> :P
01:38:34 <evincarofautumn> Then write a converter in the language ^_^
01:38:45 <revcompgeek> :D
01:38:49 <revcompgeek> nah
01:39:00 <revcompgeek> output from the parser will be the easiest to do
01:39:17 <revcompgeek> if someone wants to write an obfuscator in the language then be my guest
01:40:38 <ehird> revcompgeek: Obviously, you should ignore lower-case letters.
01:40:41 <ehird> Then W and While both work.
01:40:45 <ehird> And you get comments for free!
01:40:47 <evincarofautumn> Yes!
01:40:50 <evincarofautumn> Yes yes yes!
01:40:59 <evincarofautumn> Beautiful!
01:41:24 <ehird> Also, Winter works too.
01:41:30 <ehird> As well as What is this nonsense
01:42:21 <ehird> So_0What is this nonsense!obviously x=five but _*2+67is not grand which is`BullShit_'$_
01:42:40 <evincarofautumn> And since the syntax is punctuation-based, you can inline it as much as you want, making it look like normal text.
01:42:44 <ehird> It's like oerjan's Unlambda in INTERCAL
01:42:47 <evincarofautumn> Steganography right there.
01:42:52 <ehird> "PLEASE NOTE RISING INFLATION" and stuffs
01:42:59 <evincarofautumn> Heh.
01:46:45 <evincarofautumn> Oh wow. I just found one of my old eso specs.
01:48:06 <evincarofautumn> You get...sponges. Sponges are like variables, but they can absorb an unlimited number of values, string or integer, and you don't know which stored value you'll receive when you 'squeeze' it.
01:48:14 <evincarofautumn> Nice.
01:48:40 <evincarofautumn> Apart from that, math operations are fairly deterministic...provided you only use single-valued sponges.
01:50:02 <evincarofautumn> Sponge Spongey
01:50:04 <evincarofautumn> Spongey Absorb Hello World
01:50:05 <evincarofautumn> Squeeze Spongey
01:50:07 <evincarofautumn> Squish Spongey
01:50:08 <evincarofautumn> Splat
01:50:42 <ihope> Cool.
01:50:45 <revcompgeek> awsome
01:50:59 <ihope> Just what do squeeze and squish do?
01:51:10 <ehird> revcompgeek: Are you goign to make it ignore lowercase?
01:51:11 <ehird> Best idea ever
01:51:18 <revcompgeek> no
01:51:29 <revcompgeek> that removes the power
01:51:41 <revcompgeek> if you notice, you can define functions
01:51:58 <revcompgeek> if you only have uppercase, there can be no variables and only a few functions
01:52:05 <revcompgeek> that is a completely different language
01:52:39 <ehird> revcompgeek: your comment chars are {...}
01:52:42 <ehird> make {...} mean a name
01:52:45 <ehird> so {foo} is a function name
01:52:48 <ehird> i.e. it's anti-comment
01:53:10 <evincarofautumn> That's nice.
01:53:19 <evincarofautumn> Then they stick out like they're not supposed to be there.
01:53:30 <evincarofautumn> Plus you can include any non-} character.
01:53:47 <revcompgeek> this is a completely new language
01:53:53 <ehird> revcompgeek: no it's nt
01:53:57 <ehird> you're being a bit too protective of it
01:54:00 <ehird> it's a good idea, and it works neatly
01:54:03 <ehird> and allows fun obfuscation
01:54:08 <evincarofautumn> ihope: squeeze outputs a value of a sponge, apparently, and squish undefines it.
01:54:14 <revcompgeek> it is a good idea
01:54:35 <revcompgeek> but my language is very different from the one you are describint
01:54:44 <revcompgeek> s/describint/describing
01:54:45 <ehird> revcompgeek: It's called 'revisions'.
01:54:50 <ehird> Not very different anyway
01:54:50 <evincarofautumn> Well, you don't _have_to obfuscate.
01:54:53 <evincarofautumn> It's just fun.
01:54:53 <ehird> Just: {...} makes it a name
01:54:56 <ehird> and otherwise lowercase is ignored
01:55:03 <ihope> Syntax change.
01:55:40 <revcompgeek> {} can be used for functions or variables?
01:55:51 <revcompgeek> how do you distinguish?
01:56:35 <ehird> revcompgeek: How do you distinguish now?
01:56:43 <ehird> It's just that inside {}, things like 'abc' aren't comments
01:56:59 <ehird> It's the anti-comment: It means 'this contains lowercase letters, BUT it's a name'
01:57:11 <revcompgeek> hmm
01:57:59 <revcompgeek> no
01:58:31 <evincarofautumn> Why no?
01:58:44 <evincarofautumn> What else do you use {} to do if they were comment chars before?
01:58:54 <revcompgeek> but, since it is fairly similar, the scanner and parser i have written would only take minor modifications to accept it
01:58:58 <evincarofautumn> Or are you looking to be able to include uppercase characters in comments.
01:59:11 <evincarofautumn> s/\./\?/
01:59:20 <revcompgeek> i don't really need {}
01:59:27 <revcompgeek> but i needed comments
01:59:38 <revcompgeek> they really could be [] or ()
02:01:03 <ehird> revcompgeek: why ask if you will just say 'no' to suggestions?
02:02:39 <revcompgeek> those aren't really the suggestions i was looking for
02:02:43 <revcompgeek> but i like both ideas
02:02:57 <revcompgeek> function calls would be {name}{body}
02:03:06 <revcompgeek> just for obfuscation purposes
02:03:24 <revcompgeek> or {name}{params}
02:04:19 <revcompgeek> blocks of code inside []
02:05:12 <revcompgeek> would make a fairly interesting polyglot between the two
02:05:27 -!- calamari has joined.
02:08:08 <revcompgeek> now no one will talk to me
02:08:19 <evincarofautumn> Barglemash.
02:08:25 <evincarofautumn> Oh, wait.
02:08:27 <evincarofautumn> You said talk.
02:08:31 <evincarofautumn> Hello.
02:08:36 <revcompgeek> HI
02:08:44 <revcompgeek> Barglemash?
02:09:04 <evincarofautumn> I have some bad memories of that I have to deal with.
02:09:08 <evincarofautumn> It happened a few lines ago.
02:09:12 <evincarofautumn> I don't want to talk about it.
02:09:16 <evincarofautumn> ^_^
02:11:32 <revcompgeek> did i say something wrong?
02:11:40 <revcompgeek> was asking for suggestions a mistake?
02:13:24 <evincarofautumn> No.
02:13:29 <evincarofautumn> Well, maybe.
02:13:40 <evincarofautumn> I didn't even ask, and got crazy suggestions.
02:14:08 <evincarofautumn> Which, like yours, were unfitting with my original idea.
02:14:14 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
02:14:15 <evincarofautumn> You have to forgive people for being eager.
02:14:49 <revcompgeek> i am not angry at anyone for being eager
02:14:52 <revcompgeek> i like the ideas
02:15:02 <revcompgeek> but my language is just so clean the way it is...
02:15:09 <evincarofautumn> Heh.
02:15:21 <evincarofautumn> There are LISP programmers out there who would kill you for saying that.
02:15:43 <revcompgeek> :)
02:15:54 <revcompgeek> it is a good thing this isn't #lisp
02:16:05 <evincarofautumn> Sho' you right.
02:16:34 <revcompgeek> i will take suggestions for the new language
02:16:49 <revcompgeek> including names
02:18:56 <revcompgeek> if anyone wants to contribute
02:19:27 <evincarofautumn> Bah.
02:19:43 <evincarofautumn> I just got into writing a new one of my own.
02:20:07 <revcompgeek> like what?
02:20:14 <revcompgeek> if you are willing to explain...
02:20:39 <evincarofautumn> All right.
02:21:02 <evincarofautumn> Limited number of variables, unlimited stack.
02:21:11 <evincarofautumn> You have to select a variable to perform an operation on it.
02:21:35 <evincarofautumn> Otherwise it's locked, and accessing it raises an exception.
02:21:50 <revcompgeek> ooh! exceptions!
02:21:58 <revcompgeek> :D
02:22:23 <evincarofautumn> Yeah.
02:22:30 <evincarofautumn> I'm thinking of taking the locking concept to the extreme.
02:22:50 <evincarofautumn> Basically there's one unlocked block of program code at startup
02:23:05 <evincarofautumn> and the interpreter loops through the entire source until all of the blocks are locked.
02:23:17 <evincarofautumn> Blocks are named, and can be locked/unlocked arbitrarily.
02:23:29 <revcompgeek> can only be run if unlocked?
02:23:36 <evincarofautumn> Yep.
02:23:42 <revcompgeek> Nice.
02:23:52 <evincarofautumn> I could call it mutex.
02:24:13 <revcompgeek> for the name?
02:24:14 <evincarofautumn> Come to think of it, that's just what I'll do.
02:24:17 <evincarofautumn> Yeah.
02:24:19 <revcompgeek> i like it!
02:24:26 <revcompgeek> seriously!
02:24:35 <evincarofautumn> Hm.
02:24:47 <evincarofautumn> I have to get working on this.
02:25:11 <evincarofautumn> I'll toss it on the wiki today or tomorrow.
02:25:18 <revcompgeek> i can't wait
02:25:50 <evincarofautumn> All right.
02:25:54 <evincarofautumn> Guess I'm outta here then.
02:26:07 <evincarofautumn> It's been nice talking.
02:26:09 <revcompgeek> bye
02:26:13 -!- evincarofautumn has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
02:30:55 <Slereah_> http://www.youtube.com/watch?v=kEDsycpvP30&feature=related
02:31:04 <Slereah_> Borat explains why evolution is wrong.
02:45:01 -!- Corun has quit ("This computer has gone to sleep").
02:49:52 <revcompgeek> anyone here that likes nondeterministic languages?
02:50:12 <Slereah_> Not really.
02:50:29 <Slereah_> I did some random number function on the Love Machine 9000, but I don't use it much
02:50:47 <revcompgeek> me neither, but i just thought of a good idea for one
02:51:56 <revcompgeek> i got the idea from quantum computers
02:52:06 <revcompgeek> but they are unrelated
02:54:06 -!- Judofyr has joined.
02:54:44 <revcompgeek> judofyr: you like nondeterministic languages?
02:55:52 <revcompgeek> why do people join if they don't answer/participate?
02:56:38 <Slereah_> Because they have autojoin?
02:56:59 <revcompgeek> ahh
02:57:24 * oerjan is currently falling deeper and deeper into a black hole known as TvTropes
02:58:08 <revcompgeek> TvTropes?
02:58:24 <oerjan> an extremely addictive wiki
02:59:35 <Slereah_> Indeed.
03:01:13 -!- Judofyr__ has joined.
03:02:10 <Slereah_> So, what is your idea revcompgeek
03:02:44 <revcompgeek> hmmm
03:02:50 <revcompgeek> how should i put it...
03:03:13 <revcompgeek> each line is a value and a list of operations
03:03:37 <revcompgeek> when run, a random number is chosen
03:03:58 <revcompgeek> the operation is chosen with that number for each line in the program
03:04:12 <revcompgeek> and applied to the value of that line
03:05:50 <revcompgeek> these operations are math operations
03:06:23 <revcompgeek> when the first line's value becomes 0, the program is halted
03:06:41 <revcompgeek> i haven't decided what the output is
03:06:54 <revcompgeek> either the values of the other lines when the program exits
03:07:03 <revcompgeek> or outputed with an output operation
03:07:54 <Slereah_> Is it... TC?
03:08:02 <revcompgeek> lines look like "line number: (value) operations"
03:08:06 <revcompgeek> TC?
03:09:25 <revcompgeek> what is TC?
03:09:51 <Slereah_> Turing Complete.
03:10:10 <revcompgeek> probably not
03:10:23 <revcompgeek> but with some modifications it might be
03:10:36 <revcompgeek> like a way of ensuring that a certain operation runs
03:10:56 <revcompgeek> and a storage space
03:10:58 <revcompgeek> like a stack
03:11:16 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
03:17:29 -!- Judofyr_ has joined.
03:17:56 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
03:34:07 -!- Judofyr__ has quit (Read error: 110 (Connection timed out)).
04:00:16 -!- pikhq has quit (Read error: 110 (Connection timed out)).
04:25:36 -!- Judofyr has joined.
04:26:45 -!- Judofyr__ has joined.
04:43:15 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
04:43:33 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
04:52:56 -!- Judofyr has joined.
04:56:46 -!- revcompgeek has quit ("ChatZilla 0.9.81 [Firefox 3.0b5/2008032619]").
04:59:06 -!- Judofyr_ has joined.
05:09:47 -!- Judofyr__ has quit (Read error: 110 (Connection timed out)).
05:16:31 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
05:33:22 -!- Judofyr has joined.
05:50:04 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
05:50:33 -!- Judofyr_ has joined.
06:06:44 -!- Judofyr__ has joined.
06:06:52 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
06:08:06 -!- oerjan has quit ("Enough with the martial arts").
06:17:14 -!- bsmntbombdood has quit.
06:17:48 -!- bsmntbombdood has joined.
06:23:27 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
06:37:49 -!- Judofyr has joined.
06:45:59 -!- Judofyr_ has joined.
06:55:40 -!- Judofyr__ has quit (Read error: 110 (Connection timed out)).
07:02:54 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
07:06:10 -!- Judofyr has joined.
07:23:35 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
07:36:29 -!- calamari has quit ("Leaving").
07:40:43 -!- pikhq has joined.
07:53:21 -!- Judofyr_ has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:10:42 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
08:31:38 -!- Judofyr has joined.
08:41:44 -!- Judofyr__ has joined.
08:48:14 -!- Iskr has joined.
08:48:39 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
08:58:45 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
09:07:58 -!- Judofyr has joined.
09:14:03 -!- Judofyr_ has joined.
09:24:34 -!- Judofyr__ has quit (Read error: 110 (Connection timed out)).
09:28:14 -!- Judofyr__ has joined.
09:31:19 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
09:45:09 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
10:02:52 -!- Judofyr__ has quit (Read error: 104 (Connection reset by peer)).
10:03:30 -!- Judofyr has joined.
10:34:16 -!- Sgeo has quit ("Ex-Chat").
10:46:09 -!- lifthrasiir has joined.
11:12:36 -!- oklopol has quit (Read error: 113 (No route to host)).
11:15:04 -!- tejeez has quit (Read error: 145 (Connection timed out)).
11:24:33 -!- Judofyr_ has joined.
11:42:16 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
11:44:43 -!- Judofyr has joined.
11:50:48 -!- Judofyr__ has joined.
11:52:59 -!- Judofyr___ has joined.
12:02:30 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
12:08:06 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
12:10:03 -!- Judofyr__ has quit (Read error: 110 (Connection timed out)).
12:15:48 -!- timotiis has joined.
12:31:27 -!- Corun has joined.
12:38:54 -!- Judofyr___ has quit (Read error: 104 (Connection reset by peer)).
12:40:08 -!- Judofyr has joined.
12:56:51 -!- timotiis_ has joined.
13:10:43 -!- timotiis has quit (Read error: 110 (Connection timed out)).
13:11:10 -!- Judofyr_ has joined.
13:17:23 -!- ehird has joined.
13:21:00 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
13:21:08 -!- ehird has joined.
13:27:59 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
15:03:44 -!- Corun has quit ("This computer has gone to sleep").
15:04:38 -!- Corun has joined.
15:29:30 -!- Judofyr has joined.
15:46:33 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
15:53:08 -!- Corun has quit ("This computer has gone to sleep").
16:00:31 <ehird> 57
16:00:58 <Slereah_> 26580
16:01:09 <Slereah_> Oooooh dial up if you want to know me!
16:03:42 <ehird> 454548
16:07:13 -!- evincarofautumn has joined.
16:07:35 <evincarofautumn> Word, folk.
16:13:35 <Slereah_> ello sir
16:14:31 <ehird> hello evincarofautumn
16:14:39 <ehird> i am hereby suggesting a new irc name for you
16:14:39 <ehird> evincar
16:14:49 <ehird> your current one is jarring
16:14:50 <ehird> :-)
16:14:59 <ehird> bonus points: it's not registered
16:16:57 <ehird> evincarofautumn: no?
16:17:46 <pikhq> :D
16:19:05 <ehird> pikhq: :D
16:19:57 -!- ais523 has joined.
16:20:55 <ehird> ais523: hello
16:20:57 <ehird> ircnomic needs you!
16:20:59 <ehird> it's deeeed
16:21:02 <ais523> hello ehird
16:21:16 <pikhq> No it doesn't.
16:21:32 <ehird> pikhq: Yuss it does.
16:21:37 * pikhq needs to recover from last night
16:21:41 <ehird> He's the only one who isn't incompetent with the admin interface!
16:21:47 <ais523> wow, no rules were added since I last looked at it?
16:21:50 <ehird> 'recover' from last night?
16:21:58 <ehird> pikhq, evidently, has inconsistent blocks
16:21:59 <pikhq> No quote marks.
16:22:01 <ehird> :-P
16:22:07 <ehird> ais523: nope
16:22:14 <ehird> nothing happened -all night-
16:22:15 <ehird> not one message
16:22:18 <ehird> just joins/parts
16:22:19 <ehird> about 4
16:22:31 * pikhq had prom last night.
16:22:41 <ehird> pikhq: I was talking to ais523 anyway
16:22:47 <pikhq> Mmkay.
16:27:05 <ais523> ircnomic = IRC, without a microphone
16:30:46 <ehird> ais523: Well that ... doesn't make a lot of sense
16:31:46 -!- evincarofautumn has quit (Read error: 110 (Connection timed out)).
16:43:52 -!- evincarofautumn has joined.
16:46:03 <evincarofautumn> Okay.
16:46:13 <evincarofautumn> Now that my internet has stopped dying.
16:47:28 <ehird> evincarofautumn: /nick evincar
16:47:34 <ehird> /msg nickserv register <password>
16:47:37 <ehird> or i will tear my hair out :D
16:47:41 -!- evincarofautumn has changed nick to eoa.
16:48:32 <eoa> There.
16:48:45 <eoa> Now it's convenient to type for y'all.
16:49:41 <ehird> eoa: evincar is easier to type
16:49:53 <eoa> The product of last night's work: http://esoteric.voxelperfect.net/wiki/Selector
16:51:23 <eoa> Are you kidding?
16:51:35 <ais523> eoa is easier to type than evincar
16:51:36 <eoa> Eoa bounces nicely between the hands.
16:51:46 <ais523> vinc is a tricky character sequence
16:51:52 <eoa> Whatever.
16:51:56 -!- eoa has changed nick to evincar.
16:52:00 <ehird> ais523: evi<tab>
16:52:09 <ehird> evincar: you'll probably want to register that
16:52:17 <ehird> /msg NickServ register <pass>, if you didn't know
16:52:46 <ehird> 'LESS KNOB'
16:52:47 <ehird> brilliant
16:53:53 <evincar> Heh. Thanks.
16:54:16 <evincar> How should I cat this?
16:54:37 <ais523> Category:2008, obviously
16:54:49 <ais523> I'll need to read the description to figure out the other cats
16:55:11 <evincar> I'm thinking Languages, Low-level, Unimplemented, 2008?
16:56:04 <ais523> evincar: I think that lang's a push-down automaton
16:56:07 <ais523> so you can add that too
16:56:18 <ais523> I don't see how it can be TC, because you can't random-access an infinite amount of storage
16:56:32 <ais523> (you only have one stack, and can't delve into deeper down the stack)
16:56:36 <ais523> or are numbers unbounded?
16:56:41 <evincar> Numbers are unbounded.
16:56:56 <ais523> OK, in that case it's TC because you can simulate Minsky-machine-Brainfuck trivially in it
16:57:02 <evincar> Cools.
16:57:09 <evincar> Not quite a tarpit, though.
16:58:43 <RodgerTheGreat> I think this language could be quite entertaining if it read each command via text-to-speech as it executed.
16:59:08 <evincar> Ha!
16:59:11 <evincar> I'm going to try that.
17:02:16 <evincar> It's amusing.
17:02:21 <evincar> Not hilarious.
17:02:40 <evincar> I think it would be more entertaining if I had included more of the looping and block control constructs.
17:02:42 <ais523> evincar: have you ever played WarioWare?
17:02:58 <evincar> Yes. All of them.
17:03:23 <ais523> evincar: I was just wondering what would have inspired you to create such a language, and WarioWare was my first guess
17:03:31 <ais523> I only have the DS version, but it's good
17:03:40 <evincar> Heh.
17:03:50 <evincar> That's a wierd guess. ^_^
17:04:10 <evincar> I just started writing ideas down, and this is what I got.
17:04:14 <ehird> evincar: It's not Wierd, that's binary
17:04:21 <evincar> Heh.
17:04:32 <evincar> eso programmers and their in-jokes.
17:04:42 * evincar shakes a fist
17:06:15 <Slereah_> HEY GAIZ, LET'S USE ESCO
17:07:11 <ehird> Slereah_: tee hee
17:07:40 <evincar> Urgh.
17:07:48 <evincar> You're hurting me.
17:07:56 <Slereah_> What else is an awesome eso joke.
17:08:06 <ehird> Slereah_: ... And then I brainfucked her!!
17:08:08 <ehird> ahahahahhahah
17:08:19 <Slereah_> Oh you.
17:10:26 <evincar> And then she said "KTHXBAI".
17:10:33 <evincar> And that was the end of it.
17:11:12 <ehird> evincar: HAHAHA
17:11:15 <ehird> And then i was befunged!!
17:11:28 <evincar> Come to think of it, it really bothers me that lolcode uses "VISIBLE".
17:11:31 <ehird> oh lordy we are great kommunist komedians
17:11:41 <evincar> Can't you come up with a more lolcatsy command name?
17:11:48 <ehird> evincar: 'INVISIBLE SANDWICH'
17:11:51 <ehird> 'VISIBLE SANDWICH'
17:11:53 <ehird> it's a common meme
17:12:02 <ehird> VISIBLE is already lolcatsy
17:12:20 <evincar> I know it's a common meme, but...
17:12:23 <evincar> dang.
17:12:33 <evincar> It just doesn't seem to fit with the rest of the code.
17:13:13 <evincar> Like "IM IN UR LOOP UPPIN UR VAR TIL BOTHSAEM VAR AN 10"
17:13:15 <evincar> Classic.
17:15:31 <Slereah_> What is visible for again, output?
17:15:51 <ehird> yes
17:16:40 <evincar> I like the proposed event-handling system.
17:16:45 <evincar> IZ CATURDAY!
17:16:52 <evincar> ...
17:16:53 <evincar> ON CATURDAY
17:16:55 <evincar> ...
17:17:00 <evincar> KTHXBYE
17:17:40 <Slereah_> Will it POST SOME FUCKING CATS?
17:18:06 <evincar> Um.
17:18:08 <evincar> Yes?
17:18:20 <Slereah_> For that is what is done on Caturday!
17:19:21 <evincar> Sho you right.
17:19:31 <ehird> Slereah_: PLEASE DO POST SOME FUCKING CATS
17:19:33 <ehird> i love intercal
17:19:47 <ais523> ehird: that was random; anything in particular you like about it?
17:20:37 <ehird> ais523: 'PLEASE DO'
17:20:43 <ehird> PLEASE DO POST SOME FUCKING CATS
17:20:59 <Slereah_> http://images.encyclopediadramatica.com/images/9/96/Raepcat.jpg
17:21:04 <evincar> COME FROM.
17:21:07 <Slereah_> Am I doin it rite?
17:21:30 <ehird> Slereah_: I didn't need to see that
17:22:01 <ais523> MAYBE PLEASE DO NOT %50 POST SOME FUCKING CATS ONCE
17:22:29 <ehird> ais523: hah
17:24:57 <evincar> Compile Error: Excessively polite.
17:25:26 <ais523> evincar: the program's less than three lines long, so that error doesn't apply
17:25:27 <ehird> evincar: ais523 must have lots of fun maintaining that module
17:26:11 <evincar> Heh.
17:26:33 <ehird> evincar: (ais523 maintains C-INTERCAL)
17:26:39 <evincar> Oh.
17:26:44 <evincar> I am in the presence of greatness.
17:26:48 <ehird> heh
17:26:57 <ehird> well, dbc is Daniel B Cristofani
17:26:58 * evincar runs and grabs some disinfectant
17:27:02 <ehird> i think that's all the esocelebs in here
17:27:07 <ehird> though really the community is so small we're all celebs
17:27:13 <evincar> Whoo!
17:27:27 <evincar> To be a celebrity in a constantly-near-defunct community!
17:27:30 <Slereah_> Well, AIS is the motherfucking Wolfram winner, too D:
17:27:46 <evincar> :O
17:28:16 <ais523> Slereah_: I'm not sure about the motherfucking part, but otherwise that's right
17:28:27 <ehird> Slereah_: I was going to say that but then I remembered that ais523 doesn't like his name revealed
17:28:30 <Slereah_> I will have to ask miss Smith.
17:28:39 <Slereah_> My bad then.
17:28:46 <ehird> but i think that's just on wikipedia
17:28:56 <ais523> ehird: it's reasonably fine here
17:28:57 <evincar> I think maybe intercal was a touch of inspiration for my Selector.
17:28:58 <ehird> where, apparently, he will be murdered in his sleep
17:29:02 <ais523> but not on Wikpedia or any Wikipedia-related channels
17:29:24 <ehird> actually, the idea of ais523 being murdered in his sleep because of wikipedia is vaguely amusing
17:29:37 <ehird> 'Aha! Now you will delete my pages... NO MORE!'
17:29:52 <Slereah_> Is there a price on his head?
17:29:55 <ehird> 'This is what you get... for violating the... THREE REVERT RULE!!!!!'
17:29:56 -!- timotiis_ has changed nick to timotiis.
17:30:01 <Slereah_> 'cause I need sum money.
17:30:06 <ais523> Slereah_: not yet, but it has happened to many other admins
17:30:39 <ais523> so far nobody's got mad at me for making technical improvements to the deletion system and fixing typos in templates, but you never know...
17:30:45 <ais523> there are some pretty strange people on the Internet
17:30:56 <ais523> and a significant proportion of them are aware of Wikipedia
17:31:05 <ehird> ais523: maybe ec will be the real problem
17:31:11 <ehird> "I fucking despise that site .... AND YOU!!!"
17:31:18 <ehird> *stabstabstabstabstabstabstab*
17:32:10 <Slereah_> And is there no strange people on eso?
17:32:20 <ais523> Slereah_: yes, but there are all types of strangeness
17:32:27 -!- Judofyr has quit (Connection timed out).
17:32:36 <ais523> and the types which would go and track me down and deal me physical harm are hopefully rare here
17:32:50 <ehird> ais523: Actually I'm an insane psychopath.
17:32:53 <ehird> I am tracking you down now.
17:32:58 <ehird> Oh, hello! I'm behind you.
17:33:05 * ais523 looks behind themself
17:33:07 <ais523> ehird: no you aren't
17:33:17 <ehird> ais523: Oh... really?
17:33:21 <ais523> at least, not immediately behind
17:33:23 -!- ehird has changed nick to als523.
17:33:25 <als523> ..... Uh, guys? I just kinda killed someone. Halp?
17:33:30 <als523> i'm typing from his keyboard
17:33:30 <ais523> you have approximately a 1-in-2 chance of being somewhere behind
17:33:31 <Slereah_> Don't answer that craigslist ad looking for a wolfram prize winner, it's a trap!
17:33:36 <als523> ais523: WHOA IT'S A GHOST
17:33:46 <als523> crazy
17:33:48 -!- als523 has changed nick to ehird.
17:33:53 <ehird> Um, you killed ais523?!
17:33:55 -!- ehird has changed nick to als523.
17:33:57 <als523> Yup.
17:34:07 <als523> ... Bah, nick change limit.
17:34:09 <ais523> in fact, that's a 100% chance if you allow 'behind' to wrap around the world
17:34:09 <als523> I mean ... er...
17:34:11 <als523> Something
17:34:17 -!- als523 has changed nick to ehird.
17:34:27 <ais523> ehird: I can see the nick changes in my client, you are unlikely to fool anyone like that
17:34:40 <evincar> Same here.
17:34:55 <ehird> ais523: <.<
17:35:05 <ais523> what's the difference between <.< and >.>?
17:35:19 <ais523> is it like ec's upside-down smilies?
17:35:27 <ehird> ais523: <.< means you're looking one way
17:35:30 <ehird> >.> means another
17:35:31 <ais523> (you draw smilies upside-down if you're left-handed, right?)
17:35:33 <evincar> ais523: Maybe it's a glass-half-empty, glass-half-full thing.
17:35:36 <ehird> >.< means your eyes are broken
17:35:39 <ehird> and <.> is something other
17:35:42 <ehird> IT RHYMES
17:35:45 <evincar> It looks concerned.
17:35:56 <ais523> ehird: <.> is that negative-list language
17:36:27 <Slereah_> v.v
17:36:30 <Slereah_> ^.^
17:36:38 <Slereah_> .
17:36:39 <evincar> ^_^
17:36:40 <ehird> ais523: nopol
17:36:44 <evincar> @o@
17:36:55 <Slereah_> n.n
17:36:57 <ehird> ê.ê
17:37:02 <ehird> û.û
17:37:06 <evincar> *-() pink eye
17:37:10 <ehird> ô.ô
17:37:20 <Slereah_> .
17:37:21 <evincar> —.—
17:37:26 <Slereah_> Black squares D:
17:37:27 <ais523> ...
17:37:32 <evincar> █.█
17:37:48 <evincar> What, no unicode?
17:38:11 <ehird> ø.ø
17:38:13 <Slereah_> Not on mIRC
17:38:19 <ehird> æ.æ wtf
17:38:50 <Slereah_> .
17:38:59 <ais523> ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ
17:39:10 <ehird> ̖̗̘̙̒̓̔̕̚ ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚ ̖̗̘̙̒̓̔̒̕̚
17:39:10 <ehird> ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̓̔̒̓̔̒̓̔̒̓̔̒̓̔̕̚̕̚̕̚̕̚̕̚v
17:39:13 <ehird> ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕
17:39:14 <ehird> ̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚
17:39:18 <ehird> ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕
17:39:23 <ehird> ̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚
17:39:28 <ehird> ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕
17:39:33 <ehird> ̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚
17:39:40 <ehird> ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕
17:39:45 <ehird> ̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚
17:39:50 <ehird> ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕
17:39:55 <ehird> ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕
17:40:00 <ehird> ̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̗̘̙̖̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕̚̕
17:40:05 <ehird> wow
17:40:09 <ehird> that is totally
17:40:11 <ehird> weird looking
17:40:13 <ehird> wtf
17:40:15 <ehird> i mean
17:40:17 <ehird> one tiny block of text
17:40:19 <Slereah_> This is stupfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffvv
17:40:19 <ehird> takes like 934872395 bajillion messages
17:40:31 <ehird> ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠ͅ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̀́̂̃̄̅̆̇̈̉
17:40:34 <ehird> ̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠ͅ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠ͅ·̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̕
17:40:41 <ehird> ̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̽̾̿̀́͂̓̈́̚͠͡ͅ.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠ͅ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̛̖̗̘̙̜̝̞̟̠̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̕̚
17:40:44 <evincar> Scary.
17:40:46 <ehird> ̴̵̶̷̸̡̢̧̨̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̽̾̿̀́͂̓̈́͠ͅ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠ͅ
17:40:51 <ais523> ehird: what exactly are you doing?
17:40:51 <ehird> ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠ͅ cool it appears as one jumbled up char in here
17:40:55 <ehird> but in the channel
17:40:57 <ehird> WOOOOSH
17:40:59 <ehird> like popcorn
17:41:01 <ehird> little packet: ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠ͅ <- zooom
17:41:09 <ehird> ais523: your "·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠ͅ" appears as basically one-glyph length in the input box
17:41:10 <ais523> it's a combining-mark-bomb
17:41:16 <ehird> once you put it in the channel, though, it <--expands--->
17:41:20 <ehird> combining mark BOMB?
17:41:22 <ehird> how is it a bomb
17:41:29 <ais523> one character, about a hundred bytes in UTF-8
17:41:42 <ais523> like a decompression bomb
17:42:04 <ais523> where you have a file which is a few megabytes, but decompresses to several petabytes and crashes your computer
17:42:13 <ehird> ah
17:43:19 <evincar> When I was learning about compression, I shot myself in the foot with something like that.
17:43:38 <evincar> One of my RLE files didn't write correctly.
17:44:27 <ehird> ^^^^^^^^^^^^^^^^^^^^^^ê
17:44:57 <ehird> ·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ<-- TWO BLOCKS OF BOMB TORN APART -->.·̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́̕̚͠͡ͅ
17:47:16 <evincar> So, anyone have any new ideas lately?
17:47:31 -!- Corun has joined.
17:47:38 <evincar> Or anyone feel like making the reference interpreter for Selector?
17:47:50 <ehird> evincar: I might
17:47:58 <ehird> Can I do it in something obscure?
17:48:08 <ais523> evincar: I have a plan for a graph-rewriting language
17:48:08 <evincar> Hmm.
17:48:29 <ehird> evincar: OK I'll implement selector
17:48:29 <evincar> ehird: If you want to do it yourself, you can do it in something obscure. Otherwise I wanted to collaborate on an obfuscated C version.
17:48:47 <ehird> I'll collaborate on an obfuscated C version but let's get a regular sane one to test on
17:48:54 <evincar> Hm.
17:48:56 <evincar> All right.
17:49:02 <ais523> graphs are represented as strings of letters
17:49:03 <evincar> Come to think of it...
17:49:11 <evincar> ehird: C or C++ for the standard impl?
17:49:11 <ehird> evincar: Is Ruby alright for an interp?
17:49:15 <ehird> It'd be pretty trivial for htis.
17:49:20 <ehird> Like 30-40 lines
17:49:39 <ehird> A standard impl could be done last (after the testing one (this), and the obfuscated C one, I guess)
17:49:49 <ais523> unique letters are different nodes in the graph
17:49:58 <ais523> and letters adjacent in the string are adjacent in the graph
17:50:01 <evincar> ais523: You and your nodes.
17:50:09 <ais523> so abcde is a five-node graph o-o-o-o-o
17:50:13 <ais523> abcdea is C_5
17:50:17 <ais523> and eodermdrome is K_5
17:51:33 <ehird> evincar: you can stuff Selector on one line
17:51:34 <evincar> ehird: Ruby and I get along about as well as Quentin Tarantino and Bambi.
17:51:42 <ehird> ALL KNOB PICK NINE GO FORWARD PICK ZERO
17:51:46 <evincar> Yeah.
17:51:46 <ehird> evincar: since the grammar is unabmigious
17:51:51 <ehird> maybe you should switch to that
17:51:53 <evincar> I'm going to change the wiki.
17:51:54 <ehird> instead of \n-termination
17:51:56 <ehird> it'd look nicer
17:52:00 <evincar> Yeah.
17:52:05 <ehird> of course, all whitespace should be ignored
17:52:06 <evincar> I think I forgot to mention that it's a style choice.
17:52:27 <evincar> All whitespace, non-capitals, and []-delimited text are ignored.
17:52:42 <ehird> evincar:
17:52:43 <ehird> ALL KNOB PICK NINE GO FORWARD PICK ZERO YOUR EIGHT PICK NINE MY ONE PICK NINE GO BACK MAKE PILE PICK NOSE MAKE HOLE PICK ZERO YOUR EIGHT YOUR EIGHT YOUR EIGHT YOUR FIVE MAKE PILE PICK NOSE MAKE HOLE PICK ZERO YOUR SEVEN MAKE PILE MAKE PILE PICK NOSE MAKE HOLE MAKE HOLE PICK ZERO YOUR THREE MAKE PILE PICK NOSE MAKE HOLE PICK ZERO GO FORWARD MY ONE GO BACK PICK FIVE GO FORWARD PICK ZERO YOUR EIGHT PICK FIVE MY ONE GO BACK PICK ZERO YOUR SIX MAKE PILE PICK NO
17:52:43 <ehird> SE MAKE HOLE LESS KNOB
17:52:44 <evincar> s/text/chars/
17:52:55 <ehird> evincar: surely that look nicer than your previous one
17:53:03 <evincar> It's more concise, to be sure.
17:53:08 <evincar> I only put it with newlines for readability.
17:53:09 <ehird> evincar: try and read it out
17:53:30 <evincar> Heh.
17:53:30 <ehird> "All knob pick nine go forward pick zero your eight pick nine my one pick nine go back make pile pick nose make hole pick zero your eight, yoru eight, your eight your five make pile pick nose"
17:53:31 <ehird> etc
17:53:44 <ehird> as opposed to
17:53:48 <ehird> "all knob. pick nine. go foward."
17:53:49 <ehird> etc
17:53:52 <evincar> Yeah.
17:53:56 <evincar> It flows better.
17:54:02 <ehird> evincar: shall i change the example?
17:54:17 <evincar> Sure. I'll change the source reqs.
17:54:35 <ehird> evincar: done
17:54:57 <evincar> ehird: Done.
17:54:59 <evincar> Nice.
17:55:29 <ehird> evincar: My interp will be able to make some things syntax errors due to the nicety of your syntax.
17:55:30 <ehird> Cool.
17:55:38 <evincar> Such as?
17:56:16 <evincar> Oh yeah. Remember that blocks have to be able to move around.
17:56:20 <ehird> evincar: PICK BLAH
17:56:26 <ehird> actually
17:56:29 <ehird> you need a modifier PICK
17:56:30 <ehird> err
17:56:30 <ehird> NIT
17:56:34 <ehird> that can go before an instruction
17:56:35 <evincar> Heh.
17:56:36 <ehird> NIT PICK NOSE
17:56:42 <evincar> What does it do?
17:56:52 <evincar> If it's not justifiable, it's not going in.
17:57:21 <ehird> evincar: Um... realigns the plinckets
17:57:38 <evincar> Heh.
17:58:08 <evincar> Come to think of it... the source may be too easy to understand, considering that most of the commands are verb-noun.
17:58:29 <evincar> Or at least enough of them that you automatically read it in pairs.
17:58:39 <ehird> evincar: I like it this way
17:58:41 <ehird> it reads as silly poetr
17:58:43 <evincar> I'd like to keep PICK NOSE though.
17:58:47 <ehird> *poetry
17:58:48 <evincar> Yeah.
17:58:52 <ehird> evincar: Suggestion -
17:58:54 <ehird> give the registers names
17:59:02 <ehird> PICK UP
17:59:03 <ehird> PICK IT
17:59:04 <ehird> PICK ONE
17:59:06 <ehird> PICK NONE
17:59:13 <evincar> I was going to do that, but I couldn't decide on names.
17:59:20 <evincar> That could be interesting.
17:59:30 <ehird> evincar: name one arse
17:59:32 <evincar> The closest I came was giving descriptions of the number's glyphs.
17:59:33 <ehird> MY ARSE MY ARSE MY ARSE
17:59:37 <ehird> YOUR ARSE YOUR ARSE YOUR ARSE
17:59:38 <evincar> Heh.
17:59:41 <ehird> and PICK ARSE
18:00:04 <evincar> All right, let's come up with a list.
18:00:07 <evincar> ZERO is NONE
18:00:10 <evincar> ONE is ONE
18:00:25 <ehird> evincar: no
18:00:27 <ehird> ZERO is UP
18:00:29 <evincar> Oh, crap. Hang on a minute.
18:00:32 <ehird> actually..
18:00:33 <evincar> I'll be right back.
18:00:34 <ehird> i just like it as it is
18:00:35 <ehird> it's silly
18:00:37 <ehird> but readable
18:04:11 -!- Corun has quit (Remote closed the connection).
18:04:25 -!- Corun has joined.
18:08:08 <ehird> evincar: what can an identifier be?
18:08:16 <ehird> also, may i suggest making code *unicode*?
18:08:21 <ehird> then we can have silly identifiers
18:08:24 <ehird> like âe§D
18:10:18 <ehird> evincar: okay, i'm just making an identifier something other than whitespace
18:23:42 <ehird> http://www.flamingthunder.com/ This is a joke, right?
18:24:23 <ais523> ehird: what's at the other end of that link? I don't like clicking on links without some idea of what they link to
18:24:33 <ehird> ais523: a programming language
18:25:15 <Slereah_> Flaming Thunder looks really gay.
18:26:06 <ais523> ehird: well, they've misunderstood the GPL licence virus thing
18:26:19 <ehird> For example, we all learn that the negative of a negative is a positive, and in Flaming Thunder the following program writes 5 just as you'd expect:
18:26:19 <ehird> Set x to 5.
18:26:19 <ehird> Write --x.
18:26:23 <ais523> that particular interpretation of the GPL turned out only to apply to Bison
18:26:24 <ehird> ais523: reads like a joke to me
18:26:46 <ais523> so they put an explicit extra permission in Bison that you could do what you liked with the programs it output
18:26:50 <ehird> and:
18:26:51 <ehird> Welcome! Flaming Thunder is a powerful computer programming language for scientists, mathematicians and engineers that is also easy enough for elementary school students.
18:26:54 <ehird> reads sillily
18:26:57 <ais523> for other programs, like gcc, the GPL doesn't restrict their outputs
18:27:12 <ais523> Bison was a special case because it copied most of itself into the output
18:30:22 <evincar> Back
18:30:32 <evincar> I don't know how I feel about unicode ids.
18:30:49 <evincar> And flaming thunder is a bad pun.
18:32:31 <ehird> evincar: Not long, by the way.
18:32:43 <ais523> the thing that turns me off Flaming Thunder is that all their downloads are executables
18:32:59 <ais523> they claim it was written entirely in assemler, though, so that's not that surprisng
18:33:20 <evincar> Heh.
18:33:20 <ehird> ais523: the -- thing must be a joke though
18:33:57 <ais523> ehird: I think they're being serious
18:34:09 <ehird> ais523: Really? :|
18:34:10 <ais523> the main 'appeal' of that language is that all operators mean exactly what they do in maths
18:34:19 <ais523> they're pointing out that that isn't true in most other languages
18:34:22 <ehird> And it's good for Scientists and 3 year olds
18:34:29 <evincar> Heh.
18:34:30 <ehird> ais523: their java program is invalid
18:34:36 <ais523> ehird: standard advertising jargon
18:34:51 <ehird> class asimplejavaprogram // missed 'public', must be Asimplejavaprogram or similar
18:35:20 <ais523> java's a pain to write programs in
18:35:31 <ais523> and Java class names are case-insensitive on Windows
18:35:38 <ehird> <ais523> and Java class names are case-insensitive on Windows
18:35:41 <ehird> the syntax is constant
18:35:45 <ehird> asimplejavaprogram is invalid
18:36:01 <ais523> yes, the missing public is needed
18:36:12 <ehird> ais523: no
18:36:14 <ehird> the class name is invalid
18:36:25 <ais523> does it actually need a capital letter?
18:36:30 <ais523> Java's even stranger than I thought
18:36:54 <ehird> ais523: Ruby has that too, but that's just because classnames must be constnats
18:37:02 <ehird> and constants = first letter uppercase (because FOO, etc)
18:37:12 <ehird> thus leading to the CamelCase class naming convention
18:37:16 <ehird> iirc Foo_bar would be just as valid
18:38:24 <ehird> ais523: besides what mathematician would say 'Set x to 4'
18:38:55 <evincar> ehird: and how many people read the C statement "x = 4" as "x gets 4"?
18:39:05 <ais523> DO .1 <- #4
18:39:08 <evincar> It's just a matter of semantics.
18:39:13 <ais523> the <- is actually pronounced 'gets'
18:39:17 <ehird> evincar: even so..
18:39:20 <ais523> it says so in the manual
18:39:23 <ehird> it depletes their argument
18:39:25 <ehird> of mathematical-notation
18:39:42 -!- timotiis has quit (Read error: 110 (Connection timed out)).
18:40:52 <evincar> ehird: have you started your Selector Ruby impl? I can't quite infer from your language.
18:41:10 <ehird> evincar: Yep
18:41:13 <ehird> Wrote the parser already
18:41:16 <evincar> Okay.
18:41:33 <evincar> You need to make blocks movable because of the BECOME command.
18:41:40 <ehird> evincar: movable?
18:41:55 <evincar> Yes. BECOME swaps the current block with another.
18:42:11 <evincar> It's the only way to do a non-adjacent jump.
18:42:33 <ehird> evincar: are the blocks ordered?
18:42:41 <evincar> Yes.
18:42:44 <evincar> I might have KNOB, MYBLOCK1, and MYBLOCK2 in order.
18:42:49 <ehird> evincar: by the order they appaer in the program?
18:42:55 <evincar> Yep.
18:43:06 <evincar> If MYBLOCK2 contains a BECOME MYBLOCK1 statement, then the new order is KNOB, MYBLOCK2, MYBLOCK1.
18:43:18 <ehird> evincar: And code is invalid outside a block right?
18:43:20 <ehird> And blocks can't be nested?
18:43:58 <evincar> There is no code that appears outside a block. If code leads the first block declaration in the program, it is really at the end of the last block declaration.
18:44:04 <evincar> And there's no way to nest blocks.
18:44:08 <evincar> There's no block terminator.
18:44:12 <evincar> A block ends when the next one begins.
18:44:39 <ehird> evincar: why not just have it an error?
18:44:42 <ehird> for the first thing
18:44:53 <evincar> (some code belonging to myblock1) ALL KNOB (some code belonging to knob) ALL MYBLOCK1 (more myblock1 code)
18:45:09 <evincar> If you don't feel like adding it, don't.
18:45:17 <evincar> I'm putting it in the standard impl.
18:45:20 <ehird> evincar: okay, but why should it be like that?
18:45:39 <evincar> Because execution is cyclical, so it's logical that the code should be treated as such.
18:47:04 <ehird> it is cyclical?
18:47:06 <ehird> that's news to me
18:47:07 <ehird> :))))
18:47:12 * ehird didn't read the spec
18:47:36 <evincar> Ha.
18:47:44 <evincar> It's in the overview.
18:48:16 * evincar slaps ehird with a fish
18:48:36 <ehird> evincar: what is locked
18:48:41 <ehird> oh
18:48:41 <ehird> i see
18:48:45 <ais523> evincar: come over to #ircnomic, then you can Swhack ehird and actually get a point for it if ehird accepts
18:48:50 <ehird> evincar: all but one -- which one
18:49:03 <evincar> KNOB.
18:49:31 <evincar> It's listed under "Special Blocks" as the program entry point.
18:49:42 <ehird> evincar: no knob == crash and burn right
18:49:56 <evincar> Nah. The program just doesn't do anything.
18:50:32 <evincar> KNOB is the only block that's unlocked by default, and since the program executes until there are no more unlocked blocks...
18:50:48 <ehird> evincar: But if you have NO blocks in a progam..
18:50:51 <evincar> it runs through all of the blocks, finds none unlocked, reaches the end, and exits without error.
18:51:05 <evincar> Oh.
18:51:17 <evincar> Then you could include code outside a block.
18:51:22 <evincar> Which would be an error.
18:51:31 <evincar> So there has to be at least one ALL statement in the program.
18:59:13 -!- ihope has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
19:02:37 <ehird> evincar: What happens when we try to run a locked block?
19:02:49 <evincar> Nothing. We skip it.
19:03:30 <ehird> evincar: How do we know when the program is over?
19:03:46 <evincar> When there exist no unlocked blocks.
19:04:13 <evincar> You can easily keep a running count and terminate when it's zero.
19:04:34 <evincar> Remember that the count only starts at 1 if there is a KNOB block!
19:05:35 <ehird> evincar: OK. All I have to do is implement the real commands now
19:05:35 <ehird> :P
19:05:41 <evincar> Nice.
19:05:44 <evincar> I really appreciate this.
19:05:59 <evincar> It'll serve as a great reference.
19:06:39 <ehird> evincar: A block can stop executing half-way through right?
19:06:48 <evincar> Yes.
19:06:51 <ehird> But you can't go backwards. It's just ------->STOP! Do something else now
19:07:07 <evincar> Using the BECOME or ESCAPE commands.
19:07:09 <evincar> Yes.
19:08:15 <evincar> Should we keep a list of calling blocks instead of just one? Otherwise, recursive functions don't terminate, you can't have nested subs, and other Bad Things.
19:08:24 <ehird> evincar: What register is initially selected
19:08:41 <evincar> NOSE.
19:09:08 <ehird> evincar: OH NOSE!!
19:09:16 <ehird> Zero-Nine
19:09:18 <ehird> I see no NOSE
19:09:29 <ehird> NOSE is a special one.
19:09:30 <ehird> Thingy.
19:09:31 <ehird> Hmm.
19:09:32 <ehird> Could work.
19:09:36 <evincar> Yes.
19:09:39 <ehird> evincar: What happens when you try and like do somethiing with a nose register
19:09:40 <evincar> Meaning NO SElection.
19:09:58 <ais523> ehird: it fails, obviously
19:09:59 <evincar> Raises a NOSE exception and BECOMEs the NOSE block.
19:10:01 <ais523> that's a NOSE error
19:10:40 <evincar> ais523 gets it. ^_^
19:10:52 <ais523> evincar: I actually read the spec
19:10:56 <ehird> evincar: after an exception like NOSE, where do we go?
19:11:00 <ehird> ais523: i'm reading it! ... kinda :<
19:12:24 <evincar> ehird: since the current block BECOMEs the NOSE block, you can either continue to the next block after NOSE has finished executing...
19:12:47 <evincar> ...or include an ESCAPE command in the NOSE block, in which case you jump back to the block you were executing before.
19:12:57 <ehird> evincar: so the next block in relation to the one we were executing before going to the NOSE block?
19:12:59 <evincar> Which is in a different position, I might add.
19:13:00 <ehird> or the one after NOSE?
19:13:20 * ehird dies. This is hard :P
19:13:38 <evincar> The next block in relation to the now-current block, being NOSE, which has taken the position of the block we were executing before.
19:13:48 <evincar> I never claimed it was simple.
19:13:51 <evincar> Oh, wait.
19:13:53 <evincar> Yes I did.
19:13:55 <evincar> In the spec.
19:13:58 <ehird> evincar: tee hee
19:14:14 <evincar> I never claimed it was simple to *implement*!
19:14:25 <evincar> There we go.
19:14:30 <ehird> evincar: So when we want to NOSE around, we move NOSE to where the current block is
19:14:34 <ehird> then carry on as normal, inside NOSE
19:14:43 <ehird> if that is true, then where do we move the current block?
19:14:45 <ehird> where NOSE was?
19:14:48 <evincar> Yes.
19:14:51 <evincar> You've got it!
19:14:55 <evincar> All right.
19:14:58 <evincar> I need to get some food.
19:15:02 <evincar> I'll be on tonight.
19:15:04 <evincar> er.
19:15:07 <evincar> My version of tonight.
19:15:09 <ehird> evincar: YOU MUST NOT LEAVE
19:15:11 <evincar> I'm at GMT-5
19:15:12 <ehird> Whut about me <_<
19:15:22 <evincar> Um.
19:15:22 <ehird> Define tonight
19:15:27 <ehird> For me tonight = post-midnight
19:15:31 <ehird> I assume that's not your definition
19:15:34 <evincar> 8PMish GMT-5
19:16:09 <evincar> so...before 01:00 UTC?
19:16:11 <ehird> evincar: So ... Late, over here, in other words.
19:16:12 <evincar> I think?
19:16:20 <ehird> It's possible I won't be there.
19:16:30 <ehird> also, i'm in the UK
19:16:32 <ehird> and it's DST
19:16:33 <ehird> if that helps
19:17:49 <evincar> Hm.
19:17:58 <evincar> Some time, then.
19:18:02 <ehird> :D
19:18:02 <evincar> I'm outta here.
19:18:03 <ehird> bye :)
19:18:22 <ais523> bye
19:20:31 <evincar> Lates.
19:20:36 -!- evincar has quit ("FOOOOOD!").
19:40:35 -!- oklopol has joined.
19:49:39 -!- ais523 has changed nick to The_Other_Player.
19:49:59 -!- The_Other_Player has changed nick to ais523.
20:02:08 -!- Sgeo has joined.
20:51:28 -!- timotiis has joined.
21:30:06 -!- RedDak has joined.
21:40:27 -!- Corun has quit (Read error: 110 (Connection timed out)).
21:46:24 -!- Iskr has quit ("Leaving").
22:03:04 -!- Corun has joined.
22:09:54 -!- ehird has changed nick to ehirdclone.
22:10:03 -!- ehirdclone has changed nick to ehirdc.
22:10:31 -!- ais523 has changed nick to ehird.
22:10:40 -!- ehird has changed nick to ais523.
22:10:58 -!- ehirdc has changed nick to ehird.
22:12:02 -!- ais523 has changed nick to ehirdc.
22:12:07 -!- ehird has changed nick to AnMasterr.
22:12:07 -!- ehirdc has changed nick to ehirdclone.
22:12:13 -!- AnMasterr has changed nick to ehirdc.
22:12:29 -!- ehirdclone has changed nick to ais523.
22:12:34 -!- ehirdc has changed nick to ehirdclone.
22:12:39 -!- ehirdclone has changed nick to ehird.
22:12:49 -!- Sgeo has changed nick to Sgea.
22:13:00 -!- Sgea has changed nick to Sgee.
22:13:11 -!- ehird has changed nick to Sgeeee.
22:13:14 -!- Sgeeee has changed nick to ehirdc.
22:13:24 -!- Sgee has changed nick to Sgei.
22:13:38 -!- Sgei has changed nick to Sgeu.
22:14:01 -!- Sgeu has changed nick to Sgeo.
22:16:26 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
22:17:11 -!- calamari has joined.
22:20:01 -!- ehirdc has changed nick to ehird.
22:20:10 -!- ehird has changed nick to ehirdclone.
22:21:43 -!- ehirdclone has changed nick to ehird.
22:30:33 -!- ais523 has joined.
23:02:56 -!- timotiis has quit (Read error: 104 (Connection reset by peer)).
23:02:59 -!- timotiis has joined.
23:05:20 -!- jix has joined.
23:10:04 -!- CakeProphet has joined.
23:22:30 -!- evincar has joined.
23:22:46 <evincar> Back!
23:24:21 <ehird> evincar: i didn't work on the interp ;<
23:24:23 <ehird> can you forgive me
23:24:26 <ehird> .. it'll work tomorrow
23:24:51 <evincar> ehird: that's quite all right!
23:24:56 <evincar> I'm just happy someone's interested.
23:25:12 <ais523> evincar: I like your language too
23:25:15 <ais523> mostly due to PICK NOSE
23:26:46 <Sgeo> evincar, what's this?
23:26:49 <evincar> It's an abbreviation!
23:27:18 <Sgeo> link pls?
23:27:53 <evincar> I continue to swear!
23:27:55 <evincar> Sgeo: look on the wiki for Selector.
23:27:58 <evincar> http://esoteric.voxelperfect.net/wiki/Selector I think
23:28:26 <evincar> The imterpreter is surprisingly difficult to make.
23:28:32 <ehird> ALL KNOB PICK NINE GO FORWARD PICK ZERO YOUR EIGHT PICK NINE MY ONE
23:28:35 <evincar> s/imter/inter/
23:28:40 <ehird> evincar: but i'll have mine by tomorrow ;)
23:29:31 <evincar> ehird: You need a closing GO BACK!
23:30:25 <ehird> evincar: it was just a snippit
23:30:51 <ais523> I GIVE UP 16 points and receive a Level 4 Dance.
23:30:57 <evincar> Snippets should be well-formed.
23:30:58 <ais523> sorry, wrong channel
23:32:22 <evincar> lol
23:34:29 <evincar> Is there some change I can make to the spec that allows me to write, e.g., GentoO is BACK and have it be equivalent to GO BACK? It would require treating whitespace differently from other non-capitals...
23:34:34 <evincar> which I'm disinclined to do.
23:34:59 <ehird> evincar: yes there is
23:35:00 <evincar> I think a programmer could have a lot of fun with that.
23:35:04 <ehird> just state that all lowercase letters are ignored
23:35:05 <ehird> but yeah
23:35:06 <ehird> it would be fun
23:35:10 <ehird> Selector poems
23:36:10 <evincar> I'll make that an option for the interpreter. --poetry-mode
23:36:14 <evincar> ^_^
23:36:30 <ehird> evincar: naww
23:36:32 <ehird> just ignore lowercases
23:36:33 <ehird> also
23:36:36 <ehird> i thought we were collaborating
23:36:39 <ehird> you break my heart! :<
23:37:25 <evincar> We will collaborate.
23:37:32 <evincar> I'm just getting ideas down for a standard impl.
23:37:37 <evincar> Yours is the reference impl.
23:38:06 <ehird> uhh, what's the different
23:38:13 <evincar> Very little.
23:38:15 <evincar> ^_^
23:38:19 -!- Corun has quit ("This computer has gone to sleep").
23:38:25 <evincar> But what's the point of being sane when it comes to esoteria?
23:38:29 <evincar> I figure it wouldn't be so hard to compile it to C++...
23:38:34 <evincar> I'll talk about that in a moment.
23:38:37 <evincar> Right now, food!
23:38:49 -!- evincar has quit (Remote closed the connection).
23:42:20 -!- SimonRC has quit ("Lost terminal").
23:44:39 -!- SimonRC has joined.
23:45:34 <SimonRC> ehird: what the fuck did you say back then?
23:45:41 -!- timotiis has quit (Read error: 110 (Connection timed out)).
23:45:41 <SimonRC> it fucking killed screen
23:46:35 <SimonRC> but only when I tried to scrool back past it
23:46:39 <SimonRC> in irssi
23:46:41 <ehird> SimonRC: a unicode bomb
23:46:45 <SimonRC> what was it?
23:46:46 <ehird> SimonRC: a 100-byte single unicode char
23:46:49 <ehird> abusing modifiers
23:46:54 <SimonRC> um, how does that work?
23:47:00 <calamari> lol
23:47:01 <ehird> SimonRC: you munge loads of modifiers together
23:47:10 <calamari> ehird: can I see it? :)
23:47:15 <SimonRC> I thought that screen passed those straight through?
23:47:21 <ehird> calamari: logs
23:47:23 <ehird> :)
23:47:28 <calamari> ehird: is it intact? :)
23:47:28 <ehird> SimonRC: evidently irssi didn't like it
23:47:32 -!- CakeProphet has quit ("haaaaaaaaaa").
23:47:34 <ehird> which made screen die
23:47:35 <ehird> calamari: yep
23:48:21 -!- evincar has joined.
23:48:50 <evincar> Back.
23:49:17 <calamari> âe§D
23:49:21 <calamari> was that it?
23:49:31 <ais523> calamari: no
23:49:39 <ais523> it was much bigger than that
23:49:41 <SimonRC> of course, those of you working in ISO-8859-* will be fine
23:49:42 <SimonRC> bah
23:49:46 <calamari> I don't see it I guess
23:50:02 <ais523> let me find the bomb and paste it here again, to see what happens
23:50:44 -!- RedDak has quit (Remote closed the connection).
23:51:06 <SimonRC> hmm
23:51:26 <ais523> actually, no time for that, I've got to go
23:51:28 -!- ais523 has quit ("If I'm not out of here by midnight, I'll be in serious trouble").
23:51:39 <SimonRC> from the logs, it looks like screen died
23:53:16 <calamari> it's a bunch of chars in the logs, not just one
23:53:51 <calamari> Â·Ì€ÌÌ‚ÌƒÌ„Ì…Ì†Ì‡ÌˆÌ‰ÌŠÌ‹ÌŒÌÌŽÌÌÌ‘Ì’Ì“Ì”Ì•Ì–Ì—Ì˜Ì™ÌšÌ›ÌœÌÌžÌŸÌ Ì¡Ì¢Ì£Ì¤Ì¥Ì¦Ì§Ì¨Ì©ÌªÌ«Ì¬Ì­Ì®Ì¯Ì°Ì±Ì²Ì³Ì´ÌµÌ¶Ì·Ì¸Ì¹ÌºÌ»Ì¼Ì½Ì¾Ì¿Í€ÍÍ‚ÍƒÍ„Í…Í Í¡.·̖̗̘̙̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̕Ì
23:53:51 <calamari> šÌ›ÌœÌÌžÌŸÌ ̴̵̶̷̸̡̢̧̨̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼̽̾̿̀́͂̓̈́ͅÍ
23:53:53 <Sgeo> Link to the log with the bomb?
23:54:12 <calamari> Sgeo: log is broken, doesn't matter
23:54:13 <Sgeo> That shows up to me as a bunch of gibberish with things that look like I's
23:54:15 <Sgeo> was that the bomb?
23:54:31 <calamari> Sgeo: I guess..
23:55:01 <ehird> no
23:56:08 <calamari> anyways start looking at 09:36:57
23:56:39 <ehird> calamari: that's not the bomb
23:56:43 <ehird> the loggers are broken :)))
23:56:57 <calamari> ehird: so, since it's not in the log.. repost ;)
23:57:00 <SimonRC> I don't think the log is broken
23:57:14 <SimonRC> wgetting then catting the log seems to kill screen sessions
23:57:16 <SimonRC> oh what fun
23:57:24 <bsmntbombdood> irish people!?!
23:57:31 <ehird> bsmntbombdood: yes
23:57:36 <ehird> they are all under arrest
23:57:38 <ehird> for being irish
23:57:43 <ehird> calamari: i have to go now anyway
23:58:09 <calamari> cya ehird
23:58:15 <evincar> later ehird
23:58:54 <ehird> not RIGHT now
23:58:56 <ehird> but in a few minutse
23:58:57 <ehird> :-)
23:59:05 <evincar> ah
2008-04-28
00:00:39 <evincar> ehird: Is ruby really the best language for implementing Selector? I'd suspect perl would do the trick with much less stress on your part.
00:00:48 <ehird> evincar: i don't see why.
00:00:53 <ehird> Almost all of it is done anyway.
00:00:58 <ehird> But ... why would Perl be less painful?
00:01:01 <evincar> All right.
00:01:15 <evincar> Everything could be automated with regexes.
00:01:27 <evincar> Then again, planning to implement it in C(++), I'm really one to talk.
00:01:28 <Sgeo> PSOX is processed with regexes >.>
00:02:01 <ehird> evincar: Not sanely.
00:02:07 <ehird> The parse tree I have now is nice.
00:02:17 <ehird> Sgeo: Psox psox psox psox psox psox psox psox psox psox psox ... new meme
00:02:21 <ehird> Or rather old
00:02:24 <ehird> meme.
00:02:28 <Sgeo> ehird, you mentioned PSOX in the other channel
00:02:34 <Sgeo> You reawoke the PSOX monster!
00:02:39 <SimonRC> I wonder what else is vulnerable to unicode bombs?
00:02:51 <Slereah_> Your mother.
00:03:53 <evincar> It's true.
00:04:38 <ehird> Bye for today. :)
00:04:43 <Sgeo> Byehird
00:04:57 -!- ehird has quit (Remote closed the connection).
00:07:26 -!- Slereah has joined.
00:09:29 -!- jix has quit ("CommandQ").
00:23:21 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
00:26:53 -!- AnMaster_ has joined.
00:28:19 -!- AnMaster has quit (Nick collision from services.).
00:28:21 -!- AnMaster_ has changed nick to AnMaster.
00:38:17 <evincar> Well. This died.
00:43:33 -!- SimonRC has quit ("changing to a charset that can't crash screen").
00:44:09 -!- evincar has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
01:21:01 -!- SimonRC has joined.
01:22:49 <SimonRC> right, I am now immune to the killer UTF-8 glyphs
01:56:49 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
02:00:25 -!- GregorR has quit (Read error: 110 (Connection timed out)).
02:17:04 -!- sebbu has quit (Read error: 145 (Connection timed out)).
02:22:34 <lament> one of the example sentences in this online Esperanto course is "to share a wife with your neighbour". Wtf?
02:27:46 <calamari> and how do you say it?
02:32:32 <lament> Dividi edzinon kun sia najbaro.
02:32:36 <calamari> "thou shalt not covet thy neighbor's wife" Ex 20:17
02:32:42 <calamari> maybe it has something to do with that
02:34:02 <lament> to covet is one thing, to share is rather more risque
02:37:17 <calamari> according to my footnotes.. covet " find pleasure in"
02:37:46 <calamari> anyhow I think I found it online
02:37:47 <calamari> http://www.esperanto.pl/page.php?tid=102020
02:37:57 <calamari> 17 Ne deziru la domon de via proksimulo; ne deziru la edzinon de via proksimulo, nek lian sklavon, nek lian sklavinon, nek lian bovon, nek lian azenon, nek ion, kio apartenas al via proksimulo.
02:38:01 <calamari> not really the same
02:38:24 <calamari> but it does have edzinon whatever that means
02:41:01 <lament> wife
02:42:20 <lament> "najbaro" and "proksimulo" both mean "neighbour", one is a direct borrowing from English and the other is formed internally as "one who's close"
02:45:09 <calamari> are sia and via related?
03:01:50 -!- calamari has quit ("Leaving").
03:23:43 -!- pikhq has quit (Read error: 110 (Connection timed out)).
03:29:55 -!- pikhq has joined.
05:14:42 -!- pikhq has quit (Read error: 110 (Connection timed out)).
06:03:34 -!- EgoBot has joined.
06:03:46 -!- GregorR has joined.
06:23:09 -!- Sgeo has quit ("Ex-Chat").
07:08:50 <oklopol> all entries in the esolang wiki should be commented by some of the regulars here (anyone really) with comments like "basically brainfuck, but "scrubulative scrittery" is a bit original, see line 105 of spec"
07:09:24 <oklopol> i mean, often it takes me about 25 minutes to get what's happening, and when i do, i realize it was a new way to explain an old idea :P
07:24:55 <oklopol> perhaps the wiki should be grepped for original ideas, and an ideawiki should be made
07:47:47 <GregorR> "Basically just P'', but the I/O is a bit original."
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:11:23 -!- Iskr has joined.
08:22:06 -!- lament has changed nick to sauxdado.
08:30:22 -!- GreaseMonkey has joined.
08:35:44 -!- ais523 has joined.
08:37:06 -!- ais523 has quit (Client Quit).
08:45:32 -!- ais523 has joined.
09:13:12 -!- Corun has joined.
09:29:27 -!- Corun has quit ("This computer has gone to sleep").
10:03:34 -!- GreaseMonkey has quit ("Unisex.").
11:06:21 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
11:25:32 -!- ais523 has joined.
11:59:54 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
12:08:09 -!- ais523 has joined.
13:14:30 -!- ehird has joined.
13:14:44 <ais523> hi ehird
13:15:51 -!- ehird_ has joined.
13:15:54 -!- ehird has quit (Read error: 113 (No route to host)).
13:15:59 <ehird_> have i mentioned i hate this compute
13:16:00 <ehird_> r
13:16:08 <ais523> ehird_: possibly, I lose track
13:16:46 -!- ehird_ has quit (Read error: 113 (No route to host)).
13:17:10 <fizzie> Don't hate the computer, hate the.. uh, computation?
13:17:18 -!- ehird has joined.
13:17:24 <ehird> sigh
13:20:34 -!- ehird has quit (Read error: 113 (No route to host)).
13:21:05 -!- ehird has joined.
13:21:10 <ehird> please kill me now
13:21:22 <ehird> ais523: how many times have i disco/reco'd?
13:21:25 <ais523> ehird: how? You'll end up offline before you can see the answer
13:21:33 <ehird> ais523: ha
13:21:34 <ais523> and 4 connections, 3 disconnections
13:21:46 <ehird> wonderful
13:21:50 <ehird> let's not make that 5/4
13:22:13 <ehird> actually, ais523, I have a routine that makes crashes less likely
13:22:31 <ais523> ehird: try not writing your IRC client in Java2K
13:23:27 -!- ehird_ has joined.
13:23:33 <ehird_> ais523: disregard that
13:23:38 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
13:23:44 <ais523> ehird_: heh
13:23:59 <ehird_> okay
13:24:05 <ehird_> i'm just going to use xchat for a bit
13:24:08 <ehird_> no Epiphany, no-sir-ee
13:24:13 <ais523> ehird_: use telnet
13:24:15 <ais523> it's more reliable
13:24:21 <ehird_> so, mr. ais523, how are you today? are your cabbages moltworthy?
13:24:32 <ehird_> ais523: telnet, programmed in CLC-INTERCAL with INTERNET
13:24:33 <ais523> ehird_: not without extra definitions
13:24:44 <ehird_> ais523: interesting. is the transformation function turing-complex?
13:24:52 <ais523> ehird_: the INTERNET is needed to do the select()
13:24:57 <ais523> ehird_: no, it's uncomputable
13:25:04 <ais523> that's why I'm having so much trouble with it
13:25:09 <ais523> but it's only TC in all but a few special cases
13:25:22 <ehird_> very jolly. how about you post a link that proves it so that i can open it with my inter~web Browsemachine?
13:25:52 <ais523> ehird_: because it isn't finished yet
13:25:56 <ais523> in fact, it isn't even started
13:26:09 <ais523> I was speaking hypothetically about the cabbages
13:26:18 <ais523> not about an INTERCAL IRC client
13:26:24 <ais523> in fact, I was in two conversations with you at once
13:26:26 <ais523> you just didn't notice
13:26:28 <ehird_> ais523: you still haven't given me an interlink~web
13:26:29 <ais523> sorry
13:26:31 <ehird_> and i did notice
13:26:34 <ehird_> just .. confusingly
13:27:01 <ais523> ehird_: I don't have a link to prove it, because any statements I made recently that I might have been expected to prove are in fact false
13:27:01 <ehird_> now give me an linkweb~net
13:27:09 <ehird_> ais523: I need a link to open my browser goddamnit.
13:27:18 <ais523> http://esolangs.org
13:27:19 <ehird_> The menus are crashy.
13:27:20 <ais523> will that do?
13:27:30 <ehird_> THANK YOU
13:27:33 <ehird_> But it won't load.
13:27:34 <ehird_> :P
13:27:45 <ais523> ehird_: about:blank
13:27:49 <ais523> hmm, my client didn't link that
13:27:54 <ais523> I wonder if about://blank works?
13:28:00 <ais523> no, that wasn't linked either
13:28:05 <ais523> and probably isn't a real address
13:29:11 -!- ehird_ has quit (Read error: 104 (Connection reset by peer)).
13:29:20 <ais523> bye again :(
13:30:00 -!- ARRRRGH has joined.
13:30:09 -!- ARRRRGH has quit (Client Quit).
13:30:19 -!- aaaargh has joined.
13:30:23 <aaaargh> FUCKING FUCKSHIT
13:30:29 <aaaargh> IN ASDLAKSD
13:30:32 <ais523> hello ehird
13:30:40 <aaaargh> yeah hi :|
13:30:41 <ais523> or someone else on the same IP, possibly
13:30:55 <aaaargh> so guyz my epiphany is b0rken
13:31:01 <aaaargh> halp
13:31:16 <ais523> aaaargh: which OS?
13:31:32 <aaaargh> debian dinosaur(stable) on pc(shitty)
13:31:49 <aaaargh> debian stable is officially referred to one of: etch, dinosaur
13:32:03 <ais523> dinosaur? I'm unaware of that version
13:32:08 <ais523> how far before etch is it?
13:32:18 <ais523> or is it so new I haven't heard of it?
13:32:56 -!- aaaargh has quit (Read error: 113 (No route to host)).
13:33:12 -!- ehird has joined.
13:34:23 <ais523> ehird: I just said that I was unaware of debian dinosaur
13:34:26 <ais523> how new or old was it?
13:34:32 <ais523> I know of etch, of course
13:41:54 -!- ehird has quit (Read error: 113 (No route to host)).
13:42:11 -!- fcnshtonaple has joined.
13:42:11 -!- fcnshtonaple has quit (Remote closed the connection).
13:42:27 -!- foobarbazquux has joined.
13:42:31 <foobarbazquux> ..............
13:42:40 <foobarbazquux> Hi from failsafe xterm.
13:42:47 <ais523> hello
13:42:50 <foobarbazquux> ais, whta the ffuck do i do
13:42:55 <foobarbazquux> this is totally broken
13:42:56 <ais523> I don't know
13:43:07 <foobarbazquux> gonna try real gome, because i'm trigger-nappy
13:43:11 <foobarbazquux> er, happy
13:43:13 <ais523> I haven't even heard of the version of Debian you're on
13:43:24 <ais523> I've heard of etch, but not dinosaur
13:43:26 <foobarbazquux> it's etch. i call it dinosaur because it is old.
13:43:30 <ais523> oh
13:43:33 <foobarbazquux> all its software is obsolete
13:43:39 <foobarbazquux> :)
13:43:40 <ais523> there was a dinosaur in Toy Story, though, IIRC
13:43:45 <ais523> so it's a reasonable name
13:43:47 <foobarbazquux> i assume it had a name, though.
13:43:57 <ais523> yes, but I can't remember what it was
13:44:04 <foobarbazquux> QUIT
13:44:09 -!- foobarbazquux has quit (Client Quit).
13:44:43 -!- ehird has joined.
13:44:47 <ehird> so on the subject of cabbages
13:44:49 <ehird> how many times now?
13:45:15 <ais523> 11 joins, and therefore probably 10 quits
13:45:38 <ais523> I don't see how your OS can be so broken, though
13:45:45 <ehird> ais523: It's not the OS, it's the computer.
13:45:50 <ehird> It is brokenness itself
13:46:06 <ehird> but this is exceptionally bad
13:46:06 <ais523> ehird: what, you mean the processor's glitching, or something?
13:46:06 <ehird> normally it takes ~3 restarts
13:46:07 <ehird> ais523: i think so
13:46:08 <ehird> and the ram
13:46:10 <ehird> and everything else
13:46:20 <ais523> ehird: try running a memory-test tool?
13:46:24 <ehird> ais523: lazy
13:46:35 <ehird> 'teh webness' is working now anyway
13:46:35 <ais523> and /is/ there a processor-test tool?
13:46:36 <ehird> hopefully..
13:46:43 <ehird> and i don't think so, that's kind of goedelian
13:48:27 -!- ehird_ has joined.
13:48:27 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
13:48:32 <ehird_> FUCK THIS PEICE OF FUCKING SHIT
13:48:35 <ehird_> IT HAS BEEN AN HOUR SINCE I TURNED IT ON
13:48:41 <ehird_> IT HAS NOT BEEN STABLE FOR FIVE GOD DAMN MINUTES
13:48:42 <ehird_> NOT ONCE
13:48:51 <ais523> ehird_: are there any clients that can deal with this sort of thing?
13:48:52 <ehird_> USELESS CRAP
13:48:58 <ehird_> ais523: bouncers
13:49:01 <ehird_> ais523: but i don't care
13:49:07 <ais523> hmm... what about running yes, and seeing how long it takes before it goes wrong?
13:49:07 <ehird_> i just want this to NOT CRASH EVERY 2 SECONDS
13:49:22 <ehird_> and yes kinda eats up memory if you have a scrollback buffer
13:49:23 <ais523> if your computer can't handle yes, it's utterly broken
13:49:26 -!- pikhq has joined.
13:49:28 <ais523> ehird_: oh
13:49:35 <ehird_> yes actually causes glitches on the monitor
13:49:37 <ehird_> but i think that's unrelated
13:49:53 <ais523> what about running factor on some random numbers?
13:50:03 <ais523> can you get an even prime greater than 2?
13:50:05 <ehird_> ais523: it's not fundamentally broken. it'd work if i used console mode, 4eva
13:50:12 <ehird_> but add a gui in to the mix..
13:50:16 <ehird_> well, twm should work
13:50:21 <ais523> ehird_: maybe the video card is crazy
13:50:25 <ais523> and text mode's entirely usable
13:50:34 <ehird_> ais523: it's built-in
13:50:36 <ehird_> so i don't think so
13:50:44 <ehird_> but factor(1) works
13:51:23 -!- Corun has joined.
13:51:32 <ehird_> ais523: i cannot believe a computer can be this broken
13:51:35 <ehird_> it's like frankenstein's monster
13:51:45 <ehird_> many have tried to fix it over the years
13:51:47 <ehird_> none haev succeeded
13:51:52 <ais523> ehird_: no, frankenstein's monster is a Nomic rule
13:51:59 <ehird_> some even disbelieve that it is that bad
13:52:00 <ais523> but seriously, you should find out what's wrong with it before you can fix it
13:52:09 <ehird_> a friend has said to me that it's me mucking about with my OS
13:52:13 <ais523> and "everything" may be correct, but you need to prove that first
13:52:13 <ehird_> but no!
13:52:20 <ais523> and your friend is likely wrong
13:52:20 <ehird_> ais523: well, this isn't my main machine
13:52:22 <ehird_> thank GOD
13:53:15 <ais523> ehird_: why are you using it now?
13:53:21 <ais523> perversity, or is there a better reason?
13:53:42 <ehird_> ais523: long story
13:53:44 <AnMaster> Deewiant, there?
13:53:51 <ehird_> but i'm not perverse
13:53:56 <ehird_> i would never choose to use this machine
13:54:08 <AnMaster> Deewiant, For the o instruction, in text mode, "o treats the file as a linear text file; that is, any spaces before each EOL, and any EOLs before the EOF, are not written out"
13:54:11 -!- RedDak has joined.
13:54:15 <Deewiant> yes...
13:54:26 <AnMaster> Deewiant, EOL as in end of write out?
13:54:28 <AnMaster> as in
13:54:30 <AnMaster> say
13:54:32 <AnMaster> 1243
13:54:34 <AnMaster> 5678
13:54:36 <Deewiant> EOF as in end of file
13:54:39 <AnMaster> is the block to write out
13:54:39 <Deewiant> EOL as in end of line
13:54:48 <Deewiant> up to you
13:54:51 <AnMaster> then there is a EOL at each such block when writing out right?
13:54:52 <ehird_> "I don’t understand why there isn’t a program like KDE’s KPaint for Gnome/Ubuntu." <-- Um, GIMP anyone?
13:54:55 <AnMaster> Deewiant, is that correct?
13:54:56 <Deewiant> in my opinion, you should kill the spaces after 1243 as well
13:55:08 <Deewiant> or wait, what did you ask?
13:55:10 <AnMaster> Deewiant, but then what if the area to write out contains a LF
13:55:13 <AnMaster> say:
13:55:19 <AnMaster> 123\n4
13:55:25 <AnMaster> in that case
13:55:27 <AnMaster> 123 \n4
13:55:30 <ais523> ehird_: GIMP is pretty different
13:55:33 <AnMaster> would that remove those spaces?
13:55:33 <ais523> it can't draw circles
13:55:38 <ais523> it's for a different purpose
13:55:47 <ehird_> ais523: Right, but still
13:55:50 <ais523> I use both GIMP and KolourPaint, for different things
13:55:51 <ehird_> ais523: The guy wanted a paint-equiv.
13:55:55 <ehird_> i.e. for simple drawings
13:55:58 <ais523> ehird_: GIMP isn't a paint-equiv
13:56:02 <ais523> it's missing features that Paint has
13:56:04 <AnMaster> Deewiant, or just any spaces after the newline as in "new row to write data from"?
13:56:09 <Deewiant> AnMaster: you mean the case where you've done a 10p into space thus putting a line feed in the middle of a line without affecting Funge-Space?
13:56:17 <AnMaster> Deewiant, exactly
13:56:29 <ais523> KolourPaint is the best of the programs I've tried as being a paint-equiv, and it's in the Ubuntu repos, but it's KDE
13:56:43 <ehird_> ais523: this is the article: http://contentconsumer.wordpress.com/2008/04/27/is-ubuntu-useable-enough-for-my-girlfriend/ (from reddit)
13:56:53 <ais523> I have to go for a while
13:56:54 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
13:56:55 <AnMaster> ais523, you want inkscape maybe?
13:56:58 <Deewiant> AnMaster: yes, and that's up to you and unspecified. CCBI does remove those spaces.
13:57:11 <AnMaster> Deewiant, hm. *notes for 108 standard*
13:57:18 <Deewiant> AnMaster: because, for instance, the Fungus test suite depends on that.
13:57:23 <Deewiant> or rather, doesn't depend on that
13:57:28 <Deewiant> but it does its output in such a way
13:57:28 <AnMaster> err what?
13:57:39 <Deewiant> you know the Fungus test suite
13:57:46 <AnMaster> aye
13:57:47 <Deewiant> it does its output into files, using o in linear text mode
13:57:53 <AnMaster> ok
13:57:55 <Deewiant> and I was wondering why there were spaces at the end of all the lines
13:58:00 <Deewiant> and it was because of that.
13:58:29 <AnMaster> where is your write out code, load is in utils.d, but not write?
13:59:03 <AnMaster> Deewiant, hm I see
13:59:05 <AnMaster> oh well
13:59:34 <Deewiant> it's in instructions.d
14:00:09 <Deewiant> doing that does mean that it has to do a lot of extra processing of the output
14:00:15 <ehird_> so you two people ... would you suggest that implementing befunge-98 is fun?
14:00:16 <ehird_> :-)
14:00:36 <AnMaster> ehird_, aye
14:00:46 <Deewiant> to a point
14:00:50 <Deewiant> TRDS wasn't ;-)
14:01:06 <AnMaster> well for now I won't do like ccbi on this
14:01:17 <AnMaster> Deewiant, auto lines = splitLines(row);
14:01:18 <AnMaster> where
14:01:20 <AnMaster> is that function
14:01:28 <Deewiant> sounds like something that'd be in utils.d
14:01:39 <AnMaster> nop not there
14:01:44 <ehird_> oh I want to do things like TRDS!!!!
14:01:46 <ehird_> :D
14:01:47 <Deewiant> grep for it...
14:01:49 <AnMaster> import tango.text.Util : join, splitLines;
14:01:53 <Deewiant> there ya go
14:01:54 <AnMaster> Deewiant, that is relevant?
14:01:57 <AnMaster> and that means what?
14:02:04 <Deewiant> from tango.text.Util import join and splitLines
14:02:05 <ehird_> AnMaster: that means 'from tango.text.Util import join, splitLines'
14:02:07 <AnMaster> I see
14:02:13 <ehird_> even i could figure that out
14:02:15 <ehird_> and i don't know D
14:02:17 <Deewiant> :-P
14:02:29 <ehird_> okay, AnMaster -- you say 'aye', but what about implementing N-funge
14:02:34 <ehird_> for any N>0
14:02:37 <AnMaster> #include <foo.h> but just some functions
14:02:54 <AnMaster> ehird_, hm you mean generic at compile time?
14:03:01 <ehird_> AnMaster: no. runtime
14:03:07 <AnMaster> could be possible in C with a lot of macros to handle vectors
14:03:13 <AnMaster> ehird_, well, not sure
14:03:15 <ehird_> but would it be fun
14:03:16 <ehird_> :)
14:03:33 <AnMaster> ehird_, not sure, probably a bit painful
14:03:41 <ehird_> :(
14:03:42 <AnMaster> but some ppl do think that is fun so... oh well
14:03:43 <ehird_> I hate pain
14:03:43 * AnMaster runs
14:03:47 <ehird_> Are fingerprints portable?
14:03:51 <ehird_> 3dtrds?
14:03:54 <AnMaster> ehird_, err what=
14:04:04 <AnMaster> depends on the fingerprint specs
14:04:05 <ehird_> will, e.g. TRDS work on N-d
14:04:24 <AnMaster> if it says "pop a vector" then I guess yes
14:04:31 <AnMaster> if it says "pop x and then y" then no
14:04:51 <Deewiant> TRDS is only implemented in Befunge interpreters anyway ;-)
14:05:54 <ehird_> Deewiant: Do any Nfunge interps exist?
14:05:56 <ehird_> Where N!=2?
14:06:01 <ehird_> Well.
14:06:05 <ehird_> BeQunge don't count.
14:06:14 <Deewiant> !Befunge does trefunge and unefunge IIRC
14:06:17 <EgoBot> Huh?
14:06:22 <Deewiant> EgoBot: shaddup
14:06:24 <ehird_> crap name isn't it
14:06:57 <Deewiant> shrug
14:07:04 <Deewiant> I checked and indeed it does
14:07:34 <Deewiant> Language::Befunge has some n-dimension support but nothing's finished yet as far as I can tell
14:07:50 <AnMaster> err, lets see...
14:07:52 <Deewiant> i.e. the groundwork is there but it doesn't work yet
14:08:08 <AnMaster> Deewiant, is it ok to truncate the cell to a char when writing it out?
14:08:12 <AnMaster> in theory I mean
14:08:20 <AnMaster> otherwise I guess fputs won't work, damn
14:08:20 <Deewiant> well, what else are ya going to do with it :-P
14:08:36 <AnMaster> Deewiant, hm?
14:08:49 <Deewiant> print char# 12311 for me
14:09:03 <AnMaster> hm sigh
14:09:16 <ehird_> don't truncate
14:09:17 <ehird_> modulo
14:09:19 <Deewiant> there isn't much choice is there :-P
14:09:26 <Deewiant> that's probably what he meant
14:09:51 <AnMaster> what I mean is that fputs takes a char*, not a int64_t*
14:10:26 <AnMaster> problem is that if I write it out as int64_t* with fwrite I get other issues
14:10:33 <AnMaster> Deewiant, see what I mean?
14:10:38 <ehird_> AnMaster: so:
14:10:44 <AnMaster> because then I end up with a lot of null bytes for those areas
14:10:44 <ehird_> for one
14:10:45 <ehird_> use fputc
14:10:47 <ehird_> and then
14:10:55 <ehird_> fputc(stdout, (char)(x%255))
14:11:07 <Deewiant> ehird_: %256
14:11:20 <Deewiant> &255 ;-)
14:11:29 <ehird_> err yes
14:11:32 <AnMaster> err what?
14:11:40 <ehird_> AnMaster: do you not know what modulo is.
14:11:45 <AnMaster> yes I know
14:11:47 <ehird_> if so stop programming now :D
14:12:00 <AnMaster> but I was wondering over what Deewiant meant with &255 in that case
14:12:40 <ehird_> &255 == %256
14:12:48 <ehird_> AnMaster: now do benchmarks
14:12:52 <ehird_> YOU MUST SEE WHICH IS FASTER!!!!!!!!!!
14:13:31 <Deewiant> any compiler will optimize the latter to the former :-P
14:13:39 <AnMaster> Deewiant, indeed
14:13:50 <ehird_> Deewiant: AnMaster doesn't trust his compiler
14:13:56 <AnMaster> Deewiant, not sure about the D compiler but gcc will at least
14:14:06 <Deewiant> I see
14:14:09 <Deewiant> AnMaster: any compiler
14:14:12 <Deewiant> I mean /any/ compiler
14:14:20 <AnMaster> Deewiant, sure about that?
14:14:20 <Deewiant> that's like the most basic optimization there is :-P
14:14:28 <AnMaster> heh
14:14:31 <Deewiant> of course I'm not sure
14:14:47 <Deewiant> but I think you'll have a hard time finding an optimizing compiler which doesn't
14:15:05 <Deewiant> of course it's different when dealing with bigints or the like.
14:33:06 <ehird_> 57.5
14:42:25 <AnMaster> hahah, ehird_ you will love this, some of my micro optimizing to preallocate file when writing resulted in trailing null byte garbage when writing in text mode
14:42:39 <AnMaster> so now I only use it for binary mode
14:42:40 * AnMaster runs
14:42:55 <ehird_> AnMaster: You've never read Knuth... have you
14:43:02 <AnMaster> nop
14:43:18 <ehird_> Normally I hate the over-quoting of "Premature optimization is the root of all evil", but by god it applies here
14:43:32 <ehird_> If he was here you could expect a few swhacks
14:43:44 <AnMaster> ehird_, indeed
14:43:47 <AnMaster> I know
14:44:02 <AnMaster> ehird_, yet this is designed for speed :P
14:44:50 <ehird_> AnMaster: You don't understand. :-)
14:44:58 <ehird_> actually, even Linus would be swhacking you
14:45:05 <ehird_> and he's quite fond of speed..
14:45:16 <AnMaster> ehird_, I did that microoptimizing just to irritate you
14:49:57 -!- oklopol has quit (Read error: 113 (No route to host)).
14:50:04 <AnMaster> ehird_, also there is another reason
14:50:12 <AnMaster> making sure there is enough space in advance
14:50:24 <AnMaster> thus being able to error out early if something goes wrong
14:55:53 <AnMaster> "and any EOLs before the EOF,"
14:55:54 <AnMaster> sigh
15:14:15 <ehird_> http://www.p01.org/releases/Demoscene/files/mandelbrot_rotozoom_256b_javascript_1.1.htm An animated Mandelbrot set, in one line (not 24759345 chars) of JavaScript
15:21:28 <AnMaster> insane heh
15:22:32 <ehird_> AnMaster: yep
15:22:56 <AnMaster> I looked at the source, quite interesting it can be done with so little code in javascript
15:33:44 <ehird_> AnMaster: i can probably do it pretty short in ruby or something
15:33:46 <ehird_> let me try
15:35:13 <AnMaster> should be possible to do in C too quite short I think, just adding a clear screen or something
15:35:37 <AnMaster> maybe shorter even as you wouldn't need Math. for cos and such
15:36:16 <AnMaster> not that I'm going to try
15:36:56 <ehird_> AnMaster: i'm not so sure. C just isn't one for golfing, beyond evil platform tricks
15:37:05 <AnMaster> heh
15:37:34 <AnMaster> ehird_, what is the goal with golfing really? "as short as possible" or "as fast as possible" or?
15:37:43 <ehird_> AnMaster: as short as possible
15:37:44 <ehird_> in bytes
15:37:47 <AnMaster> ah
15:37:51 <ehird_> it's not practical of course
15:37:54 <ehird_> but it IS tremendous fun
15:38:01 <ehird_> the best two golfing languages are generally perl and ruby
15:38:14 <ehird_> ruby coming second due to its perl heritage, it supporst a lot of the stuff perl does for golfing
15:38:21 <ehird_> sometimes ruby even beats perl
15:38:46 <AnMaster> hm
15:39:06 <ehird_> AnMaster: two good golf sites:
15:39:07 <AnMaster> ehird_, as short as possible in generated machine code would be more interesting I think
15:39:08 <AnMaster> :)
15:39:11 <ehird_> and no..
15:39:18 <ehird_> that's just "how good is your compiler"
15:39:24 <ehird_> it's not meant to be useful
15:39:25 <ehird_> but it's fun
15:39:27 <AnMaster> not really
15:39:29 <ehird_> two good golf sites:
15:39:30 <AnMaster> not if you do it in asm
15:40:08 <ehird_> http://golf.shinh.org/ - anarchy golf/anagolf. Has a lot of Rubyists and perlists, but even COBOLers and similar -- it's diverse. Anyone can start a challenge, etc. My favourite, ais523 from here participates too
15:40:30 <ehird_> http://codegolf.com/ - Code Golf. More formal. Challenges organized, hidden input/output pairs, etc.
15:40:42 <ehird_> AnMaster: you know about anagolf
15:40:42 <ehird_> bt
15:40:46 <ehird_> the PRINT LOADS one
15:40:47 <ehird_> that your C failed on
15:40:49 <AnMaster> ah yes
15:40:51 <ehird_> was due to linux pipelines
15:40:53 <ehird_> having a maximum length.
15:40:57 <AnMaster> ah I see...
15:40:57 <ehird_> but shinh fixed that
15:41:10 <ehird_> apparently most programs on it got close to the maximum exec time limit tho :)
15:41:21 <AnMaster> heh
15:41:29 <ehird_> AnMaster: one great one was seeding the ruby RNG with the process id, modulo something
15:41:35 <ehird_> then the random number generator would produce 1,2,3...
15:42:09 <AnMaster> oh?
15:42:15 <AnMaster> why would that work?
15:42:37 <ehird_> AnMaster: it's just if you seed the mersenne twister the right way
15:42:40 <ehird_> it produces sequential numbers
15:42:58 <AnMaster> well, why is process id important?
15:43:13 <ehird_> AnMaster: it's a number in the thousands that if you submit multiple times goes up by one each run
15:43:17 <ehird_> more or lses
15:43:21 <ehird_> 12012, 12013, etc
15:43:26 <ehird_> so if you modulo it right
15:43:28 <AnMaster> hm true
15:43:29 <ehird_> and resubmit a lot
15:43:33 <ehird_> then you can hit on the right number :)
15:43:38 <ehird_> AnMaster: and it's $$ in ruby
15:43:41 <AnMaster> aha
15:43:41 <ehird_> $$%X
15:43:43 <AnMaster> short yeah
15:43:43 <ehird_> four symbols
15:44:20 <AnMaster> but wouldn't it be shorter to just write the number instead (maybe)
15:44:30 <AnMaster> depends on what X is of course
15:44:43 <AnMaster> ehird_, oh and a lot of systems make PID random
15:44:49 <ehird_> AnMaster: but not the anagolf system
15:44:51 <ehird_> :-)
15:44:57 <AnMaster> yeah
15:44:58 <ehird_> also, AnMaster
15:45:04 <ehird_> there can be multiple inputoutput pairs
15:45:07 <AnMaster> ehird_, still *very* brittle algorithm ;P
15:45:10 <ehird_> so moduloing and conditioning on that
15:45:16 <ehird_> :))
15:45:20 <ehird_> like
15:45:30 <ehird_> well
15:45:32 <ehird_> hard to find an example
15:45:34 <ehird_> but you get what i mean
15:45:44 <ehird_> also... brittle algos are the whole point of golf :)))
15:45:47 <AnMaster> you mean like;
15:45:50 <AnMaster> 2+3
15:45:52 <ehird_> one of the ones there assigns main to a string constant
15:45:53 <AnMaster> outputs 5
15:45:56 <AnMaster> 2+1
15:45:58 <AnMaster> outputs 3?
15:45:59 <ehird_> yeah, AnMaster
15:46:06 <ehird_> you could do
15:46:10 <ehird_> p$$%4
15:46:17 <AnMaster> hmh?
15:46:24 <ehird_> hmm
15:46:26 <ehird_> %7 might work pest.
15:46:27 <ehird_> *best
15:46:46 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:46 <ehird_> 6
15:46:46 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:46 <ehird_> 0
15:46:46 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:47 <ehird_> 1
15:46:49 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:51 <ehird_> 2
15:46:53 <AnMaster> mhm
15:46:53 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:55 <ehird_> 3
15:46:57 <ehird_> etc
15:47:01 <AnMaster> p is?
15:47:03 <AnMaster> print?
15:47:37 <AnMaster> ehird_, or?
15:48:35 <ehird_> AnMaster: "p(x)" is "puts(x.inspect)"
15:48:40 <AnMaster> ah
15:48:42 <ehird_> AnMaster: and .inspect is like a pretty-print
15:48:45 <ehird_> p "abc"
15:48:46 <ehird_> prints "abc"
15:48:47 <ehird_> literally
15:48:52 <ehird_> (puts "abc" prints abc)
15:48:54 <AnMaster> with the quotes, hm ok
15:48:59 <ehird_> AnMaster: it's just raw-printing
15:49:06 <AnMaster> ok
15:49:09 <ehird_> AnMaster: it's, e.g. what the interactive loop prints out
15:49:17 <ehird_> irb(main):001:0> "abc"
15:49:17 <ehird_> => "abc"
15:49:23 <AnMaster> ok
15:50:09 <ehird_> http://golf.shinh.org/p.rb?embed <-- Looks like someone's been monitoring atom decay again..
16:00:09 -!- ais523 has joined.
16:10:39 <ehird_> ais523 returns
16:10:47 <ehird_> ais523: the computer hasn't crashed! joy!
16:10:49 <ais523> yep, lecture finished
16:11:06 * ais523 waits for #ircnomic to become more active
16:11:17 <ais523> oh, and I joined Agora
16:11:51 <ehird_> ais523: be sure to eminate the pedantickr'y that emerges from your presence
16:11:57 <ehird_> pedantickr'y is a nice word
16:12:06 <ais523> ehird_: not a very pedantically correct one, though
16:12:09 <ehird_> i want to speak like that all the time
16:12:10 <ais523> but it seems Agoran
16:12:36 <ehird_> ais523: what's the past-future HHGTTG way to suffix 'spoke'?
16:12:42 <ais523> ehird_: no idea
16:12:51 <ehird_> I wioll haven spoken like that in the future.
16:12:54 <ehird_> ais523: or something
16:13:37 <ehird_> ais523: wow, for a second i didn't connect you with 'Alexander Smith'
16:13:40 <ehird_> that was weird
16:13:44 <ehird_> i thought you'd put a fake name in
16:13:51 <ais523> why would I do that?
16:13:58 <ehird_> ais523: no idea
16:14:02 <ais523> it would also require control over my email system...
16:14:11 <ehird_> "ais523, a first-class person with as yet no relevant Titles, bids Agora hello." <-- is a second-class person one that can't be passed and returned to functions?
16:14:26 <ais523> ehird_: no, it's a person which does not correlate to a human being
16:14:35 <ais523> Agora's full of distinctions like that
16:14:54 <ehird_> ais523: agora is probably the only system with more subtle corner-cases than real life
16:15:04 <ais523> ehird_: they're mostly edge-cases on Agora
16:15:18 <ehird_> ais523: also, ihope's ye Marvy scam failed
16:15:20 <ehird_> see ed murphy's reply
16:15:26 <ais523> ehird_: I will do when I reach it
16:15:33 <ais523> I'm reading the April list archives at the moment
16:15:45 <ais523> so as to gain a sense of which public contracts exist
16:16:07 <ehird_> ais523: wow, gmail notices that threads spam both agora-business and agora-discussion
16:16:13 <ehird_> and merges them correctly when i view it in one
16:16:16 <ehird_> *span
16:16:28 <ais523> ehird_: I prefer the first version
16:16:32 <ehird_> ais523: due to the fact that it's single messages which are tagged
16:16:35 <ehird_> ais523: instead of threads
16:17:26 <ehird_> "
16:17:26 <ehird_> I announce that I change my posture to sitting, by means of Rule 1871/24 (which provides that I CAN change my posture in this way by announcement) and Rule 478/22 (which provides that if I CAN perform an action by announcement, I can do so by sending a public message)."
16:17:30 <ehird_> that has to be the most pointless email ever sent
16:17:34 <ehird_> even spam has a purpose
16:17:36 <ais523> ehird_: it doesn't need to be that complicated
16:17:40 <ais523> it does do something
16:17:56 <ais523> the rest of it is explanation as to how I can do that, which isn't actually needed but seems appropriate
16:18:17 <ehird_> 'I also agree to the Constitution of Canada.' -- ihope
16:18:26 <ais523> ehird_: I noticed that
16:18:45 <ehird_> ais523: we should replace it with 'ihope does not agree with this rule'
16:18:52 <ehird_> ircnomic's ruleset that is
16:18:57 <ais523> ehird_: no, not yet
16:19:02 <ais523> I have other plans for the ruleset
16:19:12 <ais523> but I don't want them to impact just ihope, they need to catch everyone
16:19:16 <ehird_> ais523: LIKE REMOVING THE STUPID UPPERCASE THING RIGHT
16:19:30 <ais523> ehird_: no, BTW, Agora is case-insensitive, at least it's inconsistent about the case of 'rule'
16:19:39 <ais523> rules and Rules are the same thing
16:19:45 <ehird_> yeah, but if agora didn't suck we wouldn't be scamming it
16:19:46 <ehird_> :D
16:19:48 <ais523> and used interchangeably in the Rules
16:19:54 <ais523> ehird_: Agora doesn't suck!
16:20:07 <ehird_> it sucks compared to ircnomic!
16:20:15 <ehird_> where by ircnomic I mean ircnomic - uppercase requirement!
16:23:46 <AnMaster> well cfunge is soon ready for a new release
16:25:07 -!- jix has joined.
16:25:07 <AnMaster> ehird_, IRCNOMIC you mean=
16:25:09 * AnMaster runs
16:25:15 <ehird_> AnMaster: Die!
16:25:17 <ehird_> :D
16:25:25 <AnMaster> Why EHIRD_?
16:25:40 <ehird_> AnMaster: I am behind you. Prepare to die!
16:25:45 <AnMaster> haha
16:26:51 <AnMaster> ehird_, not valid, as you are not BEHIND me :P
16:28:06 -!- oklopol has joined.
16:28:39 <oklopol> parseul={!x:_;(!x=='` & ! x+1 & ! x+2 ~ class[]) => ! x..x+2 = [! x+1,! x+2]} <<< this must be the weirdest unlambda parser ever.
16:28:54 <oklopol> well doesn't work for "."'s
16:29:16 <ehird_> oklopol: wow
16:29:17 <ehird_> what's that in
16:29:21 <ehird_> oklotalk?
16:29:21 <oklopol> Ef.
16:29:23 <ehird_> oh
16:29:24 <ehird_> cool
16:29:30 <oklopol> i'll explain that
16:29:37 <oklopol> in case you want me to
16:29:41 <oklopol> it's a bit complicated
16:29:42 <ehird_> maybe in a minute :)
16:29:51 <ehird_> oklopol: i can see that it uses ` to increase twice
16:29:54 <ehird_> and then decrements when it finds something
16:29:57 <ehird_> to get it to 0 when balanced
16:29:58 <ehird_> i think
16:30:04 <oklopol> hmm
16:30:05 <ehird_> so it uses x as a 'termination/nesting counter'
16:30:07 <ehird_> kind of
16:30:08 <oklopol> doesn't sound correct :)
16:30:32 <oklopol> basically, it says "find `ab where a and b have been evaluated, and clip them together"
16:30:34 <oklopol> err
16:30:35 <oklopol> parsed
16:30:58 <oklopol> ! x+1 & ! x+2 ~ class[] <<< the element after x and the element after that are lists
16:31:01 <EgoBot> Huh?
16:31:32 <ehird_> EgoBot doesn't get it.
16:31:57 <oklopol> 5&2 < 8 == $t, 5&9 < 8 == $f
16:32:13 <oklopol> operators are fairly clever and overloaded
16:32:59 <oklopol> & kinda builds "mapping-trees", where certain operations will then map an operation everywhere
16:33:40 <oklopol> i realized Ef is starting to be so weird already i might as well stuff some of my older ideas in it
16:34:18 <AnMaster> oklopol, what kind of language is Ef?
16:34:27 <AnMaster> and what happened to oklotalk?
16:34:36 <oklopol> you can also do that mapping-tree with a lambda... although it's not as pretty as in a functional language, because you have to take into account the fact the fixed-point is taken
16:35:03 <oklopol> AnMaster: oklotalk is just one of my languages, i have dozens
16:36:00 <oklopol> (all {x:_;! x:(class[])=>$f} [! x+1,! x+2]) here, the "fixambda" or whatever weird name i choose for the concept is applied to the list, as one would expect with all
16:36:22 <oklopol> the lambda is fixed-point style again, i may have to explain it a bit
16:36:30 <AnMaster> oklopol, so is Ef a functional language?
16:36:43 <oklopol> AnMaster: it's a fixed-point language
16:37:05 <AnMaster> oklopol, as in not using floating point numbers?
16:37:27 <oklopol> AnMaster: no, fixed point as in fix f arg == f f f f ... f f arg
16:37:34 <oklopol> f is applied infinite times
16:37:42 <AnMaster> errr
16:37:50 <ehird_> oklopol: anmaster is a dirty C micro-optimizer
16:37:57 <ehird_> he doesn't understand any functional paradigms
16:37:58 <ehird_> :)
16:38:05 <ehird_> also
16:38:14 <oklopol> {x:_;! x:(class[])=>$f} <<< so, basically, this says if x belongs to the argument list, and x is not a list, $f is "returned", in which case it will automatically be the fixed point too
16:38:16 <ehird_> fix f arg = f (f (f ... (f arg)))))
16:38:20 <ehird_> not f f f f .. arg
16:38:25 <oklopol> because x:_; will fail after that
16:38:25 <ehird_> though inf-arg funcs would be cool :)
16:38:51 <oklopol> ehird_: depends on notation
16:39:00 <oklopol> but yeah, haskell should be assumed
16:39:13 <oklopol> not
16:39:14 <oklopol> *now
16:39:24 <oklopol> whoope
16:39:25 <oklopol> actually...
16:39:55 <ehird_> oklopol: f f f arg is ((f f) f) arg in haskell
16:39:56 <ehird_> :D
16:40:05 <oklopol> i'm not sure my explanations are at all helpful, i'm fairly sure no one has a deep enough understanding about the paradigm
16:40:14 <oklopol> ehird_: i know, i wasn't using haskell notation!
16:40:24 <oklopol> but, you know, fixed-amount-of-arguments prefix
16:41:40 <oklopol> unfortunately, the complexity of the language is getting out of hand, so i'll prolly have to implement a subset quickly so ppl can try it
16:41:57 <oklopol> it's a very different way to look at algorithms
16:42:06 <oklopol> kinda declarative... but entirely imperative
16:42:58 <oklopol> well, imperative with existential quantifiers i guess
16:43:10 <oklopol> but you can also do directly declarative stuff
16:43:36 <oklopol> i also thought of a quicksort... in-place, i'll code it up
16:43:55 <oklopol> but, the "all" call there was not needed
16:44:16 <oklopol> ({x:_;! x:(class[])=>$f} [! x+1,! x+2]) <<< this is the other way to write ! x+1 & ! x+2 ~ class[]
16:44:38 <oklopol> but it uses a weird backwards type inference trick
16:45:11 <oklopol> well, fairly intuitive trick, but it's a bit complicated still
16:45:16 <oklopol> hmmm
16:45:43 <oklopol> actually, it's not really a quicksort in that it doesn't necessarily do pivotting in any sane way
16:56:54 -!- Corun has quit (Read error: 110 (Connection timed out)).
16:57:45 <oklopol> http://www.vjn.fi/pb/p552412665.txt
16:58:08 <oklopol> * does some "cheating", used for escaping problems with a complete fixed point
16:58:33 <oklopol> mostly optimization, at least here it's not actually necessary for correct result
16:59:34 <oklopol> * basically splits into two different functions, basically ({a; *; b} arg) means ({b} ({a} arg))
16:59:54 <oklopol> basically basically asic allyer
17:01:15 <oklopol> oh, right, and in *p:_; we are fixing the value of p for the whole evaluation
17:01:56 <oklopol> i'm fairly sure oklotalk will be a fucking vacation to implement compared to this :P
17:03:21 <oklopol> p.. is a bit iffy, because i'm not sure if i want postfix operators...
17:03:30 <oklopol> but they should work nicely
17:03:54 <oklopol> i'm aiming for 0 need for parenthesis if you don't want them
17:04:09 <oklopol> without having to use multiple adjacent spaces often
17:05:07 -!- Corun has joined.
17:05:36 <oklopol> does the sort make sense?
17:12:33 <oklopol> ehird_: pretend you read that, found it interesting and understood it!
17:12:48 <ehird_> oklopol: yep
17:12:50 <ehird_> ti was cool
17:13:00 <ehird_> it was in fact made of copglobs
17:13:01 <ais523> oklopol: I skimmed it, found it vaguely interesting, but do not currently have the mental energy to attempt to understand it
17:13:04 <ehird_> and on another note
17:13:08 <ehird_> someone tell me how awesome my todo app will be
17:13:14 <ais523> I suspect I will find it interesting when I am capable of serious thought
17:13:38 <ehird_> ais523: do you know of a db like sqlite (mini, one-file) that still supports decent sql constraints?
17:13:41 <ehird_> like foreign keys and stuff
17:13:44 <ehird_> sqlite parses 'em but ignores them
17:13:51 <ehird_> it does do triggers and transactions though
17:13:53 <ais523> ehird_: no
17:13:53 <ehird_> but it is typeless
17:14:07 <ehird_> eh, sqlite should be ok
17:14:20 <ehird_> ais523: will you help me write the sql i suck at it ;)
17:14:34 <ais523> ehird_: maybe, but I'm not used to foreign keys and triggers
17:14:51 <ehird_> ais523: okay, now name my todo program: 'to' or 'toto'
17:14:56 <oklopol> well atm i'm fairly excited about it... i'm pretty sure nothing willl actually work fast enough to be usable, but the way to program in it seems to be quite different from all functional, imperative and declarative programming i've done
17:14:59 <ehird_> the latter lets me make a pun about it not being in kansas anymore
17:15:02 <ehird_> the former is quicker to type
17:15:02 <oklopol> god i think slow
17:15:11 <ais523> ehird_: toto, to's already taken
17:15:15 <oklopol> ehird_ spouts 20 lines while i ponder my one line
17:15:16 <ehird_> ais523: for what?
17:15:34 <ais523> "Communication and Status Utilities", apparently
17:15:43 <ais523> command-not-found is useful for this sort of thing
17:15:56 <oklopol> i'm on two courses about sql atm
17:16:18 <ehird_> ais523: that's unhelpful
17:16:20 <ehird_> :)
17:16:20 <oklopol> wrote an sql interp, but that's really all i've done with it :D
17:16:23 <Deewiant> 2008-04-28 18:36:42 ( oklopol) AnMaster: it's a fixed-point language
17:16:23 <Deewiant> 2008-04-28 18:37:05 ( AnMaster) oklopol, as in not using floating point numbers?
17:16:27 <Deewiant> apologies, but LOL
17:16:35 <ehird_> Deewiant: anmaster thinks at machine level :D
17:16:35 <AnMaster> ?
17:16:35 <ais523> Deewiant: yes, that amused me too
17:16:44 <Deewiant> seriously, that cracked me up :-D
17:17:00 <ehird_> ais523: so who uses 'to'
17:17:05 <ehird_> and why should i care about them
17:17:06 <oklopol> ...because AnMaster should've known what fixed-point languages were? :D
17:17:06 <ais523> ehird_: probably nobody
17:17:17 <ehird_> i can just suggest an alias to=toto i guess
17:17:19 <oklopol> i guess the guess was a bit comical
17:17:19 <ais523> actually, it's probably more popular than INTERCAL
17:17:22 <ehird_> ais523: will youuuu use my todo? :P
17:17:32 <ais523> ehird_: probably not, I don't use anyone else's
17:18:13 <Deewiant> oklopol: the guess mostly, I admit I wouldn't have expected him to know what fixed-point means in that context
17:18:17 <ehird_> ais523: it'll be all unixy
17:18:20 <ehird_> and intuitive
17:18:34 <AnMaster> well what meaning of fixed point...
17:19:45 <oklopol> AnMaster: well, a language withoug floating point numbers isn't very esoteric... but all i really found funny was how you just said "errr" after i tried to explain and dissappeared :P
17:19:54 <ehird_> oklopol: WILL YOU USE MY TODO :<
17:20:03 <ehird_> ais523: actually, you'd like it because it USES A DB WHOMFG
17:20:06 <oklopol> ehird_: yes i will use it for everything
17:20:10 <oklopol> all the time
17:20:15 <oklopol> i will devote my life to using it
17:20:42 <ehird_> oklopol: lvoe <3
17:21:22 <AnMaster> oklopol, google for fixed point language
17:21:34 <ehird_> ais523: okay emacs question
17:21:37 <AnMaster> all top 3 hits are about "not floating point"
17:21:41 <ehird_> ais523: how can i make the buffer list open in the other frame
17:22:00 <ais523> ehird_: I've never tried to do that, try prefixing with C-x 4?
17:22:01 <oklopol> AnMaster: i haven't implied you were stupid for not knowing it, i just said it was a bit funny how you disappeare!
17:22:04 <oklopol> *disappeared
17:22:06 <ais523> most other-frame commands worked like that
17:22:11 <ais523> s/ed//
17:22:13 <ehird_> ais523: nope
17:22:16 <ehird_> but really i want it
17:22:18 <AnMaster> oklopol, yes I had other things to do too
17:22:20 <ehird_> i want a buffer list on the bottom
17:22:21 <ehird_> and my koed on the top
17:22:24 <AnMaster> oklopol, and I still don't get it. sigh
17:22:25 <oklopol> AnMaster: also, you could not have *known* it really, there aren't any fixed-point languages afaik
17:22:30 <ais523> I don't use buffer-list, generally speaking
17:22:40 <AnMaster> oklopol, ok....
17:22:42 <ehird_> what do you use :|
17:22:42 <ais523> you could do C-x o C-x b, I suppose
17:22:50 <ais523> ehird_: go to buffer, tab tab
17:22:55 <ehird_> ais523: hee
17:22:58 <ais523> to get a tabcomplete menu instead
17:23:05 <ais523> that way it disappears when I go to the right buffer
17:23:57 <ais523> ehird_: it's M-x buffer-window-other-window
17:24:08 <ehird_> ais523: whomg, ido is **awesome**
17:24:10 <ais523> you need to bind a key to that to be able to use it without typing the whole thing
17:24:14 <ehird_> try it
17:24:18 <oklopol> AnMaster: third result is actually the fixed-point combinator
17:24:19 <ehird_> (require 'ido) (ido-mode t)
17:24:22 <oklopol> in my googles
17:24:25 <ehird_> http://www.emacswiki.org/cgi-bin/wiki/InteractivelyDoThings
17:24:45 <AnMaster> oklopol, err
17:24:47 <ehird_> icicles is apparently more advanced though
17:24:48 <AnMaster> 1) doi.ieeecomputersociety.org/10.1109/ACSSC.1995.540814 -
17:24:52 <AnMaster> 2) www.embedded.com/showArticle.jhtml?articleID=15201575 - 62k -
17:24:53 <ehird_> http://www.emacswiki.org/cgi-bin/wiki/Icicles
17:24:57 <AnMaster> 3) en.wikipedia.org/wiki/Fixed-point_arithmetic - 38k -
17:25:01 <AnMaster> oklopol, not it isn't
17:25:02 <AnMaster> ...
17:25:24 <AnMaster> 4th result is
17:25:25 <ehird_> ais523: p.s. do you know how i can make emacs auto-save, even on close?
17:25:30 <AnMaster> "okmij.org/ftp/Computation/fixed-point-combinators.html - 10k -"
17:25:31 <ehird_> i hate typing to save
17:25:31 <oklopol> AnMaster: my googles != your googles
17:25:40 <AnMaster> oklopol, k, I use google.com
17:25:44 <AnMaster> not .se or such
17:25:58 <ais523> ehird_: it does that already
17:26:05 <ais523> if you close without saving you get a #filename# file
17:26:31 <ais523> it would be trivial, but stupid, to bind C-x C-c to a custom save-and-exit function
17:26:34 <ehird_> ais523: but it bugs you about it
17:26:39 <ehird_> interfaces should never ask to save
17:26:42 <oklopol> AnMaster: always third result in mine, but this is a bit irrelevant :)
17:26:51 <ais523> <ehird_> interfaces should never ask to save
17:26:58 <ais523> what a terrible idea, you'll end up inventing GNOME
17:27:04 <AnMaster> ais523++
17:27:13 -!- ais523 has changed nick to ais524.
17:27:13 <ehird_> ais523: no -- Jef Raskin thinks the same thing, and he has more credentials than gnome designers
17:27:22 <ehird_> of course it needs to be system-wide
17:27:27 <AnMaster> ais524, hahaha
17:27:27 <ehird_> you cna't just shoehorn it onto the current system
17:27:48 <ais524> ehird_: many of the dialog boxes auto-save when you change options in Gnome, it's really annoying
17:27:54 <ais524> ais524--
17:27:56 -!- ais524 has changed nick to ais523.
17:28:21 <ehird_> that's not what i meant, anyway
17:28:22 <AnMaster> ais523 *= 2
17:28:24 * AnMaster runs
17:28:26 <ehird_> also: undo
17:28:34 <ehird_> you are thinking about it inside the constraints of current systems anyway
17:28:39 <oklopol> ais523: i should prolly know this, but what's the 523 for?
17:28:50 <ais523> oklopol: it's an arbitrary number
17:28:53 <ehird_> fundamentally, warnings and prompts are wrong
17:29:02 <ehird_> revisions and undos and easy access to them are superior
17:29:03 <ais523> I think it's a sequence number, but I'm not sure who the other members in the sequence were
17:29:34 <AnMaster> ehird_, Oh? so "are you sure you want to create a new file system on /dev/hda3? [YN]"
17:29:34 <ais523> still, I like my 523
17:29:35 <AnMaster> is wrong?
17:29:42 <ais523> my Wikipedia bot is Bot523, for instance
17:29:49 <AnMaster> ehird_, interesting opinion
17:30:08 <ehird_> AnMaster: jesus you don't listen
17:30:11 <ehird_> <ehird_> you are thinking about it inside the constraints of current systems anyway
17:30:12 <ais523> AnMaster: I like the way that mke2fs requires -f to do something potentially stupid, and -ff to do something obviously very stupid
17:30:26 <ehird_> plz google Jef Raskin and read The Humane Interface
17:30:27 <ehird_> kthx
17:30:27 <AnMaster> ais523, aye, a good way too
17:30:30 <ais523> -ff is, I think, reserved for attempts to reformat drives which are mounted at the time
17:30:39 <oklopol> ais523: nice to see another (non ((arbitrary number) racist)), people usually want a "meaning" for every number they use, making many nice numbers feel really bad
17:31:00 <oklopol> i mean
17:31:03 <oklopol> they wanna be used
17:31:20 <ais523> sorry, it's -F not -f, but point stands
17:31:38 <AnMaster> ehird_, still how would you do "make new fs" bit then?
17:31:44 <AnMaster> ehird_, without your prompts
17:31:46 <ais523> AnMaster: ehird would have it undoable
17:31:53 <ehird_> AnMaster: Please read The Humane Interface. Thank you.
17:31:55 <ais523> which is 'better' in some sense but impracticle
17:31:58 <ais523> s/le/al/
17:31:59 <AnMaster> ais523, that is logically not possible
17:31:59 <ehird_> ais523: "
17:32:01 <AnMaster> by definition
17:32:07 <ehird_> Please read THI.
17:32:31 <ais523> ehird_: what about 'shred', and similar commands? The whole point of them is that they aren't undoable
17:32:35 <ais523> they should still need confirmations
17:32:38 <AnMaster> ehird_, how would you (mostly) securely wipe data? "are you sure you want to wipe your harddrive? [yN]"
17:32:43 <ehird_> ais523: Please read THI
17:32:43 <AnMaster> if you make that undoable
17:32:44 <AnMaster> well
17:32:48 <AnMaster> then you are silly
17:32:52 <ehird_> gosh, input line history is lovely
17:32:55 <ehird_> AnMaster: Please read THI.
17:32:55 <AnMaster> because the point is *NOT UNDOABLE*
17:33:02 <AnMaster> ehird_, the POINT IS NOT UNDOABLE
17:33:03 <ehird_> Please read, THI.
17:33:05 <AnMaster> for a secure wipe
17:33:08 <ehird_> Please, read THI.
17:33:11 <AnMaster> ehird_, link to pdf
17:33:17 <AnMaster> or whatever
17:33:23 <ehird_> AnMaster: Available in dead tree form from your nearest retailer.
17:33:33 <AnMaster> <ais523> ehird_: what about 'shred', and similar commands? The whole point of them is that they aren't undoable
17:33:35 <AnMaster> a valid point
17:33:39 <AnMaster> that ehird_ refuse to answer
17:33:55 <ehird_> Because it's already been answered, in book-form.
17:34:01 <AnMaster> I guess he don't have a good answer
17:34:11 <AnMaster> ehird_, and you won't make me buy any books
17:34:18 <AnMaster> nor I suspect, ais523
17:34:47 <AnMaster> s/r I/r, I/;s/t, a/t a/
17:34:51 <ehird_> <AnMaster> ehird_, and you won't make me buy any books
17:34:58 <ehird_> Then I guess you'll have to avoid offering your opinion.
17:35:04 <ehird_> Or at least not ask me questions about it.
17:35:15 <AnMaster> ehird_, well ais523 raised a valid point
17:35:22 <AnMaster> and you refuse to answer it
17:35:30 * AnMaster shrugs
17:35:56 <AnMaster> ehird_, well I will refer you to Swedish only books in future, that are out of print since long
17:36:03 <AnMaster> I hope you will be as happy with that
17:36:08 <oklopol> i wanna read that
17:36:14 <oklopol> ME WANNA
17:36:19 <oklopol> i'll torrent it now
17:36:20 <ehird_> <AnMaster> ehird_, well I will refer you to Swedish only books in future, that are out of print since long
17:36:25 <ehird_> it's a good thing THI isn't out of print then
17:39:25 <ehird_> other things relating to user interface design: Good Easy
17:40:36 <ehird_> hmm
17:40:46 <ehird_> ais523: does emacs have *arbitary* depth of pushed/popped cursor positions?
17:40:48 <ehird_> like pushd/popd
17:41:03 <ais523> ehird_: I think there's a limit, but it's pretty high and increasable
17:41:18 <ais523> I'd find that a really useful feature but can never remember the keystrokes to use it
17:41:27 <ehird_> ais523: how do I use it then?
17:41:40 <ais523> ehird_: I can't remember, search documentation for pop-global-mark
17:42:04 <ehird_> ais523: oh. so only two
17:42:06 <ehird_> mark/point
17:42:26 <ais523> ehird_: the marks are saved on a stack
17:43:33 <ehird_> ais523: so how that i know how to pop (ctrl-x ctrl-spc) how do i push
17:43:56 <ais523> ehird_: C-spc I think
17:44:33 <ehird_> ais523: that puts me into a click'ndrag mode
17:44:38 <ehird_> except with movement :)
17:45:00 <ais523> ehird_: oh, it must have got mixed with transient mark, which activates if you press C-spc twice in a row
17:45:05 <ais523> and my tests show it isn't C-spc anyway
17:45:13 <ehird_> ais523: evidently not
17:45:15 <ehird_> one c-spc does it
17:55:26 -!- olsner has joined.
18:07:59 -!- atsampson has quit (Remote closed the connection).
18:08:11 -!- atsampson has joined.
18:13:10 <ehird_> ais523: random - here's a script i just wrote http://pastebin.ca/1000579
18:13:17 <ehird_> i call it toff for to-firefox, but i don't actually use firefox :-)
18:13:22 <ehird_> it works in a pipeline
18:13:25 <ehird_> as an end-point
18:13:29 <ehird_> pipes to your browser
18:13:39 <ehird_> much nicer than select + switch + middle button
18:13:54 <ais523> ehird_: which browser do you use?
18:14:03 <ehird_> ais523: epiphany since its just a stock debian install
18:14:06 <ehird_> it's good
18:14:16 <ais523> On this laptop, I've used w3m, Firefox (2/3), Konqueror, Epiphany, and telnet
18:14:30 <ehird_> ais523: anyway, it uses $BROWSER
18:14:31 <ehird_> so :)
18:14:37 <ais523> so Firefox in my case
18:14:39 <ehird_> it doesn't rm the temp files it creates
18:14:41 <ehird_> but that's a feature
18:14:44 <ehird_> f5 :)
18:15:06 <ais523> /tmp's wiped on boot anyway, or ought to be
18:15:31 <ehird_> hmm
18:15:33 <ehird_> toff isn't perfect
18:16:02 <ehird_> http://pastebin.ca/1000585
18:16:03 <ehird_> now it is
18:16:20 <ais523> what did you change?
18:16:34 <ehird_> ais523: mktemp -t
18:16:35 <ehird_> instead of mktemp /tmp
18:53:10 -!- timotiis has joined.
19:05:42 <ehird_> ais523: so, the tv just rickroll'd me
19:05:47 <ehird_> no joke
19:05:50 <ais523> ehird_: how?
19:06:01 <ehird_> ais523: advert for Rick Astley's Greatest Hits
19:06:06 <ehird_> ais523: I guess they misinterpreted the popularity
19:06:21 -!- RedDak has quit (Remote closed the connection).
19:09:22 <ehird_> ais523: my pastebin needs a catchy name
19:09:22 <ehird_> how about
19:09:26 <ehird_> PASTERAMA2000
19:09:30 <ais523> ehird_: maybe
19:09:37 <ais523> what will the URL be?
19:09:44 <ehird_> ais523: pb.eso-std.org probably
19:09:48 <ehird_> i could call it Peanut Butter
19:09:56 <ehird_> i mean, peanut butter is kinda pastey
19:09:59 <ehird_> and PB..
19:10:06 <ehird_> but peanutbutter is kind of a long name
19:10:10 <ehird_> i need an abbreviation
19:10:16 -!- jix has quit (Nick collision from services.).
19:10:18 <ais523> ehird_: call it Peanut Butter
19:10:21 <ais523> but put pb in the URL
19:10:26 -!- jix has joined.
19:10:27 <ehird_> ais523: yes, but what about my code
19:10:37 <ais523> ehird_: should be trivial to change
19:10:45 <ais523> you're storing the name of the pastebin in a global, right?
19:11:49 <ehird_> ais523: I mean my namespace name
19:11:50 <ehird_> :<
19:12:00 <ais523> ehird_: what namespace name?
19:12:08 <ais523> you could just use pb for that too if it's an internal identifier
19:13:50 <ehird_> ais523: lib/peanutbutter/...
19:13:56 <ehird_> so not really that internal
19:13:57 <ehird_> and
19:13:59 <ehird_> the module name
19:14:01 <ehird_> PeanutButter
19:16:59 <ehird_> ais523: so not really internal
19:17:56 <oklopol> ehird_: pee butt?
19:18:34 <ehird_> oklopol: no
19:24:56 <ehird_> ais523: i guess i'll call it pb
19:30:10 <ehird_> ais523: prepared to brush up on your ruby to write a magical intercal highlighter? :-)
19:32:46 <ehird_> ais523: i'll take that as no
19:32:57 <ais523> ehird_: I don't know ruby
19:33:07 <ehird_> ais523: which is hwy i said brush up
19:33:08 <ehird_> :-P
19:33:54 <sauxdado> why wouldn't you write it in intercal? :)
19:34:08 <ehird_> sauxdado: heh
19:34:21 <ehird_> ais523: my directory tree is crazy
19:34:30 <ehird_> pastebin/lib/pb/controllers/paste.rb
19:36:21 <ais523> what's the opposite of <3?
19:36:41 <sauxdado> </3
19:36:48 <ehird_> ais523: >=3
19:36:50 <ehird_> haha
19:36:55 <ehird_> (That was a lame joke)
19:37:13 <ais523> well, I </3 and/or >=3 langs insisting on a certain directory structure
19:37:36 <ehird_> ais523: ruby doesn't do that
19:37:38 <ehird_> i just do that
19:37:42 <ehird_> well
19:37:45 <ehird_> most of it is convention
19:37:49 <ehird_> pastebin/ is just my project dir
19:37:55 <ehird_> you have lib/ and two things in it:
19:38:02 <ehird_> project.rb and project/*
19:38:09 <ehird_> ais523: that's so that: require "project" works
19:38:14 <ehird_> generally project.rb requires most of the directory ones
19:38:31 <ehird_> now, in lib/pb/ i wanted to divide it into models and controllers (the view is out of lib/)
19:38:38 <ehird_> so lib/pb/{models,controllers}
19:38:43 <ehird_> so pastebin/lib/pb/controllers
19:38:46 <ehird_> then i just added a controller name to it
19:38:50 <ehird_> pastebin/lib/pb/controllers/paste.rb
19:40:31 <ehird_> ais523: I wouldn't need that if I didnt want it to be a regular ruby library.
19:40:36 <ehird_> I could have pastebin/controllers/paste.rb
19:40:44 <ehird_> Do you think I should do that?
19:40:55 <ais523> ehird_: I have no idea how ruby libraries work anyway
19:41:05 <ehird_> ais523: Ruby has a load path.
19:41:09 <ehird_> require "x" looks for x.rb in the load path.
19:41:17 <ehird_> require "x/foo" looks for x/foo.rb in the load path.
19:41:26 <ehird_> ais523: You can abuse that to get a modular package structure, where x.rb loads most things
19:41:33 <ehird_> and you can cherry-pick the rest as "x/foo"
19:41:39 <ehird_> It's convention.
19:41:56 <ehird_> ais523: Now, because you have things like tests and such, you put that in lib/ (and because x.rb would get lost in a project root).
19:42:04 <ehird_> So I just subdivided it a bit further for MVC.
19:44:30 <oklopol> s/pee/pea ofc
19:44:36 <oklopol> what was i thinking
19:45:54 -!- Ricardo0 has joined.
19:46:00 -!- Ricardo0 has left (?).
19:56:36 <ehird_> ais523: http://pastebin.ca/1000720
19:56:37 <ehird_> that's pretty
19:57:18 <sauxdado> does <<- mean "monadic bind"?
19:58:24 <ehird_> sauxdado: no
19:58:27 <ehird_> it's a heredoc
19:58:28 <ehird_> :-)
19:58:37 <ehird_> the - means that the ending delimiter can be indented
19:58:43 <sauxdado> oh :)
19:58:47 <ehird_> sauxdado: and #{...} is string interpolation
19:58:52 <ehird_> so that defines a method for each of the http methods
19:58:56 <ehird_> which just returns an http method not allowed
19:59:31 <sauxdado> so the thing between EOS is a string, even though it gets highlighted as ruby code
19:59:57 <sauxdado> i guess that's a good feature if it's consistent
20:00:14 <ehird_> sauxdado: that's just a pastebin.ca bug
20:00:33 <ehird_> but regardless, i doubt doing the kind of stuff i did there is nice in other languages :-)
20:00:36 <ehird_> lisp, sure
20:00:41 <ehird_> but that's only compile-time, it must be mentioned
20:00:52 <ehird_> sauxdado: oh, and %w(a b c) is ["a","b","c"]
20:01:05 <ehird_> and sequences respond to .each, and they yield their values to the block
20:01:13 <ehird_> and @ denotes an instance variable
20:01:18 <ehird_> and now that i've said that, bye for about an hour
20:01:19 <ehird_> :-)
20:01:22 <sauxdado> bye :)
20:14:51 -!- Sgeo has joined.
20:14:58 -!- ais523 has quit (Remote closed the connection).
20:15:26 -!- ais523 has joined.
20:19:45 -!- sebbu has joined.
20:24:29 <GregorR> http://206620.spreadshirt.com/us/US/Shop/Article/Index/article/Rule-110-2978217 // a T-shirt to contend with the awesomeness of "People from the Internet"
20:25:19 <Slereah> Is rule 110 the 2,3 machine?
20:25:40 <GregorR> Uh, no.
20:25:49 <GregorR> Rule 110 is an elementary cellular automata.
20:25:53 <Slereah> Oh.
20:27:35 -!- evincar has joined.
20:27:44 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
20:27:44 <ais523> rule 110 is a lot simpler and nicer than the Turing machine
20:27:50 <ais523> which has a nasty number in the 500000s
20:27:58 <evincar> Hello all.
20:28:06 <evincar> What am I missing?
20:28:10 <GregorR> http://206620.spreadshirt.com/us/US/Shop/Article/Index/article/Rule-110-2978217 // a T-shirt to contend with the awesomeness of "People from the Internet"
20:28:12 -!- Slereah has joined.
20:28:19 <ais523> Slereah:
20:28:23 <ais523> <ais523> rule 110 is a lot simpler and nicer than the Turing machine
20:28:23 <ais523> [20:29] <ais523> which has a nasty number in the 500000s
20:29:04 <Slereah> Wikipedia sez that one of its difference with a TM is that it has no halting state.
20:29:08 <AnMaster> ais523, what number?
20:29:08 <Slereah> But so do most TM D:
20:29:11 <AnMaster> how do you define them
20:29:18 <ais523> AnMaster: can't remember offhand, Wikipedia's bound to know
20:29:40 <GregorR> ais523: You, on the other hand, SHOULD have a T-shirt with the 2,3 machine (doing something) on it. And on the back, it should say "That's right ladies, he's available."
20:29:42 <GregorR> :P
20:29:49 <ais523> GregorR: not quite that
20:29:58 <ais523> I do have a supply of 2,3 T-shirts, though
20:30:09 <GregorR> Awesome X-D
20:30:13 <Slereah> But are you available?
20:30:15 -!- Sgeo has changed nick to Sgnomic.
20:30:26 <ais523> Slereah: depends on who's asking
20:30:34 <Slereah> I'll go buy flowers.
20:30:46 -!- Sgnomic has changed nick to Sgeo.
20:31:35 <ais523> 596440, if anyone's interested
20:31:50 <ais523> but that's a different numbering scheme from rule 110, because it's a different type of automaton
20:33:58 -!- Judofyr has joined.
20:43:28 <evincar> So I had another language idea, which I'm going to post on the wiki once the spec is complete.
20:43:31 <evincar> You guys are going to love this.
20:44:35 <ais523> evincar: looking forward to it
20:45:51 <evincar> ais523: If all other statements are arithmetic or I/O operations, then the jump operation must be conditional for Turing completeness, correct?
20:46:22 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
20:46:28 <ais523> evincar: if you only have one control-flow command, it has to be conditional on /something/ for TCness
20:46:55 -!- Judofyr has joined.
20:46:57 <evincar> That's what I though.
20:47:02 <evincar> thought*
20:48:43 <evincar> This is beyond ridiculous.
20:48:54 <evincar> This is beyond *Chef* ridiculous.
20:49:22 <ais523> evincar: unless the other statements are conditional on something instead
20:49:28 <ais523> but then they're flow-control in disguise
20:49:43 <ais523> such as Fractran, for instance
20:49:47 <evincar> No, they're all variable-manipulation.
20:49:55 <ais523> evincar: Fractran is just variable-manipulation
20:50:03 <ais523> but conditional on whether the result's an integer or not
20:50:07 <ais523> that's enough for TCness
20:50:20 <evincar> Which is badass in itself.
20:50:33 -!- timotiis_ has joined.
20:53:05 -!- olsner has quit ("Leaving").
20:56:56 -!- ais523 has changed nick to ais523|busy.
21:01:52 -!- RedDak has joined.
21:02:33 -!- timotiis has quit (Success).
21:05:22 -!- Dagide has joined.
21:13:42 -!- timotiis has joined.
21:19:58 -!- timotiis_ has quit (Read error: 113 (No route to host)).
21:22:29 -!- RedDak has quit (Read error: 110 (Connection timed out)).
21:31:47 -!- Iskr has quit ("Leaving").
21:33:48 -!- ais523|busy has changed nick to ais523.
21:36:53 <evincar> ais523: Done.
21:36:55 <evincar> http://esoteric.voxelperfect.net/wiki/Alchemy
21:37:00 <evincar> ...ish.
21:38:16 <ais523> you've double-pasted parts of it
21:38:35 <evincar> Crap!
21:39:17 <ais523> oh, and I'll have to make my Alchemy interps, if I ever write any, suid nobody, so they can't delete my files
21:40:10 <evincar> Heh.
21:40:20 <evincar> You better.
21:41:01 <evincar> It's not impossible, but it is mildly ridiculous.
21:43:48 <evincar> Hmm... now how should I cat this...
21:49:57 <bsmntbombdood> so, guys, which calculator should i get?
21:50:01 <bsmntbombdood> hp-48sx/gx, hp-12/15/16, or hp-18/28
21:56:19 <evincar> Hard to find info on these.
21:56:31 <evincar> I like the first.
22:01:49 <bsmntbombdood> so do i
22:01:52 <bsmntbombdood> but the others are classic
22:09:06 -!- Corun has changed nick to Rucon.
22:09:35 <ais523> who here was implementing MIPS in JavaScript?
22:09:50 <ais523> According to Slashdot, there's now a JavaScript version of parts of the Java Virtual Machine
22:11:22 <evincar> That's so very pointful.
22:11:29 <ais523> I agree
22:11:44 <ais523> JavaScript > Java
22:12:18 <evincar> It makes so much more sense.
22:12:22 <evincar> And it doesn't even try as hard. ^_^
22:12:29 -!- Rucon has changed nick to IceRhymers.
22:12:50 <ehird_> back
22:12:51 <evincar> Of course, I've had bad experiences with Java.
22:12:55 <ehird_> sauxdado: btw, it's ruby code
22:13:25 <evincar> Hey, ehird_. I posted a new lang for you to ogle.
22:13:48 <evincar> http://esoteric.voxelperfect.net/wiki/Alchemy
22:14:18 <ehird_> <ais523> who here was implementing MIPS in JavaScript?
22:14:19 <ehird_> GregorR:
22:14:26 <ehird_> he's still doing it
22:14:42 <ehird_> <ais523> JavaScript > Java <-- truth. JavaScript has first-class closures, a good prototype-based object system, ...
22:14:47 <ehird_> It's just that browser JS impls suck
22:14:47 <ehird_> :)
22:14:50 <ais523> ehird_: yes, I know
22:14:55 <ais523> and browser JS impls are getting better
22:14:58 <evincar> Definitely.
22:15:01 <ais523> Konqueror's is great, for instance
22:15:05 <ais523> and Firefox's is now at least usable
22:15:20 <evincar> How do you all feel about ActionScript?
22:15:24 <evincar> I'm torn.
22:15:39 <evincar> On the one hand, it's accessible, fairly simple, Javascriptlike...
22:15:44 <evincar> On the other...
22:15:47 <evincar> Well, ew.
22:15:49 <evincar> Just ew.
22:16:07 <GregorR> ehird_: I would argue that JavaScript's syntax (for prototypes in particular) is unfortunate.
22:16:11 <GregorR> But I like the language otherwise.
22:16:31 <ehird_> <GregorR> ehird_: I would argue that JavaScript's syntax (for prototypes in particular) is unfortunate. <-- I would argue that Plof's syntax, for conditionals in particular, SUCKS!
22:16:40 <sauxdado> haha
22:16:45 <ehird_> evincar: ActionScript is a derivative of ECMAScript.
22:16:50 <ehird_> evincar: So it IS javascript.
22:16:59 <ehird_> sauxdado: seriously -- if(x, {...}, {...})
22:17:02 <ehird_> who wants to write that
22:17:26 <GregorR> if(a > b, ( printf("Oh my god, he used a parenthesis!"); ), else, ( printf("Oh, it uses 'else', so ehird_ is of course wrong!") ));
22:17:37 <evincar> ehird_: In effect, yes. But they've welded on some features that don't quite gel.
22:18:01 -!- IceRhymers has changed nick to Corun.
22:18:32 <ehird_> GregorR: that's not plof2
22:18:44 <GregorR> ehird_: No, it's Plof3. I abandoned Plof2 for a reason.
22:20:18 <ehird_> GregorR: http://pastebin.ca/1000949
22:20:21 <ehird_> QED
22:20:48 <GregorR> Soooo, you declare it to be true, therefore it's true? :P
22:21:00 <GregorR> My 'if' is actually a function, your 'if' is a language intrinsic. Language intrinsics suck. QED.
22:21:08 <evincar> GregorR: isn't that how esoteria works? ^_^
22:21:33 <evincar> "What I say goes because I said so and because it's awesome."
22:21:59 <sauxdado> conditionals suck.
22:22:08 <GregorR> TURING COMPLETENESS IS FOR FAGS
22:23:23 <evincar> GregorR! How dare you!
22:23:34 <evincar> Unless you're referring to Turing's sexuality, of course.
22:23:39 <evincar> In which case, have at it.
22:24:07 <Slereah> Well, Church was no fag!
22:24:08 <evincar> I avoid writing non-tc languages if I can help it, though.
22:24:12 <ais523> wow, the wiki is unusually active at the moment
22:24:38 <ehird_> <GregorR> My 'if' is actually a function, your 'if' is a language intrinsic. Language intrinsics suck. QED.
22:24:39 * GregorR begins writing Church-Turing slash fiction.
22:24:40 <ehird_> (if x y z)
22:24:48 <ehird_> Non-ugly, non-instrinsic.
22:25:05 <GregorR> Soooooo, (if x y z) good, if(x, y, z) bad?
22:25:18 <GregorR> I believe this comes down to something like "UNRECOGNIZED SYNTAX ABORT ABORT ABORT"
22:25:25 <ehird_> GregorR: (if x y z) good, if(x, (y), else, (z)) bad, especially when you write the latter indented C-style
22:25:34 <ais523> DO statement WHILE statement
22:25:36 <ehird_> c style indentation only works when you have C-style or ALGOL-style syntax
22:25:38 <ais523> that can be an IF sometimes
22:25:40 <ehird_> otherwise it's ugly
22:25:42 <ais523> but normally it's a lot weirder
22:25:59 <pikhq> Yo.
22:26:10 <ais523> hi pikhq
22:27:28 <sauxdado> C is pretty special
22:27:35 <sauxdado> 8-space tab stops actually make sense in C
22:27:41 <ais523> sauxdado: not the way I write it
22:27:47 <ais523> when using an 80-char-wide screen
22:27:50 <ais523> I prefer 2-space tabs
22:28:10 <ehird_> ais523: use hard tabs
22:28:12 <ehird_> then you can choose
22:28:13 <ehird_> :-)
22:29:03 <evincar> I use the tab character and indicate in comments that I use 4-space tabs.
22:29:16 <evincar> People should change their editors accordingly if they know what's good for them.
22:29:52 <sauxdado> k&r style is 8-space tabs, and it looks nice.
22:30:00 <sauxdado> i'm not saying other styles are not possible
22:30:11 <sauxdado> but in many other languages, 8-space tabs wouldn't make any sense at all.
22:30:19 <sauxdado> while in C they can work
22:30:52 <pikhq> ais523: Do you do GNU stlye? :p
22:31:07 <sauxdado> gnu style is so funny
22:31:09 <ehird_> pikhq: Please die. In a fire.
22:31:10 <ais523> pikhq: no
22:31:10 <pikhq> Style, even.
22:31:28 <pikhq> Occasionally, I use it, but mostly, I prefer K&R style.
22:31:34 <ais523> I line up braces to the left of the block that they contain, level with the block that contains them
22:31:39 <ais523> and braces have their own lines
22:31:50 <sauxdado> what i don't understand about gnu style is how could somebody even come up with it.
22:32:17 <ais523> sauxdado: it does make it easy to identify Emacs users, though
22:32:22 <pikhq> RMS' brain was Lisp-tinged.
22:32:35 <ais523> one of my lecturers was really impresseed when I looked at their slide and said "Hey, you use Emacs, don't you?"
22:32:36 <sauxdado> gnu style doesn't really look lispy
22:32:38 <pikhq> And his Lisp apparently involved a horrid style, even then.
22:32:42 <sauxdado> lisp is not gratuitously baroque
22:32:58 <pikhq> ais523: Emacs' automatic formatting can be set to K&R style.
22:33:11 <ehird_> pikhq: GNU is the default.
22:33:14 <ais523> pikhq: I set its autoformat to BSD-style
22:33:15 <ehird_> GNU = Emacs is a good guess.
22:33:17 <ais523> but it's GNU by defualt
22:33:22 * pikhq nods
22:33:22 <ehird_> Nobody would code GNU style using vi!
22:33:25 <ehird_> I hope
22:33:36 <pikhq> It's possible.
22:33:44 <pikhq> Probably harder to pull off.
22:33:57 <pikhq> You'd be better off just running it through format.
22:34:02 <ais523> ehird_: GNU probably code GNU style using vi, they can't all be Emacs users
22:34:17 <ehird_> ais523: ewww
22:34:23 <ehird_> pikhq: Or killing yourself.
22:34:54 <pikhq> ehird_: You know, Gregor's if(x, y, else, z) is just the natural result of doing C-esque syntax with everything as a function. ;)
22:35:25 <evincar> pikhq: It's true.
22:35:25 <ehird_> pikhq: Yeah - it doesn't fit C-esque syntax.
22:35:32 <ehird_> It's fugly.
22:35:41 <evincar> ehird: Play nice.
22:35:46 <pikhq> (and a hell of a lot better than what he had Plof 1 doing. if(x, y); else(z); ? What the fuck where you thinking, Gregor!?! :p)
22:36:25 <pikhq> IIRC, I'm one of two people to know Plof 1. :p
22:36:29 <evincar> I wrote a (non-eso) lang a while back that treated if, else, and related constructs as operators, which functioned similarly.
22:36:29 <ehird_> pikhq: was that .. in a global stack or something
22:36:52 <ais523> I laughed out load at pikhq's last-but-one sentence
22:36:59 <ais523> and got a funny look from the person sitting next to me
22:37:03 <ais523> s/load/loud/
22:37:06 <evincar> if(x){...} returns true if (x) is true, and (x) else {...} executes ... if x is false, so it all works out.
22:37:11 <pikhq> ehird_: Global variable. That changed about as soon as I got remotely involved with std.plof.
22:37:44 -!- Dagide has quit (Remote closed the connection).
22:38:20 <ehird_> pikhq: nested if/elses? it mustve been a stack.
22:38:57 <pikhq> I don't remember the exact design, just that it was horrid.
22:39:44 <ais523> evincar: I don't think the idea of destructive action on error is yours, BTW
22:39:53 <pikhq> And the version(x as string, y as function) intrinsic? Painful.
22:39:55 <ais523> BAK required program files to have a .BAK extension, presumably to confuse DOS
22:40:13 <ais523> and in Homespring dot-space-dot and space-dot-space are defined to cause temporal paradoxes
22:40:21 <evincar> ais523: It's mine. I just might not be the first to do come up with it.
22:40:31 <ais523> evincar: I didn't word that properly
22:40:31 <evincar> s/do come/come/
22:40:35 <pikhq> (that equals, IIRC, Plof 2's if(version[x], y). Is that feature in Plof 3 yet?)
22:40:39 <ais523> DO COME FROM (1)
22:40:48 <evincar> ais523: Ha!
22:41:51 <evincar> ais523: I just need to come up with a list of standard elements.
22:42:07 <evincar> And maybe I should make them water-soluble only if their substance number is odd...
22:42:17 <GregorR> pikhq: No, not yet, need hashes first.
22:42:24 <evincar> That would be far less transparent than Aqua.
22:42:50 <pikhq> GregorR: I'll have time this summer.
22:43:15 <GregorR> pikhq: You're one of two people who knows Plof 1? Who's the other? ;)
22:43:23 <pikhq> You.
22:43:31 <pikhq> At least, I *assume* you know it.
22:43:33 <GregorR> That was what we here on Earth call a joke X_X
22:43:36 <pikhq> I mean, you *did* design it.
22:43:46 <pikhq> Sorry; I'm slightly tired still.
22:43:53 <pikhq> Let my brain get caught up.
22:44:13 * pikhq imagines his brain running around without me
22:46:07 <bsmntbombdood> http://cgi.ebay.com/Hewlett-Packard-HP-48gx-Graphic-Calculator_W0QQitemZ320243046337QQcmdZViewItem
22:46:14 <bsmntbombdood> only $41 with 4 hours left...
22:46:49 <ehird_> bsmntbombdood: go for it
22:46:53 <ehird_> we expect RPL bf interps
22:47:12 <bsmntbombdood> :D
22:47:19 <bsmntbombdood> i'm afraid it'll just be a waste of money
22:47:57 <pikhq> I expect, at the very least, a Brainfuck interpreter compiled for it.
22:48:06 <pikhq> And hope for an RPL interpreter, instead. ;)
22:48:18 <pikhq> (mmm. . . Reverse Polish Lisp. . .)
22:48:25 <bsmntbombdood> i've never coded any rpl
22:49:02 <pikhq> Shame.
22:49:29 <bsmntbombdood> indeed!
22:49:39 <bsmntbombdood> http://cgi.ebay.com/Hewlett-Packard-HP-12c-Scientific-Calculator-gold_W0QQitemZ370044620652QQcmdZViewItem
22:49:42 <bsmntbombdood> that's a good price too
23:00:09 <evincar> Do any of you ever feel like the eso community is always waiting for the next big thing?
23:00:31 <ais523> evincar: not always
23:00:31 <evincar> Sometimes I think that it may never come, sometimes I think I'll be the one to bring it.
23:00:40 <ais523> the rest of the time I think the next big thing is coming right now
23:01:52 <evincar> Heh.
23:02:01 <evincar> It really feels that way when you've got a good idea.
23:02:16 <ais523> I'm excited about several of my langs
23:02:26 <ais523> three of which show worrying signs of being practical
23:02:35 <ais523> even more worryingly, one of them is INTERCAL
23:02:40 <evincar> Heh.
23:02:49 <pikhq> What's worrying is Gregor working on any serious project. :p
23:03:04 <pikhq> I'm sorry, but after seeing ORK and Glass, the idea scares me. :p
23:03:18 <evincar> pikhq: Ha. Polite ribbing borders on abuse.
23:03:26 <evincar> ais523: Practical langauges aren't bad.
23:03:30 <evincar> languages*
23:03:38 <pikhq> evincar: I feel justified in this.
23:03:48 <pikhq> (having done some work on said serious projects with him. :p)
23:03:49 * ais523 actually likes Glass
23:06:22 * evincar dislikes the usage of magic classnames.
23:06:51 <pikhq> Magic classnames?
23:06:56 <evincar> The only place that's acceptable is in a language like perl, where *everything* is intentionally automagical.
23:07:08 <pikhq> As in: Enchantment Creature -- Elemental?
23:07:10 <pikhq> :p
23:07:12 <evincar> Class O is for output...
23:07:18 <evincar> Class I is for input...
23:07:32 <evincar> It always seems tacked-on whenever I see that in an eso lang.
23:08:05 * evincar high-fives pikhq for the MTG reference.
23:08:20 <pikhq> Speaking of which. . .
23:08:26 <pikhq> I have fairly insane card ideas.
23:09:03 <evincar> Can't trump my Sheep Deck.
23:09:36 <pikhq> Instant Land - Forest (may be played whenever you could play an instant, counts towards the number of lands you may play per turn, has "T: Add G to your mana pool." when on the stack, and has a converted mana cost of 0.) Target Forest permanent becomes a 2/2 Treefolk creature until end of turn.
23:09:48 <evincar> Shepherd (2/2 for 2+green): Tap green, put a 0/1 sheep token into play.
23:10:00 <ais523> hey, I helped to work on Magic: the Esolang
23:10:12 <ais523> and I thought sheepizing things was blue
23:10:17 <ais523> as in Ovinise, for instance
23:10:20 <evincar> Generally, yes.
23:10:28 <evincar> But the Sheep Deck is green.
23:10:31 <pikhq> White also gets that mechanic from time to time.
23:10:33 <evincar> Because I said so.
23:10:40 <evincar> ^_^
23:10:44 <evincar> You could really make it any colour.
23:10:44 <ais523> pikhq: not on lands, though
23:10:48 <pikhq> (most recently in Shadowmoor, courtesy of hybrid)
23:10:48 <ais523> only generating the tokens
23:11:23 <pikhq> Oh.
23:11:24 <evincar> Graze: Tap X green, all sheep get +X/+X until end of turn.
23:11:30 <pikhq> You're discussing my Instant Land idea?
23:11:51 <pikhq> evincar: For bombs, add in some changelings.
23:12:00 <ais523> pikhq: the rules say that you can't play lands in the opponent's turn even if they somehow get flash
23:12:10 <ais523> but you can flash them in your own turn
23:12:15 <pikhq> ais523: Obviously, the rules would need to be changed for said insanity.
23:12:27 <evincar> Heh.
23:12:36 <evincar> I've been playing with a rather interesting rule change lately.
23:12:39 <ais523> there's the land-morph-played-as-creature+Delay scenario, for instance
23:12:48 * pikhq gets a kick out of "has T: Add G to your mana pool when on the stack."
23:13:06 <evincar> To prevent mana screw, all cards can be played as basic land.
23:13:11 <ais523> oh, and when doing Unhinged they realised there were no rules against tapping cards in libraries
23:13:19 <ais523> just no card allowed you to do that
23:13:30 <pikhq> Same applies to the stack and your graveyard.
23:13:33 <pikhq> And possibly your hand.
23:13:41 <evincar> ais523: I can just see a deck with a random sideways card.
23:13:52 <ais523> they made Infernal Spawn of Infernal Spawn of Evil a real card!
23:14:01 <ais523> it was in Coldsnap, with a more sensible name
23:14:20 <pikhq> They also redid The Cheese Stands Alone.
23:14:22 <ais523> BTW, the Magic: the Esolang example on the wiki's still stuck back in Ravnica
23:14:33 <pikhq> Shameful.
23:14:42 <ais523> pikhq: maybe write a second program?
23:14:48 <pikhq> Hmm.
23:14:53 <ais523> I was pretty pleased when I put the example program up, and someone else actually bugfixed it
23:15:06 <ais523> it means someone took the time to understand how it worked
23:15:39 <pikhq> (which must obey usual deckbuilding rules, except that a deck may end with an infinite amount of basic land).
23:15:56 <pikhq> There's no reason in the Comprehensive Ruleset for the deck to not end with an infinite amount of basic land.
23:16:15 <ais523> pikhq: there is, it says the deck has to be small enough to be reasonably shufflable
23:17:30 <evincar> I just found a lang that I made three years ago!
23:17:31 <pikhq> And "reasonably shufflable" does not apply when you assume a Turing machine.
23:17:47 <ais523> anyway, you get to order M:tE decks before you start
23:17:51 <ais523> and don't have to shuffle them
23:17:54 <ais523> evincar: is it any good?
23:18:15 <pikhq> BTW, it's easy to make an infinite loop using that.
23:18:18 <ehird_> Magic is like a nomic.
23:18:36 <pikhq> Particularly with the recent untap mechanic.
23:18:38 <evincar> Kind of. The most esoteric aspects of it are that the syntax can be changed...
23:19:06 <evincar> ...and arguments to functions are given via global variables, because there's no other argument-passing mechanism.
23:19:26 <evincar> There's a standard library from which you can import and create aliases.
23:19:28 <ehird_> evincar: I meant the card game
23:19:33 <sauxdado> that's not very esoteric
23:19:38 <sauxdado> (arguments via global variables)
23:19:44 <sauxdado> that's how Basic worked
23:19:46 <evincar> No, not very.
23:19:50 <pikhq> 2 Forest, 1 Earthcraft, 1 Fertile Ground, 1 Pili-Pala.
23:19:52 <evincar> The meaning of each program line is given by a sigil.
23:19:58 <pikhq> One infinite loop: check.
23:20:02 <sauxdado> (basic with gosub)
23:20:14 <evincar> ehird_: You mean the sheep deck?
23:20:19 <ehird_> evincar: No.
23:20:23 <ehird_> Just Magic
23:20:47 <pikhq> (Earthcraft: Tap 1 creature you control: untap 1 land you control. Pila-Pala: 2, Q: Add one mana of any color to your mana pool.)
23:21:16 <evincar> Understanding Breakdown Explosion!
23:21:19 <ehird_> I don't play Magic. :P
23:21:25 <pikhq> (Q is the untap symbol.)
23:21:26 <evincar> Oh.
23:21:32 <evincar> Yeah, it's pretty fun.
23:21:49 <ais523> evincar: does that generate infinite mana?
23:21:54 <ais523> only with a double land, it seems
23:22:06 * ais523 hasn't played M:tG recently
23:22:11 <ais523> I own no card more recent than Lorwyn
23:22:16 <ais523> so I didn't stop that long ago
23:22:22 <ais523> I left when my local Magic group put up prices
23:22:40 <evincar> Oh, I forgot. Graze is an instant.
23:23:03 <pikhq> ais523: Find a different group, have fun with Shadowmoor.
23:23:04 -!- jix has quit ("CommandQ").
23:23:08 <pikhq> Release is on the 2nd.
23:24:12 <evincar> I forget the name of my favourite Sheep card. It's something like "Sheep Stampede". Has trample, gets +1/+1 for each sheep token you control.
23:24:45 * ehird_ has never ever played mtg
23:24:46 <pikhq> Sounds like an Elf.
23:27:33 <ais523> what to the people here think of http://esolangs.org/wiki/Burn, by the way
23:27:39 <ais523> I found it lying around on my hard-disk
23:27:55 <ais523> if anyone can explain it to me, pieced together with my fragments of memory of what it did, I'd be grateful
23:30:14 <Slereah> No details at all?
23:31:00 <ehird_> ais523: Turtles
23:31:36 <ais523> Slereah: the program was tiled across 2D space
23:31:37 <ehird_> ais523: Hmm
23:31:42 <ais523> and one of the pixels was changed to start it off
23:31:51 <ais523> also, all changes to the memory were irreversible
23:31:52 <ehird_> 1. Ignore program 2. Run Rule 110
23:31:57 <ehird_> Right?
23:31:59 <ais523> no pixel could ever return to a previous state
23:32:03 <ais523> and it wasn't a cheat lang
23:32:09 <ehird_> :)
23:32:55 <ais523> also, it was a cellular automaton in that each pixel only depended on its own state and that of its neighbours
23:32:58 <ais523> I think 4-neighbours
23:33:16 <ais523> and all pixels changed simultaneously in steps, cellular-automaton style
23:33:19 -!- evincar has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
23:34:58 <ehird_> ais523: And fluggamaras
23:35:30 <ais523> ehird_: ?
23:35:39 <ehird_> ais523: strue
23:37:41 -!- ais523 has quit ("TypoQ ecxeeded").
23:38:38 <Slereah> How was the input done?
23:44:27 <ehird_> Slereah: hes gone
23:44:39 <ehird_> sauxdado: What's with the nick?
23:45:02 <sauxdado> ehird_: it's a cool esperanto word. I'm learning esperanto.
23:45:47 <ehird_> sauxdado: What does it mean?
23:46:44 <sauxdado> it means saudade, which is a portuguese word.
23:47:02 <pikhq> Well, now I have a clue to pronounce it.
23:47:12 <ehird_> sauxdado: what does saudade mean
23:47:20 <Slereah> Oh, I know that one!
23:47:26 <pikhq> Nu...
23:47:32 <pikhq> Vi parolas Esperanton...
23:47:44 <ehird_> pikhq: WHUT DOES SAUXDADO MEAN
23:47:46 <ehird_> BTICH!
23:47:48 <pikhq> ehird_: Not a clue.
23:47:55 <ehird_> >:|
23:47:56 * pikhq hits lernu
23:48:23 <pikhq> Nostalgia.
23:48:40 <sauxdado> ehird_: http://en.wikipedia.org/wiki/Saudade
23:48:45 <Slereah> Sort of.
23:49:31 -!- timotiis has quit (Connection timed out).
23:50:10 <ehird_> sauxdado: Depressing!
23:52:09 <sauxdado> it's a good emotion and a good word.
23:55:01 <sauxdado> pikhq: mi eklernis kaj nur scias kelkajn vortojn
2008-04-29
00:04:22 -!- evincar has joined.
00:04:33 <evincar> Back.
00:04:51 <bsmntbombdood> ha
00:05:01 <bsmntbombdood> that hp 48 has been bid up to $150
00:05:11 <evincar> No shit.
00:05:24 <evincar> In the twenty-odd minutes I've been gone?
00:07:08 <evincar> Did I miss anything exciting?
00:07:34 <ehird_> Yes.
00:07:37 <bsmntbombdood> what?
00:07:47 <ehird_> We had an orgy, bsmntbombdood.
00:07:49 <ehird_> forgotten already?
00:07:53 <bsmntbombdood> damn :(
00:08:05 <evincar> Goodness! I could have brought punch.
00:08:32 <evincar> bsmntbombdood, it must not have been that good if you don't remember it, eh?
00:08:37 <evincar> So I shouldn't be too disappointed.
00:08:39 <bsmntbombdood> i wasn't here
00:08:48 <evincar> Aw.
00:09:19 * evincar becomes the incredible sulk
00:09:38 <ehird_> evincar: Let's have another orgy!
00:09:41 <ehird_> Just the two of us. Err...
00:10:02 <evincar> Um.
00:10:07 <evincar> I think there's a word for that.
00:10:14 <evincar> It might be called "sex", iirc.
00:10:26 <ehird_> evincar: NO YOU SEE IT'S AN ORGY
00:10:28 <ehird_> BUT WITH TWO PEOPLE
00:10:32 <ehird_> AM I RIGHT?
00:10:43 <evincar> Oh, okay.
00:10:46 <evincar> I was mistaken.
00:10:57 <evincar> () <====
00:11:01 <evincar> ()<====
00:11:04 <evincar> (<====
00:11:07 <evincar> (====
00:11:09 <evincar> (===
00:11:11 <evincar> (==
00:11:12 <evincar> (=
00:11:14 <evincar> (=
00:11:14 <ehird_> Lmao.
00:11:15 <evincar> ()
00:11:17 <evincar> Uh oh.
00:11:39 <evincar> I think you might want to get that removed.
00:11:46 <evincar> And give it back to me asap.
00:11:47 <Slereah> 8===D (_(__|
00:12:06 <evincar> Slereah: Much better.
00:12:14 <evincar> Except...
00:12:36 <evincar> If it really looks like a long emoticon, we should probably get some cosmetic help, now shouldn't we?
00:12:52 <evincar> Oh my god.
00:12:53 <Slereah> what about this? http://membres.lycos.fr/bewulf/Divers/ASCII%20PORN.txt
00:12:58 <evincar> I just thought of the best internet meme.
00:13:41 <evincar> We just need a photo of a penis from the top. Then we draw an ascii penis over it.
00:13:46 <evincar> Genius, if I do say so myself.
00:14:03 <ehird_> evincar: You win
00:14:20 <evincar> I don't think I really want to be the lucky guy.
00:14:35 <Slereah> http://www.legorobotcomics.com/comics/49.jpg
00:14:41 <evincar> I'm reserving that meme for future use, though.
00:14:43 <Slereah> Something resembling this?
00:15:05 <ehird_> Except the other way around, Slereah.
00:19:25 <Sgeo> evincar, come into #ircnomic and vote FOR fairer-deal ?
00:20:14 <ehird_> Sgeo: he won't. probably.
00:20:20 <Sgeo> Slereah?
00:20:31 -!- matthew__ has joined.
00:21:00 <Slereah> Sgeo : ehird_ no likes me in nomic :(
00:21:14 <evincar> What is it?
00:21:50 -!- matthew__ has changed nick to revcompgeek.
00:21:51 <Sgeo> It's a proposal ehird_ and myself both want passed, but it's failing quorum
00:22:05 <ehird_> Sgeo: and comex
00:22:08 <ehird_> and comex is an agoran
00:22:11 <ehird_> he should know what a good proposal is!
00:22:57 * pikhq nods
00:23:22 <ehird_> pikhq: You too! I'll even give you a point if you FOR.
00:34:55 <bsmntbombdood> http://cgi.ebay.com/Hewlett-Packard-HP-12c-Scientific-Calculator-BRAZIL_W0QQitemZ150239149291QQcmdZViewItem
00:35:00 <bsmntbombdood> that still has a good price
00:38:20 <sauxdado> not just any calcultor, but from brazil!
00:43:10 <evincar> I'm outta here.
00:43:12 -!- evincar has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
01:24:41 -!- Corun has quit ("This computer has gone to sleep").
01:26:15 -!- sebbu has quit ("@+").
01:39:44 <revcompgeek> ehird: TMCB on wiki
01:43:36 <ehird_> revcompgeek: link
01:44:40 <revcompgeek> http://esolangs.org/wiki/TMCB
01:46:39 <ehird_> revcompgeek: That's not very interesting :P
01:46:45 <revcompgeek> ?
01:46:46 <ehird_> Bitter after my {name} suggestion? :P
01:46:58 <revcompgeek> thats what that is!
01:47:19 <revcompgeek> i was going to use () but then it would have made lisp people mad
01:48:15 <revcompgeek> :)
01:48:51 <ehird_> Bye for today! :)
01:49:03 <revcompgeek> bey
01:49:11 <revcompgeek> bye :(
01:49:14 -!- ehird_ has quit (Remote closed the connection).
01:57:47 -!- Deformative has changed nick to MickMcMack.
02:11:14 -!- Sgeo has changed nick to Banker.
02:11:25 -!- Banker has changed nick to Sgeo.
02:14:42 -!- Sgeo has changed nick to Banker.
02:14:54 -!- Banker has changed nick to Sgeo.
02:20:44 -!- MickMcMack has changed nick to Deformative.
02:37:49 <Sgeo> Error in TMCB spec revcompgeek
02:38:02 <Sgeo> Where does it say that {= fjr 89} is illegal?
03:14:16 -!- revcompgeek has quit (Read error: 110 (Connection timed out)).
03:15:58 -!- revcompgeek has joined.
03:21:36 <pikhq> Sal'...
04:08:56 -!- revcompgeek has quit (Read error: 110 (Connection timed out)).
04:16:05 -!- pikhq has quit (Read error: 110 (Connection timed out)).
04:18:24 -!- calamari has joined.
04:21:00 <Sgeo> Hi calamari
04:21:19 <calamari> hi
04:21:51 <calamari> something is wrong with my monospace font.. afk, can't read this :)
04:22:30 <calamari> ehh, I'll suffer for a sec
04:22:33 <calamari> http://orto.accelart.jp/samples/Xetris/Xetris-en.html
04:23:09 <calamari> Java VM in Javascript.. but i guess Gregor beat them to it with his JS project
04:34:13 <calamari> I made a BF 2 JS compiler, but I couldn't figure out how to get a keyboard buffer working .. my blocking on , was killing the browser
04:34:30 <calamari> so I made a lame popup instead :(
04:56:17 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
04:56:47 -!- Judofyr has joined.
05:04:55 <calamari> whew, much better
06:02:06 -!- Sgeo has quit ("Ex-Chat").
06:15:56 -!- GreaseMonkey has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:09:53 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
08:10:11 -!- oklopol has joined.
08:14:54 -!- Quendus has quit (Read error: 110 (Connection timed out)).
08:36:57 -!- Quendus has joined.
09:10:43 -!- Iskr has joined.
09:35:11 -!- Corun has joined.
10:22:53 -!- oklopol has quit (Read error: 110 (Connection timed out)).
10:24:07 -!- GreaseMonkey has quit ("Unisex.").
10:32:18 -!- calamari has quit ("Leaving").
10:49:33 -!- oklofok has joined.
11:02:29 -!- oklopol has joined.
11:08:37 -!- oklofok has quit (Read error: 110 (Connection timed out)).
11:24:53 -!- oklopol has quit (Read error: 110 (Connection timed out)).
11:27:21 -!- oklopol has joined.
11:54:52 -!- sebbu has joined.
12:40:04 -!- sebbu2 has joined.
12:59:59 -!- sebbu has quit (Success).
13:12:19 -!- oklopol has quit (Read error: 110 (Connection timed out)).
13:40:44 -!- ehird has joined.
13:42:29 -!- ehird_ has joined.
13:42:29 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
13:43:47 -!- ehird has joined.
13:43:48 -!- ehird_ has quit (Read error: 104 (Connection reset by peer)).
13:44:13 <ehird> so, in case anyone's interested:
13:44:15 <ehird> it crashes on console too
13:44:26 <ehird> I ran emacs on a file and there were a few linebreaks then a solid cursor blinking
13:44:28 <ehird> and it hung
13:47:47 -!- ehird_ has joined.
13:47:47 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
13:47:52 <ehird_> Eh.
13:50:53 -!- ehird_ has quit (Read error: 104 (Connection reset by peer)).
13:52:45 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
13:53:13 -!- Judofyr has joined.
13:54:54 -!- ehird has joined.
14:05:36 <ehird> so ais523, if you're reading this
14:05:42 <ehird> i think what INTERCAL needs to boost its popularity is a rap song
14:05:44 <ehird> okay?
14:17:29 -!- jix has joined.
14:26:05 -!- oklopol has joined.
14:28:52 -!- Corun has quit ("Leaving").
14:38:45 -!- pikhq has joined.
14:41:19 -!- Corun has joined.
17:10:09 -!- Corun has changed nick to MrsCorun.
17:13:14 <ehird> MrsCorun: *Mrs*Corun?
17:13:25 <ehird> Interesting choice of name
17:13:39 <MrsCorun> Esoteric, one might say
17:14:00 <Slereah> *rimshot*
17:15:19 <MrsCorun> O_o
17:15:57 -!- MrsCorun has changed nick to Corun.
17:18:42 <oklopol> Corun: u woman?
17:18:48 <Corun> Nope.
17:19:04 <oklopol> darn
17:19:10 <Corun> Heh
17:22:23 <Slereah> Are you a trap? :o
17:23:17 <fizzie> The cake is a lie.
17:24:15 <Slereah> You -> o | o <- Delicious cake
17:24:20 <Slereah> What do you do?
17:24:29 <Slereah> You -> o | o <- Delicious cake
17:24:31 <Slereah> Thar
17:24:35 <Slereah> Wait
17:24:40 <Slereah> You -> o | o <- Delicious cake
17:24:44 <Slereah> There we go
17:24:50 <Slereah> What do you do?
17:25:06 <fizzie> Go east.
17:25:41 <Slereah> You ->o | o <- Delicious cake
17:25:53 <Slereah> YOU ARE NO CLOSER TO THE CAKE
17:26:02 <fizzie> That was maybe the wrong way to go, then.
17:26:27 <Slereah> You -> o| o <- Delicious cake
17:26:33 <Slereah> You encounter a wall.
17:26:43 <Slereah> What do you do?
17:27:01 <fizzie> Inventory?
17:27:46 <Slereah> A box of matches. A bandana. And a clothehanger.
17:28:03 <fizzie> \forall x \in inventory, y \in inventory: apply x to y.
17:28:31 <Slereah> Your bandana is on fire.
17:28:44 <Corun> Burn down the wall
17:29:21 <fizzie> "Oh no, now Billy has caught fire!"
17:29:35 <ehird> Restart
17:29:36 <Slereah> THE WALL DOES NOT BURN
17:29:43 <Slereah> BECAUSE IT IS A WALL
17:29:52 <Slereah> You -> o | o <- Delicious cake
17:30:06 <Corun> jump
17:31:11 <Slereah> You -> o
17:31:20 <Slereah> | o <- Delicious cake
17:31:29 <Slereah> You -> o | o <- Delicious cake
17:31:47 <Corun> go east
17:32:02 <Slereah> You -> o| o <- Delicious cake
17:32:31 <Corun> fashion a pickaxe out of the coathanger
17:32:51 <Slereah> Does not compute.
17:33:03 <Corun> jump over wall
17:33:22 <Slereah> You -> o
17:33:32 <ehird> Slereah: Restart
17:33:35 <Corun> NOOO!
17:33:35 <ehird> Jump left
17:33:36 <Slereah> | o <- Delicious cake
17:33:40 <ehird> Flamethrower
17:33:41 <Slereah> You -> o
17:33:43 <Slereah> | o <- Delicious cake
17:33:46 <ehird> Reopen
17:33:47 <ehird> Duck
17:33:48 <Slereah> You -> o
17:33:49 <Slereah> | o <- Delicious cake
17:33:51 <ehird> Shoot missile at Duck
17:33:53 <Slereah> You -> o
17:33:54 <ehird> Drop down
17:33:55 <Slereah> | o <- Delicious cake
17:33:56 <ehird> Die
17:33:58 <ehird> Shoot missle
17:34:00 <ehird> Collect cake
17:34:00 <Slereah> You -> o
17:34:01 <ehird> Eat cake
17:34:03 <Slereah> | o <- Delicious cake
17:34:06 <ehird> Win
17:34:11 <Slereah> You -> o
17:34:12 <Slereah> | o <- Delicious cake
17:34:27 <Slereah> |o o <- Delicious cake
17:34:28 <Corun> go east; examine cake;
17:34:35 <ehird> Slereah: RESTART
17:34:36 <Slereah> | o <- Delicious cake
17:34:49 <Slereah> o AAAAAAAH
17:34:53 <Slereah> o AAAAAAAH
17:34:53 <Slereah> o AAAAAAAH
17:34:54 <Slereah> o AAAAAAAH
17:34:54 <Slereah> o AAAAAAAH
17:34:55 <ehird> Slereah: Restart
17:35:04 <ehird> Corun: I know what I'm doing. plz let me try.
17:35:12 <Slereah> You -> o | o <- Delicious cake
17:35:15 <Corun> Ok, but I get half the winning cake
17:35:33 <Slereah> (I'll drop the signs)
17:35:44 <Slereah> o | o
17:36:20 <ehird> Corun: Sure.
17:36:25 <ehird> Slereah: Okay. So we've started.
17:36:30 <ehird> Equip flamethrowser.
17:36:34 <ehird> *flamethrower
17:36:39 <Slereah> You do not have a flamethrower.
17:36:51 <ehird> Get flamethrower from hammerspace
17:37:16 <Slereah> ehird wants to cheat his way to the delicious cake.
17:37:21 <ehird> Okay, forget that.
17:37:23 <ehird> I have a better idea.
17:37:25 <ehird> List inventory
17:37:42 <Slereah> A box of matches. A bandana. A clothanger.
17:38:33 <ehird> Put match in bandada. Put matchdana by the wall.
17:38:48 <Slereah> Your bandana is on fire.
17:38:54 <Slereah> The wall does not burn.
17:38:57 <Slereah> For it is a wall.
17:39:08 <Corun> HE DIDN'T LIGHT THE MATCH
17:39:12 <ehird> Corun: EXACTLY
17:39:19 <Corun> :-)
17:39:23 <ehird> Slereah: I didn't light it!
17:39:39 <Slereah> The matchdana does nothing.
17:39:49 <ehird> Slereah: Okay.
17:39:50 <Slereah> WHAT DO YOU DO NOW
17:39:53 <ehird> What is to the <--- of me?
17:39:58 <ehird> Just look, don't go.
17:40:30 <Slereah> >:3 o | o
17:40:39 <Slereah> JESUS CHRIST, IT'S A LION
17:40:46 <Corun> FUCK.
17:40:48 <Corun> BURN IT!
17:40:53 <ehird> Corun: Noooo!
17:40:58 <Corun> Oh, sorry.
17:40:59 <ehird> Slereah: kill lion with coathanger.
17:41:03 <ehird> Wrap it around its penis.
17:41:10 <ehird> While it is distracted, eat its face.
17:41:16 <ehird> Then throw it over the wall.
17:41:23 <Corun> It'll eat the cake tho!
17:41:27 <ehird> Corun: It's ... dead.
17:41:28 <Slereah> >:3?o | o
17:41:33 <Slereah> >:3?o | o
17:41:37 <Slereah> Means I.
17:41:39 <ehird> If it wasn't dead when we ate its face, it will be over the wall.
17:41:49 <Slereah> >:3 | o
17:41:56 <Slereah> You are eaten by an lion.
17:42:01 <ehird> Slereah: Oh, wait.
17:42:04 <ehird> Restart, look <---
17:42:06 <Corun> BURN ITS INSIDES
17:42:21 <Slereah> o | o
17:42:28 <ehird> Slereah: Yeah, yeah, and we see a lion.
17:42:28 <ehird> Okay.
17:42:31 <ehird> Get in the car.
17:42:35 <Slereah> >:3 o | o
17:42:56 <Slereah> HOW CAN YOU GET IN THE CAR IF YOU HAVE NO MOUTH
17:43:03 <ehird> Slereah: Very easily
17:43:06 <ehird> Get in the jar.
17:43:07 -!- oklopol has quit (Connection timed out).
17:43:08 <ehird> err.
17:43:11 <ehird> car, but jar will work
17:44:27 <Slereah> There is no car.
17:44:40 <Slereah> >:3 o | o
17:44:50 <Slereah> THINK FAST, THE GRUE IS GETTING CLOSER
17:44:52 <ehird> Slereah: Set fire to lion. It dies.
17:45:06 <ehird> However, DO NOT LET THE LION'S FIRE POUR OUT.
17:45:07 <ehird> Err
17:45:09 <ehird> Not pour
17:45:09 <ehird> GO
17:45:11 <ehird> okay
17:45:15 <ehird> so just update me, when it's dead, and on fire.
17:45:18 <Slereah> What, you want to set a lion on fire with matches?
17:45:26 <ehird> Slereah: No.
17:45:38 <ehird> Set matches alight, put in bandana, put bandana over lion's head.
17:45:44 <ehird> That should do it pretty quickly.
17:45:49 <ehird> (You throw it on, not go up to him obviously)
17:46:40 <Slereah> e o | o
17:46:43 <Slereah> Oops
17:46:51 <ehird> Slereah: Is that a lion on fire?
17:46:59 <Slereah> Well, I can't represent the lion running the other way around.
17:47:07 <Slereah> I don't have epsilons
17:47:08 <Corun> Heh
17:47:15 <ehird> Slereah: Ah. So is it basically harmless now?
17:47:18 <Slereah> o | o
17:47:18 <ehird> i.e. dying like hell
17:47:22 <Slereah> Let's say it is
17:47:30 <Corun>
17:47:34 <ehird> Slereah: Okay. Grab the lion.
17:47:35 <Corun>
17:47:37 <Slereah> BUT YOU STILL ARE NO CLOSER TO DELICIOUS CAKE
17:47:38 <ehird> Make sure it is DEAD
17:47:41 <ehird> And throw it over the wall.
17:47:49 <ehird> (it is dead so it will not be able to eat the cake.)
17:48:35 <Slereah> >X3
17:48:37 <Slereah> o| o
17:48:43 <Corun> Heh
17:48:44 <Slereah> >X3
17:48:46 <Slereah> o| o
17:49:00 <Slereah> o|>X3 o
17:49:18 <Slereah> o| o
17:49:20 <Slereah> >X3
17:49:24 <Slereah> Nooooooo
17:49:28 <ehird> Slereah: I assume there is a platform somewhere.
17:49:30 <ehird> Right?
17:49:36 <ehird> Okay, wait, undo last action.
17:49:42 <Slereah> o| o
17:49:48 <ehird> Do it, but while you throw the lion, throw it a little further, just enough to land kinda near the cake BUT NOT ON IT
17:49:49 <ehird> and...
17:49:51 <ehird> GRAB ON TO IT
17:49:52 <ehird> AND GO WITH IT
17:50:04 <ehird> Then, when the lion gets close to the cake
17:50:08 <ehird> jump on to the cake, lightly
17:50:08 <Corun> Bare in min that that makes no sense
17:50:18 <ehird> Then, eat the delicious cake.
17:50:22 <Slereah> You want to throw the lion so hard that it will take you away?
17:50:30 <Corun> That makes _NO SENSE_
17:50:39 <ehird> Slereah: Yes
17:50:42 <ehird> add a little jump if you want
17:50:46 <ehird> but yes
17:50:51 <Slereah> Maybe you can do like Munchausen, just lift you by your ponytail.
17:51:08 <ehird> Slereah: Whatever. Just do it.
17:51:31 <Slereah> It does not work.
17:51:39 <ehird> Slereah: What happens?
17:51:52 <Slereah> You are not magically lifted by the lion throwing.
17:52:20 <ehird> Slereah: That's why you do one of the epic jumps that we did before.
17:52:21 <ehird> While throwing it
17:52:36 <ehird> Slereah: Oh, and to hold on
17:52:39 <ehird> attach the clothes hanger
17:52:43 <ehird> and hang on to it
17:53:52 <Slereah> You do not deserve delicious cake with such ideas.
17:54:12 <ehird> Slereah: That doesn't mean you are not commanded to do what I said
17:54:18 <ehird> Corun: if this doesn't work let's collaborate :P
17:54:30 <Corun> Hehe
17:54:37 <Slereah> ...
17:54:54 <Slereah> :<o| o
17:55:00 <Slereah> :<| o
17:55:05 <Slereah> You are eaten by a grue.
17:55:08 <ehird> Slereah: Okay, restart.
17:55:11 <ehird> Corun: COLLABORATIME
17:55:25 <Slereah> ROCK FALLS, EVERYONE DIE!
17:55:28 <ehird> Corun: You go first
17:55:32 <Slereah> o | o
17:55:38 <Corun> Ok. I think... look up
17:56:12 <Slereah> . <- this dot is here because I cannot send empty space
17:56:14 <Slereah> o | o
17:57:02 <ehird> Slereah: Look down
17:57:40 <Slereah> o | o
17:57:49 <Slereah> ------- -----
17:57:53 <ehird> Slereah: WRONG
17:57:57 <ehird> there isn't floor on the other side
17:57:58 <ehird> oh wit
17:58:00 <ehird> there's only ONE gap
17:58:03 <ehird> Corun: okay, your turn!
17:58:17 <Corun> Okay!
17:58:30 <Slereah> Guys.
17:58:42 <Corun> Mmm?
17:58:43 <Slereah> Is this the first IRP game program? :o
17:59:13 <ehird> Slereah: Yep.
17:59:20 <ehird> It's epic!
17:59:33 <ehird> but not the fisrt irc game
17:59:35 <ehird> but it's the best :p
17:59:43 <ehird> Corun: Wait
17:59:49 <Slereah> Well, it is just another one of those cake challenges from 4chan.
17:59:51 <ehird> can't we knock down the wall -- somehow -- and make it cove rup the blank space?
17:59:55 <ehird> Slereah: But on IRC.
17:59:57 <Slereah> Although without pix.
18:00:10 <Corun> Examine the strength of the wall
18:00:34 <Slereah> http://images.encyclopediadramatica.com/images/5/5b/Deliciouscake.png
18:00:55 <Slereah> o| o
18:00:59 <Slereah> It is made of bricks.
18:01:44 <Corun> Any holes?
18:02:06 <Slereah> It's a stroke, it shouldn't have any!
18:03:41 <Corun> Push the wall, as hard as I can
18:04:10 <Slereah> o | o
18:04:15 <Slereah> o | o
18:04:18 <Slereah> o | o
18:04:22 <Slereah> o | o
18:04:27 <Slereah> o | o
18:04:52 <Slereah> >>>o | o
18:05:03 <Slereah> >>>o | o
18:05:20 <Slereah> o| o
18:05:26 <Slereah> x| o
18:05:36 <Slereah> Your skull was not stronger than bricks.
18:05:44 <Corun> I didn't want to push with my skull
18:05:58 <Corun> I didn't want to take a run up, either :-P
18:06:00 <Corun> Help, ehird :-P
18:06:39 <ehird> Corun: Undo
18:06:53 <ehird> should work
18:07:04 <Slereah> o | o
18:07:52 <ehird> Slereah: not restart
18:07:53 <ehird> UNDO
18:08:08 <Slereah> o| o
18:08:30 <Corun> kick the wall in a non-life-threatening way
18:08:48 <Slereah> o-| o
18:08:52 <Slereah> o| o
18:09:20 <Slereah> >:3 o| o
18:09:23 <Corun> FUCK!
18:09:26 <Slereah> Oh-oh.
18:09:38 <Corun> Matches + bandana -> lion head
18:09:45 <Corun> Then climb on top of the wall
18:09:48 <Slereah> >X3 o| o
18:09:51 <Slereah> YOU MONSTER
18:09:54 <Slereah> MURDERER!
18:10:29 <Slereah> o
18:10:32 <Slereah> Oops
18:10:38 <Slereah> o
18:10:47 <Slereah> | o
18:11:01 <Corun> How far can we jump?
18:11:16 <ehird> <Corun> Matches + bandana -> lion head <-- I love the credit I'm getting
18:11:27 <Corun> Hehe
18:11:33 <Corun> Your turn then :-P
18:11:43 <ehird> Corun: he didn't answer yet
18:11:47 <Corun> I know
18:12:36 <Slereah> [18:32] <Corun> jump over wall
18:12:36 <Slereah> [18:33] <Slereah> You -> o
18:12:36 <Slereah> [18:33] <Slereah> | o <- Delicious cake
18:12:36 <Slereah> [18:33] <Slereah> You -> o
18:12:36 <Slereah> [18:33] <Slereah> | o <- Delicious cake
18:12:37 <Slereah> [18:33] <Slereah> You -> o
18:12:39 <Slereah> [18:33] <Slereah> | o <- Delicious cake
18:12:41 <Slereah> [18:33] <Slereah> You -> o
18:12:43 <Slereah> [18:33] <ehird> Drop down
18:12:45 <Slereah> [18:33] <Slereah> | o <- Delicious cake
18:12:47 <Slereah> [18:33] <Slereah> You -> o
18:12:49 <Slereah> [18:33] <Slereah> | o <- Delicious cake
18:12:51 <Slereah> [18:33] <Slereah> You -> o
18:12:53 <Slereah> [18:34] <Slereah> | o <- Delicious cake
18:12:55 <Slereah> [18:34] <Slereah> |o o <- Delicious cake
18:12:57 <ehird> Slereah: Uhh
18:12:57 <Slereah> [18:34] <Slereah> | o <- Delicious cake
18:12:59 <Slereah> [18:34] <Slereah> o AAAAAAAH
18:12:59 <ehird> Slereah: Stop?
18:13:01 <Slereah> [18:34] <Slereah> o AAAAAAAH
18:13:03 <Slereah> [18:34] <Slereah> o AAAAAAAH
18:13:05 <Slereah> [18:34] <Slereah> o AAAAAAAH
18:13:05 <ehird> Slereah: What ar eyou doing, and why
18:13:07 <Slereah> [18:34] <Slereah> o AAAAAAAH
18:13:09 <Slereah> That seems to be one char :o
18:13:10 <Corun> That was an excessive paste :-P
18:13:15 <Slereah> 22 lines only!
18:13:27 <ehird> Slereah: Okay, one char. but that's from the floor
18:13:33 <Slereah> That's less than the declaration of independance!
18:13:33 <ehird> err, I mean
18:13:38 <ehird> one char above the |
18:13:39 <ehird> from the floor
18:13:42 <ehird> but from here...
18:13:44 <ehird> Slereah: Look up
18:14:00 <Slereah> *
18:14:04 <Slereah> *
18:14:07 <Slereah> *
18:14:11 <Slereah> *
18:14:14 <ehird> Slereah: Whut is *
18:14:20 <Slereah> o
18:14:27 <Slereah> | o
18:14:32 <Slereah> It are stars.
18:14:50 <Slereah> HURRY, BEFORE THE GRUE COMES!
18:14:55 <Corun> poke the cake with the coathanger
18:15:11 <ehird> Corun: too far.
18:15:14 <Slereah> o
18:15:15 <ehird> hmm
18:15:17 <Slereah> | o
18:15:20 <Corun> Heh
18:15:22 <ehird> Slereah: Are we high enough to grab a star?
18:15:23 <Slereah> You do not reach.
18:15:27 <ehird> Or at least. Are the stars near?
18:15:31 <Slereah> What are you, a plumber?
18:15:38 <ehird> Just askin'
18:15:58 <Corun> Maybe we should go to the west where the lion came from
18:16:02 <ehird> Corun: Nah.
18:16:11 <ehird> I wanna know about the *s first
18:16:14 <ehird> Slereah: Are we close to the *s
18:16:23 <Corun> We could use the lion to parachute down :-P
18:16:29 <Slereah> The stars are here to look up, because I cannot send spaces.
18:16:37 <Slereah> o
18:16:45 <Slereah> | o o
18:16:50 <Slereah> A challenger appear.
18:17:37 <ehird> Corun: ok
18:17:49 <ehird> Slereah: Strip everything from the lion, apart from the nice fluffy stuff that can be used for parachuting.
18:17:56 <ehird> Throw it all, really damn hard, at the opponent.
18:18:14 <Corun> Then parachute from the wall to the floor, avoiding the hole
18:18:21 <ehird> Corun: Yes.
18:18:31 <ehird> AND THEN GRAB THE CAKE
18:18:32 <ehird> Immediately
18:18:32 <Slereah> You could, you know, jump.
18:18:33 <ehird> In your hands
18:18:35 <ehird> very strongly
18:18:38 <ehird> Slereah: no, we'll fall
18:18:40 <Slereah> There's only line one tile missing.
18:18:49 <ehird> Slereah: We might undo to that if this doesn't work
18:18:51 <ehird> let's try this first.
18:19:29 <Slereah> How far do you throw the lion.
18:19:45 <Corun> We're only throwing the non-fluffy bits of the lion
18:19:55 <Corun> And we're throwing at the challenger
18:19:56 <Slereah> BUT HOW FAR
18:20:23 <Corun> The distance between us, and when it hits the challenger :-P
18:20:40 <Slereah> o>X3
18:20:46 <Slereah> | o o
18:20:53 <Slereah> o >X3
18:20:56 <Slereah> | o o
18:21:00 <Slereah> o >X3
18:21:03 <Slereah> | o o
18:21:06 <Slereah> o >X3
18:21:09 <Slereah> | o o
18:21:12 <Slereah> o >X3
18:21:13 <Corun> I'm worried for the cake :-)
18:21:16 <Slereah> | o o
18:21:20 <Slereah> o >X3
18:21:22 <Slereah> | o o
18:21:29 <Slereah> o >X3
18:21:33 <Slereah> | o o
18:21:37 <Slereah> (a while later)
18:21:43 <Slereah> o >X3
18:21:47 <Slereah> | o o
18:21:52 <Slereah> o >X3
18:21:54 <Slereah> | o o
18:22:09 <ehird> Slereah: We still have the fluffy parachutey bits right?
18:22:19 <Slereah> | o >X3o
18:22:24 <Slereah> OH NOES!
18:22:50 <Slereah> <- time for a victory dance
18:22:54 <Slereah> | o
18:23:10 <ehird> Slereah: Okay. Parachute with the fluffy parachutey bits down to the floor next to the cake
18:23:14 <ehird> Then immediately grab the cake
18:23:20 <ehird> And hold it tightly but firmly and gently
18:23:26 <ehird> Then, examine it.
18:23:29 <ehird> If it is delicious, eat it.
18:23:49 <Corun> (Aslong as it's not poisonous)
18:24:26 <ehird> Corun: yeah
18:24:30 <ehird> as long as it isn't gonna kill us :P
18:24:37 <ehird> Or debilitate us so that we are fucked
18:24:41 <Slereah> ?
18:24:49 <Slereah> * o
18:24:50 <ehird> Slereah: what does that mean
18:24:53 <ehird> oh
18:24:53 <Slereah> Oops
18:24:55 <Slereah> ?
18:24:56 <Corun> It's a parachute :-P
18:24:58 <Slereah> o
18:25:00 <Slereah> | o
18:25:11 <Slereah> ?
18:25:18 <Slereah> | o o
18:25:21 <ehird> Slereah: No.
18:25:25 <ehird> We specifically avoided that.
18:25:26 <ehird> :|
18:25:28 <ehird> Oh wait
18:25:30 <ehird> that isn't on the gap
18:25:30 <ehird> OK
18:25:35 <Slereah> | o o
18:25:37 <Corun> We're not going down the hole :-P
18:25:43 <Slereah> PLEASE MIND THE GAP
18:25:55 <ehird> Slereah: Okay. immediately leap for the cake and grab it, and land on nice floor.
18:26:11 <Slereah> | o o
18:26:16 <Slereah> | o o
18:26:23 <Slereah> | o o
18:26:34 <Slereah> | o<o OM NOM NOM
18:26:49 <Slereah> | o
18:26:52 <Slereah> You win!
18:26:55 <Corun> We won!
18:28:53 <Slereah> SOON TO BE RELEASED : DELICIOUS CAKE 2
18:29:05 <Slereah> *cue the GlaDOS music*
18:30:56 <ehird> WE WON!!!!
18:31:03 <ehird> Slereah: Also..
18:31:07 <ehird> Ddn't the cake just eat us?
18:31:09 <ehird> <Slereah> | o<o OM NOM NOM
18:31:09 <ehird> <Slereah> | o
18:31:27 <Corun> And, how are our arms longer than our jumping distance :-P
18:32:37 <Slereah> This is no arm
18:32:41 <Slereah> It is a mouth
18:32:51 <Slereah> Plus, it's red, so it's yours.
18:32:55 <Corun> I thought you were going to say it was a spacestation
18:33:03 <ehird> Slereah: THE CAKE ATE US DAMNIT
18:33:15 <Slereah> Sure, whatever makes you happy.
18:33:21 <Corun> We still won :-P
18:33:30 <Slereah> You people and your freaky fetishes.
18:34:36 <ehird> EAT THE CAKE FROM THE INSIDE
18:34:37 <ehird> BABY
18:35:04 <sauxdado> i eat your mom from the inside
18:38:37 -!- timotiis has joined.
18:44:25 <Slereah> NOW IT IS YOUR TURN TO CHALLENGE US
18:47:51 -!- olsner has joined.
18:47:56 <ehird> Slereah: Oh boy.
18:48:11 <ehird> Slereah: Does this mean me and Corun have to help u to GET CAEK
18:48:22 <Corun> I'm going to make food
18:48:24 <Corun> Sorry :-)(
18:50:16 <Slereah> Plus, I'm too lazy to do another one right now.
18:50:29 <ehird> Slereah: Tough!
18:50:32 <ehird> ````````````````````````````
18:50:46 <ehird> | O ~ ~ ~ ~ ~~ ~ ~ o |
18:50:49 <ehird> ````````````````````````````
18:50:55 <ehird> Slereah: O=caek
18:50:56 <ehird> o=you
18:51:31 <Slereah> ~?
18:52:03 <sauxdado> what happen to the channel
18:52:13 <sauxdado> it's like a big eatery!
18:52:29 <Slereah> IT IS DELICIOUS CAKE SAUX
18:52:32 <Slereah> *socks
19:00:42 <ehird> Slereah: ~ = adasd
19:01:14 <Slereah> ?
19:01:26 -!- jix has quit (Read error: 104 (Connection reset by peer)).
19:10:19 -!- jix has joined.
19:29:21 -!- Slereah_ has joined.
19:45:22 -!- Slereah has quit (Read error: 110 (Connection timed out)).
19:53:52 -!- timotiis has quit ("leaving").
19:54:41 -!- timotiis has joined.
20:08:15 -!- Slereah has joined.
20:08:16 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
20:16:12 -!- Slereah_ has joined.
20:16:28 <Slereah_> Roooh, quand mme VobE.
20:16:41 <Slereah_> N'as-tu pas honte?
20:16:49 <Slereah_> Wait, wrong window.
20:17:05 <GregorR> Blerdehblerdeh English fügel
20:23:31 <olsner> herrejistanes, vad pratar ni fr goja egentligen?
20:25:33 <sauxdado> mi ne fikomprenas!
20:26:19 <olsner> wakaranai no ka? zannen da ne...
20:33:24 -!- Slereah has quit (Read error: 110 (Connection timed out)).
20:34:41 <Deewiant> ei voi ymmärtää
20:42:19 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
20:45:45 -!- Slereah has joined.
21:08:53 -!- evincar has joined.
21:08:57 -!- Corun_ has joined.
21:09:16 <evincar> Hi.
21:09:18 -!- Corun has quit (Read error: 104 (Connection reset by peer)).
21:09:59 <ehird> Hi evincar
21:10:26 <evincar> ehird, I don't suppose you've done that interpreter?
21:10:32 <ehird> evincar: :(
21:10:41 <evincar> That's all right.
21:10:48 <evincar> I appreciate that you volunteered, anyway.
21:11:01 <evincar> I'm going to make my own when I get around to it, but it wou
21:11:12 <evincar> ..ld have been nice to have another person's take on it.
21:11:19 <evincar> Odd place to stop a line.
21:11:46 <ehird> evincar: I will finish it
21:12:55 -!- Slereah has quit (Read error: 110 (Connection timed out)).
21:22:32 <evincar> I am too damn busy.
21:22:37 <evincar> In general, I mean.
21:22:52 <evincar> I might be on later tonight.
21:22:56 -!- evincar has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
21:25:38 -!- Iskr has quit ("Leaving").
22:00:06 <ehird> brb ~30min
22:12:46 -!- jix has quit ("CommandQ").
22:13:14 -!- olsner has quit ("Leaving").
23:01:20 -!- Corun_ has quit ("This computer has gone to sleep").
23:01:56 <sauxdado> "hello"
23:02:09 <sauxdado> how to say "hello" in Spanish?
23:02:17 <sauxdado> how to say "how to say "hello" in Spanish?" in Spanish?
23:02:34 <sauxdado> how to say "how to say "how to say "hello" in Spanish?" in Spanish?" in Spanish?
23:02:46 <sauxdado> ...
23:02:53 <sauxdado> "hola"
23:03:01 <sauxdado> como se dice "hola" en Ingles?
23:03:14 <sauxdado> como se dice "como se dice "hola" en Ingles?" en Ingles?...
23:04:45 <ehird> Back
23:09:51 <sauxdado> como se dice "how to say "como se dice "hola" en Ingles?" in Spanish?" en Ingles?
23:10:49 <ehird> sauxdado: cake.
23:10:50 <RodgerTheGreat> is there a recursion in here?
23:36:30 -!- Slereah_ has joined.
23:44:45 -!- timotiis has quit (Read error: 110 (Connection timed out)).
23:47:53 -!- GreaseMonkey has joined.
23:50:56 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
23:51:15 -!- Slereah_ has joined.
2008-04-30
00:28:41 -!- sebbu2 has quit ("@+").
01:46:02 -!- Sgeo has joined.
02:11:18 -!- GreaseMonkey has quit ("Unisex.").
02:32:09 -!- ehird has quit (Remote closed the connection).
04:06:48 -!- Sgeo has quit ("Ex-Chat").
04:06:49 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
04:07:25 -!- Slereah_ has joined.
04:35:18 -!- pikhq has quit (Read error: 110 (Connection timed out)).
04:36:57 -!- GreaseMonkey has joined.
04:48:40 -!- Sgeo has joined.
05:06:22 -!- RodgerTheGreat has quit.
05:21:22 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
07:00:28 -!- Sgeo has quit ("Ex-Chat").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:57:00 <AnMaster> cfunge now supports = btw
08:57:32 * AnMaster thinks it is time for a new release very soon, though need to test a few things that mycology doesn't first
08:58:08 <AnMaster> Deewiant, oh and ccbi got a fault in it's = instruction
08:58:13 <AnMaster> it pushes wrong return code
08:58:32 <AnMaster> Deewiant, http://rafb.net/p/vO2eqx94.html
08:58:57 <AnMaster> basically that just shows that it uses the raw return value of system() rather than extracting the exit code
08:59:22 <AnMaster> retval = WEXITSTATUS(system(command));
08:59:31 <AnMaster> I think WEXITSTATUS may be a macro actually
08:59:48 <AnMaster> in any case: it pushes 512 instead of 2 as exit code for the test program on my system
09:05:33 <fizzie> Nitpickery: one should actually first test with WIFEXITED(x) that the process has terminated normally (and not died to an uncaught signal or something), since otherwise the WEXITSTATUS value might be anything.
09:07:09 <AnMaster> fizzie, I'm afraid that the funge98 standard may be a bit unclear in fact:
09:07:14 <AnMaster> "After execution, a failure value is pushed onto the stack. If this value is zero, everything went as expected. If the value is non-zero, it may be the return-code of the program that was executed; at any rate it means that the attempt to execute the program, or the program itself, did not succeed."
09:07:38 <AnMaster> so it is possible that ccbi does not break the standard
09:07:52 <AnMaster> however, it is not logical the way it does it
09:08:09 <AnMaster> fizzie, but probably yeah
09:08:30 <AnMaster> anyway he got an issue, as ccbi is in D, and WIFEXITED and such are defined as macros in the system headers
09:08:38 <AnMaster> not sure he could use them in his program then
09:08:56 <AnMaster> cfunge can use them, as it is C
09:25:43 -!- Iskr has joined.
09:32:35 -!- Corun_ has joined.
09:35:42 -!- Corun_ has quit (Client Quit).
10:08:51 <Deewiant> AnMaster: the spec says only that it's "Equivalent to C-language system() call behaviour". the return value of system() is implementation-defined so I'd argue that processing it with WEXITSTATUS is a violation of the standard: such processing should be done by the befunge, not the interpreter
10:09:28 <AnMaster> Deewiant, it is not possible for the funge to do that, as it can't know the definition of WEXITSTATUS
10:09:46 <AnMaster> the reason for the macro is that the exact format of the return value may differ between different systems
10:10:10 <AnMaster> also it states: "If the value is non-zero, it may be the return-code of the program that was executed; at any rate it means that the attempt to execute the program, or the program itself, did not succeed."
10:10:18 <AnMaster> return code implies WEXITSTATUS I think?
10:10:45 <Deewiant> it _may be_
10:10:58 <Deewiant> the whole thing is implementation defined
10:11:06 <Deewiant> IMO the interpreter should just pass such things through
10:11:18 <AnMaster> "I'd argue that processing it with WEXITSTATUS is a violation of the standard"
10:11:21 <AnMaster> hm
10:11:32 <Deewiant> can the definition of WEXITSTATUS vary between Posix systems?
10:12:00 <AnMaster> Deewiant, I think it can
10:12:11 <Deewiant> then your interpreter has to be recompiled for each system
10:12:21 <AnMaster> the macro is there to hide exactly what bits are used
10:12:40 <AnMaster> Deewiant, indeed, but it has anyway as WIFEXITED could also vary in the same way
10:12:49 <AnMaster> and that is needed by the PERL fingerprint
10:12:50 <Deewiant> and why would you need WIFEXITED
10:12:59 <AnMaster> <AnMaster> and that is needed by the PERL fingerprint
10:13:08 <Deewiant> what for
10:14:28 <AnMaster> because of issues with the pipes that happened otherwise
10:14:57 <Deewiant> sigh
10:15:05 <AnMaster> when things went wrong in my tests
10:15:39 <AnMaster> also, if the instruction fails to execute, it would reverse, logically
10:15:46 <Deewiant> why is WEXITSTATUS needed, why can't system() return the return code directly
10:15:58 <AnMaster> Deewiant, because it returns more data
10:16:02 <AnMaster> in different bits
10:16:11 <AnMaster> some bits are return code, other are not
10:16:30 <AnMaster> The value returned is -1 on error (e.g. fork(2) failed), and the return status of the command otherwise. This latter return status is in the format
10:16:30 <AnMaster> specified in wait(2). Thus, the exit code of the command will be WEXITSTATUS(status). In case /bin/sh could not be executed, the exit status will be
10:16:30 <AnMaster> that of a command that does exit(127).
10:16:36 <AnMaster> so see man 2 wait
10:17:04 <AnMaster> WIFEXITED, WIFSIGNALED, and so on
10:17:11 <Deewiant> and WIFEXITED isn't specified... great
10:17:20 <AnMaster> what?
10:17:31 <AnMaster> it is in /usr/include/sys/wait.h
10:17:37 <Deewiant> it's not specified in the standard
10:17:41 <AnMaster> or probably, on linux, some file included by that
10:17:41 <Deewiant> it's implementation defined as usual
10:17:50 <AnMaster> Deewiant, err, it is defined as "should exist" in POSIX
10:17:52 <Deewiant> " returns true if the child terminated normally"
10:17:57 <Deewiant> well of course
10:18:02 <Deewiant> but it doesn't say what it /does/
10:18:03 <AnMaster> aye
10:18:13 <Deewiant> does it take the top bit, check for x & 0xf != 0, or what
10:18:21 <AnMaster> Deewiant, on linux it checks if a certain bit is high
10:18:27 <AnMaster> don't think it was top bit
10:18:28 <Deewiant> that's not helpful
10:18:32 <Deewiant> because that's only on linux
10:18:43 <Deewiant> and liable to change from one kernel version to the next
10:18:45 <AnMaster> /usr/include/gentoo-multilib/amd64/stdlib.h:# define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
10:18:46 <AnMaster> /usr/include/gentoo-multilib/amd64/bits/waitstatus.h:#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
10:18:55 * AnMaster checks on freebsd
10:19:05 <Deewiant> they may or may not be the same, I don't care
10:19:15 <Deewiant> the fact is that the standard doesn't say what they should be and hence one can't rely on it
10:19:17 <AnMaster> /usr/include/sys/wait.h:#define WEXITSTATUS(x) (_W_INT(x) >> 8)
10:19:22 <AnMaster> seems different yeah :D
10:19:38 <Deewiant> if _W_INT is & 0xff00 then they're the same
10:19:44 <Deewiant> but like said it doesn't really matter
10:20:07 <AnMaster> that depends on __BSD_VISIBLE
10:20:17 <AnMaster> /usr/include/sys/wait.h-#if __BSD_VISIBLE
10:20:17 <AnMaster> /usr/include/sys/wait.h:#define _W_INT(w) (*(int *)&(w)) /* Convert union wait to int. */
10:20:18 <AnMaster> /usr/include/sys/wait.h-#else
10:20:21 <AnMaster> /usr/include/sys/wait.h:#define _W_INT(i) (i)
10:20:22 <AnMaster> /usr/include/sys/wait.h-#endif
10:20:27 <Deewiant> AnMaster: so, what if the befunge program wants to know about this metadata
10:20:31 <AnMaster> some irrelevant stuff cut out
10:20:42 <Deewiant> e.g. whether it exited normally or not (WIFEXITED)
10:21:03 <AnMaster> Deewiant, well, the standard doesn't say that
10:21:10 <AnMaster> nor can it parse it reasonably
10:21:24 <Deewiant> the standard says "system() call behaviour"
10:21:30 <AnMaster> at least on linux the definition is quite spread out over lots of file
10:21:32 <Deewiant> which doesn't suggest any post-processing of the return value
10:21:40 <AnMaster> "If the value is non-zero, it may be the return-code of the program that was executed; at any rate it means that the attempt to execute the program, or the program itself, did not succeed."
10:21:48 <AnMaster> which *DOES* suggest post-processing
10:21:56 <Deewiant> how?
10:22:03 <Deewiant> that just means that it can return whatever it wants
10:22:06 <AnMaster> "it may be the return-code"
10:22:06 <Deewiant> as long as zero means success
10:22:40 <AnMaster> Deewiant, well 0 might not mean success on the "raw" value I think, though not sure.
10:22:49 <AnMaster> not sure if posix says it has to mean that
10:22:56 <Deewiant> C99 says it has to mean that
10:23:48 <Deewiant> or no, darn
10:26:14 <AnMaster> C99 doesn't seem to say anything about return value in case of non-null string
10:26:20 <Deewiant> yep
10:28:22 <AnMaster> hm
10:29:04 <AnMaster> man 3p wait seems to say that it indeed shall be 0 "if and only if the status returned is from a terminated child process that terminated by one of the following means:
10:29:08 <AnMaster> 1. The process returned 0 from main().
10:29:10 <AnMaster> 2. The process called _exit() or exit() with a status argument of 0.
10:29:13 <AnMaster> 3. The process was terminated because the last thread in the process terminated.
10:29:14 <AnMaster> "
10:29:27 <AnMaster> so seems like that yeah
10:29:37 <Deewiant> alright, great
10:29:47 <Deewiant> so IMO I'm good in terms of the standard
10:29:49 <AnMaster> Deewiant, in any case I'd argue that extracting return code is a valid way to interpret the standard
10:29:50 <GregorR> system() returns what wait reports as the return value of the process, which will be the return code, error state, or some combination thereof.
10:29:52 <AnMaster> as well
10:30:00 <Deewiant> up to you
10:30:33 <AnMaster> GregorR, yeah, except return code on linux at least is not stored in the least significant byte
10:30:33 <GregorR> The raw return code from system() could encode (for example) both a return code of '1' and the fact that that return was caused by a signal.
10:30:41 <AnMaster> indeed
10:31:00 <GregorR> AnMaster: In `man wait` there's a macro for extracting it regardless of OS.
10:31:03 <GregorR> (If you're using C)
10:31:09 -!- GreaseMonkey has quit ("Unisex.").
10:31:12 <Deewiant> AnMaster: both !Befunge and FBBI push the result of system() directly.
10:31:16 <AnMaster> GregorR, read the convo, I do use it
10:31:31 <AnMaster> Deewiant, well I push it directly if it didn't exit normally
10:31:36 <AnMaster> thus trying to be helpful
10:31:38 <GregorR> Pffft, I don't read conversations!
10:31:42 <AnMaster> if (WIFEXITED(retval)) {
10:31:42 <AnMaster> StackPush(ip->stack, (FUNGEDATATYPE)WEXITSTATUS(retval));
10:31:42 <AnMaster> } else {
10:31:42 <AnMaster> StackPush(ip->stack, (FUNGEDATATYPE)retval);
10:31:42 <AnMaster> }
10:32:04 <Deewiant> heh, FBBI has a nice buffer overflow vulnerability too
10:32:05 <Deewiant> char s[256];
10:32:05 <Deewiant> ip_pop_string(i, s);
10:32:05 <Deewiant> ip_push(i, system(s));
10:32:13 <AnMaster> ouch
10:32:49 <Deewiant> !Befunge on the other hand pushes -2 if it runs out of buffer space :-)
10:32:52 <EgoBot> Huh?
10:32:57 <Deewiant> EgoBot: shaddup.
10:33:01 <AnMaster> I malloc my string, or if gc is in use, I'm even smarter, doing a special boehm-gc specific string that can be dynamically grown and appended to in a fast way
10:34:07 <AnMaster> Deewiant, I push -2 on empty string popped, as even if it doesn't cause any harm with system(), the man page doesn't clearly state so as far as I can see
10:34:10 <AnMaster> err
10:34:13 <AnMaster> system("")
10:34:37 <AnMaster> as I want to prevent segfaults and similar
10:34:48 <Deewiant> system(NULL) is perfectly valid.
10:34:55 <AnMaster> yes
10:34:57 <AnMaster> but NULL != ""
10:35:23 <AnMaster> and popping on empty stack results in a string like: "\0"
10:35:24 <AnMaster> after all
10:35:29 <AnMaster> a single \0 that is
10:35:50 <AnMaster> empty string in other words
10:36:03 <AnMaster> Deewiant, at least that is how I think it shall be interpreted (the standard that is)
10:36:15 <Deewiant> system("") returns 0 here
10:36:32 <AnMaster> yes, but is that guaranteed?
10:36:49 <AnMaster> If string is a NULL pointer, system() will return non-zero if the command
10:36:50 <AnMaster> interpreter sh(1) is available, and zero if it is not.
10:37:03 <Deewiant> no, it's not guaranteed
10:37:05 <AnMaster> that is a null pointer, not a null string
10:37:09 <AnMaster> as in ""
10:37:18 <AnMaster> Deewiant, so what may happen on empty string then?
10:37:23 <fizzie> I would think it is guaranteed under POSIX systems, since there's quite a lot said about how "sh" must behave.
10:37:29 <Deewiant> system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed.
10:37:35 <AnMaster> hm
10:37:43 <Deewiant> and I would argue that pressing enter in your shell is not an error. ;-)
10:37:53 <AnMaster> err
10:37:56 <AnMaster> this is confusing:
10:37:58 <AnMaster> If command is a null pointer, system() shall return non-zero to indicate that a command processor is available, or zero if none is available. The sys-
10:37:58 <AnMaster> tem() function shall always return non-zero when command is NULL.
10:38:24 <AnMaster> that seems to contradict itself
10:38:31 <AnMaster> from man 3p system on linux
10:38:35 <Deewiant> where'd you get that?
10:38:42 <AnMaster> man 3p system
10:38:44 <AnMaster> as I said :)
10:38:47 <Deewiant> man 3 system
10:38:48 <Deewiant> f the value of command is NULL, system() returns non-zero if the shell is available, and zero if not.
10:38:51 <AnMaster> yes
10:38:52 <Deewiant> that's all it says here
10:38:54 <AnMaster> 3p is POSIX
10:38:56 <AnMaster> 3 is Linux
10:39:00 <Deewiant> 3p doesn't exist here
10:39:07 <AnMaster> that is 3p is basically cut and paste from POSIX
10:39:09 <fizzie> Well, in a POSIX system there always is a shell. :p
10:39:20 <Deewiant> :-)
10:39:24 <AnMaster> $ qfile /usr/share/man/man3p/system.3p.bz2
10:39:24 <AnMaster> sys-apps/man-pages (/usr/share/man/man3p/system.3p.bz2)
10:39:25 <Deewiant> there you have it
10:39:51 <Deewiant> POSIX specifies that /bin/sh must exist, hence system() can't claim that none do
10:40:47 <AnMaster> well. it can... sometimes... as chroot() is not POSIX, thus a chroot could lack /bin/sh
10:40:56 <AnMaster> according to man 3 system
10:41:28 <Deewiant> chroot is not POSIX, so you're not running a POSIX system in that case.
10:41:59 <AnMaster> you may be, a POSIX with extensions, but while inside the chroot, indeed may not be POSIX
10:42:24 <AnMaster> In versions of glibc before 2.1.3, the check for the availability of /bin/sh was not actually performed if command was NULL; instead it was always assumed
10:42:24 <AnMaster> to be available, and system() always returned 1 in this case. Since glibc 2.1.3, this check is performed because, even though POSIX.1-2001 requires a
10:42:24 <AnMaster> conforming implementation to provide a shell, that shell may not be available or executable if the calling program has previously called chroot(2) (which is not specified by POSIX.1-2001).
10:43:05 <fizzie> And it's written in that confusing-looking way because the first phrase is directly from the ISO C standard, and that other line about always returning non-zero is "extension to the ISO C standard" addendum-thing.
10:43:24 <AnMaster> fizzie, haha
10:43:38 <fizzie> Line 45597 of 1003.1-2001, "System Interfaces", Issue 6.
12:10:51 -!- ais523 has joined.
12:17:45 <AnMaster> Emergency! Failed to allocate enough memory for new stack items: No such file or directory
12:17:46 <AnMaster> interesting
12:18:12 <AnMaster> UNDEF: S pushed 65887
12:18:12 <AnMaster> Emergency! Failed to allocate enough memory for new stack items: No such file or directory
12:18:12 <AnMaster> UNDEF: T after M pushed 455
12:18:14 <AnMaster> Aborted
12:18:16 <AnMaster> Deewiant, ^
12:18:21 <ais523> AnMaster: malloc doesn't always set errno
12:18:25 <AnMaster> ah
12:18:27 <ais523> so you may have an old errno value lying around somewhere
12:18:33 <ais523> try setting errno to 0 first
12:18:49 <AnMaster> and... wtf is eating all memory
12:18:51 <ais523> and then you'll get 'Success' as the error message if it wasn't set for some reason
12:19:00 <ais523> AnMaster: which OS are you on?
12:19:02 <AnMaster> of course... firefox
12:19:04 <AnMaster> ais523, linux
12:19:25 <ais523> AnMaster: that's strange, because normally Linux won't return 0 from malloc on small allocations no matter how hard you try
12:19:25 <AnMaster> firefox eats *MORE* memory than vmware
12:19:27 <AnMaster> amazing eh
12:19:30 <AnMaster> <ais523> AnMaster: that's strange, because normally Linux won't return 0 from malloc on small allocations no matter how hard you try
12:19:31 <ais523> it uses the OOM-killer instead
12:19:37 <AnMaster> I disabled the overcommit crap
12:19:41 <ais523> AnMaster: good
12:19:50 <AnMaster> as it cause more trouble than it solves
12:19:57 <ais523> oh, and I've had memory problems with Firefox too just now
12:20:02 <AnMaster> like init getting killed, which is PLAIN STUPID
12:20:06 <ais523> I was wondering why all my applications had become slow
12:20:07 <AnMaster> or syslog
12:20:23 <ais523> checked top, and 5 of them were in disk-access blocks
12:20:25 <AnMaster> ais523, only page open was funge specs
12:20:40 * ais523 switches to Epiphany
12:20:44 <ais523> I only had 4 tabs open...
12:20:55 * AnMaster switches to konq
12:21:11 <ais523> I use Konqueror as well
12:21:23 <ais523> in fact, I've had all 3 web browsers open at once before
12:21:28 <AnMaster> hm firefox was using 500 MB, vmware 300 MB, X 150 MB(!)
12:21:43 <AnMaster> + about 100 more swapped out
12:21:44 <AnMaster> wtf
12:21:47 <ais523> yes, X goes crazy sometimes and eats all my CPU cycles for a few minutes
12:21:56 <AnMaster> not cpu
12:21:58 <AnMaster> memory
12:22:06 <ais523> so we're having different problems with it...
12:22:20 <ais523> they'll have to fix Firefox 3's memory usage before its final release, though, I think
12:22:20 <AnMaster> ais523, but X was started almost 2 weeks ago
12:22:24 <AnMaster> it does leak memory
12:22:26 <ais523> ah
12:22:31 <AnMaster> ais523, I use firefox 2
12:22:32 <AnMaster> not 3
12:22:32 <ais523> I restart X several times a day
12:22:36 <ais523> because that's how I use my laptop
12:22:42 <ais523> it isn't on most of the time
12:22:49 <AnMaster> ais523, well this is a desktop
12:23:02 <ais523> so it makes sense for it to stay on for longer
12:23:08 <AnMaster> indeed
12:23:49 <ais523> wow, I'd forgotten just how slow Firefox was
12:24:11 <AnMaster> ais523, only reason I use firefox is adblock extension really
12:24:21 <AnMaster> and that it has became like IE was
12:24:28 -!- helios24 has joined.
12:24:29 <AnMaster> "page best viewed in firefox" bleh
12:24:36 <AnMaster> just waiting for that to happen
12:24:44 <ais523> "page best viewed in standards-compliant browsers", it should say
12:24:48 <ais523> but that's all of them but IE
12:24:54 <AnMaster> aye
12:24:57 <AnMaster> well
12:25:09 <AnMaster> lynx/w3m and such are not standards-compliant for everything I think
12:25:09 <ais523> most of them but IE
12:25:30 <ais523> I've never seen "page best viewed in w3m" anywhere
12:25:40 <AnMaster> indeed
12:25:53 <AnMaster> but point is, it can't fully support css
12:25:56 <AnMaster> like font family
12:26:22 <Deewiant> it supports HTML
12:26:31 <Deewiant> which should be enough
12:26:32 <ais523> there is more than one standard to comply with
12:26:39 <ais523> I think w3m supports HTML but not CSS
12:26:42 <AnMaster> what about links or lynx?
12:26:48 <ais523> and as long as it doesn't claim to support CSS, it's standards-compliant
12:26:53 <AnMaster> links can do some css at least
12:26:57 <AnMaster> not all but some
12:27:04 <AnMaster> iirc
12:28:16 * ais523 notes that w3m is in the list of pager applications on their system, along with more and less
12:29:00 <ais523> incidentally, is Slashdot down for everyone, or just me?
12:29:07 <AnMaster> python apps seem to eat a lot of ram too
12:29:27 <AnMaster> supybot for example eats around 25 MB, in a stripped down install
12:29:34 <AnMaster> with just a few modules loaded
12:30:01 <ais523> maybe it depends on the version of Python and/or the app
12:30:03 <AnMaster> emerge around 50 MB, when waiting for y/n on emerge -avDuN world
12:30:08 <AnMaster> ais523, python 2.4
12:30:12 <AnMaster> .something
12:30:19 <ais523> I've run Python on an embedded microprocessor before, with 16 MB disk space, 64 MB RAM
12:30:27 <AnMaster> # python -V
12:30:27 <AnMaster> Python 2.4.4
12:30:31 <ais523> I'm wondering if it was a special stripped-down Python version
12:32:07 <Deewiant> evidently lynx's HTML support is better than w3m's
12:32:23 <Deewiant> or firefox's, or IE's, or opera's
12:32:35 <Deewiant> ais523: slashdot does seem to be down
12:32:49 <ais523> yes, I read somewhere that links was the only truly HTML-compliant browser
12:32:50 <AnMaster> Deewiant, lynx fails at tables
12:33:09 -!- Judofyr has joined.
12:33:27 <AnMaster> Deewiant, compare w3m and lynx on say http://rafb.net/p/4UzLvH39.html
12:33:31 <AnMaster> it uses a table
12:33:36 <AnMaster> to show the numbers on the side
12:33:40 <Deewiant> I don't know what the HTML spec says about tables
12:33:49 <Deewiant> does it specify that they should be displayed a certain way?
12:34:19 <AnMaster> not sure
12:34:23 <AnMaster> but in a tableish way
12:34:27 <Deewiant> :-P
12:34:30 <AnMaster> because
12:34:31 <AnMaster> 1
12:34:32 <AnMaster> 2
12:34:32 <AnMaster> 3
12:34:35 <AnMaster> second col 1
12:34:36 <AnMaster> second col 2
12:34:37 <AnMaster> second col 3
12:34:40 <AnMaster> is not tabelish
12:34:42 <AnMaster> you want:
12:34:46 <AnMaster> 1 second col 1
12:34:47 <AnMaster> and so on
12:35:19 <AnMaster> Deewiant, doing it like lynx does it is ilogical
12:35:27 <AnMaster> <ais523> yes, I read somewhere that links was the only truly HTML-compliant browser
12:35:28 <AnMaster> it isn't
12:35:29 <Deewiant> reading HTML 4.01, it doesn't seem to say anything about how it should be rendered
12:35:36 <AnMaster> it fails sometimes at shorttags
12:35:46 <AnMaster> though it renders it best of the existing browsers
12:35:54 <ais523> really? I thought it was one of the only browsers that parsed shorttags at all
12:35:55 <AnMaster> some page, someone in here made
12:35:58 <Deewiant> elinks fails shorttags
12:36:01 <AnMaster> ais523, at all yes
12:36:02 <Deewiant> lynx succeeds though
12:36:07 <AnMaster> but it didn't do that page perfectly
12:36:14 <AnMaster> as it did mess up on some shorttags iirc
12:36:19 <AnMaster> forgot the link to it
12:36:21 <Deewiant> http://dev.w3.org/validator/htdocs/dev/tests/shorttags2.html
12:36:32 <AnMaster> nah, it was a page someone in this channel made
12:36:34 <Deewiant> of all I tried that page works only in lynx
12:36:46 <Deewiant> I know it's not that page, but it doesn't matter as it's the same issue :-P
12:36:52 <AnMaster> that validator did accept
12:36:54 <ais523> maybe the page was wrong?
12:37:10 <ais523> although it validated, it might have meant something other than what it was meant to mean
12:37:16 <AnMaster> hm
12:37:22 <AnMaster> someone in here on p iirc
12:37:39 <Deewiant> links fails that page
12:37:54 <Deewiant> and it's rather simple, it can't really be 'wrong' :-)
12:42:29 <fizzie> You mean the http://pikhq.nonlogic.org/test.html page?
12:42:38 <ais523> fizzie: yes, that was it
12:44:29 <Deewiant> oh well, even the validator isn't perfect: http://www.damowmow.com/playground/html-not-xml-2.html
12:45:04 <ais523> Deewiant: oh, the -- in comments thing?
12:45:07 <ais523> Acid2 used to test it
12:45:18 <Deewiant> and the <?xml declaration
12:45:26 <Deewiant> which isn't actually an XML declaration
12:45:32 <ais523> but they took it out when the Firefox people insisted that they wouldn't implement it even though they could because it caused a lot of complaints
12:45:39 <Deewiant> yep
12:53:12 <AnMaster> well, that is plain stupid
12:53:19 <AnMaster> I sometimes wanted to have -- inside html comments
12:53:38 <ais523> AnMaster: Firefox allows -- inside comments, it just doesn't turn off the end-of-comment marker in them
12:53:53 <AnMaster> so -- should end the comment?
12:54:03 <ais523> AnMaster: no, -- causes --> to have no effect until the next --
12:54:09 <AnMaster> aha
12:54:59 <AnMaster> ais523, and lynx fails on http://pikhq.nonlogic.org/test.html here
12:55:01 <AnMaster> partly
12:55:23 <AnMaster> " This stuff doesn't show at all, but only because HTML renderers suck." is all a link
12:55:39 <AnMaster> I don't think it should be?
12:56:18 <Deewiant> no, it shouldn't
12:56:38 <AnMaster> ais523, thus lynx fail at shorttags
12:57:39 <Deewiant> and it doesn't show the link
12:58:20 <AnMaster> indeed
12:58:29 <Deewiant> it still does better at shorttags than any other browser
12:58:39 <Deewiant> I think it can't handle the <tag/contents/ form but who knows
12:59:02 <AnMaster> ais523, how is the intercal + funge stuff coming along?
12:59:12 <AnMaster> <Deewiant> it still does better at shorttags than any other browser
12:59:14 <AnMaster> indeed
12:59:16 <ais523> AnMaster: not at all, because I'm busy in RL
12:59:27 <AnMaster> Deewiant, iirc safari did render the page correctly, according to someone
12:59:34 <AnMaster> konq 3 doesn't
12:59:38 <AnMaster> and I don't have KDE 4 yet
13:01:54 <Deewiant> waiting on http://browsershots.org/http://pikhq.nonlogic.org/test.html
13:04:07 <ais523> Deewiant: that's evil
13:04:23 <Deewiant> what now? :-)
13:04:27 <AnMaster> huh?
13:05:19 <AnMaster> Deewiant, shows two, unrelated screenshots
13:05:37 <AnMaster> as in not safari
13:05:47 <Deewiant> which is why I said "waiting on"
13:06:07 <Deewiant> it'll probably be an hour before all the results are in
13:06:19 <ais523> if you aren't a premium browsershot's user, there's a time delay before they all load because the request is put to the back of the queue
13:06:58 <ais523> oh, and pikhq's site's a blank page in Epiphany
13:07:15 <ais523> not surprising because the version on my computer is gecko-based
13:07:19 <AnMaster> # Expires in 24 minutes
13:07:19 <AnMaster> # Queue estimate: 20 minutes to 1 hour, 2 minutes (Details)
13:07:22 <AnMaster> that is another issue
13:07:33 <ais523> AnMaster: you can bump the expiry by clicking on a button
13:07:43 <AnMaster> can't see one?
13:07:56 <ais523> I think maybe you have to be the person who initiated the request
13:08:02 <AnMaster> Deewiant, click the button if you can see it!
13:08:14 <ais523> it only bumps it to 30 mins after you click the button, though
13:08:27 <AnMaster> so you have to keep clicking it?
13:08:31 <ais523> yep
13:08:40 <ais523> they should put an ad on the button and get lots of money that way
13:09:00 <AnMaster> hahah
13:10:07 <AnMaster> why does it take so long?
13:10:07 -!- jix has joined.
13:10:16 <ais523> AnMaster: supply compared to demand, I suspect
13:10:16 <AnMaster> after all, a browser can load a page quite fast
13:10:34 <ais523> most of the old and rare browsers are probably on a single computer on a crappy Internet connectoin
13:11:02 <AnMaster> well that doesn't explain slowness of other ones
13:12:37 <Deewiant> doing a request for only Macs isn't going to help since I'm ahead of you in the queue anyway :-P
13:12:48 <AnMaster> true
13:13:49 <Deewiant> AnMaster: you can look at the stats of the computers doing it at http://browsershots.org/factories/
13:14:08 <AnMaster> it says at one page they do at most one image / minute
13:14:49 <ais523> ah, so as not to overload people's factory computers
13:17:18 <AnMaster> Deewiant, update queue I think.. it seems to have "stepped" back in time
13:17:20 <AnMaster> "Queue estimate: 12 minutes to 37 minutes (Details)"
13:17:26 <AnMaster> was 2-40 before
13:17:33 <AnMaster> yet no additional screenshot shows up
13:17:34 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
13:18:08 -!- Slereah_ has joined.
13:23:59 <AnMaster> Deewiant, time to refresh request soon?
13:24:15 <Deewiant> what's your hurry :-)
13:27:47 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
13:27:48 <AnMaster> Safari 3.116 min
13:27:49 <AnMaster> wtf
13:27:55 <AnMaster> it says 5 minutes a while ago
13:27:59 <AnMaster> that's just wtf
13:28:06 -!- Slereah_ has joined.
13:28:09 <ais523> AnMaster: premium customers jumping the queue?
13:28:19 <AnMaster> now it says "starting" though
13:31:22 <AnMaster> a lot of browsers, but no safari
13:33:05 <ais523> and all the screenshots are blank
13:33:17 <Deewiant> safari 3.1 is there and it's blank
13:33:27 <AnMaster> Safari 3.1failed
13:33:28 <AnMaster> gah
13:33:35 <Deewiant> heh
13:33:49 <ais523> AnMaster: not surprising, Safari and Konqueror have the same rendering engine and Konqueror has already failed on it
13:34:06 <AnMaster> Deewiant, well I think it was someone using some development version of safari
13:34:14 <Deewiant> >_<
13:34:18 <AnMaster> as in alpha or something
13:34:32 <AnMaster> public beta possibly
13:35:26 <AnMaster> btw
13:35:30 <AnMaster> of those browsers
13:35:38 <AnMaster> how many separate rendering engines are there?
13:35:56 <AnMaster> a lot are based on either KHTML or gecko I think?
13:36:04 <Deewiant> they're subtly different versions
13:36:18 <Deewiant> e.g. gecko of two weeks ago versus gecko of three weeks ago :-P
13:36:24 <Deewiant> but yes, many are the same
13:36:53 <AnMaster> someone should run this on the acid3 test
13:37:02 <AnMaster> because konq 3 segfaults on acid 3 XD
13:37:07 <Deewiant> it has been run
13:37:11 <AnMaster> oh?
13:37:22 <ais523> Deewiant: what were the results?
13:37:24 <Deewiant> http://browsershots.org/http://acid3.acidtests.org/
13:37:35 <Deewiant> what you'd expect
13:37:47 <Deewiant> firefox 2 gets 30-something
13:37:58 <Deewiant> up to 50-something
13:38:11 <Deewiant> firefox 3 gets 70-something
13:38:16 <ais523> Epiphany got 71, not bad
13:38:19 <Deewiant> IE gets crap
13:38:22 <ais523> presumably the same score as FF3
13:38:25 <Deewiant> opera gets 60-something
13:38:32 <ais523> oh, and IE5.5 beats both IE6 and IE7, amusingly
13:38:32 <Deewiant> later versions get 70-something
13:38:45 <ais523> because all of them score statistical fluctuations AFAICT
13:38:54 <Deewiant> yep
13:39:06 <AnMaster> oh 3.5.9 doesn't crash
13:39:37 <ais523> actually, browsershots disagrees with that
13:39:47 <ais523> it gives a score of 6 to IE5.5, as far as I can read it
13:39:57 <ais523> and the page even has radio buttons on, which I don't understand at all
13:40:46 <Deewiant> IE 5.5 gets 6, whereas 6.0 gets 5 and 7.0 looks like a 5 too
13:41:02 <Deewiant> 8.0 does better, of course
13:41:21 <ais523> IE6 looks like 12 on the browsershots results
13:41:49 <Deewiant> heh, two different runs
13:41:54 <Deewiant> http://browsershots.org/screenshots/8e72d11b14736bef1c26be08d8e07c3d/ and http://browsershots.org/screenshots/acf712c93182beeddc4c3caaf2e5975a/
13:42:04 <ais523> so it isn't even consistent!
13:42:11 <Deewiant> depends on the resolution, maybe? :-)
13:58:30 -!- ais523 has quit (Remote closed the connection).
14:05:10 -!- helios24 has quit (Remote closed the connection).
14:05:58 <Deewiant> now they're all there, 0% success rate: http://browsershots.org/http://pikhq.nonlogic.org/test.html
14:06:16 -!- ais523 has joined.
14:07:05 -!- pikhq has joined.
14:11:00 -!- GnOmus has joined.
14:24:31 -!- Corun_ has joined.
14:30:35 -!- Corun_ has changed nick to Corun.
14:42:25 -!- ehird has joined.
14:46:13 -!- ehird has quit (Read error: 113 (No route to host)).
15:20:50 -!- ehird has joined.
15:21:11 -!- ehird has set topic: * Topic for #esoteric set by ehird at Tue Apr 22 15:41:58 2008.
15:21:24 -!- ehird has set topic: * Topic for #esoteric set by ehird at Tue Apr 22 15:41:58 2008 tunes.org/~nef/logs/esoteric.
15:37:15 -!- RedDak has joined.
15:48:58 -!- ais523 has quit (Remote closed the connection).
15:49:48 -!- ais523 has joined.
16:02:26 -!- ais523 has quit (Remote closed the connection).
16:13:43 -!- ais523 has joined.
16:25:41 -!- Corun has quit (Remote closed the connection).
16:25:46 -!- sebbu has joined.
16:27:48 -!- Corun has joined.
16:40:10 -!- ais523 has changed nick to ais523nomic.
16:40:20 -!- ais523nomic has changed nick to ais523.
16:45:48 <ais523> [16:46] <AnMaster> the downside of bash, is lack of a good debugger
16:47:14 -!- Corun has quit (Read error: 104 (Connection reset by peer)).
16:49:10 -!- ais523 has quit (Remote closed the connection).
16:49:11 -!- Corun has joined.
16:49:26 -!- ais523 has joined.
16:52:41 -!- GnOmus has quit (Remote closed the connection).
17:07:57 -!- RodgerTheGreat has joined.
17:07:57 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
17:08:03 -!- Slereah_ has joined.
17:15:21 -!- jix has quit ("CommandQ").
17:37:00 -!- olsner has joined.
17:40:44 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
17:41:11 -!- Judofyr has joined.
17:45:58 -!- timotiis has joined.
17:56:10 -!- ais523 has quit (Remote closed the connection).
17:56:27 -!- ais523 has joined.
17:57:26 -!- ais523_ has joined.
17:57:48 -!- ais523 has quit (Nick collision from services.).
17:57:54 -!- ais523_ has changed nick to ais523.
18:02:44 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
18:04:06 -!- ais523 has joined.
18:07:53 -!- ais523 has quit (Remote closed the connection).
18:08:09 -!- ais523 has joined.
18:29:24 -!- Sgeo has joined.
18:41:47 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
18:41:55 -!- ais523 has joined.
19:01:18 <ehird> ais523: wow
19:01:19 <ehird> lots of joinparts
19:01:25 <ais523> yep
19:05:06 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
19:05:23 -!- ais523 has joined.
19:13:33 -!- ais523 has quit (Remote closed the connection).
19:15:15 -!- ais523 has joined.
19:23:46 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
19:24:21 -!- ais523 has joined.
19:24:34 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:25:04 -!- Judofyr has joined.
19:42:07 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
19:42:32 -!- ais523 has joined.
19:46:07 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
19:47:49 -!- ais523 has joined.
19:49:40 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
19:49:49 -!- ais523 has joined.
19:50:43 -!- oklopol has joined.
20:05:47 -!- sauxdado has changed nick to aligatoro.
20:07:13 -!- aligatoro has changed nick to sauxdado.
20:09:54 -!- Corun has changed nick to MrsCorun.
20:10:55 -!- Iskr has quit (Read error: 110 (Connection timed out)).
20:11:17 -!- MrsCorun has changed nick to Corun.
20:11:58 -!- Iskr has joined.
20:15:52 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
20:16:31 -!- Judofyr has joined.
20:19:42 -!- ais523_ has joined.
20:21:29 -!- ais523 has quit (Nick collision from services.).
20:21:32 -!- ais523_ has changed nick to ais532.
20:21:36 -!- ais532 has changed nick to ais523.
20:32:23 -!- Judofyr_ has joined.
20:32:23 -!- Judofyr has quit (Connection reset by peer).
20:38:21 -!- ehird has quit ("Leaving").
20:48:44 -!- Tritonio has joined.
20:52:34 -!- Tritonio has quit (Client Quit).
20:52:53 -!- Tritonio has joined.
20:55:25 -!- Tritonio has quit (Client Quit).
20:58:31 -!- Tritonio has joined.
21:02:38 -!- timotiis has quit (Remote closed the connection).
21:06:19 -!- Judofyr_ has changed nick to Judofyr.
21:09:04 -!- timotiis has joined.
21:41:44 -!- ehird has joined.
22:13:31 -!- Judofyr has quit.
22:19:49 -!- Judofyr has joined.
22:21:55 -!- Iskr has quit ("Leaving").
22:32:42 -!- Phenax has joined.
22:33:48 <Phenax> I'm a newb to Brainfuck, but I was wondering what's the easiest (i.e., space saving) way to set a memory pointer to a prime number?
22:34:01 <ais523> [-]++ sets it to 2
22:34:14 <ais523> so for low numbers, you just do it like that
22:34:27 <ais523> for higher numbers generally you form a product and add or subtract a bit from it
22:34:33 <Phenax> ah
22:34:35 <ais523> see [[e:Brainfuck constants]]
22:34:44 <ais523> um, http://esolangs.org/wiki/Brainfuck_constants
22:35:41 <ais523> that's a list of some of the shortest ways to generate various constants known
22:35:55 <ais523> (occasionally, someone will add a new shorter one, so it probably isn't perfect, but it's pretty good)
22:42:25 -!- RedDak has quit (Remote closed the connection).
22:48:22 <AnMaster> hm
22:54:28 <GregorR> http://www.codu.org/pics/displayimage.php?album=4&pos=3 // THANKS DOCTOR SCIENCE
23:02:12 <AnMaster> how would one do floating point numbers in Brainfuck?
23:02:26 <ais523> AnMaster: not easily, I don't think
23:02:33 <AnMaster> well possible
23:02:34 <ais523> you'd store the mantissa and exponent separately
23:02:37 <AnMaster> it is turing complete
23:02:47 <ais523> and it would just be a mess trying to do additions and subtractions
23:02:52 <AnMaster> ais523, sqrt on that is what I'm most interested in
23:03:08 <ais523> AnMaster: halve the exponent, sqrt the mantissa
23:03:21 <AnMaster> sqrt the mantissa
23:03:23 <ais523> multiply the mantissa by the square root of the base if the exponent comes out non-integral
23:03:25 <AnMaster> doesn't really help
23:03:42 <ais523> AnMaster: well, it moves it from a floating-point problem to a fixed-point problem
23:03:56 <AnMaster> in fact, how do you calculate square root?
23:04:00 <AnMaster> I got no clue
23:04:05 <AnMaster> wait
23:04:08 <AnMaster> it would be...
23:04:10 <ais523> AnMaster: computers normally do it iteratively
23:04:14 <AnMaster> x ^ (1/2)
23:04:19 <AnMaster> but that doesn't help
23:04:22 <ais523> like this:
23:04:23 <sauxdado> no :)
23:04:37 <ais523> a=1, b=x, then repeatedly (a=(a+b)/2, b=x/a)
23:04:41 <AnMaster> sauxdado, no as in "it doesn't help"?
23:04:49 <ais523> continue until a and b are sufficiently similar, then that's your answer
23:04:50 <AnMaster> ais523, hm
23:04:54 <ais523> that tends to be pretty quick
23:05:08 <ais523> there are other methods, of course
23:05:15 <AnMaster> ais523, isn't there an opcode for it in case of floating point even?
23:05:17 <AnMaster> not sure
23:05:21 <AnMaster> but I think there may be
23:05:27 <AnMaster> either SSE or x87
23:05:31 <ais523> no idea
23:05:37 <ais523> I don't know those assemblers
23:05:42 <ais523> but you can't use such opcodes in BF anyway
23:05:55 <AnMaster> indeed
23:06:45 <AnMaster> "Computer software programs typically implement good routines to compute the exponential function and the natural logarithm or logarithm, and then compute the square root of x using the identity
23:06:45 <AnMaster> \sqrt{x} = e^{\frac{1}{2}\ln x} or \sqrt{x} = 10^{\frac{1}{2}\log x} "
23:06:49 <AnMaster> from wikipedia
23:08:38 <ais523> really?
23:08:47 <ais523> I suppose that such algorithms are cheap nowadays
23:08:55 <ais523> probably the logs are done by lookup-table
23:10:36 <AnMaster> FSQRT for x87
23:10:37 <AnMaster> yes
23:14:59 <ehird> \\z..,xbvncbvnbm.n,.cfhl:Ll.jfdfashsdhfglgdfhjgkh';aetyeurirry0]pit\asdgzdfgfhgjhkjfg
23:15:32 <AnMaster> ehird, ?
23:16:42 <olsner> sometimes you just wanna press every key on your keyboard at once, but have to settle for pressing them sequentially in some random order, like poor ehird here
23:17:42 <ais523> olsner: pressing every key on your keyboard at once is dangerous, because you'll hit C-M-delete and C-M-backspace, among other combinations
23:18:00 -!- ehird has quit (Remote closed the connection).
23:18:37 <olsner> actually, that all depends on how your keyboard is wired, certain combinations of keys are mutually exclusive, so other keys may end up preempting the dangerous key combinations
23:18:38 -!- ehird has joined.
23:18:58 <ais523> olsner: I find that pressing too many keys at once just causes the computer to beep
23:19:07 <ehird> ais523: you just made me press ctrl-alt-backspace
23:19:11 <ais523> at least on Windows
23:19:12 <ehird> because i didn't recognize it as C-M-backspace
23:19:15 <ehird> burn in hell
23:19:41 <olsner> ehird: this is entirely your fault though ;-)
23:19:48 <ais523> on Linux it apparently makes the cursor flash quickly and sets /away...
23:19:57 <ais523> and I had to hold down about 15 keys to do that
23:20:10 <ais523> LOL, in real life, again
23:20:50 <ais523> I mentioned it in Emacs-speak because Emacs' release notes for the latest version mentioned that C-M-backspace and C-M-delete had been removed as shortcut keys because they generally didn't do what the user expected
23:21:13 <olsner> I've had my windows system swapping hard enough that clicking the mouse made that input-event-queue-full beep
23:21:27 <ais523> olsner: yep, Windows gets like that sometimes
23:22:00 <ehird> ais523: heh
23:22:14 <ehird> 'This command has been disabled beacuse it is often confusing for new u-'
23:22:19 <ehird> 'Username:'
23:22:30 <ais523> oh, and qdb ehird above, please
23:22:39 <ehird> ais523: I really gotta get that up.
23:22:42 <ehird> But noted in my mental log.
23:23:16 * ais523 would like to see Emacs pop up with 'This command has been disabled because it is COMPLETELY DANGEROUS NEVER USE IT EVER'
23:23:26 <ais523> does Emacs have a reformat-harddrive instruction?
23:23:37 <ais523> if not, then it's a bit crappy as an OSS
23:23:40 <ais523> s/SS/S/
23:24:23 <ehird> ais523: its
23:24:26 <ehird> a high level OS
23:24:30 <ehird> ;)
23:24:53 <ehird> ais523: also: 'This command has been disabled. Because.'
23:51:28 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
23:54:33 -!- timotiis has quit (Read error: 110 (Connection timed out)).
23:54:53 -!- revcompgeek has joined.
23:58:03 <revcompgeek> I have noticed that many of the languages on the wiki are compiled.
23:58:09 <revcompgeek> what are they compiled to?
23:59:28 <olsner> anything and everything and nothing
23:59:42 <revcompgeek> anything specific?
23:59:54 <olsner> yes, often something specific :P
←2008-03 2008-04 2008-05→ ↑2008 ↑all