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: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:03:22 <lament> well.. compare that to what you would have in some other language
02:03:29 <lament> Transcript.show("hello world")
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:49 <lament> both the message show: and the message cr are sent to Transcript
02:05:06 <lament> ; is shortcut for "send to the same receiver the previous message was sent to"
02:08:32 <wildhalcyon> I was hoping something cool would happen if I typed in 3 + 4; + 2
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:27:27 -!- oklopol has quit (No route to host).
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: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: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.
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:22:13 -!- AnMaster_ has joined.
10:36:55 -!- AnMaster has quit (Connection timed out).
10:37:20 -!- Iskr has joined.
10:56:14 -!- AnMaster_ has changed nick to AnMaster.
10:57:31 <Iskr> today it's on qwantz.com
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
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: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:03:10 <AnMaster> SimonRC, oh seen the google 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:34 <AnMaster> I think it is some silly meme iirc?
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:19:12 <AnMaster> hm and here is one producing a pattern like:
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:56 <AnMaster> $ ~/ccbi/ccbi_linux/ccbi tests/wtf.b98
13:47:00 <AnMaster> Deewiant, seems like it didn't
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:48 <Deewiant> if you put something smart after that it's fine
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: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: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:36 <Deewiant> among all those that are added by k, I suppose the order is undefined
14:25:43 <Deewiant> as long as they're all before the one that came to the k
14:25:53 <AnMaster> Deewiant, yes that they should be
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:44 <AnMaster> aborting if the program gets into infinite loop
14:26:52 <AnMaster> Deewiant, found two bugs so far
14:27:23 <AnMaster> one where I checked for (unsigend int - other unsigned int) > 0
14:27:30 -!- Sgeo has joined.
14:27:52 <AnMaster> ▒┴␋␍@├┤│ ·/␌/␌°┤┼±␊/├┤┼┐ $
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:47 <AnMaster> Deewiant, also the t in k wasn't a segfault, it was just valgrind "invalid read"
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:34 <Deewiant> and programs that segfault only in valgrind
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:58 <AnMaster> it is a known issue that is does not print several space in row currently
14:37:33 <AnMaster> Deewiant, btw some output quite funny stuff
14:37:36 <AnMaster> http://rafb.net/p/ZtwV5r41.html
14:37:45 <AnMaster> looks like a hillside viewed from the side IMO
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: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: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: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:36 <AnMaster> Deewiant, ulimit -t didn't really work for a very simple reason: valgrind summary was not showed then
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:13:27 <AnMaster> Deewiant, random crash or infinite loop
15:13:54 -!- Sgeo has quit ("Ex-Chat").
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:23:35 <AnMaster> Deewiant, this cause the issue for both ccbi and cfunge:
15:24:58 <Deewiant> trying to move 1128481353 elements
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:52 <Deewiant> mine uses the heap in all such cases
15:28:10 <AnMaster> Deewiant, according to the specs you should reflect
15:28:20 <Deewiant> { may act like r if no more memory is available for another stack.
15:28:35 <Deewiant> second, there is mem for the other stack
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: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:35:01 <AnMaster> transfering 1128481353 elements that way doesn't work either
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: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:39:20 <AnMaster> because no funge program will ever be coded to accept reflect on, say, 5
15:39:35 <AnMaster> so normally reflecting on push is just pointless
15:39:41 <AnMaster> and will mess up stuff even more
15:41:10 <AnMaster> Deewiant, the thing that really confused me was valgrind's cryptic message when I overflowed stack space
15:41:29 <AnMaster> I think it is possible some kernel internals reallocated stack to make it grow
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:10 <Deewiant> since it's an OutOfMemoryError there's no guarantee that there's enough memory to allocate an error message
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: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:59 <AnMaster> I check if exit code is greater than 100, and not the one of alarm
15:54:22 -!- ehird has joined.
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: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
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: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:37 <AnMaster> http://www.inspircd.org/forum/showthread.php?p=4972
16:09:47 <AnMaster> ehird, yes and saw the Virgle thing?
16:10:04 <ehird> AnMaster: no i just got online
16:10:14 <AnMaster> ehird, anyway google did several this year
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: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:13:11 <ehird> should've never posted, its more fun when people still don't get it days later
16:13:54 <ehird> try one of the featured videos
16:14:48 <ehird> it may be after 12am here, but on the internets the fools have only just begun :D
16:15:28 <ehird> i can still enjoy the ones
16:16:15 <ehird> AnMaster: on the internets
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:30 <ehird> it was on the BBC's main tv channel
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:20:05 <ehird> AnMaster: uh, because it's the bbc
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:30 <ehird> kind of non-profit
16:20:35 <ehird> a little bit is non-profit
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: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: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: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> 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:27 <ais523> iPlayer has massive DRM, though
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: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: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: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: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: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:19 <ais523> what about writing a hidden dependency
16:30:27 <ehird> ais523: === compares type&value in php
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:30 -!- Judofyr has joined.
16:32:37 <ais523> have one rule write to a named pipe
16:32:41 <ais523> and another rule read from it
16:32:54 <ais523> they'll both block until they're in sync
16:33:05 <ais523> but without -j2 you'll get an infinite loop, because the one rule will block forever
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:14 <ehird> AnMaster: you mean $a=3
16:34:21 <Deewiant> AnMaster: only if you're 110% sure they're both numbers
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 <Deewiant> AnMaster: but if you are, might as well use ===...
16:34:36 <ehird> every variable must start with $
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:56 <ehird> i believe they can nest
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:19 * ehird should shout at mplayer instead of konversation
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: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: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:41 <ais523> ,,,,, isn't very useful Brainfuck anyway in most cases
16:40:56 <ais523> AnMaster: always in pairs?
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:15 <ais523> because it would be unlikely to type Befunge in on the command line...
16:42:20 <ehird> ais523: Wow. apparently BBC Northwest rickroll'd the news.
16:42:47 <AnMaster> ais523, to me it looks quite like that "sucide program" someone made
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:39 <ehird> webcomics are redirecting to each other
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:34 * ais523 checks to see what Wikipedia are doing
16:44:36 <ehird> i just got on the interwebs earlier this hour
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: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: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: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 <ais523> April 1 must be the record day for admin blocks
16:49:30 <ais523> they're normally given an expiry time of 00:01 April 2
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: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: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: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: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: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:14:09 <ehird> that will be confusing :D
18:14:31 <ehird> that will be my first comp.lang.intercal post
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: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: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:48 <ais523> the changelog is at <http://elliotthird.org/mirror/c-intercal/ick-0.28/NEWS.txt>
18:19:59 <ais523> but it's nice to have multiple mirrors
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:40 <ehird> ais523: i meant as a witty message
18:20:43 <ehird> not really that funny though
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: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: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:23:09 <ehird> 'INTERCAL is 10x more rapid than Java and COBOL, and 3x faster than Ruby.'
18:23:21 <ehird> (Ruby is slow as molasses)
18:23:25 <ehird> make your own jokes
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:24:02 <ais523> that extension scheme wasn't my fault
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: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: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:39 <ehird> i can host the html documentation
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: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: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: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:07 <ais523> PDF, info, plain text, two HTML formats
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:53 <ehird> i doubt i'll ever publish more formats
18:35:34 <ehird> ais523: so it'll just be
18:35:36 <ehird> http://elliotthird.org/mirror/c-intercal/doc-0.28/
18:36:07 <ehird> have a canonical url
18:36:08 <ehird> http://elliotthird.org/mirror/c-intercal/doc-0.28/
18:36:16 <ehird> since it's a directory
18:36:51 <ehird> now i'll announce here
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: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: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:42:10 <ehird> its a crap joke though
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:04 <ehird> i am tail -f'ing my log
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:14 <ehird> you have hits ther too
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: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:09 <ais523> the minor version number comes before the .
18:50:22 <ais523> with the major version number afterwards
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:32 <ehird> so the release fater 9.99
18:51:48 <ehird> and you'd have to run the interpreter to find out what it is
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:14 <ehird> or maybe just one that outputs pi
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: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: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: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: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
19:00:20 <ais523> and about your name: I nearly always get it wrong first time for some reason
19:00:30 <ais523> I think my fingers have memorised something else
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: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:53 <ehird> is the most stable web server out there
19:06:12 <ehird> ais523: you can cancel google groups posts iirc
19:06:31 <ais523> nah, I'll just post an unmangled version
19:07:00 <ehird> TWO links to my site
19:07:45 <ehird> ais523: did you link to my html docs?
19:07:55 <ehird> didn't read it properly
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: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: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: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:23 <ehird> think it's an a.l.intercal
19:12:24 <ais523> you have tail -f on the logs, presumably
19:12:40 <ehird> unlikely that i'll get a flood of traffic though
19:13:34 <ehird> it'd be helpful if I installed ick myself..
19:13:42 <ehird> well, i have an EXCELLENT place to download it from..
19:15:50 <ehird> ./config.sh: 910: Syntax error: "(" unexpected (expecting "fi")
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:05 <ehird> all i did was untar
19:17:16 <ais523> and that's all I did too, on the exact same file
19:17:29 <ehird> AnMaster: my server has it
19:17:35 <ehird> http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz
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:34 <ehird> echo "configure: warning: Could not find Info directory file, set infodirfile in the Makefile by hand" 1>&2
19:18:42 <ehird> echo "$ac_t""$INFODIRFILE" 1>&6
19:18:42 <ehird> INFODIRFILE=(irrelevant)
19:18:49 <ais523> yes, there's a ( on line 911
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:25 <AnMaster> configure generated by autoconf version 2.13
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 <AnMaster> ./config.sh --prefix=$HOME/local/ick works yes
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: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: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: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: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:25 <ehird> ais523: '-DICK_HAVE_' is that.. intentional? :p
19:22:44 <ais523> I thought you were asking if I wrote that line in the first place
19:22:49 <AnMaster> ais523, well your make install is broken
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:42 <AnMaster> ais523, well automake does iirc
19:23:44 <ais523> a simple mkdir -p should sort it
19:23:57 <AnMaster> ais523, except -p may not work on really old systems iircv
19:23:58 <ehird> olsner: well, yeah
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:24 <ais523> I use ICK_ and ick_ as name-mangling prefixes for all externally-visible symbols in this version
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:51 <AnMaster> you don't use --prefix at all?
19:24:59 <AnMaster> ehird, I'm installing in my home dir using --prefix
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:30 <ais523> it's just nobody caught it before
19:25:38 <ais523> AnMaster: it does nothing
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:59 <ais523> but autoconf noticed that youre system didn't need that, and commented out the line
19:26:35 <ehird> unlambda.i is weird
19:26:38 <ehird> ' PLEASE NOTE THAT IMMORTALITY IS TREASON'
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:10 <AnMaster> -b :reduce the probability of IE774 to zero
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:47 <ehird> by N probability, the E774 will be trigggered
19:27:55 <ehird> AnMaster: random bug = E774 is triggered
19:28:04 <ehird> so basicall ify ou don't use -b it might randomly fail to compile
19:28:08 <ehird> which is the random bug error
19:28:13 <ais523> ehird: not fail to compile, E774 is runtime
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:51 <ehird> ICL017I DO YOU EXPECT ME TO FIGURE THIS OUT?
19:29:06 <ehird> ais523: -am is not valid
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:31 <ehird> i didn't make install
19:29:41 <ais523> AnMaster: most of it's gcc
19:29:50 <ehird> and the c files are huge
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: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:43 <AnMaster> ICL633I PROGRAM FELL OFF THE EDGE
19:30:50 <ais523> it should just output a bunch of roman numerals
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: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: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:58 <ais523> AnMaster: there shouldn't be an error 633 if there's a RESUME #1 as the last line
19:32:09 <ehird> oklopol: he just implemented it
19:32:10 <ais523> that doesn't make any sense
19:32:23 <ehird> AnMaster: uh you effed up
19:32:27 <ehird> 'cause it works for me
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:56 <AnMaster> I assume that would not be an issue
19:34:06 <ehird> oh, i should pubilsh .sum
19:34:11 <AnMaster> 67459c1a46e016d25de7c30968b676d7 ../ick-0-28.tgz
19:34:20 <ehird> ick-0-28.sum is the filename to use right
19:34:31 <ehird> AnMaster: beats me
19:34:39 <AnMaster> ais523, what line did you say?
19:34:58 <AnMaster> ick_skipto = ick_resume(0x1); goto top;
19:35:00 <ehird> should i publish an md5sum?
19:35:25 <AnMaster> ais523, want md5sum for the c file?
19:35:36 <ais523> no, I've just had another idea
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:33 <ehird> and i think lots of mirrors include it
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: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: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: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: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:10 <ehird> should I do CURRENT-doc?
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: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: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:21 <ais523> AnMaster: a bunch of -D and -I, -o and -O2
19:41:23 <ehird> AnMaster: he links with his cmpiler
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:59 <ais523> because it links against the INTERCAL runtime library
19:42:10 <AnMaster> can't link 32-bit and 64-bit objects
19:42:49 <ehird> AnMaster: compile ick with -m32
19:43:18 <ehird> while compiling ick
19:43:24 <ehird> $CFLAGS is a dumb idea
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:56 <AnMaster> ais523, want me to pastebin the C file?
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: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:07 <ehird> which is to say: AnMaster prefers the silly comfort of non-executable stack in favour of programs that work
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:17 <ais523> given that the lines far down the file were the same, I suspect the compiler produced the same output
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: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:40 <ehird> debugging intercal compilers is so exciting
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:26 <ehird> it's going to my dead links
19:52:44 <AnMaster> I did run from top directory yes
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:43 <ehird> ais523: non-deterministic compiler output
19:54:05 <ais523> ehird: the numbers are actually pointers returned from malloc and written as hex
19:54:20 <ais523> I could explain why if you wanted
19:54:48 <ehird> AnMaster: why say 'ew' it's INTERCAL
19:54:55 <ais523> AnMaster: I couldn't run it over here
19:55:04 <AnMaster> ais523, oh and those pointer names?
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:56:18 <ais523> and most compilers don't have a printf size specifier for it
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: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: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: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:29 <olsner> hmm, so PLEASE NOTE in the "comment" is actually PLEASE NOT followed by an E?
19:59:34 <AnMaster> ais523, ok so got any idea what happened?
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:04 <ais523> falling off the program when the standard library is there gives you E000 PLEASE KNOCK BEFORE ENTERING intstead
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:53 <AnMaster> ICL777I A SOURCE IS A SOURCE, OF COURSE, OF COURSE
20:05:02 <ais523> AnMaster: that means you wrote the wrong filename
20:05:10 <ais523> that's 'Cannot read input file' in INTERCAL-speak
20:05:26 <AnMaster> ais523, is there a wimp mode for errors?
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:06:09 <AnMaster> ais523, assuming it did compile as well as create the C file?
20:06:18 <AnMaster> ../bin/ick -abgmw continuation.i
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: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:37 <ais523> you could delete the executable and .c and try again to check if that's the problem
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:56 <ais523> it should be near the bottom of main()
20:11:08 <ais523> it's a #defined constant
20:11:30 <AnMaster> kate had in "not found" message
20:11:34 <ehird> ais523: he's deleted the lines
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:18 <ehird> unfortunately their software sucks
20:12:29 <AnMaster> ick_lose(IE277, ick_lineno, (char*) NULL);
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:13:15 <ais523> and yet you're still getting error 663 when you run?
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: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:57 <ais523> sorry about the indentation
20:16:13 <ais523> (that's the line to put a breakpoint on)
20:16:17 <AnMaster> <ais523> (search for the string IE663)
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:17:05 <ais523> what does a backtrace say?
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:32 <AnMaster> $1 = (unsigned int *) 0x630320
20:17:57 <ais523> the abstain status of the line before will be useful
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:39 <ais523> AnMaster: I did, but it can't handle the continuations code
20:18:48 <AnMaster> (gdb) print ick_abstained[464]
20:18:52 <ais523> in much the same way that gdb can't handle longjmp
20:19:24 <ais523> I know, that's why I use it
20:19:56 <ais523> OK, so the issue is that the if immediately above where you are ran
20:20:07 <ais523> so there's no way that control could have reached that line
20:20:22 <ais523> what's ick_lineno, by the way?
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: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: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: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:24 <ais523> AnMaster: presumably, but only very slightly
20:23:29 <ehird> ais523: am I about to have to upload 1.28? )
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:25:00 <ais523> cast ick_skipto to (int)
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: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: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:36 <ais523> ehird: it isn't particularly consistent
20:27:37 <AnMaster> I use pure tabs for indention myself
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: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:13 <ais523> AnMaster: what's the value of ick_skipto this time?
20:29:31 <AnMaster> ais523, I restored original file
20:30:58 <ais523> AnMaster: but that seems reasonable based on what the patch does
20:31:03 <ais523> what's (int)ick_skipto?
20:31:45 <ehird> what was the problem?
20:31:49 <AnMaster> ais523, ok what does it *mean*
20:31:54 <ais523> AnMaster: that's to give space for the overbars if they're needed
20:31:59 <ais523> AnMaster: it's just a simple test program
20:32:11 <ais523> the numbers are trace output so you can see it working
20:32:17 <ais523> AnMaster: for roman numerals over 1000
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: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: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:31 <ehird> you must enter it in digits
20:34:31 <ais523> spell it out as digits
20:34:36 <ais523> e.g. for 123, type ONE TWO THREE
20:34:37 <ehird> THREE FOUR ZERO ZERO TWO
20:34:56 <AnMaster> considering what befunge call 9
20:35:10 <GregorR> ais523: It's subtract-and-branch-if-negative
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:29 <ais523> AnMaster: try a smaller number, then
20:35:29 <AnMaster> ais523, after entering ONE TWO
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:19 <ais523> I didn't write all or even most of the programs there
20:36:28 <ais523> AnMaster: which program?
20:36:42 <ais523> it needs lib/floatlib.i appended to it
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: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:57 <ais523> AnMaster: it's certainly a thought
20:37:58 <ehird> AnMaster: it's meant to be awkward
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:20 <ais523> ehird: what line was that ON THE LINE TO?
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: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: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: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:09 <ehird> i want an editor that lets me:
20:42:28 <ehird> (4402) DO RESUME '?'"?!101~#128'$!101~.101'"~#65535'$#2'~#3
20:42:36 <AnMaster> ais523, you know all intercall errors in your head?
20:42:37 <ehird> eddy -l323 unlambda.i
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:43:01 <ais523> most of them are related to the error in some way
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: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:53 <ais523> you have to compile it yourself, I only distribute source
20:44:25 <ais523> AnMaster: because I don't support Windows
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:53 <ehird> (e.g. 4589fjas.htm)
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: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:53 -!- ais523 has quit ("moving to a different connection").
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: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: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: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:39 <ais523> how's the C-INTERCAL testing going?
20:58:54 <ehird> AnMaster went brb phone
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:27 <ehird> ais523: getting one now
20:59:31 <ehird> i got that from the big .txt index of rfcs
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:22 <ehird> but whatever, it's new
21:00:32 <ais523> I've been wondering about the April Fool's RFC
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:28 <ais523> ehird: top of page 3 looks pretty aprilfoolsy
21:01:40 <ais523> it's basically the opposite of the Unicode guidelines for such things
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: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: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 <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: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:12:38 <ais523> http://www.google.com/virgle/images/opensource.jpg
21:14:03 <AnMaster> ais523, what is the other figure?
21:14:10 <ehird> AnMaster: an alien
21:14:15 <ehird> virgle is a space travel joke
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:32 -!- Judofyr has quit.
21:14:40 * ehird is full of knowledge
21:15:10 <ais523> neither have I, but I think it's just an interface to Jabber
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:20:10 <AnMaster> ais523, oh and I'd like to know more about details for funge <-> intercal stuff
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: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 <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:51 <ais523> AnMaster: the way INTERCAL <-> C linking works is this:
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: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: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: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:41 <ais523> and modify the playfield to do computed COME FROMs
21:26:56 <AnMaster> you need maths to push on the stack
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: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:28:29 <ehird> ICL240I ERROR HANDLER PRINTED SNIDE REMARK
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: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: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:38 <ais523> cardinal, and one char at a time
21:30:56 <AnMaster> which, considering how intercal speak looks, I feel isn't so bad
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: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:50 <AnMaster> you would need to hook into the loading routines for files
21:33:31 <AnMaster> FUNGE_FAST static inline void FungeSpaceSetNoBoundUpdate(FUNGEDATATYPE value, const fungePosition * restrict position)
21:33:42 <AnMaster> FUNGE_FAST expands to regparam(3) attribute btw
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: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: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: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: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: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: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: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 <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: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: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: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:54:36 <ehird> tons o' Ubuntu users
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:46 <ehird> cherez: Tried out C-INTERCAL 0.28?
21:57:58 <ehird> cherez: Hello??????
21:58:49 <ais523> are you both calling out the names of operating systems at random, or is there some purpose to that?
21:59:07 <ehird> is sgeo gone, by the way?
21:59:11 <ehird> i haven't seen him recently
21:59:17 <ehird> cherez: ignore me, i was imitating Sgeo
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: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: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:22 <ais523> [CTCP] Received Version request from ehird to channel #esoteric.
22:03:30 <ais523> ehird: that's pretty bad
22:03:36 <AnMaster> I'm quite sure mine sent VERSION
22:03:51 <ehird> [22:02] [CTCP] Received CTCP-VERSION reply from Deewiant: Deewiantbot version NaN
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:33 <ais523> so Konversation doesn't automatically upcase ctcps?
22:04:39 <ais523> I got lots of responses, anyway
22:04:45 <ais523> some were also in lowercase
22:04:53 <ais523> like the ones from RodgerTheGreat and clog
22:05:12 <ehird> konversation titlecases thm
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: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 <ais523> well, I like Konversation, and telnet, but for almost opposite reasons
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: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: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: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:20:27 <ehird> ais523: Maybe I'm the only person that is amused by that
22:20:36 <ehird> Oh look, msnbot is poking around my site.
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:42 <ehird> ais523: Yeah, that's true
22:21:43 <ais523> ehird: it does work in w3m, presumably?
22:21:52 <ehird> yeah, i'm sure it does
22:21:55 <ehird> look at the dir listing source
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: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: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:50 <ehird> hardly any possibility to go wrong
22:25:53 <ais523> generated programs have a +mystery option that is deliberately undocumented
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: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: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:53 <ehird> ais523: implement an intercal repl!
22:36:46 -!- wildhalcyon has joined.
22:37:24 <ehird> ais523: Read,Eval,Print,Loop
22:37:37 <ais523> there's intercalc, which is a CLC-iNTERCAL version
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:38:07 <ais523> I released a new version of C-INTERCAL today
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: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:49 <ais523> ehird: Joris Huizer has sent me a lot of patches
22:41:17 <ais523> I can normally expect a bugfix from Joris within a week or so of releasing a new version
22:42:22 <ehird> wildhalcyon: who's Eric Raymond?
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: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: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: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:44 -!- RodgerTheGreat has quit.
22:52:55 <ehird> just as i was about to write an intercal program
22:54:32 <ais523> umm... I didn't mean to set away
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").
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: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?
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: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:55 <AnMaster> Deewiant, oh btw I found some new nifty functions to microoptimize with, mostly to irritate ehird really
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: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: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: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: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: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
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: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:13 <Deewiant> I mean, if you have a quadtree or octree
20:01:21 <Deewiant> you can just follow a pointer to get to the next cell
20:01:39 <AnMaster> Deewiant, yes but what about non-flying?
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:36 <Deewiant> if moving to another square which is some distance away, lookup that square and find the target cell from a tree
20:03:12 <Deewiant> I'd possibly keep a few 'last accessed' pointers to trees
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:04:16 <AnMaster> Deewiant, also that would not work with current funge-space interface, would have to extend it for IP travel
20:04:40 <AnMaster> current is get (x,y) basically
20:04:51 <AnMaster> so I would need a getnext(x,y,direction)
20:05:06 <Deewiant> since you already have the current position
20:05:33 <Deewiant> so you know that get(x+1, y) is like get(x,y, east)
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:51 -!- Judofyr has joined.
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: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: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:47:05 <AnMaster> Deewiant, it doesn't compile on windows?
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: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: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:49:01 <Deewiant> but emulating posix is, definitely
21:17:33 <GregorR> Although still slow, it's faster than JSMMIX was. malloc isn't working right now though >_<
21:17:45 <GregorR> But that can be worked around with -msoft-float
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:29:24 -!- ehird_ has joined.
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:40 * oerjan wonders what kind of bug ais523 is talking about
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: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:16 <AnMaster> I decided to use them just to irritate you
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:39 <GregorR> Well then your computer clearly rawx0rz mine >_>
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: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: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:49:50 -!- jix has quit ("CommandQ").
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:36 <ehird_> olsner: C-INTERCAL source file
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:03:41 <GregorR> Oh wait, cross-contaminated conversations?
22:03:55 <GregorR> ehird_: printf shouldn't need malloc, but newlib's does :P
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:42 <ehird_> And its very simple to understand
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:13:03 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
22:16:50 <ehird_> RodgerTheGreat: it's lowercase, #esoteric
22:17:19 <ehird_> RodgerTheGreat: but all irc chans are lowercase
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: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: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: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: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: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:22:02 <GregorR> I /write/ a MIPS emulator in JS
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: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: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: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: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:28 * oerjan wants that in Victorian English
22:32:52 <GregorR> Does babelfish have an English->Victorian English translation service?
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: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:34:06 <olsner> in a minimally readable way
22:34:06 -!- ehird_ has set topic: 関係者各位は、談話は、いかなる種類のチャット及び全般的な議論をしてこのディスカッションフォーラム(口語では、 "チャネル" )は、自動で記録されたプログラムは、その後のコピーによると録音(ここに"ログ" )を恒久的なロケーションです。簡単に変更はないが、これらのログには、ウェブページを介してアクセスできる(.
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:42 <olsner> now that is seriously broken in xchat
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: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: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:50 <ehird_> but its a severe c-intercal bug
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: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:46 <ais523|busy> ehird_: most versions of C-INTERCAL before I fixed the build system needed hand-hacking for me too
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: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: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:58 <ehird_> RodgerTheGreat: it's your topic, in arabic
23:01:25 <RodgerTheGreat> Colloquy handles the arabic script like a champ, naturally
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: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: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: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: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").
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"").
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: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:57:20 <pikhq> Because someone insisted upon it.
01:57:30 -!- pikhq has set topic: It's all Arabic to me!.
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:27 * GregorR goes to publish the latest state of things.
03:46:25 -!- CakeProphet has joined.
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: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.
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: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: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: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: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:34 * pikhq is still proud of being the first person to finish the last puzzle without a hint
05:36:06 <RodgerTheGreat> hell, if there's enough interest I might spend some time putting together another level for the Abyss.
05:56:14 <GregorR> malloc fails before even getting to sbrk() 8-O
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. . .)
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: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: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: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: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: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: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: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.
07:12:55 -!- calamari has quit ("Leaving").
07:31:34 <olsner> AnMaster: almost certainly
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: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: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: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: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: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:19 <ais523> AnMaster: I implemented cos in MediaWiki once
09:58:46 <ais523> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=User:ais523/Sandbox/cos
09:58:56 <ais523> because you can't write an infinite loop
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:13 <ais523> as for computational class, it's below FSM because it can't infinite-loop
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:03:11 <AnMaster> clearly, mediawiki markup should have an entry on esolang
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: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: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:49 <ais523> and there's an error message, but it's in HTML comments in the output
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: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:40 <AnMaster> tools/fuzz-test.sh: line 109: 30792 Floating point exception( ./cfunge -S fuzz.tmp )
10:09:52 <ais523> division by zero, probably
10:10:08 <AnMaster> that produced NaN before when I tried
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: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: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:20 <AnMaster> StackPush(ip->stack, (FUNGEDATATYPE)random() % StackPop(ip->stack));
10:16:37 <ais523> mod by negative doesn't SIGFPE, I think
10:16:45 <ais523> but mod by zero probably does
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:04:33 <AnMaster> Deewiant, fixed the crash in ccbi?
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:07:16 <Deewiant> it crashed loading mycology, so he just made the initial size bigger ;-)
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: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: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: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:14:01 <AnMaster> actually no, it just find everything between "" on same line
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: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: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: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: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: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: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: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: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:08 <AnMaster> typedef struct s_fungeVector {
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:58 <ais523> totally insecure, but will spread the typical rectangular program out
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: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:38:07 <AnMaster> Deewiant, also do you do one hash for x and then one for y or?
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:39:13 <ais523> Perl does that too AFAIR
11:40:00 <Deewiant> it hashes together the x and y as though they're a block of data
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:50 <AnMaster> Deewiant, it seems crc gets more collisons, yet it is faster overall
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: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:50 <Deewiant> AnMaster: I don't think I do, maybe it changed since
11:56:02 <Deewiant> ais523: the D one uses a binary tree
11:56:22 <AnMaster> const unsigned int m = 0x5bd1e995;
11:56:24 <AnMaster> const hash_t m = 0x_c6a4_a793;
11:57:00 <AnMaster> Deewiant, oh wait you got fixed seed?
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:46 <AnMaster> Deewiant, that is for the scheme thing
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: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> No manual entry for posix_fadvice
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: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: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:53 <ais523> (make is particularly interesting because it has to dive into the makefile to find out what make targets are available)
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:19 <AnMaster> ais523, it is turing complete in fact
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: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:42 <ais523> if you can somehow get the patch accepted
12:26:00 <AnMaster> ais523, well no, just "look at included makefiles" patch
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: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:14:09 <AnMaster> ais523, oh? so ESR still thinks he is maintaining it?
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:28 <AnMaster> ais523, anything anyone try to write in intercal ;)
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: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:17:11 <ais523> AnMaster: that's a worrying thought
13:21:18 -!- Tritonio_ has quit ("Bye...").
13:21:34 <AnMaster> ais523, in fact lolintercal would be much easier than lolC
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: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:39 <ais523> which is not exactly the same as creating new keywords
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: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: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: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: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> 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:07 <ais523> because the and-not-equal-to is redundant
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: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: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: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: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: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: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: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: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:39 <ais523> rather than the characters themselves
13:49:49 <ais523> AnMaster: it could be worse, CLC-INTERCAL inputs in 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:42 <AnMaster> <ais523> yes, but it's just 3 lines of INTERCAL
13:51:27 <ais523> it's 4 lines for a 16-bit integer, 5 for a 32-bit integer
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:56 <ais523> AnMaster: that's terribly inefficient
13:53:05 <fizzie> Or you just table-lookup.
13:53:17 <AnMaster> fizzie, for 8 bit values certainly that would work
13:53:36 <ais523> c = (c & 0x0f) << 4 | (c & 0xf0) >> 4;
13:53:36 <ais523> c = (c & 0x33) << 2 | (c & 0xcc) >> 2;
13:53:36 <ais523> c = (c & 0x55) << 1 | (c & 0xaa) >> 1;
13:53:46 <ais523> that's an 8-bit-reverse directly from cesspool.c
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: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:24 <AnMaster> and why the name "cesspool.c"?
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: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:10 <ais523> AnMaster: I already use -Wall
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: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: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:57 <AnMaster> <ais523> fizzie: that's slow unless your system has a fast 64-bit multiply <-- well.... mine does I think
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: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: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: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: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: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:06 <ais523> thus the return address ends up wrong
14:02:23 <ais523> this also explains why the auto variables go missing
14:02:48 <ais523> well, auto's the default
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: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:22 <AnMaster> ais523, that would be against the philosophy of funge
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:56 <ais523> but I think it's best if each language keeps its own philopsophy
14:08:09 <ais523> except for INTERCAL flow control to link the two languages, whatever they are
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: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: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:12:11 <ais523> AnMaster: the same as an exit() command in C
14:12:16 <AnMaster> ais523, and with your C bridge, how do you handle _exit()
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:26 <ais523> AnMaster: no computers I dare to run it on
14:14:43 <ais523> I have one program (the MiniMAX interp) written in machine code, but I've never dared run that either
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: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:22:09 <AnMaster> ais523, before you include it into cfunge fork thing, please make it stop depending on tab == 8 spaces
14:22:17 <AnMaster> it is unreadable when tabstop is set at 4
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: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: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: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:24:10 <ais523> AnMaster: tab set to anything other than 8 is evil
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:43 <Deewiant> nothing will break if you use tabs correctly
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: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: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: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:21 <AnMaster> ais523, anyway I use my own indent style
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: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:16 <ais523> I have indent installed, but it isn't very good
14:28:25 <AnMaster> ais523, astyle is way better than indent
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: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:20 <AnMaster> it works for cfunge apart from a few 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: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:15 <AnMaster> having a comment at the end of the line like that is bad style
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: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: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:22 <AnMaster> --indent-preprocessor is only for:
15:19:26 <ais523> --min-conditional-indent=1
15:19:39 <AnMaster> ais523, no --min-conditional-indent=1 is for normal if
15:19:51 <AnMaster> if (very long line blah blah &&
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: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: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: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:51 <ais523> but I was seeing how it worked on your style
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: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: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: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: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: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:48 <AnMaster> ais523, well then just set tab stop 2
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: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:49 <AnMaster> PrintUnknownInstrWarn(FUNGEDATATYPE opcode, instructionPointer * restrict ip)
15:40:09 <AnMaster> don't think astyle will change current such line break
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: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:43:02 <ais523> but it'll be a good test case, I hope
15:43:12 <ais523> torture-test case, if nothing else
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: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:23 <ais523> Prelude converts to Fugue
15:44:31 <ais523> ah, you misread Fugue as Funge
15:44:42 <ais523> it's a music-based programming language
15:44:59 <ais523> I wrote a hello world in it, compiled from BF
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: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: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:47:00 <ais523> the concept of using external libraries was a joke, more or less
15:47:41 <ais523> only because they have no choice
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: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:41 <AnMaster> ("(:\\*)" . font-lock-constant-face)
15:49:41 <AnMaster> ("(::\\*\\*)" . font-lock-constant-face)
15:49:41 <AnMaster> ("(:::\\*\\*\\*)" . font-lock-constant-face)
15:49:45 <AnMaster> ("(::::\\*\\*\\*\\*)" . font-lock-constant-face)
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: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:53 <ais523> probably, but they don't hook into Font Lock AFAIK
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: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: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: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:44 <AnMaster> and what should the types be called?
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: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: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:12 <ais523> if they had used int128_t, then they would have put a relevant printf modifier in stdint.h
16:06:24 <ais523> CHAR_BIT is 32 on some DSps
16:06:49 <AnMaster> ais523, so a byte there is 32 bits XD
16:07:01 <ais523> they can't sensibly address anything smaller without using bitwise arithmetic
16:07:07 <ais523> digital signal processor
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: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:10:09 <AnMaster> $ strings /usr/x86_64-pc-linux-gnu/bin/strip | grep int128
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: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:08 <ais523> that's a single asm instruction
16:13:28 <AnMaster> and the source doesn't have reversed fingerprint names anywhere
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:15 <ais523> generally speaking you run it in a loop
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: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:31 <ais523> although I did get a stripped-down version of INTERCAL running on PICs
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:56 <ais523> say a few kilobytes of RAM at once
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: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: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:26 <AnMaster> ais523, but you can't adress on bit-basis in pic iirc?
16:19:35 <AnMaster> I think it was using bytes of some size
16:19:38 <ais523> using bitwise instructions
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: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: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:33 <AnMaster> ais523, where is the source of PIC-INTERCAL?
16:23:42 <ais523> it's in the C-INTERCAL compiler
16:23:54 <ais523> but most of the advanced features are disabled if you do that
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: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: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: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: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: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:54 <fizzie> There's at least one IRC client in bash.
16:32:55 <AnMaster> you can do loadables in bash however
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: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: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> 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:40:20 -!- ais523_ has joined.
16:40:30 <ais523_> OK, this is me online using netcat
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:46 <ais523_> doesn't strike me as being very different from telnet
16:41:16 <ais523_> yes, it works, I think it's reading from stdin
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:41 * ais523_ gets annoyed at AnMaster for sending them lots of CTCPs
16:43:06 <ais523_> you did an ACTION immediately beforehand
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: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: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: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: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:37 <AnMaster> ais523, don't have elinks installed
16:52:04 <fizzie> elinks doesn't seem to like it.
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:57 <fizzie> Elinks shows "</>" as the title, a "</>"-labeled link to http://pikhq.nonlogic.org/foo and the text "</> </>".
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:55 -!- thutubot has joined.
16:54:56 <AnMaster> fizzie, but way better than the others
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:28 <ais523> I think it's just got \hello and \quit at the moment
16:55:32 -!- thutubot has quit (Client Quit).
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: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:10 <ais523> but I'm not sure about BF-complete
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
17:07:04 -!- thutubot has joined.
17:07:43 <ais523> be careful with it, though, it'll go into an infinite loop on most invalid input
17:08:50 <ais523> actually, I'm not sure, maybe it'll just reply with garbage
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: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: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 -!- thutubot has quit (Client Quit).
17:15:31 -!- thutubot has joined.
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: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 -!- thutubot has quit (Client Quit).
17:15:57 <EgoBot> +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^
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: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:37 <ais523> oklopol: I'm vaguely aware of it
17:24:43 <ais523> but can't remember much about what it does
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: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:44 <oklopol> fact={1->1;N->N*out'(n-1)};fact 4
17:26:57 <oklopol> CakeProphet: it's sexps, so, duh
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: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: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: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 <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: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:44 <ais523> CakeProphet: I don't know that abbrev, so it's unlikely that my bot will
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: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: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: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: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:29 <Sgeo[College]> I thought you felt insulted about something someone said
17:41:42 <ais523> CakeProphet: no, it PONGs you back instead
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:44 <ais523> Sgeo[College]: no, just persistent
17:43:51 <ais523> but I don't mind it all that much
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: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: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: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:53 <AnMaster> <oklopol> yay, oklotalk has a parse
17:53:09 <oklopol> i will put it on an irc bot once it can do anything
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: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: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: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: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:57 <oklopol> well that's sexps, so (function arg arg arg...)
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: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:17 <oklopol> i can show the factorial again
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 -!- 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: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: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 <oklopol> for instance, it's 100% robust
17:59:39 <oklopol> any string is a legal program
17:59:40 <AnMaster> you mean no side effects? sure
17:59:55 <AnMaster> oklopol, so cat /dev/urandom is?
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: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: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: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:23 <oklopol> sure, if "sending a message" sounds like smalltalk
18:03:53 <oklopol> every OO-based language and functional language is about messages, though
18:04:28 <lament> most OO-based languages and functional languages don't have messages
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:41 <oklopol> any high-level language will be about sending messages, if you want to think that way
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: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: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:09:23 <CakeProphet> -shrug- whatever. my patience with comp terminology is growing thin.
18:09:55 <oklopol> take it easy, man, you seem goddamn tense.
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: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: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:11 <AnMaster> oklopol, but what would it output or whatever?
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:42 <oklopol> this is the... first one i think
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: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:59 <AnMaster> oklopol, and what would the second program evaluate as?
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:58 <oklopol> i haven't actually chosen semantics for everything
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: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 <oklopol> that wouldn't be very oklotalky, because currying isn't really supported
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:26 <AnMaster> oklopol, lower case == a-z? what about åäö?
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:30 <oklopol> string -> number will never happen automarically in oklotalk
18:25:39 <AnMaster> if yes, then åäö as I sent them would be several codes
18:25:50 <oklopol> AnMaster: char is a number with #chr type-tagged
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:29 <oklopol> apply function \1 to param
18:26:40 <oklopol> well they will evaluate to the corresponding atom
18:27:09 <oklopol> Sgeo[College]: strings will never be automatically converted to numbers in that fashion
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:30 <oklopol> AnMaster: what character is that?
18:27:39 <AnMaster> oklopol, the last one is a string
18:28:25 <AnMaster> oklopol, it is the generic currency symbol
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:16 <AnMaster> oklopol, ok, what does the program: " raey eht ni nettirw saw elpmaxe sihT" >:#,_ "AMOR"4#@(MM+IIX\-\-+.)a,@
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:20 <oklopol> " raey eht ni nettirw saw elpmaxe sihT" > (: #) <<< first element
18:31:42 <oklopol> " raey eht ni nettirw saw elpmaxe sihT" > "" << tailed an atom -> converted to string, tailed string
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:52 <oklopol> which, btw, is another re-invention
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: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: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: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:45 <oklopol> that might actually do something
18:36:05 <oklopol> wait, i have a girl stuck to me
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:25 <AnMaster> oklopol, you want something else? more C code? http://rafb.net/p/DRWbPE18.html would that do anything in oklotalk?
18:39:21 <oklopol> i mean, that c example with p_key
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:41:25 <AnMaster> I start to realize why you haven't coded an interpreter for it yet
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:30 <oklopol> [$Init N] matches a list of that form
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: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:58 <oklopol> i'll parse, as i think i've specified it
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: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:26 <oklopol> well, i don't have the parser yet...
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:45 <oklopol> the problem is, stuff like *= just doesn't mean anything, even though it's valid code
18:47:02 <oklopol> yes, unless you give them a meaning
18:47:11 <oklopol> which can be done at runtime, and usually will be
18:48:17 <oklopol> k = {p_key -> p_key . x _};
18:48:28 <oklopol> this is almost parsed as it is in C
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:13 <oklopol> k is set to that weird lambda
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: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: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:55:20 <oklopol> size_t len = sizeof(fungeSpaceHashKey); return [fungeSpaceHashKey *] memcpy [newobj oldobj len];
18:55:21 <oklopol> slightly more interesting.
18:55:22 <oklopol> yes but it's already been paesed a bit
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: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: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:38 <AnMaster> back to <oklopol> size_t len = sizeof(fungeSpaceHashKey); return [fungeSpaceHashKey *] memcpy [newobj oldobj len];
18:57:14 <oklopol> return *may* be what it is in 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 <AnMaster> there is no x or C in that line
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:54 <AnMaster> I thought you meant variable C
18:58:57 <oklopol> i've removed uplevel lambdas from oklotalk to simplify scoping a bit
18:59:09 <oklopol> uplevel, as in thin functions
18:59:15 <oklopol> something like what plof ha
18:59:28 <AnMaster> oklopol, so is oklotalk functional, object orientated or what?
18:59:47 <oklopol> plof is GregorR's language
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: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: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: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:03:05 <AnMaster> but well, on out of memory there isn't much I can do when stuff fails
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: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: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: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:14 <AnMaster> I make sure it does at each revision
19:06:30 <AnMaster> I don't commit if it doesn't pass mycology and valgrind
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:08:27 <AnMaster> from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)".
19:14:54 <oklopol> AnMaster: rational numbers
19:15:25 <oklopol> to test its extendability in itself
19:16:04 <AnMaster> oklopol, why not do symbolic algebra?
19:16:20 <oklopol> well the actual types i was thinking for oklotalk were number and list
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: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: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 <oklopol> i have a lot of ideas for something with algebra
19:17:38 -!- Judofyr has joined.
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:45 <fizzie> Maxima is to Mathematica what Octave is to Matlab. :p
19:19:17 <oklopol> zuffancezdroty is to mathematica what gnazzlewimber is to matlab
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:21:16 <oklopol> that always makes me a sad panda
19:21:33 <AnMaster> fizzie, well maxima does what I need
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:48 <fizzie> Fortran has a certain charm.
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:28:41 <lament> "Fortran 2003 has extensible types, inheritance, polymorphic variables, and type-bound procedures"
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: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:15 <AnMaster> I talked to someone who said it worked in safari
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: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: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: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: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 <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.
01:06:22 <GregorR> http://www.codu.org/jsmips/ // now with a non-working example!
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:51 <GregorR> Instead, it just prints Hello, 3
01:09:56 <GregorR> And then dies a horrible death.
01:11:52 <pikhq> One that Gregor is implementing in Javascript for no good reason.
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:13:00 <GregorR> Also, MMIX is practically CISC compared to MIPS.
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:44 <GregorR> Pretty sure everyone is :P
01:14:48 <pikhq> (my kernel courtesy of docs from osdev.org)
01:17:20 <pikhq> Whereas I, in a few months, am entering college.
01:17:47 <GregorR> I, in a few months, am entering grad school.
01:18:00 <pikhq> Of course, oerjan has all of us beat.
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:22 <GregorR> When (if) I get my Ph.D, I'll change my nickname to DrGregor :P
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:30 <pikhq> Hey, if Gene Gray can declare himself a Doctor of Cubic, then so can I.
01:20:34 <GregorR> I could get a non-accredited Ph.D - HEY, I just did!
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: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:58 <GregorR> Awesomeology is to Awesomeositism as Astrology is to Astronomy
01:21:59 <wildhalcyon> But awesomologists are also notorious spellers
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:47 <lament> ouch! that really sucks!
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: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: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: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: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: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: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:49:08 <pikhq> Consider that C itself is better than C++ for most intents and purposes.
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: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:52:19 <pikhq> int main(){volatile asm ("; program code here.");}
01:53:44 <boily> pardon my C ignorance, but whate is the meaning of volatile?
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: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: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:40:11 <GregorR> It means it could change at ANY MOMENT ZOMG, so you can't cache it etc.
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:50 <pikhq> I have another interpretation that I thought of. . .
02:45:59 <pikhq> volatile = "You can't touch this".
02:46:11 <GregorR> Uhhh, that's just plain incorrect.
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.
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:07:03 <pikhq> wildhalcyon: My version of 'you can't touch this' is what you described.
03:09:26 -!- Tritonio_ has joined.
03:09:49 <pikhq> 'Cept for MC Hammer.
03:30:11 -!- adu has joined.
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:12:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
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: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: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:40:20 <lament> RodgerTheGreat: i like it
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: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:49 <lament> http://z.about.com/d/chineseculture/1/0/v/Y/rain.gif
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: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: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:25:31 -!- GreaseMonkey has joined.
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: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:32:11 <ais523> is it a problem in printf?
10:41:46 <GregorR> It's going into a perhaps-infinite loop in memchr
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: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: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: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: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:57:22 <fizzie> I don't think lcc-win32 has the posix combattability things mingw has, though.
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:38 <AnMaster> and strdup not in normal header?
13:53:16 <Deewiant> and strdup is docced at http://msdn2.microsoft.com/en-us/library/ms235454(VS.80).aspx
13:58:07 <AnMaster> CMakeFiles/cfunge.dir/src/instructions/sysinfo.obj(.text+0x2fb):sysinfo.c: undefined reference to `environ'
14:01:07 <AnMaster> static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" };
14:02:12 <AnMaster> Deewiant, not my fault the system isn't sane
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: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: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> 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: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: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: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:29 <ais523> to get C++ programs to link under DJGPP
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> "SUPPORTS=not environ at least, get a sane system if you want this to work."
14:44:55 <ais523> but the link fails if I don't do that
14:45:19 <ais523> it doesn't do anything obvious
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: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:38 <ais523> but it never really caught on
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: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:27 <ais523> CreateProcessEx() : 7 parameters
15:01:40 <ais523> the Win32 API is really quite bloated
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: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: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: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: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: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:43 <AnMaster> ais523, I remember reaching it in one project, so many different *.o all on one line
15:06:15 * ais523 runs ls -l `find .` in their home directory just to see if it will work
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:18 <AnMaster> ais523, oh interesting, you needed to cast a lot of things then I assume?
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:10:07 * ais523 tries to find the file
15:10:12 <ais523> it's on here somewhere, I think
15:11:14 <AnMaster> because I bet you need to cast things a lot
15:11:29 <ais523> because there were lots of statements with no effect
15:11:33 <ais523> that I put there deliberately
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: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: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:16:17 <ais523> there are 10 programs hidden in there
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: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: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: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:17 <ais523> AnMaster: that's expected
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:59 <ais523> sorry, ./ioccc5 "`cat ./ioccc5`"
15:20:08 <AnMaster> ýýýýýýýýýýýýJGGGGGGA>>>>>>]ZZZZZZNKKKKKK?<<<<<<NKKKKKKC@@@@@@PMMMMMM;888888qnnnnnntqqqqqq]ZZZZZZQNNNNNNCC
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:21:13 <AnMaster> ok looks like it runs befunge?
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: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: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:24:09 <AnMaster> $ cat ./ioccc5o1.c | perl ./ioccc5o1.c
15:24:12 <ais523> http://pastebin.ca/971083
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: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: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: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:47 <ais523> different language, so different extension
15:29:04 <ais523> it's an RLE decompressor
15:29:18 <ais523> using tab as a metacharacter to talk about repetition
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:32:34 <AnMaster> ais523, how come your code lost?
15:32:43 <AnMaster> oh wait, not all the programs where C? maybe that?
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:35:00 <ais523> AnMaster: it's a file containing just one newline
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: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:56 <AnMaster> cat $1 newline.txt | sed -f ioccc5.sed > temp.sh
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: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:38 <ais523> AnMaster: rmdir exists on UNIX with the same semantics as it has in DOS
15:37:54 <ais523> so I removed them by deleting all entries in them and then using rmdir
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: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:38 <ais523> I started learning a lot faster once I thought of that
15:39:58 <ais523> note, however that throughout all this, I /still/ preferred UNIX to Windows
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:46 <AnMaster> ais523, how long ago was this?
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: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:49 <ais523> put it this way, it was 2006 and yet the system was still running CDE
15:43:01 <AnMaster> ais523, what OS was it then? solaris?
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: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:51 <Deewiant> AnMaster: you want GetEnvironmentStrings and FreeEnvironmentStrings
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: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:29 <AnMaster> ais523, well add munmap to that list actually
15:48:47 <ais523> although that's more unlocking, then freeing
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:29 <ais523> Deewiant: yes, but they leave the old libraries there anyway
15:50:32 <Deewiant> of course, they require huge compatibility layers
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:53 <ais523> the API gives me the strong suspicious than all objects are refcounted, for instance
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: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: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:48 <Deewiant> if the process is gone, its locks are gone
15:53:55 <AnMaster> though think only Swedish ppl complained
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: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:24 -!- boily has joined.
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:48 <AnMaster> I updated glibc in multi user mode with no issues
15:56:34 <ais523> AnMaster: Windows requires reboots for more or less everything
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: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: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: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:34 <ais523> in theory you could use syscalls directly instead, which can't be done in Windows
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: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: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: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:34 <AnMaster> like fuse? file system in userspace?
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:50 <ais523> however, they're apparently the main cause of BSODs on Windows
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:24 <ais523> you could press [ESC], and it would ignore the error and attempt to continue
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: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:51 <ais523> you would try to alt-tab to it first, I suppose
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: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: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: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: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: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:15 <AnMaster> that one didn't have a descriptive comment
16:42:35 <ais523> use of a unary operator that doesn't exist in your current base
16:42:51 <ais523> (base 2: AND, OR, XOR)
16:42:59 <ais523> (base 3: AND, OR, BUT, XOR, sharkfin)
16:43:22 <ais523> AnMaster: noncarrying addition
16:43:31 <ais523> BUT is a bit harder to explain
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:48 <AnMaster> #define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\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: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: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: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: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:34 <AnMaster> to allow say ETT TVÅ in Swedish
16:54:47 <ais523> AnMaster: it allows a lot of languages already
16:54:55 <ais523> they're just not ones that you're likely to have heard of
16:55:18 <ais523> AnMaster: there were attempts to add Klingon but it ran into problems, so it isn't supported
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: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:17 <ais523> you can find out about the others in Wikipedia
16:57:32 <ais523> (in fact, many of the languages have a Wikipedia written in them nowadays)
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:31 <ais523> AnMaster: only one that looked like numbers in one of the languages above
16:58:52 <ais523> AnMaster: only bits of it
16:59:08 <AnMaster> what I said was a reference to a scene in it
16:59:51 <AnMaster> # define __attribute__(x) /* NO-OP */
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:59 <AnMaster> so can't see why it would give a warning from gcc?
17:01:01 <ais523> FAC ADVENIRE DE (1666)
17:01:11 <ais523> AnMaster: because its source is not available during compilation
17:01:39 <ais523> AnMaster: I compile each .c file separately
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:26 <AnMaster> ais523, tell me if astyle works on ick_loose.c
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: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: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:35 <AnMaster> ais523, even if it is a different file
17:04:50 <ais523> but the declarations were inside functions originally, where it did make a difference
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: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: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: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:16:03 <AnMaster> ais523, "" == 1 is still faalse
17:16:12 <ais523> It isn't defined as ""
17:16:12 <Deewiant> AnMaster: it's not "", it's nothing at all
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:10 <ais523> Deewiant: yes, but I tend to think in terms of unsigned arithmetic while programming INTERCAL
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:40 <ais523> you get those by #including "config.h"
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:25 <ais523> AnMaster: it's not config.h that's the problem, but the identifiers it #defines
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: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: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:21:13 <AnMaster> that is one thing c++ got right, namespaces
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:44 <ais523> so it has to do everything itself and avoid anything that might clash with the program it's included in
17:22:53 <ais523> AnMaster: it's a C99 header, #include <tgmath.h>
17:23:58 <AnMaster> ais523, btw did you know about pahole?
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 <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:34 <ais523> reordering elements is more efficient if you can get away with it
17:25:52 <Deewiant> or is there a good reason for that
17:26:06 <ais523> Deewiant: the C standard
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: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: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: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:09 <Deewiant> coff2omf -> change object format
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: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: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:20 <ais523> a #pragma shrink would be more interesting
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:44 <ais523> 64 is a Microsoft extension
17:31:48 <Deewiant> AnMaster: "instead of the standard"
17:31:54 <Deewiant> AnMaster: meaning, %lld is the standard
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:34:07 <Deewiant> ais523: ah, I think irssi displays tabs as inverted-color I
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:52 <ais523> B, C, and G as well for me
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: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: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:37:13 <AnMaster> %B%C and %G were simply missing
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:22 <AnMaster> some clients can't show unicode
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:14 <AnMaster> of course since irc doesn't echo
17:39:17 <ais523> ah, that would explain a lot
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: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: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: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:14 <ais523> I thought it was in the original RFC
17:43:26 <AnMaster> ais523, even if it is, no one would care
17:43:52 <Deewiant> they just limit it or extend it in some ways
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:27 <ais523> RFC 1459 says that it's possible to send to a comma-separated list of receivers
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: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:46:02 <ais523> AnMaster: yes, if you put multiple channels there, or hundreds of people
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: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:54 <AnMaster> Deewiant, of course you could add one to the counter for each recipients
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: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: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: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: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: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:54:27 <AnMaster> ICK_EC_FUNC_START(ick_my_custom_syslib) <-- I hate that way of doing a function
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:34 <AnMaster> ais523, now THAT could be a problem for astyle
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:32 <AnMaster> that would remove the last remaining need for goto really
17:57:38 <AnMaster> ais523, doesn't work in C iirc?
17:58:06 <ais523> does it allow expressions in place of the constant 2?
17:58:17 <ais523> that would be the INTERCAL-style method of doing things
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: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
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:42 <ais523> latin1.bin is a binary file containing a description of the latin-1 character set, for use by convickt
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: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:55 <AnMaster> allowing some variables perhaps?
18:04:05 <ais523> #{1} means any constant
18:04:21 <AnMaster> and where is that in the output?
18:04:31 <ais523> x2 fetches the value of #{1}2
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:11 <ais523> AnMaster: it's not textual substitution
18:05:15 <ais523> it's matching parse trees
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: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: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:28 <ais523> Befunge-93 is easier to interpret than INTERCAL, although harder to compile
18:09:54 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php
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:31 <ais523> and you can stay well out of its program space
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:18 <AnMaster> ais523, yet the befunge in unefunge is totally mad
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: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: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:59 -!- thutubot has quit ("ThutuBot quitting").
18:53:52 -!- thutubot has joined.
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: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: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: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
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: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: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: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:26 <ais523> (that is, overlong in time taken to run)
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: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: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: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: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: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: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:14:10 -!- RodgerTheGreat has joined.
20:14:14 <SimonRC> # Not a torch or a match in your in-ven-to-ry #
20:14:40 <SimonRC> RodgerTheGreat: waddya think of MC Frontalot?
20:15:03 <SimonRC> nonono, that's not the rhythm
20:15:56 <RodgerTheGreat> I'm not familiar with too many of his songs, but what I've heard I liked
20:16:41 <SimonRC> MC Frontalot, Lemon Demon, Tom Lehrer, and Weird Al.
20:17:12 <SimonRC> also, need less songs about relationships
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:49 <SimonRC> or the love of man and crayola
20:24:07 <SimonRC> http://frontalot.com/index.php/
20:24:21 <SimonRC> the populariser of nerdcore rap
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: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: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: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: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: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:11 <SimonRC> well, some tings would have been better
20:50:36 <RodgerTheGreat> well, it would've decreased the chance of C++ taking hold, so that would definitely be better
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: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:53 <AnMaster> RodgerTheGreat, what about elisp?
20:51:56 <Deewiant> give mr. stroustrup two hours alone with any language and I'm sure he can ;-)
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:53:11 <vixey> how can you say that Simon..
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: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: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: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:29 <RodgerTheGreat> lament: I don't hate it yet, but we'll see how that develops
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: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:04 <SimonRC> no, heavywieght for the programmer
20:59:16 <vixey> a bit of reflection goes a long way ;P
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: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: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: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: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:08:13 <GregorR> I HAVE A PUSSY ... IN MY LAP
21:09:53 <Deewiant> http://arcanux.org/lambdacats/io-monad.jpg
21:10:51 * vixey feels like the kant haskell today cat :(
21:12:04 <GregorR> (Your choice of interpretation of that word)
21:12:14 <SimonRC> RodgerTheGreat: me (as you imagine me)
21:12:21 <SimonRC> in fact, us, (as you imagine us)
21:12:43 <GregorR> So, bad teeth clenching a pipe and a top hat?
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: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:44 <GregorR> Hey, I'm not a formless ball!
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:18:14 <SimonRC> (COBOL Bill is off of Mandatory Fun Day, to worst (and only) webcomic ever to be part of TDWTF.)
21:18:24 <GregorR> I think I'm going to make that "people from the internet" picture my avatar.
21:19:02 <RodgerTheGreat> I heard that my sister set this as her desktop: http://www.nonlogic.org/dump/images/1202607439-DrumsCantMakeAMinorsRetards.png
21:21:06 <RodgerTheGreat> and this image is currently winning the Nonlogic Dump War: http://www.nonlogic.org/dump/images/1203194372-saur.png
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: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:29:12 <RodgerTheGreat> oh yes, I think I remember the discussion this spawned last time
21:29:46 <SimonRC> vixey: dragon-shaped, but technically not dragons
21:30:07 <vixey> yeah sometimes, not like I used to though
21:30:25 <vixey> what are they, if not dragons?
21:30:45 <vixey> I don't have anything online
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: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: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: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: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:42:05 <SimonRC> I wonder if that same would work for smell
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:58 <SimonRC> for each position there is a color
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: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:46 <vixey> "pixels" sounds like a bad term
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: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: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: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:50:04 <SimonRC> well, smell would be simpler if we only had a few dimensions of it...
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:48 <SimonRC> If a few scents are considered much more important than others, you can concentraste on those for representationality
21:56:52 -!- pikhq_ has joined.
21:59:36 <GregorR> SUPER DANCE EXPLOSION TIME
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:56 <GregorR> bool b = *(cast(bool*) &a);
22:02:57 <SimonRC> GregorR: that is not a boolean
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:52 <SimonRC> ok, so I hadn't heard of 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:09:23 <SimonRC> it seems that .NET booleans are 32-bit actually
22:10:07 <RodgerTheGreat> although that may be related to how their VM is designed
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:33 <SimonRC> we can't do free-standing holograms yet
22:16:34 -!- jix has quit ("This computer has gone to sleep").
22:19:01 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)).
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: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: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: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: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: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: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
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:37 <oklofok> it would be such a nice instrument if you could put a black key between e&f and b&c
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: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:18 <GregorR> Got it, OK, that makes more sense :P
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: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: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: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: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: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:28:13 <oklofok> adding another octave makes both crasg.
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:29:13 <lament> (each finger corresponds to more or less two frets, and independently shifts between them)
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:56 <lament> if you're playing in C major, the fingers fall on the white keys, one finger per note
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:20 <lament> each scale is 2 tetrachords
00:36:58 <lament> the cycle of modes goes lydian-ionian-mixolydian-dorian-etc
00:37:11 <lament> suppose we're in the key of c
00:37:24 <lament> and ionian (major) mode
00:37:44 <oklofok> you can just tell me the numbes
00:37:49 <lament> http://en.wikipedia.org/wiki/Musical_mode
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:15 <oklofok> well i didn't read the second one yet
00:42:35 <lament> it's fairly basic music theory stuff
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: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: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: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:28 <oklofok> i guess it would be appropriate to learn the names
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:35 <GregorR> If you play it, it will seep into your soul and slowly start to dominate it.
00:51:55 <GregorR> Eventually, you will no longer be oklofok, you will only be the mixolydian scale.
00:52:07 <lament> oklofok: if you're in C major, and play G7
00:52:18 <lament> that G7 is a dominant chord
00:52:31 <oklofok> how long till i turn into it?
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:27 <lament> that's just the cycle of fifths
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:32 <lament> do you know what the cycle of fifths is?
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: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: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:50 <oklofok> do continue, i'll scream if i don't know a term.
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: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: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:10:16 <oklofok> should this correspond to the cycle of fifths?
01:10:26 <lament> because the strings are tuned a fifth apart
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:58 <lament> 0245 == O O OO (on a string that goes from left to right)
01:12:16 <lament> normally you draw strings vertically but that's hard on irc
01:12:33 <lament> so the first one, 0245 0245, and then 0235 etc
01:12:56 <lament> and then you just continue the pattern
01:13:18 <lament> each two adjacent strings are the same
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:54 <lament> it's the fourth of those lines
01:14:13 <lament> sorry, the fifth and the sixth
01:14:27 <lament> the fourth and the fifth :)
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:16:39 <oklofok> doesn't it go . . || three times after that
01:16:44 <oklofok> and then cycles from . || .
01:16:55 <lament> after that, the ladder "falls through the floor"
01:17:27 <oklofok> i don't get these last two
01:17:27 <lament> we have shifted one fret down
01:17:41 <lament> the last two are supposed to be . . ||
01:18:04 <lament> the ladder is back at the top
01:18:38 <oklofok> so the cycle is seven patterns long
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: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: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:24 <lament> the two halves are identical!
01:22:37 <lament> you can't have that when you split it into 4ths
01:23:40 <oklofok> you can split a subset of superset of it
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: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:12 <lament> is a pain to play on the guitar :)
01:26:28 <lament> guitar is not really meant for that
01:26:41 <lament> normally it's one finger per fret
01:26:44 <oklofok> and if it's acoustic or not
01:27:02 <oklofok> if it's not acoustic, it depends on where you play :D
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:28:38 <lament> I know that some people who play primarily melody and not chords tune in all fourths
01:28:58 <oklofok> dropped is for playing power chords easily.
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: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:32:31 <oklofok> because 0|2|2 is as easy to play as 0|0|0
01:32:31 <oklofok> you prolly don't get my notation
01:32:52 <oklofok> fret in lowest string|...|fret in highest string
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:59 <lament> ...clearly it's easier, although clearly one should be able to play both :)
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:05 <lament> it kinda seems like it has potential
01:36:18 <lament> but i have invested too much time learning chords for the standard tuning
01:36:36 <lament> (so might as well just switch to a whole different instrument for playing melody...)
01:37:07 <lament> but i want to switch to mandolin and similarly tuned stuff
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:52 <oklofok> nile does this in metal, although you probably don't appreciate that kind of stuff
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: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: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: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:42 <oklofok> but i'd say more in the historician sense
01:45:51 <oklofok> to see what limits have developed naturally
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: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
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: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:26:44 <Slereah> I have my share of stunning right now.
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: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: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:34:17 <Slereah> RodgerTheGreat : They don't use guns.
03:34:20 <GregorR> RodgerTheGreat: People from the Internet
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:40:43 <GregorR> What name shall I use to give you attribution in the "product" description?
03:45:08 <GregorR> http://www.cafepress.com/bizarregeek.250445859
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:49:19 -!- GregorR-L has joined.
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: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: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> 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: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: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:10:28 <RodgerTheGreat> this was my favorite painting: http://www.nonlogic.org/dump/images/1207368583-anything.jpg
05:11:04 -!- pikhq has joined.
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:54 * pikhq returneth from a date
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:16:54 <pikhq> I guess I should've expected that, though, Gregor. :p
05:24:18 <GregorR-L> Should I blindly put this /topic in a .c file and see what happens?
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 <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:26:05 <pikhq> vixey: You set it; care to explain?
05:28:15 <pikhq> GregorR-L: Yeah, it's a bracketlang. Bit older than C, though.
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:46:09 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1207370672-wall.jpg
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: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: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:44 <oklofok> well yeah, i do know how it works
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
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: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: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: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
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: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:07:56 <RodgerTheGreat> ais523: I have the best knock knock joke ever- say "knock knock"
16:11:23 -!- Sgeo has joined.
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:38 <ais523> followed by a comment 'No observable effects for you, though'
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: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: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
17:03:40 <SimonRC> But PoT was done with squares, not circles, surely?
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: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:09:32 -!- Judofyr has quit.
17:09:42 <ais523> the word is halcyon, but I'd misspelt it as halycon
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: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:26 <oklopol> i once mixed halon and halogen, god what an explosion
17:19:54 <oklopol> (i have no idea what halon is, but it sounds dangerous.)
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: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: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: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: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:54:44 <ais523> RodgerTheGreat: it's a great book
18:54:45 <Slereah> It never really inspired me to buy it.
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: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: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:12:13 <AnMaster> there are several irc clients for emacs
19:12:16 <ais523> but I noticed your quit message
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: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:43 <AnMaster> like end up in wrong mode *all the time*
19:14:11 <AnMaster> or if ed isn't there, I would do sed
19:14:31 <AnMaster> under NO conditions will I use vi
19:14:42 <fizzie> You people are strange.
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: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: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:31 <ais523> SimonRC: not on this keyboard
19:25:37 <ais523> and Pause is actually really useful under DOS
19:25:42 <ais523> SimonRC: no, that's delete
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: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: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: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: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: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:31:27 <ais523> doesn't work on this Ubuntu system, Ctrl-Alt-F1 Alt-SysRq Alt-H just types the letter h
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:44:05 <SimonRC> no, you let go of everyting before typing alt-h
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: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: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:33 <AnMaster> http://ipv6.google.com/images/ipv6_logo.gif
20:10:44 <AnMaster> ais523, try accessing same with www.google
20:16:09 <SimonRC> or the source, or whatever
20:21:23 -!- tola_ has quit (Read error: 110 (Connection timed out)).
20:29:40 * SimonRC laughs at Garfield Minus Garfield (again)
20:30:40 -!- tola__ has quit.
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: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:58:50 <ais523> you're in here twice at the moment
20:59:46 <ais523> +ul (hello from me, too)S
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: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: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:06:12 <AnMaster> ehird, that is how most bots do on irc, and it works better normally
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: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:34 -!- thutubot has quit ("ThutuBot quitting").
21:09:55 -!- thutubot has joined.
21:10:21 <ais523> AnMaster: is that what you meant?
21:10:39 <ais523> making it an end-user option whether to privmsg or notice
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: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: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: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: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: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:41 <ehird_> that isn't quite right just yet
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: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:12 <ais523> lambdabot does everything apart from interpret esolangs, AFAICT
21:28:22 <ehird_> & used to do brainfuck
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:51 <ehird_> 'karmaPlugin :: Plugin' --> 'karmaPlugin :: Plugin Karmas'
21:30:39 <ehird_> karmaPlugin :: Plugin Karmas (Map String Integer)
21:30:53 * ais523 has a really devious idea
21:30:59 -!- thutubot has quit ("ThutuBot quitting").
21:33:55 <ehird_> ais523: http://hpaste.org/6851 fully updated Endeavour example, with type info
21:40:23 -!- thutubot has joined.
21:40:57 -!- thutubot has quit (Client Quit).
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:34 <ehird_> +haskell putStrLn "dum de de dum dum"
21:42:40 <ehird_> ais523: A constant nop?
21:42:47 <ais523> and no, it should work eventually
21:42:50 <ais523> but I'm still ironing out the bugs
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: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: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: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: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:45 <ais523> which is strange, because it doesn't ignore me with exactly the same PRIVMSG
21:49:53 <ehird_> /msg lambdabot @run foo -- this also works
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:35 <ehird_> ais523: did you remember the colon
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: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:57:32 <SimonRC> oh, like a linked-list head
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: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: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: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: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:24:12 * ehird_ thinks of what language to implement befunge98 in
22:24:27 <ehird_> oh, and ais523, I do logread
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:42 * GregorR is better than you in every way.
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:27 <GregorR> IM IN UR MONAD, ORDERING UR OPERATIONS
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: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: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:04:13 <ehird_> => #<procedure FIREUCKEDP>
23:04:21 <ehird_> * (fireuckedp 'firefox)
23:12:55 <ehird_> hmm, who is the 'amb' expert here again?
23:30:31 <ais523> ehird_: it's basically just C with MAYBE and GO BACK
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"").
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:49:08 * pikhq is curious: how many people here went to their high school prom?
04:53:00 * pikhq is going to his senior prom. w00ts.
04:53:15 <pikhq> (and went to his junior prom)
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: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: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: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:46 <pikhq> A type system based on common cliches?
07:03:44 <RodgerTheGreat> cliches are memetic macros, serving to obviate active thought.
07:04:01 <pikhq> Kanojou ha sou itta.
07:04:06 <pikhq> (that's what she said.)
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: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: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: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: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: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: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: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: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: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: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:55:35 -!- oklopol has quit (Read error: 110 (Connection timed out)).
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.
16:10:16 -!- ehird_ has joined.
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:45:09 <oklopol> pfft i had more than lament
16:46:35 <vixey`> was this during 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: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:33 <ais523> it can be used like AND or OR
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:25 <ais523> RodgerTheGreat: TRUE xor FALSE = TRUE
17:27:28 <vixey> TRUE but FALSE = FALSE
17:27:41 <ehird_> SHOULD 'true but false' be false?
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:29:34 <ehird_> *Main> not test `but` test1
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:50 <ais523> ehird_: `but` is just `and` in the not a but b situation
17:31:06 <ehird_> there's no new operators under the sun
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: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: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: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:34:23 <ehird_> oklopol: what was your 'natural language OR' again?
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:10 <ehird_> you said that natural language's "OR" was not the OR in programming languages
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: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:06 <ehird_> oklopol: oh that's easy
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: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: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:27 <ais523> it's using MAYBE/GO BACK/GO AHEAD
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:52 <ehird_> you can implement or kind of well
17:39:55 <ehird_> if you can overload ==
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:13 <ehird_> oklopol: but really, look at amb
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: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: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:31 <ais523> ehird_: you still can't change the type of the return value
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: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:53 <ais523> ehird_: no it is hard, because you don't call va_end before TRY returns
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:55 <ehird_> the C is only old-style in that it casts malloc
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:33 <ehird_> Haskell's amb is really nice
17:48:35 <ehird_> it's [] in the list monad ;)
17:48:45 <ais523> saving the context does not alter the stack, so va_end is still necessary!
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:40 <vixey> (>>=) = flip concatMap -- !!
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: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:52:16 <ais523> well, apart from cut, which is really anti-Prolog
17:52:26 <vixey> cut is very Prolog
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:55 <vixey> I definitely agree
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: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:27 <oklopol> (-> (@ n [$any [1 2 3]]) n)
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: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: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: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: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: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: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: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: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: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:19 <SimonRC> great, certainly, but n ot"hillarious"
21:06:41 -!- Tritonio_ has joined.
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:16:27 <wildhalcyon> I've been reading about "pure" object-oriented programming
21:17:06 <vixey> my favorite text on object orientation is AMOP
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: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: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: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: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:23:40 <wildhalcyon> SimonRC - there was an esolang proposed once in which operations were sex acts
21:23:42 -!- ais523 has joined.
21:24:09 <SimonRC> ooh, didn't encounter that one
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:37 <oklopol> well si don't like waiting.
21:26:45 <oklopol> so no, it's not actually that fun
21:27:57 <SimonRC> huh, an app can crash Vista?
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:25 <SimonRC> it should not be possible damnit
21:31:49 <oklopol> ais523: someone pasted it here
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:47 <vixey> when you said "my J interp" you meant the one I'm using :P
21:32:58 <oklopol> well, it doesn't seem too hard, J isn't all that extendable
21:33:14 <oklopol> vixey: i realized one might think i meant i'd coded them
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:39:34 <oklopol> before you know it, i'm also talking haskell gibberish and making pun out of nowhere.
21:40:42 <oerjan> as long as you don't vaguely recall talking gibberish about haskell puns
21:42:13 <oklopol> my memory is a bit vague here.
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:59 <ais523> oerjan: I'm making the topic portalbe
21:44:17 <ais523> Of course, it requires your interp to be case-sensitive
21:45:20 <ais523> sorry, I accidentally wrote the wrong stropping style first time
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: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: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: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:59 <oklopol> i should have oklotalk-- by wednesday
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: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:57 <vixey> so I'm just guessing I know what you mean
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> (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: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:55:21 <oklopol> i guess i could make a hybrid of the old and the new
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:46 <vixey> (which I have no idea how to implement)
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:52 <oklopol> not that i've ever done anything with lazyness, perhaps i should
21:58:19 <GregorR> http://www.codu.org/jsmips/test.html // can anybody say JSMIPS FIBONACCI?
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
22:00:06 <GregorR> Not sure what you mean by "that compileration you did some months ago" :P
22:00:43 <oklopol> length([_|xs])=1+length(xs). %% not sure about this (how could this generate lists of a given length?)
22:00:51 <vixey> yes it can I tested it
22:00:57 <vixey> you would be able to go
22:01:09 <vixey> and it would result in ()
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:38 <vixey> they are new variables
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: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 -!- 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: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:10:51 <SimonRC> is MIPS a simple architecture?
22:12:38 <GregorR> MIPS I has about 60 operations.
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:14:10 <GregorR> http://www.codu.org/jsmips/patches/
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: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: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: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: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: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:20:00 <ais523> but presumably that isn't identical to JS-mips
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:58 <GregorR> I did - wanted Windows NT 3 on MIPS.
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:27:02 <ehird> GregorR: Almost done with the prog
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:49 <vixey> it's python terminology right?
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: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: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: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: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: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: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: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:45:47 <ais523> oklopol: even oerjan's crazy HQ9+ extension?
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:24 <oklopol> meaning you could do it so that it's always tc
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: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: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: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: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.
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: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:12:36 <oklopol> so basically, the semantics require the runtime environment to detect recursion and copy namespaces.
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: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:30 <ehird> GregorR: Wanna see!
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: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: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: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:05 <ehird> Bringing seabot in here wasn't the best idea
00:39:07 <ehird> It uses ! as a prefix..
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:29 -!- seabot has quit (Remote closed the connection).
00:39:35 -!- seabot has joined.
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 <seabot> Reloaded the help plugin.
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:09 <seabot> EgoBot's karma lowered to -1.
00:41:09 -!- calamari has joined.
00:41:21 <EgoBot> seabot's karma lowered to -∞. Yeah. That's right, bitch.
00:41:24 <ehird> !cdecl lame EgoBot
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: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: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:44:23 <ehird> 'sea'bot shows its origins: a bot for ##free-c
00:44:29 <ehird> (which is arguably an esolang)
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: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:54 <EgoBot> Error [line 1]: missing or invalid command
00:50:00 <ais523> calamari: not if you're Ben Olmstead
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: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: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: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: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: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: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: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:19 <ehird> that means 'newline and increase indentation'
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:41 <ehird> if foo: { if bar: { print "hi" } else: { print "bye" } } else: { print "wtf"; 2+2 }
01:08:51 <ehird> but it is clever, so it doesn't break dict syntax or strings
01:09:02 <ehird> oklopol: because {} can be dictionary syntax
01:09:03 <oklopol> ":" always means indentation
01:09:21 <ehird> + its easier to parse this way
01:13:00 <GregorR> World's most obscure insult: "I'm sure you've read the manual page on checking filesystems."
01:13:14 <ehird> oklopol: i'll show you the function
01:13:18 <ehird> oklopol: but it's REALLY REALLY UGLY
01:13:29 <ehird> oklopol: http://rafb.net/p/GoqPxY60.txt
01:13:46 <oklopol> my oklotalk-- parser is shorter :-)
01:13:54 <ehird> make_1liner(string)
01:14:03 <ehird> python-oneliner-thingy in, python code out
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:44 <ehird> recursive would just be manual iterative in this case
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:47 <ehird> should declarations persist across @pythons?
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:33 <ehird> oklopol: should the bindings be per-user or for everyone?
01:20:54 <oklopol> you could do something fun like have _XXX be for personal use
01:21:02 <oklopol> you'd need to parse the code
01:21:25 <ehird> oklopol: 'my' (from perl)
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:19 <ehird> something like that
01:22:25 <ehird> probably more like:
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:14 <ehird> weird_func = _.oklopol.weird_func
01:23:36 <Sgeo> We're having a public Python bot and we can store variables there under our name?
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: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 <seabot> UnpickleableError: Cannot pickle <type 'DB'> objects
01:33:07 <seabot> Reloaded the python plugin.
01:33:14 <ehird> @python print 'hi'
01:33:14 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
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:33 <seabot> AttributeError: 'dict' object has no attribute 'close'
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: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: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 <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: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 <seabot> NameError: global name 'special' is not defined
01:36:02 <seabot> Reloaded the python plugin.
01:36:07 <ehird> vixey: justify that
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:51 <ehird> your editor must be horrible
01:37:15 <vixey> I've used lots of editors ...
01:37:55 <seabot> Reloaded the python plugin.
01:38:19 <seabot> Reloaded the python plugin.
01:38:51 <ehird> @python if 1: { 2 }
01:38:55 <ehird> @python if 1: { 2 } else: { 3 }
01:38:55 <seabot> SyntaxError: invalid syntax (<irc>, line 3)
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 <seabot> Reloaded the python plugin.
01:40:40 <ehird> @python if 1: { 2 } else: { 3 }
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 <seabot> SyntaxError: invalid syntax (python.py, line 82)
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 <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 <seabot> Reloaded the python plugin.
01:44:30 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:46:09 <seabot> Reloaded the python plugin.
01:46:16 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:46:20 <ehird> @python if 0: { print 'hello world'; 2+2 } else: { 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:22 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:48:29 <ehird> @python print 'a'*500
01:48:47 -!- seabot has quit (Remote closed the connection).
01:48:53 -!- seabot has joined.
01:48:54 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:48:56 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:00 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:04 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:08 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:50:53 -!- seabot has quit (Remote closed the connection).
01:50:59 -!- seabot has joined.
01:51:02 -!- seabot has quit (Remote closed the connection).
01:51:23 -!- seabot has joined.
01:51:25 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:51:55 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:52:00 -!- seabot has quit (Remote closed the connection).
01:52:07 -!- seabot has joined.
01:52:09 <ehird> Slereah: sorry, its debug time
01:52:11 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:52:30 -!- seabot has quit (Remote closed the connection).
01:52:35 -!- seabot has joined.
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:28 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:53:39 -!- seabot has quit (Remote closed the connection).
01:53:52 -!- seabot has joined.
01:53:55 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
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:42 <ehird> Sgeo: It's per user.
01:54:45 <Sgeo> python import sys
01:54:48 <seabot> Help on built-in module sys:
01:54:48 -!- seabot has quit (Excess Flood).
01:54:52 <ehird> need to add a delay
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: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: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: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: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: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: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: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:08 <ehird> Sgeo: why the fsck are they using a public bot to evaluate 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: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 <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: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:13 <Sgeo> bye wildhalcyon
02:01:35 -!- wildhalcyon has left (?).
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:29 <seabot> Reloaded the python plugin.
02:03:32 <ehird> @python import time; while True: { print 'ping'; time.sleep(3) }
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:04:09 <ehird> Do you realise how annoying that is?
02:04:10 -!- seabot has joined.
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 <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:38 <seabot> Reloaded the python plugin.
02:05:40 <seabot> TypeError: can't pickle function objects
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:07:06 <seabot> Reloaded the python plugin.
02:07:13 <Sgeo> oklopol, what language?
02:07:17 <oklopol> fun, i've never done a language with extendable types before
02:07:25 <Sgeo> @python import sys; sys.exit
02:07:50 <Sgeo> @python sys.version
02:08:18 <oklopol> ehird: once you're done, do realize you are supposed to be the one vaguely interested.
02:08:48 <ehird> I am going to look
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 <seabot> Reloaded the python plugin.
02:09:22 <seabot> <seabot.plugins.python.Users object at 0x11da5d0>
02:09:39 <seabot> Reloaded the python plugin.
02:09:46 <oklopol> or i could just keep on working
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:31 <ehird> Sgeo: Please shut up when I just found a bug and am trying to fixi t
02:11:18 <oklopol> @python print "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:12:07 <Sgeo> ehird, how are you planning on preventing floods like that?
02:12:36 <ehird> Sgeo: Making output go sloooow.
02:12:40 <seabot> Reloaded the python plugin.
02:12:47 <ehird> Hmm, thanks oklopol
02:13:08 <Sgeo> @python str("Hi")
02:13:25 <seabot> Reloaded the python plugin.
02:13:28 <ehird> Sgeo: Totally bizzare
02:13:40 <Sgeo> @python str("Hi")
02:13:52 <seabot> Reloaded the python plugin.
02:13:54 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x11e7e10>}
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 <seabot> Reloaded the python plugin.
02:14:37 <seabot> {'ehird': <Big Brother>}
02:14:46 <seabot> Reloaded the python plugin.
02:14:47 <seabot> {'ehird': <big brother>}
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:15:03 <Sgeo> @python users['ehird']
02:15:03 <seabot> NameError: global name 'getitem' is not defined
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:30 <seabot> {'Sgeo': <big brother>}
02:15:33 <ehird> Sgeo: what do you think 'oshi-' means
02:16:29 <seabot> Reloaded the python plugin.
02:16:30 <seabot> Reloaded the python plugin.
02:16:33 <seabot> NameError: global name 'getitem' is not defined
02:17:17 <seabot> Reloaded the python plugin.
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:47 <ehird> Stupid RestrictedPython
02:18:36 <seabot> Reloaded the python plugin.
02:18:38 <seabot> {'Sgeo': <seabot.plugins.python.MagicGlobals object at 0x11f8c30>}
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 <seabot> Reloaded the python plugin.
02:19:01 <Sgeo> @python users['Sgeo']['test']
02:19:03 <seabot> {'ehird': <a big brother>, 'Sgeo': <a big brother>}
02:19:05 <ehird> @python users.Sgeo
02:19:05 <seabot> AttributeError: 'dict' object has no attribute 'Sgeo'
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 <seabot> Reloaded the python plugin.
02:20:00 <ehird> @python users.Sgeo
02:20:00 <seabot> RuntimeError: maximum recursion depth exceeded
02:20:05 <seabot> {'ehird': <a big brother>}
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 <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 <seabot> Reloaded the python plugin.
02:20:29 <ehird> @python users.ehird
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: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 <seabot> {'ehird': <a big brother>}
02:21:51 <ehird> Sgeo: this IS abusable -- you can modify the users dict how you please
02:21:58 <ehird> so you have to do all this:
02:21:58 <Sgeo> @python users['Sgeo']
02:22:18 <ehird> @python users.ehird._MagicGlobals__data
02:22:33 <seabot> {'ehird': <a big brother>, 'Sgeo': <a big brother>}
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 <seabot> <function fact at 0x11d2530>
02:23:19 <seabot> NameError: global name 'fact' is not defined
02:23:24 <seabot> <function fact at 0x11d2530>
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:52 <ehird> its erroring on the recursive fact
02:23:56 <ehird> @python users['ehird']
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:27 <ehird> i dunno why this is happening
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:10 <ehird> @python def void(): { return void }
02:25:13 <seabot> NameError: global name 'void' is not defined
02:25:16 <seabot> <function void at 0x7b28b0>
02:25:33 <ehird> @python print repr(void.func_globals)[:20]
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:53 <Sgeo> @python void()
02:26:54 <seabot> <function void at 0x7ba1f0>
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 <seabot> Reloaded the python plugin.
02:27:57 <ehird> @python users.Sgeo.void
02:28:03 <ehird> I keep wiping yours
02:28:09 <ehird> @python users.ehird
02:28:21 -!- Sgeo has changed nick to `Sgeo.
02:28:27 <`Sgeo> @python print "Hi"
02:28:32 <seabot> {'ehird': <a big brother>, '`Sgeo': <a big brother>}
02:28:35 <ehird> @python users['`Sgeo']
02:28:51 <`Sgeo> @python getattr(users, "`Sgeo")
02:28:59 -!- `Sgeo has changed nick to Sgeo.
02:30:11 <ehird> oklopol: Feed in your cellular automata thing
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: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:52 <Sgeo> @python import sys; sys
02:30:58 <ehird> Sgeo: yes yes it's buggy
02:31:04 <ehird> oklopol: here's the general rule:
02:31:07 <Sgeo> @python str("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:31 <ehird> but of course the newline is bumped up to the right indent
02:31:39 <ehird> oklopol: how about that famous rule one
02:31:47 <oklopol> also i'm gonna write it in real python first, because i'm scared i might fail :<
02:32:22 <Sgeo> what's rule one?
02:32:45 <ehird> the turing complete one
02:33:06 <Sgeo> what are we talking about?
02:33:14 <oklopol> 110 + a few identical ones
02:34:49 <oklopol> 110 grows in the wrong direction, i'll reverse it
02:36:30 <ehird> oklopol: http://codespeak.net/pypy/dist/pypy/doc/sandbox.html
02:36:35 <ehird> because pypy is cool
02:38:56 <Sgeo> interacting through stdio? Why does that sound familiar.., </annoyingness>
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:44:54 <ehird> oklopol: can't wait
02:46:33 <oklopol> hmph, should be ready already
02:49:10 <oklopol> asd someone show me some of it
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: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: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: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:39 <ehird> oklopol: it should work? try it :D
02:59:35 <ehird> i need to go soon :(
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 <oklopol> this is the function to get the next row
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:54 <ehird> i don't have much time :p
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: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:52 <seabot> NameError: global name 'to_bits' is not defined
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:08:28 <ehird> oklopol: i hope its just one function
03:08:30 <ehird> otherwise itll break
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:19 <ehird> oklopol: is that it?
03:11:28 <ehird> if that's right, quick test it
03:11:30 <ehird> i have about 60 seconds
03:11:52 <ehird> @python print next_row([True])
03:11:52 <seabot> NameError: name 'next_row' is not defined
03:11:59 <ehird> @python print users.oklopol.next_row([True])
03:11:59 <seabot> NameError: global name 'reverse' is not defined
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:51 <ehird> oklopol: feel free to try and fix it in pure python
03:12:53 <ehird> ill run it tomorrow
03:12:59 -!- seabot has quit (Remote closed the connection).
03:13:06 -!- ehird has quit ("This computer has gone to sleep").
03:13:10 <oklopol> it does already work in pure python.
03:33:52 -!- vixey has joined.
03:42:51 <vixey> no rest for the wicked
03:43:22 -!- oklofok has joined.
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:48 <pikhq> Being quite happy.
04:51:37 -!- Sgeo_ has joined.
04:52:34 <RodgerTheGreat> I'm grading quizzes and chipping away at my respect for humanity
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:55:37 <GregorR> Can you give us an example?
04:55:59 -!- Sgeo__ has joined.
04:56:15 <GregorR> Sgeo{_{_,},}: Stop growing underscores :p
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:56 <Sgeo__> Why does http://www.popsci.com/scitech/article/2008-02/anonymity-experiment keep causing my computer to freeze?
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?
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:57 <Sgeo__> No major, I'm non-matric
05:04:23 <Sgeo__> My college offers "Computer Information Systems", they shut down CS
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: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:59 <GregorR> Let me try to reduce the negatives there:
05:11:00 <Sgeo__> RodgerTheGreat, s/aren't/are/?
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: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: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: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: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: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:51:55 <Slereah> Jesus Muhammed Buddah Xenu Yahweh
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:53:18 <GregorR> There's a family name in my family that hasn't been used for, oh, ten generations or so.
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: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:59:43 <RodgerTheGreat> freeze some sperm ahead of time incase you change your mind. Best of both worlds!
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: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:04:13 <GregorR> Hahahaha, another T-shirt worthy phrase from RodgerTheGreat X-D
06:04:27 <Slereah> What if you fuck your child?
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: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:12:16 <Slereah> LOVE YOUR CHILD LIKE YOU LOVE YOUR PENIS
06:12:24 <Slereah> Of course, it could be misinterpreted.
06:13:13 <pikhq> DO NOT PUT THE BABY IN THE MAN-PENIS RELATIONSHIP.
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:41 <GregorR> Are we discussing methods of infanticide?
06:15:42 <Slereah> and if you accidentaly drop him on the floor, we understand.
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: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:20:11 <pikhq> I can do much better than that.
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:22:25 <pikhq> Slereah: One word: knife.
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: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: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: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: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:25:52 <pikhq> DO NOT PUT THE BABY IN THE DISTOPIA.
06:26:42 <Sgeo__> DO NOT PUT THE BABY ON 4CHAN
06:27:31 <RodgerTheGreat> this is a really nifty painting: http://img.waffleimages.com/d89ca2727870ca4377777eab22885e7c611992dd/daim2.jpg
06:42:51 -!- Sgeo__ has quit (Remote closed the connection).
07:04:18 -!- GreaseMonkey has joined.
07:15:17 -!- RodgerTheGreat has quit.
07:45:51 -!- jix has joined.
07:48:40 <GregorR> RISCy men do it with their ARMs.
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: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: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: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: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: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:30:49 -!- seabot has quit (Excess Flood).
15:30:58 <ehird> Well I figured out how to abuse it
15:36:45 <SimonRC> I didn't see it say a word
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:51 <ehird> I was going to tell him something!
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: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: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:49 <oklopol> you see, i actually wrote the automaton to especially test your multiple line input
17:32:13 <oklopol> you see, unlike you, i haven't had a day between this moment and our conversation
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: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:18 <oklopol> wasn't my other version in ruby?
17:33:39 -!- seabot has joined.
17:35:08 <ehird> oklopol: there ya go
17:35:19 -!- RodgerTheGreat has joined.
17:39:00 <ehird> oklopol: #python be hatin' on me for my braces
17:40:55 <oklopol> http://www.vjn.fi/pb/p611563426.txt
17:41:43 <oklopol> sorry, koed has become my official way to type that because it's so nice to write
17:42:15 -!- Sgeo has joined.
17:42:55 <oklopol> i didn't really test it :D
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:55 <ehird> "if x:{True}else:{while Foo:{print 'hi';2}}"
17:43:58 <ehird> that's what it gave me
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: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 <oklopol> which isn't nice for us who have a fear of importing modules.
17:50:26 <ehird> And you can make MULTIPLE CALLSTACKS
17:50:34 <ehird> CallStack.current()
17:50:36 <oklopol> well python has a viewable callstack
17:50:40 <ehird> and then on a CallStack()
17:50:50 <ehird> so you can make your own magical callstack then switch to it!
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: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: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:58 <ehird> & treating it as a list would be useless
17:53:02 <ehird> oklopol: the better way
17:53:06 <ehird> is to have an interface-thingy
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:03 <ehird> so CallStack shouldn't be a list
17:54:05 <ehird> it shoudl just be indexable
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:54 <ehird> will give you my syntax
17:55:04 <ehird> you gotta admit, SOUP IS AWESOME
17:55:10 <ehird> now I want it too!!
17:55:13 <ehird> let's implement it :q
17:55:39 <ehird> (def hello () (print "hi"))
17:55:59 <ehird> oklopol: Soup should be implemented in Python, amirite
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:59:03 <ehird> oklopol: name something else cool that python has and soup doesn'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:20 <seabot> NameError: name 'do' is not defined
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:35 <seabot> {'ehird': <a big brother>, 'oklopol': <a big brother>}
18:02:37 <ehird> @python users.oklopol
18:02:40 <ehird> @python users.oklopol['do']
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: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:30 <ehird> oklopol: now what about SOUP :D
18:04:48 <ehird> AnMaster: i added that so it can be used on one line
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: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:02 <seabot> SyntaxError: invalid syntax (<irc>, line 15)
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: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: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: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:12 <ehird> @python while True: { print "HELLO WORLD" }
18:07:13 -!- seabot has quit (Excess Flood).
18:07:22 -!- seabot has joined.
18:07:44 <oklopol> well, in that case it wasn't exactly my fault, so i guess i can be at peace
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:45 <ehird> @python def l0(): { PRINT("HELLO WORLD"); GOTO.l0 }
18:08:52 <seabot> NameError: global name 'PRINT' is not defined
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: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> Copyright (c) 2000 BeOpen.com.
18:09:30 -!- seabot has quit (Excess Flood).
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 <ehird> seabot is going to be rewritten
18:09:58 <ehird> oklopol: IN SOUP RIGHT?
18:10:16 <ehird> it means Super Python
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:11:25 <oklopol> now, about features... we both agree it should be *awesome*, right?
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:53 <ehird> http://rafb.net/p/j7c2ZA16.html
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: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: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:15 <ehird> MySubClass.collect()
18:19:41 <ehird> oklopol: awesome? :D
18:20:04 <oklopol> everything needs to be changeable at runtime
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:57 <ehird> oklopol: well, 'import' won't be as clever as Python's
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:37 <ehird> or... just make all imports appear at the beginning of the file
18:21:43 <ehird> and i've never used one elsewhere
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: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:27 <oklopol> SHOP ME GO NOW REALLY GO GO ->
18:35:56 <oklopol> i need channel-specific caps lock
18:38:00 <oklopol> after that, prolly oklotalk time.... :|
18:38:16 <oklopol> so many features, so little time
18:38:25 <ehird> start prototyping oklotalk
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:40:05 <ehird> oklopol: YOU CAN MULTITHREAD
18:41:33 <ehird> oklopol: but Soup is too awesome not to SOUPIFY
18:43:07 <ehird> I'll just prod you questions about it, and thou shalt have no choice! mwahaha
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: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: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: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:37 <oerjan> a long time ago in a ... wait, wrong webcomic
20:22:22 <Sgeo> Oh, I forgot to check xkcd today
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: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: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:48:26 -!- sebbu has quit (No route to host).
21:03:36 -!- sebbu has joined.
21:11:53 -!- wildhalcyon has joined.
21:19:54 <GregorR> Come on, no phrases start with "winder" :P
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: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:24 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
21:26:54 -!- Judofyr has joined.
21:27:27 <ehird> SimonRC: You may stop flooding now
21:28:39 <SimonRC> it is intersting to see which ones are pronounced differently in America
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: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: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:54:32 <SimonRC> http://www.youtube.com/watch?v=6cAs1YBELmA
22:55:06 <SimonRC> do American houses really have the flag hanging on the wall indoors?
22:55:36 <wildhalcyon> depends on how patriotic/neurotic/insane the owner is
22:57:03 <SimonRC> This guy is so blatently pre-uni
22:57:28 <SimonRC> in his lyrics rather than just in appearance
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:35 <ehird> (random note on the scope-function-dictionary thing: you could extend that by using {...} as dictionary syntax)
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: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:59 <ehird> ChrisCunningham, Tom Duff... esolangs is famous :)
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: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:39 <ehird> I meant Ward Cunningham
23:26:16 <ehird> I swore I saw Ward CUnningham on the wiki as a user
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:17 <ehird> lament: that's great
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:33:13 <ehird> but my screen is very good
23:35:38 * SimonRC praises Sun for the system of transistion from raw to parameterised types.
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: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: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: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 <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:48 <SimonRC> there are several dimensions of functionality that we will probably never need again
23:41:51 -!- oerjan has quit ("Good night").
23:42:28 <lament> anything which makes programming easier is good.
23:42:32 <SimonRC> wildhalcyon: better than C++
23:42:53 <lament> SimonRC: that's like saying, the spanish inquisition is better than the nazis.
23:43:18 <SimonRC> wildhalcyon: ok, what advantage does C++ have?
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: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: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:19 <wildhalcyon> SimonRC, I interpreted "type safety" to mean static typing.
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: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: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: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 <lament> RodgerTheGreat: does tab-completion on IRC rot your brain?
23:54:51 <lament> wildhalcyon: type R and press Tab.
23:55:16 <lament> wildhalcyon: but beware - it will rot your brain.
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: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.
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:54 <SimonRC> but it is still too much to wear when scouting about
00:04:23 <SimonRC> enought with the bad analogies
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: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:39:46 <GregorR-L> Yeah, that should clearly be $0, $1, $2 and $r :P
08:40:06 <GregorR-L> It also occurs to me that there's no reason for 'sub' not to take registers.
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: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: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: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:47:39 <oklopol> now be sure to put easter eggs for certain choices of _'s
09:02:18 <GregorR-L> [obvious] $2 should be the stack pointer.
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:56 <ehird> Tom Duff can unroll a loop WITH HIS MIND.
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:57:04 <Slereah> http://membres.lycos.fr/bewulf/Divers2/Set.jpg
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:13 <Slereah> But I personally give you my permission.
17:58:31 <ehird> http://elliotthird.org/ looks pretty now!
17:58:48 <ehird> i'll credit you in the comments
17:59:15 <Slereah> http://images.encyclopediadramatica.com/images/8/89/Sandwich-orig.png
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: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: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:09:15 <ehird> http://rule35.paheal.net/rule35/src/12071557881.jpg
18:09:30 <ehird> but i must go bleach my brain now
18:09:31 <Slereah> ehird : That's the pix I posted
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: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: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: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: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:19:14 <Slereah> Well, it's more of a wall than a ceiling.
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:24 <Slereah> I wonder if there's /34/ of Lovelace.
18:20:34 <Slereah> After all, she is the hottest nerd in history.
18:20:59 <SimonRC> I think Samantha Carter beats her for a start
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: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: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: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: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:43 <ehird> Slereah: No, it's just silly.
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: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: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: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:23 <ehird> ehird_: who are you?!
19:13:12 <SimonRC> ehird: well, it is on your machine, whoever it is
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: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: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: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:45 <Slereah> The _ is actually a goatee.
19:25:18 -!- oerjan has joined.
19:25:35 <lament> ehird: routing the pings through microsoft :)
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:39:02 <oerjan> oh wait that's not ski
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: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:49 <Slereah> But how to stop a recursion without v
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:45:32 <Slereah> So, did you do sum book lurnin Sgeo[College]?
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:49:31 <bsmntbombdood> http://hardware.slashdot.org/article.pl?sid=08/04/07/210205
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: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
21:01:07 <Slereah> http://images.encyclopediadramatica.com/images/thumb/8/8d/Gruesome_small.gif/170px-Gruesome_small.gif
21:11:46 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
21:30:16 <lament> can you simulate a box of apples and a piece of string with CSS?
21:34:21 <ehird> AnMaster: of course it isn't
21:34:28 <ehird> you can't loop, include, anything
21:34:33 <ehird> selector { key: prop; ... }
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:50:02 <ehird> Slereah: thing that dun make webpaeg pretti
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:20 <ehird> this format will be hard to parse
23:06:35 <ehird> i hate humanized syntaxes
00:06:05 -!- Corun has quit (Connection timed out).
00:16:45 -!- jix has quit ("CommandQ").
00:46:00 <ehird> i reinvent monadic parser combinators on a regular basis
00:51:08 <lament> and get kicked out of #python
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: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.
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: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: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:52:23 <AnMaster> there is nothing for complex floating point is there?
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: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: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:29 <Deewiant> well sure, translations between polar and cartesian form
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
12:12:33 -!- Corun has quit ("This computer has gone to sleep").
12:19:51 <AnMaster> ok, was just looking at man complex.h for anything that would be hard to do
12:20:07 <AnMaster> double complex cproj(double complex);
12:20:22 <AnMaster> cproj, cprojf, cprojl - project into Riemann Sphere
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:56 <Deewiant> it's identity unless you have a complex infinity, which becomes +infinity
12:23:27 -!- ihope has joined.
12:34:59 <AnMaster> Deewiant, what is the IP.DORMANT mode thing?
12:35:46 <Deewiant> sounds like TRDS or that other one (IIPC?)
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:35 <AnMaster> D ( -- ) Go Dormant until stack is manipulated by another ip
12:36:45 <AnMaster> still doesn't say what dormant means
12:37:22 <AnMaster> Deewiant, what main function?+
12:37:38 <Deewiant> int main(char[][] args) and all that
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: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:40:05 <AnMaster> state in this case means position?
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: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: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: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: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:46:09 <Deewiant> and if the spec contradicts the funge-98 spec then it's all crap, like FING :-P
12:47:09 <AnMaster> and well "3DSP" whatever it is, defines C as the Cross porduct
12:47:55 <AnMaster> oh I see you don't implement 3DSP
12:56:06 <AnMaster> static assert (is(typeof(x) == typeof(y)));
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: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:06:00 <AnMaster> in HRTI, is the ctor thing executed when HRTI is first loaded?
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:32 <AnMaster> if (resolution == TimeSpan.zero) {
13:15:37 <AnMaster> Deewiant, this is confusing: auto timeMark = Time.min;
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: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: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:52 <AnMaster> oh and I'm not sure it handles leap seconds btw
13:20:15 <Deewiant> how would leap seconds be problematic
13:20:28 <Deewiant> the time span should be the same
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:53 <AnMaster> Deewiant, anyway mycology fails at leap seconds I suspect?
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: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: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: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:29:08 <Deewiant> in fact, clearing that at unload might be a good idea
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:33:11 <AnMaster> ie, I don't get how it can work
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:36:09 <AnMaster> Deewiant, what result does that give for you?
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:39:08 <AnMaster> Deewiant, it says "UNDEF: G gives clock granularity as 2 microseconds" every time here
13:40:13 <AnMaster> Deewiant, "UNDEF: G gives clock granularity as 31250 microseconds" from your table heh
13:40:36 <AnMaster> hm is it better on linux for you
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:47:07 <AnMaster> oneSecond = TimeSpan.seconds(1).ticks,
13:47:08 <AnMaster> oneMicro = TimeSpan.micros (1).ticks;
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: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: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:45 <AnMaster> gettimeofday does micro seconds
13:58:55 <AnMaster> Deewiant, does the school computer have HPET?
13:59:26 <Deewiant> no such thing as /proc/timer_list
14:00:09 <Deewiant> nope, did /proc/tim<tab> and nothing
14:01:09 <AnMaster> guess it is just linux being so much better ;)
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:32 <AnMaster> tsc is time stamp counter iirc
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: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: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: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:23 <Deewiant> TSC isn't viable on multicore either
14:06:22 <fizzie> dmesg says: Clocksource tsc unstable (delta = -124059314 ns)
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: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:11:16 <AnMaster> #define __SLONGWORD_TYPE long int
14:11:17 <AnMaster> typedef __SUSECONDS_T_TYPE __suseconds_t;
14:11:24 <AnMaster> those two lines in different headers
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: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:23:42 <AnMaster> hm this fingerprint generation script is getting quite advanced
14:23:46 <AnMaster> http://rafb.net/p/XCA7fB82.html
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: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: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: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:10:09 <AnMaster> what is that supposed to test?
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: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: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:56 -!- Corun has joined.
15:14:31 <AnMaster> 95725 is the best of ccbi so far
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:12 <Deewiant> it helps that DMD doesn't inline functions containing loops :-P
15:18:33 <AnMaster> recursive sure it can't inline
15:18:46 <AnMaster> but ones containing loops should be perfectly possible to inline
15:19:46 <Deewiant> which also means that all foreaches are actually function calls
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: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:45 <AnMaster> top is what you want to look at
15:27:57 <AnMaster> size will be the max size it reached
15:28:20 <AnMaster> Deewiant, in chunks of 16 or 32 or such iirc
15:29:27 <AnMaster> Deewiant, so considering differing environment variables and such it seems like the size is reasonable
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:32:06 <Deewiant> what's so hard about "../cfunge"? :-P
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:33:05 <AnMaster> it also only show a whitelist of env variable
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: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: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:40:58 -!- Corun has quit ("This computer has gone to sleep").
15:48:55 -!- oklopol has joined.
15:51:47 <AnMaster> <Deewiant> eh? it's no slower than pushing anything else
15:52:31 <ehird> AnMaster: he could but i don't think he cares much about how fast ccbi is
15:52:54 <AnMaster> not you as in a specific person
15:54:02 <vixey> I want oklotalk :p
15:58:05 <ehird> oklotalk is cool, yes
15:58:11 <ehird> and, oklopol, it must be ready TODAY
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: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:36 <ehird> (different machine y'see)
16:00:08 <ehird> oklopol: yeah, c'mon
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: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: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: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:21 <ehird> i am not fluent in python bytecode
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: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:22 <vixey> hey Ifound something neat
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: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: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: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: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: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: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: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:54 <ehird> AnMaster: depends on your OS.
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: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:54 <vixey> I know more than you about it..
16:15:05 <ehird> anyhoo, oklopol ... let's talk oklotalk!
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: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: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:55 <oklopol> i wasn't calling him clueless
16:18:07 <ehird> oklopol: if he wants to leave over that, let him
16:18:53 <oklopol> mwahaha ":: " prefix :PPPPPP
16:19:22 <oklopol> why do i make my prefixes have the space
16:19:27 <ehird> oklopol: i have a better prefix
16:19:39 <ehird> make your prefix two spaces
16:20:16 <oklopol> i have no idea how to disable *REMOVING SPACES OFF THE BEGINNING OF A MESSAGE*
16:20:31 <oklopol> from incoming and outgoing messages
16:20:35 <AnMaster> oklopol, my client doesn't remove them
16:20:42 <ehird> say something with two spaces
16:20:44 <ehird> i bet it appears fine
16:20:57 <AnMaster> oklopol, I know irssi, xchat and erc keep spaces
16:21:11 <ehird> but two spaces is such a good prefix
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 <ehird> he doesn't have any reason to, afaik
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:23 <AnMaster> really, there are no worse client
16:22:44 <ehird> AnMaster: you are interrogating oklopol for using an irc client
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: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: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: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:29 <ehird> i thought you were making oklotalk
16:24:33 <ehird> just oklotalk--?! :(
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:37 <ehird> i just wanna try it
16:26:00 <oklopol> should store state and everything, automatically
16:27:42 <ehird> oklopol: you're slow
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: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:54 <ehird> aha, he is in #AutisticParadise
16:29:02 <ehird> still gonna report him!
16:29:06 <ehird> 'cause i'm an ass, you see
16:32:56 -!- otobot has joined.
16:32:56 -!- otobot has quit (Remote closed the connection).
16:34:11 -!- vixey has joined.
16:34:27 -!- otobot has joined.
16:34:30 -!- otobot has quit (Remote closed the connection).
16:34:34 <ehird> haha, i broke otobot :D
16:34:48 <oklopol> ehird: think lisp in syntax.
16:35:03 <ehird> oklopol: think 'don't make it break on invalid code' :p
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:30 <oklopol> i'm doing raw sockets, naturally ;)
16:36:48 <oklopol> sssry, irc has so much going on
16:36:50 -!- otobot has joined.
16:37:05 <ehird> did you forget to print out
16:37:15 <ehird> oklopol: suggestion
16:37:19 <ehird> make it echo everything form the irc sever
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 <ehird> it means you effed up stuff
16:37:33 <oklopol> result=result.split("\n")[0]
16:37:35 <oklopol> s.send("PRIVMSG "+line[2]+" :"+result[:200]+"\r\n")
16:37:39 <oklopol> s.send("PRIVMSG "+line[2]+" :An error: "+str(e))
16:37:52 -!- Corun has joined.
16:37:55 <ehird> [3] is always of length 1
16:37:58 <oklopol> line has everything split by " "
16:38:07 <ehird> oklopol: it goes like this
16:38:12 <ehird> :host PRIVMSG channel :foo
16:38:26 <oklopol> so line[3]==":::" should correct... hmm
16:38:29 <ehird> on the exception case
16:38:37 <ehird> and print out everything from the irc server
16:38:53 <AnMaster> oklopol, print out data to and from server on your terminal
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:49 -!- otobot has joined.
16:39:50 <otobot> An error: Int instance has no attribute 'split'
16:39:58 <ehird> you need to repr() it
16:39:58 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
16:40:07 <ehird> LET ME DO THE EXAMPLE :P
16:40:27 -!- otobot has joined.
16:40:49 <otobot> An error: integer division or modulo by zero
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:41:17 <vixey> :: (+ (+ (+ 0 1) 1) 1)
16:41:18 <ehird> :: (+ "DIE DIE DIE" "oklotalk")
16:41:18 <otobot> An error: invalid literal for int() with base 10: 'oklotalk'
16:41:33 <ehird> oklopol: make a func list :(
16:42:01 <ehird> oklopol: evaluating a function should show its source
16:42:25 <ehird> well, it works in function position
16:42:49 <ehird> so functions are looked up differently from variables
16:42:56 <oklopol> (= ...) just happens to be spacial
16:44:03 <ehird> :: (= id (-> x x))
16:44:16 <otobot> An error: 'list' object has no attribute 'clbl'
16:44:27 <otobot> An error: 'list' object has no attribute 'clbl'
16:44:31 <vixey> :: (-> x (-> y x))
16:44:34 <ehird> oklopol: what IS this
16:44:36 <oklopol> ehird: (-> ... ...) isn't a function.
16:44:42 <otobot> An error: invalid literal for int() with base 10: 'abc'
16:44:48 <ehird> what CAN it do, oklopol
16:44:55 <vixey> :: (-> x (-> y y))
16:45:00 <oklopol> well i have the rational number quicksort
16:45:10 <oklopol> vixey: that makes no sense
16:45:17 <oklopol> that's why it's not "working"
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:45 <oklopol> http://www.vjn.fi/pb/p535315136.txt
16:45:49 <otobot> An error: Atm instance has no attribute 'call'
16:46:04 <oklopol> http://www.vjn.fi/pb/p612313333.txt <<< not sure these actually work, but that's all that should.
16:46:22 <oklopol> static and dynamic scoping, hf
16:46:32 <vixey> :: {(-> x {(-> y x)})} 2 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:44 <vixey> why did that give 3?
16:47:24 <vixey> :: ({(-> x {(-> y x)})} 2 3)
16:47:26 <oklopol> AnMaster: i haven't doneit
16:47:31 <ehird> oklopol: is oklotalk lazy
16:47:43 <vixey> :: (({(-> x {(-> y x)})} 2) 3)
16:47:44 <AnMaster> :: (= gcd {(-> [a 0] a) (-> [a b] (' b (% a b)))})
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:17 <ehird> :: (= c0 {(-> f {(-> x x)})})
16:48:47 <ehird> :: (= cs {(-> n {(-> f {(-> x (f ((n f) x)))})})})
16:48:53 <vixey> :: (({(-> xxx {(-> y xxx)})} 2) 3)
16:48:54 <oklopol> ehird: please don't hit me, BUT IT DOESN'T HAVE TAIL RECURSION
16:49:16 <ehird> fromchurch n = n (1+) 0
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:49 <vixey> :: (= cons {(-> car {(-> cdr {(-> f ((f car) cdr))})})})
16:49:55 <ehird> am i a qualified oklotalker now, oklopol?
16:50:00 <ehird> i picked up the language soooooo fast
16:50:05 <ehird> :: (c2n (cs (cs c0)))
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:42 <ehird> gonna edit the code in emacs now, simpler
16:51:42 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))})
16:51:51 <vixey> :: (car ((cons 1) 2))
16:51:52 <AnMaster> Deewiant, does ccbi handle iterating over @ in a sane way?
16:52:07 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr cdr)})}))})
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:17 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))})
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: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:40 <oklopol> also pretty easy in python
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:11 <Deewiant> AnMaster: IIRC @ is one of those 'special optimizations' ;-P
16:53:32 <ehird> :: (= plus {(-> m {(-> n {(-> f {(-> x ((m f) ((n f) x)))})})})})
16:53:35 <AnMaster> Deewiant, well I just want to make it sane in this case, avoid valgrind error that is
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 <vixey> :: (car (cdr (cdr ((cons 1) ((cons 2) ((cons 3) 0))) )))
16:54:37 <otobot> An error: maximum recursion depth exceeded in cmp
16:54:44 <ehird> you use PYTHON'S STACK
16:54:47 <ehird> that is TOTALLY lame
16:54:50 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
16:54:56 <oklopol> that's why i don't have tail recursion
16:55:13 <oklopol> i used my own stack first, but... you know, i'm lazy
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:46 <ehird> and {} is printed as nil
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: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:46 <oklopol> oklotalk doesn't really have anything to do with lisps
16:56:53 <ehird> oklopol: plzzor show him
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:17 <ehird> i mean the real quicksort
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:29 <ehird> with loads of symbols
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:50 <ehird> show me the reaeaaaal one
16:58:52 <ehird> that you showed before
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:18 <ehird> it was something like that
16:59:36 <oklopol> that used to be the atom character
16:59:53 <ehird> seriously, just the oklotalk quicksort
16:59:55 <ehird> that you used to show people
17:00:06 <ehird> i will try and find it
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:22 <oklopol> while it should return $f, indeed, doesn't really matter.
17:01:30 <oklopol> ehird: that was cise, perhaps?
17:01:39 <oklopol> cise has quicksort in like 8 characters
17:01:44 <AnMaster> oklopol, how do you do a string?
17:01:57 <vixey> cons up church numerals of course
17:01:58 <AnMaster> and what about puts/printf or similar?
17:02:10 <otobot> An error: invalid literal for int() with base 10: 'not really'
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: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:04:01 -!- otobot has joined.
17:04:06 <AnMaster> oklopol, you forgot PING PONG?
17:04:10 <ehird> so i can't use regexps
17:04:16 <ehird> AnMaster: freenode has no ping timeouts
17:04:24 <AnMaster> ehird, they do TCP timeouts indeed
17:04:27 <AnMaster> :: (+ (outn "what") (outn "not really"))
17:04:52 <ehird> AnMaster: that's not up to them
17:04:54 <ehird> that's just tcp timing out
17:05:06 -!- Judofyr has joined.
17:05:07 <ehird> AnMaster: f = false
17:05:23 <AnMaster> oklopol, otherwise that would be cool
17:05:38 <oklopol> i can add whatevery you want, or you can add yourself, by making (= str {...})
17:05:42 <AnMaster> how comes - can evaluate to false?
17:05:53 <ehird> AnMaster: when the pattern match fails
17:05:59 <oklopol> IT DOESN'T DO ANYTHING, EVER
17:06:21 <ehird> oklopol: did it just print out an empty atom
17:06:36 <ehird> I WANNA COMMAND LIST
17:06:45 <ehird> i think my $ broke it
17:06:46 <ehird> it still wants input
17:06:49 <ehird> to complete the symbol
17:07:05 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
17:07:23 <ehird> is this otobot sex
17:07:26 <ehird> because that sounds painful
17:07:53 <ehird> turing complete parser
17:07:59 <ehird> oklopol: make a language with a turing complete parser
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:09 <vixey> how is this differetn from lisp?
17:09:09 <ehird> and that's not what i mean
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:34 -!- otobot has joined.
17:09:46 <oklopol> ehird: oklotalk actually has state lists, which are basically made for parsing
17:09:55 <ehird> oklopol: can i have a list of commands
17:10:04 <otobot> An error: Application consists of 2 or 3 expressions.
17:10:08 <otobot> An error: Application consists of 2 or 3 expressions.
17:10:15 <oklopol> http://www.vjn.fi/pb/p612313333.txt
17:10:18 <AnMaster> oklopol, how do you do floating points?
17:10:38 <oklopol> you have my rational numbers.
17:10:48 <ehird> oklopol: variadic?
17:10:51 <ehird> can i do variadiiiic
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: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:12:07 <oklopol> perhaps i should add not :D
17:12:29 <oklopol> it calls $t with $not as arg
17:12:38 <ehird> oklopol: hahahahahahahahahahahaha whut
17:12:59 <oklopol> second arg is called if first is an atom.
17:13:07 <ehird> :: ((. outn outn) "hi")
17:13:07 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:13 <oklopol> in oklotalk--, it's actually that simple, i think
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:28 <ehird> :: (= onon (. outn outn))
17:13:31 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:43 <oklopol> i haven't really done anything with strings
17:13:51 <ehird> oklopol: string = list of int
17:14:19 <AnMaster> oklopol, is it turing complete?
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:39 <ehird> AnMaster: you can do the lambda calculus in it
17:14:48 <ehird> \x.E -> {(-> x E)}
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:15:01 <ehird> AnMaster: you suck
17:15:13 <vixey> you don't really want O(n) append on strings
17:15:36 <oklopol> lists don't have O(1) append
17:15:42 <AnMaster> oklopol, what does the (. ) thing do
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:16:02 <oklopol> python does that for me, duh
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: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:26 <oklopol> well, actually you *can't*
17:17:39 <oklopol> strings cannot be splitted in any way.
17:17:44 <oklopol> but that's trivial to add ofc
17:17:55 <oklopol> i should really just do string -> [int] as ehird said
17:18:06 <oklopol> AnMaster: that we said the same thing
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: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:40 <vixey> what's the difference from = and =>?
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:43 <otobot> An error: Application consists of 2 or 3 expressions.
17:21:44 <oklopol> why does . have a different behavior :O
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:18 <oklopol> AnMaster: that's an invalid application
17:22:38 <ehird> [17:21] <otobot> An error: Application consists of 2 or 3 expressions.
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:23:08 <ehird> {(-> [a b] a) (-> foo bar)}
17:23:09 <AnMaster> :: (= ehird {(outn "ehird!")})
17:23:11 <oklopol> ehird: it is not (function arg arg ...)
17:23:16 <otobot> An error: Application consists of 2 or 3 expressions.
17:23:19 <ehird> AnMaster: uh... PATTERN
17:23:20 <oklopol> it is (expression expression{1,2})
17:23:25 <ehird> AnMaster: pattern is (-> PATTERN EXPR)
17:23:35 <ehird> :: (= ehird {(-> x (outn "ehird!"))})
17:23:41 <oklopol> -> takes any number of expressions
17:23:49 <otobot> An error: Unmatching parens @ row 1.
17:23:51 <otobot> An error: Application consists of 2 or 3 expressions.
17:24:10 <AnMaster> do I get this right? it does not accept functions taking no arguments
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: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 <AnMaster> oklopol, how do you refer to an argument in the function body?
17:24:45 <oklopol> AnMaster: what should (proc) do?
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: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: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:37 <oklopol> vixey: i have the rational type
17:25:40 <ehird> vixey: yes, just make them into functions
17:25:43 <oklopol> it's made functionally thuogh
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 <oklopol> you can make it mutable though, why not
17:26:02 <ehird> http://www.vjn.fi/pb/p535315136.txt
17:26:03 <AnMaster> :: (= hi {(-> x (outn (+ "Hi " (+ x "!"))))})
17:26:06 <ehird> AnMaster: http://www.vjn.fi/pb/p535315136.txt (= rat starts there
17:26:24 <ehird> :: <-- comment -->
17:26:28 -!- otobot has quit (Remote closed the connection).
17:26:29 <ehird> :: (+ <-- comment --> 2)
17:27:05 -!- otobot has joined.
17:27:10 <ehird> :: (+ <-- comment --> 2)
17:27:15 <AnMaster> :: (= hello {(-> x (outn (+ "Hello " x "!"))))})
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:19 <AnMaster> :: (= hello {(-> x (outn (+ "Hello " x "!")))})
17:27:19 <otobot> An error: Application consists of 2 or 3 expressions.
17:27:29 <AnMaster> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:27:30 <oklopol> AnMaster: I'M ONLY GOING TO TELL THIS ONCE MORE, + ISN'T A FUNCTION
17:27:32 <ehird> :: (+ <-- comment --> 2) <-- so a comment actually evaluates to a value? -->
17:27:40 <ehird> :: (+ <-- comment --> 1 1)
17:27:46 <oklopol> ATOMS, BY DEFINITION, ARE THE ONE THING THAT *CANNOT* BE CALLED
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:35 <AnMaster> <AnMaster> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:28:35 <oklopol> (= hello {(-> x (outn (+ "Hello " x "!"))))}) ?
17:28:59 <AnMaster> it did produce what I intended it to
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:27 <ehird> you defined 'hi' before
17:29:40 <ehird> AnMaster: of course it worked
17:29:41 <ehird> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:29:43 <ehird> what's not working about that
17:29:49 <otobot> An error: Application consists of 2 or 3 expressions.
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:25 <AnMaster> oklopol, well varadic stuff would help IMO
17:30:59 -!- shinkuzin has quit (No route to host).
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:17 <ehird> so it would make no sense
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:55 <ehird> oklopol: uhh, make it an arary language plz
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: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: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:22 <ehird> (op [1 2 3] [4 5 6]) is:
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:45 <ehird> oklopol: that's why they're so short
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:44 <ehird> oklopol: aha, that's what i wanted originally
17:34:51 <ehird> you agree! mwahaha
17:35:44 <ehird> AnMaster: forgot parens
17:35:45 <oklopol> that just evaluates the symbols.
17:36:03 <otobot> An error: 'int' object is not iterable
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:46 <oklopol> lists can be used as a function though...
17:37:01 -!- Judofyr has joined.
17:37:10 <otobot> An error: 'int' object is not iterable
17:38:02 <oklopol> give it a function as second arg
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:26 <ehird> oklopol: good idea or not :D
17:39:43 <otobot> An error: Unmatching parens @ row 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 <otobot> An error: Unmatching parens @ row 1.
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 <AnMaster> oklopol, I can't see them being that
17:40:32 <oklopol> AnMaster: nothing works atm
17:41:02 <ehird> oklopol: if ==> #<macro (c t e) (cond (c t) (else e))>
17:41:10 <oklopol> AnMaster: well you have too many args for ==
17:41:17 <ehird> #<macro args=(c t e) body=((cond (c t) (else e)))>
17:41:20 <oklopol> it's the wrong error, but an error still
17:41:34 <otobot> An error: Unmatching parens @ row 1.
17:41:54 <otobot> An error: Unmatching parens @ row 1.
17:42:01 <otobot> An error: Unmatching parens @ row 1.
17:42:05 <ehird> AnMaster: why have (x) around the arg
17:42:06 <otobot> An error: Assignment consists of 2 args.
17:42:07 <ehird> that makes no sense
17:42:26 <oklopol> ehird: perhaps to evaluate it? :D
17:42:46 <otobot> An error: Application consists of 2 or 3 expressions.
17:43:03 <otobot> An error: Lst instance has no attribute '__len__'
17:43:09 <oklopol> btw. siisii would crash it and such...
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:20 <otobot> An error: maximum recursion depth exceeded
17:43:27 <ehird> python's stack has a limit
17:43:32 <AnMaster> :: (= = {(-> x (outn (x x)) )})
17:43:39 <otobot> An error: maximum recursion depth exceeded
17:43:43 <otobot> An error: Assignment consists of 2 args.
17:43:45 <ehird> AnMaster: = is special cased
17:43:59 <ehird> AnMaster: otherwise the var name would be evaluated
17:44:11 <oklopol> ehird: btw. look at the comparisons in the rational example
17:44:26 <oklopol> just the code, i kinda like it
17:44:27 <otobot> An error: Empty application.
17:44:33 <ehird> (-> [(@ o [$any [$> $< $>= $<=]]) (/ dn dd)]
17:44:33 <ehird> (o (* n dd) (* dn d)))
17:44:50 <oklopol> special functions should be as applications
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 <otobot> An error: Atm instance has no attribute '__len__'
17:45:18 <AnMaster> oklopol, what exactly does that error mean
17:45:30 <oklopol> well the error is in my implementation
17:45:42 <oklopol> but i fixed it, in my head, like a second ago
17:45:56 <AnMaster> oklopol, THAT SHOULD WORK! ½ is rational
17:47:33 <oklopol> retry something that said __len__ doesn't work
17:47:41 <ehird> oklopol: name my crazy pythonlispfirstclassawesome
17:47:59 <oklopol> ehird: well you could steal the name soup?
17:48:06 <oklopol> i hear the soup people haven't really gotten much done
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 <ehird> vixey: internal interpreter source
17:48:53 <AnMaster> oklopol, it's the unicode symbol for 1/2...
17:49:08 <ehird> first-class parser is in a lot of lisps
17:49:19 <ehird> if the interpreter uses the data structure
17:49:27 <AnMaster> oh intercal syntax didn't work
17:49:27 <ehird> oh ,first class scopes of course
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: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: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:52:32 <AnMaster> What kind of tickets do functional programmers prefer when traveling by aircraft? Answer: first class tickets.
17:52:35 <ehird> soup objects will be called pans
17:52:49 <ehird> AnMaster: my first class lisp
17:53:01 <AnMaster> ehird, you said the name was in use?
17:53:16 <ehird> but by me and oklopol
17:53:26 <ehird> AND A CRACK DEVELOPMENT TEAM
17:53:36 <ehird> or a development team on crack
17:53:41 <ehird> oklopol: Soup lisp will have first-class GCs
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: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:34 <ehird> AnMaster: it'll time out
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:27 <ehird> AnMaster: he didn't implement it yet
17:56:39 <AnMaster> otherwise evaluating a huge ISO
17:57:45 <oklopol> ehird: i'm not sure what you mean, but latter
17:57:48 <ehird> but which should i use
17:57:54 <ehird> cook.pan() would just call Pan(cook)
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:15 <otobot> An error: invalid literal for int() with base 10: 'foo'
17:58:19 <AnMaster> oklopol, one of the links you posted
17:58:22 <AnMaster> http://www.vjn.fi/pb/p612313333.txt
17:58:24 <ehird> it should replicate it
17:58:37 <ehird> oklopol: what should i call the id of pans
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:34 <ehird> maybe i should call it cook.flip
17:59:50 <ehird> I also have Pan.throw, which copies an object to the context of another interpreter
18:00:00 <otobot> An error: invalid literal for int() with base 10: 'foo'
18:00:22 <AnMaster> oklopol, I thought order shouldn't matter?
18:00:44 <ehird> oklopol: remember, it's not ASSOCIATIVE
18:00:47 <ehird> i lectured you about + before
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: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:02:42 <oklopol> except it's sent as #lo... but you'd have to know oklotalk :P
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:23 <oklopol> the interp supports them internally
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:52 <ehird> soup lisp is too hard
18:03:56 <ehird> oklopol: paste your old python lisp
18:04:15 <oklopol> that sch thing of ololobot
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 <otobot> An error: Application consists of 2 or 3 expressions.
18:05:01 <oklopol> 4 and i are separated as tokens
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:06:04 <ehird> oklopol: i wannnnaaaaaaiiit
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:20 <oklopol> ehird: i don't have it, actually :\
18:06:21 -!- Corun has quit ("This computer has gone to sleep").
18:06:32 <ehird> oklopol: its on the pastebin
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:56 <oklopol> well, the pastebin has a shitload of stuff...
18:07:18 <ehird> okokokokokokokokokokokokoko...
18:07:29 <ehird> oklopol: grep 'class MEM'
18:07:37 <ehird> or 'class O(object)'
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:19 <oklopol> AnMaster: compared with oklotalk?
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: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: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:22 <oklopol> well, the rational class was as easy to make in oklotalk as it would've been in, say, python.
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:12:00 <ehird> AnMaster: vjn.fi presumably
18:13:04 <oklopol> this is not the real account
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:36 <ehird> you barely need to define anything
18:15:38 <oklopol> kinda like rat, but different operations
18:15:56 <oklopol> i'll make the interpreting urls thing
18:17:57 <vixey> funny video http://video.google.com/videoplay?docid=-7990603720514207956
18:18:39 <ehird> vixey: oleg is cooool
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: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:02 <oklopol> unary would be (+ you_obj) == $+ as the message
18:20:12 <oklopol> and (your_obj arg) == arg as message
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:21:24 <oklopol> this would extract the nominator of a rational
18:21:39 <ehird> oklopol: so that defines a custom pattern match
18:21:54 <ehird> (-> [pb CAR-OF-PATTERN-MATCH] ...)
18:22:02 <ehird> but i don't get how [n d] fits into it
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:37 <ehird> so, i should match on 'j' i guess
18:22:42 <ehird> (that's my class name)
18:22:47 <ehird> (-> [pb $cpx] [r i])
18:23:00 <oklopol> or you can define a setter
18:23:26 <oklopol> (-> $getreal r) (-> $getimag i)
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: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:22 <ehird> comparisons aren't even that hard
18:26:27 <ehird> since i don't have to define them
18:26:39 <oklopol> AnMaster: gaussian integers
18:27:13 <oklopol> ehird: multiplication doesn't work like that
18:27:32 <ehird> oklopol: oops, yeah
18:27:39 <ehird> sorry, mind is fuzzed right now
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:28:22 <oklopol> ofc doesn't work that easily
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: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:26 <ehird> now, in tradition, you must copy me
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:30:03 <ehird> oklopol: you should call yours okompose
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: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:26 <oklopol> that's like the worst character to choose for frequent use
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: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: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: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:35:12 <oklopol> but rat will need to know about complexes.
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: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: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:37:08 <oklopol> what's the use of implementing the interface?
18:37:25 <AnMaster> oklopol, because then you can stick *any* number into the cpx
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: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: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:15 <oklopol> the fact cxp "is a number" doesn't make any difference
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 <ehird> oklopol: basically, in 'x.y(z)' you dispatch on the magic first param - self, here x
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: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:45 <ehird> you don't understand what i' saying
18:40:47 <oklopol> message sending works great for this exact thing
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:24 <oklopol> so the cleverer one will be called automatically
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: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: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:50:02 <vixey> sqrt(-x) = sqrt(-1)*sqrt(x)
18:50:13 <vixey> less horribly confusing way to put it :P
18:50:56 <AnMaster> Deewiant, so how would you write a befunge program that solves: 2x^2 + 4x + 1 = 0
18:51:30 <ehird> noo i was just saying to say something
18:51:42 <vixey> that's not a counter example
18:51:46 <oklopol> don't you know me at all...
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:19 <vixey> because sqrt(-1)*sqrt(-1) = -1
18:53:37 <oklopol> ehird: i'm trying to leave though, so say if you're gonna
18:54:15 <ehird> oklopol: I tried writing python in okostyle for my interp :P
18:54:31 <ehird> oklopol: your weird style
18:54:40 <Deewiant> vixey: enough of a counter example?
18:54:43 <vixey> Dewiant: what number times itself is 9?
18:54:54 <vixey> *that's not a counter example*
18:54:55 <ehird> short names, not much whitespace
18:54:58 <vixey> please try to listen to me
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: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:56:07 <vixey> I define sqrt(x) = x^1/2
18:56:28 <Deewiant> but that denotes the principal square root
18:56:36 <Deewiant> which is to say, the positive one.
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: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:07:37 <ehird> and it was based on rewriting
19:07:41 <ehird> so i'm making it stakkk
19:13:08 <ehird> oklopol: i have a weird bug
19:14:12 <ehird> http://www.vjn.fi/pb/p461542621.txt the bug is in pa near the botto
19:15:08 <AnMaster> shows why tab completion didn't show it
19:15:22 <oklopol> ehird: that's the parseror?
19:15:29 <oklopol> s,i... i is current place, like?
19:15:39 <ehird> oklopol: yeah that[s the parser
19:15:47 <ehird> i is nesting depth
19:15:56 <ehird> return pa(s,i+1)+pa(s,i)
19:15:59 <ehird> return [pa(s,i+1)]+pa(s,i)
19:16:00 <ehird> that doesn't fix it
19:16:11 <ehird> (lists are quotations)
19:16:13 <ehird> oklopol: unmatched ]
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:45 <ehird> but after pa(s,i+1) thing
19:16:48 <ehird> where we get returned to
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: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: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:19:24 <oklopol> so basically the recursion doesn't gulp a ] it should be gulping?
19:19:35 <ehird> but it works for []
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: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: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 -!- Judofyr_ has joined.
19:39:37 <ehird> AnMaster: coding a simple concatenative lang
19:41:10 -!- Slereah has quit.
19:42:16 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
19:42:37 -!- oklopol has joined.
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:46:24 <oklopol> http://www.vjn.fi/s/sadf.py <<< verrrry ugly
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: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:42 -!- concat has joined.
19:58:49 -!- concat has quit (Remote closed the connection).
19:59:51 -!- concatbot has joined.
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:45 -!- concatbot has quit (Remote closed the connection).
20:00:51 -!- concatbot has joined.
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: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:54 <ehird> yours splits on space
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:45 -!- concatbot has quit (Remote closed the connection).
20:03:51 -!- concatbot has joined.
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:36 -!- concatbot has quit (Remote closed the connection).
20:04:48 -!- concatbot has joined.
20:04:56 -!- concatbot has quit (Remote closed the connection).
20:05:00 -!- concatbot has joined.
20:05:25 -!- concatbot has quit (Remote closed the connection).
20:05:30 -!- concatbot has joined.
20:05:38 -!- concatbot has quit (Remote closed the connection).
20:05:42 -!- concatbot has joined.
20:05:58 -!- concatbot has quit (Remote closed the connection).
20:06:09 -!- concatbot has joined.
20:06:10 -!- concatbot has quit (Remote closed the connection).
20:07:06 -!- concatbot has joined.
20:07:41 <ehird> i maed last minute changes
20:08:55 -!- concatbot has quit (Remote closed the connection).
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:10:51 -!- concatbot has quit (Remote closed the connection).
20:11:07 -!- concatbot has joined.
20:11:16 <ehird> oklofok: funny - + is composition
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:19 <ehird> oklofok: oh, and watch this
20:12:54 unexpected log event :(
20:13:03 -!- concatbot has quit (Remote closed the connection).
20:13:09 -!- concatbot has joined.
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:15:40 <ehird> # [add1 1 +] define
20:15:40 -!- concatbot has quit (Remote closed the connection).
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 -!- 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:16 <ehird> # [[1 2] a] define
20:17:23 <ehird> oklofok: shall i make it its own channel?
20:18:09 -!- concatbot has quit (Remote closed the connection).
20:18:15 -!- concatbot has joined.
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: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:43:35 -!- oerjan has joined.
20:57:22 <ehird> oerjan: do you like concatenative languages
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:34 <ehird> oerjan: there's one in here riiiiight now
21:05:43 -!- concatbot has quit (Remote closed the connection).
21:10:54 -!- UnrelatedToQaz has joined.
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: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: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:06:19 <AnMaster> http://rage.kuonet.org/~anmaster/tmp/specs.pdf
22:06:26 <AnMaster> anyone want to implement that?
22:07:18 <oerjan> RodgerTheGreat: dragons. with light sabres. in a ufo.
22:07:50 <oerjan> (slightly calvin & hobbes inspired :)
22:08:49 <AnMaster> RodgerTheGreat, I just uploaded a new version
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: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: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: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: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:38 <AnMaster> would be the two possible answers
22:14:59 <AnMaster> I love how maxima can generate TeX output
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:17:20 <AnMaster> like a standard library kind of
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: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:18 <ehird> its more standards compliant than firefox
22:28:21 <ehird> and the rendering is better
22:29:17 <ehird> AnMaster: caught ya! Safari is based on KHTML, Konqueror's rendering engine
22:29:27 <ehird> And the KDE people are merging back in Apple's changes into KHTML
22:29:35 <ehird> so don't be insulting the safari!
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:32:30 <ehird> AnMaster: how apple will see the gopher issue:
22:32:35 <ehird> 1. next to nobody uses gopher anymore
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: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: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:31 <AnMaster> they even got the right click menus YEARS before their own mice had more than one button
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 <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: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:56 <RodgerTheGreat> lament: the mighty mouse is what comes standard with macs, and it has 4 buttons
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:37 <lament> must be a very new thing
22:37:37 <RodgerTheGreat> AnMaster: every mac laptop in YEARS recognizes multitouch
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:19 <RodgerTheGreat> the only thing that button's even really for is dragging things
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: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: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: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: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: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:01:29 <ehird> [22:50] <lament> ehird: yes, but it coming standard must be new
23:01:45 <ehird> AnMaster: the gesture you can use on the laptop is fine
23:01:50 <ehird> see: RodgerTheGreat
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:02:02 <AnMaster> <AnMaster> RodgerTheGreat, I used it, and it works horribly for me
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:21 <ehird> AnMaster: your point is 'i don't like how macs do it'
23:02:29 <ehird> not 'mac laptops sux coz they got 1 butan'
23:03:11 <AnMaster> that they lock out potential customers
23:03:43 <ehird> AnMaster: they lock out YOU
23:03:45 <ehird> everyone else is fine with it
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: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:53 <AnMaster> I don't want a GUI most of the time
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: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: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:54 <ehird> you don't provide any justification
23:07:58 <oklofok> actually, i did that too on it
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: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:20 <ehird> i repeat my previous statement
23:09:26 <AnMaster> ehird, I have used it quite a bit
23:09:49 <AnMaster> ehird, the system was 10.4 Tiger
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:22 <AnMaster> because, you couldn't right click
23:10:31 <ehird> oklofok: NOW #ESOTERIC IS NO LONGER BORIIGIIGIGIGNNGNNGG
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: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: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:15:03 <oklofok> it's not swedish or english either, no
23:15:16 <oklofok> i'm fairly sure it's not anything
23:15:38 <oklofok> why should everything have a meaning
23:15:58 <oerjan> it's in the Armagan language
23:16:52 <oerjan> it means well-known, or closely related
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: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: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:20:11 <oklofok> mi' ont entful ni nel-higs, hoguth
23:21:27 <oerjan> mi' sa entful sa lli' erve eb, ldi' nkith
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:33:07 -!- oerjan has quit ("Ogdo ngith").
23:52:07 -!- olsner has quit ("Leaving").
00:10:20 <ehird> oklofok: no built-in-function type? XD
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:26 <oklofok> the dispatch is just plain oklotalk logic
00:11:39 <oklofok> as i said, it's not (func arg arg)
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:20:02 <ehird> oklofok: so, it asks $/ to $/ with $/
00:20:05 <ehird> then asks $/ to $/ with $/
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:34 <oklofok> but has to be done in order to get done, anyway
00:21:50 <ehird> oklofok: so {} is just a '
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: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: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: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:52 <ehird> the 'actions' inside
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: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: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:36 <pikhq> Shadowmoor is the next Magic: The Gathering set.
00:30:40 <ehird> oklofok: oh you can do that?!
00:30:59 <ehird> :: (= myId {outn "boo"; (-> x x)})
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: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:32:01 <oklofok> {outn "boo"; (-> x x)} works
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:33:22 <oklofok> :: (= x {(-> n {(-> [$set n] n) (-> $get n)})})
00:33:48 <ehird> i'm going to make a linked list
00:34:01 <oklofok> so, we have a pointer here
00:34:27 <ehird> oklofok: is just (-> [$pb] ...) ok?
00:34:30 <oklofok> :: ({(set test 8) (-> n (* n 3))} 5)
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: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: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: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:40 <ehird> :: (= test (cons 1 2))
00:40:55 <ehird> :: (setcar test 3)
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:34 <ehird> i won't do indexing
00:41:36 <ehird> it's just a cons cell
00:41:38 <oklofok> and we'll try quicksort :D
00:41:43 <ehird> you can treat it like a list though
00:42:05 <ehird> oklofok: can you define setters?
00:42:11 <ehird> you can override FOO
00:42:21 <ehird> you can define a setter for (car x)
00:42:30 <ehird> presumably, it would be like $pb
00:42:36 <oklofok> that isn't done yet, = only does vars
00:42:42 <oklofok> but that's just because i'm lazy
00:42:48 <ehird> but i dunno what would be returned
00:43:12 <ehird> (= (X Y) Z) -> (X [$= Y Z])
00:43:39 <ehird> oklofok: what is the syntax I use for indexing?
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:44 <oklofok> and would be much cooler too
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:54 <ehird> oklofok: ok, try quicksort
00:46:06 <ehird> oklofok: just try it
00:46:19 <ehird> oklofok: how do i trigger an error?
00:46:35 <ehird> oklofok: like this:
00:46:46 <otobot> An error: Empty application.
00:46:51 <ehird> oklofok: 'An error:'
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:48:02 <ehird> oklofok: it should be oklotalky
00:48:06 <oklofok> i guess you can just implement that without explicit continuations
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:16 <oklofok> but perhaps later, right now i need to add a thing to get filter to work
00:49:38 <ehird> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
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:13 <ehird> :: (length (cons 1 (cons 2 nil)))
00:50:27 <ehird> oklofok: i think i might be the best oklotalk coder next to you
00:50:49 <ehird> oklotalk is FLEXIBLE
00:51:10 <ehird> oklofok: make it try ALL PERMUTATIONS
00:51:12 <oklofok> it will work in actual oklotalk :D
00:51:17 <oklofok> that's an implementation defect.
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:36 <ehird> try all permutations
00:52:44 <oklofok> you can have patterns in a certain kind of list
00:53:01 <oklofok> well... why not, why not xD
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:08 <oklofok> (prm [(int x) (str y) (lst z)])
00:54:09 <ehird> oklotalk's crazy ideas are fun
00:54:13 <ehird> but if you are actually gonna write something
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:49 <ehird> oklofok: if you don't handle them, they bubble up the call stack
00:55:12 <oklofok> oklotalk should just allow you to step out of the evaluation, without actually even using continuations or anything
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:57:00 <oklofok> that "stepping a level up" can be used for something like define-syntax
00:59:20 -!- ehird has quit ("This computer has gone to sleep").
01:00:14 -!- otobot has quit (Remote closed the connection).
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:18 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:06:40 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t) (+ [h] (' f t))]) (-> [f (: h t)] (+ [h] (' f t)))})
01:06:43 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
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:09:00 <otobot> An error: Var instance has no attribute 'call'
01:09:59 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:10:05 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:10:07 <otobot> An error: Var instance has no attribute 'call'
01:11:20 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:11:59 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
01:12:20 -!- otobot has joined.
01:12:58 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:13:06 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:13:09 <otobot> An error: Atm instance has no attribute 'call'
01:14:21 <oklofok> :: ({(-> (tst {(> 3 _)}) 0)} 5)
01:14:32 <oklofok> :: ({(-> (tst {(< 3 _)}) 0)} 5)
01:16:44 <oklofok> hoh, that's actually a pretty bad flaw.
01:20:35 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]").
01:24:55 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:25:02 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:25:07 <otobot> An error: Atm instance has no attribute 'call'
01:30:35 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
01:30:43 <oklofok> :: (flr {(< _ 3)} [1 2 3 4 5])
01:30:45 <otobot> An error: global name 'self' is not defined
01:31:06 <oklofok> :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})
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: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: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:35:04 <Sgeo> I'd understand "oklobot" but otobot?
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: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:37:32 <oklofok> :: (= qs {(-> [] []) (-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t)))))})
01:37:48 * Sgeo watches all this go way way way over his head
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:40 <otobot> An error: Atm instance has no attribute 'call'
01:38:41 * Sgeo doesn't know either QuickSort or Oklotalk
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: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: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: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
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:27 <Sgeo> Oh, ehird implemented a list in oklotalk?
02:02:08 <oklofok> although it doesn't fully work
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:20 <adu> how are you
02:04:46 <Sgeo> ok. Looking at PSOX again, although no one else seems interested
02:05:37 <adu> whats PSOX?
02:05:44 <adu> i'm doing taxes
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: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:18:07 <oklopol> anyway, damn ehird for going to sleep
02:18:08 <adu> :: something
02:18:12 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
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: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:12 <adu> :: (string-ref "Hello" 1)
02:19:25 <oklopol> :: (= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (cons 0 nil)))))))
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: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:21:03 <oklopol> i swear it worked a minute ago in my cli
02:21:59 <oklopol> reload might not work properly.
02:21:59 <adu> maybe it thinks "0" is "5" for some reason
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:29 <adu> :: (= quicksort done)
02:23:35 <adu> :: (quicksort)
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: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:32 <adu> :: (qs [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: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: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: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:54 <oklopol> :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})
02:29:43 <oklopol> :: (= qs {(-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t))))) []})
02:29:55 <adu> :: (qs (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 nil))))))
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:26 <adu> :: (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 nil)))))
02:30:44 <adu> :: [1 2 3 4 5]
02:30:53 <adu> :: [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:47 <adu> I don't know anything about your lang
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:43 <oklopol> god i hate that dood sometimes
02:32:44 <adu> I have 3 languages like that
02:32:52 <adu> who is ehird?
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:53 <adu> ok so what does it do?
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:38 <adu> I like symbols
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: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:36:00 <oklopol> in that case i should be able to explain this to you in an instant
02:36:21 <adu> I can guess that -> is lambda
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:19 <adu> so what is '
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:29 <oklopol> :: (flr {(> _ 3)} (cons 1 (cons 4 nil)))
02:39:47 <oklopol> :: (flr {(> _ 3)} (cons 4 (cons 1 (cons 4 nil))))
02:40:04 <oklopol> :: (flr {(<= _ 3)} (cons 4 (cons 1 (cons 4 nil))))
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:55 <adu> :: (fac 2)
02:40:58 <oktabot> An error: maximum recursion depth exceeded
02:41:35 <adu> :: (= fac {(-> [f 0] 1) (-> [f n] (* n (' f (- n 1)))) []})
02:41:39 <adu> :: (fac 2)
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 <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:45 <oklopol> you can just recurse by (fac ...)
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:57 <adu> :: (fac 2)
02:43:59 <oktabot> An error: maximum recursion depth exceeded
02:44:27 <adu> should "f" be "fac"?
02:44:27 <oklopol> just do what you did, again, and it should work
02:44:43 <adu> :: (= fac {(-> 0 1) (-> n (* n (' f (- n 1))))})
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:45:07 <oklopol> (fac ..) or (' ...) for recursion
02:45:09 <adu> i dunno, cuz you did it like that
02:45:15 <adu> ooooooooooo
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:27 <adu> :: (fac 2)
02:45:41 <adu> I made a program in oklkang
02:46:35 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
02:46:41 <oklopol> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
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:47:00 <oklopol> :: (= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil)))))))
02:47:10 <oklopol> :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})
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:11 <oklopol> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
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:26 <oklopol> :: (= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil)))))))
02:48:31 <oklopol> :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})
02:48:37 <adu> :: (= talk {(-> ["hi" x] "Why hello!") (-> ["bye" x] "Good bye!") []})
02:48:45 <adu> :: (talk ["hi" "Mr. roboto"])
02:48:52 <adu> :: (talk ["hi" "Mr. roboto"])
02:48:59 <adu> :: (talk ["bye" "Mr. roboto"])
02:49:51 <oklopol> how come that only works on my comp :D
02:50:01 <adu> i don't know
02:50:03 <oklopol> i just copypaste the code :D
02:51:48 <adu> what does flr do?
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:43 <oklopol> :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})
02:54:09 <oklopol> :: (flr {(< _ 3)} [1 2 3 4 5])
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: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:35 <oklopol> :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})
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:25 <oklopol> it doesn't have functionality
02:55:27 <oklopol> (+ 1 2) sends the object 1 the message [$+ 2]
02:56:06 <oktabot> An error: Atm instance has no attribute 'call'
02:56:15 <oklopol> okay, this is a bit spooky
02:59:12 <adu> :: (-> 1 2)
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:35 <adu> :: ({(-> 1 2) 0} 2)
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: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:48 <adu> :: (qsort [1 2 3 4])
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: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: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: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: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: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: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: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: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:31:21 <Sgeo> I guess I can't learn oklotalk now
03:56:51 -!- adu has quit ("Bye").
05:03:03 -!- captluo has joined.
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.
11:55:28 -!- Visitor-3CB98 has changed nick to Slereah.
12:10:04 -!- Corun has joined.
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: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: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:39 <ehird> would building an Analytical Engine practical?
16:06:19 -!- timotiis has quit (Read error: 110 (Connection timed out)).
16:06:47 -!- UnrelatedToQaz has joined.
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: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: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: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:28:47 -!- sekhmet has quit ("it's a reboot!1!").
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.
19:03:45 -!- captluo has quit.
20:31:22 -!- Iskr has quit ("Leaving").
20:37:32 -!- ais523 has joined.
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: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: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: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:20 <ais523> and likewise ERROR is a response to QUIT as well as being a standalone message
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: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: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: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: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: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:48:03 <ehird> levenshtein actually
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: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: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: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: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: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: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: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:01:18 <ehird> Most 'modern' perl looks like that
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: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:34 <ehird> lament: this is just as a temp experiment
22:09:36 <ehird> but yeah, i'll get on it
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:11 <ais523> but it also filters out nicks, smilies, punctuation, etc
22:11:34 <lament> throw out everything except alphabetic chars
22:11:40 <ais523> also case and control characters
22:11:50 <lament> they can't contribute to false positives much
22:11:51 <ais523> lament: no, do Porter stemming first
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:22 <ehird> ais523: it IS based on voice
22:13:32 <ehird> so that unfortunately means it needs ops
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:58 <ehird> it comes with nothing to import logs
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> 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: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:54 <ehird> i can fix that myself
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:07 <ais523> ehird: it only cares about it when kicking
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: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: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: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:15 <ehird> all logs downloaded
22:43:25 -!- jix has quit ("CommandQ").
22:43:43 <ehird> lament: I have 426682 lines of logs processed ready
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:37 <ehird> it already can do it
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: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: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:15 <lament> (you just said wheeee, okay, hm and lulz in the past 15 minutes - you would be very muted now)
22:54:27 <ehird> not just any kind of muted, but VERY muted
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: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: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:27 <ehird> this is a lot of stuff
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: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: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> time for new and improved garbage
23:55:40 <ehird> oh and that is the previous newline
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> 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: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:47 * Sgeo doesn't remember
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: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:29 <ehird> that would make the term even stupider
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:53 <ehird> but logs started in 2004
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: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:37:46 <ehird> lament: we should try and get comp.lang.esoteric
01:38:48 <Sgeo> I guess on Tuesday I'll tell him I was mistaken in my description of Web 2.0..
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:17 <Sgeo> Maybe sometimes some people are there, but none right now.
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: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: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: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:57 <lament> define syntax, and it shall be done.
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: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:31 <wildhalcyon> Tokens may be larger than a single character
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 <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: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:18 <ehird> we seem to be splitting hairs
01:59:51 <lament> well, actually, i suppose wierd is single-word
02:20:48 <wildhalcyon> ugh, my new language design is coming along REALLLLLLLY slowly
02:21:53 <ehird> wildhalcyon: eat it
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: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:51:23 <calamari> I have a c2bf question for you
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:53:53 <calamari> GregorR: does C expect an infinite stack?
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: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.
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: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: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:21:26 -!- jix has joined.
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: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:23 <Deewiant> assuming that k behaviour, that is.
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:30:45 <AnMaster> well. it says k should not execute space, so what should it execute instead
17:31:37 <Deewiant> b) reach past the marker and execute next instruction
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: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:33:19 <AnMaster> Deewiant, tried contacting Chris Pressey?
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: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:34 <AnMaster> Deewiant, indeed it's a marker
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: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:39 <AnMaster> Deewiant, what do ccbi do on ;?
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: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: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: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: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:49 <ais523> because there's no way in general to tell if it's a Church numeral or not
17:43:55 <Slereah> Keep checking 4eva, or gives up after some time
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: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: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: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: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: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: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: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: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:11 <ais523> AnMaster: the ironic thing is that it worked for me
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: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:43 <ais523> I have a newline-fixing script that does that
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: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:41 <AnMaster> a default freebsd install doesn't have perl
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:35:10 -!- Tritonio_ has joined.
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: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 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:03:12 -!- RedDak has joined.
19:03:23 <AnMaster> ehird, you missied him with two minutes and 29 seconds
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: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: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: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: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: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: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:13:44 -!- kwertii has joined.
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:17 <ehird> oklopol: okokokokokoko
21:19:29 <lament> ehird: did robot9000 ever finish?
21:20:14 <ehird> lament: I killed it because I had to go.
21:25:00 -!- Corun has joined.
21:25:00 <Slereah> ``````````````okokokokokokoko converts to ``o`ko :o
21:29:36 <oklopol> well, you know, so is your mother
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:43:30 * oerjan regrettably isn't fluent
21:43:48 <ehird> oerjan: OKOKO?! oko... okoko okokoko. okoko!
21:48:23 <oklopol> okokokokokokokokokokokokokokokoko...
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:09:21 -!- timotiis_ has quit (Read error: 110 (Connection timed out)).
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:22:54 <oklopol> forgot there actually was a standard representation
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: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:37 <lament> PCM does not notate music
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: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: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: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:46 <pikhq> And there are multiple notations *for* words.
22:47:52 <pikhq> Yes, but I was typing it before you hit enter.
22:48:09 <GregorR> And PCM notates sounds which notate music BIACH
22:48:25 <lament> sounds don't notate music
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: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 <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: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: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 <lament> sorry, one syllable, several phonemes
23:01:46 <pikhq> Japanese kanji have multiple readings.
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:28:00 <ehird> all irc channels should have a bot which pipes fortune(1) to the channel if it dies for too long
23:29:53 <ehird> actually, `fortune -a`
23:35:11 <pikhq> GregorR: Patch to Egobot?
23:36:16 <GregorR> RodgerTheGreat: Thinkgeek f***'d up the T-shirt!
23:36:27 <GregorR> s/Thinkgeek/Cafepress/ >_O
23:36:43 <ehird> pikhq: I could do that if GregorR would put it up <.<
23:37:30 <ehird> But I don't want to run an EgoBot clone.
23:37:33 <ehird> Since the ! would clash.
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:43 <ehird> actually, if EgoBot is ever rewritten
23:38:45 <ehird> it should be called
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:43 -!- oerjan has quit ("Good night").
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: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: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: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: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
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: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: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: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:19 <ehird> GregorR: What's more, it's a compiler option!
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: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: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: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: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: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: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: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: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: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> 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:49 -!- boily has joined.
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: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: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: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: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: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: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: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: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: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: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: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:59 <ehird> pikhq: What I think is the minimal HTML 5 document: <!DOCTYPE html><html><p>Hello, world!</p></html>
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: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: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:13 <ehird> i wanna code some more though too
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: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: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:46:38 <AnMaster> it's a boring logo yes, but boring logos with symbols meaning nothing is rather common
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:44 <AnMaster> oklopol, you know this qualifies as "inkblot"....
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:33 <AnMaster> <oklopol> ironing board or smth? <-- that would be making clothes flat
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:31 <AnMaster> oklopol, something to do with boats I think the other meaning is
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: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: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:41 <ehird> oklopol: soo i'll write some more okocode if you put otobot in here, or give me an oklotalk interpreter
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: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:04:07 <ehird> oklopol: i'll add an awesome REPL
16:04:09 <ehird> and send you a patch
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 <ehird> oklopol: i will add history that is stored across sesssions, completion, brace matching..
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: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: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: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 <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: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: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: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: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:26 <AnMaster> SimonRC, yes that is why you split functions
16:10:31 <ehird> oklopol: well, ok, give me the pyc
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: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: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:38 <AnMaster> ehird, because it is not available as a free pdf
16:12:55 <ehird> AnMaster: HAHAHAHAHA
16:13:00 <ehird> that is the funniest thing i've heard all day
16:13:09 <SimonRC> also, document the datastructures, not the functions
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: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 <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:53 <ehird> AnMaster: totally stupid attempt to clutch at straws
16:16:13 <ehird> AnMaster: run this for me
16:16:46 <ehird> ditto here. do you know how long the gnu version is?
16:17:04 <ehird> AnMaster: that must be an old version
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: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:15 <ehird> a good manpage would be much shorter
16:18:31 <ehird> AnMaster: license headers in each file is so horrid
16:18:41 <ehird> 'this function does foo'
16:18:52 <ehird> 'This function calculates the checksum of s'
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:21 <ehird> AnMaster: looks like it to me
16:19:24 <ehird> oklopol: .pyc plz?
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> fopen, fdopen, freopen -- stream open functions
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:01 <ehird> for documenting functions i prefer tools that extract stuff out of the source
16:20:11 <ehird> documentation should be as close as possible to the thing it documents
16:20:17 <ehird> otherwise it has a far higher chance of being irrelevant
16:20:34 <AnMaster> ehird, well you could use something like doxygen then
16:20:41 <ehird> AnMaster: doxygen's a bad exampl
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:50 <ehird> yes, doxygen sucks
16:21:01 <ehird> but the idea is alright
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: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: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:43 <SimonRC> in text files, just have half of the line for comment and half for code I suppose
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:11 <ehird> AnMaster: read/eval/print/loop
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:54 <ehird> (loop (print (eval (read)))), is, of course, ridiculous
16:25:26 <AnMaster> isn't that the same in "lispy" syntax?
16:26:00 <ehird> its totally backwards
16:26:41 <oklopol> in concisative languages, you can write it as readevalprintloop
16:27:08 <ehird> oklopol: or rather - 'in ambigious languages'
16:27:14 <ehird> specifically, parsing cise is turing complete
16:27:22 <ehird> you need to know the definitions to parse it properly
16:27:25 -!- jix has joined.
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:23 <oklopol> you need to have explicit tokenization somewhere in file
16:28:24 <ehird> so it is decided at runtime
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: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: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:41:54 <ehird> oklopol: i guess now i'll decompile it
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:47 <oklopol> it's very high-level, i'm prettu sure you could
16:43:02 <oklopol> well didn't you pretty much do that?
16:43:51 <ehird> credit me as 'ehird'
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:57 <oklopol> i put alot of thought into finding a good name for 'em :-)
16:45:05 <ehird> oklopol: how about 'responder'
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 <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:47:36 <ehird> oklopol: http://pb.vjn.fi/p641631565.txt
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: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:19 <oklopol> this is actual oklotalk ofc
16:48:39 <oklopol> yarr i thought of that too, acttually
16:49:20 <ehird> it's just adding infix stuff
16:49:25 <ehird> the thing that makes it special is my indentation style
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:29 <oklopol> i assumed infix was just automatic because... well, it usually is
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:11 <ehird> i've always wanted to do a language where
16:52:20 <ehird> parse like you would expect
16:52:26 <oklopol> i've come up with that too :)
16:52:43 <ehird> oklopol: but what about multiple spaces
16:52:52 <oklopol> ehird: well, graphica isn't exactly that
16:53:02 <oklopol> is't sexps + infix if no spaces
16:53:09 <ehird> AnMaster: no the repl is backawrds
16:53:36 <ehird> AnMaster: i just like concatenative languages
16:53:39 <ehird> not just for the RPN
16:54:02 <ehird> {$f [$pb :] ->; ...} = cons
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: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:26 <ehird> but here is the definition
16:55:34 <ehird> in applicative languages, the invisible space operator is application
16:55:38 <oklopol> concatenating their sources
16:55:44 <ehird> in concatenative languages, the invisible space operator is composition
16:55:52 <AnMaster> means bash is a applicative language
16:56:07 <ehird> a weird kind of applicative languages
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: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:16 <ehird> (x) { return foo(bar(x));}
16:57:24 <ehird> in concatenative languages, 'foo bar' is 'bar . foo'
16:57:33 <ehird> is a function pushing 2
16:57:40 <ehird> then you have [...] to make functions
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: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:33 <ehird> which adds the top two avlues together
16:58:36 <ehird> when you call a function
16:58:38 <ehird> it gets the current stack
16:58:44 <ehird> at the start of the program
16:58:47 <ehird> an empty stack is passed
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:19 <ehird> a very interesting one
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: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: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: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:04:13 <AnMaster> wikipedia call Joy "functional"
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:06:11 <AnMaster> cat is certainly "concatenative" though XD
17:06:48 <AnMaster> ehird, not related to lolcode? ;P
17:07:44 <ehird> http://cat-language.com/
17:09:01 <AnMaster> are *all* concatenative languages functional?
17:09:05 <ehird> AnMaster: most are
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: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:29 <ehird> which is 100% detached from the haskell code
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:39 <AnMaster> right, so everyone using darcs just imagined they commited a file
17:12:48 <ehird> AnMaster: ... what an IDIOTIC comment
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: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:17:28 <oklopol> ehird: did you try the interp?
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:55 <ehird> not much to see really
17:21:02 <oklopol> well, you can't crash it that easily ofc
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:21 <ehird> oklopol: i find the scoping odd though
17:22:42 <ehird> (= ptr {(-> o {(-> $get o) (-> [$set o] o)})})
17:22:59 <ehird> i would expect that to be local to that pattern match, and just return the o
17:23:04 <ehird> the get would refer to the objects o
17:23:10 <ehird> it somehow 'overrides' the thing's o
17:23:15 <ehird> is that intentional?
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:24:06 <oklopol> recursion will remake the scope
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: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: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: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:55 <ehird> oklopol: they're jewnicode
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:48:12 <oktabot> An error: Unmatching parens @ row 1.
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:25 <ehird> oklopol: open stdin in unicode mode
17:48:31 <ehird> and replace '' with u''
17:48:35 <ehird> then it'll be jewnicode
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 <oktabot> An error: invalid literal for int() with base 10: 'seher'
17:49:36 <oklopol> perhaps i should fix that :D
17:49:56 <oklopol> :: (lolimagination "14354")
17:50:36 <oklopol> long story short, strings can only be int()'d atm
17:52:17 <oklopol> at some point i though i might make oklotalk only do base 16 numbers
17:54:49 <ehird> oklopol: hmm, all my esoideas from earlier today have just gone
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:22 <ehird> you can implement loops with call/cc.
17:59:38 <ehird> oklopol: like, make a functional equiv. of brainfuck
18:19:26 -!- Sgeo has joined.
18:33:20 <Sgeo> pikhq, still care about PSOX?
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: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:57 <Sgeo> I mean, assuming befunge can access the network and files and stuff
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: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:50 <AnMaster> ehird, well you need to work somewhat on the details
18:49:52 <ehird> really irc is far too klunky
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: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: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:34 <AnMaster> ehird, sure some got account based system
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:55 <ehird> Sgeo: haver kinda punts on the hard stuff
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).
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:10 <ehird> GregorR: so about that egobot patch..
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: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: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:19 <ehird> input in text numerals
20:40:21 <ehird> output in roman numerals
20:40:25 <Sgeo> ..PSOX_ASCII is not about to support that
20:40:29 <ehird> 'ONE ZERO NINE FIVE ZERO'
20:40:38 <ehird> sometimes with bars or underscores
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?
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:38:58 -!- pikhq has quit ("REbooting for new kernel").
00:01:50 -!- pikhq has joined.
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:39 <ehird> heh, the same response always
01:00:42 -!- timotiis_ has quit (Read error: 110 (Connection timed out)).
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: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: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: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: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: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: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:31 <pikhq> Sgeo: It's UNIX-like only.
02:48:41 <pikhq> Which is to say, everything-but-Windows-only. :p
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: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:39 <Sgeo> With PSOX-ASCII, it has to be decent at handling strings
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: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:42:27 -!- Unnamed-4AD202 has changed nick to Slereag.
20:42:28 -!- Slereag has changed nick to Slereah.
20:42:40 <Slereah> I am back from der Scientologie
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:29 <ehird> Slereah: Was there any Rick Astley?
20:45:54 <Slereah> It would be nice to find a way to stop the street blocage.
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:48 <ehird> AnMaster: Anonymous as in the pseudo-entity
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:41 <AnMaster> Slereah, what is "epic fail guy mask"?
20:48:49 <ehird> AnMaster: Anonymous = *chan user.
20:48:57 <ehird> Anonymous = currently warring with CoS.
20:49:19 <AnMaster> there is some organization called "anonymous"?
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:35 <Slereah> From 4chan, or possibly 2chan. I'm not sure when people started to referring to Anonymous as a real single person.
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:52:35 <Slereah> http://www.flickr.com/photos/24718854@N04/2407669233/sizes/l/in/set-72157604504981741/
20:52:58 <Slereah> Giving some auditing, with a multimeter I got for 25 euros.
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
21:35:03 <Slereah> Because it accomplishes the same thing as an E-meter :o
21:35:23 <Slereah> Scientology's "religious technology"
21:42:46 -!- Iskr has quit ("Leaving").
22:07:03 -!- oerjan has joined.
22:13:11 -!- calamari has joined.
22:13:29 * pikhq would like to disband the Union.
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: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: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: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: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: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: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:41 <ehird> It's just subtle indexing bugs..
23:18:42 -!- Endeavour has joined.
23:18:52 <ehird> ['PRIVMSG endeavour', 'Endeavour: You said: endeavour', 'endeavour']
23:19:01 -!- Endeavour has quit (Remote closed the connection).
23:20:20 <ehird> that should be resolved
23:20:24 -!- Endeavour has joined.
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:16 <ehird> 'nobody' was running 'find'
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> :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).
00:01:21 -!- oerjan has quit ("Good night").
00:06:00 -!- jix has quit ("CommandQ").
00:23:12 -!- Endeavour has joined.
00:23:30 -!- Endeavour has quit (Remote closed the connection).
00:23:36 -!- Endeavour has joined.
00:24:23 -!- Endeavour has quit (Remote closed the connection).
00:39:49 -!- Endeavour has joined.
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 <Endeavour> ehird: I last saw ehird on 2008-04-14 at 00:40 in #esoteric, saying ".seen ehird"
00:41:52 <Endeavour> calamari: I haven't seen abc. Sorry!
00:42:04 <Endeavour> ehird: I haven't seen Endeavour. Sorry!
00:42:15 <Endeavour> calamari: I haven't seen \n. Sorry!
00:43:59 <Endeavour> ehird: I haven't seen bot abusers. Sorry!
00:45:28 <calamari> wow.. you are hostile towards your beta testers.. must be M$
00:45:41 <ehird> just kidding, of course
00:46:37 -!- Endeavour has quit (Remote closed the connection).
00:47:01 -!- Endeavour has joined.
00:47:03 <Endeavour> ehird: I haven't seen ehird. Sorry!
00:47:05 <Endeavour> ehird: I last saw ehird on 2008-04-14 at 00:47 in #esoteric, saying "ehird"
00:47:37 -!- Endeavour has quit (Remote closed the connection).
00:47:45 -!- Endeavour has joined.
00:47:48 <Endeavour> ehird: I haven't seen ehird. Sorry!
00:47:53 <Endeavour> ehird: I last saw ehird on 2008-04-14 at 00:47 in #esoteric, saying ".seen ehird"
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:24 <Endeavour> ehird: I haven't seen ehird. Sorry!
00:48:41 -!- Endeavour has quit (Remote closed the connection).
00:48:55 -!- Endeavour has joined.
00:48:57 <Endeavour> ehird: I last saw ehird on 2008-04-14 at 00:49 in #esoteric, saying "test"
00:49:21 <Endeavour> Sgeo: I last saw Sgeo on 2008-04-14 at 00:49 in #esoteric, saying ".seen Sgeo"
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:50:11 <Sgeo> Because what you're doing more closely corresponds with a "lastspoke" than a "seen
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: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 <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: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 <Endeavour> ehird: I haven't seen lament. Sorry!
00:53:00 <Endeavour> ehird: I last saw you on 2008-04-14 at 00:53 in #esoteric, saying ".seen lament"
00:53:07 <ehird> Someone use seen on themselves that haven't talked before
00:53:18 <ehird> .seen 89¨ª•¨å•ª¨·‚
00:53:18 -!- Endeavour has quit (Remote closed the connection).
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: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: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:42:27 <olsner> pikhq: you were supposed to say ".seen pikhq" before saying anything else, to test the bot
01:44:15 <pikhq> And the bot's not here.
01:47:23 <Sgeo> g'night SimonRC
03:25:11 -!- RodgerTheGreat has joined.
03:29:46 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
03:37:26 -!- Visitor-51A12C has joined.
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:55 <oklopol> sim a:as b:bs = match a b + sim as bs | 1 + sim as b:bs | 1 + sim a:as bs
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: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: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: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:10 <oklopol> i don't really know anything
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:25 <oklopol> learned the chart this moning
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: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:50:34 -!- jix has joined.
12:02:44 -!- oklopol has quit (Read error: 110 (Connection timed out)).
12:29:06 -!- UnrelatedToQaz has joined.
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:37:15 <Slereah> It has more database errors than usual!
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:50 * Sgeo is designing one in his head, although the way it does conditionals is rather ugly thus far
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: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: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:10:03 <oklofok> times are numbers of operations executed at a certain point?
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: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: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: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: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:07 <Sgeo> that's done in pl_nextime
17:20:11 <oklofok> *associative array perhaps
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: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: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:37 <oklofok> do you know relational algebra?
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:45 <Sgeo> pl_mem hold single values in a 2-dimensional array
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: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:55 <Sgeo> Or do you mean with the database thing?
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: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:46:40 -!- asiekierka has joined.
17:52:12 <asiekierka> I'd like a programming language that you can program with just using 4 buttons + a D-pad
17:55:53 <Sgeo> asiekierka, can't be too difficult to make YABFC
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:46:12 -!- Corun has quit ("This computer has gone to sleep").
18:48:36 <Sgeo> What's SQL concatonate?
18:49:52 <Sgeo> What is it for MS SQL Server?
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: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: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: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: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:59:16 <Sgeo> http://support.encoreusa.com/kb.asp?id=553%20OR%20id=554;--
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:59 <ais523> it's forbidden as a ctype on Wikimedia because IE will run it as JScript under some circumstances
19:01:08 <ais523> making it possible to avoid XSS restrictions
19:01:23 * ais523 agrees with EgoBot too
19:01:27 <Sgeo> Can subqueries be run in a select clause?
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: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: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:29:33 <ais523> it's still in beta IIRC
19:29:50 <ais523> but early-adoption-style beta, I think
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:35:09 <ais523> I don't know the details
19:35:29 * Sgeo can't find the DL
19:36:06 <SimonRC> mmm, partially-precompiled JITted Javascript with big fat libraries
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: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: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:21 <Sgeo> Flash doesn't seem to want to install
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: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: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: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: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:50 <ais523> because byte-count means you have to translate numbers into decimal
20:06:54 <ais523> progress-bar works in unary
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: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: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: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:21 <oklopol> had no idea what you meant :P
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: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:57 <ehird`> oklopol: can i independently implement it
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:25 <ehird`> i could just look at the logs
21:18:41 <ehird`> so there's no stopping me you could just be a little more helpful :P
21:19:30 -!- Iskr has quit ("Leaving").
21:19:40 <ehird`> you vjn.fi/pb'd the list of primitive functions
21:20:08 <ehird`> :(((( downloading zips make me sad
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:34:07 <ehird`> I am now working on... OKOHIRD
21:34:16 <ehird`> it is OKO in PYTHON, but with continuations ETC
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:40 <SimonRC> he gets the interesting projects
21:42:46 <ehird`> im pretty sure he chose to do it
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:56:02 -!- Tritonio_ has joined.
21:59:34 <olsner> sometimes there's two of him, other times he's not there at all
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: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:59 <Slereah> It's the forum pages with only the pictures
22:32:14 -!- jix has quit ("CommandQ").
22:36:44 <oklopol> ehird`: (a b c d) is okay with ->
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:35 <Slereah> SimonRC : http://membres.lycos.fr/bewulf/Explosm/
22:37:42 <Slereah> It's loading, but the first parts are here
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: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:48 <ehird`> oklopol: but yeah, is it possible to treat -> as special syntax?
22:40:53 <ehird`> like, will it ever appear in something other than the car
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:29 <oklopol> like, implementation of it?
22:41:53 <ehird`> oklopol: what is it called
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: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: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:33 <ehird`> oklopol: ok then, another questin
22:47:40 <ehird`> oklopol: is (-> X) valid?
22:48:47 <ehird`> oklopol: is (X -> Y ...) or similar forms valid, or is (-> X Y Z ...) the only 'pattern match' case
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:41 <ehird`> oklopol: is = variadic?
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:31 <oklopol> it should be a parse error, yeah
22:53:55 <oklopol> you will prolly have the implementation ready by then
23:04:13 -!- Corun has joined.
23:08:31 -!- timotiis has joined.
23:32:14 <ehird`> http://en.wikipedia.org/wiki/Datalog
23:38:40 -!- olsner has quit ("Leaving").
00:00:52 <ehird`> SimonRC: its interseting
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: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:35:58 -!- timotiis has quit (Read error: 110 (Connection timed out)).
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: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: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: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: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:49 <ehird`> Sgeo: Let me guess: It's totally full of relational theory
00:59:08 <Sgeo> We just got through Database normalization.
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:35 <ehird`> I am a timezone bigot! :D
01:01:41 <pikhq> Sgeo, you're currently on EDT.
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: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: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:23 <Slereah> The comments are so awesome.
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:59 <ehird`> they overlap of course
01:09:00 <Slereah> http://www.itwire.com/content/view/13339/53/
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: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: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: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: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: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: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:29 <Slereah> Well, it also has transformation rules.
01:35:31 <pikhq> True. It's a way of defining algorithms.
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: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: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: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:57:29 -!- Sgeo has quit ("Ex-Chat").
05:16:22 <RodgerTheGreat> pikhq: you should see this: http://rodger.nonlogic.org/images/aldez/
05:18:55 <pikhq> Now, check this out: http://video.google.com/videoplay?docid=5737070239476680627
05:19:09 <pikhq> (just totally fucking awesome)
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: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: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: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:50 <calamari> i need to rip off part of your code since I'm too lazy to write it myself
06:34:24 <GregorR> Well, it's in extremely C-ish C++.
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: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:45:01 <GregorR> gcc = much bloat, tcc = tiny
06:58:14 <calamari> I'll have to figure out how to cross compile that for uclibc
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: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:51:12 -!- timotiis has quit (Connection timed out).
18:53:14 -!- oklofok has joined.
18:57:45 -!- jix has quit (Nick collision from services.).
18:57:55 -!- jix has joined.
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: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: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: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:24 -!- oklopol has quit (Read error: 113 (No route to host)).
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:10:00 <ehird> I mean, funcs are only unary or dyadic
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: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: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: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:31:12 <ehird> !daemon dog bf ++++++++++[---------->,----------[>,----------]<[++++++++++.<]++++++++++.]
19:34:20 <ehird> !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+]
19:34:42 <ehird> GregorR: EgoBrokent
19:35:05 -!- oklofok has joined.
19:35:33 -!- oklopol has quit (Read error: 113 (No route to host)).
19:36:13 <EgoBot> 1 ehird: daemon dup bf
19:36:49 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
19:40:44 -!- oklopol has joined.
19:47:05 <ehird> oklopol: okokokoko..
19:50:33 -!- oklofok has joined.
19:50:57 <oklofok> also you can up into singleton with ^
19:52:17 <oklofok> func [Arg Arg Arg] == func Arg Arg Arg
19:52:45 <ehird> what is a ->node called
19:53:05 <oklofok> "oh no" as in "who cares", and "oh no", as in "oh dear god you're wrong"
19:54:24 <ehird> thing,list,1app,2app,match,assign,atom,var(subclass of atom),int,strnig
19:54:44 <oklofok> those are what i have, yeah
19:54:47 <ehird> oklofok: is ($-> a b) a match node
19:55:57 <ehird> oklofok: same with =?
19:56:24 <ehird> oklofok: what is (= a)
19:56:31 <ehird> is it an unary application of = to a
19:57:04 -!- oklopol has quit (No route to host).
19:57:11 <ehird> oklofok: what about (-> a)
19:57:32 <ehird> oklofok: what does it mean
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:49 <ehird> oklofok: are you sure it shoultn't be (-> a f)
19:58:50 <oklofok> yes, have no idea why, but lessee
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: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: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:02:13 <ehird> oklofok: my parser uses a neat trick
20:02:18 <ehird> it can .pop() because it reverses the input
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: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:06:03 <ehird> oklofok: my interp will have script capabilit
20:06:06 <ehird> maybe even a COMPILER
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:24 <oklofok> but oklotalk-- has very retarded parsing rules
20:07:25 <ehird> oklofok: :((( that sucks
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:49 <ehird> oklofok: schemes do that
20:07:55 <ehird> 1+ is a valid id in a lot of them
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: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: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: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:31 <ehird> just whitespace,(,),{,},[,],",$?
20:18:26 <oklofok> it continues until one of the ending parens of whitespace
20:18:44 <ehird> oklofok: does ( break it
20:19:13 <ehird> oklofok: will you kill me if i break that
20:19:27 <oklofok> i don't consider it relevant.
20:19:27 <ehird> thats a closer AND an ender
20:19:59 <oklofok> i already said what the rules are :)
20:20:22 <oklofok> this is trivial stuff, who cares, is my opinion
20:20:46 <oklofok> it will be made sane once i actually *make a syntax*
20:21:07 <ehird> so, oklofok: whitespace,),},]
20:21:09 <oklofok> for a clearer answer: yes, you can chan that
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: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:25:54 <oklofok> i despise the tab character
20:26:26 <ehird> think about it this way
20:26:31 <ehird> the tab has a semantic meaning for code
20:26:35 <ehird> 'we are indenting now, ok'
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: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:30:20 <ehird> oklofok: did tabs abuse you when you were young?!111212
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: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:32:23 <ehird> continuations, compilation..
20:32:55 <ehird> Awesometalk without the -- will be THE BEST ENTERPRISE OKLOTALK
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:27 <Slereah> Or we could buy cotton candy.
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:26 <ehird> I have not made lists yet
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: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: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:29 <ehird> oklofok: an oklotalk parser in 1-3 man hours
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: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:52 <ehird> oklotalk-- calls python --> python calls oklotalk-- -> oklotalk-- code
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: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: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:24 <oklofok> i just wrote it, and assumed it worked :)
20:41:36 <ehird> mine isn't hideously broken though
20:42:10 <ehird> oklofok: it returns weird stuff
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 <ehird> you cant pass a string as an argument
20:42:46 <ehird> it tries to parse as an int
20:43:36 <ehird> oklofok: jesus christ
20:43:52 <oklofok> have no idea what you mean
20:44:12 <oklofok> you mean (lol "asdasdads")
20:44:33 <oklofok> have no idea what you mean
20:45:38 <ehird> oklofok: look in logs
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: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:49:30 <ehird> oklofok: well its from logs
20:51:30 <ehird> oklofok: should objects (okos) belong to okoists (interpreters)
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: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:07:58 <oerjan> I don't know if that's where he wants bug reports though
21:12:28 <ehird> AnMaster: post to usenet
21:12:56 <AnMaster> ehird, and I don't have any read/write news account
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:52 -!- olsner has quit ("Leaving").
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:44:39 <oklofok> multiple interps at one time?
23:45:18 <oerjan> to sleep, perchance to dream
23:45:36 <oklofok> no you can't purchase my dreams
23:45:43 <ehird> wish i could be ast
23:45:59 <oklofok> "multiple interps at one time"?
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: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:57 <oklofok> returns result, stores context
23:48:03 <oklofok> you can use that from the pyc of c
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 <ehird> its not really oriented to that
23:48:39 <oklofok> i told you about Runner, but quite briefly
23:48:56 <oklofok> you can just dir the modules
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:18 <ehird> oklofok: i bet £999 that you won't actually go to sleep
23:50:29 <ehird> and that you'll stay here
23:50:56 <oklofok> there's a naked chick next to me
23:51:10 <ehird> oklofok: ok, good point
23:51:29 <oklofok> whhhell, wouldn't be the first time i choose oklotalk over a chick
23:51:42 <ehird> oklofok: WHAT ABOUT SCOPING
23:51:48 * ehird watches oklofok reappear
23:52:09 <oklofok> you know all about scoping, man
23:52:24 <ehird> what about dynamic container singletons
23:52:25 <oklofok> static, dynamic look-up if static finds nothing.
23:52:34 * oerjan still has doubts about the sleeping part
23:52:40 <ehird> dunno, better make up a meaning
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:41 -!- oerjan has quit ("Good night").
23:53:46 <oklofok> can you be more spesific...
23:53:55 <ehird> oklofok: its a structure
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:31 <ehird> oklofok: maybe, dunno how to do the exact forcing
23:55:02 <oklofok> scoping is only done for variables
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:23 <ehird> i'm just trying to keep you here
23:55:45 <ehird> but a is dynamically scoped
23:55:57 <oklofok> a isn't dynamically scoped
23:56:04 <oklofok> it's bound by the pattern match
23:56:05 <ehird> you force it to be
23:56:14 <ehird> by using the other expressions
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:58:30 <ehird> oklofok: you are still here.
00:03:56 <Slereah> Maybe I can write the Andrei Machine 9000!
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: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: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:14:17 -!- timotiis has quit ("rebloodybooting! They said I wouldn't have to do this on linux!").
00:16:41 -!- timotiis has joined.
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: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:27:10 <ehird> public class Closure<T,U> { public Closure(Object... vars); public U apply(T arg); }
01:27:45 <ehird> new Closure<Integer,Integer>(a, b, c) { public Integer apply(Integer n) { return n + (Integer)this.vars[0]; } }
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: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:01:04 <oklofok> before you start asking again :-)
02:27:05 -!- Quendus has quit (Read error: 113 (No route to host)).
02:27:42 -!- Quendus has joined.
02:30:12 <ehird> haven't seen that name
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> 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:39:41 <Sgeo> http://youtube.com/watch?v=g3KufmUlF5M == fail
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: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)"
10:16:42 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
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:37 <AnMaster> Deewiant, I'm no perl expert either
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
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:56 <AnMaster> Deewiant, well a good question
13:02:16 <AnMaster> the specs are unclear on what to exactly capture I think?
13:02:33 <Deewiant> it's the value of the expression evaled
13:02:54 <AnMaster> what about loading libperl.so, I think you can do something like tht
13:03:40 <Deewiant> possibly... but it shouldn't be necessary
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: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: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:10:33 <AnMaster> also I wonder why I get a segfault with boehm-gc if I use execlp after fork(), execvp works
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:17:36 <AnMaster> Deewiant, btw, does windows have vfork()?
13:18:08 <AnMaster> so how do you start another process without replacing the current one
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:22 <Deewiant> windows doesn't use the fork/exec model
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: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:43 <Deewiant> but then you can reserve it for the eval result
13:22:51 <AnMaster> anyway I use a perror() after forking
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: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: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:50 <AnMaster> read = p.stdout.input.read(buf);
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:28:08 <Deewiant> similarly stdin is an output stream
13:28:19 <AnMaster> Deewiant, but then is stdout.output invalid?
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: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: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: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: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: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: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: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: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: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: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:08 <Deewiant> you can do that in D 2.0 as well. :-)
13:51:17 <AnMaster> I have no problems using sed or awk
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: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: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: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:35 <fizzie> Eval takes either a string or a block of code and evaluates it.
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:27 <Deewiant> AnMaster: that's an expression. you can pass the result of printf to a function in C just fine as well.
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: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: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: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: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: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: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: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: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: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: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: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: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: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: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:37 <Deewiant> AnMaster: you send EOF by closing the pipe.
14:11:42 <Deewiant> or file descriptor, or whatever.
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:17:25 <Deewiant> no difference in perl, just like in bash :-)
14:17:43 <AnMaster> Deewiant, there is a difference in bash
14:18:03 <AnMaster> the difference is that $foo will expand to two parameters
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:19:35 <AnMaster> echo will do the same, but say: foo="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: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: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: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: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: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: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: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: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: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:58 <Deewiant> and then AnMaster came complaining :-P
14:46:07 <AnMaster> Deewiant, err? you didn't use {
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: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:50:29 <fizzie> Oh, I just figured out an embarrassingly easy way to pass the code to the Perl interpreter.
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: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:57 <fizzie> perl -e 'print $ARGV[0], "\n";' foo prints "foo".
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: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:19 <AnMaster> http://rafb.net/p/VFZ2St69.html
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: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:53 <fizzie> Er, well, just use the realname, then.
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: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: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: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: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: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: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: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:37 <fizzie> Actually Perl 6 goes and makes some Unicode chars operators, too. :p
15:18:53 <fizzie> Like the single-character versions of the '<<' and '>>' quotes.
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: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: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: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: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:28 <fizzie> Perl 6 operators grepped from my irclogs, might be outdated: there's ^_= and »+^« and ^..^
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: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:51 <ehird`> AnMaster: my implementation of oklotalk--
16:57:06 <AnMaster> what differs between the normal one and --?
16:57:40 <ehird`> he has not made oklotalk yes
17:01:44 <AnMaster> ehird`, is the syntax that hard to parse?
17:02:18 <ehird`> AnMaster: Yes, there are no syntax errors
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:09:00 <oklofok> { has a lower precedence than (, it would actually be ({{{([])}}})
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: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:43 <ehird`> { outn "wooty"; x -> func x $hello; outn "wotty" }
17:14:52 <ehird`> { outn "wooty"; x -> (func x $hello); outn "wotty" }
17:15:02 <ehird`> { outn "wooty"; x -> func x $hello, outn "wotty" }
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:27 <ehird`> it's not that much different
17:16:42 <ehird`> oklofok: and my way means stuff can be shorter
17:16:47 <oklofok> anyway, true, it's not much use
17:16:49 <ehird`> which do you do more often
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:12 <ehird`> and [...] is nicer because with ,
17:17:17 <ehird`> its hard to pick out where hte list starts and ends
17:17:29 <oklofok> there are elaborate rules for it
17:17:34 <oklofok> anyway, south park time :)
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: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: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: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:41:26 <ehird`> Deewiant: Well, I don't see what other distro would work well.
17:41:45 <ehird`> And the rest are either dead, related to Ubuntu or extremely minimalist.
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:45:21 <AnMaster> <ehird`> AnMaster: If you want to hype Gentoo, now would be the time.
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: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: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: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: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:50:17 <ehird`> AnMaster: Hmm. How does it differ from, say, debian unstable
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: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: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:21 <ehird`> I don't know. This machine is a demon.
17:54:27 <ehird`> It is pure evil itself
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: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:49 <AnMaster> http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface
17:56:56 <AnMaster> ehird`, however it can cause issues sometimes
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: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:59:09 <AnMaster> and was debian included in it?
17:59:17 <ehird`> FreeBSD, debian, ubuntu, fedora, slackware, and others
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:10:40 <ehird`> AnMaster: woot, 600kB/sec
18:10:43 <ehird`> i love my internet connection
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: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: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: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: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:17 -!- ehird has joined.
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:54 <ehird> AnMaster, Don't feel like KDe today.
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:57:36 <AnMaster> oklofok, btw you got the pyc files for me? I don't have python 2.5
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: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: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: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: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:12 <ehird> is the outer scope's A mutated,
20:21:19 <ehird> or is it just created in the inner one
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:15 <ehird> i don't do nesting
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:31 <ehird> which is expected to return a value
20:38:34 <ehird> and is called in a loop
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:40:12 <ehird> what about scoping
20:40:16 <ehird> i asked a question about it
20:40:22 <ehird> <ehird> oklofok, scoping question
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> 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:27 <ehird> <ehird> oklofok, qutie important
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: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:48 <oklofok> you know the chick i was talking about
20:41:59 <oklofok> i have to watch an episode now
20:55:30 -!- Slereah has quit (brown.freenode.net irc.freenode.net).
20:56:05 -!- Slereah has joined.
21:03:39 -!- Iskr has quit ("Leaving").
21:08:08 <ehird> AnMaster, look at me! I just installed non-free software!
21:08:19 <ehird> good to know debian is no longer run by idealist idiots
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: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: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: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:55 <ehird> Though it looks complex.
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: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: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: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: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: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: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: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: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:52 <ehird> you don't need a mirror
22:00:30 <ehird> ais523, wow, g++'s error messages just rock
22:00:49 <ais523> ehird: which one in particular did you like? gcc's are quite good, are g++'s even better?
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: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:24 <ehird> Actually, you never have to write values again, since C++ templates are turing complete
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: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> 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:37 <ehird> templates TOTALLY fuck up 'declaration-as-usage' :D
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:49 <ehird> 'class' is the return value
22:22:12 <ais523> oerjan: is that a smiley, or cise code?
22:22:43 <ehird> template <template <typename> <template <typename> class> T>
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:23:03 <ehird> he has an implementation of binary brainfuck in it that is less than 80 characters
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:06 <ehird> where U and V are typenames.
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:11 <lament> brainfuck interpreter is 1 char in my language!
22:30:44 <Slereah> lament : Is that the ESCO LANGUAGE?
22:31:19 <lament> my language is based on lazy library loading
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: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: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:15 <oklofok> holy shit how can i concentrate on my homework after this
22:35:33 <lament> it's imperative programming
22:35:41 <lament> do what i mean or else
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: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:40 <ehird> maybe do what i mean depending on the moon cycle
22:39:30 <oklofok> do whatever i mean by this acronym.
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: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:14 <ehird> ais523, I had an idea for a package
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: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:50 <ehird> packages arent objects are they?
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: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: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
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:25 <ehird> ais523, I will then do template lisp.
23:17:31 <ehird> ais523, And then -- finally -- template $esolang
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:34 <oklofok> i've also always hated xml
23:41:57 -!- oklofok has changed nick to oklohot.
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: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: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: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: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:18 <ehird> and it won't be a bug
23:51:25 <ehird> it'll be a real honset to god FEATURE
23:54:34 <ehird> oklohot, the C++ ski?
23:54:41 <ehird> but i think sii-sii is untypeable
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:18 <ehird> because it takes ITSELF as an argument
23:56:10 <oklohot> anyway, isn't that problem also apparent in haskellö
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:58:00 <ehird> oklohot, SKI are pretty useless in a strongly-typed environment
23:59:07 <ehird> oklohot, err, no, C++ templates are turing complete
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:59 <ehird> the first argument of K must be a type
00:01:08 <ehird> so SKSK is invalid
00:02:46 <ehird> oerjan, yeah, it's "typename a->typename b->typename a"
00:04:19 <ehird> no template typedefs in gcc
00:04:26 <ehird> anyone know of a compiler that isn't a toy? ;)
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: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:21:01 <oklohot> add parens around (tm -> c++ template)
00:21:19 <oklohot> anyway, i mean, just an automatic translation
00:21:38 <ehird> oklohot, http://www.blogblog.com/no897/corner_main.gif
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: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: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: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:15 <ehird> Slereah, well, basically
00:34:25 <ehird> where T can be anything
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: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: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: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: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:18 <oklohot> i usually pwn at my own languages :)
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:45 -!- timotiis has joined.
00:52:46 <ehird> It teaches almost all of C.
00:52:48 <Slereah> Wait, we're already tuesday?
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: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:28 <Slereah> Such as Brainfuck, Ook, Spoon...
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.
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:24 <Slereah> Plus, they're all available on mr twig and the south park official website :o
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: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:42:13 -!- Sgeo has quit ("G'night").
06:16:37 -!- calamari has joined.
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: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:54 <oklopol> <: <<:> <<:> <:>>> ><<> <> <>>< >
08:06:56 <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: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: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: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:22:19 <oklopol> i smell overwhelming interest
08:22:55 <oklopol> GreaseMonkey: you interested in negative lists?
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: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: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: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: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:17:40 <ehird> oklopol, well, fix it
15:17:43 <ehird> i want to use the modules
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: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:35 <oklopol> that's all you need to be able to use
15:21:04 <ehird> but i want to use the parser
15:21:13 <ehird> i can get the runne
15:21:17 <ehird> then grab its copy of parsing
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:44 <oklopol> that works, but import parsing doesn't?
15:23:19 <ehird> import parsing WORKS now
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: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:25:34 <oklopol> i have functions.set_functions(dyn_vrs)
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:25 <oklopol> in oklotalk.py, i do a reload an all modules
15:27:43 <ehird> have you submitted it yet? gimme the source and let me fix it :P
15:28:07 <oklopol> and i could fix it myself if i care even the teensiest bit
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:35 <oklopol> but, well, the parsing is trivial :o
15:29:43 <ehird> oklopol, yeah but mine is broken
15:30:09 <oklopol> well i say have fun fixing, is that okay? :P
15:30:24 <ehird> oklopol, oh and should i add compile-time stuff
15:30:40 <ehird> is evaluated at compile time
15:30:44 <ehird> and then '4' is put in its place
15:31:40 <ehird> oklopol, untuplify=??
15:32:01 <oklopol> what about untuplification? :)
15:32:25 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
15:32:39 <ehird> oklopol, you're an unhelpful bastard
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: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:37:38 <oklopol> btw. what was wrong with your parsing?
15:38:08 <oklopol> or was it simply too awesome and imploded
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:43:27 <ehird> oklopol, btw, is there actually a complete okoprogram written?
15:44:06 <oklopol> the only "program" is the one quicksorting rational
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: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:17 <oklopol> (i had only actually invented uplevel lists, or "zero depth lists" before)
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:55 <ehird> oklopol, i think i'll just try (outn "hello world")
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:39 <ehird> also, oklotalk doesnt have eval does it?
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:36 <ehird> feel free to write oko-in-oko though
15:51:41 <ehird> 'cause if you do that
15:51:44 <ehird> then you have oko-in-c
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:34 <oklopol> so you calling oklotalk oko?
15:52:59 <oklopol> wonder if i should change the official suffix to that
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:55:31 <ehird> oklopol, so, my thing is really tupletree->C
15:55:36 <ehird> or should it be untuplified->c
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: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: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:18 <ehird> oklopol, there are no functions
16:00:33 <ehird> oklopol, outn IS an atom
16:00:53 <ehird> so shoudln't (outn "abc") send $outn to "abc"?
16:01:07 -!- jix has joined.
16:01:40 <oklopol> currently, there is no $str for standard string representations, but primitive funcs do it.
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:47 <ehird> and is also slower
16:03:45 <oklopol> fails on infinite lists in 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: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: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:07:14 <oklopol> especially with that capitalization, i'd say that's perfect
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:54 -!- timotiis has quit (Read error: 110 (Connection timed out)).
16:09:02 <oklopol> it's actually >...<, but that's just to make it more confusing, ofc :)
16:09:30 <ehird> [('thing',('match',('atom',0),('atom',0)), ('name','a')]
16:09:45 <ehird> i don't know, it just tries to make it something more malleable to C
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:11:12 <ehird> oklopol, okotypes:
16:11:22 <ehird> atom, thing, int, string
16:11:47 <oklopol> well if you wanna separate built-in types, list..?
16:11:59 <ehird> oklopol, atom,thing,int,string,list
16:12:11 <ehird> your rtf says thats right
16:12:34 <ehird> oklopol, so i need 3 bits on a pointer
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: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:39 <ehird> 4 = 00000000000000111
16:16:46 <ehird> so, 4 will extract the tag
16:17:01 <ehird> oklopol, the tag is stored in the lowest 3 bits of the poitner
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: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: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:28 <ehird> but oklopol is still wrong
16:18:46 <oklopol> was jsut wondering about the 4
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:22 <ehird> oklopol, acknowledge that <<3 on a literal string is awesome
16:20:21 <ehird> template.c:17: error: invalid operands to binary <<
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: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: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: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:30 <ehird> fizzie, http://www.accesscom.com/~darius/hacks/ichbins.tar.gz This compiler is what I stole the tagging from!
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: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:32 <ehird> fizzie, Any reccomendations?
16:33:11 <ehird> fizzie, Hmm, no. need suggestions
16:38:05 <ehird> We only use the very lowest bit
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: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: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: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:52 <ehird> I love union casts
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:52:57 -!- oklopol has quit (Connection timed out).
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: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:15 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
17:32:19 -!- Sgeo[College] has joined.
17:35:32 -!- oklopol has joined.
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:54 <oklopol> >>> parsing.parse("\"asd\"")
17:40:07 <ehird> oklopol, okay, are strings immutable?
17:40:18 <ehird> oklopol, will they always be
17:40:40 <oklopol> they will be in oklotalk--
17:40:44 <ehird> oklopol, i can't cache them anyway
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:41:01 <ehird> (but obviously you can strings)
17:41:05 <ehird> oklopol, good. i hope it stays like that
17:41:16 <ehird> 'cause i statically allocate all atoms right now
17:41:20 <ehird> oklopol, okintermediate is going quite well
17:42:44 <ehird> ({(outn "hello") (-> $hello 2) (-> x x)} $hello)
17:42:49 <ehird> it can compile that save for the (-> ...)
17:44:38 <ehird> oklopol, to OKINTERMEDIATE
17:45:31 <ehird> oklopol, hmm, dunno how to handle matches
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:53 -!- timotiis has joined.
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:50 <ehird> for pattern matching
17:47:03 <ehird> oklopol, (: (: a b) (: c d))
17:47:06 <ehird> i can compile that to
17:47:29 <ehird> where all the calls are..
17:47:32 <ehird> this needs thinking
17:47:42 <ehird> oklopol, right now
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: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:42 <ehird> i made a cons cell
17:49:50 <ehird> 'ehird liked it so much he made a compiler to C'
17:50:01 <ehird> oklopol, also, you have to admit that oklotalk-- IS okolicious
17:50:17 <oklopol> it's nice, but i want the oklotakl dispatch rules...
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:51:02 <ehird> hey, MY compiler will be open source
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:55 <ehird> oklopol, does that look right to you?
17:55:08 <ehird> i do <ARGS> <FIRST> <CALL1/2>
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:37 <oklopol> yeah you can do rpn conversion with oklotalk--
17:55:41 <oklopol> in oklotalk, it's impossible
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: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:57 <oklopol> but the dispatch rules are really retarded.
17:57:02 <ehird> oklopol, is that the right rules?
17:57:16 <ehird> oklopol, return $f is just return the last telling
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: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)
18:00:08 <oklopol> the notation was lisp, call a with b, then b with a
18:00:21 <ehird> oklopol, am i right abut the {2} thing
18:00:42 <ehird> oklopol, so no expressions, as in {}, is $f
18:00:47 <ehird> and (-> a ...), when failing, returns $f
18:01:01 <oklopol> last evaluated expression is returned
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: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 <ehird> :: ({(-> $foo 2) 3} $a)
18:01:45 <ehird> :: ({(-> $foo 2) 3} $foo)
18:01:49 <ehird> oklopol, you are sooo wrong
18:02:26 <ehird> oklopol, nowhere, see?
18:02:26 <ehird> here's what i'm saying
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:04:03 -!- oktabot has joined.
18:04:21 <ehird> oklopol, i tested this in the cli
18:04:58 <oklopol> if i understood what you mean, $f should've been returned
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: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: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:48 <ehird> it the match FAILS, -> *disappears*
18:09:53 <ehird> i.e. like it was never in the source code
18:10:12 <ehird> oklopol, it means that your example reducse to ({_} 5)
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:42 <oklopol> have no idea... it's basically tree rewriting
18:11:01 <oklopol> tree rewriting can be used for lc quite easily
18:11:06 <ehird> Opening test.ot...
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: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: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:45 <ehird> 'var'/'atm' like that for the atoms list
18:12:07 <ehird> and the reason there's an extra func
18:12:10 <ehird> is that (-> a b c d)
18:12:17 -!- RedDak has joined.
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:13:45 <oklopol> ->'s expression args are evaluated as normal uplevel statements.
18:14:20 <oklopol> it's not just pattern matching, it's s unification of pattern matching and imperative program flow
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: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: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: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:54 <ehird> PATMACH(foo) || (compiled)
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: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: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: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: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: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:32 <ehird> oklopol, hmm, nopol..
18:30:19 <oklopol> semantics aren't ready yet
18:30:31 <oklopol> for instance, the negative list thingie
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:31:02 <ehird> Explain it in words of four letters or less.
18:31:25 <oklopol> so you take the list that is neg
18:31:53 <ehird> oklopol, you are so cheating
18:32:00 <ehird> how does it relate to this
18:32:23 <ehird> oklopol, so .. it's a list of length 1
18:32:26 <oklopol> a is 0 deep in "a", on the other hand
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: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:40 <oklopol> now, unnesting the list, or lifting it
18:33:50 <oklopol> this would be a list of depth 0
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: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: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:38 <oklopol> turned out there's at least one thing it can do
18:37:00 <ehird> oklopol, ok, now what about negative length lists
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: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:52 <ehird> {a} is a list of length -1
18:38:58 <ehird> oklopol, with me so far?
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: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:40:56 -!- lament has joined.
18:40:59 <ehird> i interpret that as
18:41:03 <ehird> 'we bring 2 things from the -3'
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:44 <oklopol> right now i'm going to concentrate on negative depth
18:43:02 <oklopol> i need two types of lists, evaluated ones, and non-evaluated onees
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:47 <oklopol> (my favorite characters in ascii)
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:21 <ehird> (in your parsetree)
18:46:42 <oklopol> -- >...< = <-...>, clearer neglist syntax
18:47:09 <oklopol> i have no idea what whitespace semantics are
18:47:19 <oklopol> they're just kinda intuitive
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:40 <oklopol> my implementation has some
18:49:50 <oklopol> but they are implementation defects
18:50:02 <oklopol> before continuations that is
18:50:27 <ehird> oklopol, which ones
18:51:18 <oklopol> raise "This should've been caught at parsing, IMO."
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:53 -!- oktabot has quit (Remote closed the connection).
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:45 <ehird> OKO ot(int p, ERROR *e) {...}
18:52:47 <ehird> oklopol, which? :P
18:53:09 <ehird> OKO r; if (ot(0, &r) != OK) { error } else { use value in r }
18:53:12 -!- oktabot has joined.
18:53:25 <ehird> ERROR e; OKO r = ot(0, &e); if (e..
18:53:29 <ehird> i prefer the latter
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: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:42 <ehird> ot_funcid(ref-to-result)
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: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:20 <oklopol> perhaps after going to the shop
19:08:41 -!- jix has quit (Nick collision from services.).
19:08:51 -!- jix has joined.
19:18:33 <oklopol> thought about nopol for like an hour here
19:18:37 <oklopol> no idea how to do the parsing
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:26 <oklopol> this is like 10 lines of code with : and .
19:20:43 <oklopol> i think i've deserved my south park time
19:22:04 <ehird> do i need to have a var of the last evaluated expr?
19:23:35 <ehird> oklopol, so like matches, at the end of their compiled stuff, do 'return last;'
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: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:42 <ehird> oklopol, you said you weren't that interested in another ot--
19:28:09 <oklopol> different kind of not interested x
19:28:51 <oklopol> i'm gonna make a compiler later anyway, never hurts to have competition
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:56 <oklopol> http://www.vjn.fi/pb/p244334413.txt
19:34:17 <ehird> oklopol, i wish you could force strings to prettyprint with "doublequotes"
19:39:26 <ehird> oklopol, bah, this is boring right now
19:42:17 <ehird> oklopol, negative length lists
19:44:19 <ehird> oklopol, explain them
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: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:50:51 <ehird> oklopol, i'll be back in like. an hour
19:59:05 <oklopol> <>< <> <> <> ><> <>< ><> === <<-> <> <> <> <- <> <>> <->>
19:59:23 <oklopol> the parsing system simply didn't do what i wanted
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:35 <ehird> oklopol, make it depend on whitespace
21:51:38 <ehird> < >< <> <> <> ><> < >< ><>
21:52:20 <ehird> (+ (-) (+) (+) (+) (-)) (+ (-) .. something)
21:52:31 <ehird> oklopol, that is intuitive.
21:53:53 <ehird> (+ (-) (+) (+) (+) (-)) (+ (-)) (+)
21:53:55 <ehird> oklopol, so almost
22:00:56 -!- oklohot has joined.
22:02:12 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
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:16:20 -!- timotiis has quit (Connection reset by peer).
23:18:33 <GregorR> DONT U WISH U HAD IT?! U SO DO SO BUY IT http://www.cafepress.com/bizarregeek.250445859
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:30 -!- jix has quit ("CommandQ").
23:24:57 <GregorR> Was that your way of declaring that you bought seven?
23:33:46 -!- timotiis has joined.
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:55:53 <ehird> GregorR, My sense of humour is ... unique.
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: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.
02:08:39 <lament> you missed the Church half
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: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: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:52:09 -!- EsoBot has quit (Remote closed the connection).
04:55:11 -!- fizzie has joined.
04:55:26 -!- EsoBot has joined.
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:57 <EsoBot> sh: beef: command not found
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: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:12:47 <EsoBot> bin dev etc home lib proc sbin sys tmp usr
05:13:07 <calamari> I think it was better before.. hehe
05:13:46 <EsoBot> Python 2.4.2 (#3, Apr 13 2008, 20:46:27)
05:13:48 <EsoBot> Type "help", "copyright", "credits" or "license" for more information.
05:14:23 <EsoBot> Type help() for interactive help, or help(object) for help about object.
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: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:45 <EsoBot> sh-3.2$ export TERM=dumb
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:50 -!- Sgeo has quit ("Ex-Chat").
05:25:03 -!- Sgeo has joined.
05:25:23 <EsoBot> sh: :q: command not found
05:25:32 <calamari> ahh I guess it did work then.. hehe
05:27:23 <calamari> EsoBot: export PS1='[\s-\v] \w\$ '
05:27:25 <EsoBot> sh-3.2# export PS1='[\s-\v] \w\$ '
05:27:36 <EsoBot> [sh-3.2] /home/root# ls -a
05:27:37 <EsoBot> [1;34m.[0m [1;34m..[0m
05:27:54 <EsoBot> [sh-3.2] /home/root# pwd
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:36 <EsoBot> [sh-3.2] /home/root# echo ~
05:50:11 <EsoBot> [sh-3.2] /home/root# ls -a --color=never /
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:35 <pikhq> Your shell is not a valid Bourne shell.
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:44 <pikhq> Can't you see it's forkbombed?
05:52:12 <pikhq> And with that, I'm done fucking it over.
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: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: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: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:51 <EsoBot> sh-3.2# cat /proc/meminfo
05:57:26 <EsoBot> VmallocTotal: 1007584 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: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: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:59 <calamari> so now I need to learn how to use ed
06:05:56 <EsoBot> hello.py: No such file or directory
06:08:49 <EsoBot> "hello.py", 2 lines, 44 chars
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:47 <EsoBot> sh-3.2# chmod +x hello.py
06:12:15 <calamari> maybe there is a stty command I need
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:55:36 -!- EsoBot has quit (Remote closed the connection).
06:57:06 -!- EsoBot has joined.
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
07:00:41 <calamari> still needs to check for nick changes and such so be gentle :)
07:05:09 -!- EsoBot has quit (Remote closed the connection).
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: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: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: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: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:51 <oklopol> algorithms exam sounds easy
15:10:49 <oklopol> how many pieces of art are we talking? hundreds
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: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: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: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:53 <oklopol> okay, perhaps i don't know it, avl isn't isomorphic
15:18:10 <oklopol> anyway, good luck, i'll leave for a while now!
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: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:57 <ehird> linking to anything which can lead to that picture is a trap
15:34:03 <ehird> i can't restrain myself
15:37:06 -!- oklopol has quit (No route to host).
15:55:55 -!- oktabot has quit (Connection timed out).
16:17:03 -!- ais523 has joined.
16:17:32 -!- Sgeo has joined.
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: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: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: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: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: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: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:28 <ais523> ehird: I don't know it very well
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:17 <ehird> Gnome: GUIs for genius retards
16:33:17 <ais523> you have the toolbar at the bottom?
16:33:33 <ais523> yes, bottom is good for a taskbar
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: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: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:32 <ehird> you can bind it to a screen corner
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 <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: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:35 <ehird> that's actually useful
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: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: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: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: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: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: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: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:31:14 <ais523> although it seems to be a different sort of antijoke from ehird's
17:31:25 <ehird> ais523, Knock knock
17:34:50 <ehird> KNOCK KNOCK KNOCK KNOCK
17:35:34 <ais523> we're not in right now, try coming back later
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: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: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:20 <Slereah> But well, now they aren't shapes anymore.
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:50:02 <ehird> ais523, aren't all animals upgraded over time?
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:31 <pikhq> Arguably, that involves evolution whilst alive.
18:02:49 <pikhq> (because mutations *do* occur during mitosis)
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: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: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: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: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:45 -!- EgoBot has changed nick to ehird.
18:53:49 <ehird> can't guess the pw
18:55:21 -!- pikhq has joined.
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: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:43:49 <oerjan> speed of light seems slow today
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: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: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: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: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: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: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:08 <ehird> <Slereah> There's plenty of impossible things that are still impossible
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: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: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: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:58 <Slereah> Probable implies probability.
22:15:20 <Slereah> People remember impossible thing becoming possible
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: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 * oerjan recently saw a link about something called 'laserwort'
22:17:18 * pikhq prefers gloomy optimism and sunny pessimism. :p
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: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:28 <ehird> I WANT TO MISQUOTE A VERSE
22:21:39 <oerjan> it died out before christianity got very important though
22:21:51 <ehird> We used to be able to do magic!
22:21:55 <ehird> Then they came and oppressed us.
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:24:25 <Slereah> Well, it was the speed *of light*
22:24:35 <Slereah> But other than that, of no physical importance.
22:29:16 <ehird> exec -o fortune -a
22:29:18 <ehird> sh: fortune: command not found
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: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: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: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: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: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: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:27 <ehird> fortunes-mario fortunes-bofh-excuses fortunes fortune-off
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: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:48:49 <GregorR> "I'm pro-choice, because fetuses are delicious."
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: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: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: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: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: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.
00:00:10 <GregorR> ehird: Too similar to in-the-code or otherwise undrawable.
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: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: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: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.
04:21:36 <GregorR> RodgerTheGreat: I got the AWESOME T-shirt.
04:26:16 <GregorR> Is that your celebratory dunce hat?
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: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: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: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: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: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: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:49:35 <oklopol> but you said it was isomorphic to a rb-tree
04:50:02 <RodgerTheGreat> http://en.wikipedia.org/wiki/Red_black_tree#Analogy_to_B-trees_of_order_4
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:54:04 <oklopol> second sentence really answers my ponderings
05:00:49 <oklopol> well how was i supposed to know :D
05:22:06 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
05:59:57 -!- RodgerTheGreat has quit.
06:04:36 -!- calamari has joined.
06:06:20 -!- EsoBot has joined.
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.
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: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:17 -!- bsmntbombdood has joined.
16:39:45 -!- ehird has joined.
17:03:37 -!- Judofyr has joined.
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: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: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:31 <calamari> sorry.. forgot to restart it for ya
19:27:54 <EsoBot> 165 root /bin/sh /etc/init.d/rcS
19:28:04 <EsoBot> 199 root telnetd -l /bin/bash
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:30:05 <EsoBot> Python 2.4.2 (#3, Apr 13 2008, 20:46:27)
19:30:06 <ehird> EsoBot: import threading
19:30:09 <EsoBot> Type "help", "copyright", "credits" or "license" for more information.
19:30:16 <ehird> EsoBot: while True:
19:30:23 <ehird> EsoBot: threading.Thread().start()
19:30:42 <ehird> calamari, That should work QUITE thoroughly.
19:30:56 <calamari> ehird: you don't need python for that
19:31:07 <ehird> calamari, For real threads you do
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:35 <calamari> IndexError: string index out of range
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:42:50 -!- kwertii has joined.
19:43:02 -!- EsoBot has joined.
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: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: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:14 <EsoBot> 218 cmdline irq slabinfo
19:50:37 <EsoBot> -r-------- 1 root root 33558528 Apr 19 18:50 /proc/kcore
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: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:03 <ehird> EsoBot: echo >/proc/kcore
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:10 <ehird> Deewiant, Already root
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:26 <EsoBot> ufffffff`faf[f^ffSffCffguf[fNo setup signature found...
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: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: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: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: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}>$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:33 <ehird> calamari, Yeah put it in #esobot
19:52:49 <ehird> So we don't muck up here!
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: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: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: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: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: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: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: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:29 <ehird> nobody else is using it for experimentation
20:04:32 <ehird> we're just having fun breaking it
20:04:54 <calamari> Deewiant: that argument is equally applicable to EgoBot
20:05:13 <ehird> calamari, no it is not
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: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: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: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:27:47 <ehird> UnrelatedToQaz: ello
22:34:44 <ehird> UnrelatedToQaz: is this RelatedToEsotericProgrammingLangauges
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: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:35 <UnrelatedToQaz> so Haskell was basically the Esperanto of functional programming languages?
23:06:57 <oerjan> strongly typed, lazy functional ones
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:13:24 <UnrelatedToQaz> no! my precious side-effects and destructive updates! how shall I cope without them
23:13:41 <ehird> UnrelatedToQaz: happier.
23:16:03 <ehird> UnrelatedToQaz: So does oerjan. ;)
23:16:23 <ehird> #haskell - 437 people
23:16:59 <UnrelatedToQaz> that would be a more effective argument if I knew what ruby was
23:17:11 <ehird> BREAKING NEWS: UnrelatedToQaz found living under rock.
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: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:53 <ehird> UnrelatedToQaz: kind of a cheat - #ruby has 196 people
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: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:21:13 <ehird> Haskell scares Slereah.
23:21:17 <ehird> He tried to learn it once.
23:21:34 <oerjan> he got stuck in a monad and never got out
23:22:29 <ehird> UnrelatedToQaz: Whenever you read 'monad', think 'warm fuzzy thing'.
23:24:19 <Slereah> But monads aren't warm or fuzzy D:
23:26:08 <Slereah> I got Mathematica 6 today.
23:26:17 <Slereah> I hope it is awesome and all.
23:26:54 <UnrelatedToQaz> slereah: I've heard of Mathematica! Is the new one good?
23:27:51 <Slereah> Haven't had time to really try it out
23:28:00 <ehird> mathematica = wolfram
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:34:43 <Slereah> http://www.torrentz.com/dd1c50393c5a7a8c7f9cf59d9051f35e4a0468ee
23:59:36 <SimonRC> http://www.catonmat.net/blog/wp-content/plugins/wp-downloadMonitor/user_uploads/model_view_controller_song.mp3
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: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: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:28 <Slereah> It might not be the best looking language of the world
01:42:27 -!- ehird has quit (Remote closed the connection).
01:45:09 <Slereah> A dude is telling me he thinks APL isn't TC.
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: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:24 <Slereah> Writing Ackerman is maddening.
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:13:11 <Slereah> Well, A(0,0) gives me two.
03:13:19 <Slereah> This isn't a smashing success.
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: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: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: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:36:48 <oklopol> however hard you win, i always win one harder
04:37:53 <Slereah> But if I chose infinity, we win by the same amount.
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:43:14 <oklopol> eval usually evaluates code in whatever language you're using
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: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: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:58 <oklopol> in {eval program} program is a string, it is considered a program source, which is then interpreted as code
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.
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> 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: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: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:44:45 -!- bsmntbombdood has joined.
14:46:19 -!- timotiis has joined.
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:22:35 <Slereah> And so is everything else.
15:47:34 <Slereah> Forgot to double the combinator D:
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: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: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: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: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: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:58 <ehird_> actually, always python
17:36:07 <olsner> "well if it's any consolation, my nopol interp worked on the first attempt"
17:37:36 <ehird_> <Slereah>A dude is telling me he thinks APL isn't TC.
17:38:09 <ehird_> <Slereah>Riddle : How come a perfectly functionning program gives me indentation errors on the python shell
17:38:14 <ehird_> You need extra newlines if you do:
17:38:28 <ehird_> you need a newline between the blocks
17:42:10 -!- Judofyr has quit.
17:42:48 <Slereah_> I put newlines everywhere, and still does not work D:
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: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:42 <ehird_> Slereah_: and then your block is just 'print help'
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:50:32 <ehird_> Slereah_: What is the error?
17:51:21 <Slereah_> "Inconsistent indentation detected!"
17:51:34 <ehird_> Slereah_: You are indenting with both tabs and spaces.
17:51:45 <ehird_> Slereah_: And you are. Python says so.
17:52:17 <ehird_> Slereah_: Good! Don't use tabs.
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:27 <Slereah_> Is there a big convert tabs to space buttons?
17:53:41 <ehird_> Depends on your editor. :-)
17:54:16 <ehird_> fn = 'MYPYTHONFILE'; f = open('MYPYTHONFILE').read().replace('\t', ' '); open('MYPYTHONFILE','w').write(f)
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: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: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:42 <ehird_> Slereah_: Now you just have to change the fn one
17:59:20 <Slereah_> "Unindent does not match any outer indentation level"
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:51 <ehird_> Slereah_: Try adding some more blank lines. ;)
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: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: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:45 <ehird_> oklopol: yes, <ehird_> oklopol: dude
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:35 <ehird_> and properly balanced stuff
18:14:43 <ehird_> go back to < >< <>< > <> >
18:14:48 <oklopol> proper balancing is for not yet having negative lists
18:15:01 <ehird_> it would be far more awesome
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: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:54 <ehird_> balancing themselves out
18:16:54 <ihope> ehird_: what do you mean when you say "NOT AN ESOLANG"?
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: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
19:02:50 -!- Sgeo has joined.
19:32:58 <ehird> oklopol: i just wrote an API for dictionaries in python
19:33:14 <ehird> it uses http://ninjawords.com/!
19:39:38 -!- Judofyr has joined.
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: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:53:10 <SimonRC> nice screen-scraping :rolleyes:
19:57:15 <ehird> nothing wrong with that, though
19:57:20 <ehird> ninjawords itself scrapes from wikiquote
19:58:18 <ehird> i just made the API less horrific
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: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:06 <ehird> Sounds interesting.
20:18:45 <ehird> http://rafb.net/p/SxwM0e29.html ninjawords api v34348234
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: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:32:01 <ehird> i made shinh fix golf! yay
22:28:42 -!- olsner has quit ("Leaving").
22:36:48 -!- Slereah_ has joined.
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: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
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:09:44 <Slereah_> It should have a simple instruction set, and intuitive concept!
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: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: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: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: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:37 <ais523> everyone else has used their real name so far, as it happens
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:59 <ais523> believe it or not, that's what it does in plain-text view
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: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: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: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: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: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: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: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:33:01 <ais523> according to Wikipedia, it was proposed in 1874, and the advanced version with shift codes was implemented around 1901
12:34:23 <ais523> not sure, it was mostly a teletypewriter code
12:34:46 <ais523> it's a bit awkward to use in computers due to the shift codes involved
12:35:12 <ais523> 5-bit characters aren't enough to encode all the character set by themselves
12:35:30 <ais523> so some characters are reserved as shift characters which modify the meanings of future characters
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: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: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: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:43 <ais523> if there is a "dir" file on the system, great
12:40:05 <ais523> s/system/prefix directory/
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: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 <ais523> I now don't install into the main documentation tree
12:41:10 <AnMaster> and env-update builds the list
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:45:04 <ais523> but only use it if the install process runs as root
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: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: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: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:35 <ais523> Ubuntu, so presumably Debian
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: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: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:30 <AnMaster> you can make automake handle the make dist
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: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:03:24 <AnMaster> rm -rf dist; mkdir dist && bzr export . dist
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: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: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: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: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: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: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> Name: 'PROCEDURE ANALYSE'
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: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: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: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:24 <ais523> but if doing it in an API is a good idea, you've got more fundamental problems elsewhere
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: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: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:49 <ais523> you don't want it easy for the user to edit the save file either
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: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: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: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: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: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: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: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: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: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:46 <ais523> and if I want a tree I'll place a tree tile
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: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:38 <AnMaster> ais523, well the api is somewhat sane IMO
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: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: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:37 <AnMaster> ais523, just one thing: bash does concurrency by fork() iirc
14:03:58 <ais523> its concurrency model isn't powerful, or anything like that
14:04:12 <ais523> it's just that it's easy to type and think about
14:13:06 <AnMaster> ais523, oh and it does fork for a lot of other cases where it really isn't needed
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:15:08 <AnMaster> printf -v "$1" "%s" "$tempvariable"
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: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:17 <AnMaster> ais523, anywa ` is just `<space> here
14:18:21 <ais523> but I'm not surprised that they're in ASCII
14:18:46 <ais523> makes sense, most languages need more letters than English does
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: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: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 <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:26 <AnMaster> and, over backspace? that would be F11-F12 on this keyboard
14:23:34 <ais523> and 'over' as in with shift
14:23:47 <fizzie2> Actually in this particular keyboard the normal | key is marked with the broken-bar symbol.
14:23:50 <ais523> here \ is to the left of z
14:24:05 <ais523> `1234567890-=<backspace>
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:45 <ais523> <shift>\zxcvbnm,./<shift>
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: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: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:11 <ais523> that's actually useful
14:27:23 <AnMaster> that is about the only non-marked one I actually use
14:27:37 <fizzie2> My home keyboard layout has altgr-[a-z] mapped to "correct" greek letters.
14:27:45 <fizzie2> So altgr-p would produce the pi symbol.
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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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:11:18 <AnMaster> ais523, and this is thedailywtf, this means the whole site is a wtf in itself
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: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: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: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: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:57 <AnMaster> so probably a bug in pango I guess
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: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: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: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: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: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: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: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: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: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:17 <AnMaster> http://en.wikipedia.org/wiki/Articles_for_deletion/Circle_of_commas
15:48:46 <ais523> must be weirdness in my client
15:49:01 <ais523> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=Wikipedia:Articles_for_deletion/Circle_of_commas
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: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: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:51:08 <AnMaster> oh you got some client side script that is messing up for you?
15:53:07 <ais523> anyway, ҉. could come in useful for writing Befunge programs
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: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: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: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:25 <AnMaster> it doesn't do &whatever; you know
16:00:29 <ais523> but I have to call the character something
16:00:35 <ais523> and you wouldn't be able to see it if I pasted it literally
16:01:18 <ais523> mostly used in certain scripts where characters flow into each other, to say that they shouldn't
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 ‍, 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: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:31 <ais523> some other systems might have CHAR_BIT higher
16:04:39 <ais523> limits.h exists to tell you what CHAR_BIT is
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: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: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: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: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: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:14 -!- ais523 has left (?).
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:29 <AnMaster> and you didn't send it to channel it seems
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:21:03 <ehird> AnMaster: ##socialites... what are you doing in here?! :P
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: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:43 <AnMaster> ais523, I was just away for about two weeks anyway
16:24:46 <AnMaster> and without telephone or tap water btw
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: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: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:58 <oklopol> > <::> <:::> <::::>< is the negative list
16:29:27 <oklopol> the outer <: a b> is application, a is applied to b
16:29:49 <oklopol> <. <::> <<::> <::>>> is, well, ``sii
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: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: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:17 <ehird> ((a b) (c d)) = 2 depth
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: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:44 <ais523> AnMaster: unfortunately, it requires positive RAM for computers to store
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: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:46 <oklopol> i've explained it multiple times, but i doubt it's possible to read anyway
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: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: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: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: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: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: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: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: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:16 <ais523> ?0 sets the group number to 0 so there's output
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:45:06 <oklopol> a^@{,2}(a{2,}{2,}$!'')?(?0a*)$'' <<< this
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: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:40 <AnMaster> instead of saying that it appends it
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: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:08 <oklopol> ais523: put it up on a bot
16:48:15 <ais523> oklopol: I haven't written an interp yet
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: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: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: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: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: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: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: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:17 <ehird> ais523: i don't get it
16:58:19 <ais523> ehird: so you can do the same thing later
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: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: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: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:01:10 <ais523> AnMaster: you get "hjabHJahjyHJa", but there are other possible matches so backtracking returns other possibilities
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: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:43 <oklopol> ^run <<<::..> > <:.> <::> <::.>< <:::>>>
17:01:44 <nopolie> < < < <::..> <:.> <:::>> < <::..> <::> <:::>> < <::..> <::.> <:::>>>>
17:02:23 <ais523> oklopol: so what do . and : do?
17:02:25 <ehird> ^run > . > <::> < . <
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: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: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:24 <ehird> Package emacs-snapshot-gtk is not available, but is referred to by another package.
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:12 <oklopol> ais523: how do you know it's easy to parse?
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:06:01 <ehird> As well as the group stuff: just like a regexp ompiler
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: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: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: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: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: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:18 <ec> What's this channel for?
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:24 <ais523> ec: I noticed that, I was wondering if you were ehird to start with because of that, but obviously not
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: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: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: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: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:53:56 <ais523> heh, the 1000 digits thing was the output from Ruby's random number generator when given the right seed
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: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> (php, although my favorite language is Visual Basic :-DD)
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
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: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:31:18 -!- timotiis has quit (Read error: 110 (Connection timed out)).
00:42:40 -!- oerjan has quit ("Good night").
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:44:50 <oklopol> bsmntbombdood: i'm assuming you had a reason to ask :D
01:45:28 <oklopol> so i hear that nopol owns ass
01:47:14 <oklopol> my newest language, characterized by having Too Many Characters in the charset
01:48:23 <oklopol> ehird keeps crying about the dotties :|
01:51:05 -!- nopolie has joined.
01:51:24 <oklopol> ^run <: <<<> <<> <>>> <<> <>>>
01:51:42 <oklopol> ^run <: <<> <<> <>>> <<> <>>>
01:51:53 <oklopol> ^run <: <<::> <<::> <::>>> <<> <>>>
01:52:03 <oklopol> ^run <: <. <::> <<::> <::>>> <<> <>>>
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:55 <ehird> RodgerTheGreat: Lies
03:53:27 <ehird> RodgerTheGreat: He originally had it just <> and space
03:53:42 <ehird> < ><><>< <><<><>> <>>
03:54:49 <ehird> RodgerTheGreat: It has lists of negative 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:12 <ehird> it has -1 depth, -2 depth ..
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: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: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.
04:03:42 -!- Slereah_ has joined.
04:04:02 <Slereah_> Can you add curry to the recipie for functional programming?
04:04:39 <ehird> Slereah_: #ircnomic
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: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: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:52 <ehird_> all words involving oklopol in any way must be prefixed oko- or oklo-
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:40:50 -!- GreaseMonkey has quit ("Unisex.").
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:38 <oklopol> it's O(n^2), because insertion sort arises from the definition.
12:48:14 -!- sebbu has quit (No route to host).
12:48:15 -!- sebbu2 has changed nick to sebbu.
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: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:22 -!- lament has joined.
18:11:30 -!- testyfoo has quit (Remote closed the connection).
18:11:41 -!- testyfoo has joined.
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: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:24:48 <ehird> oklopol: you said that pygame would be far awesome if it was just put(x,y,col)
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:35:25 <ehird> oklopol: the example is really addictive isn't uit
20:39:04 <ehird> oklopol: you didn't try it
20:40:02 <oklopol> i did not find a challenge, so i didn't find it addictive
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:21 <oklopol> well, i've written stuff using slower drawing speeds...
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:56 <oklopol> i can scribble pong for ya
20:59:50 <oklopol> interesting choise of names for height and width
20:59:57 <ehird> oklopol: are they reversed
21:00:15 <ehird> oklopol: okay, one sec
21:01:14 -!- Sgeo[College] has joined.
21:01:56 <ehird> oklopol: http://rafb.net/p/RGME0U77.html
21:02:08 <ehird> oklopol: so, when you want a colour
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:13:12 <ehird> oklopol: is there a lot to type for my widdle framework?
21:13:19 <ehird> i tried to make 0 typing needed
21:13:23 <ehird> what is taking a long time to type? :(
21:18:11 -!- Sgeo[College] has joined.
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:38 <ehird> oklopol: but it's PONG with MY LIBRARY
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:45 <oklopol> the comment is the same :P
21:20:56 <ehird> oklopol: the class is called Test
21:21:03 <ehird> oklopol: was my farmework cool
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:22:15 <ehird> oklopol: you're setting float pixels
21:22:38 <oklopol> when doing 2d, you need to use vectors, usually, perhaps let game be indexed with them
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:39 <ehird> oklopol: but the game rocks
21:23:43 <ehird> just need to put the fps up
21:23:47 <oklopol> fastest way to show who won
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:30 <ehird> oklopol: well, if you make the ball go a bit faster
21:24:33 <ehird> then i'll add networking
21:26:55 <ehird> oklopol: pygame is so bloated for providing more than what i do isn't it ;)
21:27:25 <ehird> though it is admittedly *marginally* faster...
21:27:27 <oklopol> they're gonna be awesome, maybe.
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:12 <ehird> python has a deque for that
21:29:18 <ehird> x=lst[0];del lst[0]
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:39:20 <ehird> oklopol: python does have libraries you know, you might want to look at them sometime ;0
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: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: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:46:01 <ehird> and THEN 'python filename'
21:46:04 <ehird> the window will stay.
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:37 <ehird> oklopol: if you're lazy then seeing the errors would speed up your coding
21:47:08 <oklopol> true... but true laziness means being too lazy to think what's most work.
21:47:35 <ehird> oklopol: thats why i just did the thiinking for you
21:47:42 <oklopol> "python" is not recognized...
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:49 <ehird> doesnt persist, but.
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: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:46 <Slereah> It makes me doubt the accuracy of the Gravity article D:
21:55:25 <Slereah> It has no good solution, but there's converging series for the three body problem
21:56:26 <oklopol> perhaps i should link the game
21:56:36 <oklopol> i'll make the ball inc its speed, and then link
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:10:04 <ehird> oklopol: just flip width/height
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: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: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: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: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:15:42 <ehird> oklopol: it will still be VERY VERY TINY though
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:20 <ehird> distributed python
22:17:26 <ehird> oklopol: you just give it an object
22:17:37 <ehird> dpy.expose(foo, port=453453)
22:17:39 <ehird> and then in another app
22:17:53 <ehird> foo = dpy.fetch(host='foobar', port=453453)
22:18:33 <ehird> oklopol: ruby has basically that called DRb (distributed ruby)
22:20:39 <ehird> oklopol: anyway, brb in a sec
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:58 <oklopol> ehird: did you read about Ef?
22:24:59 <ehird> oklopol: ok, gimme 60 secs or so
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: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: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: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:52 <oklopol> i have to flip them in *two files*
22:36:13 <ehird> i already showed you the updated game one
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: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:20 <ehird> oklopol: how does i accellerate ball
22:37:47 <oklopol> it takes a bit of the speed the... puck has
22:38:07 <oklopol> spin works as it does for something like a ping pong ball
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:43 <oklopol> nothing can beat the awesomeness of the suicide spins
22:41:24 <ehird> 7079 is an awesome port, oklopol
22:43:32 <oklopol> asdadsadsasdasdadsadasd the spins are too hard for me
22:45:25 <ehird> oklopol: khdsfkjhsdflkhsdfkjsdhfjksdfj dpy is hard
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:48:27 <oklopol> this game must bethe most authentic ping pong game ever made
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:30 <ehird> oklopol: wow. i just bashed it, and it curved round right into my goal
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:52:06 <oklopol> the ball got stuck in the middle :)
22:52:56 <ehird> oklopol: what port# for okopong
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: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:55:11 <oklopol> i think it might need some modification to be networkable
22:55:33 -!- GreaseMonkey has joined.
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:58:01 <ehird> wanna help me code this
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: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:40 <ehird> tell me which parts you changed
23:02:14 <oklopol> self.d=(self.d[0]*1.01,self.d[1])
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:21 <ehird> http://www.vjn.fi/pb/p365653263.txt -> that
23:02:47 <oklopol> self.d=(self.d[0],self.d[1]*0.95) <<< this line
23:02:57 <oklopol> self.d=(self.d[0]*0.99,self.d[1])
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:58 <oklopol> well keystrokes might work because they're fast to send.
23:05:10 <ehird> TypeError: cannot marshal <class '__main__.Pong'> objects
23:05:16 <ehird> because of the pygame objects
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:51 <oklopol> both display the same, it's just client just sets all positions when asked by the server
23:05:59 <oklopol> and just skips all moving and such
23:06:22 <ehird> to allow the host to call stuff on clients
23:06:27 <ehird> Pong stuff must be marshallable
23:06:31 <ehird> i'll just invent my own protocol
23:06:40 <oklopol> you need to call stuff on clientS?
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:08:06 <ehird> oklopol: the server can't 'send' anythign to the client
23:08:08 <ehird> the client is a client.
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: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:36 <ehird> oklopol: just stay put
23:10:40 <ehird> oklopol: i hope your net conn. is good
23:10:46 <ehird> we'll take turns hosting
23:10:52 <ehird> let's decide one thing
23:10:58 <ehird> or other way around
23:11:15 <oklopol> a bit if we're actually playing
23:11:23 <oklopol> wanna make it restart when someone dies?
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: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:34 <ehird> oklopol: your model doesn't save the co-ordinates though
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: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: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:31 <oklopol> i kinda suck at understanding what people say :)
23:16:34 <oklopol> wow, like 20 hits before i lost
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:19:32 <oklopol> do you like the playground size? i kinda enjoy the tininess
23:19:54 <ehird> oklopol: OKAY so networking protocol
23:20:17 -!- Corun has quit ("This computer has gone to sleep").
23:20:23 <ehird> the client connects to the server
23:20:36 <ehird> they exchange 'pickle packets'
23:20:39 <ehird> oklopol: which is my word!
23:20:55 <ehird> and you can depickle those bytes.
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:24 <ehird> when a server sends it
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: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:33 <ehird> oklopol: lets just get it working though
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 <ehird> now i just have to ... code it
23:27:04 <oklopol> well, sounds simple enough
23:28:15 <ehird> oklopol: port no again?
23:28:45 <ehird> oh heh, oklopol :)
23:33:16 <ehird> i almost got it working
23:33:29 <oklopol> well, i guess i can play for a while
23:33:43 <ehird> oklopol: ehh not long
23:33:43 <oklopol> would you say less than half an hour
23:34:34 <ehird> instead of keypresses, I can just make the client send (rup,rdn) can't I?
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: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:33 <oklopol> those sentences may have been bit contradictory
23:38:05 <ehird> socket.error: (111, 'Connection refused')
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:40:40 <oklopol> the idea was to make a shared hashmap, but my implementation was too slow to allow for pong.
23:41:17 <ehird> and it SHOULD be ok
23:41:52 <oklopol> you still have 20 long minutes
23:44:36 <ehird> oklopol: you know how to get all router ports forwarded and stuff right
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:46:10 <ehird> oklopol: hmm well it connects
23:46:12 <ehird> can't tell if it makes any sense
23:47:03 <ehird> oklopol: trying to, but its hard to switch between windows
23:47:41 <oklopol> you can always slow it down
23:48:11 <ehird> oklopol: i have total bugzzz
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:17 <ehird> the syncing is just all weird
23:49:21 <ehird> i don't get what is happening
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:57:01 <oklopol> ima_server_send is executed no matter whose on_tick is ruunning
23:57:57 <ehird> oklopol: okay as in i will fix
23:58:36 <oklopol> i need to go now, sorry :|
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.
00:01:36 <oklopol> just had to make sure i'm not misunderstood
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: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:19:32 <oerjan> yay wikipedia's Search has autocompletion?
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: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: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: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: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: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: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:45:41 -!- oerjan has quit ("leaving").
05:45:46 <Slereah> http://membres.lycos.fr/bewulf/Russell/b.c
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: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: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:27:07 <ehird> ais523: /swapnick swaps call occurences of X with Y right?
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: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: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> 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:31:11 <ehird> ais523: 'a=' still goes a-searching
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: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:09 <ehird> change X into (X)+0=
16:32:54 <ehird> ais523: by the way, epiphany fails at its google search
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: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: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: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: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: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:41:01 <ais523> the shortest registered domain names are apparently 4 chars long
16:41:18 <ais523> oklopol: strlen("vjn.cc") < strlen("tinyurl.com")
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:40 <ehird> ais523: but i have a good system for keeping url lengths tiny after the slash
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:41 <ehird> srz.ct isn't a good example of course
16:42:43 <ehird> but you get the ied
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: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:22 <ehird> ais523: have you heard the idea? it is truly revolutionary
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:58 <ehird> it's actually WEB GARBAGE COLLECTION
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: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: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: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: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:21 <ehird> and it rocks more than any pong i've played
16:54:23 <ehird> ais523: pygame isn't mine
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: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: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:21 <ehird> ais523: http://rafb.net/p/rOeGat40.html oklopol's 150line AMAZING pong game
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: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: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: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:51:28 <ehird> RodgerTheGreat: oh, pong?
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:43 <ehird> or have it outside the source tree
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: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: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: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:07 <ehird> sub cxa_normalise($)
17:54:09 <ehird> # Read the arguments
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: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: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:12 <oklopol> we would make a protocol stub for graphics
17:56:14 <ais523> CLC-INTERCAL's gets like that
17:56:31 <ais523> oklopol: pity Sgeo isn't in the channel, they'd just add it to PSOX
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: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: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:58:05 <ais523> they don't like them because they clash with old code
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: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: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:02 <ehird> not sure if i'll have to change the code to handle errors from them in that case though
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: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: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: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: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: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:25 <ais523> SELECT * is /very/ evil
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: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: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: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: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: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:22 <ehird> use sdfsdf qw/foo/;
18:13:25 <ehird> use sfsdfsd qw(bar);
18:13:34 <ais523> user's choice of delimters, surely
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: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: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: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:23 <ais523> ehird: but you're an esolanger
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: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: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: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:14 <ais523> I could have written "\\\@\\" as '\@\', I suppose
18:18:18 <ehird> that join thing is
18:18:30 <ais523> actually, does \ work inside '? I keep forgetting
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: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:50 <ehird> ais523: what is the warning?
18:19:57 <ais523> ehird: undef used as a key of a hash
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: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:04 <ais523> and unique group number
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: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:40 <ehird> it's still obfuscated!
18:24:49 <ais523> no, that's my non-obfuscated Perl
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:15 <ehird> better remove the print
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: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:04 <ehird> tap tap tap github.com tap tap
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: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:29:22 <Slereah> I think my -function language will be made with a translator.
18:29:47 <ehird> ais523: welp, i just made the cyclexa repository
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: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:37 <ehird> ais523: 1.5.5.1 is the latest
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:12 <ehird> and ergo haven't put it up yet
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: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:44 <oklopol> and, after the game, another random game right away
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:30 <ais523> oklopol: INTERCAL's networking model does that automatically
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: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:18 <ehird> ais523: register for git-hub, you need to add your ssh key
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: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: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: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:46 <ais523> adblocking is against their terms of service
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:19 <ehird> ais523: you can't violate it: there's nothing to block ergo you are not blocking ads
18:44:57 <ehird> we can do gitorious instead
18:45:02 <ehird> which is just like github, but not as nice
18:45:24 <ais523> let me read their TOS first
18:45:31 <ehird> i don't think i can delete a repo though
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:42 <ehird> ais523: gitorious wants me to choose a license Right Now
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:13 <ehird> why not pubilc domain, ais523?
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: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: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: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:23 <ehird> http://sam.zoy.org/wtfpl/
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: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:15 <ehird> ais523: solution -- insert comments involving nazis into the code
18:55:19 <ehird> then germany will ban it anyway
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: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:38 <ehird> ais523: infinite loops hang things!
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:59 <ais523> then IE said it was running low on memory and asked whether to cancel
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: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:24 <ehird> apparently, it renames things.
19:01:26 <ais523> no, I'm happy with its current name
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:24 <ehird> normalize is a vague name
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:29 <ehird> ais523: which should I do?
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:40 <ehird> should i use @EXPORT or @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:08 <ehird> you need to 'require Exporter;'
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: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> @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: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: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: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:36 <ais523> it works INTERCAL-style, I think
19:13:43 <ais523> it repls anything that isn't a debugger command
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: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: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: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:38 <ehird> i hcanged it to carp
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: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:33 <ais523> the {{a{ is a complicated escaping mechanism anyway
19:17:38 <ehird> ais523: :(( my do { } doesn't work
19:17:52 <ehird> %groupnumbers{$lgu} = 1;
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:05 <ais523> and a very easy one to make, too
19:20:24 <ehird> conclusion: FSCK SIGILS
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:12 <ais523> I think I have some hard-to-lex examples as tests
19:21:15 <ehird> but they causeBUGS
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:13 <ehird> i can use just { and }
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:33 <ehird> maybe that's why you think emasc sucks at perl
19:22:38 <ehird> perl-mode is obsolete for like 10 years now
19:22:40 <ais523> that would explain a lot
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:26 <ais523> ehird: we need a # -*- cperl -*- at the start of the files
19:23:27 <ehird> (defalias 'perl-mode 'cperl-mode)
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:20 <ehird> i've done my research
19:24:26 <ehird> nobody who will edit perl code will not have that line
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: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: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: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 <ais523> some of the people there are excellent, some are completely stupid
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:37 <ehird> may it never come back
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:30 <ais523> ehird: that isn't an error
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:28 <ais523> OK, change the $_ at the start to (defined($_)?$_:'')
19:38:08 <ehird> ais523: that expression is now 3 lines
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:41 <ehird> do you need those parens around the regexp
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: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: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 <ehird> (x,) might force it into list context
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: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: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: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: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:19 <ais523> it says 'this should happen at compile time'
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:23 <ehird> ais523: also, you should totally read my commit messages
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:10 <ais523> there must be operator precedence problems
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:15 <ais523> I'll try to track it down...
19:51:20 <ehird> ais523: as long as you've 'git pull'd
19:51:34 <ehird> i am NEVER going to work on this lexer if i can avoid it, ais523
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: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:58:07 <ehird> ais523: well, why is it duplicated
19:58:19 <ehird> i think that's the bug
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: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: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:53 <ais523> ehird: how do you run that parser as a test?
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:38 <ehird> ais523: after \ is a special char
20:11:47 <ehird> ais523: i assume you mean "\c"
20:11:57 <ehird> DB<2> print normalize "{\ca}";
20:11:57 <ehird> DB<3> print normalize "{\\ca}";
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:42 <ehird> would i put \c literally
20:12:46 <ehird> that is backslash character then 'c'
20:12:49 <ehird> or would i put '\c'
20:12:55 <ehird> ais523: then i tested your previous one wrong
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: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:32 <ais523> or the golfing equivalent $/=$] which gets the whole file unless it contains the Perl version number as text
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: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:27 <ehird> ais523: push @INC, dirname(__FILE__) . "/src";
20:15:53 <ehird> ais523: ah, in a BEGIN {} though
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:58 <ehird> use File::Spec::Functions;
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: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:46 <ais523> but your ninjacode stuff gave a big insight into your coding personalit
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:21 <ehird> that was just for fun
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: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: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: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:59 <ehird> quick git tutorial:
20:25:01 <ehird> $ git add fileichange
20:25:06 <ehird> $ git commit -m 'I suck'
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:42 <ehird> oklopol: dead unfortunately
20:25:48 <oklopol> i just recall being on a channel with that name
20:26:33 <oklopol> the language was never created?
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: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:46 <ehird> after that you can just do 'git push' from then on
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:58 -!- toybot has joined.
20:39:16 -!- toybot has quit (Remote closed the connection).
20:39:29 -!- toybot has joined.
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: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:11:40 <ais523> you need to use git commit -a
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: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: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:19 <ais523> where you have to mark files each time...
21:14:26 <ehird> darcs requirse it too
21:14:29 <ehird> it just bundles it into one command
21:14:45 <ehird> ais523: there's still a .gitignore
21:14:49 <ehird> for 'git commit -a'
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:14 <ehird> it has decent ignores by default
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: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: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: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: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:55 <ais523> ehird: I'm talking about something else
21:24:02 <ais523> your compiler does flattening data-structure wise
21:24:07 <ehird> i came up with that
21:24:09 <ais523> I was talking about the original Underload source code
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:51 <ais523> I was talking about the rewrite rules for that ()-less Underload you invented
21:25:00 <ais523> they work by flattening an Underload program
21:25:03 <ehird> ais523: you never invented them though!
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:29 <ehird> ais523: i was talking about my underload compiler
21:25:35 <ehird> but that thing is called dei
21:25:58 <ais523> wow, after 35 comments we're finally talking about the same thing
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: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: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: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: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:43 -!- Deform has changed nick to Deformative.
23:45:33 <ehird> Slereah_: why not?
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: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:56:32 <ehird> its not a trap! :P
23:59:17 -!- Slereah_ has changed nick to Ackbar.
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.
00:00:21 <ehird> Slereah: Aww come on
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: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:54:45 -!- ais523 has joined.
15:55:57 * ais523 is busy upgrading Ubuntu
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: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: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: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: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: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:17 <ehird> variable variables
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: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: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:40 <ehird> ais523: but php's use of $ is just ridiculous
16:05:46 <ehird> it's .... just ... i mean..
16:05:49 <ehird> it doesn't mark anything.
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: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:07 <ais523> causes $foo to actually refer to $bar
16:08:16 <ais523> and likewise @foo to actually refer to @bar
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:45 <ehird> fizzie: NEWSFLASH! Perl does not do TCO!
16:11:52 <ehird> Also, Perl cannot magically realise how your program is written!
16:12:04 <ehird> (was that assish enough)
16:12:12 <fizzie> I think it was quite assy, yes.
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: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: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: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: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: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:27:01 <ehird> However, Perl is tempting because it has turing-complete regexps already
16:27:11 <ais523> ehird: not really, you have to embed inline Perl in them
16:27:30 <ehird> ais523: But I can't think of any language that would really be good at this.
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: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: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: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: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: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: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> 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: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: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: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: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:41 <ehird> is 'literal \', 'literal a', 'literal \', 'literal >'
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: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: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: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: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:11 <ehird> that's not that ugl
16:56:28 <ehird> Lexer->new("my cyclexa program")->lex;
16:56:31 <ais523> that's Levenshtein distance in unary
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: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: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: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: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: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: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:41 <ehird> ais523: http://gitorious.org/projects/cyclexa/repos/mainline
17:09:49 <ehird> also note that it generated another revision to merge
17:09:52 <ehird> really it looks like this
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:24 <ehird> http://gitorious.org/projects/cyclexa/repos/mainline
17:11:27 <ehird> <ais523@dell.linuxdev.us.dell.com>
17:11:30 <ehird> is the current one
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:13:07 <ehird> ais523: it occurs to me that that merge was pointless
17:13:09 <ehird> lex.pl is now uselses
17:13:32 <ehird> i'll just remove it, because it's trivial and not useful for having around reall
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: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: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:55 <ais523> did it mark one for each line in the file, or something?
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: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: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: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:30:02 <ehird> 'merge-base', 'write-tree', 'commit-tree'
17:31:14 <ais523> ehird: you mean /usr/bin namespace?
17:31:23 <ais523> it installs a command called perror
17:31:32 <ehird> ais523: yeah, /usr/bin
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: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: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: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: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: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:36:09 <ais523> ehird: you're normally connected to it :)
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:42 <ais523> ehird: I want to avoid using modules as much as possible, or you end up with dependency hell
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: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: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: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: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:44 <ehird> $tok->type = Token::LITERAL; $tok->char = 'a';
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: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: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:10 <ehird> i'm still yelling at perl
17:51:13 <ehird> but it's a good point
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: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: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:32 <ehird> ais523: maybe a seperate class for those
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: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:26 <ehird> ais523: C++ would buy us std::string & a load of hell.
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: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:01:24 <lament> ais523: you do have to learn the features
18:01:41 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
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: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: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: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: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: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: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:12:32 <ehird> ais523: hmm, Sam Hughes just added a comment system
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: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: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: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:55 <ais523> structs, like C-INTERCAL does?
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: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:57 -!- Corun has quit ("This computer has gone to sleep").
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:35:17 <ais523> http://esolangs.org/wiki/Magenta
18:35:27 <ais523> it's cursed, never try to implement it, you'll fail
18:36:19 <ehird> ais523: has anyone attempted?
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:09 <ais523> I think 1999 was the last try
18:38:31 <ais523> ehird: no, it's cursed
18:38:42 <ehird> Sgeo[College]: bye
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: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: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: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: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: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:51:39 <ais523> ehird: oh, also my hyper-Prolog, but it's uncomputable and so can't be implemented
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
19:00:08 -!- Hiato has quit ("Leaving.").
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:35:20 <oklofok> heh, right now, i had to use IE because firefox just couldn't open webpages :)
20:35:36 <oklofok> and everything works again <3
20:37:26 -!- oklofok has changed nick to oklopol.
20:38:07 <ehird> oklopol: came up with any AWESOME ESOLANG IDEAS yet????
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:35 <oklopol> i mean, the fixed point idea, plus my best-effort prolog were quite nice, but neither is all that 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:58 <oklopol> not in the paradigm sense, the CA sense
20:44:32 <ehird> oklopol: i want to implement ef
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:46:29 <oklopol> the idea is, function calls are executed infinite times
20:46:41 <oklopol> yet the language is mostly imperative
20:47:15 <ehird> oklopol: examples plz
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: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: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:33 <ehird> oklopol: whut's acc
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:30 <oklopol> it's a *bit* different from what you see usually
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: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: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:43 <oklopol> well yeah you pretty much have to shortcut infinite recursion because you cannot escape it from within the language.
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: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:12 <oklopol> ehird: it's not correct though
20:56:36 <oklopol> it's used a bit differently, you have to do it tail-recursively
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:58:40 <oklopol> double = (n add):{n+add add/2}
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:37 <ehird> 't get why two params
21:00:43 <oklopol> (7 3.5) => (7+3.5 3.5/2) => (7+7/2+7/4 7/4) etc
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:53 <oklopol> it's not that trivial to explain, it seems, but let's expand it
21:03:39 <oklopol> f(n) means f(f(f(...f(n)...))) in Ef
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: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: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: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: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:12:26 -!- ais523 has joined.
21:12:31 <ehird> ais523: upgrade works?
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: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: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:16:00 <ehird> oklopol: i submit this as a code snippit
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: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: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:44 <oklopol> calculating golden ratio from the fact it's the limit of the ratio of two adjacent fibs
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:07 <ehird> but in a very pretty way
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: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:52 <ehird> oklopol: looks nicer with just spaces though
21:24:57 <ais523> ehird: I think the system's still OK, but it's running a scheduled fsck
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: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: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: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: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:29 <ehird> oklopol: it's .. hard to explain. like the rest of oko!
21:29:54 <oklopol> we don't have enough mystery in the esolang world.
21:30:09 <ehird> oklopol: some more oko
21:30:12 <oklopol> ehird: comment @ golden ratio!
21:30:39 <oklopol> in oko, there are *entities*
21:30:49 <oklopol> entities are *aware* of everything happening around them
21:31:07 <oklopol> everything depends on everything, somehow... in deep, meaningful ways
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: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: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: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: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:34 <oklopol> perhaps the spec need not say that
21:39:38 <ehird> it can be understood.
21:40:48 <ehird> oklopol: STOP THINKING IMMEDIATELY
21:40:54 <ehird> Now you understand oko more.
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: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:55 <ehird> oklopol: self-containing parse trees
21:57:23 <oklopol> a graph can "contain itself" by having internal links
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:04:48 <oklopol> http://www.vjn.fi/pb/p415442436.txt <<< what do you think?
22:06:40 <ehird> no, that's bad oko - it has no pseudosymmetrical nature
22:07:14 <oklopol> i was more referring to the letter - character separation :)
22:07:39 <ehird> it needs more blend
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: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:23 <oklopol> both lack of modularity and high-levelness
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: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: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: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: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:21 <lament> (python is SO much easier to write this in than haskell would be :( )
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: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: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: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: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: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: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: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: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:52:31 <lament> "eo" is not an esperanto word, so /eo eo is "eo : Not found"
23:52:38 -!- Corun has joined.
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: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: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:53 <Sgeo> What asset were you recordkeeper of?
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: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: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: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: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: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:57:41 -!- Tritonio_ has quit (Remote closed the connection).
15:59:03 -!- Parma_Quendion has changed nick to Quendus.
16:06:39 <ehird> oklopol: do you further understand the zen of oko?
16:12:11 <ehird> that is one of the purest oko that exist.
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: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: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: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:40 <ehird> oklopol: it was just a simple mark/sweep
20:56:27 <oklopol> i know, and i knew you finished the *gc*
21:08:40 <oklopol> you didn't? perhaps i've confused all finishations and antifinishances
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: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: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: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: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: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:52 <oklopol> so when were you coming to finland?
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: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: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: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:53 <oklopol> bsmntbombdood: so you quit it all?
22:31:45 <oklopol> that was my second option after uni
22:34:24 <oklopol> what then? feed me with your tasty ideas for the future
22:36:18 <oklopol> the problem is, i can't really mix programming and living on the street
22:38:26 <lament> clearly you're not suited for hobo life.
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: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: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: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:15:11 <oklopol> or perhaps read trivial web programming stuff?
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> or perhaps read trivial web programming stuff?
23:16:39 <ehird> fixed-points of pages!
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: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: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:27:01 <ehird> oklopol: write an ef->javascript compiler
23:27:05 <ehird> then you can have it client-side too!
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: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: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: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"").
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 <ihope> You didn't try it, did you?
00:14:19 <oklopol> no one would ever expect it to be that simple!!
00:15:07 <ehird> it's an #ircnomic term
00:15:22 <ehird> i do believe you are a player
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:24 <ehird> oklopol: that's not an option. Do you accept the Swhack or not?
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:26 <lament> don't they all die because the players lose interest because the game is so boring?
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: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:49 <ehird> lament: only like 14
00:23:56 <ehird> of agora, though, a few hundred
00:25:07 <ehird> lament: The longest-running nomic.
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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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:35 <lament> (but the esperanto one does)
01:30:25 <pikhq> The Wikipedia page on Esperanto culture, IIRC, mentioned it.
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: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:20:38 <pikhq> Get something going about esoteric programming languages, and people atart talking more.
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:22:03 <pikhq> Not that I'm one to talk.
04:22:10 <pikhq> My last work on PEBBLE was last year.
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:17 <evincarofautumn> It's a damn shame the way school gets in the way of learning sometimes.
04:24:40 <pikhq> Just let me write my kernel in peace.
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:58 <pikhq> So far, it's standard Funge. . .
04:26:09 <pikhq> Forkfunge? Oh god.
04:26:29 <pikhq> Like I said: forkfunge.
04:26:57 <pikhq> And the direction?
04:27:38 <evincarofautumn> The attractor can be moved when the thread reaches a certain position.
04:28:24 <evincarofautumn> And moving two attractors to the same position guarantees that the threads will crash and unify.
04:30:21 <evincarofautumn> Um. Well, we can assume one thread that starts at (0, 0), attracted to the bottom right of the program.
05:00:01 -!- dbc has joined.
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:17:02 <oklopol> remind me to tell evin to fuck themselves if they return, for inventing it before me!
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:44 <oklopol> and that was not an original idea, so it's totally useless
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: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:24 <oklopol> i'm not sure if they care or anyone else cares
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:33 <oklopol> nodes may contain operations that modify the graph
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: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: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:33 <oklopol> the graph creation model was inspired by the haskell type system
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: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:52:05 <oklopol> = redirects the evaluation of a node
09:52:27 <oklopol> it basically means the node is re-evaluated as whatever is the ropd
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:08:35 <oklopol> i don't understand how people can use this thing
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!!!
11:25:37 -!- UnrelatedToQaz has joined.
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: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: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:08:23 <ehird> SimonRC: Also, use 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:14 <ehird> and it'd quote the opening paragraph
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: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:08 <ehird> since it's italics
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:22:06 -!- oklopol has joined.
15:39:13 <SimonRC> oklopol: you have a weird keyboard
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: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: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: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:36:02 <pikhq> ehird: There aren't any. There's only crappy and more crappy.
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
17:00:57 <ehird> oklopol: think it's done.
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: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: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: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:09:02 <ihope> |_00|<, 1'|\/| &1\/1|\|& `/0|_| |\/||_|(|-| 0|= +|-|3 1|\||=0|2|\/|4+10|\| `/0|_| |\|33|).
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:16 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
17:28:39 -!- Corun has quit ("This computer has gone to sleep").
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: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:30 <ehird> there's only one teeeeny bug i need to fix and even then it doesn't affect anything
17:59:38 <ehird> oklopol: now put it up
17:59:56 <oklopol> i'm not sure i want people to search the pastespace
18:00:11 <oklopol> perhaps i could refresh the folder
18:00:22 <ehird> refresh the folder but keep the scheme interp
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: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: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: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: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: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: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: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: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:09:12 <oklopol> (link_to_paste_where_regexp_was_found line_number_of_first_occurrance "\n")*
18:09:36 <ehird> mine is far more awesome
18:09:45 <ehird> and you'll only see how awesome if that's uploaded as search.php
18:09:52 <ehird> its hard to explain
18:09:55 <ehird> but the output is truly awesome.
18:10:01 <ehird> nicest search interface, evar
18:10:12 <ehird> oklopol: it even sorts it, damnit
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:20 <ehird> oklopol: uhh i could paste loads of html i guess
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:55 <ehird> (which IS like 3 lines)
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:54 <oklopol> (link_to_paste_where_regexp_was_found line_number_of_occurrance+ "\n")* ?
18:15:17 <ehird> oklopol: it's more like
18:15:31 <ehird> <b>Paste <a href="...">NUMBER</a></b>
18:15:42 <ehird> (line_number occurance "\n")+
18:15:46 <ehird> oklopol: paste number
18:15:59 <ehird> but upload it and try it out
18:16:10 <oklopol> ("Paste" link_to_paste_where_regexp_was_found (line_number_of_occurrance "\n")+ "\n")*
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: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: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: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:32 <oklopol> will you give me the source for upload?
18:20:02 <oklopol> i guess if you give me the source i could just look at that
18:20:06 <ehird> to make sure it's the latest version
18:20:17 <ehird> also, the source undersells it
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: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: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: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:26:05 <ehird> and i'll only use it to get the scheme and other code you've linked
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:29:07 <ehird> oklopol: a hint plz? :<
18:29:22 <oklopol> eh, you think the random generator in my head is that logical?
18:30:00 <oklopol> it's a random set of characters
18:30:16 <ehird> oklopol: it's not saf
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: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: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: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: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:40:29 <ehird> oklopol: that's not a long search
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: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:30:54 <Judofyr> ehird: http://ultraviolet.rubyforge.org/
19:32:53 <Judofyr> but your not there right now, or?
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:48:25 <ehird> also, i'd rather it didn't use textmate syntax files
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: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: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: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:01:27 <Judofyr> yeah, I find web-developement booring..
20:02:26 <ehird> Judofyr: but the output fun.
20:03:11 <ehird> great mail I just got from nearlyfreespeech.net: "Hello, <quote> Yes. Thanks, Jeff"
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: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:10:12 <ehird> Judofyr: it IS a shared host
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:49 <ehird> http://example.nfshost.com/versions.php lists the versions for the most popular languages
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: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:14:57 <ehird> Judofyr: i'm with slicehost right now, so it's a vps
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:19:16 -!- atsampson has quit ("nope, turns out I do still need a -rt kernel...").
20:21:55 <calamari> Judofyr: this? http://en.wikipedia.org/wiki/Neko_%28programming_language%29
20:22:31 -!- atsampson has joined.
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: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:55:51 <ehird> oklopol: take a look
20:55:51 <ehird> (if (== i (- (length x) 1))
20:55:52 <ehird> (++ [(at x i)] (_cdr x (+ i 1))))})
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: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:04:01 <oklopol> i have no idea what that code does
21:04:02 <ehird> also, i call names 'toms'
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:44 <ehird> oklopol: which part don't you get
21:04:46 <ehird> i'll translate to python
21:05:26 <ehird> oklopol: also, (at LST INDEX)
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:46 <ehird> oklopol: okay wait
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: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: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:18 <ehird> 'if' is a function
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:57 -!- timotiis_ has joined.
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 -!- timotiis has quit (Nick collision from services.).
21:10:37 -!- timotiis_ has changed nick to timotiis.
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:13:01 <ehird> oklopol: welllll, in python (at X 0)
21:13:11 <ehird> X.sent('at', [Num(0)])
21:13:19 <ehird> oklopol: this is done in Koed's eval
21:14:11 <ehird> oklopol: whut do you mean
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 <oklopol> how would you receive that?
21:14:34 <ehird> oklopol: read Koed's eval!!!!
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: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:33 <ehird> oklopol: not as a 2-tuple
21:15:37 <ehird> it has real args, remember?
21:15:51 <oklopol> if it gets zero args, how do you receive
21:16:20 <ehird> they're real arguments
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:39 <ehird> (lambda (a b c) ...)
21:16:43 <ehird> they're real, honset-to-god args
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:48 -!- calamari has quit ("Leaving").
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:24:06 <oklopol> yes, i know it is, you explained about the tuple thing
21:24:22 <oklopol> how does {(a b c) ...} workl
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:25:35 <ehird> oklopol: it's called with (b c d e f)
21:25:38 <ehird> and crashes and burns :D
21:25:51 <ehird> oklopol: then it depends
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:07 <ehird> message sends are NOT CALLS
21:26:16 <ehird> they're totally seperate
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: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: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: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:24 -!- Judofyr has joined.
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: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: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 <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:27 <oklopol> what's the difference between a function and a thing that receives a message?
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: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:42 <oklopol> no. if you can't explain this, i'm going to sleep
21:36:53 <oklopol> can you give me an example, perhaps?
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> return self._oppy(lambda a,b: a+b, '++', args)
21:38:34 <oklopol> and it seems b can be a list
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:22 <ehird> weoprkopfkopfkeorjoiwejfiojfifgjerlg
21:39:47 <oklopol> you are saying you cannot give an example what b could be
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: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:11 <ehird> oklopol: ITISANABSTRACTCONCEPT
21:43:23 <oklopol> why couldn't you just say it's an object?
21:43:33 <oklopol> abstract concept with no meaning
21:43:39 <ehird> it doesn't resemble an object
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:08 <oklopol> this is a bit contradictory, because you said at some point you cannot give an example of it
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:37… ehird: oklopol: i can't.
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: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: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: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:38 <ehird> {...} will accept ONE message
21:47:47 <ehird> it does what you expect. applies the function to the arguments given
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: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: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: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: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:51:02 <ehird> it can be a function
21:51:07 <ehird> but it won't receive the message or whatever
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:53:02 <ehird> oklopol: yeah .. write a python subclass of Obj
21:53:09 <ehird> and override .sent(name, args)
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:19 <ehird> (name will be a string, args a list of Obj subclasses of some kind)
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: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: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:31 <ehird> let's get to the bottom of this
21:56:34 <ehird> i'll explain it simply
21:56:38 <ehird> forget about functions
21:57:00 <ehird> (a b ...) means 'send the message b to a, with the arguments ....'
21:57:07 <ehird> b and a and all the args are evaluated
21:57:16 <ehird> that's not a special case
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:32 <ehird> oklopol: I SAID FORGET ABOUT FUNCTIONS
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: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:58 <ehird> how do we represent that as a receiver?
21:59:00 <ehird> oklopol: URHGHGHGGHHGHGHGHg
21:59:08 * ehird bangs head against wall
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:34 <ehird> forget everything i've said about the application
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: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:28 <ehird> there's nothing relating to function bodies, scoping... ANYTHING specified in it
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:51 <ehird> we could respond to a message like 'apply'
22:01:56 <ehird> and give the function the arguments we get
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: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: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: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:53 <ehird> (a b c d) would be with args [c,d]
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:44 <oklopol> okay, well, you didn't provide me any new information, but you did confuse me a bit.
22:07:03 <ehird> now do you see that this lang != ot--
22:07:44 <oklopol> what i was originally trying to ask
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:46 <ehird> SCOPING IS JUST NOT ANYTING IN IT
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:08 <oklopol> i have understood it all along
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: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: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: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: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:59 <oklopol> actually, you didn't say no
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: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: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: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: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: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:51:35 <oklopol> the class the object is instance of
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:42 <ehird> that only applies if it is actually a real function
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: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:31 <oklopol> ihope: oppy does exactly what you said
22:54:34 <ehird> the underlying function
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: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:55 <ehird> they're just not the asme thing
22:56:19 <oklopol> if you leave it at that, i'll assume you have no idea yourself, and go to sleep
22:56:28 <ehird> i've tried to explain
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: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: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: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: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: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: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: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: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: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:06:33 <ehird> ihope: Toms are only applicable because they're what we send off to receivers
23:06:41 <ehird> Koed is "code", yeah.
23:06:46 <ehird> Just like skoep is the skope
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: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: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: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: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: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: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: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: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: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: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:37 <ehird> but .... nonsensical
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: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: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: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: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: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: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: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:32 <oklopol> negate that once, in an appropriate way.
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:36:19 <oklopol> well, i don't really have a choice then!
23:36:26 <ihope> So if you don't get to bed, fancy serotonin things will yell at you.
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:34 <oklopol> recall that attractor idea
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:58 <oklopol> well not moving, perhaps more like jumping
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:52:09 <evincarofautumn> I was working on an ideographic system for English recently.
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:30 <evincarofautumn> oklopol--Oh, it just increments the x and y each execution frame.
23:55:09 <oklopol> okay, so first diagonally, then horizontall-/vertically
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:49 <oklopol> there's a set number of dimensinos
23:57:10 <oklopol> and, each point is identified by a vector giving coordinates
23:57:29 -!- Judofyr has joined.
23:58:11 <evincarofautumn> Yep. When a turtle walks over a command character, it executes it.
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:59:19 <oklopol> move first through n in [1..5]: (n, n)
23:59:48 <oklopol> n in [6...10]: (5, n) in my earlier notation
00:00:10 <oklopol> where [a..b] is a range from a to b, inclusive in both ends
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:05:11 <evincarofautumn> So it would go (0, 0), (1, 1), (2, 2), ... (5, 6), (5, 7), (5, 8)
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: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: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:27:06 <evincarofautumn> And yes, my eyes and mouth have become suspiciously Japanese all o' sudden.
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:29:17 <evincarofautumn> increase attractor jump size, jump attractor up/down/left/right,
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: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: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:15 <oklopol> i'm assuming infinite grid?
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:33:52 <evincarofautumn> Yeah. But unlimited in terms of what the programmer can request.
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: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: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:38:00 <ehird> everything finite sucks.
00:38:06 <ehird> evincarofautumn: yes you can
00:38:11 <ehird> figure that one out
00:38:39 <oklopol> evincarofautumn: have n dimensions, where m of them wrap
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: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: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:44:09 <oklopol> revcompgeek: i was trying to explain why you were wrong :)
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: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:45 <oklopol> revcompgeek: yes, and i failed to understand what you meant at first, and apologized
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: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: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:44 <evincarofautumn> I think this isn't really in the spirit of my original concept.
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: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: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: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: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:54 -!- timotiis has quit (Connection timed out).
01:03:00 <ehird> revcompgeek: Hello! You are one of the few people who uses the forum.
01:03:02 <ehird> I use the forum too!
01:03:25 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).
01:04:03 <revcompgeek> http://esoteric.voxelperfect.net/wiki/BRZRK
01:09:34 <revcompgeek> it isn't the best forum that could be used
01:09:38 <ehird> revcompgeek: Yes it 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:15:29 <evincarofautumn> This seems more...high-level specialisation in lieu of outright obfuscation.
01:16:43 <revcompgeek> it was actually designed to be more powerful and less obfuscated
01:17:20 <revcompgeek> i want it to be object oriented at some point
01:17:42 <revcompgeek> yeah, that is what i want most of the code to look like!
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:19:00 <evincarofautumn> The closest I ever came was something called "symbol", which I never released.
01:19:14 <ehird> revcompgeek: I love malbolge.
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:20:42 <revcompgeek> it would be reasonably simple to make a malbolge evolver
01:21:14 <revcompgeek> you can look at the source in dsource.org/projects/AID/
01:22:38 <ehird> <evincarofautumn> None has written anything useful in it by hand.
01:22:51 <revcompgeek> one plus to my language is that it would be easy to use in genetic programming
01:23:14 <ehird> evincarofautumn: It was ages ago!
01:23:17 <ehird> But he hasn't revealed his secrets.
01:23:22 <ehird> http://www.antwon.com/index.php?p=234
01:23:37 <ehird> '"Hello, world." — blatant self-promotion — a keen observation '
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:26:02 <ehird> 'PLEASE!! LET ME TERMINATE!!! :('
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:23 <revcompgeek> i just added a more obfuscated cat to the BRZRK page
01:28:52 <revcompgeek> if i renamed the loops to shorter and more obfuscated names, would that be better?
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: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:49 <ehird> revcompgeek: nononono
01:33:19 <ehird> revcompgeek: no. everyone else just isn't here
01:34:46 <revcompgeek> which is better: S_0While!=_*2+67`BS_'$_ or S_0W!=_*2+67`BS_'$_
01:37:21 <revcompgeek> i would like the interpreter to be able to output the obfuscated version of the code
01:37:57 <revcompgeek> having multiple names for loops makes it even more fun to obfuscate!
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: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:52 <ehird> "PLEASE NOTE RISING INFLATION" and stuffs
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:40 <evincarofautumn> Apart from that, math operations are fairly deterministic...provided you only use single-valued sponges.
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:58 <revcompgeek> if you only have uppercase, there can be no variables and only a few functions
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:19 <evincarofautumn> Then they stick out like they're not supposed to be there.
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:35 <revcompgeek> but my language is very different from the one you are describint
01:54:45 <ehird> revcompgeek: It's called 'revisions'.
01:54:50 <ehird> Not very different anyway
01:54:53 <ehird> Just: {...} makes it a name
01:54:56 <ehird> and otherwise lowercase is ignored
01:55:40 <revcompgeek> {} can be used for functions or variables?
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: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.
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:05:12 <revcompgeek> would make a fairly interesting polyglot between the two
02:05:27 -!- calamari has joined.
02:14:14 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
02:15:02 <revcompgeek> but my language is just so clean the way it is...
02:15:21 <evincarofautumn> There are LISP programmers out there who would kill you for saying that.
02:16:34 <revcompgeek> i will take suggestions for the new language
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: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: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: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: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:57:24 * oerjan is currently falling deeper and deeper into a black hole known as TvTropes
02:58:24 <oerjan> an extremely addictive wiki
03:01:13 -!- Judofyr__ has joined.
03:02:10 <Slereah_> So, what is your idea revcompgeek
03:03:13 <revcompgeek> each line is a value and a list of operations
03:03:58 <revcompgeek> the operation is chosen with that number for each line in the program
03:06:23 <revcompgeek> when the first line's value becomes 0, the program is halted
03:06:54 <revcompgeek> either the values of the other lines when the program exits
03:08:02 <revcompgeek> lines look like "line number: (value) operations"
03:10:36 <revcompgeek> like a way of ensuring that a certain operation runs
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:01:09 <Slereah_> Oooooh dial up if you want to know me!
16:07:13 -!- evincarofautumn has joined.
16:14:31 <ehird> hello evincarofautumn
16:14:39 <ehird> i am hereby suggesting a new irc name for you
16:14:49 <ehird> your current one is jarring
16:14:59 <ehird> bonus points: it's not registered
16:16:57 <ehird> evincarofautumn: no?
16:19:57 -!- ais523 has joined.
16:20:57 <ehird> ircnomic needs you!
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:22:14 <ehird> nothing happened -all night-
16:22:31 * pikhq had prom last night.
16:22:41 <ehird> pikhq: I was talking to ais523 anyway
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: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: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:56 -!- eoa has changed nick to evincar.
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: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:56 <ais523> OK, in that case it's TC because you can simulate Minsky-machine-Brainfuck trivially in it
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.
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: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: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:32 <evincar> eso programmers and their in-jokes.
17:07:56 <Slereah_> What else is an awesome eso joke.
17:08:06 <ehird> Slereah_: ... And then I brainfucked her!!
17:10:26 <evincar> And then she said "KTHXBAI".
17:10:33 <evincar> And that was the end of it.
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: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:15:31 <Slereah_> What is visible for again, output?
17:16:40 <evincar> I like the proposed event-handling system.
17:17:40 <Slereah_> Will it POST SOME FUCKING CATS?
17:18:20 <Slereah_> For that is what is done on Caturday!
17:19:31 <ehird> Slereah_: PLEASE DO POST SOME FUCKING CATS
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: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: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:33 <ehird> evincar: (ais523 maintains C-INTERCAL)
17:26:44 <evincar> I am in the presence of greatness.
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: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: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: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:55 <ehird> 'This is what you get... for violating the... THREE REVERT RULE!!!!!'
17:29:56 -!- timotiis_ has changed nick to timotiis.
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: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: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: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: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: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: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:56 <ais523> ehird: <.> is that negative-list language
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: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: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: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: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: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: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: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:49:02 <ais523> graphs are represented as strings of letters
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: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: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 <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: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: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: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 <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:48 <ehird> "all knob. pick nine. go foward."
17:54:02 <ehird> evincar: shall i change the example?
17:54:17 <evincar> Sure. I'll change the source reqs.
17:55:29 <ehird> evincar: My interp will be able to make some things syntax errors due to the nicety of your syntax.
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:29 <ehird> you need a modifier PICK
17:56:34 <ehird> that can go before an instruction
17:56:52 <evincar> If it's not justifiable, it's not going in.
17:57:21 <ehird> evincar: Um... realigns the plinckets
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:52 <ehird> evincar: Suggestion -
17:58:54 <ehird> give the registers names
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
18:00:04 <evincar> All right, let's come up with a list.
18:00:29 <evincar> Oh, crap. Hang on a minute.
18:00:34 <ehird> i just like it as it is
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: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: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: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: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: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 <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: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: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: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:13 <ehird> Wrote the parser already
18:41:33 <evincar> You need to make blocks movable because of the BECOME command.
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: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: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:12 * ehird didn't read the spec
18:48:36 <ehird> evincar: what is locked
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: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:17 <evincar> Then you could include code outside a block.
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: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: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: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: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:09:08 <ehird> evincar: OH NOSE!!
19:09:29 <ehird> NOSE is a special one.
19:09:39 <ehird> evincar: What happens when you try and like do somethiing with a nose register
19:09:58 <ais523> ehird: it fails, obviously
19:09:59 <evincar> Raises a NOSE exception and BECOMEs the NOSE block.
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:14:14 <evincar> I never claimed it was simple to *implement*!
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:15:09 <ehird> evincar: YOU MUST NOT LEAVE
19:15:27 <ehird> For me tonight = post-midnight
19:15:31 <ehird> I assume that's not your definition
19:16:11 <ehird> evincar: So ... Late, over here, in other words.
19:16:20 <ehird> It's possible I won't be there.
19:16:30 <ehird> also, i'm in the UK
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: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: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: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: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:36:10 <evincar> I'll make that an option for the interpreter. --poetry-mode
23:36:32 <ehird> just ignore lowercases
23:36:36 <ehird> i thought we were collaborating
23:36:39 <ehird> you break my heart! :<
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: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: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:46:35 <SimonRC> but only when I tried to scrool back past it
23:46:41 <ehird> SimonRC: a unicode bomb
23:46:46 <ehird> SimonRC: a 100-byte single unicode char
23:47:01 <ehird> SimonRC: you munge loads of modifiers together
23:47:15 <SimonRC> I thought that screen passed those straight through?
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:48:21 -!- evincar has joined.
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: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: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: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:31 <ehird> bsmntbombdood: yes
23:57:36 <ehird> they are all under arrest
23:57:43 <ehird> calamari: i have to go now anyway
23:58:56 <ehird> but in a few minutse
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: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: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: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: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: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:24 <calamari> but it does have edzinon whatever that means
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"
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: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: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: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:34 <ais523> and 4 connections, 3 disconnections
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:24:05 <ehird_> i'm just going to use xchat for a bit
13:24:08 <ehird_> no Epiphany, no-sir-ee
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: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: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:30:00 -!- ARRRRGH has joined.
13:30:09 -!- ARRRRGH has quit (Client Quit).
13:30:19 -!- aaaargh has joined.
13:30:41 <ais523> or someone else on the same IP, possibly
13:30:55 <aaaargh> so guyz my epiphany is b0rken
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: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:40 <ais523> there was a dinosaur in Toy Story, though, IIRC
13:43:45 <ais523> so it's a reasonable name
13:43:57 <ais523> yes, but I can't remember what it was
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:10 <ehird> and everything else
13:46:20 <ais523> ehird: try running a memory-test tool?
13:46:35 <ehird> 'teh webness' is working now anyway
13:46:35 <ais523> and /is/ there a processor-test tool?
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:51 <ais523> ehird_: are there any clients that can deal with this sort of thing?
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: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:21 <ais523> ehird_: maybe the video card is crazy
13:50:25 <ais523> and text mode's entirely usable
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: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:20 <ais523> and your friend is likely wrong
13:52:20 <ehird_> ais523: well, this isn't my main machine
13:53:15 <ais523> ehird_: why are you using it now?
13:53:21 <ais523> perversity, or is there a better reason?
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:26 <AnMaster> Deewiant, EOL as in end of write out?
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:56 <Deewiant> in my opinion, you should kill the spaces after 1243 as well
13:55:10 <AnMaster> Deewiant, but then what if the area to write out contains a LF
13:55:30 <ais523> ehird_: GIMP is pretty different
13:55:33 <AnMaster> would that remove those spaces?
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: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:39 <Deewiant> you know the Fungus test suite
13:57:47 <Deewiant> it does its output into files, using o in linear text mode
13:57:55 <Deewiant> and I was wondering why there were spaces at the end of all the lines
13:58:29 <AnMaster> where is your write out code, load is in utils.d, but not write?
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: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:28 <Deewiant> sounds like something that'd be in utils.d
14:01:44 <ehird_> oh I want to do things like TRDS!!!!
14:01:49 <AnMaster> import tango.text.Util : join, splitLines;
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:13 <ehird_> even i could figure that out
14:02:29 <ehird_> okay, AnMaster -- you say 'aye', but what about implementing N-funge
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:07 <AnMaster> could be possible in C with a lot of macros to handle vectors
14:03:33 <AnMaster> ehird_, not sure, probably a bit painful
14:03:42 <AnMaster> but some ppl do think that is fun so... oh well
14:03:47 <ehird_> Are fingerprints portable?
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:06:14 <Deewiant> !Befunge does trefunge and unefunge IIRC
14:07:34 <Deewiant> Language::Befunge has some n-dimension support but nothing's finished yet as far as I can tell
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: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:09:19 <Deewiant> there isn't much choice is there :-P
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:44 <AnMaster> because then I end up with a lot of null bytes for those areas
14:10:55 <ehird_> fputc(stdout, (char)(x%255))
14:11:40 <ehird_> AnMaster: do you not know what modulo is.
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: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: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:20 <Deewiant> that's like the most basic optimization there is :-P
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: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:55 <ehird_> AnMaster: You've never read Knuth... have you
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: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,"
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: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: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:56 <ehird_> AnMaster: i'm not so sure. C just isn't one for golfing, beyond evil platform tricks
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: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: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:18 <ehird_> that's just "how good is your compiler"
15:39:24 <ehird_> it's not meant to be useful
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:51 <ehird_> was due to linux pipelines
15:40:53 <ehird_> having a maximum length.
15:41:10 <ehird_> apparently most programs on it got close to the maximum exec time limit tho :)
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: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:26 <ehird_> so if you modulo it right
15:43:33 <ehird_> then you can hit on the right number :)
15:43:38 <ehird_> AnMaster: and it's $$ in ruby
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: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: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:52 <ehird_> one of the ones there assigns main to a string constant
15:46:46 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:46 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:46 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:49 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:46:53 <ehird_> ehird@debian:~$ ruby -e'p$$%7'
15:48:35 <ehird_> AnMaster: "p(x)" is "puts(x.inspect)"
15:48:42 <ehird_> AnMaster: and .inspect is like a pretty-print
15:48:52 <ehird_> (puts "abc" prints abc)
15:48:59 <ehird_> AnMaster: it's just raw-printing
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: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:47 <ehird_> ais523: the computer hasn't crashed! joy!
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:36 <ehird_> ais523: what's the past-future HHGTTG way to suffix 'spoke'?
16:12:51 <ehird_> I wioll haven spoken like that in the future.
16:13:37 <ehird_> ais523: wow, for a second i didn't connect you with 'Alexander Smith'
16:13:44 <ehird_> i thought you'd put a fake name in
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: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: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_> 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: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: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: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:40 <ehird_> AnMaster: I am behind you. Prepare to die!
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: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:30:05 <ehird_> so it uses x as a 'termination/nesting counter'
16:30:32 <oklopol> basically, it says "find `ab where a and b have been evaluated, and clip them together"
16:30:58 <oklopol> ! x+1 & ! x+2 ~ class[] <<< the element after x and the element after that are lists
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:50 <ehird_> oklopol: anmaster is a dirty C micro-optimizer
16:37:57 <ehird_> he doesn't understand any functional paradigms
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: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:55 <ehird_> oklopol: f f f arg is ((f f) f) arg in haskell
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: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:12:33 <oklopol> ehird_: pretend you read that, found it interesting and understood it!
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: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: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:11 <ais523> ehird_: toto, to's already taken
17:15:15 <oklopol> ehird_ spouts 20 lines while i ponder my one line
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 <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:35 <ehird_> Deewiant: anmaster thinks at machine level :D
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: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:15 <oklopol> i will devote my life to using it
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:06 <ais523> most other-frame commands worked like that
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: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: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:18 <oklopol> AnMaster: third result is actually the fixed-point combinator
17:24:19 <ehird_> (require 'ido) (ido-mode t)
17:24:25 <ehird_> http://www.emacswiki.org/cgi-bin/wiki/InteractivelyDoThings
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: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 <oklopol> AnMaster: my googles != your googles
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: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 <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:56 -!- ais524 has changed nick to ais523.
17:28:21 <ehird_> that's not what i meant, anyway
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:42 <ais523> my Wikipedia bot is Bot523, for instance
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: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: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: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:59 <AnMaster> ais523, that is logically not possible
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: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: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: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: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: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: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:46 <ehird_> ais523: does emacs have *arbitary* depth of pushed/popped cursor positions?
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: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: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: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: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: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:39 <ehird_> it doesn't rm the temp files it creates
18:15:06 <ais523> /tmp's wiped on boot anyway, or ought to be
18:16:02 <ehird_> http://pastebin.ca/1000585
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: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: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: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: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: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:16:59 <ehird_> ais523: so not really internal
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:54 <sauxdado> why wouldn't you write it in intercal? :)
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: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: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: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:45:54 -!- Ricardo0 has joined.
19:46:00 -!- Ricardo0 has left (?).
19:56:36 <ehird_> ais523: http://pastebin.ca/1000720
19:58:37 <ehird_> the - means that the ending delimiter can be indented
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: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: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:49 <GregorR> Rule 110 is an elementary cellular automata.
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: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: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: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:49 <ais523> GregorR: not quite that
20:29:58 <ais523> I do have a supply of 2,3 T-shirts, though
20:30:15 -!- Sgeo has changed nick to Sgnomic.
20:30:26 <ais523> Slereah: depends on who's asking
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: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:55 <evincar> http://esoteric.voxelperfect.net/wiki/Alchemy
21:38:16 <ais523> you've double-pasted parts of it
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:41:01 <evincar> It's not impossible, but it is mildly ridiculous.
21:43:48 <evincar> Hmm... now how should I cat this...
21:56:19 <evincar> Hard to find info on these.
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: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: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: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:55 <ais523> and browser JS impls are getting better
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:39 <evincar> On the one hand, it's accessible, fairly simple, Javascriptlike...
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: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: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:22:08 <GregorR> TURING COMPLETENESS IS FOR FAGS
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: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: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:42 <ais523> but normally it's a lot weirder
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: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:52 <pikhq> ais523: Do you do GNU stlye? :p
22:31:09 <ehird_> pikhq: Please die. In a fire.
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 <ehird_> Nobody would code GNU style using vi!
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: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 <ehird_> pikhq: Yeah - it doesn't fit C-esque syntax.
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: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:35 <pikhq> (that equals, IIRC, Plof 2's if(version[x], y). Is that feature in Plof 3 yet?)
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: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:49 <ehird_> bsmntbombdood: go for it
22:46:53 <ehird_> we expect RPL bf interps
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:49:39 <bsmntbombdood> http://cgi.ebay.com/Hewlett-Packard-HP-12c-Scientific-Calculator-gold_W0QQitemZ370044620652QQcmdZViewItem
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 <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: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: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:38 <pikhq> evincar: I feel justified in this.
23:03:48 <pikhq> (having done some work on said serious projects with him. :p)
23:06:22 * evincar dislikes the usage of 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: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:28 <evincar> But the Sheep Deck is green.
23:10:31 <pikhq> White also gets that mechanic from time to time.
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: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: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:42 <ais523> pikhq: maybe write a second program?
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:38 <sauxdado> (arguments via global variables)
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:14 <evincar> ehird_: You mean the sheep deck?
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: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:31:36 <ais523> Slereah: the program was tiled across 2D space
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:59 <ais523> no pixel could ever return to a previous state
23:32:03 <ais523> and it wasn't a cheat lang
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: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:37:41 -!- ais523 has quit ("TypoQ ecxeeded").
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:32 <pikhq> Vi parolas Esperanton...
23:47:44 <ehird_> pikhq: WHUT DOES SAUXDADO MEAN
23:47:48 <pikhq> ehird_: Not a clue.
23:48:40 <sauxdado> ehird_: http://en.wikipedia.org/wiki/Saudade
23:49:31 -!- timotiis has quit (Connection timed out).
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
00:04:22 -!- evincar has joined.
00:05:24 <evincar> In the twenty-odd minutes I've been gone?
00:07:08 <evincar> Did I miss anything exciting?
00:07:47 <ehird_> We had an orgy, bsmntbombdood.
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: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: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:11:39 <evincar> I think you might want to get that removed.
00:11:46 <evincar> And give it back to me asap.
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: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: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:31 -!- matthew__ has joined.
00:21:00 <Slereah> Sgeo : ehird_ no likes me in nomic :(
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:08 <ehird_> and comex is an agoran
00:22:11 <ehird_> he should know what a good proposal is!
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:38:20 <sauxdado> not just any calcultor, but from brazil!
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:46:39 <ehird_> revcompgeek: That's not very interesting :P
01:46:46 <ehird_> Bitter after my {name} suggestion? :P
01:47:19 <revcompgeek> i was going to use () but then it would have made lisp people mad
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.
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:51 <calamari> something is wrong with my monospace font.. afk, can't read this :)
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.
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:47:47 -!- ehird_ has joined.
13:47:47 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
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: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:15:57 -!- MrsCorun has changed nick to Corun.
17:24:15 <Slereah> You -> o | o <- Delicious cake
17:24:29 <Slereah> You -> o | o <- Delicious cake
17:24:40 <Slereah> You -> o | o <- Delicious cake
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: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:44 <Corun> Burn down the wall
17:29:21 <fizzie> "Oh no, now Billy has caught fire!"
17:29:52 <Slereah> You -> o | o <- Delicious cake
17:31:29 <Slereah> You -> o | o <- Delicious cake
17:32:02 <Slereah> You -> o| o <- Delicious cake
17:32:31 <Corun> fashion a pickaxe out of the coathanger
17:33:51 <ehird> Shoot missile at Duck
17:34:28 <Corun> go east; examine cake;
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:36:25 <ehird> Slereah: Okay. So we've started.
17:36:30 <ehird> Equip flamethrowser.
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:42 <Slereah> A box of matches. A bandana. A clothanger.
17:38:33 <ehird> Put match in bandada. Put matchdana by the wall.
17:39:08 <Corun> HE DIDN'T LIGHT THE MATCH
17:39:23 <ehird> Slereah: I didn't light it!
17:39:39 <Slereah> The matchdana does nothing.
17:39:53 <ehird> What is to the <--- of me?
17:39:58 <ehird> Just look, don't go.
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:39 <ehird> If it wasn't dead when we ate its face, it will be over the wall.
17:42:01 <ehird> Slereah: Oh, wait.
17:42:04 <ehird> Restart, look <---
17:42:28 <ehird> Slereah: Yeah, yeah, and we see a lion.
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:07 -!- oklopol has quit (Connection timed out).
17:43:11 <ehird> car, but jar will work
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: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: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: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:15 <ehird> Slereah: Ah. So is it basically harmless now?
17:47:18 <ehird> i.e. dying like hell
17:47:34 <ehird> Slereah: Okay. Grab the lion.
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:49:28 <ehird> Slereah: I assume there is a platform somewhere.
17:49:36 <ehird> Okay, wait, undo last action.
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: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:42 <ehird> add a little jump if you want
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: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:36 <ehird> Slereah: Oh, and to hold on
17:52:39 <ehird> attach the clothes hanger
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:55:08 <ehird> Slereah: Okay, restart.
17:55:11 <ehird> Corun: COLLABORATIME
17:55:28 <ehird> Corun: You go first
17:55:38 <Corun> Ok. I think... look up
17:56:12 <Slereah> . <- this dot is here because I cannot send empty space
17:57:02 <ehird> Slereah: Look down
17:57:57 <ehird> there isn't floor on the other side
17:58:00 <ehird> there's only ONE gap
17:58:03 <ehird> Corun: okay, your turn!
17:58:43 <Slereah> Is this the first IRP game program? :o
17:59:33 <ehird> but not the fisrt irc game
17:59:35 <ehird> but it's the best :p
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.
18:00:10 <Corun> Examine the strength of the wall
18:00:34 <Slereah> http://images.encyclopediadramatica.com/images/5/5b/Deliciouscake.png
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: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:07:52 <ehird> Slereah: not restart
18:08:30 <Corun> kick the wall in a non-life-threatening way
18:09:38 <Corun> Matches + bandana -> lion head
18:09:45 <Corun> Then climb on top of the wall
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:33 <Corun> Your turn then :-P
18:11:43 <ehird> Corun: he didn't answer yet
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: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 <Slereah> [18:34] <Slereah> | o <- Delicious cake
18:12:59 <Slereah> [18:34] <Slereah> o AAAAAAAH
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: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:38 <ehird> one char above the |
18:14:14 <ehird> Slereah: Whut is *
18:14:50 <Slereah> HURRY, BEFORE THE GRUE COMES!
18:14:55 <Corun> poke the cake with the coathanger
18:15:22 <ehird> Slereah: Are we high enough to grab a star?
18:15:27 <ehird> Or at least. Are the stars near?
18:15:58 <Corun> Maybe we should go to the west where the lion came from
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: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:31 <ehird> AND THEN GRAB THE CAKE
18:18:32 <Slereah> You could, you know, jump.
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:20:23 <Corun> The distance between us, and when it hits the challenger :-P
18:21:13 <Corun> I'm worried for the cake :-)
18:22:09 <ehird> Slereah: We still have the fluffy parachutey bits right?
18:22:50 <Slereah> <- time for a victory dance
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:29 <ehird> If it is delicious, eat it.
18:23:49 <Corun> (Aslong as it's not poisonous)
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:50 <ehird> Slereah: what does that mean
18:24:56 <Corun> It's a parachute :-P
18:25:25 <ehird> We specifically avoided that.
18:25:30 <ehird> that isn't on the gap
18:25:37 <Corun> We're not going down the hole :-P
18:25:55 <ehird> Slereah: Okay. immediately leap for the cake and grab it, and land on nice floor.
18:28:53 <Slereah> SOON TO BE RELEASED : DELICIOUS CAKE 2
18:31:07 <ehird> Ddn't the cake just eat us?
18:31:09 <ehird> <Slereah> | o<o OM NOM NOM
18:31:27 <Corun> And, how are our arms longer than our jumping distance :-P
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:30 <Slereah> You people and your freaky fetishes.
18:34:36 <ehird> EAT THE CAKE FROM THE INSIDE
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: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:50:16 <Slereah> Plus, I'm too lazy to do another one right now.
18:50:32 <ehird> ````````````````````````````
18:50:46 <ehird> | O ~ ~ ~ ~ ~~ ~ ~ o |
18:50:49 <ehird> ````````````````````````````
19:00:42 <ehird> Slereah: ~ = adasd
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:17:05 <GregorR> Blerdehblerdeh English fügel
20:23:31 <olsner> herrejistanes, vad pratar ni fr goja egentligen?
20:26:19 <olsner> wakaranai no ka? zannen da ne...
20:33:24 -!- Slereah has quit (Read error: 110 (Connection timed out)).
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:18 -!- Corun has quit (Read error: 104 (Connection reset by peer)).
21:10:26 <evincar> ehird, I don't suppose you've done that interpreter?
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:46 <ehird> evincar: I will finish it
21:12:55 -!- Slereah has quit (Read error: 110 (Connection timed out)).
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: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: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: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:09:51 <sauxdado> como se dice "how to say "como se dice "hola" en Ingles?" in Spanish?" en Ingles?
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.
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: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: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: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: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:32 <Deewiant> can the definition of WEXITSTATUS vary between Posix systems?
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:14:28 <AnMaster> because of issues with the pipes that happened otherwise
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: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:17:04 <AnMaster> WIFEXITED, WIFSIGNALED, and so on
10:17:11 <Deewiant> and WIFEXITED isn't specified... great
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:18:02 <Deewiant> but it doesn't say what it /does/
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: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: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: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: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: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: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:22:03 <Deewiant> that just means that it can return whatever it wants
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:26:14 <AnMaster> C99 doesn't seem to say anything about return value in case of non-null string
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: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: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:31:00 <GregorR> AnMaster: In `man wait` there's a macro for extracting it regardless of OS.
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:38 <GregorR> Pffft, I don't read conversations!
10:31:42 <AnMaster> StackPush(ip->stack, (FUNGEDATATYPE)WEXITSTATUS(retval));
10:31:42 <AnMaster> StackPush(ip->stack, (FUNGEDATATYPE)retval);
10:32:04 <Deewiant> heh, FBBI has a nice buffer overflow vulnerability too
10:32:49 <Deewiant> !Befunge on the other hand pushes -2 if it runs out of buffer space :-)
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:37 <AnMaster> as I want to prevent segfaults and similar
10:34:48 <Deewiant> system(NULL) is perfectly valid.
10:35:23 <AnMaster> and popping on empty stack results in a string like: "\0"
10:36:03 <AnMaster> Deewiant, at least that is how I think it shall be interpreted (the standard that is)
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:05 <AnMaster> that is a null pointer, not a null string
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:43 <Deewiant> and I would argue that pressing enter in your shell is not an error. ;-)
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:48 <Deewiant> f the value of command is NULL, system() returns non-zero if the shell is available, and zero if not.
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: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: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: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: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:18:12 <AnMaster> Emergency! Failed to allocate enough memory for new stack items: No such file or directory
12:18:21 <ais523> AnMaster: malloc doesn't always set errno
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: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: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: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: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:44 <ais523> I only had 4 tabs open...
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:47 <ais523> yes, X goes crazy sometimes and eats all my CPU cycles for a few minutes
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: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: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:25:09 <AnMaster> lynx/w3m and such are not standards-compliant for everything I think
12:25:30 <ais523> I've never seen "page best viewed in w3m" anywhere
12:25:53 <AnMaster> but point is, it can't fully support css
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: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: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:19 <ais523> I've run Python on an embedded microprocessor before, with 16 MB disk space, 64 MB RAM
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: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: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: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: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: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: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: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: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: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:54:03 <ais523> AnMaster: no, -- causes --> to have no effect until the next --
12:54:59 <AnMaster> ais523, and lynx fails on http://pikhq.nonlogic.org/test.html here
12:55:23 <AnMaster> " This stuff doesn't show at all, but only because HTML renderers suck." is all a link
12:56:38 <AnMaster> ais523, thus lynx fail at shorttags
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: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
13:01:54 <Deewiant> waiting on http://browsershots.org/http://pikhq.nonlogic.org/test.html
13:05:19 <AnMaster> Deewiant, shows two, unrelated screenshots
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> # Queue estimate: 20 minutes to 1 hour, 2 minutes (Details)
13:07:33 <ais523> AnMaster: you can bump the expiry by clicking on a button
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:40 <ais523> they should put an ad on the button and get lots of money that way
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: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: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:27:47 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
13:28:06 -!- Slereah_ has joined.
13:28:09 <ais523> AnMaster: premium customers jumping the queue?
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: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: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:53 <AnMaster> someone should run this on the acid3 test
13:37:02 <AnMaster> because konq 3 segfaults on acid 3 XD
13:37:22 <ais523> Deewiant: what were the results?
13:37:24 <Deewiant> http://browsershots.org/http://acid3.acidtests.org/
13:38:16 <ais523> Epiphany got 71, not bad
13:38:22 <ais523> presumably the same score as FF3
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: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:21 <ais523> IE6 looks like 12 on the browsershots results
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: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: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: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: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:34 <ais523> you'd store the mantissa and exponent separately
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:23 <ais523> multiply the mantissa by the square root of the base if the exponent comes out non-integral
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:10 <ais523> AnMaster: computers normally do it iteratively
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: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:37 <ais523> I don't know those assemblers
23:05:42 <ais523> but you can't use such opcodes in BF anyway
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:08:47 <ais523> I suppose that such algorithms are cheap nowadays
23:08:55 <ais523> probably the logs are done by lookup-table
23:14:59 <ehird> \\z..,xbvncbvnbm.n,.cfhl:Ll.jfdfashsdhfglgdfhjgkh';aetyeurirry0]pit\asdgzdfgfhgjhkjfg
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:12 <ehird> because i didn't recognize it as C-M-backspace
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:14 <ehird> 'This command has been disabled beacuse it is often confusing for new u-'
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: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:59:28 <olsner> anything and everything and nothing
23:59:54 <olsner> yes, often something specific :P