←2008-03-14 2008-03-15 2008-03-16→ ↑2008 ↑all
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:33 <ehird> dibbsss
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:28 <ehird> cool
00:02:40 <ehird> include landarins J
00:02:43 <ehird> :D
00:03:42 <ais523> ehird: what's that?
00:04:51 <ehird> ais523: hard to explakin
00:05:00 <ehird> c/cc on steroids
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:20 <ais523> ehird: not exactly
00:07:25 <ais523> but there are various ways to simulate them
00:07:30 <ehird> :/
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:22:13 <ehird> So I will.
00:23:06 <ehird> ais523: Hmm
00:23:09 <ehird> What about one with no [...]?
00:23:18 <ehird> The only way to get a quotation is 'dei'
00:23:21 <ehird> (de-i)
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:45 <ehird> foo dei => [foo]
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:24:54 <ehird> so like
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:25:30 <oerjan> dup a dei doo dah
00:26:04 <Deformative> Whatcha talking about?
00:26:18 <Deformative> Factor?
00:26:23 <ehird> Deformative: no
00:26:35 <Deformative> Then what?
00:26:43 <ehird> this
00:27:28 * Deformative is waiting.
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:36 <ehird> so:
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:13 <ehird> cooooooooooool :D
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:31:20 <Deformative> Heh.
00:33:06 <ehird> ais523: dips rewrite rule is simple :D
00:33:07 <ehird> [X] Y dip => X Y
00:33:21 <ais523> ehird: eys
00:33:24 <ais523> s/eys/yes/
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:35:56 <ehird> and no, ais523
00:35:57 <ehird> it's ... TOP
00:36:00 <ehird> err
00:36:00 <ehird> wait
00:36:02 <ehird> you're right
00:36:22 <ehird> X [Y] dip => Y X
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:43 <ehird> x
00:37:43 <ehird> :D
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:11 <ehird> err wait
00:38:13 <ehird> i need compose
00:38:17 <ehird> ais523: btw
00:38:21 <ehird> [X] dei => http://en.wikipedia.org/wiki/Special:Search?go=Go&search=X
00:38:24 <ehird> err.
00:38:25 <ehird> well
00:38:25 <ehird> :D
00:38:29 <ehird> [X] dei => [ [X] ]
00:38:34 <ehird> but
00:38:36 <ehird> you can't do that literally
00:38:36 <ehird> so.
00:38:50 <ehird> so i need a special 'curry;
00:38:55 <ais523> are you implementing wrap?
00:39:01 <ehird> ais523: guess so
00:39:01 <ehird> heh
00:39:31 <ehird> ais523: http://pastebin.ca/943115
00:39:32 <ehird> new spec
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:03 <ehird> ais523: haha, why
00:40:03 <ehird> :P
00:40:08 <ehird> hmm
00:40:09 <ehird> true i guess..
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:40 <ehird> ais523: wait
00:41:42 <ehird> what would that do
00:41:42 <ehird> :|
00:41:50 <ehird> hm
00:41:51 <ehird> [X] sii => [X] X
00:41:54 <ais523> it's :^ in Underlambda/Underload
00:42:01 <ais523> so [X] sii => [X] X
00:42:05 <ais523> heh, snap
00:42:11 <ehird> ais523: maybe I should do Y
00:42:11 <ehird> :D
00:42:15 <ehird> wait, impossible
00:42:16 <ehird> xD
00:42:52 <ehird> ais523: dup drop dei => [drop]
00:42:53 <ehird> useful
00:43:10 <ais523> ehird: all reversible combinators can be deid easily
00:43:31 <ehird> ais523: yeah
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:05 <ehird> wait, no
00:45:08 <ehird> you'd need another dip
00:45:09 <ehird> arrgh
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:24 <ehird> i don;t
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:46:59 <ehird> o
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:41 <ais523> e.g. (:^):^
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:00:07 <ehird> :)
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:24 <ehird> ais523: woo
01:04:24 <ehird> :D
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:46 <ehird> :P
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:12 <ais523> otherwise, no
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.
02:57:34 <oklokok> binary search?
02:57:41 <oklokok> dunno
02:57:50 <oklokok> lotsa ways
02:57:53 <faxathisia> probably just iterate newtons methods
02:57:57 <faxathisia> -s
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:15 <oklokok> ski interp
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:11:52 <oklokok> :D
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");
10:35:38 <AnMaster> real 0m0.085s
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:14:35 <AnMaster> ah I see
11:14:44 * AnMaster is wrestling with cmake atm
11:15:36 <AnMaster> ah that's fixed
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:18:19 <AnMaster> wtf *looks again*
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:42:54 * AnMaster debugs
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:02 * AnMaster wonders wtf
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:21 <AnMaster> wtf
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:49:43 <AnMaster> w t f
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:50:54 <AnMaster> and I run on same computer
12:51:20 <ais523> OK, that makes it substantiatlly harder to get things wrong
12:51:27 <AnMaster> ais523, indeed
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:35 <AnMaster> thing you boot into
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:53:09 <AnMaster> but that was it
12:53:15 <AnMaster> no invalid reads or such
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:55:59 * AnMaster checks one thing
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:20 <AnMaster> that one breaks it
12:57:27 <ais523> what type is FUNGEDATATYPE?
12:57:45 <AnMaster> ais523, int_fast64_t, depending on compile time options
12:57:54 <AnMaster> the normal line is:
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:58:50 <AnMaster> ais523, heheh :)
12:58:54 <AnMaster> 128-bit anyone?
12:59:05 <AnMaster> actually gcc got __int128_t if you want to try
12:59:09 <AnMaster> horribly slow here
12:59:29 <AnMaster> ais523, anyway it can be set to use int32_t or int_fast64_t
12:59:30 <AnMaster> :)
12:59:34 <AnMaster> cfunge that is
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:00:30 <AnMaster> copied wrong one first
13:03:28 <AnMaster> ok... this doesn't make any sese
13:03:31 <AnMaster> sense*
13:03:57 <ais523> what data type is curTime.tm_hour?
13:03:58 <AnMaster> 11 * 256 * 256 = 720896
13:04:03 <AnMaster> ais523, int, so 32-bit
13:04:07 <ais523> is it possibly overflowing before you cast it to FUNGEDATATYPE?
13:04:10 <AnMaster> 668196 < 720896
13:04:17 <AnMaster> 2^32 > 720896
13:04:19 <ais523> no, can't be in this case
13:04:23 <AnMaster> should not overflow?
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:17 * AnMaster checks header file
13:05:37 <AnMaster> header file agrees
13:05:46 <ais523> so it's not an overflow, at least not there...
13:05:56 <ais523> what's 668196 in hex?
13:06:16 <ais523> ~$ printf %x\\n $((668196))
13:06:16 <ais523> a3224
13:06:18 <AnMaster> $ echo $(( 0x668196 ))
13:06:18 <AnMaster> 6717846
13:06:18 <AnMaster> ?
13:06:29 <ais523> AnMaster: you converted in the wrong direction
13:06:35 <AnMaster> ah right
13:06:36 <AnMaster> true
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:01 <AnMaster> in my stack dump routine
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:09:43 * AnMaster can't think of how atm
13:10:04 <ais523> hour = 668196 / 65536
13:10:13 <ais523> minute = (668196 / 256) % 256
13:10:21 <ais523> second = (668196) % 356
13:10:35 <AnMaster> % 356?
13:10:36 <ais523> s/356/256/
13:10:50 <AnMaster> 10:50:36
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:11:43 <AnMaster> ais523, hard to check :/
13:12:02 <ais523> agreed
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:24 <AnMaster> I use binary from Deewiant
13:12:43 <ais523> so checking will be hard, then
13:12:49 <AnMaster> ais523, yep
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:25 <AnMaster> or rather
13:13:32 <AnMaster> hard code the value of 10:50:36
13:14:18 <AnMaster> ais523, now it correctly says:
13:14:20 <AnMaster> That the time is 13 : 14 : 05
13:14:43 <AnMaster> local time hm
13:14:56 * AnMaster changes to UTC
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:07 <AnMaster> hm
13:27:21 <AnMaster> ais523, year of the pig?
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:05 <AnMaster> all in one
13:29:34 <AnMaster> $ ddate
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:56:57 <AnMaster> ais523, indeed
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:23:59 <AnMaster> ah what was the issue?
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:24:31 <AnMaster> ah
16:25:17 <Deewiant> and subr, what about it
16:25:38 <Deewiant> the call stack is initialized to 8, yes. but it can grow.
16:25:43 <AnMaster> ah right
16:25:44 <Deewiant> (first two lines of push)
16:25:59 <AnMaster> Deewiant, why not create a normal temp stack?
16:26:13 <Deewiant> 'normal'?
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:26:48 <Deewiant> I think they might nowadays
16:27:12 * AnMaster points to his stack struct
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:40 <Deewiant> but it's different
16:27:51 <Deewiant> 'cause this one doesn't pop zero when it's empty, for instance.
16:28:00 <AnMaster> hm true
16:28:04 <Deewiant> I don't know, I can't remember what the fingerprint does.
16:28:17 <AnMaster> Deewiant, RC/Funge subroutine
16:28:26 <Deewiant> call, jump, ret.
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:03 <Deewiant> yeah.
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:30:54 <Deewiant> look at what's happening
16:30:58 <Deewiant> in call(), it pops n
16:31:09 <Deewiant> and then it moves n cells from IP's stack to the callstack
16:31:17 <Deewiant> in ret, it puts them back
16:31:28 <Deewiant> or wait, what?
16:32:03 <Deewiant> it pops n, then it puts the ret address, then it puts them back again.
16:32:15 <Deewiant> I guess you're right.
16:32:31 <Deewiant> so it's just an optimization to avoid needless heap activity.
16:32:39 <AnMaster> huh, auto is a C keyword!?
16:32:44 * AnMaster wonders what it does in C
16:32:53 <Deewiant> nothing
16:33:04 <AnMaster> what is it for then?
16:33:07 <Deewiant> AnMaster: you know 'register'?
16:33:13 <AnMaster> yes
16:33:17 <Deewiant> auto is basically the opposite
16:33:20 <Deewiant> i.e. let the compiler decide
16:33:25 <Deewiant> but auto is also the default for all variables
16:33:31 <Deewiant> so it's unnecessary
16:33:45 <AnMaster> err that's volatile?
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:56 <Deewiant> err
16:33:59 <AnMaster> auto would be default middle value
16:34:01 <Deewiant> I'm using the term 'opposite' loosely
16:34:04 <AnMaster> ie, let compiler decide
16:34:09 <Deewiant> register -> put it in register
16:34:12 <AnMaster> yep
16:34:13 <Deewiant> auto -> let compiler decide
16:34:21 <Deewiant> volatile -> always read the value from wherever it came from
16:34:27 <AnMaster> indeed
16:34:36 <AnMaster> therefore register is opposite of volatile
16:34:38 <AnMaster> ;P
16:34:52 <Deewiant> I'd disagree
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:35:16 <AnMaster> well strictly speaking indeed
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:39:32 <SimonRC> i,e, stack 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:40:12 <SimonRC> when it blatently doesn't
16:41:54 <AnMaster> #\884***+1#<;#_ -! #_ bb*01- x>".dedaol">:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_$a,Testing fingerprint SUBR... loaded.
16:41:54 <AnMaster> 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx
16:42:03 * AnMaster sighs at infinite loop
16:42:25 <SimonRC> ah, usefunge
16:42:27 <SimonRC> *une
16:42:30 <AnMaster> no
16:42:35 <AnMaster> just debug output
16:42:41 <AnMaster> from my befunge interpreter
16:42:46 <SimonRC> ok
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:44:55 <SimonRC> ok
16:47:20 <AnMaster> Deewiant, help, what could cause that error on SUBR loading? :(
16:47:24 <AnMaster> it makes no sense
16:47:29 <Deewiant> dunno
16:47:33 <AnMaster> >0" tnirpregnif gnitseT">:#,_00p410p310p210p110p>:;^p1p00:+1g00:;# _ " ...",,,, 41g:!#^_>31g:!#^_>21g:!#^_>11g 00g #^(22p33pv>".dedaol">:#,_$a, 0655**- \ ef* - x
16:47:34 <Deewiant> do you get to (15, 725)
16:47:39 <AnMaster> it fails at the x at the end
16:47:45 <AnMaster> somehow it pops 0,0
16:47:50 <Deewiant> so something is messed up
16:47:53 <AnMaster> so ip end up not moving
16:48:01 <Deewiant> because that's the standard fingerprint loading routine
16:48:03 <Deewiant> used for every fingerprint
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:27 <Deewiant> in this case it should be 725
16:48:41 <AnMaster> Testing fingerprint SUBR... loaded.
16:48:41 <AnMaster> Testing fingerprint SUBR... loaded.
16:48:42 <AnMaster> huh
16:49:26 <AnMaster> Deewiant, that is odd eh?
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:49:55 <AnMaster> yes
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:02 <Deewiant> where is it at
16:51:18 <AnMaster> err?
16:51:28 <Deewiant> 2008-03-15 17:41:54 ( AnMaster) 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx
16:51:31 <Deewiant> x5xtx
16:51:35 <AnMaster> good question a sec
16:51:36 <Deewiant> what's the 5
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:25 <Deewiant> x=15 y=0? fail :-P
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
16:57:20 <AnMaster> (gdb) print ip->delta
16:57:20 <AnMaster> $1 = {x = -150, y = -210}
16:57:23 <AnMaster> yes indeed
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:20 <AnMaster> Deewiant, yes that was it ^
17:02:25 <Deewiant> J? I thought that died before getting to J
17:02:35 <AnMaster> Deewiant, nop
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:02:59 <AnMaster> SimonRC, sub routinesa
17:03:03 <AnMaster> routines*
17:03:14 <SimonRC> I thought '98 already did those
17:03:18 <AnMaster> err no?
17:03:25 <SimonRC> oh
17:07:01 <AnMaster> Deewiant, pull to get my SUBR, not yet optimal
17:07:10 <AnMaster> (in sense of speed I mean)
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:20 <SimonRC> hmm, odd indeed
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:11:27 <AnMaster> indeed
17:12:06 * SimonRC considers a C->Befunge compiler
17:13:30 <SimonRC> actually a Forth might work quite well
17:14:15 <AnMaster> SimonRC, err what?
17:14:20 <AnMaster> C->forth?
17:14:24 <AnMaster> sure, but why?
17:14:32 <AnMaster> oh wait, C->befunge would be nice
17:14:47 <AnMaster> because then I could run cfunge under cfunge
17:14:53 <SimonRC> heh
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:15:41 <AnMaster> and CCBI is in D
17:15:46 <AnMaster> so a pain to compile
17:15:50 <SimonRC> what about fbbi?
17:15:58 <AnMaster> SimonRC, not conformant iirc
17:16:53 <AnMaster> SimonRC, http://users.tkk.fi/~mniemenm/befunge/mycology-comparison.html
17:17:04 <AnMaster> see chart at end
17:17:28 <AnMaster> Deewiant, btw for mycology fix of date, you didn't update webpage it seems?
17:17:33 <AnMaster> ie, no changelog entry
17:23:36 <Deewiant> only on the main page
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:25:53 <Sgeo> zzzz
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:49 <AnMaster> ais523, what is splinter?
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:21 <ais523> nothing
17:44:23 <ais523> it was just for fun
17:44:29 <AnMaster> link to it?
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:35 <AnMaster> ie, passing around ip pointer
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:01 <AnMaster> and easy to fix
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:09 <oklokok> splinter is cute
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:25 * AnMaster wonders why
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:18 <AnMaster> hrm
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
17:59:39 <AnMaster> ais523, true
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:30 <AnMaster> a double linked list
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:04:26 <AnMaster> as you need to insert
19:06:34 <AnMaster> Deewiant, what file is IP *list* in?
19:06:36 <Deewiant> it's O(1) + memory allocation costs
19:06:39 <Deewiant> IP.d
19:06:42 <Deewiant> it's a global at the top
19:06:47 <AnMaster> ah
19:06:53 <Deewiant> IP[] ips;
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:07:49 <Deewiant> of the new array
19:07:55 <Deewiant> insert new IP at position i
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:17 <AnMaster> :/
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:09 <AnMaster> Deewiant, err what?
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:21 <Deewiant> which is O(n) anyway.
19:09:50 <AnMaster> err? *thinks* O(n/2) == O(n)??
19:09:57 <Deewiant> yep
19:10:04 <AnMaster> then O maths are strange
19:10:05 <Deewiant> O(constant * n) == O(n)
19:10:08 <Deewiant> :-P
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:30 <Deewiant> ah, but O isn't a function
19:10:32 <Deewiant> O is a set
19:10:33 <AnMaster> mathematically speaking I mean
19:10:42 <AnMaster> Deewiant, ok hm
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:18 <AnMaster> UNCHANGING = 0,
19:12:18 <AnMaster> STOPPING,
19:12:18 <AnMaster> QUITTING,
19:12:22 <AnMaster> state hm?
19:12:27 <Deewiant> aye
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:12:50 <Deewiant> STOPPING - hit an @
19:12:55 <Deewiant> QUITTING - hit a q
19:13:01 <Deewiant> UNCHANGING - normal.
19:13:04 <AnMaster> ah
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:05 <Deewiant> because of TRDS.
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:15:13 <Deewiant> I don't think, anyway.
19:18:59 <AnMaster> think what?
19:19:03 <AnMaster> at all? ;P
19:19:05 * AnMaster runs
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:03 <AnMaster> mhm
19:20:09 <AnMaster> I won't do TRDS
19:20:22 <AnMaster> Deewiant, in:
19:20:24 <AnMaster> IP[] ips;
19:20:29 <AnMaster> is that a C style array
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:08 <AnMaster> s/=/?/
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:28 <Deewiant> it's flat, just dynamic
19:21:29 <ehird> ooh
19:21:31 <ehird> what's this about
19:21:31 <AnMaster> ah ok
19:21:38 <ehird> it sounds interestermating
19:21:38 <AnMaster> ehird, ?
19:21:40 <Deewiant> ehird: dynamic arrays in D
19:21:47 <ehird> oh ah
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:03 <ehird> iirc.
19:22:06 <ehird> ;)
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:29 <Deewiant> it doesn't matter, really
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:40 <ehird> &foo->first
19:22:44 <AnMaster> and since D do range checking
19:22:45 <ehird> i think that would work
19:22:45 <ehird> cute
19:22:46 <AnMaster> it makes sense
19:22:49 <AnMaster> Deewiant, ^
19:23:05 <ehird> oh, wait
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:41 * Sgeo sends
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:40 <ehird> if obj = void *
19:25:46 <ehird> then the replacable array ref is obj*
19:25:51 <ehird> thingy
19:25:56 <ehird> AnMaster: yepp
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:21 <AnMaster> or whatever the name is
19:26:25 <ehird> AnMaster: the cool thing about it is that you don't need two pointers
19:26:31 <AnMaster> ehird, indeed
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> typedef struct {
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:26:47 <AnMaster> } fungeStackStack;
19:27:01 <AnMaster> stackStack = cf_realloc(*me, sizeof(fungeStackStack) + ((*me)->size + 1) * sizeof(fungeStack*));
19:27:07 <AnMaster> that is how I grow it
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:28:10 <AnMaster> ehird, hehe, tough luck
19:29:18 <ehird> AnMaster: http://pastebin.ca/943924
19:29:20 <ehird> string_t!
19:29:22 <ehird> :p
19:29:42 <AnMaster> ehird, god, are you doing C99 feature in C89
19:29:43 <AnMaster> -_-
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:48 <AnMaster> :P
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:11 <ehird> :D
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:50 <ehird> etc
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:31:56 <AnMaster> err add space
19:32:00 <ais523> so very very slightly worse than O(n)
19:32:12 <ehird> AnMaster: no, not really
19:32:15 <ehird> but eh.
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:32:59 * ais523 tries to find it
19:33:00 <AnMaster> and therefore likely slower
19:33:22 <AnMaster> ais523, wtf link to that?
19:33:46 <ehird> AnMaster: for dei
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:33:56 <AnMaster> for that
19:34:00 <ehird> ho
19:34:03 <ehird> oh
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:00 <AnMaster> ok
19:35:09 <ehird> ais523: hmm, i need a special value to put at the start of the program
19:35:10 <ehird> maybe []?
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:35:48 <AnMaster> ah ok
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:47 <SimonRC> where is Dei defined?
19:37:51 <ais523> ehird: did you see my proof that Splinter was a PDA that I linked in #esoteric earlier today?
19:38:06 <ehird> SimonRC: this:
19:38:07 <ehird> well
19:38:08 <ehird> in my spec
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:32 <ehird> hehe, indeed.
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:24 <ehird> Okies:
19:39:25 <ais523> www is so 1990s
19:39:27 <ehird> http://pastebin.ca/943935
19:39:29 <ehird> That's minidei
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:38 <ehird> because of [...]
19:41:42 <ehird> can't do that with regexps
19:41:46 <ais523> ehird: learn to write recursive regexps
19:41:50 <ehird> ais523: scared
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 <SimonRC> ping can't see it either
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:15 <SimonRC> yes
19:43:20 <ehird> cperl-mode highlights it as divide+Comment
19:43:25 <ehird> perl-mode too
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:35 <SimonRC> hmm#
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 <SimonRC> nope, can' do
19:48:13 <ais523> ehird: you want to put \[ and \] inside your character class [^ ]
19:48:17 <SimonRC> *can't
19:48:40 <ais523> SimonRC: that's strange, it seems like bits of the internet are inaccessible to you for some reason
19:48:45 <SimonRC> weird
19:48:56 <ehird> ais523: thanks
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:09 <ehird> Sgeo: qmail, eww
19:49:19 <Sgeo> what does it mean?
19:49:26 <SimonRC> where was it?
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:49:48 <ehird> not +
19:50:02 <SimonRC> well, it is just giving the PID of the qmail process that invoked it
19:50:07 <SimonRC> oops
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:20 <ehird> 0
19:50:25 <ehird> veeeery odd
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:04 <SimonRC> weird
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:29 <ehird> a sucky one
19:51:31 <ehird> does that help?
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:40 <SimonRC> ehird: not all
19:52:42 <Sgeo> EVERY part?
19:52:44 <ehird> ais523: okies. why?
19:52:47 <Sgeo> I trust this:
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:35 <ehird> ais523: that;s it
19:54:48 <ehird> $_ = "[] "+<>;
19:54:50 <ehird> i guess that is wrong
19:54:59 <ehird> yep
19:55:02 <ehird> it gets it as ..
19:55:03 <ehird> oh of course
19:55:05 <ehird> + ain't concat
19:55:07 <ehird> . is
19:55:13 * ais523 feels stupid for not noticing that
19:55:57 <ehird> ehird@ehird-desktop:~$ echo 'wrap'|perl minidei.pl
19:55:57 <ehird> [] wrap
19:55:57 <ehird> [[]]
19:56:04 <ehird> hm
19:56:05 <ehird> dup doesn't work
19:56:12 <ehird> oh
19:56:14 <ehird> i didn't implement it
19:56:14 <ehird> XS
19:56:15 <ehird> XD
19:56:35 <SimonRC> oh dear
19:57:05 <ehird> ais523: i think $e is broken
19:57:05 <ehird> :(
19:57:08 <ehird> oh wait
19:57:09 <ehird> of course
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:57:57 <ehird> right?
19:58:06 <ais523> yes
19:58:09 <ehird> and..
19:58:12 <ehird> dei only needs to match on words!!
19:58:18 <ais523> yes
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:58:47 <ehird> :)
19:59:07 <ehird> ehird@ehird-desktop:~$ echo 'dup dei i'|perl minidei.pl
19:59:07 <ehird> [] dup dei i
19:59:07 <ehird> [] [] [dup] i
19:59:07 <ehird> [] [] dup
19:59:07 <ehird> [] [] []
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:44 <SimonRC> ah, ok
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:04 <ehird> :)
20:00:05 <SimonRC> ok
20:00:50 <ehird> ais523: can i use <> multiple times?
20:00:59 <ais523> ehird: yes
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:19 <ehird> ais523: hmm
20:01:23 <ehird> what's the easiest way to just slurp all of stdin?
20:01:27 <ehird> well
20:01:28 <ais523> (that is, one file from the command line, and stdin when they run out)
20:01:30 <ehird> ruby's ARGF
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:49 <SimonRC> blither
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:06:30 <ehird> ais523: :)
20:07:20 <ehird> ais523: hm
20:07:22 <ehird> that's buggy
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:21 <ehird> you said that
20:08:21 <ehird> :)
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:40 <ehird> upgraded it
20:08:44 <ehird> made it do deis in steps
20:08:45 <ehird> and fixed [] etc
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:15 <SimonRC> :-)
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:14 <ehird> *: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:16 <pikhq> ?
20:11:18 <pikhq> ehird: Does it work?
20:11:26 <ehird> pikhq: Sooooooon.
20:11:28 <ehird> <___<
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:08 <ehird> It's crazy
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:24 <ehird> :D
20:12:30 <ehird> (:^):^ -> [dup i] dup i
20:12:32 <ehird> hmm
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:09 <ais523> wrap i dei
20:13:09 * pikhq curses at OpenVPN
20:13:15 <ehird> dup dei swap drop dup swap dei i dei swap drop compose dup i
20:13:26 <ehird> hmm
20:13:29 <ehird> that doesn't wooooork
20:13:29 <ehird> :(
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:13:39 <ais523> hmm...
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:57 <SimonRC> Sgeo: Main eXchange
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:36 <SimonRC> um, wow
20:17:40 <SimonRC> a whole url?
20:17:41 <SimonRC> :-)
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:12 <ehird> runs forever
20:21:12 <ehird> :(
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> [dup i] dup i
20:21:39 <ehird> [] [] compose dup i
20:21:39 <ehird> [] [] compose compose dup i
20:21:39 <ehird> ....
20:21:42 <ehird> is how it goes
20:21:44 <SimonRC> Sgeo: dig gmail.com MX
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:23 <ehird> aha
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:15 <ehird> ah
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:04 <ehird> :)
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 <Sgeo> HELO sgeo
20:26:32 <ais523> that looks right to me?
20:26:35 <ais523> what goes wrong?
20:26:41 <ehird> so:
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 <SimonRC> Sgeo: dunno
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:22 <ehird> [] [dup i] dup i
20:27:30 <ehird> [] [dup i] [dup i] i
20:27:33 <ehird> [] [dup i] dup i
20:27:34 <ehird> so yes
20:27:36 <ehird> it should work
20:27:40 <ehird> it is minidei.pl's fault
20:27:48 <ehird> minidei stops at
20:27:49 <ehird> [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i
20:27:54 <ehird> so, i have a bug
20:28:20 <ehird> ais523: Think I got it
20:28:24 <ehird> $q doesn't handle nested
20:28:30 <ehird> Is (?:R) wrong?
20:28:33 <ehird> Does (?R) make a group?
20:28:50 <ehird> waiiiit
20:28:52 <ehird> i [i] compose
20:28:54 <ehird> hehe
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:16 <ehird> :P
20:29:22 <ehird> This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
20:29:22 <ehird> hah
20:29:30 <ais523> ehird: try (??{$q})
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:00 <ehird> darn
20:30:01 <ehird> hehe
20:30:02 <ehird> i will fix
20:30:24 <ehird> now it dies at [] [dup i] dup i
20:30:36 <ehird> but..
20:30:40 <ehird> there's no reason for that to fail
20:30:42 <ehird> other than..
20:30:43 <ehird> $q failing!
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 [i] dup]]]
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:32:26 <ehird> $q is broken.
20:32:38 <ais523> yes
20:33:43 <ehird> ais523: Does (??{x}) make a group?
20:34:30 <ais523> ehird: no
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:43 <ais523> ehird: it works
20:35:46 <ais523> I've done it many times before
20:36:02 <ehird> ais523: ok minidei works now
20:36:03 <ehird> BUTT
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:20 <ehird> maybe I need +?
20:36:24 <ehird> that is '+?'
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:21 <ehird> isn't working
20:38:24 <ais523> not there
20:38:27 <ehird> stops at: [[dup wrap i dei dup]] wrap
20:38:29 <ehird> ais523: and no
20:38:31 <ehird> that's from minidei.pl
20:38:34 <ehird> sans group
20:38:35 <ais523> y $q = qr/(?:\[(??{$q})\]|[^\[\]]+)*/;
20:38:38 <ehird> no, look
20:38:41 <ehird> mine works fine
20:38:43 <ehird> because I fixed $e too
20:38:46 <ais523> oh
20:38:48 <ehird> my $e = qr/$w|($q)/;
20:39:03 <ehird> ais523: aha
20:39:05 <ehird> it's [a b c]
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:22 <ehird> I need:
20:39:24 <ehird> hmm
20:39:24 <ais523> ehird: one of them is meant to be able to match multiple elements
20:39:24 <ehird> well
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:23 <ehird> and *
20:40:42 <ais523> I mean s/\[$w( $w)+\]/[$1] [$2] compose/
20:40:47 <ais523> although that has minor whitespace problems
20:40:49 <ehird> oh
20:40:50 <ehird> good point
20:41:00 <ehird> dup dei swap drop dup] compose compose] wrap
20:41:03 <ehird> not so good point
20:41:05 <ehird> I know a solution though..
20:41:16 <ehird> s/\[$w((?: $w)+)\]/[$1] [$2] compose/ and redo;
20:41:17 <ehird> hmm
20:41:19 <ehird> that doesn't work either
20:41:38 <ehird> ais523: wait...
20:41:49 <ehird> (GROUP)+ is like ((?:GROUP)+)
20:41:50 <ehird> ??
20:41:54 <ais523> maybe not
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:42:53 <ehird> that works
20:42:54 <ehird> :)
20:43:01 <ehird> but is scary
20:43:04 <ais523> WTF?
20:43:10 <ehird> ais523: don't ask me..
20:43:11 <ais523> how did the closing ] get into $2
20:43:15 <ehird> and i don't know.
20:43:22 <ais523> ehird: are you banning ] in $w?
20:43:26 <ehird> yes
20:43:28 <ais523> that's the only explanation
20:43:29 <ehird> oh wait
20:43:31 <ehird> $w has a group
20:43:49 <ehird> hm
20:43:50 <ehird> still no luck
20:43:57 <ais523> ehird: paste what you have so far?
20:44:31 <ehird> yep
20:44:31 <ehird> doing so
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:46:35 <ehird> i guess so
20:47:12 <ehird> ais523: 'nother bug
20:47:14 <ehird> ehird@ehird-desktop:~$ echo '[dei i]' | perl flatten.pl
20:47:14 <ehird> [dei i]
20:47:14 <ehird> [dei] i compose
20:47:46 <ehird> another one
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:30 <ais523> yes
20:50:41 <ais523> and I'm pretty sure it's for the same reason as the square-bracket mismatch is
20:51:09 <ehird> okay
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:29 <ehird> albeit wrongly
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:57:43 <ehird> [i] [] compose
20:58:23 <ehird> [i i i i i i i i i i i]
20:58:23 <ehird> [i] [] compose
20:58:23 <ehird> so
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:00:44 <ehird> new wrap rule
21:04:41 * Sgeo blinks at the existance http://museum/
21:04:46 <Sgeo> *existence of
21:05:28 <ehird> Sgeo: congrats, you discovered firefox's auto search
21:05:31 <ehird> welcome to 2003
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:47 <ehird> Sgeo: yes it is
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:01 <ehird> try this
21:06:03 <ehird> http://gogle/
21:06:06 <ehird> -> google.com
21:06:12 <ais523> Sgeo: I did, I just get 'Unknown host'
21:06:16 <ehird> yes -- gogle
21:06:18 <ehird> not google
21:06:19 <ehird> ergo.
21:06:34 <Sgeo> ehird, I said http://museum/ not anything else
21:06:38 <ehird> ah, wait, no
21:06:43 <ehird> Sgeo: firefox sees http://foo
21:06:47 <ehird> and turns it into http://www.foo.com
21:06:52 <Sgeo> BRB
21:07:23 <tejeez> museum actually points to 195.7.77.17
21:07:37 <Sgeo> back
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:45 <ehird> end of discussion
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:12 <ais523> and will resolve them
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:19 <ehird> hmm
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:34 <ehird> mwahahaha
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:52 <Sgeo> oh
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:12:27 <ehird> *once
21:12:30 <Sgeo> lol
21:13:01 <ehird> there is probably people in here younger than ipv6
21:13:02 <ehird> :p
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:33 <ehird> more than DNF
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:13:58 <ehird> ais523: i know
21:14:04 <ehird> ais523: that means nothing
21:14:08 <AnMaster> Deewiant, there?
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:52 <tejeez> or about.museum
21:14:57 <Deewiant> AnMaster: spawns 4 threads which all start execution at k
21:14:59 <Deewiant> or?
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:15:57 <ais523> ehird: no
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:25 <ehird> hmm
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:16:55 <Deewiant> AnMaster: same difference
21:17:02 <tejeez> i don't know
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:16 <ais523> s/been/mean/
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:45 <ais523> ehird: why?
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:24 <AnMaster> Deewiant, heh ok
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:23 <ehird> :D
21:22:29 <ehird> AnMaster: Stack!(foo) -> Stack<foo>
21:22:30 <ehird> in C++
21:22:31 <ehird> it's generics
21:22:34 <ehird> or teamplates
21:22:36 <AnMaster> oh I see
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:09 <ehird> ais523: Inline::C
21:24:14 <ehird> ais523: it compiles it out from a string
21:24:16 <ehird> very popular..
21:24:20 <ehird> i'm suprised you don't know of it
21:24:23 <ehird> it's very useful
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:22 <ehird> AnMaster: no
21:25:23 <ehird> it's clever
21:25:24 <ehird> http://search.cpan.org/~ingy/Inline-0.44/C/C.pod
21:25:25 <AnMaster> ehird, I can't read perl :(
21:26:07 <ehird> AnMaster: that's documentation
21:26:08 <ehird> :|
21:26:16 <AnMaster> ah
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:42 <AnMaster> so it's still loading
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:26:55 <oklofok> quotelicious :D
21:27:17 <ehird> heh
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:06 <ehird> :|
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:03 <ehird> :-D
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:18 <ehird> Sgeo: just you.
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:39:23 <ehird> boo
21:39:28 <Sgeo> ?
21:43:17 * AnMaster stabs his code
21:43:29 <AnMaster> infinite fork
21:43:33 <AnMaster> for unknown reason
21:44:27 <ais523> AnMaster: within the program, or did you just forkbomb your computer?
21:44:40 <AnMaster> ais523, within the interpreter
21:44:43 <AnMaster> just ttttttttttttttttttttt
21:44:45 <AnMaster> like that
21:44:47 <AnMaster> on mycology
21:44:49 * AnMaster debugs
21:48:00 <ehird> ais523: eso-std.org should use shell scripts.
21:48:08 <ehird> durable! ;)
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:31 <ehird> and yeah
21:51:34 <ais523> oh, you mean it doesn't exist yet?
21:51:36 <ehird> using md5?! :D
21:51:44 <ehird> stores in $GET__sdfs98dfu98su4knjfd
21:52:00 <ehird> usage: $(hash GET foo)
21:52:01 <ehird> :D
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:30 <ehird> ais523: quite
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:14 <ehird> ais523: true
21:53:27 <ehird> i need to write cgi.sh now
21:53:28 <ehird> :D
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:40 <ehird> ais523: indeed
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:44 <ehird> ais523: huh?
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:35 <ehird> oh wait
21:57:35 <ehird> i see
21:57:40 <ehird> ais523: better fix:
21:57:42 <ehird> echo -- "$1"
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:07 <ehird> oh jeez
21:58:37 * ais523 seems to remember a system (was it SunOS?) on which echo was deprecated in favour of printf
21:58:57 <ehird> hah
21:59:18 <ais523> maybe because it's command-line parameter processing was so inconsistent
21:59:22 <ais523> s/it's/its/
22:00:02 <ehird> ais523: case/esac is portable, rihgt?
22:00:06 <ais523> I think so
22:00:12 <ais523> it's in POSIX sh IIRC
22:00:28 <ais523> after all, nobody would use that syntax otherwise ;-)
22:02:14 <ehird> _hash_"$1"_$(md5 "$2")="$3"
22:02:16 <ehird> that's my 'set'
22:02:16 <ehird> :D
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:37 <ehird> paranoia :|
22:02:42 <ehird> i keep thinking about it in terms of rewrites
22:02:51 <AnMaster> Deewiant, XD
22:02:52 <ais523> because if they contain embedded spaces you're going to be in trouble anyway
22:02:57 <Deewiant> AnMaster: :-)
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:05:10 <ehird> coool
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:21 <AnMaster> wwwwwwwwwwwwwwwwwwwwwwwwtf
22:12:29 <ehird> AnMaster: what
22:12:43 <AnMaster> ehird, I'm adding concurrency to cfunge
22:12:46 <AnMaster> I have some problems
22:13:55 <AnMaster> in unrelated parts
22:13:57 <AnMaster> -_-
22:14:33 <ais523> AnMaster: your problem is clearly insufficient setjmp
22:14:48 <AnMaster> ais523, harhar
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:34 <AnMaster> ie, funge-space
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:06 <AnMaster> ais523, current IP = 0
22:17:14 <AnMaster> I checked that
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:23:21 <ehird> how suprising
22:30:21 <ehird> i'm shocked that nobody else is suprised.
22:30:42 <AnMaster> ehird, huh?
22:31:09 * AnMaster was afk
22:34:03 <ehird> AnMaster: :)
22:34:23 <AnMaster> what about it?
22:34:27 * AnMaster lacks context
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:38 <AnMaster> Deewiant, wow, this is pretty
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:45:02 <AnMaster> ;)
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:26 <AnMaster> :)
22:49:49 <AnMaster> cfunge: /home/arvid/src/cfunge08/src/stack.c:89: StackPush: Assertion `stack != ((void *)0)' failed.
22:49:53 * AnMaster looks
22:50:31 <AnMaster> aha
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:06 <AnMaster> about all perl alike
22:53:12 <Slereah> I'm no racist, but all Malbolge programs look alike to me
22:53:16 <AnMaster> I've seen readable perl
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:53:43 <AnMaster> ehird, to it in python
22:53:48 <AnMaster> or C
22:54:02 <AnMaster> ehird, or do it in perl but use Inline::C
22:54:05 * AnMaster runs
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:40 <AnMaster> ehird, that failed?
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:54:52 <AnMaster> ehird, try twisted?
22:55:02 <ehird> AnMaster: Can I say 'please die in a fire' here? :<
22:55:09 <AnMaster> ehird, I never used it
22:55:12 <ehird> twisted for a web app is the most awful idea i've heard of
22:55:12 <ehird> ever
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:56:38 <AnMaster> ehird, ?
22:56:56 <AnMaster> ehird, look try php or python
22:57:07 <AnMaster> or just use an existing software
22:58:06 <ehird> AnMaster: php heh
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:14 <AnMaster> ehird, "PTTH"4(
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:25 <AnMaster> ais523, SOCK does exist
23:00:40 <AnMaster> but why not an HTTP server framework for befunge?
23:01:10 <ais523> why not indeed
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:01:46 <AnMaster> ais523, what do you think?
23:01:58 <ais523> AnMaster: interesting
23:02:02 <AnMaster> ais523, no idea how
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:49 <ehird> if esoteric
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:18:54 <AnMaster> because XHTML is more strict
23:19:04 <ais523> AnMaster: I actually favour XHTML over HTML
23:19:09 <AnMaster> ais523, good
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:11 <ehird> XHTML 1.1, even.
23:20:17 <AnMaster> ais523, how was http://intercal.freeshell.org/ick-0.27/index.htm generated I wonder
23:20:25 <AnMaster> seems familiar
23:20:29 <AnMaster> INFO style?
23:20:29 <ais523> AnMaster: texinfo
23:20:29 <ehird> AnMaster: texinfo
23:20:32 <AnMaster> aha
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:15 <AnMaster> ais523, weird names yes
23:21:17 <ais523> also, there's some custom hacking of the TOC and some of the headings
23:21:21 <AnMaster> ais523, you made C-INTERCAL?
23:21:26 <ais523> no
23:21:30 <ais523> but I'm the current maintainer
23:21:33 <AnMaster> aha
23:21:43 <AnMaster> ais523, what is the weird filenames for
23:21:45 <AnMaster> I mean, why
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:30 <ais523> CLC-INTERCAL is newer
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:43 <AnMaster> :P
23:24:55 <AnMaster> ais523, not here in this channel?
23:25:01 <ais523> not right now
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:19 <AnMaster> mhm?
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:07 <ehird> hah
23:27:35 <ais523> yes
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> BEGIN {
23:29:52 <ehird> use vars(@EXPORT);
23:29:52 <ehird> @EXPORT = qw(quot);
23:29:52 <ehird> }
23:29:57 <ehird> faaar too verbose :D
23:31:02 <ehird> err
23:31:18 <ehird> add a qw in there
23:50:51 -!- sebbu2 has changed nick to sebbu.
←2008-03-14 2008-03-15 2008-03-16→ ↑2008 ↑all