00:00:18 <ais523> although I strongly suggest that numbers are optimised; that's possible in Underlambda because there's no way to distinguish two data if they do the same thing in all cases
00:00:22 <ais523> (and all data are functions)
00:00:58 <ehird> ais523: underlambda->c compiler: dibs on it
00:01:13 <ais523> ehird: it's specifically designed to be compilable
00:01:21 <ais523> and also so that Unlambda can be compiled into it
00:01:27 <ais523> thus allowing an Unlambda -> C compiler
00:01:40 <ais523> if you can handle the C command, you're well on your way to writing the compiler
00:02:00 <ais523> (it looks so simple on the rewrite rule, but I put a lot of thought into that one; it can be used to implement call/cc, for instance)
00:02:40 <ehird> include landarins J
00:04:51 <ehird> ais523: hard to explakin
00:05:31 <ais523> ehird: C captures the entire state of the program, in such a way that it can be edited to some extent (but not enough to make compilation impossible) and then run
00:05:54 <ais523> you can use it to implement call/cc by simply editing the result of C a bit and then using it as your continuation
00:06:20 <ais523> it would be great if it could implement J too, whatever it is
00:07:09 <ehird> ais523: does it have variables?
00:07:25 <ais523> but there are various ways to simulate them
00:07:57 <ais523> For instance, all Brainfuck programs with no comments become legal Underlambda programs if you add the magic line and | at the end
00:08:07 <ais523> although I haven't put [],. in the spec yet
00:10:23 <ais523> the stack is good to use for temporary variables
00:10:27 <ais523> and you can use lambdas as well
00:11:00 <ais523> I might also implement some sort of 'variable storage' at some point which allows you to store and retrieve functions in a hash table, exactly like global variables work in imperative languages
00:11:13 <ais523> and I might make each of them a STASH like in INTERCAL so you could have scoping
00:11:23 <ais523> if I do that, it would probably go in Tier 3
00:22:12 <ehird> ais523: I feel like spceifying a minimal concatenative language based on rewrites.
00:23:09 <ehird> What about one with no [...]?
00:23:18 <ehird> The only way to get a quotation is 'dei'
00:23:31 <ehird> which [...]s the last execution step
00:23:37 <ehird> but of course you have to execute it first
00:23:39 <ehird> making stuff tricky
00:24:10 -!- BMeph has joined.
00:24:25 <ais523> [...] is what makes a language concatenative, generally speaking
00:24:34 <ais523> although I suppose you might just about be able to create one without it
00:24:39 <ehird> ais523: well, what i mean is
00:24:47 <ais523> but it would probably end up just being lambda calculus or something like that
00:24:49 <ehird> but since 'foo' executes first...
00:25:02 <ehird> 2 dup dei => 2 2 [dup]
00:25:08 <ehird> so you'd have to do
00:25:16 <ehird> 2 dup dei swap drop => 2 [dup]
00:28:42 <ais523> ehird: so dei's like ' in Underlambda, but its argument gets evaluated anyway?
00:28:56 <ais523> hmm... manipulating deis would be fun
00:29:00 <ehird> ais523: pretty much
00:29:06 <ais523> 2 dei dei swap drop => [dei]
00:29:09 <ehird> basically, it's like this:
00:29:18 <ehird> after each word is executed, you save it in the 'last' variable
00:29:28 <ehird> 'dei' just pushes a quotation of the last word
00:29:34 <ehird> you'd also have 'compose' of course
00:29:38 <ais523> ehird: there'd be no way to get [quit]
00:29:48 <ehird> ais523: but of course
00:30:06 <ehird> 2 dei dup dei compose drop drop => [2 dup]
00:30:09 <ais523> being able to write (Q) (or 'Q) is needed for Underlambda to be able to do call/cc
00:30:21 <ehird> ais523: meh, i'm thinking about it in a purely functional manner right now
00:30:35 <ais523> Q and A are sort of opposites in Underlambda
00:30:42 <ais523> Q deletes the program, A deletes the stack
00:30:44 <ehird> ais523: like my idea though? :D
00:30:51 <ais523> ehird: it's interesting
00:31:03 <ais523> not sure it'll lead to a very usable language, but somehow I don't think that was your aim
00:31:19 <Deformative> What language has [...]? I thought I came up with that all on my own.
00:33:06 <ehird> ais523: dips rewrite rule is simple :D
00:33:27 <ais523> dip is _ in Underlambda
00:33:39 <ais523> but I haven't written it into the spec yet, or the reference interp, so it only exists in my head
00:34:06 <ais523> you can implement _ as ~a*^
00:34:59 <ais523> so what's simpler? _ => ~a*^ or (x)(y)_ => y(x)
00:35:24 <ais523> (are the X and Y the wrong way around in your rewrite rule, actually?)
00:36:45 <ais523> I have a vision of somewhere (maybe Tier 5) of being able to write your own rewrite rules at the start of the program, sort of like Lisp macros
00:37:38 <ehird> ais523: wrote a spec for my thing
00:37:43 <ehird> ais523: also, have user-definable synta
00:37:57 <ais523> ehird: that's pretty much what that rule would do
00:37:59 <ehird> http://pastebin.ca/943111
00:38:08 <ehird> i am going to work on a factorial
00:38:21 <ehird> [X] dei => http://en.wikipedia.org/wiki/Special:Search?go=Go&search=X
00:38:29 <ehird> [X] dei => [ [X] ]
00:38:36 <ehird> you can't do that literally
00:38:50 <ehird> so i need a special 'curry;
00:38:55 <ais523> are you implementing wrap?
00:39:31 <ehird> ais523: http://pastebin.ca/943115
00:39:40 <ais523> ehird: it looks like you're implementing negative numbers. Stop it.
00:40:03 <ais523> Negative numbers don't exist except in reversible languages, because you can't do something a negative number of times
00:40:16 <ehird> ais523: but they're just atoms
00:40:20 <ehird> and there's no "do n times" thingy
00:40:39 <ais523> ehird: in Underlambda the number n is the function that transforms a function into that function composed with itself n times
00:40:43 <ehird> ais523: not in this.
00:40:49 <ehird> ais523: anyway, hm, recursion is hard with this language
00:40:51 <ehird> maybe impossible..
00:40:57 <ehird> since you have to do it to dei it
00:40:57 <ais523> ehird: but then you have more than one data type
00:41:04 <ais523> ehird: what about implementing sii?
00:41:05 * ehird adds a 'while' to simplify things
00:41:08 <ehird> ais523: ooh, good idea
00:41:42 <ehird> what would that do
00:41:54 <ais523> it's :^ in Underlambda/Underload
00:42:11 <ehird> ais523: maybe I should do Y
00:42:52 <ehird> ais523: dup drop dei => [drop]
00:43:10 <ais523> ehird: all reversible combinators can be deid easily
00:43:48 <ehird> but i'm having trouble dei'ing [1 - swap sii]
00:43:52 <ais523> for certain values of reversible
00:43:54 <ehird> i'm trying to implement this
00:44:04 <ehird> : make0 dup 0 = [drop] [1 - make0] if ;
00:44:07 <ais523> for instance, a 'invert order of stack' combinator would be hard to dei
00:44:19 <ais523> because your [invertstack] would end up on the /bottom/ of the stack
00:45:03 <ehird> ais523: invertstack dei dup dip
00:45:08 <ehird> you'd need another dip
00:45:42 <ais523> the problem is, to dip around the invertstack, you need a dei'd invertstack, so you have a chicken-and-egg problem
00:45:49 <ehird> ais523: any ideas on my make0 btw?
00:46:04 <ehird> you have to write the function, remove the recursion, dei the whole thing, then sii it i guess
00:46:07 <ais523> no, I'm trying to concentrate on something else in RL
00:46:12 <ehird> but i'm stuck on writing the function :)
00:46:24 <ehird> ais523: think this is TC?
00:46:44 <ais523> ehird: it's probably TC but probably hard to write programs in
00:46:55 <ehird> ais523: probably tc? really?
00:46:59 <ehird> i wouldn't think s
00:47:00 <ais523> if you can implement s, k, and apply, you're done, after all
00:50:53 <ais523> I think it's possible to implement s and k, and i=apply, but you'd have to write the program in the first place using deis
00:51:44 <ais523> hmm... it's possible to get [wrap], [drop], [dup], [swap], [i], and [compose] easily enough
00:51:55 <ais523> so all you have to do is get some TC Underload program
00:52:23 <ais523> then flatten it so that it never quotes more than one combinator in a row (which is easy with a few rewrite rules)
00:52:35 <ais523> then just dei each of the combinators, and you're done
00:52:58 <ais523> would be [dup] [i] compose wrap [dup] compose [i] compose
00:53:25 <ais523> and [dup] and [i] are both easy to dei onto the stack
00:53:34 <ais523> so the language is TC, I've just informally proved it
00:54:18 <ais523> maybe I'll write an Underload-minus-S (i.e. Underlambda Tier 1) to your language compiler, it wouldn't be too hard
01:00:07 <ehird> ais523: interesting
01:02:57 <ais523> ehird: http://pastebin.ca/943140
01:03:21 <ais523> a 'flattener' for your language that takes a program using [] and Underlambda-tier-1 combinators and transfers it into one using dei
01:03:22 -!- timotiis has quit ("leaving").
01:04:33 <ais523> see, I told you it was TC
01:04:46 <ehird> ais523: I think that could be regexpable actually
01:04:54 <ais523> (caveat: you need at least one element on the stack to start with unless it magically fills itself, but you could just write 0)
01:05:08 <ais523> ehird: using recursive regexen (like Python and Perl5.10 have), yes
01:05:36 -!- ais523 has quit ("it's past midnight").
01:12:19 -!- oerjan has quit ("Good night").
01:59:49 <ehird> well, bye everyone for today
01:59:54 <ehird> see you all tomorrow :)
02:00:02 -!- ehird has quit ("Konversation terminated!").
02:24:40 -!- Deformati has quit (SendQ exceeded).
02:45:27 -!- GregorR-L has joined.
02:50:28 <GregorR-L> Fastest way to get the integral square root of an integer with no FPU?
02:51:55 -!- Tritonio_ has joined.
03:02:46 -!- Corun has joined.
03:04:19 -!- calamari has joined.
03:19:13 -!- Tritonio_ has quit (Remote closed the connection).
03:51:27 -!- Corun has quit (Read error: 110 (Connection timed out)).
05:01:11 * oklokok made his first thue program!
05:01:30 <oklokok> not sure it works yet, just tried some simple examples
05:11:49 <oklokok> `````s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk``s`kki``s`kk`ki``s``s`ks``s`kk`kk`kiski evaluates correctly, i'm convinced
05:25:35 -!- GregorR-L has quit ("Leaving").
05:40:20 <oklokok> http://www.vjn.fi/oklopol/thue.txt
05:40:50 <oklokok> i'm fairly sure that's all i'm ever going to do with thue without code generation :D
05:42:01 <oklokok> perhaps i should do that brainfuck self interp
06:00:42 <pikhq> http://video.google.com/videoplay?docid=-7974828993993586658
06:03:02 * pikhq performed that earlier today (not that recording, though)
06:07:19 <Sgeo> oklokok, in PSOX?
06:07:33 <Sgeo> anyways, g'night
06:07:38 <Sgeo> Goodnight all!
06:08:40 -!- Sgeo has quit ("Ex-Chat").
06:22:15 -!- calamari has quit ("Leaving").
06:57:19 -!- BlackMeph has joined.
06:57:23 -!- BMeph has quit (Read error: 104 (Connection reset by peer)).
06:57:32 -!- BlackMeph has changed nick to BMeph.
07:02:01 -!- BlackMeph has joined.
07:03:57 -!- BMeph69 has joined.
07:13:31 -!- adu has joined.
07:16:22 -!- BMeph has quit (Connection timed out).
07:20:30 -!- oklokok has quit (Remote closed the connection).
07:20:58 -!- oklokok has joined.
07:21:01 -!- BlackMeph has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:24:46 -!- adu has quit (Remote closed the connection).
10:17:24 <AnMaster> Deewiant, what is this from strn.d about: static assert (cell.sizeof == 4 && cell.min < 0, "Need more than 11 chars here");
11:00:24 -!- sebbu2 has joined.
11:08:12 -!- sebbu has quit (Read error: 110 (Connection timed out)).
11:08:12 -!- sebbu2 has changed nick to sebbu.
11:14:13 <Deewiant> AnMaster: it probably (I don't have the code here, at school) uses a static buffer of 11 chars
11:14:27 <Deewiant> AnMaster: which means that if you have a 64-bit int, for instance, it won't fit.
11:15:52 -!- faxathisia has left (?).
11:16:32 <AnMaster> Deewiant, now cfunge compiles with no warnings here, using either 32-bit or 64-bit data type, I got no idea if that is also the case on 32-bit platforms. I still get a single warning when using -DNDEBUG however
11:26:51 -!- oklokok has quit (Remote closed the connection).
11:37:34 -!- oklokok has joined.
11:42:50 <AnMaster> Deewiant, I admit, doing it in D is simpler: That the size of the stack stack is 0
11:42:51 <AnMaster> BAD: should be at least 1, assuming 1
11:42:51 <AnMaster> That the stack sizes are [ 41 ] from top to bottom
11:42:51 <AnMaster> That the command-line arguments were: [ "▒" "/mycology/mycology.b98" ]
11:43:39 <AnMaster> now, everything pushed on stack seems ok, so would be useful to have ccbi print each instruction as it runs it so I can compare
11:57:42 -!- ais523 has joined.
12:37:10 -!- Hiato has joined.
12:44:31 <AnMaster> Deewiant, the stack matches for ccbi and cfunge in the interesting part, so that's not the problem, but they show different output for time, up to and including date everything is fine in mycology
12:44:59 <AnMaster> after that y output is more or less garbled for cfunge, until environment variables
12:45:46 <ais523> AnMaster: is it possible that you're pushing the wrong number of elements onto the stack?
12:46:16 <ais523> that way all the ouput would be displayed in the wrong section in the wrong format, leading to that sort of problem
12:46:18 <AnMaster> ais523, I dumped stack from both ccbi and cfunge, they match in size for elements
12:46:35 <AnMaster> up to, and past the section we are discussing
12:46:38 <ais523> are any of the elements themselves a count of elements?
12:47:30 <AnMaster> ais523, well yes, items of stack and such, but I verified those, the only ones that differ are handprint, interpreter version, exact time, and supported features
12:48:47 <AnMaster> ais523, when I build with -fstack-protector-all it works, when I don't it fails, and this is -O0, so it isn't due to optimizing too much
12:49:42 <AnMaster> actually now it works without -fstack-protector-all too, but I did make clean before, so it can't be due to broken build before
12:50:27 <ais523> AnMaster: you might have run an old executable by mistake. I've been doing that quite a lot recently due to cross-compiling and transferring the resulting executable from computer to computer by USB stick
12:50:46 <AnMaster> ais523, err, I didn't do that, I use cmake, and I ran make
12:51:20 <ais523> OK, that makes it substantiatlly harder to get things wrong
12:51:37 <AnMaster> and now it refuse to fail for the moment
12:51:55 <AnMaster> odd thing is, I had about same problem yesterday, for a while, then it started working again
12:52:03 * AnMaster wonders if he maybe should run memcheck
12:52:11 <AnMaster> or memtest or whatever it is called
12:52:20 <ais523> it's the default on valgrind, anyway
12:52:31 <AnMaster> ais523, no I mean on computer memory
12:52:48 <ais523> I think your memory is very unlikely to be the problem
12:52:55 <AnMaster> ais523, and I did do valgrind on the failing binary before, it reported nothing
12:53:03 -!- Hiato has left (?).
12:53:07 <AnMaster> some memory leaks yes, because I had to build without garbage collector
12:54:49 <AnMaster> ais523, anyway it did have some issue before, because it reported random garbage in the first field of command line arguments, like:
12:55:04 <AnMaster> That the command-line arguments were: [ "<non-ascii stuff here>" "mycology/mycology.b98" ]
12:56:05 <ais523> AnMaster: most likely the stack somehow got out of sync
12:56:46 <AnMaster> as it first failed at time value, *tries to make it push same time value as before to see what happens*
12:57:11 <ais523> hmm... maybe it's a current-time-dependent error, that would explain why it suddenly started working
12:57:11 <AnMaster> ais523, hah, when I push old time value it fails
12:57:17 <AnMaster> StackPush((FUNGEDATATYPE)668196, pushStack);
12:57:27 <ais523> what type is FUNGEDATATYPE?
12:57:45 <AnMaster> ais523, int_fast64_t, depending on compile time options
12:58:00 <AnMaster> StackPush((FUNGEDATATYPE)(curTime.tm_year * 256 * 256 + (curTime.tm_mon + 1) * 256 + curTime.tm_mday), pushStack);
12:58:25 <AnMaster> where curTime is returned from gmtime
12:58:35 * ais523 is amused at seeing the int_fast64_t; I wonder how long it'll be before there's a computer that's faster at >64-bit numbers than 64-bit numbers?
12:59:05 <AnMaster> actually gcc got __int128_t if you want to try
12:59:29 <AnMaster> ais523, anyway it can be set to use int32_t or int_fast64_t
13:00:18 <AnMaster> actually the line I meant above that was normal push was: StackPush((FUNGEDATATYPE)(curTime.tm_hour * 256 * 256 + curTime.tm_min * 256 + curTime.tm_sec), pushStack);
13:03:28 <AnMaster> ok... this doesn't make any sese
13:03:57 <ais523> what data type is curTime.tm_hour?
13:04:07 <ais523> is it possibly overflowing before you cast it to FUNGEDATATYPE?
13:04:19 <ais523> no, can't be in this case
13:04:37 * ais523 has been working on a 16-bit embedded system, and as a result is somewhat jumpy about overflows
13:05:07 <AnMaster> ais523, well man gmtime says it's int
13:05:46 <ais523> so it's not an overflow, at least not there...
13:06:16 <ais523> ~$ printf %x\\n $((668196))
13:06:29 <ais523> AnMaster: you converted in the wrong direction
13:06:54 <AnMaster> ais523, but 668196 is value I printed using %d
13:07:00 <ais523> I don't see anything particularly unusuable about that bit pattern
13:07:22 <ais523> (I was wondering if it ended with lots of 0s or something)
13:09:39 <AnMaster> ais523, how do you find out the hours, minutes and seconds from 668196
13:10:13 <ais523> minute = (668196 / 256) % 256
13:10:21 <ais523> second = (668196) % 356
13:11:01 <AnMaster> yep that matches when I dumped stack I think
13:11:01 <ais523> or you could just look at the hex output; the hour is 0xa, the minute is 0x32, the second is 0x24
13:11:33 <ais523> hmm... does ccbi have the same problem when run at that precise time?
13:11:36 <AnMaster> or actually 11:50:36 because I found out hour was off by one
13:11:40 <ais523> if so it's likely a bug in Mycology
13:12:20 <AnMaster> I run some time dependant stuff that would scream is I set clock back, and I can't compile ccbi myself
13:12:43 <ais523> so checking will be hard, then
13:13:19 <AnMaster> Deewiant, can you check what happens when you push 668196 as time in ccbi? ie. hard code that value in and test what happens
13:13:32 <AnMaster> hard code the value of 10:50:36
13:14:18 <AnMaster> ais523, now it correctly says:
13:17:08 -!- olsner has joined.
13:24:29 <AnMaster> ais523, btw I'm happy there isn't any way to get phase of moon in befunge XD
13:24:39 <AnMaster> (unless you calculate it from date)
13:24:50 <ais523> AnMaster: there should be a fingerprint for that
13:24:53 <ais523> also the date of Easter
13:25:25 <AnMaster> ais523, god, that's complicated, well in that case we should do non-western holidays too
13:25:55 * ais523 has an Easter-calculating algorithm in C which they translated from an example in an Algol-68 textbook
13:25:57 <AnMaster> like say, Ramadan or whatever it is the Muslims do (of course it would be classed as terrorist software in US if it did that)!
13:26:58 <ais523> maybe also convert between calendars of different cultures
13:27:39 <ais523> do the Western zodiac as well in that case
13:27:50 <ais523> oh, and also convert to sidereal and Darian just in case
13:27:50 <AnMaster> such a fingerprint would get extremely complex
13:28:00 <AnMaster> ais523, what about Discordian dates?
13:28:23 <ais523> just do as many calendary things as you can until you run out of capital letters
13:28:26 <AnMaster> you know there is some unix program for that called ddate
13:29:02 <AnMaster> ais523, nah, it could be C for convert, that pops type of calender to convert from, type to convert to and date
13:29:34 <AnMaster> Today is Prickle-Prickle, the 1st day of Discord in the YOLD 3174
13:29:59 * AnMaster wonder why someone added that to util-linux
13:30:04 <AnMaster> sys-apps/util-linux (/usr/bin/ddate)
13:30:39 <ais523> that's like me wondering why factor is in GNU coreutils; I think there must be more to it than ehird`'s claim that it's because GNU is horribly bloated
13:30:51 <ais523> at least tsort makes some kind of sense
13:31:21 <AnMaster> ais523, well no ddate on my freebsd :)
13:31:58 <AnMaster> factor: `42233453345345233256' is too large :/
13:48:13 <ais523> $ factor 9223372036854775807
13:48:13 <ais523> 9223372036854775807: 7 7 73 127 337 92737 649657
13:48:13 <ais523> $ factor 9223372036854775806
13:48:13 <ais523> 9223372036854775806: 2 3 715827883 2147483647
13:48:34 <ais523> so it can handle signed 64-bit ints
13:48:48 <ais523> at least in the implementation I have here
13:48:54 <ais523> still no idea why it's in coreutils, though
14:26:10 <AnMaster> Deewiant, btw I'm down around 0.78 seconds when I disable boehm-gc, also currently just 8 bytes leaked memory without boehm-gc, though there is a lot valgrind says is "still reachable"
14:39:21 <ais523> (which means that there's a pointer to it available somewhere, but that you don't necessarily know you're going to have to free)
14:50:08 -!- Corun has joined.
14:57:06 <AnMaster> and quite a few "possibly lost"
14:57:14 <AnMaster> meaning, pointer to somewhere inside object
14:57:29 <AnMaster> reason is that I allocate data cells for fungespace in chunks of 512 cells
14:57:57 <AnMaster> so that *will* be a memory leak if there is no cell referenced inside such a block, when not using a garbage collector
15:02:54 -!- oklopol has quit (Read error: 110 (Connection timed out)).
15:16:52 -!- timotiis has joined.
15:58:16 <AnMaster> Deewiant, apart from the time issue mentioned above, I got another question, why does it seem that ccbi's SUBR only allocate a call stack of 8 calls?
16:09:48 -!- Sgeo has joined.
16:18:19 <AnMaster> Deewiant, AAAAAAAAAAAAAAAAARGH! at rcfugne fingerprint docs, and I fail to understand wtf you are doing in subr.d
16:23:46 <Deewiant> AnMaster: fixed the bug with mycology's time output
16:24:20 <Deewiant> a 'a' instead of a '9' lead to the leading zero
16:24:24 <Deewiant> and then there was a misalignment
16:24:29 <Deewiant> should have hit a space but it hit a 'y'
16:25:38 <Deewiant> the call stack is initialized to 8, yes. but it can grow.
16:25:59 <AnMaster> Deewiant, why not create a normal temp stack?
16:26:20 <Deewiant> it needs to be persistent, no?
16:26:21 <AnMaster> err don't you have some stack class?
16:26:34 <AnMaster> Deewiant, it does? anyway is it local to ip or not?
16:26:40 <Deewiant> the D stdlibs don't have any containers like in C++
16:26:46 <Deewiant> not at the time of writing, anyway
16:27:27 <Deewiant> but anyhoo, sure I've got the stack class
16:27:35 <AnMaster> Deewiant, but anyway should it be local to ip, and, what do you mean persistent?
16:27:51 <Deewiant> 'cause this one doesn't pop zero when it's empty, for instance.
16:28:04 <Deewiant> I don't know, I can't remember what the fingerprint does.
16:28:43 <Deewiant> hmm, maybe it should be local to IP.
16:28:44 <AnMaster> see ret, the return address is on the main stack, no?
16:29:02 <AnMaster> so call stack should be local to function?
16:29:33 <Deewiant> to function? to IP, certainly, I think.
16:29:46 <Deewiant> although strictly speaking these are all UNDEF when it comes to multiple IPs.
16:30:01 <Deewiant> since RC/Funge-98's docs suck and it doesn't implement concurrency.
16:30:22 <AnMaster> err, as far as I can see, you don't need to store call stack, as you get return address from ip's stack
16:31:09 <Deewiant> and then it moves n cells from IP's stack to the callstack
16:32:03 <Deewiant> it pops n, then it puts the ret address, then it puts them back again.
16:32:31 <Deewiant> so it's just an optimization to avoid needless heap activity.
16:33:07 <Deewiant> AnMaster: you know 'register'?
16:33:17 <Deewiant> auto is basically the opposite
16:33:25 <Deewiant> but auto is also the default for all variables
16:33:45 <Deewiant> maybe in the old days you wanted to be explicit about auto vs. register or something
16:33:51 <AnMaster> that's the opposite of register
16:33:59 <AnMaster> auto would be default middle value
16:34:01 <Deewiant> I'm using the term 'opposite' loosely
16:34:09 <Deewiant> register -> put it in register
16:34:21 <Deewiant> volatile -> always read the value from wherever it came from
16:34:36 <AnMaster> therefore register is opposite of volatile
16:35:07 <Deewiant> I'd say none of these are opposites of each other, strictly speaking
16:35:16 <Deewiant> but anyway, that's 'auto' for ya.
16:38:51 * SimonRC wonders what is up with ddate's man-page
16:39:29 <SimonRC> actually, "auto" variables are those with automatic allocation
16:40:06 <SimonRC> but for some reason, my less thinks that the ddate manpage has ~6500 lines just befor the "EXAMPLES" subtitle.
16:41:54 <AnMaster> #\884***+1#<;#_ -! #_ bb*01- x>".dedaol">:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_$a,Testing fingerprint SUBR... loaded.
16:41:54 <AnMaster> 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx
16:43:04 <AnMaster> printing each instruction as it runs, at trace level 3, (at 4 it would print like: x=165 y=210: x (120) )
16:47:20 <AnMaster> Deewiant, help, what could cause that error on SUBR loading? :(
16:47:33 <AnMaster> >0" tnirpregnif gnitseT">:#,_00p410p310p210p110p>:;^p1p00:+1g00:;# _ " ...",,,, 41g:!#^_>31g:!#^_>21g:!#^_>11g 00g #^(22p33pv>".dedaol">:#,_$a, 0655**- \ ef* - x
16:48:01 <Deewiant> because that's the standard fingerprint loading routine
16:48:09 <AnMaster> Deewiant, yes, and it works for other fingerprints
16:48:23 <Deewiant> at the end, it hits an x and jumps to (15, y) where the y-coordinate is pushed at the fingerprint
16:48:41 <AnMaster> Testing fingerprint SUBR... loaded.
16:48:41 <AnMaster> Testing fingerprint SUBR... loaded.
16:49:32 <AnMaster> why would it load it twice wtf
16:49:44 <Deewiant> something's going wrong in that first x I guess
16:50:13 <AnMaster> Deewiant, but considering it is generic loading and works for other fingerprints, I don't get it
16:50:52 * Sgeo is about to die of boredom
16:50:57 <Deewiant> what's that '5' after the first x
16:51:28 <Deewiant> 2008-03-15 17:41:54 ( AnMaster) 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx
16:52:23 * AnMaster traces in gdb to be able to catch the output
16:52:42 <AnMaster> because even without optimizing it takes just a fraction of a second to fill the scrollback with x
16:52:58 <SimonRC> how about teeing the output?
16:54:56 <AnMaster> Deewiant, http://rafb.net/p/mz4t6B40.html
16:55:58 <AnMaster> Deewiant, yes, looks like something jumped way too far
16:56:19 <Deewiant> looks like your math goes wrong somewhere
16:56:46 <Deewiant> it's your program, you debug it :-P
17:01:19 <AnMaster> Deewiant, ok J is broken, if I make J reflect i do get BAD but it doesn't lock up
17:02:02 <AnMaster> aha, missing a setting of delta in J I think
17:02:25 <Deewiant> J? I thought that died before getting to J
17:02:47 <SimonRC> What is this SUBR fingerprint?
17:02:54 <AnMaster> Deewiant, but J didn't set delta, you may want to test for that
17:03:14 <SimonRC> I thought '98 already did those
17:07:01 <AnMaster> Deewiant, pull to get my SUBR, not yet optimal
17:07:15 -!- Corun has quit ("This computer has gone to sleep").
17:07:44 <AnMaster> Deewiant, still around 0.075 seconds here for it :D
17:08:40 <SimonRC> I must have been confused by j in combination with u and {}
17:08:55 <AnMaster> SimonRC, those are different indeed
17:09:19 <AnMaster> but really, SUBR is quite possible to emulate using befunge
17:09:34 <AnMaster> Deewiant do that in mycology really
17:10:12 <Deewiant> sure, you just have to manually push the return address
17:10:23 <Deewiant> I make things easier by hard-coding the return x-coordinate as 15
17:12:06 * SimonRC considers a C->Befunge compiler
17:13:30 <SimonRC> actually a Forth might work quite well
17:14:32 <AnMaster> oh wait, C->befunge would be nice
17:14:47 <AnMaster> because then I could run cfunge under cfunge
17:15:02 <AnMaster> SimonRC, note that cfunge is very much C99, so would be quite a bit of work
17:15:13 <SimonRC> Aren't there enough befunge terps out there already?
17:15:26 <AnMaster> SimonRC, very few standard conforming ones
17:15:37 <AnMaster> CCBI and mine are all standard conforming ones I know
17:16:53 <AnMaster> SimonRC, http://users.tkk.fi/~mniemenm/befunge/mycology-comparison.html
17:17:28 <AnMaster> Deewiant, btw for mycology fix of date, you didn't update webpage it seems?
17:23:53 <Deewiant> can't be bothered to put it all there
17:24:06 <Deewiant> because they're mostly of the type "fixed typo" like that one.
17:26:16 * Sgeo is dead tiredbored
17:26:38 <AnMaster> SimonRC, anyway cfunge: http://rage.kuonet.org/~anmaster/cfunge/
17:43:02 <AnMaster> Deewiant, it is weird that my interpreter seems to get no slower for each fingerprint I add
17:43:20 <AnMaster> it is basically same speed, around 0.78 seconds in super-optimized mode
17:43:39 <AnMaster> I found that gcc 4.1 and later actually got an undocumented -O4
17:43:40 * ais523 has just proved Splinter to be a push-down automaton
17:43:57 <ais523> I found it on Keymaker's website
17:44:06 <ais523> not sure if it's on esolangs
17:44:14 <AnMaster> ais523, how much do you win for that?
17:44:35 <ais523> but it was an interesting task, because Keymaker thought it was just a finite-state machine
17:44:54 <ais523> http://koti.mbnet.fi/yiap/splinter/splinter.html
17:46:00 <AnMaster> ais523, contact him/her about it?
17:46:15 <ais523> I may do at some point
17:46:53 * ais523 pastes their pushdown automaton to Splinter compiler
17:47:24 <AnMaster> Deewiant, is adding concurrency hard?
17:47:47 <ais523> http://pastebin.ca/943809
17:48:09 <Deewiant> AnMaster: dunno... potentially
17:48:19 <Deewiant> AnMaster: if you've just copied all my algorithms then probably not ;-P
17:48:30 <AnMaster> Deewiant, I have designed with concurrency in mind
17:48:49 <AnMaster> using ip->stack instead of some global stack stack variable
17:48:59 <AnMaster> err actually the latter I do but it's quite hidden
17:49:08 <ais523> the definition of a push-down automaton requires it to accept input, but I simulate that by using a separate splinter N whose only purpose is to provide input every time it's called, so the input is entirely separate to the program
17:51:03 <AnMaster> Deewiant, but I didn't copy your algorithms for core code, wrapping and fingerprints yes, but I didn't look at ccbi before I got stuck at wrapping
17:51:20 <AnMaster> Deewiant, the reason being I thought D was so different I wouldn't understand it, heh
17:51:47 <ais523> http://esolangs.org/wiki/Splinter works too (although Esolang was down a few minutes ago, apparently due to 'too many connections', it's back up again)
17:52:19 <AnMaster> ais523, the whole program looks like a > heh
17:52:43 <AnMaster> ais523, that pastebin link, it may not exist forever
17:53:00 <ais523> AnMaster: it's meant to, but I still have the original file, just nowhere more permanent to put it
17:53:15 <ais523> there are a few pastebin links on Esolang for before things can be moved to a proper home
17:53:31 <ais523> and because pastebin.ca keeps things around forever, it's likely to last longer than many esolang sites
17:55:11 <ais523> when ehird's website is up, that would likely be a better place
17:58:46 <AnMaster> ais523, well I got launchpad to mirror cfunge and sf.net for download hosting
17:59:07 <ais523> it's more of a serious project than a proof-of-concept compiler, though
18:13:52 -!- Corun has joined.
18:29:08 -!- oklokok has quit (Read error: 113 (No route to host)).
18:31:55 -!- oklofok has joined.
18:34:55 -!- shinku has joined.
18:52:42 -!- shinku has quit.
18:58:11 -!- sebbu2 has joined.
19:02:04 <AnMaster> Deewiant, btw about concurrent IP, would you do it as a linked list?
19:02:22 <AnMaster> considering this with inserting and removing IPs it seems like the best way
19:02:42 <Deewiant> I did that once, it ended up slower than arrays
19:03:23 <AnMaster> Deewiant, true not good for CPU cache
19:03:34 <Deewiant> aye, memory locality is likely the reason
19:04:19 <AnMaster> Deewiant, but adding a new one, or deleting an old one becomes O(n) with array, right?
19:06:34 <AnMaster> Deewiant, what file is IP *list* in?
19:06:36 <Deewiant> it's O(1) + memory allocation costs
19:07:11 <AnMaster> Deewiant, how can it be O(1) if you need to insert an entry in front of another you will need to move all later ones
19:07:17 <AnMaster> unless you use some hash map for it?
19:07:32 <Deewiant> allocate new array which is 1 bigger
19:07:38 <AnMaster> "It causes the current IP to be duplicated, and this duplicate is added to the IP list such that it is executed for the first time before the parent IP is next executed."
19:07:41 <Deewiant> copy old_array[0..i] to the beginning
19:08:03 <Deewiant> copy old_array[i+1..end] to the end of the new array
19:08:16 <AnMaster> Deewiant, ok true, yes I get that bit, but that isn't O(1)
19:08:40 <AnMaster> it's something like O(n) for number of elements in array
19:08:48 <Deewiant> the memory allocation costs make it O(n) in practice
19:09:02 <AnMaster> Deewiant, yes and you can't copy all in one go
19:09:04 <Deewiant> but the copying can basically be done by sharing
19:09:18 <Deewiant> or hmm, actually only half of it can be done by sharing. darn, so it becomes O(n/2)
19:09:50 <AnMaster> err? *thinks* O(n/2) == O(n)??
19:10:18 <Deewiant> if you know the definition it makes sense
19:10:21 <AnMaster> Deewiant, that would only be true if n is treated as infinite
19:10:33 <AnMaster> mathematically speaking I mean
19:11:12 <Deewiant> the notation is a bit crap, but it makes it easier to talk about stuff
19:11:35 <AnMaster> haven't got to set theory much in school yet, we done some basics like discuss N, Z, Q and R and such
19:11:44 <Deewiant> for instance, it's not really "f = O(n)", it's "f ∈ O(n)"
19:12:39 <AnMaster> what does those means? they aren't same as mode
19:12:41 -!- ais523 has quit ("might be back soon, might not be").
19:13:13 <Deewiant> then there's the one or two for TRDS.
19:13:46 <AnMaster> Deewiant, why those? I think q = call to exit, @ = some call to destroy current ip, and exit if it's the only one
19:14:08 -!- sebbu has quit (Read error: 110 (Connection timed out)).
19:14:17 <AnMaster> Deewiant, err all of those are for TRDS?
19:14:29 <Deewiant> as you say, they wouldn't be necessary if it weren't for TRDS.
19:14:31 <AnMaster> oh god sounds like a real mess (yes it is)
19:19:20 <AnMaster> (sorry, considering ccbi's code, you *DO* think)
19:19:54 <Deewiant> I'm not sure they're necessary even now. depends on how the states get set.
19:20:34 <Sgeo> A spam email that sends to a malicious IP belongs to ucsd.edu
19:20:40 <AnMaster> or some D interal to make it sparse?
19:20:43 <Deewiant> no, C style arrays are static. :-)
19:20:55 <Sgeo> Do I forward the email to the technical contact, or should I send to abuse@ucsd.edu ?
19:21:03 <AnMaster> Deewiant, so it's a sparse array=
19:21:11 -!- ehird has joined.
19:21:15 <Deewiant> it's essentially a struct __someinternalname { whatever_the_type_is *data; size_t length; }
19:21:38 <ehird> it sounds interestermating
19:21:49 <ehird> and it's not like that
19:21:52 <ehird> the actual thingy is:
19:22:02 <ehird> struct __foo { size_t length; void *data; }
19:22:14 <ehird> but that is, of course, post-compilation
19:22:14 * Sgeo pokes urgently
19:22:15 <AnMaster> yes makes sense to store length first
19:22:22 <ehird> also i found a silly little thing
19:22:28 <ehird> imagine this structure for a string
19:22:33 <ehird> struct { size_t length; char first; }
19:22:36 <AnMaster> means less indirectly addressing to access first element of a struct
19:22:37 <ehird> you get to the data by:
19:22:45 <ehird> i think that would work
19:23:10 <ehird> the __foo includes size_t allocated; too
19:23:20 <Deewiant> AnMaster: it makes no difference whether you're accessing address FOO or FOO+x. that's implemented at the hardware level.
19:23:40 <AnMaster> Deewiant, yes at hardware level it (used to at least) make a difference
19:23:43 <Deewiant> ehird: that's for the GC, not in the struct itself, I don't think.
19:23:51 <AnMaster> Deewiant, in how many cycles the access took that is
19:23:53 <ehird> Deewiant: no, i mean how much it has been allocated
19:23:58 <ehird> not always == length.
19:24:10 <ehird> btw, how to allocate my structure thingy: malloc(sizeof(string_t) + (sz ? sz-1 : 0))
19:24:59 <AnMaster> Deewiant, I got an idea to make it faster for first time anyway, you can just realloc then, if you consider "before in exec order" == "after in array"
19:25:07 <AnMaster> ie, you execute counting downwards
19:25:14 <AnMaster> should make the first split faster
19:25:15 <Deewiant> ehird: yes, I know what you meant.
19:25:29 <Deewiant> it looks like it's defined as void** data actually.
19:25:37 <AnMaster> ehird, is that a struct that can grow at the end?
19:25:38 <ehird> Deewiant: that would make sense
19:25:46 <ehird> then the replacable array ref is obj*
19:26:00 <ehird> AnMaster: but transforms into a char*
19:26:03 <AnMaster> ehird, if it is, see how I do stackstacks in my code
19:26:18 * AnMaster use C99 flexible struct members
19:26:25 <ehird> AnMaster: the cool thing about it is that you don't need two pointers
19:26:33 <ehird> if one is always going to be in one place -- the struct -- it's pointless
19:26:39 <ehird> so just have one that can pretend to be both :D
19:26:47 <AnMaster> size_t size; /**< This is number of elements in stacks. */
19:26:47 <AnMaster> size_t current; /**< Top stack and current stack */
19:26:47 <AnMaster> fungeStack * stacks[]; /**< Array of pointers to stacks */
19:27:01 <AnMaster> stackStack = cf_realloc(*me, sizeof(fungeStackStack) + ((*me)->size + 1) * sizeof(fungeStack*));
19:27:36 <AnMaster> initial alloc is just: stackStack = cf_malloc(sizeof(fungeStackStack) + sizeof(fungeStack*));
19:27:44 <ehird> AnMaster: i like c89
19:27:52 <AnMaster> ehird, well that's your choice
19:27:54 <ehird> but i think there is a place for a langugae like c99
19:28:01 <ehird> just not as the latest c :)
19:29:18 <ehird> AnMaster: http://pastebin.ca/943924
19:29:42 <AnMaster> ehird, god, are you doing C99 feature in C89
19:30:02 -!- ais523 has joined.
19:30:04 <AnMaster> ehird, you know, the original gopher client had something like that
19:30:27 <ais523> AnMaster: you got the timing on that message so precise you beat the welcome message from ChanServ
19:30:40 <ehird> ais523: same happened when i came in
19:30:48 <AnMaster> ais523, err? it was 2 seconds later
19:30:50 <ais523> maybe Chanserv is just being slow today
19:30:51 <ehird> AnMaster: and no, i'm not
19:31:03 * SimonRC thinks that big-O notation would be better as a partial ordering on functions than the current wibbliness
19:31:10 <ehird> that's just a structure which is allocated past its size and the rest is used as char *
19:31:25 <ehird> ais523: I am splitting my dei language into two
19:31:27 <ehird> littledei and bigdei
19:31:32 <ehird> littledei will be the minimum to do your rewrites
19:31:35 <ehird> and bigdei will have IO
19:31:41 <ehird> but you can redirect input and output to 'sinks' to it will work
19:31:50 <ehird> and you can catch signals so [quit] is possible
19:31:53 <AnMaster> ehird, yes, ie, something likehttp://pastebin.ca/943925
19:31:54 * ais523 came across (on Wikipedia) the fact that there were algorithms that ran in O(n*alpha(n)) time, where alpha is the inverse of the Ackermann function
19:32:00 <ais523> so very very slightly worse than O(n)
19:32:12 <ehird> AnMaster: no, not really
19:32:24 <AnMaster> ehird, it works the same *shrugs*
19:32:26 <ehird> ais523: link to your rewrites again?
19:32:28 <ehird> AnMaster: so does two pointers
19:32:42 <AnMaster> ehird, no, that is one more level of indirection
19:33:50 <ehird> which is turing complete
19:33:54 <AnMaster> * ais523 came across (on Wikipedia) the fact that there were algorithms that ran in O(n*alpha(n)) time, where alpha is the inverse of the Ackermann function
19:34:27 <ais523> AnMaster: it's apparently one of the algorithms for solving the [[Minimal Spanning Tree]] problem
19:34:36 <ais523> mentioned in some of the pages around there
19:34:45 <ais523> none of them said explicitly what the algorithm was, though
19:35:09 <ehird> ais523: hmm, i need a special value to put at the start of the program
19:35:25 <ais523> ehird: that's the most obvious option
19:35:28 <AnMaster> ehird, is this TURKY BOMB, your funge or what?
19:35:41 <ais523> AnMaster: it's a concatenative language without the [] operator
19:36:15 * ais523 is still trying to find the link
19:36:30 <ais523> http://pastebin.ca/943140
19:36:58 <ais523> it's how to translate programs written in terms of [] into programs written in terms of dei
19:37:11 <ehird> which is, of course, scary :)
19:37:25 <ais523> (assuming the semantics for i dei are to evaluate TOS, then push [i]; that isn't clear from the spec)
19:37:51 <ais523> ehird: did you see my proof that Splinter was a PDA that I linked in #esoteric earlier today?
19:38:16 <ehird> which ais523 will now find and give a link, maybe ;)
19:38:17 <ais523> SimonRC: ehird's most recent spec was http://pastebin.ca/943115
19:38:25 <ais523> ehird: way to cross messages...
19:38:36 <ehird> and no, ais523, I didn't
19:38:47 <ehird> SimonRC: basically, `X dei` is `X [X]`
19:38:50 <ehird> but before X is executed
19:38:55 <ehird> `dup dei` => `dup [dup]`
19:39:02 <ehird> so the top element of the stack is duplicated, then [dup] is pushed
19:39:10 <SimonRC> "Firefox can't find the server at www.pastebin.ca." !
19:39:22 <ais523> SimonRC: there isn't a www at the start of the name
19:39:27 <ehird> http://pastebin.ca/943935
19:39:38 <ehird> the smallest dei that is turing complete, as far as I know
19:39:40 <ehird> also, more formally specified
19:39:55 <ehird> I will now do the noble thing and write an interpreter using s///
19:40:04 <ehird> ais523: before I start, what's the "and redo" trick? it looks useful
19:40:12 <SimonRC> well firefox is putting it there
19:40:21 <ais523> ehird: it jumps back to the start of the {} block you're in
19:40:30 <ais523> if the command succeded
19:40:48 <ais523> when combined with s/// it gives you Thutu-style replacements: start the block again if you make a change
19:41:11 <ais523> SimonRC: can you ping pastebin.ca?
19:41:23 <ehird> ais523: hm damn i don't think i can implement this
19:41:42 <ehird> can't do that with regexps
19:41:46 <ais523> ehird: learn to write recursive regexps
19:41:54 <ais523> the syntax was improved a lot for Perl 5.10
19:42:12 <ais523> but the 5.005 syntax is to declare a part of a regexp with $variable=qr/regexp/
19:42:23 <ais523> and to access it with (?{{$variable}})
19:42:24 <ehird> ais523: i have 5.10
19:42:36 <ais523> in that case, (?R) will do the entire regexp
19:42:47 <ais523> as in, it recurses the whole thing
19:43:01 <ais523> there's also syntax to recurse into one group which I've forgotten right now, but is very simple
19:43:12 <ais523> SimonRC: can you access other websites?
19:43:15 <ehird> ais523: hmm, how does kate highlight: 'whatever / 25 ; # / ; die "this dies!";'
19:43:20 <ehird> cperl-mode highlights it as divide+Comment
19:44:18 <ais523> Kate interprets it as divide+comment
19:44:32 <SimonRC> "Ping request could not find host pastebin.ca. Please check the name and try again."
19:44:37 <ehird> ais523: my $q = /(\[(?:(?:R)|[^ ]+)+\])/;
19:45:16 <ais523> ehird: if you change the whatever to the reserved word split, then it higlights it as regexp + die because it knows that split takes arguments
19:45:23 <ais523> sorry, not reserved word, built in function
19:45:38 <ehird> ais523: hmm, I want $q to match 'foo [bar baz]' in [foo [bar baz]]
19:46:07 <ehird> /\[((?:(?:R)|[^ ]+)+)\]/
19:46:09 <ehird> think that's right
19:47:25 <ais523> SimonRC: can you navigate to http://208.68.18.97/
19:47:38 <ais523> that's how you write pastebin.ca as numbers, according to ping
19:47:48 <ais523> (i.e. by IP rather than by domain name)
19:48:13 <ais523> ehird: you want to put \[ and \] inside your character class [^ ]
19:48:40 <ais523> SimonRC: that's strange, it seems like bits of the internet are inaccessible to you for some reason
19:49:03 <Sgeo> What does "(qmail 11842 invoked from network)" mean?
19:49:06 <ehird> ok now i need to know how to debug this :p
19:49:19 <Sgeo> what does it mean?
19:49:34 <Sgeo> In a Received: header in some spam
19:49:35 <ais523> ehird: putting a print; just inside your block that you're redoing into is generally useful for debugging, I find
19:49:41 <Sgeo> Received: (qmail 11842 invoked from network); Mon, 10 Mar 2008 11:30:46 +0530
19:49:47 <ehird> ais523: oh and i want *
19:50:02 <SimonRC> well, it is just giving the PID of the qmail process that invoked it
19:50:07 <ais523> ehird: only the outer +
19:50:17 <SimonRC> I mean the PID of the one that processed it
19:50:20 <ais523> or you could have zero-character combinators, HOMESPRING-style
19:50:20 <ehird> ehird@ehird-desktop:~$ echo 'i'|perl minidei.pl
19:50:46 <ais523> ehird: are you using $_ for your s///s?
19:50:53 <Sgeo> Received: from unknown (HELO forki) (28.116.40.228)
19:51:10 <Sgeo> Is that Received: line reliable, even with the Received: with the qmail above it?
19:51:15 <ehird> ais523: http://pastebin.ca/943947
19:51:28 <ehird> Sgeo: qmail is a program
19:51:43 <Sgeo> What is it doing in the header like that?
19:51:51 <ehird> Sgeo: advertising itself to the world
19:51:56 <ehird> what it is saying is:
19:52:09 <Sgeo> And could that line be used to fake wahtever's below it?
19:52:12 <ehird> 'I am qmail with PID 11842. I was invoked from the network (i.e. not used locally from the box Im running on)'
19:52:22 <ehird> And you can always fake every part of an email.
19:52:33 <ais523> ehird: you need to write my $q = qr/\[((?:(?:R)|[^ \[\]]+)*)\]/; and so on (note the extra qr)
19:52:44 <ehird> ais523: okies. why?
19:52:48 <Sgeo> Received: from 210.211.190.168.bb-static.vsnl.net.in ([210.211.190.168])
19:52:48 <ais523> so that the regexp is evaluated when it's included, rather than when you declare it
19:52:48 <Sgeo> by mx.google.com with SMTP id 13si12968233fks.8.2008.03.09.23.02.19;
19:52:48 <Sgeo> Sun, 09 Mar 2008 23:02:24 -0700 (PDT)
19:52:49 <ehird> SimonRC: most that matter :)
19:53:01 <SimonRC> at some point the email must have finished passing through untrusted computers
19:53:03 <ais523> it's like writing '(list) rather than (list) in Lisp
19:53:12 <ehird> ais523: still the same
19:53:27 <SimonRC> and almost any trusted computer will tell you if it detects it is being given bogus headers
19:53:41 <SimonRC> like, computers that lie about who they are
19:53:52 <ais523> is 0 all the output you're getting?
19:54:09 <ais523> or is there other output first?
19:54:17 <Sgeo> The only line that looks like it might have been used for forging earlier stuff is the qmail one
19:54:50 <ehird> i guess that is wrong
19:55:13 * ais523 feels stupid for not noticing that
19:55:57 <ehird> ehird@ehird-desktop:~$ echo 'wrap'|perl minidei.pl
19:56:14 <ehird> i didn't implement it
19:57:05 <ehird> ais523: i think $e is broken
19:57:18 <ehird> $e should match the whole [..]
19:57:34 <ais523> and $w needs to exclude square brackets
19:57:38 <ehird> ais523: wait a second..
19:57:43 <ehird> the only time $e will be used is for dei
19:57:49 <ehird> since otherwise all we have are quotations
19:57:56 <ehird> since the words to the left have been executed
19:58:12 <ehird> dei only needs to match on words!!
19:58:31 <ais523> but your implementation of i is wrong
19:58:40 <ais523> it needs to remove the outermost set of square brackets
19:58:47 <ehird> ais523: it does. [..] does
19:59:07 <ehird> ehird@ehird-desktop:~$ echo 'dup dei i'|perl minidei.pl
19:59:09 <ais523> because the [] are /inside/ the () in $q. That's clever
19:59:16 <ehird> ais523: yep. and sorry for the flood
19:59:20 <ehird> everything looks so much smaller in the terminal window
19:59:25 <SimonRC> why is there a "dei" instruction?
19:59:37 <ais523> SimonRC: because [] isn't allowed in input programs
19:59:38 <ehird> SimonRC: because there's no [..] instruction
19:59:42 <ais523> so you have to do everything with dei
19:59:44 <ehird> which i should fix, actually
19:59:52 <ehird> technically the spec allows [...] in the program just as a word
19:59:57 <ehird> but i'll just die if i find [..]
19:59:57 <ais523> it's ehird being deliberately difficult
20:00:01 <ais523> which is the nature of esolangs, after all
20:00:04 <ehird> ais523: that is one way of saying it
20:00:50 <ehird> ais523: can i use <> multiple times?
20:01:02 <ais523> you get one line each time you do
20:01:13 <ais523> if you set $/=undef you get one file each time you do instead
20:01:23 <ehird> what's the easiest way to just slurp all of stdin?
20:01:28 <ais523> (that is, one file from the command line, and stdin when they run out)
20:01:33 <ehird> command line OR stdin
20:01:42 <ais523> ehird: $/=undef; $something=<>
20:01:55 <ais523> that gives you the first file on the cmdline, or stdin if there weren't any
20:02:31 <ais523> although if you're aiming for encapsulation saying local $/=undef will localise the change on <>'s effect to the entire program
20:02:54 <ais523> the golfing variant of this is $/=$]
20:03:04 <ehird> [] found in input at minidei.pl line 3, <> chunk 1.
20:03:05 <SimonRC> huh? "localise the change ... to the entire program"?
20:03:06 <ais523> it sets the line separator to the Perl version number, which is unlikely to be in the input
20:03:11 <ehird> i love how perl puts useufl crap at the end of your message
20:03:40 <ais523> SimonRC: if you were using multiple program files, which is how Perl does object-orientation, or you were writing a module
20:03:50 <ais523> sort of like static in C
20:03:53 * Sgeo wishes there was a way to determine if he's doing a good job of sending abuse reports
20:04:44 <ehird> Sgeo: Presumably, a program that could do that could just find abuse itself.
20:04:49 <ehird> ais523: http://pastebin.ca/943963 minideiii! It works.
20:05:05 <ehird> It's public domain because it's so trivial that I couldn't bring myself to even MIT it
20:05:19 <ehird> that is also my first perl program beyond 'hello world', really
20:05:26 <ehird> it's far too readable, i guess
20:05:39 <ais523> ehird: I write like that too
20:05:51 <ais523> although I suspect the reason the program looks like that is that you were copying my style
20:06:14 <Sgeo> Well, the email listed as the Registrant in the whois for vsnl.net.in doesn't exist
20:06:26 <ehird> ais523: yeah, i probably was..
20:07:24 <ehird> need to fix up whitespace
20:08:12 <ais523> ehird: as for the whatever line: Kate correctly marks the // stuff as a regexp whenever I change whatever to a builtin function that takes at least one argument
20:08:20 <ais523> and otherwise treats it as a division
20:08:35 <ais523> ehird: I was trying even functions which don't normally take regexps as arguments, like log
20:08:39 <ehird> ais523: http://pastebin.ca/943970
20:08:44 <ehird> made it do deis in steps
20:09:05 <pikhq> You know what this channel needs?
20:09:10 <pikhq> A more fleshed-out topic.
20:09:12 <SimonRC> I wonders if pastebin.ca have a reguler customer discount scheme...
20:09:41 -!- SimonRC has set topic: FLESH http://ircbrowse.com/cdates.html?channel=esoteric FLESH - From Brainfuck FLESH to extending FLESH tetration to the reals FLESH..
20:09:59 <ehird> ais523: 'drop dei dup i' is a program worth trying
20:10:13 <ehird> i love how you can see it expand the is out D:
20:10:22 <ehird> pikhq: Would the qdb count? :p
20:10:45 <ais523> ehird: I get similar joy watching similar things in Underlambda
20:10:55 <ais523> which is implemented and debugged the same way ATM
20:11:12 <pikhq> #esoteric - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/
20:11:12 <ais523> it's great to see it collapse a whole line of lambdas
20:11:18 <pikhq> ehird: Does it work?
20:11:34 <pikhq> We can add it once it works.
20:11:41 <Sgeo> How can "no reply" exist in tracepath?
20:11:48 <pikhq> Meanwhile, if that's a sufficient topic, then I'm changing to it.
20:11:50 <Sgeo> Is tracert or whatever more reliable?
20:12:05 -!- pikhq has set topic: - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/.
20:12:06 <ehird> pikhq: I like our topic
20:12:21 -!- pikhq has set topic: #esoteric - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/.
20:12:23 <ehird> ais523: Hmm, I'm going to implement your flattener and use it to write an infinite loop
20:12:30 <ehird> (:^):^ -> [dup i] dup i
20:12:34 <ehird> i can do that manually
20:12:48 <Sgeo> Seems like this spammer just sent from their computer directly to Google's computer..
20:12:59 <Sgeo> Received: from itlxx ([92.81.128.73])
20:12:59 <Sgeo> by mx.google.com with SMTP id g1si18349881muf.5.2008.03.15.03.37.47;
20:12:59 <Sgeo> Sat, 15 Mar 2008 03:37:48 -0700 (PDT)
20:13:04 <ais523> ehird: there's actually a much better way to dei an i than I used in the flattener, that I thought up more recently
20:13:07 <Sgeo> No Received:'s after that
20:13:15 <ehird> dup dei swap drop dup swap dei i dei swap drop compose dup i
20:13:29 <ehird> that doesn't wooooork
20:13:31 <Sgeo> So did they just connect to mx.google.com or wahtever?
20:13:36 <ehird> ais523: wanna post a new spec so i can retest?
20:14:08 <ais523> ehird: it's the same, just with the rule for [i] changed to [i] => wrap i dei
20:14:21 <SimonRC> ehird: how do you get arbitrary stuff inside brackets?
20:14:33 <Sgeo> Actually, what is mx.google.com ?
20:14:35 <ehird> SimonRC: http://pastebin.ca/943140
20:14:43 <ehird> SimonRC: that's all the underload functions, sans S
20:14:46 <SimonRC> ehird: no good, pastebin is still fail for me
20:14:50 <ehird> so, that's all you NEED to get in brackets
20:14:58 <ehird> and by 'coincidence' ;) that's all there is in the spec
20:15:04 <ehird> SimonRC: MAIL exchange
20:15:08 <SimonRC> named after MX DNS records, I assume
20:15:18 <SimonRC> um, yeah, I meant to type Mail
20:15:34 <ais523> SimonRC: http://rafb.net/p/e3X6O830.html is the same as what ehird just linked
20:15:40 <ais523> I just repasted it elsewhere so you could see it
20:15:59 <Sgeo> So how does one connect directly to gmail's server?
20:16:51 <ehird> Sgeo: Just how your mail client does it.
20:17:02 <ehird> ais523: Hmm. How does that handle, e.g. [X [wrap]]?
20:17:04 <Sgeo> I think I meant server-to-server
20:17:05 <ehird> that is, when the second isn't a word
20:17:08 <ehird> The same way, I'd bet
20:17:10 <Sgeo> Because I think that's what the spammer did
20:17:24 <ais523> ehird: it splits it into [X] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=wrap compose
20:17:53 <ais523> SimonRC: my client expands [[ ]] into links to Wikipedia
20:17:58 <ais523> which is sometimes useful, and sometimes not useful
20:18:17 <ais523> I'll write it as (X) ((wrap)) compose to prevent that happening
20:20:10 <Sgeo> How do I get the mx record for gmail.com?
20:21:10 <ehird> ehird@ehird-desktop:~$ echo '[dup i] dup i' | perl flatten.pl
20:21:28 <ehird> it goes into a huuuge compose chain
20:21:31 <ehird> ais523: maybe your order is wrong
20:21:39 <ehird> [] [] compose dup i
20:21:39 <ehird> [] [] compose compose dup i
20:21:49 <Sgeo> with the host command? oh
20:22:08 <ais523> ehird: are you making sure that the [] splitter insists both halves are positive-length
20:22:16 <ais523> you may be accidentally using * rather than +
20:22:17 <Sgeo> host is easier to read
20:22:21 <Sgeo> But I should learn the dig stuff
20:22:51 <ehird> ais523: http://pastebin.ca/943984
20:22:54 <ehird> newest version of both scripts
20:23:55 <ais523> ehird: you need capture parens around the $w in the [$w $w] rule
20:24:44 <ehird> ais523: now it thinks it should be:
20:24:45 <ehird> [dup]]]]]]]]] [[[[[[[[[i] compose compose compose compose compose compose compose compose compose dup i
20:25:09 <ais523> ehird: you still haven't banned [ and ] in $w
20:25:41 <Sgeo> why isn't it working?
20:25:49 <Sgeo> sgeo@ubuntu:~$ telnet gmail-smtp-in.l.google.com 25
20:25:49 <Sgeo> Trying 72.14.205.27...
20:26:01 <ehird> ais523: Well now it converts
20:26:04 <ehird> but runs in finite time
20:26:13 <ais523> ehird: what does it convert to?
20:26:13 <ehird> Sgeo: you didn't say HELO
20:26:19 <ehird> dup dei swap drop wrap i dei compose dup i
20:26:32 <Sgeo> sgeo@ubuntu:~$ telnet alt1.gmail-smtp-in.l.google.com 25
20:26:32 <Sgeo> Trying 72.14.221.27...
20:26:32 <ais523> that looks right to me?
20:26:42 <ehird> dup [dup] swap drop wrap i [i] compose dup i
20:26:43 <ais523> (I don't have 5.10 installed over here)
20:26:46 <ehird> so let's run through that
20:26:54 <ehird> [] dup [dup] swap drop wrap i [i] compose dup i
20:26:58 <ehird> [] [] [dup] swap drop wrap i [i] compose dup i
20:26:59 <Sgeo> and how do I make sure the proper line endings are being used?
20:27:02 <ehird> [] [dup] [] drop wrap i [i] compose dup i
20:27:06 <ehird> [] [dup] wrap i [i] compose dup i
20:27:10 <ehird> [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i
20:27:15 <ehird> [] [dup] [i] compose dup i
20:27:30 <ehird> [] [dup i] [dup i] i
20:27:40 <ehird> it is minidei.pl's fault
20:27:49 <ehird> [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i
20:28:20 <ehird> ais523: Think I got it
20:28:24 <ehird> $q doesn't handle nested
20:28:33 <ehird> Does (?R) make a group?
20:28:56 <ehird> that's what it sees
20:28:59 <ais523> ehird: I'm not too sure about the new recursion syntax
20:28:59 <ehird> so, I need to fix $q
20:29:07 <ais523> seeing as I can't use it over here, I never learnt it
20:29:09 <ehird> Sequence (?R...) not recognized in regex; marked by <-- HERE in m/\[((?:(?R <-- HERE )|[^ \[\]]+)*)\]/ at minidei.pl line 9.
20:29:15 <ehird> ais523: (?:R) is just matching R.
20:29:22 <ehird> This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
20:29:34 <ais523> it's ugly, but it works
20:29:59 <ehird> Sequence (??:...) not recognized in regex; marked by <-- HERE in m/(?:(??: <-- HERE {})|[^ \[\]]+)*/ at flatten.pl line 7, <> chunk 1.
20:30:24 <ehird> now it dies at [] [dup i] dup i
20:30:40 <ehird> there's no reason for that to fail
20:30:51 <ehird> my $q = qr/\[((?:(??{$q})|[^ \[\]]+)*)\]/;
20:31:59 <Sgeo> sgeo@ubuntu:~$ telnet alt1.gmail-smtp-in.l.google.com 25
20:31:59 <Sgeo> Trying 72.14.221.114...
20:31:59 <Sgeo> HELO [24.191.104.202]
20:32:14 <ehird> ais523: hmm yours is kinda b0rken
20:32:18 <ehird> ehird@ehird-desktop:~$ echo '[[[dup [i] dup]]]' | perl flatten.pl
20:32:18 <ehird> [[[dup wrap i dei dup]]]
20:32:19 <ehird> and it stops there
20:32:24 <ehird> SO, in conclusion:
20:33:43 <ehird> ais523: Does (??{x}) make a group?
20:35:07 <ehird> ais523: ok, so it's not that
20:35:09 <ais523> ehird: does $q allow spaces between items in a group?
20:35:15 <ehird> ais523: HEY wait a second..
20:35:19 <ais523> I can't see where you explicitly allow them
20:35:32 <ehird> qr// + (??{$me}) == ?
20:35:46 <ais523> I've done it many times before
20:36:02 <ehird> ais523: ok minidei works now
20:36:08 <ehird> my $q = qr/(?:(??{$q})|[^\[\]]+)*/;
20:36:10 <ehird> doesn't work, for flatten
20:36:19 <ehird> maybe because of my missing out of \[\]
20:36:46 <ais523> ehird: you want my $q = qr/(?:(??{$q}) *|[^ \[\]]+ *)*/
20:37:00 <ais523> so that you can have spaces between bracketed groups, and between words
20:37:06 <ehird> ais523: If you look, it can
20:37:09 <ais523> actually, that's equivalent, ignore me
20:37:16 <ehird> I don't disallow spaces in the group any more
20:37:43 <ais523> ehird: I noticed, but for some reason thought it prevented you putting spaces between two [] groups. It doesn't though
20:38:00 <ais523> and yes, you need [] around the (??{$q})
20:38:16 <ehird> my $q = qr/\[(?:(??{$q})|[^\[\]]+)*\]/;
20:38:27 <ehird> stops at: [[dup wrap i dei dup]] wrap
20:38:31 <ehird> that's from minidei.pl
20:38:35 <ais523> y $q = qr/(?:\[(??{$q})\]|[^\[\]]+)*/;
20:38:43 <ehird> because I fixed $e too
20:38:48 <ehird> my $e = qr/$w|($q)/;
20:39:09 <ehird> i.e. more than two elements
20:39:12 <ehird> because you just have $w $w
20:39:17 <ehird> so, it never matches in the first place
20:39:24 <ais523> ehird: one of them is meant to be able to match multiple elements
20:39:30 <ehird> i need to ignore the rest of the block thingy..
20:39:41 <ehird> s/\[$w $w\]/[$1] [$2] compose/ and redo;
20:39:43 <ehird> that's the problem
20:39:57 <ais523> so change the second one to ( $w)+
20:40:19 <ehird> ais523: third one. actually.
20:40:42 <ais523> I mean s/\[$w( $w)+\]/[$1] [$2] compose/
20:40:47 <ais523> although that has minor whitespace problems
20:41:00 <ehird> dup dei swap drop dup] compose compose] wrap
20:41:05 <ehird> I know a solution though..
20:41:16 <ehird> s/\[$w((?: $w)+)\]/[$1] [$2] compose/ and redo;
20:41:19 <ehird> that doesn't work either
20:41:49 <ehird> (GROUP)+ is like ((?:GROUP)+)
20:42:05 <ais523> but the ((?:GROUP)+) is what I meant
20:42:36 <ehird> [[dup wrap i dei dup]] wrap
20:42:36 <ehird> [[dup] wrap i dei dup] compose] wrap
20:42:39 <ehird> that is the broken transition
20:42:52 <ehird> s/\[$w((?: $w)+)\]/[$1] [$2 compose/ and redo;
20:43:10 <ehird> ais523: don't ask me..
20:43:11 <ais523> how did the closing ] get into $2
20:43:22 <ais523> ehird: are you banning ] in $w?
20:43:28 <ais523> that's the only explanation
20:43:57 <ais523> ehird: paste what you have so far?
20:44:41 <ehird> http://pastebin.ca/944013
20:44:44 <ehird> commented out version doesn't work
20:44:55 <ehird> i'll paste the new minidei.pl once flatten.pl works
20:46:07 <ehird> ais523: also, yours can't dei-ify []
20:46:12 <ehird> -- which will be very hard indeed
20:46:24 <ais523> ehird: deify [dup drop]
20:46:30 <ais523> which means exactly the same thing
20:47:12 <ehird> ais523: 'nother bug
20:47:14 <ehird> ehird@ehird-desktop:~$ echo '[dei i]' | perl flatten.pl
20:47:47 <ehird> [i i i i i i i i i i i]
20:47:48 <ehird> [i] i i i i i i i i i i compose
20:47:48 <ehird> wrap i dei i i i i i i i i i i compose
20:48:19 <ais523> ehird: the flattener wasn't designed to handle dei
20:48:39 <ais523> and the square-brackets quickfix obviously didn't work, we'll have to find out what the problem actually was
20:49:34 <ehird> ais523: was it not? okay :P
20:49:45 <ehird> but [i i i i i ii i ] is definately broken
20:50:41 <ais523> and I'm pretty sure it's for the same reason as the square-bracket mismatch is
20:53:03 <ehird> ais523: i'm truly not sure
20:54:26 <ais523> ehird: the [$w $w] rule isn't allowing nested []s
20:54:31 <ais523> it needs to for the flattener to work
20:54:42 <ais523> but that doesn't sort out the [i i i i i i i i] problem
20:56:55 <ehird> ais523: so.. $e $e
20:57:23 <ehird> ais523: and, it does solve the i i i i i problem
20:57:31 <ehird> it does: wrap i dei [] compose
20:57:43 <ehird> [i i i i i i i i i i i]
20:58:23 <ehird> [i i i i i i i i i i i]
20:58:27 <ehird> it isn't being captured right
20:59:33 <ais523> personally, I never put capture brackets in the qr// quotes, because it makes things too confusing to follow on occasion
21:00:41 <ehird> s/\[\[((?: ?$e)*)\]\]/[$1] wrap/ and redo;
21:04:41 * Sgeo blinks at the existance http://museum/
21:05:28 <ehird> Sgeo: congrats, you discovered firefox's auto search
21:05:37 <Sgeo> ehird, um, that's not autosearch
21:05:40 <ais523> Sgeo: that's a bad URL, so it's either autosearch or a local DNS entry
21:05:56 <Sgeo> ais523, are you saying that you didn't try it?
21:05:59 <ais523> there are some local DNS entries at my university which can only be accessed from there and have invalid URLs
21:06:12 <ais523> Sgeo: I did, I just get 'Unknown host'
21:06:34 <Sgeo> ehird, I said http://museum/ not anything else
21:06:43 <ehird> Sgeo: firefox sees http://foo
21:06:47 <ehird> and turns it into http://www.foo.com
21:07:23 <tejeez> museum actually points to 195.7.77.17
21:07:56 <Sgeo> what tejeez said
21:08:08 <Sgeo> ehird, try it in links2 or something
21:08:34 <ais523> Sgeo: fails for me in both Konqueror and w3m
21:08:43 <ehird> ehird@ehird-desktop:~$ ping museum
21:08:43 <ehird> ping: unknown host museum
21:08:49 <ais523> maybe it's one of the national DNSes?
21:08:57 <Sgeo> sgeo@ubuntu:~$ ping museum
21:08:58 <Sgeo> PING museum (195.7.77.17) 56(84) bytes of data.
21:08:59 <ehird> ais523: museum is a tld
21:09:05 <ehird> Sgeo: uhh, what does the page say
21:09:08 <ais523> ISTR one of them allows people to register invalid URLs
21:09:47 <ehird> ais523: that's cool
21:10:05 <ais523> can't remember which one, though, and the resulting URLs aren't portable to other DNSes
21:10:14 <ais523> so you can only access them in a limited geographical region
21:10:43 <Sgeo> `dig @4.2.2.1 museum`
21:10:46 <Sgeo> Note the A record
21:11:02 <ais523> Sgeo: if there isn't an AAAA record it'll become obsolete soon
21:11:25 <ehird> I am going to piss someone off:
21:11:31 <ehird> Brian D Foy. Brian D Foy. Brian D Foy. Brian D Foy. Brian D Foy.
21:11:35 <Sgeo> ais523, why doesn't google have an AAAA record?
21:11:37 <ehird> you cannot silence me, Brian D Foy!
21:11:47 <ais523> Sgeo: ipv6.google.com does
21:11:50 <ehird> Sgeo: ipv6.gooogle.com
21:11:55 <ehird> ais523: they said that in 1995
21:11:57 <ais523> they put it up recently
21:12:13 <Sgeo> So, A will become obsolete when IPv4 does?
21:12:18 * Sgeo won't hold his breath
21:12:20 <ehird> ais523: I meant, 'obsolete soon'
21:12:25 <ehird> And for one -- Sgeo is totally right.
21:13:01 <ehird> there is probably people in here younger than ipv6
21:13:19 <ehird> and since ipv4 was going to be 'obsolete soon' as soon as ipv6 was discussed...
21:13:29 <ehird> .. we've been waiting a long time :p
21:13:35 * Sgeo wonders if http://museum./ works better
21:13:51 <ehird> compared to ipv6 arc was quite zippy
21:13:51 <ais523> ehird: IETF went and turned off IPv4 access from their conference to see what would happen
21:14:04 <ehird> ais523: that means nothing
21:14:11 <ehird> that just means the ietf are fooling themselvse about ipv6
21:14:20 <ais523> ehird: it means that ipv6 is becoming usable
21:14:26 <ais523> it's the default on Vista, by the way
21:14:27 <AnMaster> Deewiant, I got a question: wtf should 4kt do in concurrent funge
21:14:29 * Sgeo pokes people to try museum. instead of museum
21:14:37 <Sgeo> <kyevan> I had to tell it to actually look at museum.
21:14:44 <AnMaster> Deewiant, because I think k + t will break *horribly* here
21:14:57 <Deewiant> AnMaster: spawns 4 threads which all start execution at k
21:15:13 <Sgeo> tejeez, about.museum doesn't have the same kind of "that's ALLOWED?" as museum or museum.
21:15:19 <AnMaster> Deewiant, yes they will all follow the same path? right?
21:15:27 <ehird> ais523: have you seen this: http://www.livejournal.com/doc/server/bml.index.html?
21:15:30 <ehird> it's horribly 1996
21:15:33 <Deewiant> AnMaster: aye, since they're all just reversed from the original
21:15:37 <ais523> w3m works for http://museum./ for me
21:15:41 <AnMaster> Deewiant, I suspect order may get messed up heh
21:15:57 <AnMaster> Deewiant, ie, thinks *will* break here for that
21:16:04 <ehird> ais523: look at the examples
21:16:20 <tejeez> Sgeo: yeah, but it shows if the used dns server allows .museum domains
21:16:22 <Deewiant> AnMaster: why's that? all are just prepended
21:16:31 <ehird> ais523: they tried to make it look more modern
21:16:31 <ehird> try: http://bradfitz.com/bml/
21:16:36 <Sgeo> tejeez, shouldn't they all allow it?
21:16:44 <AnMaster> Deewiant, appended to end in fact, and traversed backwards
21:17:06 <AnMaster> Deewiant, I'll test both models to see what one is fastest at mycology :)
21:17:18 <Deewiant> AnMaster: appending to end is faster
21:17:29 <AnMaster> Deewiant, yep, that's what will happen first time
21:17:32 <ehird> ais523: one of the gems: 'H1=>{D}<P><FONT SIZE=+1><B>%DATA%</B></FONT>'
21:17:44 <AnMaster> Deewiant, but if original IP spawns again... then it would be slower
21:18:00 <ais523> ehird: it looks like obfuscated HTML
21:18:01 <AnMaster> ie if all splits happen from main thread, or if all happens from each new child
21:18:18 <ehird> ais523: well, that is html
21:18:21 <ehird> ais523: with template crap around it
21:18:41 <ais523> MediaWiki markup probably does much the same thing and looks much better than that
21:18:43 <AnMaster> Deewiant, oh another thing, should the thread ID reported by y stay unique? as in, should it just be index into thread array, or some soft of unique index?
21:18:47 <ehird> the html is also amusingly 1996
21:18:52 <ehird> ais523: it was developed for livejournal
21:18:55 <ehird> & lj still uses it.
21:18:55 <AnMaster> Deewiant, that persists during the entire program
21:19:05 <ehird> ais523: in fact, the architechture of lj is very simple..
21:19:11 <ehird> ais523: there are lots of perl files
21:19:12 <ais523> ehird: wouldn't that been it was full of <blink> tags, frames, and weird JavaScript designed to look flashy?
21:19:17 <ehird> ais523: but the actual webpages are php-style bml
21:19:21 <ehird> ais523: with embedded perl
21:19:25 <Deewiant> AnMaster: not sure, it might have mattered for some fingerprint or something
21:19:30 <ehird> the site may look modern nowadays
21:19:32 <ehird> but it's just a skin..
21:19:42 <AnMaster> Deewiant, yes but what one do CCBI do? standard doesn't say anything about it
21:20:02 <Deewiant> AnMaster: I think with CCBI they're 64-bit and unique... but I'm not sure
21:20:29 <ehird> ais523: oh, and the livejournal software requires ROOT ACCESS to set up
21:20:33 <ehird> ais523: it's almost as fiddly as slashcode
21:20:38 <AnMaster> Deewiant, err, 64-bit? I thought data typed used was 32-bit, so if you spawned 2^31 you would get issues?
21:20:53 <ehird> ais523: you know I have no idea
21:20:55 <ehird> ais523: but it does, officially
21:20:59 <AnMaster> Deewiant, as y couldn't return it in a single data cell
21:21:13 <Deewiant> AnMaster: beats me, okay? look at the source. :-P
21:21:35 <ehird> ais523: it's really crazy
21:22:09 <ehird> http://code.sixapart.com/trac/livejournal/browser/trunk
21:22:16 <AnMaster> Deewiant, btw what does ! mean in D? as in new Stack!(Semantics);
21:22:23 <ehird> there is a directory named 't'
21:22:29 <ehird> AnMaster: Stack!(foo) -> Stack<foo>
21:22:37 <ehird> or whatever you wish to call em
21:22:52 <AnMaster> ehird, I've used generics in C# yes so I know what they are
21:23:06 <AnMaster> just used foo<bar,quux> syntax there
21:23:14 <ehird> ais523: whoaaa.... livejournal uses INLINE C!
21:23:15 <ehird> http://code.sixapart.com/trac/livejournal/browser/trunk/src/utf8.pl
21:23:41 <ais523> ehird: C's a compiled language usually, so I'm not sure if that even makes sense
21:24:14 <ehird> ais523: it compiles it out from a string
21:24:20 <ehird> i'm suprised you don't know of it
21:24:29 <ehird> but ... yeah. in a blog software?!
21:24:45 * ais523 's mouse just came apart
21:25:05 <ehird> ais523: btw, heres the big glob of bml http://code.sixapart.com/trac/livejournal/browser/trunk/htdocs
21:25:05 <ais523> but I've snapped it back together; the battery cover keeps coming off
21:25:05 <AnMaster> ehird, wait, does it compile it once in a temp dir or what?
21:25:06 <ehird> AnMaster: pretty much
21:25:08 <ehird> AnMaster: it's clever
21:25:09 <AnMaster> ehird, ie, how does it work, does it fork() to run the code?
21:25:16 <ehird> http://search.cpan.org/~ingy/Inline-0.44/C/C.pod
21:25:24 <ehird> http://search.cpan.org/~ingy/Inline-0.44/C/C.pod
21:26:07 <ehird> AnMaster: that's documentation
21:26:18 <ehird> (And now on People Who Comment Before Clicking Links..)
21:26:34 <AnMaster> ehird, I clicked, but dns server is slow today
21:26:52 <oklofok> [22:24:04] <AnMaster> ehird, I can't read perl :(
21:26:52 <oklofok> [22:24:46] <ehird> AnMaster: that's documentation
21:27:23 <ehird> oklofok: that'll be on the qdb :p
21:32:33 <ehird> ais523: umm, crap, i'm starting to want to code stuff in perl
21:32:37 <ehird> ais523: WTF did you do to me
21:32:54 <ais523> ehird: maybe that should be in the qdb too
21:33:05 <ehird> ais523: ironically the thing i'm wanting to code in perl is the qdb.
21:33:22 <ais523> Perl is good for some things, bad for others
21:33:38 <ais523> it's my first choice for anything rewriting-related, unless Thutu would be a resonable choice
21:33:51 <ehird> ais523: of course, i'm not being silly and reusing perl webdev stuff
21:33:53 -!- RedDak has joined.
21:34:03 <ehird> the most i'll use is CGI/CGI::Fast and some DB stuff
21:34:07 <ehird> oh, and a template engine
21:34:12 <Sgeo> Is it just me, or is the Internet rather centralized?
21:34:39 <ehird> ais523: hmm, does perl have anything built on DBI so i don't have to use SQL?
21:34:40 <Sgeo> I mean, there are root servers, and there also has to be some organization assigning IP addresses at the top
21:34:43 <ehird> python has stuff like:
21:34:51 <ehird> db.select("users", name="foo")
21:35:01 <ehird> and you get a hash back
21:35:12 <ehird> there's also ORMs but i'm not sure about any of perl's oo systems
21:35:46 <Sgeo> Doesn't IANA basically control IP addresses and domain names?
21:44:27 <ais523> AnMaster: within the program, or did you just forkbomb your computer?
21:44:40 <AnMaster> ais523, within the interpreter
21:48:00 <ehird> ais523: eso-std.org should use shell scripts.
21:48:18 <ehird> oh god... cgi.sh library :D
21:48:45 <ehird> forces your script to take parameters like ?a;b;c because sh doesn't have hashes :)
21:49:56 <ais523> ehird: not that surprising, really
21:50:02 <ais523> although they could emulate them
21:50:17 <ais523> anything that has eval and allows arbitrary variable names that can escape the eval can emulate hashes ;)
21:51:25 <ehird> ais523: i meant, it would be hilarious to have a module like that
21:51:34 <ais523> oh, you mean it doesn't exist yet?
21:51:44 <ehird> stores in $GET__sdfs98dfu98su4knjfd
21:52:00 <ehird> usage: $(hash GET foo)
21:52:17 <ais523> ehird: hashing using an actual cryptographic hash function strikes me as a neat mix of concepts
21:52:28 <ehird> header () { echo -n "$1: $2\r\n" }
21:52:41 <ehird> the reason i said it is because you can trivially get an md5 from the shell
21:52:58 <ais523> ehird: why not just header () { echo "$1: $2\r" }
21:53:06 <ais523> that saves the need to use -n, which is nonportable
21:53:27 <ehird> i need to write cgi.sh now
21:54:02 <ais523> ehird: your projects seem to require writing other projects in order to be able to start
21:54:15 <ais523> it would be nice to get something up and running on eso-std.org sometime soon
21:54:23 <ais523> a pastebin would have been useful, for instance
21:54:32 <oklofok> uh, i love java, reading a file to a string is like 6 lines <3
21:54:50 <ehird> ais523: well, the pastebin is going to be Really Advanced(TM) ;)
21:54:53 <ehird> And I like reinventing the wheel.
21:55:03 <ehird> However, hopefully i only need to get the wheel right *once*. :p
21:55:21 <ehird> md5 () { echo "$1" | md5sum | sed 's/ .*//' }
21:56:11 <ais523> that won't distinguish between $1=--help and $1=the help text for GNU echo, if that's what's being used
21:56:50 <ehird> md5sum outputs: "sum -"
21:56:59 <ehird> $ echo "foo" | md5sum
21:56:59 <ehird> d3b07384d113edec49eaa6238ad5ff00 -
21:57:05 <ais523> I mean they're the same text, so they'll hash to the same thing
21:57:24 <ehird> ais523: show me what you mean
21:57:24 <ais523> not that this matters at all, but echo "x$1" would avoid that problem
21:57:30 <ehird> '--help' is not equal to 'the help text'
21:57:40 <ehird> ais523: better fix:
21:57:49 <ehird> but ... everyone uses the shell builtin
21:57:51 <ehird> i mean seriously :)
21:58:01 <ais523> echo will actually echo -- if you give it as an argument
21:58:37 * ais523 seems to remember a system (was it SunOS?) on which echo was deprecated in favour of printf
21:59:18 <ais523> maybe because it's command-line parameter processing was so inconsistent
22:00:02 <ehird> ais523: case/esac is portable, rihgt?
22:00:28 <ais523> after all, nobody would use that syntax otherwise ;-)
22:02:14 <ehird> _hash_"$1"_$(md5 "$2")="$3"
22:02:30 <ais523> ehird: why do you keep putting $1, etc., in double quotes?
22:02:32 <AnMaster> Deewiant, I broke it so hard when adding concurrency it even fails mycology/sanity.bf when compiling with -DCONCURRENT_FUNGE *debugs*
22:02:36 <ehird> ais523: hmm. good point
22:02:42 <ehird> i keep thinking about it in terms of rewrites
22:02:52 <ais523> because if they contain embedded spaces you're going to be in trouble anyway
22:03:16 <AnMaster> Deewiant, I got no clue why it only prints sanity up to 7 atm
22:04:59 <ehird> ais523: hmm i actually need no hashtable initialization
22:05:09 <ehird> ais523: since it's purely virtual and there is no 'hashtable object'
22:07:17 <ehird> eval "echo \$"$(echo _hash_$2_$(cgi_md5 "$3"))
22:07:20 <ehird> i'm sure that could be prettier
22:08:05 <ehird> eval "echo $"_hash_$2_$(cgi_md5 "$3")
22:08:08 <ehird> that's the nicest i can get it
22:08:31 <ehird> ...why am I wasting my time on this?
22:08:44 * ais523 asked you that a while ago
22:12:43 <AnMaster> ehird, I'm adding concurrency to cfunge
22:14:33 <ais523> AnMaster: your problem is clearly insufficient setjmp
22:14:53 <ais523> because C-INTERCAL's threading works fine, at least on the programs that people have managed to think up so far
22:15:25 <AnMaster> really, it seems I get some memory corruption somewhere or something, because something totally unrelated breaks
22:15:38 <ais523> although half the times I think up a new and unusual way to use it it segfaults, normally in a way that left me wondering why it worked on everything else because I'd made an obvious typo
22:15:43 <AnMaster> not changed, yet it breaks by concurrency
22:15:54 <AnMaster> and well. it isn't actually threading after all
22:16:04 <AnMaster> just looping instruction pointers
22:16:12 <ais523> likewise on C-INTERCAL
22:16:14 <AnMaster> it's not looked I threaded the interpreter itself
22:16:25 <ais523> but that has several complications the way I've done it
22:16:34 <ais523> because a simple straightforward INTERCAL interpreter is no fun
22:16:44 <AnMaster> ais523, it even breaks on single threads now :/
22:16:56 <ais523> what about 0 or a negative number of threads?
22:17:22 <AnMaster> that bit works, the issue is elsewhere
22:20:20 -!- RedDak has quit (Remote closed the connection).
22:23:10 <ehird> ais523: so as it turns out trying to glue peices of software together to make a semi-framework isn't pretty
22:23:18 <ehird> and actually using stuff is pretty
22:30:21 <ehird> i'm shocked that nobody else is suprised.
22:37:30 * AnMaster ponders the irony of having a stack allocated on the heap
22:41:08 <AnMaster> oh found it, I referenced once too many times
22:42:59 -!- oerjan has joined.
22:44:52 <AnMaster> Assuming that instructions without any particular concurrency-related behaviour, such as ^>v<#, take one tick.
22:44:52 <AnMaster> Will continue to produce textual output, so strings must work correctly where concurrency is concerned: "a b" should take 5 ticks, 'a should take 1.
22:44:52 <AnMaster> GGGGGGOGOGOGOGOGOGOOGOOGOOGOOGOOGOODGOODGOODGOODGOODGOODGO:ODGO:ODGO:ODGO:ODGO
22:45:01 <AnMaster> Deewiant, that's good I assume? :D
22:47:21 <ehird> BABABABDBDBABABBDBBABBDBABDDD
22:49:03 <AnMaster> ehird, found it, ip didn't move correctly after split
22:49:11 <AnMaster> so it split and split and split and so on
22:49:25 <AnMaster> one thread stayed on t spawning new threads all the time
22:49:49 <AnMaster> cfunge: /home/arvid/src/cfunge08/src/stack.c:89: StackPush: Assertion `stack != ((void *)0)' failed.
22:50:47 <AnMaster> it goes on to execute after thread finished :/
22:51:20 <ehird> ais523: how come perl manages to all look the same
22:51:28 <ehird> especially when all I've learnt about it I've learnt from your pastes <.<
22:51:38 <ehird> low barrier to entry i guess
22:51:58 <ais523> ehird: because people are so unused to seeing anything that looks like perl, except maybe shell-script
22:52:26 <ais523> it's like seeing people from a culture you aren't used to; they're all so different from you in terms of appearance, you find them hard to find apart whereas they can tell themselves apart quite easily
22:53:00 <AnMaster> ais523, now you are just being weird :P
22:53:12 <Slereah> I'm no racist, but all Malbolge programs look alike to me
22:53:27 <AnMaster> ais523, but indeed most perl looks like line noise
22:53:30 <ehird> ais523: well hey, a quote management system as my second perl app may be... a little ambitious
22:54:02 <AnMaster> ehird, or do it in perl but use Inline::C
22:54:27 <ehird> AnMaster: I was doing it in python, the first two times
22:54:37 <ehird> First with a DIY framework, then with Spyce
22:54:47 <ehird> I was going to try Pylons, web.py &co but cba because I don't like frameworks like that
22:54:50 <ehird> AnMaster: You betcha
22:55:02 <ehird> AnMaster: Can I say 'please die in a fire' here? :<
22:55:12 <ehird> twisted for a web app is the most awful idea i've heard of
22:55:27 <AnMaster> ehird, I thought there was twisted HTTP or something?
22:55:38 <AnMaster> or is twisted for writing http servers?
22:57:07 <AnMaster> or just use an existing software
22:58:16 <ehird> and I just told you I tried Python *twice*
22:58:26 <ehird> and twisted.web does exist, but eek.
22:58:34 <ehird> and using an existing software is so not cool ;)
22:59:50 <ais523> is that a fingerprint? I thought it was SOCK
23:00:15 <AnMaster> ais523, not an existing one no
23:00:40 <AnMaster> but why not an HTTP server framework for befunge?
23:01:22 <ais523> there was a CGI script written in INTERCAL, after all
23:01:28 * ais523 wonders if it's still online
23:01:38 <AnMaster> ais523, some nice ideas btw: BOOP = Befunge Object Object Orientated Programming Extension
23:03:12 <ehird> ais523: Hmm, why is OOP in perl ugly as hell
23:03:16 <ehird> sooo much boilerplate
23:03:23 <ais523> ehird: I don't like Perl OOP either
23:03:40 <ehird> ais523: Though this looks interesting
23:03:41 <ehird> http://search.cpan.org/~stevan/Moose-0.40/lib/Moose.pm
23:03:57 <ais523> ehird: http://www.muppetlabs.com/~breadbox/intercal/ins/insstart.html
23:05:40 <ehird> ais523: when I saw the intercal spec
23:05:47 <ehird> it was so extensive that i thought it would be pretty substantial
23:05:56 <ehird> but it really has very little stuff..
23:05:58 <ehird> just fancy syntax.
23:06:04 <ais523> ehird: have you seen my improved spec?
23:06:12 <ais523> It's linked from http://intercal.freeshell.org
23:06:22 <ais523> support for things like multithreading, operand overloading, and so on
23:06:31 <ais523> CLC-INTERCAL, linked from the same site, has even more
23:06:43 <ais523> its spec is simply a delta from INTERCAL-72 and yet still fills several pages
23:08:01 <ais523> INTERCAL has come along a long way from the old days
23:08:13 <ais523> (I challenge anyone to understand WHILE at the first attempt, for instance)
23:12:32 <ais523> yarg, that INTERCAL CGI script stores information in the /names/ of elements
23:12:45 <ais523> <INPUT NAME="MOFIKGAEECIaAAAAAQBBBBBcaCCCCcQDDDDeaSUEEeaSUFFeQWSUGgacUUHgaSYYUiQSWUU" MAXLENGTH=6 SIZE=7><P>
23:13:54 <ehird> 'use RatsAss;' is a vaguely disturbing line
23:13:59 <ehird> ais523: yes, but even the basic stuff
23:16:43 <ehird> ahh, how i love the fact that html 4.01 lets me omit <head>/<body> and other cruft
23:17:06 <ehird> <!-- dtd here --><html><title>hello</title><link rel="stylesheet" href="foo" type="text/css">...</html>
23:17:51 <ais523> ehird: there are two schools of thought about HTML
23:18:04 <ais523> one goes on to create XHTML, where a single typo blanks your page
23:18:10 <ais523> the other goes on to create HTML 5
23:18:26 <ais523> which has a DOCTYPE line of <!DOCTYPE HTML>
23:18:36 <ais523> is it ! or ?, actually, I can never remember
23:18:45 <AnMaster> ais523, it is way easier to code an XHTML interpreter than a HTML one
23:18:53 <ais523> but the point is it's the minimum number of characters needed to trip browser's compliance switches
23:19:04 <ais523> AnMaster: I actually favour XHTML over HTML
23:19:42 <ehird> ais523: not really
23:19:47 <ehird> xhtml is step in the wrong direction
23:19:50 <ehird> yes, it's more formal -- good
23:19:54 <ehird> but it retains *cruft*
23:20:01 <ais523> see, ehird, you belong to the /other/ school of thought
23:20:09 <ehird> ais523: I used to be an XHTML weenie.
23:20:17 <AnMaster> ais523, how was http://intercal.freeshell.org/ick-0.27/index.htm generated I wonder
23:20:39 <ais523> but with custom modifications
23:20:44 <ehird> (also, you SHOULD serve xhtml as application/xml+xhtml, but IE dies on this)
23:20:44 <ais523> try hovering the URLs, for instance
23:20:50 <ais523> they're 8.3 format for DOS-compatibility
23:20:54 <AnMaster> ais523, yeah doesn't look that the ones on gnu.org
23:21:02 <ais523> and I'm using my own stylesheet
23:21:17 <ais523> also, there's some custom hacking of the TOC and some of the headings
23:21:30 <ais523> but I'm the current maintainer
23:21:43 <AnMaster> ais523, what is the weird filenames for
23:22:09 <ais523> for DOS compatibility, of course
23:22:22 <AnMaster> ais523, ok.... why DOS compatibility?
23:22:29 <AnMaster> why on earth would anyone care about that?
23:22:37 <ehird> AnMaster: c-intercal supports DOS.
23:22:40 <ais523> because INTERCAL is compatible with a whole load of outdated technologies
23:22:47 <ais523> DJGPP is one of the maintained targets for C-INTERCAL
23:22:56 <ais523> which (apart from cygwin) is the only way to run it on Windows
23:23:02 <ehird> ais523: I know at least one person who uses dos as his main system
23:23:08 <ehird> know in a loose sense - internetknow
23:23:14 <AnMaster> ais523, oh and what is the difference between CLC-INTERCAL and C-INTERCAL
23:23:21 <AnMaster> ais523, what one is the "newest"
23:23:27 <ais523> AnMaster: they're two different implementations
23:23:36 <ais523> in terms of when it was created
23:23:42 <ais523> but they're both actively maintained
23:23:44 <ehird> ais523: uuurgh, I want a StrictWarningsIronFist
23:23:50 <ehird> give it a package, it makes them all strict&warnings
23:23:55 <AnMaster> ais523, who maintains CLC then?
23:23:55 <ehird> so i don't have to type it all the goddamn time
23:24:31 <ais523> AnMaster: Claudio Calvelli
23:24:42 <AnMaster> ehird, -Wall -ansi -pedantic -Wextra -Werror
23:24:55 <AnMaster> ais523, not here in this channel?
23:25:07 <AnMaster> ais523, also are CLC and your one compatible?
23:25:09 <ais523> I don't think I've ever seen him here
23:25:14 <ais523> AnMaster: to some extent
23:25:21 <ais523> each has features the other doesn't implement
23:25:32 <ais523> but the ones that are implemented in both are mostly compatible
23:25:35 <oerjan> ais523: is CLC an abbreviation for his name?
23:25:38 <ais523> the C-INTERCAL manual has a portability list
23:25:41 <ais523> oerjan: not sure, but probably
23:26:07 <ais523> and I comment on what each of the common commands does in each implementation
23:26:34 <ais523> there were two INTERCAL-72 implementations that used different syntaxes (the Princeton and Atari implementations)
23:26:42 <ais523> then C-INTERCAL, J-INTERCAL and CLC-INTERCAL
23:26:59 <ais523> J-INTERCAL hasn't been updated in a while, and is just INTERCAL-72+COME FROM by label
23:27:00 <ehird> <h1>Software error:</h1>
23:27:00 <ehird> <pre>Quot.pm did not return a true value at index.cgi line 10.
23:27:06 <ehird> I have to put a true value at the end of my module? :|
23:27:41 <ais523> a Perl module traditionally ends 1;
23:27:56 <ehird> also, I find the fact that I have to put @EXPORT etc in BEGIN disturbing
23:29:52 <ehird> use vars(@EXPORT);
23:29:52 <ehird> @EXPORT = qw(quot);
23:29:57 <ehird> faaar too verbose :D
23:50:51 -!- sebbu2 has changed nick to sebbu.