00:05:18 -!- RedDak has quit (Remote closed the connection).
00:05:27 <lament> damn, the more i look at lisp, the better it seems
00:20:33 <lament> but i'm still pretty sure it sucks :)
00:27:04 -!- timotiis has quit ("leaving").
00:31:38 -!- Tritonio_ has joined.
00:39:35 -!- sebbu has quit ("@+").
00:40:46 -!- BMeph has joined.
01:24:14 -!- olsner has quit ("Leaving").
01:35:41 -!- calamari has joined.
02:24:51 -!- CakeProphet has joined.
02:26:38 <CakeProphet> like, not a tutorial, but something that has a lot of information I can look up quickly.
02:49:33 -!- Corun has quit (Read error: 110 (Connection timed out)).
03:02:57 -!- CakeProphet_ has joined.
03:19:22 -!- CakeProphet has quit (Read error: 110 (Connection timed out)).
03:31:01 -!- CakeProphet_ has quit ("haaaaaaaaaa").
04:02:31 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
04:03:08 -!- GregorR has joined.
04:15:23 * pikhq declares some of his music 'hell for basses'.
04:15:37 <pikhq> The *bass part* is written in the lower end of the treble clef. :(
05:37:26 -!- immibis has joined.
05:38:04 -!- immibis has left (?).
06:18:00 <lament> no bassist is going to like you for that.
06:19:32 <pikhq> lament: It's music that I have to sing.
06:19:41 <pikhq> I fucking hate it.
06:19:55 * pikhq wants to be *below* the bass clef, thanks.
06:20:12 <pikhq> I'll just convince the tenors to sing my part. :p
06:59:01 -!- calamari has quit ("Leaving").
07:14:24 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:26 -!- bsmntbombdood has quit.
09:00:04 -!- bsmntbombdood has joined.
09:27:19 -!- oerjan has joined.
10:11:06 <AnMaster> stack stacks in funge is really complex
10:27:21 <oklopol> pikhq: "your music", assumed you meant a composition of yours, but i now realize that might not be the case
10:27:44 <oklopol> if its not yours that way, i ofc don't care much for the score
10:28:13 <oklopol> although, i guess i still do a bit
10:37:47 <oklopol> guitar pro is one awesome program, it simply cannot play a song correct :D
10:44:20 -!- oklokok has joined.
10:44:36 <oklokok> used my morning well http://www.vjn.fi/oklopol/music/random/riff006.mid
10:45:35 <oklokok> that's just the midi guitar, it' kinda sucky
10:46:04 <faxathisia> It's the sort of similar to the sound as Ooze on megadrive
10:46:18 <oklokok> also, some parts i guess should have some synth, and some parts i haven't really thought through
10:46:47 <oklokok> because it's so fucking slow composing when you listen to it after every fucking note : P
10:47:58 <oklokok> faxathisia: i guess after that reaction i have to link you to some of my musics
10:48:52 <oklokok> http://www.mikseri.net/artists/?id=44508 <<< my old band
10:49:03 <oklokok> http://www.mikseri.net/artists/?id=62623 <<< my other current band
10:49:47 <oklokok> (the other one i don't have anything online for, and it's not really my band)
10:50:26 <oklokok> we have much better and weirder stuff nowadays, but haven't recorded yet
10:51:06 <oklokok> Syleily is not mine, and Wanna feel pain is only mine when the synth solo starts
10:51:20 <oklokok> which i play very badly, i used to suck quite bad
10:57:01 <oklokok> ...in case horses suck at that
10:57:08 <oklokok> not sure, never heard one sing
10:58:19 <oklokok> well, also http://www.vjn.fi/s/black.mp3 and http://www.vjn.fi/oklopol/music/etydes/all-as-midi.rar
10:58:30 <oklokok> listen to some of that if you have time
10:58:52 <oklokok> i can also upload you my hundreds of other gp songs if you want, but i think you're fine with those :P
10:59:35 <oklokok> usually do songs with that, because i tablatures are a lot nicer than the normal score notation
11:00:12 <oklokok> a matrix view is of course the best for composition, and i have some ascii notations i use, but i don't have any program that actually plays those, nowadays
11:00:31 <oklokok> should make one, just so lazy
11:05:15 <oklokok> actually i don't know what the *notation* is called, perhaps pikhq tells me
11:05:34 <oklokok> it's basically "note writing" in finnish
11:06:14 <oklokok> which is a quite idiotic, scores are only good for writing piano sheets, if that
11:06:39 -!- sebbu has joined.
11:11:08 <oklokok> i also have about a hundred riffs as a test of my newest notation, but you'd have to learn that
11:13:26 <oklokok> would be cool if i used even 50% of my time, i'd have enough stuff to fill the screen with links when someone comments my music :-)
11:13:43 <oklokok> unfortunately someone introduced me to the world of tv series
11:39:14 <oklokok> oerjan: verb verbing you verbing motherverber
11:42:57 <oerjan> Why can't pronoun all just verb adverb?
11:44:01 <oklokok> interjection exclamation mark i'm so adjective at pronoun
11:45:53 <oklokok> AnMaster: no need to verb adjective.
11:46:56 <AnMaster> to what? I can't figure out what you mean
11:47:32 <oklokok> oerjan: verb pronoun verb pronoun question mark
11:48:01 * AnMaster goes to verb on his noun interpreter
11:48:16 <oklokok> AnMaster: that might be for the vest.
11:48:35 <AnMaster> "vest"? A kind of clothing right?
11:49:11 <AnMaster> verb verb stackstacks of befunge!
11:49:26 <oklokok> what's adjective about them, really?
11:49:50 * oerjan calls a moratorium on generic grammar terms
11:50:01 <oklokok> how are they complex to do in c?
11:50:09 <AnMaster> can be either conformant funge, or C funge
11:50:28 <oklokok> you make a stack thingie, then make a stack of stacks.
11:50:48 <AnMaster> oklokok, yep, but then there is the complexities of { and } instructions
11:51:07 <AnMaster> with transfer of items in order between stacks and what not
11:51:12 <oklokok> umm, their behavior ais imperatively described there
11:51:21 <oklokok> you just do exactly what it says.
11:51:25 <AnMaster> and it isn't easy to implement
11:51:43 <AnMaster> not the way I made the stack structure
11:52:04 <AnMaster> using the variable sized structure to have an array of pointers to stacks at the end of the stack stack structure
11:52:06 <oklokok> make a function to move a certain amount of shit from the top of a stack to the top of another, and put a boolean flag there to indicate direction
11:52:26 <AnMaster> anyway I think I got it mostly now
11:52:46 <AnMaster> just need to do some magic to find storage offset
11:52:55 <oklokok> i don't know what that feature is, but i do know you don't have to use it, and it's trivial without it :P
11:55:31 <AnMaster> nah, but it means one less pointer redirection
11:56:34 <oklokok> well, if you care about stuff like that
12:00:08 <AnMaster> whoa, circular dependencies in headers sucks
12:00:46 * AnMaster adds a incomplete type to get around it.
12:20:42 <oklokok> Real = { Orig -> { int -> Orig;
12:20:43 <oklokok> + N -> Orig + (int N) } };
12:20:43 <oklokok> ((real 7) + 4) + (1 + (real 3))
12:23:29 <oklokok> 4 + 2.0 = 6, which might confuse some
12:27:47 <oerjan> Destroying mathematics as we know it
12:43:37 <Deewiant> AnMaster: only bases up to 36 are supported, I think it reflects if you give it something like that 473
12:43:57 <AnMaster> BAD: { transfers cells incorrectly
12:43:58 <AnMaster> 10 0 0 Stopping due to fear of corrupt stack stack
12:44:03 <AnMaster> Deewiant, I can't find what I do wrong
12:44:51 <AnMaster> I looked at how you do it, and I debugged output of stack before and after and it looks correct to me
12:44:54 <Deewiant> make a test proggy with just that 123456{ snippet (or whatever Mycology uses) and see the diffs
12:45:06 <Deewiant> maybe the stack stack is messed up
12:45:23 <AnMaster> Deewiant, I can't read mycology, it's too dense :(
12:46:19 <AnMaster> because isn't the value checked before y does any popping and pushing?
12:47:09 <Deewiant> note that values 10-14 are vectors
12:47:40 <Deewiant> yes, so it does y and then takes the 18th cell
12:47:48 <Deewiant> but values 10-14 contain 10 cells in themselves
12:48:03 <AnMaster> 18. size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip)
12:48:04 <AnMaster> Stack sizes are pushed as if they were measured before y began pushing elements onto
12:48:27 <AnMaster> Deewiant, ok that's stupid -_-
12:48:50 <Deewiant> and that's how it has to work in order to work as a pick instruction :-)
12:49:16 <AnMaster> Deewiant, but that breaks adding new pick entries in newer versions of the specs
12:49:37 <Deewiant> no it doesn't, if you add them at the end
12:49:58 <Deewiant> if you add them at the beginning it'd break anyway
12:50:03 <AnMaster> yes, you add them at the end indeed
12:50:10 <AnMaster> but that breaks pick instruction
12:50:18 <AnMaster> I mean, breaks y working as pick
12:50:41 <Deewiant> you have to run y first to get the size of the stack it pushes anyway
12:50:55 <Deewiant> since the length of y isn't predetermined
12:51:02 <Deewiant> consider command line args and envvars
12:51:15 <Deewiant> this is an esoteric language, it's supposed to be silly :-P
12:51:26 * AnMaster suggests a sane esoteric language
12:51:34 <Deewiant> not esoteric then, any more :-)
12:51:49 <Deewiant> btw, the mycology readme has a step-by-step explanation of what should happen with 101-{}
12:51:58 <AnMaster> yes it can be, anything with a 2D IP = esoteric
12:52:00 <Deewiant> maybe that'll help with your { woes
12:52:16 <AnMaster> Deewiant, it fails earlier than that
12:52:35 <AnMaster> BAD: { transfers cells incorrectly
12:52:36 <AnMaster> 10 0 0 Stopping due to fear of corrupt stack stack
12:52:38 <Deewiant> yeah, but if you say you can't see why that fails maybe you can see why that fails
12:52:42 <AnMaster> Deewiant, what does that 10 0 0 mean?
12:52:55 <Deewiant> probably something that shouldn't be there and is printed accidentally
12:53:01 <Deewiant> you know, corrupt stack stack and all :-P
12:53:35 <AnMaster> UNDEF: BASE fingerprint not loaded, won't check I.
12:53:39 <AnMaster> UNDEF: STRN fingerprint not loaded, wo<n't check I.
12:53:58 <AnMaster> are those how they should be output if those fingerprints are missing or?
12:54:18 <Deewiant> yeah, it just says your interpreter doesn't support BASE and STRN
12:54:20 <AnMaster> I mean, It's "I won't check" in English
12:54:26 <AnMaster> and then the < in the second message
12:54:36 <Deewiant> read it as "won't check the instruction 'I'" :-)
12:54:43 <Deewiant> I can't remember what the < is about
12:54:55 <Deewiant> in some interpreters it's output and in others not
12:55:01 <Deewiant> possibly to do with how you implement k
12:55:15 <AnMaster> Deewiant, I do k as you do mostly
12:55:55 <AnMaster> >;#"BAD: { transfers cells incorrectly"an< < < < < <<v
12:55:56 <AnMaster> v780>'_,#! #:<"GOOD: { transfers cells correctly"aw0w5w4w3w2w1<
12:56:05 <AnMaster> that is where the problem happens I guess
12:56:15 <Deewiant> if I replace the ( with r CCBI prints "won't" and not "wo<n't" so I think it's a problem with your interpreter and not mycouser.b98 :-)
12:56:21 <AnMaster> but when I check in gdb my stack looks like that
12:56:45 <Deewiant> find out which w causes the messup
12:56:55 <Deewiant> and then find out why the stack is messed up at that point
12:57:42 <AnMaster> ok, not easy to parse my trace output though
12:59:19 <Deewiant> so what was your stack at that point and why :-)
13:00:20 <AnMaster> 0=5 1=4 2=3 3=2 4=1 5=0 6=0 <-- that is how it looks when { is just done
13:01:00 <AnMaster> The { "Begin Block" instruction pops a cell it calls n, then pushes a new stack on the top of the
13:01:01 <AnMaster> stack stack, transfers n elements from the SOSS to the TOSS, then pushes the storage offset
13:01:01 <AnMaster> as a vector onto the SOSS, then sets the new storage offset to the location to be executed next
13:01:01 <AnMaster> by the IP (storageo f f set ← position + delta). It copies these elements as a block, so order is
13:01:02 <Deewiant> ", then pushes the storage offset as a vector onto the SOSS"
13:03:03 <AnMaster> BAD: { doesn't set storage offset correctly, or p doesn't use it <-- right, time to fix that
13:14:06 <AnMaster> Deewiant, p should push at (offset + requested position) right?
13:15:41 -!- oerjan has quit ("leaving").
13:18:39 <Deewiant> in retrospect, the best way to write Mycology would have been to, write after the Befunge-93 stuff, test {}pg and storage offsets, and then the code could be written modularly
13:19:27 <slereah_> Rampant illetrism sweeping the nation?
13:23:07 <AnMaster> Deewiant, your ccbi binary btw:
13:23:08 <AnMaster> UNDEF: Y says pow(2, -7) is 0.007812 (0.007813)
13:23:19 <Deewiant> AnMaster: that's FPSP probably?
13:23:44 <Deewiant> it's floats, what do you expect :-)
13:24:58 <Deewiant> looks like it's the same on windows btw
13:25:41 <Deewiant> so if that comes out as 0.0078124999999 it'll be 0.007812 which is probably the problem
13:25:54 <Deewiant> or then my CCBI output does truncation and not rounding
13:26:04 <Deewiant> I don't care, the answer is correct enough :-)
13:26:33 <Deewiant> it's not defined anywhere what should be done in that case
13:26:42 <Deewiant> have you looked at the RC/Funge-98 docs? they /suck/
13:27:07 <Deewiant> AnMaster: you complained about having to reverse engineer my code. I had to reverse engineer code that doesn't work. :-)
13:27:34 <Deewiant> eventually I decided to write the tests based on the spec only
13:27:49 <Deewiant> then I'd run RC/Funge there and more often than not it'd fail early
13:27:49 <AnMaster> I still can't get it to think that p does the right thing when it pushes at (offset + requested position)
13:27:56 <AnMaster> so something somewhere is wrong
13:28:24 <AnMaster> the storage offset is correctly set, I verified
13:29:08 <Deewiant> maybe you've got your y and x mixed up at some point
13:29:44 <AnMaster> well the StackPopVector is correct, or the code would fail when mycology tests x hm
13:30:08 <Deewiant> maybe you're adding the wrong storage offsets
13:30:34 <AnMaster> that is how you get the new vector right?
13:31:20 * AnMaster notes ccbi tend to reverse instead, and can't go backwards in one function call :P
13:31:33 <AnMaster> somehow, that feels like a small win there :)
13:31:47 <Deewiant> it's not like it'd be difficult to make a function that does that :-P
13:31:50 <AnMaster> void ipForward(int_fast64_t steps, instructionPointer * ip, fungeSpace *space)
13:31:50 <AnMaster> ip->position.x += ip->delta.x * steps;
13:31:50 <AnMaster> ip->position.y += ip->delta.y * steps;
13:31:51 <AnMaster> fungeSpaceWrapInPlace(space, &ip->position);
13:32:26 <AnMaster> Deewiant, nor is mine in most places
13:32:37 <AnMaster> Deewiant, look, your k is optimized in strange ways!
13:32:39 <Deewiant> in most cases I just went for the easiest-to-write code
13:32:49 <Deewiant> yeah, k was one I prematurely optimized :-)
13:33:04 <Deewiant> so that 9999***k> doesn't loop needlessly
13:33:20 <Deewiant> but I'm off to eat now, have fun with your debugging o)
13:43:16 <AnMaster> Deewiant, btw, on }, where do you get the storage offset from?
13:43:40 <AnMaster> do you always restore the previous offset or?
13:49:40 <Deewiant> corresponding } "End Block" instruction pops a cell off the stack that it calls n, then pops a vector off the SOSS which it assigns to the storage offset
13:50:01 <Deewiant> it's not necessarily the original offset although it usually is
13:55:42 * AnMaster wish mycology code wasn't so dense
13:56:13 <Deewiant> but I'm not going to do that, sorry :-)
13:56:41 <Deewiant> FWIW the code gets better later on, at least in my opinion
13:56:53 <Deewiant> the 'y' stuff is probably worst
13:57:20 <Deewiant> but the fingerprint stuff is almost sane
13:57:51 <Deewiant> there's some intentional obfuscation somewhere, though - just ask if you get totally confused :-)
13:58:04 <Deewiant> after all, it's Befunge, it's not supposed to be easy to read ;-)
13:58:29 <AnMaster> the storage offset is correctly calculated at least
13:59:04 <AnMaster> as in, the right x and y value is stored in ip->storageOffset
13:59:48 <Deewiant> you might want to try something simple like zzzzz{00g,'0,@ which, I think, should print 00
14:00:03 <AnMaster> the "set with offset" wraps things
14:04:59 <AnMaster> Deewiant, can't you get segfaults in D?
14:05:15 <Deewiant> since you usually don't use pointers
14:05:30 <Deewiant> arrays are built-in which helps a lot
14:05:47 <AnMaster> FUNGEDATATYPE entriesCopy[count + 1];
14:06:34 <AnMaster> Deewiant, and memory managment: not an issue, I use boehm-gc
14:07:17 <AnMaster> of course, realloc code to extend/contract stackstack pointer array to stacks is a bit hariy
14:07:30 <AnMaster> since it use the "dynamic arrays at end of struct" thingy
14:07:59 <AnMaster> typedef struct {// Top stack and current stack
14:07:59 <AnMaster> // Array of pointers to stacks
14:08:10 <AnMaster> err, messed up newlines in paste
14:08:40 <Deewiant> oh, you just use it to hold the stack size
14:08:55 <AnMaster> Deewiant, yep, as size and TOSS are the same for stack stack
14:09:04 <AnMaster> I contract the thing when I pop stack stack
14:09:20 <AnMaster> where I keep a size counter and a "top" counter
14:09:30 <AnMaster> and reallocates to add 10 in a bunch if more are needed
14:13:11 <AnMaster> stacks[0] and stacks[2] are valid, but stacks[1] = NULL
14:16:14 <AnMaster> GOOD: { transfers cells correctly
14:16:15 <AnMaster> GOOD: { sets storage offset correctly, and p uses it
14:16:29 * AnMaster can't see where it would do that
14:16:39 <Deewiant> but something tells me "normally" isn't quite right :-P
14:17:39 <AnMaster> aha, missing break in case lol
14:17:52 <AnMaster> so fell through to next, that was @
14:18:30 * AnMaster removes trace output to be able to see what mycology said
14:18:52 <Deewiant> I suggest making that a command-line switch :-)
14:19:11 <AnMaster> Deewiant, yes, right, when I implement proper command line parsing
14:19:28 <AnMaster> GOOD: } transfers cells correctly
14:19:35 <Deewiant> how about right now just test if args[2] is -t or something
14:32:19 -!- RedDak has joined.
14:54:02 <AnMaster> "If n is negative, |n| zeroes are pushed onto the SOSS."
14:54:10 <AnMaster> isn't that a typo for TOSS in that case?
14:54:36 <Deewiant> maybe it is but it says SOSS :-)
14:55:18 <Deewiant> doesn't that match with: "If the SOSS contains k elements, where k is less than n, the k elements are transferred as the top k elements and the remaining bottom (n-k) elements are filled in with zero-value cells."
14:56:43 <AnMaster> is there no matching GOOD for BAD: 101-{} doesn't leave stack top as 0 and next as 1 ?
14:56:53 <AnMaster> at least mine doesn't print anything for that test when I corrected it
14:57:18 <AnMaster> BAD: fedcba0{05-} doesn't leave 15 on stack
14:57:41 <Deewiant> I think I've only seen one other interpreter that does that
14:57:57 <Deewiant> and the top of the stack should be 15 after that, but it isn't
14:58:29 <AnMaster> so my handling of negative counts for } is bad in other words?
14:58:52 <AnMaster> If n is negative, |n| cells are popped off of the (original) SOSS.
14:58:57 <AnMaster> that means they are discarded?
14:59:09 <Deewiant> well that's what it says isn't it :-)
14:59:42 <AnMaster> GOOD: 1y and 5y do not disagree about =
14:59:42 <AnMaster> No reliable cross-platform method of testing: assume = works
14:59:48 <AnMaster> indeed, both says it doesn't exist
15:00:09 * AnMaster thinks that second message is wrong with y says = doesn't exist
15:00:21 <Deewiant> read it as "works as intended"
15:00:38 <AnMaster> Deewiant, btw, could I invent my own = system?
15:00:52 <AnMaster> that is an own operating paradigm?
15:00:54 <Deewiant> not really since there's no standard :-/
15:01:09 <AnMaster> Deewiant, but I could make my own operating paradigm right?
15:01:17 <Deewiant> "an implementation may support one of several standardized ways of interpreting the string, and which routine it uses can be determined by querying y"
15:01:23 <Deewiant> the standardized ways are given
15:01:27 <Deewiant> as long as it's one of them it's okay
15:01:42 <AnMaster> This value is included so the program can have a reasonable idea of what = will do. The
15:01:43 <AnMaster> values shown here are only the most basic set available at the time of publication. See the
15:01:43 <AnMaster> Registry for any late-breaking headway into further Operating Paradigms.
15:01:57 <AnMaster> so that means you could make a new one
15:02:03 <AnMaster> Deewiant, ah, so no libffi then :(
15:02:13 <AnMaster> because that's what I would want to do
15:02:16 <Deewiant> what if your interpreter uses 16 for what you do
15:02:22 <Deewiant> and another interpreter uses 16 for something else
15:02:32 <AnMaster> Deewiant, indeed, so we got to start a new registry
15:02:34 <Deewiant> since there's no central registry, that can't be controlled
15:02:50 <AnMaster> Deewiant, look, I want to use libffi to call C functions using it! :P
15:03:09 <AnMaster> just to be a pain in the **** for everyone else
15:03:21 <Deewiant> "Equivalent to interpretation by a specific shell or program "
15:03:47 <Deewiant> 3 refers to the command-line shell
15:04:14 <AnMaster> no, I'm not likely going to do libffi
15:04:44 <AnMaster> Deewiant, the push on other stack then pop back thing for y = really painful :(
15:05:27 <Deewiant> I just push all the things and then, at the end, check if some need to be popped
15:07:08 <AnMaster> if you got 2y, that means 3y will also end up on stack?
15:07:41 <AnMaster> then you need to shift items if you push onto real stack
15:07:48 <Deewiant> I think what I do is push all, then pop up to 2, remember that cell, pop the rest that were pushed, push the remembered one
15:08:15 <Deewiant> actually it's quite clean in the code
15:08:34 <Deewiant> as far as performance goes, it's not the best option though :-)
15:10:25 <AnMaster> got to love this "mutex" in concurrent befunge:
15:10:26 <AnMaster> <@Zaba> >#vt' 'o'l'l'e'H,,,,,,'>21p@
15:10:27 <AnMaster> <@Zaba> ><'!'d'l'r'o'w,,,,,, ^
15:10:58 <AnMaster> not that I will implement that I think
15:11:23 <Deewiant> you're making this too easy for yourself :-)
15:11:35 <Deewiant> might as well just implement Befunge-93 ;-)
15:11:38 <AnMaster> at least I want to finish everything that is required in funge98 before I start on optional things
15:14:39 <AnMaster> StackStackTransfer(FUNGEDATATYPE count, bool inOrder, fungeStack *TOSS, fungeStack *SOSS) <-- yay, that should be reusable
15:14:59 <AnMaster> Deewiant, btw what data type does ccbi use for the cells?
15:15:22 <AnMaster> hah, mine use 64-bit, and should be easy to make 128-bit
15:15:31 <Deewiant> so it depends on what the library defines that as
15:15:43 <AnMaster> Deewiant, ah mine is int_fast64_t heh
15:15:55 <AnMaster> but easy to change in a header
15:15:57 <Deewiant> AnMaster: so good luck compiling that on 32-bit? :-P
15:16:05 <AnMaster> Deewiant, oh? should work still
15:16:16 <AnMaster> 64-bit values does exist on 32-bit
15:16:38 <Deewiant> good luck /running/ on 32-bit ;-)
15:16:49 <AnMaster> Deewiant, it will run on 32-bit, just slower
15:16:55 <Deewiant> exactly, quite a bit slower :-P
15:17:15 <AnMaster> anyway just open src/global.h and redefine:
15:17:16 <AnMaster> #define FUNGEVECTORTYPE int_fast64_t
15:17:20 <AnMaster> #define FUNGEDATATYPE int_fast64_t
15:17:32 <Deewiant> yeah, just change alias int_fast32_t cell to alias long cell in CCBI, too :-)
15:17:53 <AnMaster> for example I had it as char when I debugged play field loading
15:19:04 <AnMaster> but upper case = defines normally, so changing it would mean a sed if I want to keep good coding style
15:19:34 <AnMaster> Deewiant, btw, following ccbi's style of using weird build systems: I use cmake
15:19:48 <AnMaster> oh and I use POSIX specific stuff
15:19:59 <AnMaster> so it will only run on real OS I bet
15:20:07 <Deewiant> rebuild/DSSS is pretty much standard for D
15:20:20 <AnMaster> D isn't terribly much standard though
15:20:27 <Deewiant> no, but I like using real languages ;-)
15:20:52 <AnMaster> what language is the D compiler itself written in?
15:21:15 <Deewiant> no, more likely that's in C++ as well :-P
15:21:30 <AnMaster> Deewiant, not the gcc one I think?
15:21:31 <Deewiant> but why the POSIX stuff, what do you need it for?
15:21:38 <Deewiant> I'm not sure about GCC actually
15:21:48 <AnMaster> Deewiant, simply because it's standard
15:22:13 <AnMaster> any OS not being POSIX.1-2001 isn't worth coding for IMO :P
15:22:33 <AnMaster> nothing really, just cases of easier to use / better functions
15:22:46 <AnMaster> for example, for some reason random() is often more random than rand()
15:22:53 <Deewiant> well, you do know that Linux and most BSDs aren't fully POSIX-compliant ;-)
15:22:58 <AnMaster> random is POSIX, rand is C89/99
15:23:09 <AnMaster> Deewiant, indeed, I test my app on both freebsd and linux
15:23:24 <Deewiant> I'd just use the mersenne twister if I were you
15:23:26 <AnMaster> Linux tux.lan 2.6.24-gentoo-r2 #1 Mon Feb 11 16:14:47 CET 2008 x86_64 AMD Sempron(tm) Processor 3300+ AuthenticAMD GNU/Linux
15:23:30 <Deewiant> for that example, for instance
15:24:15 <Deewiant> it's just that I don't see the advantage in locking out Windows, I don't think the POSIX-only stuff is /that/ good
15:24:20 <AnMaster> nothing in the funge standard says about what type or random
15:24:34 <Deewiant> nope, you could alias it to > if you want :-P
15:24:42 <Deewiant> although that'd infinite loop in mycorand.bf
15:24:47 <AnMaster> Deewiant, err no, that would be stupid
15:25:00 <AnMaster> Deewiant, no, but it doesn't say it has to be 100% uniform i what I mean
15:25:02 <Deewiant> better, you could iterate over >v<^ always in the same order :-)
15:25:41 <AnMaster> of course with % it may not be random
15:25:42 <Deewiant> why not rand() % 4 and support windows on top, then :-P
15:25:54 <faxathisia> unsigned char rnd = random() % 4; // OPTIMIZED
15:25:55 <AnMaster> Deewiant, oh I do call srandom(time(NULL)) before :P
15:26:11 <AnMaster> faxathisia, hah, but then gcc complains about a cast needed
15:26:13 <Deewiant> seems a bit pointless to lose windows support just for that ;-)
15:28:00 <AnMaster> -std=c99 -Wall -Wextra -Wformat=2 -pedantic -Wstrict-aliasing=2 -Wfloat-equal -Wwrite-strings -Wshadow -Wcast-align -Wcast-qual -Wbad-function-cast -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wundef -Wnested-externs -Wdeclaration-after-statement -Wmissing-include-dirs -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -W
15:29:23 -!- Tritonio_ has quit (Remote closed the connection).
15:31:07 <AnMaster> and stuff like __attribute__((nonnull,warn_unused_result)); (of course I #define away __attribute__ for non-gcc) to make sure I don't forget return values and so on
15:35:48 <AnMaster> BAD: u with a negative count transfers cells incorrectly
15:39:27 <AnMaster> Deewiant, BAD: after y the top cell is greater than 15
15:46:41 -!- RedDak has quit (Remote closed the connection).
15:46:45 <AnMaster> just how I indicate how to follow 08 draft *adds a compatibility mode to be selected with parameter*
15:50:04 <AnMaster> That the command-line arguments were: [ "/" null "jÿ" null ]
15:50:16 * AnMaster pushes two null atm until he fixed some things
15:50:44 <AnMaster> why does it not realize it is just a case of an empty list?
15:50:56 <AnMaster> after all, it is valid to not have command line arguments
15:51:05 <Deewiant> The first string is the name of the Funge source program being run.
15:51:16 <AnMaster> Deewiant, that could be hard coded into an array into the interpreter :P
15:51:18 <Deewiant> so it should always be mycology.b98
15:51:43 <Deewiant> it's not the interpreter name, it's the Funge program name
15:51:55 <AnMaster> Deewiant, or it may be a case of downloading, say a funge that can execute urls
15:52:15 <AnMaster> nothing says the funge program has to be loaded from a file does it?
15:52:41 <Deewiant> well, it talks about "Funge-98 source files" a lot :-)
15:52:45 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php
15:53:08 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php
15:53:09 <Deewiant> I haven't run those on Mycology to see if they work
15:53:22 <AnMaster> Deewiant, mycology would be too large
15:53:41 <Deewiant> you do realize that the first 80x25 chars are valid Befunge-93 :-)
15:53:45 <Deewiant> and test the whole Befunge-93 spec
15:54:06 <Deewiant> and that Befunge-93 interpreters should only load the first 80x25 chars anyway
15:54:09 <AnMaster> but I like to point out those programs load themself into the befunge93 space too
15:54:33 <AnMaster> Deewiant, btw what is this minifunge thing?
15:54:59 <Deewiant> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/dynafing.txt
15:55:15 <Deewiant> unfortunately I implemented RC/Funge-98's version and not that one
15:55:22 <Deewiant> but it shouldn't require many changes
15:55:29 <Deewiant> if someone wants me to implement that one instead :-P
16:02:02 * AnMaster wonders if it would be nice to make HRTI take advantage of HPET on linux when available
16:02:14 <AnMaster> en.wikipedia.org/wiki/High_Precision_Event_Timer in case you don't know what it is
16:02:28 <Deewiant> isn't HPET exposed in any of the standard C lib
16:02:46 <Deewiant> I mean, just in the form of a higher CLK_TCK or whatever
16:02:51 * AnMaster guess doing some stuff on /dev/hpet could work
16:03:09 <AnMaster> as only one of my computers got hpet
16:08:33 * AnMaster writes functions to push and pop C string to/from 0gnirts
16:13:29 -!- RedDak has joined.
16:57:29 -!- RedDak has quit (Remote closed the connection).
17:15:32 <AnMaster> #>:#_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y
17:16:15 <Deewiant> f8+y doesn't work then apparently
17:16:35 <Deewiant> I don't know, what does CCBI output there
17:17:44 <AnMaster> GOOD: : on empty stack makes stack size 2 according to y
17:17:54 <Deewiant> so it's trying to get the stack size
17:18:29 <AnMaster> Deewiant, why don't it print BAD or such then?
17:18:54 <Deewiant> I didn't expect that y would reflect after y having worked all the way up to there :-)
17:19:17 <AnMaster> Deewiant, maybe add that check? :)
17:19:21 <Deewiant> I can't check for reflection every time I try an instruction :-P
17:19:37 <AnMaster> Deewiant, you can, 98 doesn't have a size limit so it's easy
17:19:53 <Deewiant> except that much of the later code uses hard-coded y-coordinates
17:19:58 <Deewiant> so adding lines breaks the whole program
17:20:21 <AnMaster> just let it expand outwards to x?
17:20:24 <Deewiant> hence what I said earlier about testing {}pg first and then using {}
17:20:31 <Deewiant> that doesn't work either due to the tests on # edge jump
17:20:47 <Deewiant> the line there has to be the longest line in the file
17:20:56 <AnMaster> well just make that even longer?
17:20:59 <Deewiant> of course I could just make that one longer
17:21:07 <Deewiant> but then there's also the check for what y pushes for maxX/maxY
17:21:13 <Deewiant> which would also have to be changed
17:21:18 <Deewiant> and possibly something in the fingerprints as well :-P
17:21:49 <Deewiant> it looks like there's plenty of free space there though
17:21:52 <AnMaster> Deewiant, does mycology test nested { and } btw?
17:22:16 <AnMaster> Deewiant, you wrote it! you should know ;P *runs*
17:22:39 <Deewiant> it's over 100 KB of Befunge, I can't be sure :-P
17:23:22 * oklopol wants to write something in befunge
17:24:14 <oklopol> AnMaster: i'm not saying i don't have the skill
17:24:22 <oklopol> i'm saying god i wanna do it
17:25:20 <Deewiant> tested on windows and linux, might work on bsd if you can get it to compile
17:25:34 <AnMaster> oklokok, ccbi is coded in d though
17:25:38 <Deewiant> http://iki.fi/matti.niemenmaa/befunge/ccbi.html
17:25:46 <Deewiant> AnMaster: but fortunately, I provide a linux binary now :-)
17:25:49 <oklopol> i'm using windows then, prolly
17:25:51 <Deewiant> AnMaster: thanks for testing it ;-)
17:25:52 <pikhq> oklopol: RE: your question earlier. . . Think 'Eb above middle C'.
17:26:12 <AnMaster> oklopol, he got a linux binary as well yes
17:26:27 <pikhq> Deewiant: BSD can be binary-compatible with Linux.
17:26:33 <AnMaster> Deewiant, not linked from site though
17:26:59 <AnMaster> Deewiant, then your servers send something bad with cache headers?
17:27:01 <oklopol> pikhq: i can do octave over C
17:27:10 <Deewiant> AnMaster: or you don't see it. :-P
17:27:10 <oklopol> although i'm not sure what question you were answering :P
17:27:16 <Deewiant> AnMaster: I don't know, they're school servers
17:27:47 <oklopol> and octave below G below middle C
17:27:51 <AnMaster> Deewiant, the "befunge98 SVN r11" linked from your site, link is broken
17:28:01 <AnMaster> Deewiant, on test results page
17:28:10 <AnMaster> maybe do a "local source" thing like for rcfunge?
17:28:12 <oklopol> AnMaster: i prefer my windows machine
17:28:18 <Deewiant> it seems he's redesigned his site
17:28:25 <AnMaster> oklopol, sure, just install linux on it
17:28:43 <Deewiant> AnMaster: the only difference is a slash at the end >_<
17:28:44 <AnMaster> oklokok, to get a real OS I mean
17:28:58 <pikhq> oklopol: I ave a *low* range, not a high range. ;)
17:29:04 <pikhq> (I'm in high school)
17:29:06 <Deewiant> oklopol: design and testing is done on Windows XP, so it's more likely to work there anyway :-)
17:29:50 <AnMaster> oklokok, in the future compiling cfunge may be a simpler choice :)
17:30:22 <oklopol> pikhq: how low do you get?
17:30:29 -!- timotiis has joined.
17:30:45 <AnMaster> oklokok, cfunge can be set to use 64-bit stuff easily, in fact it is optimized for 64-bit ABI (I've read AMD64 ABI specs, so I optimize parameter order to pass as much as possible in the registers!)
17:30:51 <Deewiant> AnMaster: want to try iki.fi/deewiant/mycology.b98, it should have a test for that f8+y now
17:31:12 <AnMaster> Deewiant, I fixed my y for that, so can't test that
17:31:22 <pikhq> oklopol: At *least* to low C. . .
17:31:37 <oklopol> what are the names of the octaves?
17:31:38 <pikhq> C below bass clef.
17:31:53 <pikhq> I might have screwed that up.
17:31:59 * pikhq imagines scale, labelling notes. . .
17:32:13 <oklopol> like, two octaves down from that
17:32:46 <oklopol> i can do F quite easily too, but i'm a tenor really
17:33:03 <oklopol> as i'm not really a singer, i don't have a clear range like that
17:33:26 <oklopol> what are the ranges officially?
17:34:58 <AnMaster> Deewiant, anyway should nf8+y return 0 or 1?
17:35:02 <pikhq> Ah. The note I'm thinking of is called 'E2'. E below bass clef.
17:35:11 <pikhq> http://www.library.yale.edu/cataloging/music/vocalrg.htm
17:35:55 <AnMaster> BAD: \ on empty stack doesn't make stack size 2, says y
17:36:09 <pikhq> That range chart is a bit bad, though. . .I know all those parts have wider ranges.
17:36:16 <pikhq> Granted, not *much* wider.
17:36:21 <Deewiant> AnMaster: well, according to a Befunge program, it doesn't. :-)
17:36:35 <AnMaster> Deewiant, also BAD: i not implemented according to 1y - cannot test it <-- why is that "BAD"?
17:36:41 <AnMaster> it is fully valid to not have i and o
17:37:00 <AnMaster> Deewiant, the standard says so
17:37:14 <AnMaster> # Bit 1 (0x02): high if i is implemented.
17:37:14 <AnMaster> # Bit 2 (0x04): high if o is implemented.
17:37:19 <oklopol> i can do all those, but i think i prefer the highest
17:37:35 <pikhq> oklopol: My *comfortable* range is the bass clef. ;)
17:37:36 <AnMaster> "Also, any of the instructions t (concurrent execution,) = (execute,) i (input-file,) and o (output-file) may be unavailable in different interpreters for many reasons, and are routinely bound to (i.e. act just like) r as well. However, they may also act like r when they fail to execute. To test if they are actually supported, execute 1y and examine the cell it produces."
17:37:39 <Deewiant> AnMaster: but that doesn't mean that a fully conforming implementation doesn't have to implement them :-)
17:38:02 <AnMaster> so yes it is fully valid to not have those
17:38:14 <Deewiant> Did I say anything about '='? Was that UNDEF or nothing?
17:38:49 <AnMaster> BAD: i not implemented according to 1y - cannot test it
17:38:50 <AnMaster> BAD: can't test o without working i, might overwrite some existing file
17:39:03 <AnMaster> Deewiant, your test suite isn't conformant! :P:P
17:39:08 <Deewiant> hm, the second is kind of tricky
17:39:12 <Deewiant> AnMaster: I never claimed it was :-P
17:39:29 <oklopol> pikhq: you didn't answer the question of wether it was a composition of yours
17:39:32 <AnMaster> Deewiant, anyway, I don't implement either i or o
17:40:28 <AnMaster> Deewiant, so far: http://rafb.net/p/AA3KEd72.html
17:42:49 <pikhq> Just something I have to perform for my (fairly good) high school choir.
17:43:02 * pikhq damns the fourth movement of the Easter Cantata to hell.
17:45:13 <Deewiant> should say UNDEF at those two places now
17:46:41 <Deewiant> some of the programs are outdated, too
17:47:01 <Deewiant> it's mostly "on hold" for now, I'll update it all later
17:47:11 <AnMaster> Deewiant, add a change log entry on that page for your change?
17:47:33 <AnMaster> Deewiant, http://users.tkk.fi/~mniemenm/files/befunge/mycology/mycology.zip is the right thing to download I assume?
17:48:43 <Deewiant> to make sure people support it :-)
17:58:47 <AnMaster> Deewiant, what about systems with multiple chars for path separator? iirc such systems existed that had two chars
17:58:58 <AnMaster> but befunge won't work on those
17:59:00 <Deewiant> AnMaster: the standard specifies it's one cell
17:59:13 <AnMaster> Deewiant, so befunge breaks on such systems
17:59:21 <Deewiant> on such a system, the interpreter could push a reserved value
17:59:28 <Deewiant> which it translates to the path sep on output
18:12:11 <Deewiant> like, say, it could say that cell sizes are 7 bytes
18:12:28 <Deewiant> and then reserve all higher values for stuff like that
18:12:38 <AnMaster> Deewiant, what file in CCBI does wrapping?
18:15:26 <lament> for lisp or in general?
18:16:09 <lament> object system for common lisp
18:16:14 <lament> faxathisia: i just don't like (method object)
18:16:49 <lament> because it's namespace clutter
18:17:08 <lament> no, that's still namespace clutter
18:17:15 <lament> object.method() is not namespace clutter
18:17:23 <lament> there's no "method" in the global namespace
18:17:41 <lament> i understand the issues with multiple dispatch
18:18:47 <lament> that doesn't really help, you just clutter the package namespace instead of the global one
18:19:06 <lament> as opposed to not cluttering anything
18:19:12 <oklokok> what way do people usually do functions in befunge?
18:19:17 <faxathisia> I don't really know why you are saying 'clutter' when actually you are defining a method
18:19:53 <Deewiant> AnMaster: :-D, not everything 4-char is a Befunge fingerprint ;-)
18:19:54 <lament> faxathisia: because in clos, this method is in the global namespace, and in python/c/c++/java/c# it's local _to the object_
18:20:17 <lament> which is where it belongs
18:20:39 <lament> it's not just different, it's worse
18:20:42 <faxathisia> the change is better in this case, especially reading something like AMOP
18:20:46 <Deewiant> oklokok: they usually don't, I guess
18:20:52 <oklokok> pretty simple to do for n-dimensions with (n-1) dimensions used in a function
18:20:58 <oklokok> so that you use one direction as a mapping level
18:21:15 <oklokok> like, you have every second level be one that just redirects the turtle in the right slow
18:21:26 <oklokok> based on function coordinates pushed on the stack
18:21:28 <Deewiant> oklokok: one way is to reserve one line/column of Funge-Space for a return address stack
18:21:31 <lament> faxathisia: good management of namespaces is one of the nicest things a language can do for you
18:21:47 <lament> when you have 20000 symbols in your namespace, it's hard to keep track of stuff
18:22:00 <AnMaster> <Deewiant> AnMaster: :-D, not everything 4-char is a Befunge fingerprint ;-)
18:22:15 <oklokok> i'm fairly sure i can make callable functions with something like this, although you need to push a lot of stuff when you call a function
18:22:42 <oklokok> Deewiant: that sounds slow
18:22:50 <AnMaster> UNDEF: 1k # does nothing at k or jumps at k and doesn't move past #
18:22:53 <Deewiant> oklokok: Befunge isn't fast :-P
18:23:07 <AnMaster> Deewiant, can you explain that one to me, and what way is "best"
18:23:38 <oklokok> Deewiant: no reason to make slow programs, quite the opposite!
18:23:43 <Deewiant> AnMaster: this is the thing that was discussed between myself and, IIRC, Lee Houghton
18:23:53 <Deewiant> AnMaster: I changed it in february to be UNDEF
18:24:22 <Deewiant> AnMaster: in short, k followed by a space is very poorly specified
18:24:33 <Deewiant> AnMaster: read the spec however you will
18:24:38 <AnMaster> yes indeed, it should not execute the space
18:24:56 <Deewiant> but after that, there are at least 3 options
18:25:07 <Deewiant> 2) ignore it and do nothing for 1 tick
18:25:19 <Deewiant> 3) find the instruction after the space and exec that
18:25:41 <AnMaster> Deewiant, what one would you recommend?
18:26:03 <Deewiant> up to you really, based on the spec all can be justified
18:26:26 <Deewiant> "1k # does nothing at k" means 2
18:26:37 <Deewiant> "jumps at k and doesn't move past #" means that k doesn't move past the instruction it executes
18:26:37 <AnMaster> Deewiant, so it ignores the #?
18:26:46 <Deewiant> no, it means it ignores the space
18:26:51 <Deewiant> and then moves onto the # on the next tick
18:27:25 -!- jix has joined.
18:27:29 <AnMaster> err how can you know about tick for non-concurrent funge?
18:27:30 <Deewiant> or, in that latter case, that it executes # at k
18:27:41 <Deewiant> well for non-concurrent funge it doesn't make a difference
18:27:58 <Deewiant> I'm just saying "next tick" to clarify that it happens sequentially like that :-)
18:28:03 <AnMaster> Deewiant, my k function just calls return on space
18:28:13 <AnMaster> and reflects on 1) ", ; and nested k
18:28:26 <AnMaster> err not the , instruction that is
18:28:43 <AnMaster> Deewiant, because standard says " isn't allowed in k
18:29:09 <AnMaster> "The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;)"
18:29:43 <Deewiant> The instruction " "Toggle Stringmode" toggles a special mode
18:29:47 <AnMaster> Deewiant, so what should 2k" do?
18:30:20 <AnMaster> Deewiant, turn string mode on that is
18:30:23 <Deewiant> the only two markers are space and ;
18:30:40 <Deewiant> I'm sure I could find a use for it if I try hard enough :-)
18:30:41 <AnMaster> Deewiant, k" doesn't make any sense :(
18:30:56 <Deewiant> say you've got two-dimensional code
18:31:01 <Deewiant> you need to skip over some code
18:31:08 <Deewiant> you've got semicolons in the middle so you can't use ;
18:31:28 <Deewiant> you're trying to move east and the code at that point looks like k"asdf
18:31:37 <Deewiant> you don't have enough room to turn to the east
18:31:51 <Deewiant> before hitting that k, that is
18:31:58 <Deewiant> so you put 1 on the stack and turn right
18:32:09 <Deewiant> that's not what befunge is about :-P
18:32:31 <AnMaster> Deewiant, and you get a lot of crap on the stack right?
18:32:35 -!- ais523 has joined.
18:33:01 <Deewiant> or ask y for the current stack size and then use k$
18:33:01 <AnMaster> Deewiant, I would relocate the code to fit in a j instruction if needed
18:33:39 <Deewiant> if you can relocate like that, might as well not use j at all :-)
18:34:19 <Deewiant> but my point is, there can be a use for it
18:34:19 <AnMaster> I always write PIC code in befunge :P
18:34:22 <Deewiant> it's not /completely/ pointless
18:34:36 <Deewiant> to me that's somewhat self-defeating, might as well use brainfuck or whatever :-)
18:35:16 * AnMaster ponders a befungelint until he realizes it would be impossible to find what direction you enter a instruction without running it and seeing what happens in some cases
18:35:52 <AnMaster> Deewiant, anyway nasty thing that you check if ( that reflects pops things :P
18:36:05 * AnMaster could have managed further without that check
18:36:25 <Deewiant> an easy way to implement ( is just to make it pop a value then pop that many cells
18:36:52 <Deewiant> but you do realize that if you're that far you've done pretty much everything else :-)
18:36:55 <AnMaster> wait, so ( isn't popping a 0gnirts?
18:37:10 <AnMaster> Deewiant, well my y is still seriously broken
18:37:48 <AnMaster> http://rafb.net/p/OqbNQJ59.html
18:38:17 <AnMaster> also, my fungespace field is a mess, until I replace it with a sparse array
18:38:31 <AnMaster> a mess of 800x2500 cells heh ;P
18:38:56 <AnMaster> just to do some things for now until I wait for some idea for sparse array
18:39:13 <AnMaster> anyway the interface for fungespace is clean
18:39:13 <Deewiant> Befunge98 used an octree I think
18:39:19 <AnMaster> so easy to replace with something else
18:39:46 <AnMaster> Deewiant, look, I'm in what equals last year of high school, I don't know the computer science stuff yet! tell me what a octree is :)
18:40:14 <Deewiant> when I started with CCBI I was, too :-)
18:40:51 <Deewiant> can't you guess from the name - octree i.e. octal tree i.e. a tree where each node has eight children
18:41:10 <Deewiant> so basically, each funge-space cell has pointers to each immediate neighbour
18:42:05 <AnMaster> Deewiant, must be slow to traverse if you want to not just go to next cell
18:42:17 <AnMaster> but say, get cell at 0,5 while you are at 374,57
18:42:30 <AnMaster> Deewiant, how does ccbi do it?
18:42:37 <Deewiant> AnMaster: D has built-in hash tables :-)
18:42:53 <Deewiant> AnMaster: cell[cellidx][cellidx] space; or something
18:43:08 <AnMaster> well bash got sparse arrays hm
18:43:31 <AnMaster> so no point in looking at bash source
18:43:55 <Deewiant> don't know what but there're bound to be some :-)
18:44:46 <AnMaster> Deewiant, I found some for floating point, some with bad license, some that was just 1D arrays and some that lacked any comments in code and said "buy this book to get documentation"
18:45:07 <Deewiant> http://www.google.com/search?q=hash%20table%20library
18:45:22 <AnMaster> Deewiant, for C++ there are plenty, but not for C
18:45:22 <Deewiant> looks like a decent amount of results :-)
18:45:53 <Deewiant> the one referenced on the wikipedia page is also for C
18:46:09 <AnMaster> I looked at the ones listed there
18:46:44 <Deewiant> you have two options basically
18:46:53 <Deewiant> 1) what I do, have a hash table containing hash tables
18:47:15 <Deewiant> 2) use, as the key, something which contains 2 integers
18:47:40 <Deewiant> either a struct or just a 128-bit integer with the higher bits as the y-coordinate and the lower as the x-coordinate or whatever
18:47:59 <AnMaster> ok, that makes "SunriseDD" look good, assuming license works with GPL3, because it works with boehm-gc
18:51:02 <Deewiant> most use BEF or something instead of FUN
18:51:50 <AnMaster> Deewiant, does handprint have to be 4 chars?
18:52:08 <Deewiant> in your case it could be up to 8 chars
18:52:46 <Deewiant> in that case it could be anything
18:53:15 <Deewiant> because it doesn't matter whether other interpreters can represent it
18:53:45 <AnMaster> Deewiant, does mycology only test befunge or trefunge too?
18:53:59 <Deewiant> would be really hard to make it work for both befunge and trefunge
18:54:00 <AnMaster> and does it handle running under trefunges gracefully
18:54:08 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:54:17 <AnMaster> Deewiant, it should check size of vectors :)
18:54:32 <AnMaster> because if it does that, it can run under any funge > 2
18:54:38 <AnMaster> Deewiant, well I mean for funge98
18:54:45 <Deewiant> it'd have to be done for funge93 too
18:55:41 <Deewiant> but I guess you're right in that way, -93 didn't specify anything other than 2D
18:56:05 <Deewiant> but still, it'd be tricky for funge98 as well
18:56:14 <Deewiant> since it'd have to be done /every time/ a vector is pushed/popped
18:56:27 <Deewiant> unless you mean just branching and saying "not befunge" the first time
18:56:48 <AnMaster> you check it once, then do some self modifcation
18:56:56 <AnMaster> to change all p/g instructions
18:57:07 <Deewiant> there are a lot more instructions than just p and g that use vectors :-P
18:57:30 <Deewiant> once again, since you can't tell what direction an instruction is entered from
18:58:05 <AnMaster> you do y once, to find out whatfunge it is
18:58:15 <Deewiant> how would you programmatically modify anything that uses y to deal with arbitrary-sized vectors
18:58:20 <Deewiant> since the code would be very spread out
18:58:29 <AnMaster> then you go into self modification mode, and add the needed code around each place
18:58:39 <AnMaster> to change the mycology program itself
18:58:41 <Deewiant> how would you find 'the place'
18:58:56 <AnMaster> Deewiant, store it as incomplete vectors?
18:59:12 <AnMaster> and then add the extra 0 needed :)
18:59:21 <Deewiant> how would you store it like that
18:59:44 -!- slereah__ has joined.
18:59:46 <Deewiant> modify that to work under a dimensionality given on top of the stack :-)
18:59:51 <AnMaster> yes then you store say 53 or wherever it is at
19:00:25 <Deewiant> for every use of vectors, store the position somewhere? :-D
19:00:44 <AnMaster> Deewiant, yep, and then once you find out the dimension count, change those places
19:01:02 <AnMaster> pad the vectors to p that change them with 0
19:01:22 <Deewiant> it'd probably be easier to check the dimensionality separately at each place :-D
19:01:22 <AnMaster> Deewiant, look, it isn't impossible
19:01:32 <Deewiant> it's impossible programmatically
19:01:40 <Deewiant> you need to change the original code beforehand
19:01:53 <Deewiant> yes, because you need to store all those places
19:01:56 <AnMaster> just leave some spaces around that you can fill out
19:02:15 <AnMaster> to support a fixed set of n dimensions
19:02:55 <Deewiant> so first of all that limits you to a static number of dimensions
19:03:08 <Deewiant> and second, that's changing the original code
19:03:25 <AnMaster> simple you told someone here yourself how to
19:04:02 <Deewiant> there are instructions that do X, then pop a vector, then do Y
19:04:20 <Deewiant> you'd need a subroutine for each such instruction
19:04:50 <AnMaster> that you can use for p/g/whatever
19:05:21 <Deewiant> but still, this is all changing the original source
19:05:25 <AnMaster> Deewiant, also vector isn't hard, in that case, all you need is 0 in the extra dimensions right?
19:05:31 <Deewiant> what I mean is that you can't tractably do the following:
19:05:35 <AnMaster> so if stack is empty after vector
19:05:55 <Deewiant> write befunge code that loads mycology.b98 and modifies each vector use to work for any number of dimensions
19:06:13 <AnMaster> Deewiant, no I didn't say that
19:07:19 <Deewiant> that's what I was thinking when I said impossible
19:07:31 <Deewiant> of course, if you can rewrite the whole code, it's possible
19:07:54 <Deewiant> it's much easier for the interpreter to allow specifying dimensionality
19:08:06 <Deewiant> since nobody's going to write a Funge interpreter which doesn't execute Befunge ;-)
19:08:41 <AnMaster> Deewiant, err what about unefunge?
19:09:37 <AnMaster> also what about "extra dimensions on demand" style funge
19:10:21 <ais523> Deewiant: aren't all Befunge programs also legal Trefunge programs?
19:10:32 <ais523> (although they'll get the number of elements in a vector wrong)
19:10:35 <AnMaster> ais523, nop, because of vector size
19:10:56 <Deewiant> that should put 1 at the position (0,2)
19:11:10 <Deewiant> in trefunge, it'd put whatever was on the stack beforehand at the position (1,0,2)
19:11:35 <AnMaster> ais523, Deewiant: still legal, just won't do the same
19:11:36 <ais523> clearly, dimension-independent vectors are needed
19:11:37 <Deewiant> AnMaster: yes, of course. Always assume Befunge unless I say otherwise :-)
19:11:42 <ais523> so that we can have Hilbert-space-funge
19:11:56 <ais523> AnMaster: infinitely many dimensions
19:12:06 <Deewiant> AnMaster: university stuff ;-)
19:12:07 <AnMaster> ais523, yes, but how do you indicate end of vector
19:12:16 <ais523> only finitely many of which are allowed to be anything other than 0, so that it's possible to store coordinates in finite size
19:12:35 <AnMaster> Deewiant, first in vector: size of vector
19:13:10 <AnMaster> Deewiant, now that would need some substantial redesigning or a fingerprint of some kind
19:14:04 <ais523> AnMaster: you can specify vectors by giving a number of coordinates and listing the first few
19:14:16 <ais523> because as only finitely many can be non-zero, there must be some highest non-zero coordinate
19:14:27 <Deewiant> AnMaster: INDV/PNTR supports arbitrary-dimensional vectors
19:14:42 <Deewiant> at least some fingerprint did.
19:14:57 <ais523> it would be easy enough to have a fingerprint that supports G and P as arbitrary-dimensional g and p
19:14:59 <Deewiant> not in this way, I don't think, but in some way.
19:15:33 <ais523> does y return any vectors? I can't remember offhand
19:15:33 <AnMaster> or you couldn't jump into those dimensions
19:15:38 <Deewiant> oklokok: you were asking about functions: there's the SUBR fingerprint
19:16:11 <AnMaster> Deewiant, hm fingerprints got to fit in a cell?
19:16:45 <AnMaster> can I make fingerprints that would only work on 64-bit funges is the question
19:16:50 <Deewiant> AnMaster: JSTR is the fingerprint I was thinking of
19:17:10 <AnMaster> Deewiant, modified rcfunge right?
19:17:22 <AnMaster> btw, the rcfunge with SGNL didn't compile
19:17:46 <Deewiant> like said, POSIX is a bad thing ;-)
19:18:00 <Deewiant> I'm on cygwin so I think I removed SGNL and WIND
19:18:10 <Deewiant> or rather, I tested it on cygwin
19:18:13 <AnMaster> Deewiant, anyway WIND is just a crappy idea
19:18:29 <Deewiant> I agree, which is why I didn't implement it :-)
19:18:48 <Deewiant> I think using Funge for GUIs is just worthless :-P
19:18:52 <AnMaster> because those two would fit into 4 chars
19:19:03 <Deewiant> AnMaster: and yes, a fingerprint has to fit in a cell
19:19:11 <AnMaster> Deewiant, according to that principle, funge is worthless
19:19:15 <ais523> Deewiant: are you aware of Deltaplex
19:19:36 <ais523> it's a fungeoid designed for GUIs, graphics, etc.
19:19:41 <Deewiant> AnMaster: no, I just think GUI programming isn't Funge's forté ;-)
19:19:46 <ais523> it even has 3-D graphics commands and mouse support built in
19:19:50 <Deewiant> AnMaster: http://www.esolangs.org/wiki/Deltaplex
19:20:12 <AnMaster> Deewiant, then you should drop TURT too :P
19:20:14 * ais523 has the Esolang Firefox search widget
19:20:30 <Deewiant> AnMaster: nah, TURT isn't for GUIs, it's for drawing pictures
19:20:33 <AnMaster> drawing pictures isn't Funge's forté
19:20:53 <AnMaster> Deewiant, tell me what is Funge's forté?
19:21:20 <Deewiant> it is an /esoteric/ language after all
19:22:13 * ais523 was under the impression that Befunge was originally invented to be hard to compile
19:22:45 <AnMaster> I wouldn't even try to, even without anything like p
19:22:54 <ais523> it's probably harder to compile than Unlambda, which is itself traditionally hard to compile
19:22:55 <Deewiant> essentially impossible to compile for modern arches, unless you count embedding the interpreter into the executable
19:23:03 <Deewiant> since it relies on self-modifying code so much
19:23:09 <AnMaster> Deewiant, you know W^X/NX/PaX/misc/other/names
19:23:20 * ais523 is working on a language that Unlambda compiles to, and that can be compiled to C
19:23:31 <Deewiant> AnMaster: the data execution denial bit or whatever?
19:23:38 <AnMaster> No Execute thing, either pages are write or execute, but not both at same time indeed
19:23:44 <AnMaster> well that would break for funges
19:24:04 <Deewiant> yeah, that effectively disallows all self-modifying code I believe
19:24:15 <AnMaster> Deewiant, well JITs does work around it
19:24:54 * AnMaster ponders NX bit for funge, per-cell
19:25:12 <Deewiant> best make it possible to set an area in one instruction then
19:25:53 <AnMaster> also, following style of how hardware NX works, it shouldn't just reflect, but instead terminate current IP
19:26:13 <Deewiant> it's to protect against bugs, after all
19:26:51 <Deewiant> so you'd set the NX bit on code after executing it once, and then if it ever goes there again it'll fail gracefully
19:27:24 <Deewiant> you can use it for scratch space
19:27:53 <Deewiant> ais523: http://en.wikipedia.org/wiki/NX_bit
19:28:16 <AnMaster> Deewiant, we need a NoRead bit too of course
19:28:33 <ais523> INTERCAL has a setting that can be placed on a command to prevent it running more than once
19:28:35 <AnMaster> but I'm sure someone could make one
19:28:39 <ais523> (it becomes a NOP after it runs, but can be reset)
19:28:59 <AnMaster> Deewiant, also, what about vectored IO for funge? :D
19:29:04 <ais523> it's used for multithreading synchronisation, and also a convenient way to write an if statement
19:29:08 <Deewiant> AnMaster: a fingerprint that sets a mode, so that whenever an instruction is executed it becomes the given instruction
19:29:17 <Deewiant> like zM - after that, all executed instructions become zs after executed
19:29:38 <ais523> you'll end up inventing Malbolge at that rate
19:30:09 <AnMaster> anyone up for the task of writing a malbolge interpreter in befunge?
19:30:46 <Deewiant> how about a befunge/malbolge quine
19:31:10 <AnMaster> Deewiant, not going to try that
19:31:23 <AnMaster> writing a malbolge interpreter however, isn't as hard
19:31:36 <AnMaster> ... as writing any program in malbolge
19:31:37 <ais523> malbolge interps are quite easy, normally
19:31:38 <Deewiant> the point about malbolge isn't to write interpreters, it's to try and write programs
19:31:51 <AnMaster> Deewiant, it is about saneness
19:31:55 <ais523> although I think it might be impossible to write one in Befunge-93 without some sort of extra storage
19:31:58 <AnMaster> I'm not going to write in malbolge
19:32:25 <ais523> maybe someone should invent a 2D version of malbolge
19:32:36 <ais523> that combines the worst aspects of malbolge and befunge
19:32:40 <AnMaster> you can load files into befunge98
19:33:01 * ais523 agrees with Deewiant about -93's lack of storage, or indeed, TCness
19:33:01 <Deewiant> AnMaster: as he said, Befunge-93
19:33:28 <AnMaster> (not that I'm claiming to be sane myself in any way!)
19:33:34 <ais523> AnMaster: any Befunge-98 implementation should easily be able to fit 59049 10-trit words into the playfield memory
19:33:51 <Deewiant> yes, 'should'. Might not, though. :-)
19:34:08 <Deewiant> case in point: a few interpreters crashed on loading mycology
19:34:11 <ais523> and Malbolge itself is basically an evilly twisted version of assembler
19:34:37 <Deewiant> AnMaster: can't remember... befunge98 at least
19:34:39 <ais523> Deewiant: interfunge does that, but to be fair it's designed as a Befunge-93 implementation and doesn't like strings longer than 80 characters on the input
19:35:04 <AnMaster> ais523, it should discard the extra data
19:35:10 <Deewiant> AnMaster: basically here was a bug in his octree code and he 'fixed' it by enlarging the default size :-)
19:35:23 <ais523> AnMaster: CLC-INTERCAL requires you to know the length of a string before you can input it
19:35:43 <AnMaster> ais523, then you can't write a conforming interpreter in that language
19:35:53 <ais523> although interfunge is written in C-INTERCAL and therefore should be able to handle line-ends with extra code
19:36:12 <ais523> you also need to type two newlines at EOF because INTERCAL can't detect an EOF; it errors out instead
19:36:38 <AnMaster> ais523, well you would need to pre-process your code then
19:36:39 <ais523> although I have cunning plans to get around that which involve multithreading
19:36:59 <AnMaster> look, intercal is even more insane than befunge
19:37:10 <ais523> Befunge always struck me as relatively sane
19:37:18 <ais523> but then I have a nonstandard set of things to compare it to
19:37:46 <AnMaster> btw didn't someone from this channel prove that something was turing complete and win some kind of price for it?
19:37:54 <AnMaster> must have been a few months ago
19:38:29 <AnMaster> I looked at the proof pdf or whatever it was, and didn't understand it
19:38:38 <ais523> there isn't anything very difficult in there
19:38:42 <ais523> it just goes on and on and on
19:38:52 <ais523> that a particular Turing machine was Turing-complete
19:39:05 <ais523> although that comes to less in pounds
19:39:13 <AnMaster> that is quite a lot I think *coverts to SEK*
19:39:14 <Deewiant> ais523: is this on the 'Net somewhere?
19:39:23 <ais523> http://www.wolframprize.org/
19:39:32 <ais523> faxathisia: put it in the bank
19:40:14 <ais523> although I used a small amount of it to buy this laptop
19:40:16 <AnMaster> 25 000 U.S. dollars = 152 887.432 Swedish kronor
19:40:45 <ais523> or, in my case, just about cancel out my student loan
19:40:55 <Deewiant> of course, the dollar was much more valuable 6 months ago :-)
19:41:20 <Deewiant> or rather, good luck that he got the money then and not now
19:41:30 <Deewiant> assuming he did get the money back then, and not now :-P
19:42:19 <ais523> Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time
19:42:48 <ais523> it wasn't very efficient
19:42:52 <AnMaster> I'm sure mine isn't that effective
19:42:52 <Deewiant> I actually thought about that competition when I first saw it, but then I figured it'd be too tedious :-)
19:42:55 <ais523> at least not the way I programmed it
19:43:15 <Deewiant> probably wouldn't have bothered to finish it if I did start it
19:43:36 <ais523> AnMaster: the input program is ridiculously long and repetitive
19:43:37 <Deewiant> AnMaster: he's talking about wolfram's turing machine
19:43:53 <AnMaster> <ais523> Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time
19:43:53 <ais523> (in fact, infinitely long, but finitely many characters can run a program for any finite time)
19:44:10 <Deewiant> ais523: yes, where "some turing machine" is wolfram's 2,3 turing machine :-)
19:44:45 <AnMaster> ais523, wouldn't emulating P'' be the best option?
19:44:50 <Deewiant> ais523: but wasn't there something about the proof being flawed?
19:44:57 <ais523> AnMaster: I emulated cyclic tag systems
19:45:10 <ais523> and as for the argument about the proof, the original concern was based on a misconception
19:45:30 <ais523> although new concerns emerged as a result which basically demonstrated that nobody is entirely sure exactly what Turing-completeness is anyway
19:45:47 <AnMaster> ais523, err, indeed I'm not sure of that
19:45:55 <ais523> and although my proof is correct, it lead to an argument about whether what it demonstrated was useful or not
19:46:11 <AnMaster> ais523, as long as you got the money! ;)
19:46:12 <ais523> as in, whether the definition of TCness I used was appropriate and/or interesting
19:46:33 <ais523> but the argument died down suddenly in the middle when the list moderator went on holiday, and never resumed
19:46:45 <ais523> (that is, the argument, not the moderator)
19:46:58 <AnMaster> ais523, so well was it useful or not?
19:47:47 <ais523> anyone who actually followed through the entire proof - that is, me and at least one of the judges, and possibly other people - realises that I emulate all features of the cyclic tag system in the original Turing machine
19:47:57 <ais523> so it's definitely a valid emulation
19:48:10 <ais523> however, most mathematicians prefer to take a black-box approach to Turing-completeness
19:48:21 <ais523> which means that you need to be very careful with definitions
19:48:30 <ais523> and my proof hit the gray area that nobody was sure about
19:48:39 <ais523> in terms of a black-box approach
19:50:30 <AnMaster> what does black box mean in this case
19:50:54 <ais523> that you deduce whether something is TC by applying certain tests to an emulation
19:50:58 <ais523> rather than seeing how the emulation works
19:51:31 <ais523> I don't really aprove of the approach myself, but mathematicians like it because the other method is often hard to define rigorously
19:52:26 <AnMaster> Deewiant, wtf is the point of the fingerprint TOYS
19:52:44 <Deewiant> AnMaster: like it says, it's toys - random stuff
19:52:55 <Deewiant> btw, I'll take this moment to ask
19:52:59 <AnMaster> and most pointless, and with silly names
19:53:05 <ais523> (incidentally, a number of other esolangs came out of the proof. 1cnis came out indirectly, and I invented certain other languages which qualify as esolangs as stages in the proof, although system 5 is probably the only interesting one)
19:53:12 <AnMaster> Deewiant, ...where you can get my code?
19:53:16 <Deewiant> does anybody know what 'the result of a "butterfly" bit operation' is?!
19:53:27 <ais523> AnMaster: it's in tribute to INTERCAL character names
19:53:46 <ais523> you take the sum and the difference of two numbers, then multiply the differenceby a constant
19:53:56 <Deewiant> ais523: and what's the constant
19:53:58 <ais523> it's an operation in Fourier transforms
19:53:59 <Deewiant> B ('pair of shoes') pops two cells off the stack and pushes the result of a "butterfly" bit operation.
19:54:11 <ais523> hmm... maybe it's a different operation
19:54:24 <ais523> because you have to provide the constant in the butterfly operation I know about
19:54:29 <ais523> and besides, mine isn't bitwise
19:54:31 <AnMaster> Deewiant, what does CCBI do for that?
19:54:54 <Deewiant> which has a "/* Guess what this is meant to be... */" comment in the code :-P
19:54:58 <oklokok> umm, befunge actually doesn't have an operator that digs up n deep in the stack and pushes that on top?
19:55:01 <Deewiant> it's the only one that implements anything at all
19:55:09 <Deewiant> oklokok: nope. only the FRTH fingerprint has something like that
19:55:43 <Deewiant> AnMaster: it pushes the sum and then the difference of the values and then reflects
19:55:47 <AnMaster> oklokok, of course as it would make coding much easier, and we already used all ASCII chars below 127
19:55:53 <Deewiant> AnMaster: and outputs a warning if in warning mode, etc.
19:56:14 <Deewiant> mine doesn't reflect but otherwise does the same
19:56:17 <AnMaster> Deewiant, who wrote the TOYS thing?
19:56:29 <ais523> I'm guessing it reflects because the constant wasn't provided...?
19:56:39 <Deewiant> AnMaster: since it's part of the standard, probably chris pressey
19:56:49 <ais523> oklokok: Underlambda is going to have a very similar combinator
19:56:49 <AnMaster> Deewiant, then, why not ask him?
19:57:08 <Deewiant> AnMaster: he posted back in 2000 or so that he's 'not very interested in befunge' anymore or something like that :-)
19:57:26 <oklokok> ais523: i'm sure it has a use in underlambda
19:57:26 <Deewiant> AnMaster: I figured I'd take the route of implementing everything I can find currently
19:57:28 <AnMaster> Deewiant, aha, that explains why I got no answer on my license mail
19:57:38 <Deewiant> AnMaster: and then just leave it at that.
19:57:50 <oklokok> it's just befunge doesn't have many operators worth iterating alone.
19:57:57 <Deewiant> AnMaster: yeah, maybe he automatically filters everything with 'befunge' in it ;-)
19:58:30 <oklokok> pop makes sense in some cases
19:58:43 <Deewiant> but unfortunately using k, turned out to be a bad idea
19:58:48 <Deewiant> since interpreters implement k differently
19:59:04 <AnMaster> Deewiant, well thanks to mycology it won't any more
19:59:23 <Deewiant> AnMaster: but I still can't use it in mycology itself :-)
19:59:32 <Deewiant> and I probably won't be writing much more befunge :-D
19:59:47 -!- faxathisia has quit (Connection reset by peer).
19:59:48 <AnMaster> are you also no longer interested in the language
20:00:03 <Deewiant> I've written more befunge than all others on this planet put together :-D
20:00:23 <Deewiant> I was interested in implementing it and then writing that test suite, for fun
20:00:51 <AnMaster> Deewiant, however that guy with the crazy domain name comes close I think
20:00:55 <Deewiant> but yeah, I never felt like I'd /use/ Befunge for something
20:01:20 <ais523> Deewiant: I wrote a few Befunge programs as anarchy golf entries
20:01:26 <AnMaster> befunge would be nice for mission critical stuff, because it won't crash, it just reflects instead
20:01:27 <ais523> but I'm not very good at Befunge golfing
20:01:34 <AnMaster> so you can know your program won't end
20:01:38 <ais523> unfortunately it only supports Befunge-93
20:01:46 <Deewiant> Mycology is over 100K of Befunge
20:01:48 <ais523> AnMaster: it could get stuck in an infinite loop easily
20:01:57 <Deewiant> a quick look at J^4 suggests he's written around 30K, maybe
20:02:13 <Deewiant> if you count nonpublished then I go up to over 200K probably
20:02:27 <AnMaster> Deewiant, he likely written more, backspaced written more backspaced again
20:04:01 <Deewiant> the Befunge-93 section of Mycology has been fully rewritten 4 times, I believe
20:04:13 <Deewiant> the first time it was much more readable
20:04:19 <Deewiant> but it didn't come even close to fitting in 80x25
20:04:40 <Deewiant> it looked a bit like the befunge code you showed me you wrote :-)
20:04:42 <AnMaster> Deewiant, it isn't readable at all now
20:04:49 <Deewiant> yes, because it has to fit in 80x25
20:04:59 <AnMaster> and nor is the rest of the code -_-
20:05:03 <ais523> Deewiant: how much do you cross code over itself?
20:05:25 <AnMaster> ais523, way to much for Deewiant
20:05:26 -!- Hiato has joined.
20:05:33 <AnMaster> I avoid doing it when possible
20:05:57 <Deewiant> http://www.esolangs.org/wiki/SNUSP
20:06:01 <ais523> it's basically a cross between Befunge and Brainfuck
20:06:13 <ais523> but with procedures added in (in Modular SNUSP)
20:06:35 <ais523> making it really elegant to write constants
20:06:37 <Deewiant> AnMaster: err, brainfuck not befunge
20:06:58 <AnMaster> Deewiant, and brainfuck got [ and ]
20:07:10 <Deewiant> AnMaster: not befunge's ] and [ :-)
20:07:21 <ais523> SNUSP doesn't use either
20:07:30 <ais523> just ! as a trampoline
20:07:37 <ais523> and ? as a maybe-trampoline depending on the current tape element
20:07:59 <Deewiant> ais523: which I think is equivalent to !j
20:08:14 * ais523 tries to remember what j does
20:08:33 <Deewiant> jumps ahead a given number of cells
20:08:58 <ais523> in that case, yes it's equivalent, apart from only taking up one funge-space cell
20:11:00 <ais523> Modular SNUSP is the most interesting part of it, though, in my opinion
20:11:10 <ais523> especially the base-Fibonacci constants
20:11:19 <ais523> that work using recursive procedure calls
20:25:03 <AnMaster> BAD: ( should have reflected trying to load nonexistent fingerprint 0
20:25:10 <AnMaster> does it say anywhere it can't exist
20:25:16 <AnMaster> what if I make one with that number?
20:25:40 <ais523> AnMaster: then Deewiant will add it to Mycology and change the number of the nonexistent one
20:25:53 <ais523> now, an interp which had a fingerprint for /every/ 32-bit number might be interesting
20:26:01 <Deewiant> AnMaster: but actually, many interpreters define 0 as some sort of internal fingerprint
20:26:12 <AnMaster> Deewiant, so that could be a problem then
20:26:25 <AnMaster> anyway now mine reflects on any fingerprint
20:26:31 <ais523> doesn't the spec say that all fingerprints have to be registered?
20:26:33 <AnMaster> I haven't coded fingerprints yet
20:26:33 <Deewiant> AnMaster: it's part of the reason I chose that fingerprint :-)
20:27:18 -!- Hiato has left (?).
20:27:26 <AnMaster> Deewiant, http://rafb.net/p/SNzhKr58.html
20:27:37 <AnMaster> still a few BAD around y stuff though
20:29:38 <AnMaster> Deewiant, so still some stuff needed to be done
20:30:20 <AnMaster> Deewiant, no longer the < in mycouser
20:30:39 <AnMaster> Deewiant, still the horrible grammar though
20:30:45 <AnMaster> UNDEF: BASE fingerprint not loaded, won't check I.
20:30:56 <AnMaster> that's just not correct English
20:30:56 <Deewiant> I is the instruction that isn't checked
20:31:12 <AnMaster> it looks like it's horrible grammer
20:31:21 <Deewiant> since "I won't check" would be equally horrible
20:31:23 <AnMaster> adding quotes of some kind around would work
20:31:32 <Deewiant> but I'm really tight for space already
20:31:45 <AnMaster> Deewiant, it doesn't need to fit in 80x25 does it?
20:32:10 <Deewiant> since strictly speaking I guess it's valid for a befunge-93 to error out on seeing a file bigger than 80x25
20:32:31 <Deewiant> well, it's probably unspecified
20:32:41 <Deewiant> it only says "programs are 80x25" or something probably
20:33:18 * AnMaster notes: add support for stuff like command line parameters
20:33:29 <AnMaster> command line parameter parsing is easier to do in bash than C :/
20:33:43 <ais523> "Befunge-93 programs have a maximum size of 80x25 total commands and data bytes"
20:33:45 <Deewiant> since you're going posix, use getopt, right
20:33:57 <ais523> implying that any program that's larger isn't valid Befunge-93
20:33:59 <Deewiant> yeah, so strictly speaking a befunge-93 program /should/ error on seeing 80x25
20:34:26 * ais523 guesses that those dimensions are because they're the standard dimensions of characters on the screen in DOS
20:34:38 <AnMaster> Deewiant, getoptlong though :/
20:34:52 <Deewiant> AnMaster: beats me, haven't used getopt
20:35:02 * AnMaster checks gnulib for a getoptlong version
20:35:10 <Deewiant> I use the good old way of writing help strings manually and iterating over argv :-)
20:35:49 <Deewiant> well, in C it sucks a bit more
20:35:52 <AnMaster> if windows doesn't have getopt, it can <badword />
20:37:35 <ais523> C-INTERCAL uses getopt if it's available, but provides its own minimal-but-good-enough version for if it isn't
20:37:51 <ais523> and autoconf detects whether it's available or not and selects the right version
20:38:09 -!- oerjan has joined.
20:38:22 <ais523> AnMaster: it only uses autoconf, not the other autotools
20:43:12 <ais523> I even wrote some special INTERCAL-specific tests
20:43:33 <ais523> (one of them tested for the presence of undocumented behaviour in yacc that some of the pre-existing program depended on)
20:51:15 <ais523> Deewiant: I just noticed that Mycology uses the string 2+2 for testing the PERL fingerprint
20:51:34 <ais523> that string's a palindrome, so if 0gnirts communication fails by getting the string backwards, you won't notice
20:52:31 <ais523> 8/2 would be one way to solve that problem without modifying anything else
20:53:15 <ais523> it's unlikely to be a problem in practice
20:53:27 <ais523> but then, most of what Mycology tests is unlikely to be a problem in practice
20:53:44 <ais523> it's just that various interps fail at various different points
20:54:00 <ais523> multiple things each of which is unlikely to fail, together may be likely for /something/ to fail
20:56:00 <Deewiant> ais523: mind if I credit you with your realname on my website?
20:56:32 <ais523> although you may want to use my actual realname, not the one I use on IRC
20:56:40 <ais523> which is obviously not a real realname
20:56:50 <ais523> (it doesn't matter in here, but it does matter in some other channels)
20:58:04 <oerjan> hah, mr. This Is, that's just something you _say_
20:58:27 <ais523> another point: ccbi fails Mycology's tests for K in FPSP, at least on my computer, by giving 0 for ln(2)
20:58:41 <ais523> but it's sneakily marked as UNDEF: on the actual test due to issues with rounding
20:58:57 <Deewiant> it may be a case where single-point precision simply can't hold the actual value
20:59:02 <ais523> strangely the FPDP version is correct
20:59:15 <Deewiant> so it is more likely to be correct :-)
20:59:17 <ais523> and I'm sure that 0.693 can be held more accurately than 0 in single-precision floating point
20:59:48 <Deewiant> UNDEF: K says ln(2) is 0.693147 (0.693147)
21:00:03 <ais523> must be something at my end, then
21:00:23 <Deewiant> and also on a school linux comp
21:14:56 <Deewiant> Linux iruel.hut.fi 2.6.20-16-generic #2 SMP Thu Jun 7 20:19:32 UTC 2007 i686 GNU/Linux
21:15:03 <AnMaster> use SSE vector instructions for delta and such
21:15:26 <ais523> Linux dell 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux
21:15:35 <AnMaster> using gcc intrinsics of course
21:15:38 <Deewiant> AnMaster: well, you'd have to benchmark to see if they're actually faster
21:15:42 <ais523> but it's likely just a misconfiguration of gdc or tango or something at my end
21:15:46 <AnMaster> Deewiant, they probably aren't
21:16:09 <AnMaster> Deewiant, anyway it finishes mycology fast enough without using -O even so... heh
21:16:47 <AnMaster> Deewiant, how would ccbi do with no fingerprints?
21:16:56 <Deewiant> of course, you realize it's only executing a fifth or so of mycology :-)
21:17:15 <AnMaster> Deewiant, I'm aware of that, and it is compiled as 64-bit
21:17:35 <AnMaster> amd64 got more registers than x86
21:17:43 <AnMaster> about twice as many CPU registers iirc
21:17:56 <Deewiant> AnMaster: pipe output to /dev/null, how about then
21:18:19 <AnMaster> also, and this may be a disadgantage, my code is compiled as -fpic for some reason (blame cmake!)
21:18:56 <Deewiant> for CCBI on a school linux comp
21:19:17 <AnMaster> os[Linux 2.6.24-gentoo-r2 x86_64] distro[Gentoo Linux (stable)] cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz] mem[Physical : 1.5GB, 46.7% free] disk[Total : 92.82GB, 29.40% Free] video[nVidia Corporation G73 [GeForce 7600 GS]] sound[EMU10K1 - SB Live 5.1]
21:20:47 -!- GregorR has quit (Read error: 113 (No route to host)).
21:21:10 <Deewiant> these are apparently Intel Celeron 2.4 Ghz
21:22:49 <AnMaster> Deewiant, well a 64-bit version of ccbi would likely be faster
21:23:15 <Deewiant> AnMaster: yeah, but I doubt it'd make that big a difference
21:23:22 <Deewiant> or maybe it does, then, whatever
21:24:06 <ais523> Deewiant: -O2 tends to be much better than -O
21:24:17 <ais523> -O3 is only really an advantage over -O2 on embedded systems IME
21:24:27 <AnMaster> I was compiling in background another thing now
21:24:28 <Deewiant> depends on the system and the code in question
21:25:02 <Deewiant> I'm surprised that there'd be a 4x performance penalty for running 32-bit code
21:25:19 <AnMaster> Deewiant, depends on register usage
21:25:27 <Deewiant> I wonder if the linux ccbi one is compiled with optimizations :-)
21:25:38 <AnMaster> all these are average on 5 runs
21:25:54 <Deewiant> AnMaster: your numbers mean nothing to me :-P
21:26:17 <Deewiant> mainly due to the 32/64-bit schism
21:26:21 <Deewiant> and secondly, because I don't care much
21:26:39 <AnMaster> well I'd try with -m32 except I got no 32-bit boehm-gc installed :P
21:27:13 <Deewiant> yes, it seems that the ccbi binary has been compiled without optimizations
21:27:34 <AnMaster> Deewiant, even with -O0 mine was fast
21:27:48 <Deewiant> AnMaster: one big difference between the two is how we do instructions
21:27:55 <Deewiant> AnMaster: you probably have a big switch in a main loop, right?
21:28:14 <AnMaster> Deewiant, well not in main loop no but in a ExecuteInstruction function
21:28:29 <AnMaster> and I got a if case first for string mode
21:28:34 <Deewiant> I have hash tables containing function pointers
21:28:43 <Deewiant> which is immediately a huge performance penalty
21:28:48 <AnMaster> Deewiant, I plan doing that for extensions
21:29:13 <AnMaster> Deewiant, also I try to flattern out any structures
21:29:16 <Deewiant> aye, but especially with as good a compiler as GCC you're bound to get a huge performance boost over such
21:29:25 <AnMaster> struct whatever { fungevector foo; .... }
21:29:44 <AnMaster> struct whatever { fungevector * foo; .... }
21:30:10 <AnMaster> and there are two reasons for that I do so: less memory managment needed
21:30:50 <ais523> AnMaster: unless you need to make shallow copies of the objects inside
21:31:21 <AnMaster> typedef fungePosition fungeVector;
21:31:32 <AnMaster> the reason for that is self documenting code partly
21:31:50 <AnMaster> as in, I use the name vector when I mean a vector, and position when I mean a absolute position
21:31:58 <AnMaster> makes it easier to read the code
21:34:11 <Deewiant> AnMaster: there's a new CCBI binary up which may or may not be faster, but it's compiled with -O this time :-)
21:34:28 <Deewiant> iki.fi/deewiant/befunge/ccbi.html
21:34:41 <AnMaster> Deewiant, page fails in lynx :/
21:34:50 <AnMaster> and I don't want to start firefox
21:35:29 <Deewiant> Lynx Version 2.8.5rel.1 (04 Feb 2004)
21:35:55 <AnMaster> -rw-r--r-- 1 arvid arvid 263164 11 mar 2008 ccbi
21:35:55 <AnMaster> -rw-r--r-- 1 arvid arvid 1508 7 jan 17.46 license.txt
21:36:04 <AnMaster> you may want to set +x on binary in archive
21:36:22 <AnMaster> is what I recommend for linux binaries
21:36:28 <Deewiant> where such distinctions don't exist
21:36:38 <AnMaster> Deewiant, I think cygwin does +x flag
21:36:39 <Deewiant> no, I compiled it on a linux box
21:36:47 <Deewiant> but I use UPX to compress it on windows
21:36:54 <AnMaster> $ time ./ccbi ~/bashfunge/trunk/mycology/mycology.b98 > /dev/null
21:36:56 <ais523> that website seems to work fine for me in w3m
21:37:04 <ais523> although I haven't tried to download any of the binaries from it
21:37:04 <AnMaster> Deewiant, upx is bound to slow it down
21:37:10 <AnMaster> as it need to uncompress binary
21:37:11 <Deewiant> AnMaster: yeah, but it should be a small cost
21:37:22 <Deewiant> AnMaster: the original binary is 1.3 megabytes
21:37:27 <AnMaster> Deewiant, depends, it won't be if system enforce NX bit
21:37:30 <Deewiant> unoptimized it's 0.8 megabytes
21:37:39 <Deewiant> AnMaster: ah, that can be a problem
21:37:51 <AnMaster> Deewiant, in fact I suspect it will have to create a temp file to run on hardened systems
21:37:53 <Deewiant> AnMaster: if you have upx, you can decompress it in place
21:38:07 <Deewiant> AnMaster: portage probably does
21:38:15 <AnMaster> Deewiant, nor is it available for amd64 in a stable form
21:38:21 <AnMaster> Available versions: *1.25 ~2.02 ~3.00
21:38:54 <AnMaster> like for boehm-gc to get some stuff called "Extensible cords"
21:39:14 <Deewiant> if you want, try iki.fi/deewiant/ccbi2
21:39:19 <AnMaster> "Extensible cords are strings that may be destructively appended to. They allow fast construction of cords from characters that are being read from a stream."
21:40:26 <Deewiant> damn, that was a big difference
21:40:46 <Deewiant> and maybe the remaining second can be attributed to 32/64-bit differences
21:41:11 <AnMaster> Deewiant, it can't I tried mine as -m32
21:41:12 <Deewiant> if you want, "over half a second" instead
21:41:51 <Deewiant> if I could be bothered to get GDC running this might end up being a lot faster
21:42:18 <AnMaster> Deewiant, gdc is faster than dmd?
21:42:29 -!- RedDak has joined.
21:42:31 <AnMaster> Deewiant, anyway function pointers in hash map is slower
21:42:47 <AnMaster> Deewiant, a static array index by char would be faster
21:42:48 <Deewiant> it's much slower than whatever GCC compiles a switch to
21:43:16 <Deewiant> and a switch statement would be even faster :-)
21:43:28 <AnMaster> Deewiant, tried that? I guess something on the lines of instructions[127] would be all that was needed
21:43:58 <Deewiant> AnMaster: would have to have extra checking for unimplemented instructions like control chars
21:44:04 <Deewiant> and it'd have to be 255, of course
21:44:36 <Deewiant> and I might have to rewrite the way fingerprints are done, not sure
21:44:38 <AnMaster> put the r instruction in the rest of the slots
21:45:20 <AnMaster> if (opcode < 127) { use array here } else { reflect here }
21:45:27 <Deewiant> there's a fingerprint that allows rewriting instructions
21:45:40 * AnMaster sucks at off by one issues in arrays
21:45:40 <Deewiant> but it's implemented separately, doesn't modify the main instructions array
21:45:56 -!- olsner has joined.
21:46:04 <AnMaster> Deewiant, anyway fingerprints, yes you would need some way to layer them
21:46:19 <AnMaster> so for A-Z you would need something slightly different
21:46:20 <Deewiant> they're done separately though
21:46:26 <AnMaster> Deewiant, btw, want to see my switch case?
21:47:04 <AnMaster> http://rafb.net/p/Ry1n7736.html
21:47:47 <Deewiant> } while (fungeSpaceGet(fspace, &ip->position) == ' ');
21:48:14 <AnMaster> } while (fungeSpaceGet(fspace, &ip->position) == ' ');
21:48:33 <AnMaster> Deewiant, and so it does on pastebin in firefox I notice
21:48:51 <Deewiant> "show as plain text" looks smart
21:49:10 <AnMaster> Deewiant, non-plaintext looks ok in konq and firefox
21:49:50 <AnMaster> I may have a off by one issue with ;
21:49:59 <AnMaster> Deewiant, firefox whatever the stable is on gentoo
21:50:09 <AnMaster> [I] www-client/mozilla-firefox (2.0.0.12@2008-02-15): Firefox Web Browser
21:50:33 <AnMaster> } while (fungeSpaceGet(fspace, &ip->position) != ';');
21:50:39 <AnMaster> doesn't that have a off by one issue?
21:50:49 <AnMaster> as I forward at end of main loop once
21:51:08 <Deewiant> as you forward up to the ; there
21:51:47 <AnMaster> Deewiant, anyway bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge08
21:52:03 <AnMaster> haven't had time to look at problem
21:52:28 <AnMaster> the best distributed version control system IMO :D
21:52:38 * AnMaster ducks for git and mercurial dans
21:52:48 <AnMaster> Deewiant, mercurial isn't too bad
21:53:01 <Deewiant> I don't like git because it doesn't work on windows :-)
21:53:07 <Deewiant> or didn't, I guess it does now
21:53:09 <AnMaster> http://changelog.complete.org/posts/698-If-Version-Control-Systems-were-Airlines.html'
21:53:35 * AnMaster saw it posted in #friendly-coders recently
21:54:02 <AnMaster> slashdot, dig and such: I don't do them
21:54:19 <Deewiant> although in the case of digg, maybe a win ;-)
21:54:42 <AnMaster> I got better things to spend my time on
21:57:46 * AnMaster wonders how a license like http://www.sunrisetel.net/software/devtools/sunriseDD/LICENSE can be GPL compatible
21:58:30 <AnMaster> that library would otherwise provide the perfect hash table
21:58:57 <AnMaster> "The Sunrise Data Dictionary is a library for lock-free hash table storage of arbitrary data objects with built-in reference counting and guaranteed order iteration for the C programming language. It can be used with the Boehm garbage collector, participate in external reference counting systems or use its own built-in reference counting. It comes with a variety of built-in hash functions and allows t
21:58:57 <AnMaster> he use of runtime supplied hash functions via callback."
21:59:08 <AnMaster> and it says license is GPL2 compatible
22:00:04 * oerjan recalls GPL2 containing an "or any later version" clause
22:00:36 <AnMaster> yep you can do "gpl2" or "gpl2 or any later"
22:00:49 <AnMaster> but you don't need to do the later version bit
22:00:49 <oerjan> oh it's author's choice?
22:01:23 <ais523> oerjan: much GPL stuff is licensed with an or-later
22:01:43 <ais523> but there's no legal requirement to put that clause in if you don't want to
22:01:43 <AnMaster> but or-later is is the most common way
22:01:47 <ais523> GPLv3 also allows an 'or later, but only if such and such a person says so'
22:02:03 <AnMaster> ais523, ah nice didn't know that
22:02:45 <ais523> as in, you get to choose who says a license is a version of the GPL, in case you don't trust the FSF to keep the spirit of the license the same
22:03:18 <AnMaster> ais523, indeed I often wondered if GPL4 is where RMS will go mad
22:03:30 <AnMaster> he tried to in the early drafts of gpl3
22:03:55 <AnMaster> ais523, I can't see the "such and such person" clause in gpl3 document?
22:04:04 <ais523> search for the word 'proxy'
22:04:27 <AnMaster> what exact wording should I use in my files for that?
22:04:48 <ais523> not being a lawyer, or an expert on GPLv3
22:05:56 <ais523> I'd suggest using the same wording as the license itself
22:06:20 <ais523> as in, "<insert name here> is a proxy who can decide which future versions of the GNU General Public License can be used."
22:06:29 <ais523> but that's just a guess
22:14:16 <AnMaster> POSIX.1-2001 got some hash functions built in
22:14:37 <AnMaster> no idea about preformance though
22:14:50 <Deewiant> AnMaster: if you feel like more benchmarking, CCBI uses a static array for instructions now
22:15:43 <Deewiant> iki.fi/deewiant/ccbi2 as before
22:16:15 <Deewiant> might make some difference but probably not very much
22:16:40 <AnMaster> Deewiant, btw even that version wants executable stack
22:17:13 <Deewiant> might be something in the compiler runtime
22:17:17 <AnMaster> TYPE PAX STK/REL/PTL TEXTREL BIND SONAME FILE
22:17:17 <AnMaster> ET_EXEC PeMRxS RWX --- RW- - LAZY ccbi2
22:17:49 <Deewiant> I suppose there's no way of figuring out why
22:18:16 <AnMaster> you would need to look at your linker
22:18:28 <Deewiant> closed source, written in asm :-P
22:18:43 <AnMaster> TYPE PAX STK/REL/PTL TEXTREL BIND SONAME FILE
22:18:43 <AnMaster> ET_EXEC ---xe- RW- R-- RW- - LAZY cfunge08
22:19:17 <Deewiant> any performance difference between this version and the last?
22:20:44 <Deewiant> have a look at iki.fi/deewiant/asdf
22:20:44 <AnMaster> Deewiant, and PaX really doesn't like executable stack!
22:20:49 <Deewiant> does it claim to want executable stack
22:21:08 <Deewiant> AnMaster: it's hello world :-/
22:21:31 <Deewiant> AnMaster: how about this one, same file
22:21:48 <AnMaster> I got no idea why, but I can't paste output, pasting just broke it seems
22:22:31 <Deewiant> AnMaster: so what about that one
22:22:38 <AnMaster> Deewiant, current version of that file also wants X stack
22:22:44 <Deewiant> that's just an empty main function
22:22:49 <Deewiant> so it looks like it's the compiler's fault
22:22:55 <AnMaster> then blame the compiler for being crappy
22:23:09 <Deewiant> rather, written in a time when this wasn't an issue
22:23:12 <Deewiant> maybe there's something in the frontend
22:23:56 <Deewiant> and I'm on a school comp, can't be bothered to pull out my gentoo laptop
22:23:56 <AnMaster> and why I have no plans on getting a newer version
22:24:33 <AnMaster> Deewiant, still when I implement finger prints mine will be slower
22:24:49 <Deewiant> that's what I thought at first, as well ;-)
22:25:01 <AnMaster> Deewiant, you didn't do them all
22:25:17 <Deewiant> SGNL can't work on windows so it's out for not being portable
22:25:32 <AnMaster> Deewiant, and I think TURT is silly too
22:25:49 <AnMaster> is there any *stream IO* fingerprint
22:26:02 <AnMaster> that hardly would work on binary streams well
22:26:14 <Deewiant> which implements fopen/fread-instructions and such
22:26:29 <AnMaster> Deewiant, so just write a PNG/SVG writing routine in befunge? :P
22:27:07 <AnMaster> Deewiant, how do you create svg files btw?
22:27:50 <Deewiant> if all XML is crap to you, then yes :-P
22:28:20 * AnMaster is one of several developers on it
22:28:30 <Deewiant> AnMaster: I got somebody to compile a GDC version for me, iki.fi/deewiant/test4
22:28:34 <AnMaster> it uses S-Expressions for data files, and thanks to it I learnt to love S-Expressions
22:28:35 <Deewiant> see if that needs executable stack
22:29:24 * AnMaster wonder WTF is up with pasting in xorg
22:29:38 <AnMaster> yesterday middle mouse button paste into lyx died
22:29:50 <AnMaster> now it's emacs running my irc client
22:30:37 <AnMaster> LaTeX with WYSIWYM (what you see is what you meant)
22:30:58 <AnMaster> you just take care of the structure it does the formatting
22:31:52 <AnMaster> Deewiant, if you want to see my (still not allowed with copyright though!) funge08 specs I can DCC the generated pdf that looks awesom
22:32:02 <AnMaster> and allow you to give some input on my changes if you want
22:32:16 <Deewiant> AnMaster: one last one, iki.fi/deewiant/foo
22:32:29 <Deewiant> AnMaster: I don't really have time now
22:32:50 <AnMaster> Deewiant, no executable stack in that one, but unlike test4 it doesn't have sane PaX flags
22:33:17 <AnMaster> insane: as in PaX flags being PeMRxS
22:33:31 <Deewiant> like said it's all greek to me :-)
22:34:27 <AnMaster> Deewiant, because it basically means that PaX (hardened kernel thing for NX) would allow lots of things
22:34:46 <Deewiant> or rather, what are the differences to ---xe-
22:35:14 <AnMaster> Deewiant, I can't paste into irc client atm so...
22:35:33 <AnMaster> PAGEEXEC EMUTRMAP MPROTECT RANDMMAP RANDEXEC SEGMEXEC
22:36:10 <Deewiant> so it's got more protections enabled
22:38:05 <Deewiant> there's no way for you to disable PaX temporarily or anything, to see if CCBI runs faster?
22:38:19 <AnMaster> the x is bad, but you need compile and link with -fpic -fpie -pie to make that work
22:38:29 <AnMaster> Deewiant, not without recompiling kernel and rebooting
22:38:49 <AnMaster> Deewiant, I got a blender render running now
22:39:15 <Deewiant> meh, cancel it, this is more important >_<
22:39:27 <AnMaster> Deewiant, also another thing: I like my uptime
22:39:57 <AnMaster> currently at 19 due to power outage :(
22:40:06 <Deewiant> so it's not a big loss anyway ;-)
22:40:20 <AnMaster> and I don't want to disconnect from irc
22:40:42 <AnMaster> currently on 397 channels spread over 23 networks
22:41:32 <Deewiant> I see, that's why you don't have time for things like slashdot ;-)
22:42:39 <AnMaster> I'm ircoper on some smaller networks
22:49:15 -!- Deformative has joined.
22:49:55 -!- Deformative has left (?).
22:56:12 -!- ais523 has quit ("too tired to concentrate").
22:58:13 -!- RedDak has quit (Remote closed the connection).
23:07:23 <oklokok> http://www.vjn.fi/oklopol/befunge.txt
23:07:29 -!- Deformative has joined.
23:07:34 <oklokok> http://www.vjn.fi/oklopol/befunge.txt
23:07:49 <oklokok> god it took long to get intuition for that
23:08:29 <oerjan> now if i just understood it as well... :D
23:09:48 <oklokok> it's a simple copypaste solution
23:10:14 <oklokok> i'll make something real when i have time
23:13:45 <oklokok> i didn't even have time to obfuscate it
23:14:08 <oklokok> also, it's heavily commented :o
23:18:35 <oerjan> i noticed that, after a while. first i thought those were some strange commands...
23:36:10 <oklokok> might be fun to make something that executes english sentences