←2008-10-28 2008-10-29 2008-10-30→ ↑2008 ↑all
00:01:08 -!- olsner has quit ("Leaving").
00:06:18 <fizzie> fungot quoted me some egobot too: 23:54:52 <fungot> fizzie: 1l 2l adjust axo befunge bch bf8,16,32,64 glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda
00:06:30 <fizzie> That's a nice list for me to implement in Befunge.
00:07:09 <oerjan> ^def test ul S
00:07:10 <fungot> Defined.
00:07:17 <oerjan> ^test hm?
00:07:17 <fungot> ...out of stack!
00:07:24 <oerjan> bah
00:07:28 <fizzie> No such thing as input, there.
00:07:39 <fizzie> Although I guess I could quite easily push it on stack at the beginning.
00:09:34 <GregorR> http://codu.org/colormatch/ // IT RULEZES
00:09:36 <GregorR> Somebody digg it
00:09:37 <GregorR> :P
00:14:14 <lilja> hurrr
00:14:43 <GregorR> Hurr, hrrm?
00:14:52 <lilja> hurrurr
00:15:14 <oerjan> oh, the hurrurr
00:15:36 <lilja> mm-hmm
00:15:39 <oerjan> ^ul (h)S((urr)S:^):^
00:15:39 <fungot> hurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrurrur ...too much output!
00:15:47 <GregorR> oerjan: go luuk its bettar! :P
00:16:29 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | hmm.
00:16:35 <GregorR> optbot!
00:16:36 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | well I'm anti tango if it doesn't build on x86_64.
00:16:39 <GregorR> optbot!
00:16:40 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | I hard-coded Mario and Zelda themes.
00:20:05 <ehird> hi GregorR
00:20:28 <GregorR> HI EHIRD GO 2 COLOR MATCHER
00:20:34 <oerjan> ^show
00:20:34 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source bf cat talk test
00:20:40 <ehird> GregorR: i did, as i said, add a random button to color 1
00:20:42 <ehird> then write a webservice
00:20:48 <ehird> that gives you a random color, and a random matching colour
00:20:53 <ehird> (text/plain, just seperate them by a space)
00:20:55 <ehird> because
00:20:56 <ehird> i will use it
00:20:57 <ehird> in terrible ways
00:21:04 <GregorR> Hmmmmmmmmmmmmmmmm
00:21:19 <ehird> i promise i won't abuse your server too much
00:21:20 <ehird> :-P
00:21:21 <oerjan> ^def talk ul (opt)(bot: I want to talk with you, because this guy here, just above me, asked me to do it.)SS
00:21:21 <fungot> Defined.
00:21:21 <GregorR> That would involve implementing a neural network yet again, in $YOUR_FAVORITE_WEB_LANGUAGE :P
00:21:26 <ehird> what
00:21:28 <ehird> no it wouldn't
00:21:31 <oerjan> eh wait
00:21:37 <oerjan> ^def talk ul (opt)(bot: I want to talk with you, because this guy here, just above me, asked me to do it.)~SS
00:21:37 <fungot> Defined.
00:21:40 <ehird> GregorR: ah, it's in javascript?
00:21:46 <GregorR> ehird: Yeah.
00:21:54 <ehird> GregorR: i could just nab that then
00:22:02 <ehird> GregorR: but
00:22:05 <ehird> there IS server side javascript
00:22:06 <ehird> XD
00:22:24 <ehird> GregorR: anyway, add the "random color 1" idea
00:22:27 <GregorR> ehird: I could make a JavaScript library you can include remotely that'll make your page a random color :P
00:22:29 <ehird> probably make it generate a random matching color at the same time
00:22:33 <GregorR> Sure, I can do that easy.
00:22:35 <ehird> yay
00:22:45 <ehird> GregorR: then make it generate a colour scheme of length N :-P
00:22:55 -!- Asztal has joined.
00:23:14 <GregorR> ehird: That's of complexity n factorial :P
00:23:23 <ehird> GregorR: and so is your butt, but do i care?
00:23:24 <ehird> No.
00:23:32 <ehird> also
00:23:35 <GregorR> ...
00:23:38 <ehird> what is the maximum complexity yoru script could reasonably do?
00:23:39 <ehird> :-P
00:24:47 <ab5tract> fungot: maximize complexity.
00:24:47 <fungot> ab5tract: your claim is quite logical. i'll think you're a bit dyslexic? i mean, it might not be
00:25:15 <ab5tract> you and me sure got a thing going, don't we fungot
00:25:15 <fungot> ab5tract: and it's self-modifying techniques i consider pretty original i think
00:25:23 <ab5tract> true dat
00:31:32 -!- metazilla has quit ("- nbs-irc 2.37 - www.nbs-irc.net -").
00:38:33 <ehird> GregorR:
00:38:55 <GregorR> ehird: I have no answer.
00:39:18 <ehird> GregorR: Foo bar baz.
00:39:32 -!- Asztal^_^ has quit (Success).
00:42:50 <oerjan> GregorR: it would be nice if you showed the actual colors, not just their rgb values
00:43:53 <GregorR> oerjan: Uhhh, it DOES show their actual colors.
00:43:56 <GregorR> In a big fancy box.
00:44:01 <ehird> oerjan uses lynx
00:44:02 <ehird> duh
00:44:12 <ehird> lynx...
00:44:13 <ehird> with javascript
00:44:16 <oerjan> IE 7, actually, which some here may consider worse :D
00:44:35 <GregorR> Substantially worse.
00:44:39 <GregorR> Doesn't work in Konqueror it turns out.
00:44:43 <GregorR> I'm making some fixes anyway.
00:45:01 <ehird> GregorR: jquery
00:45:02 <ehird> biotch
00:45:43 <GregorR> ?
00:45:49 <ehird> jquery.com
00:45:50 <ehird> use it
00:45:51 <ehird> :-P
00:46:53 -!- lilja has quit ("KVIrc 3.2.0 'Realia'").
00:47:40 <GregorR> One of those bloated, useless JS libs?
00:47:42 <GregorR> Nooooo thank you.
00:47:46 <ehird> bloated?
00:47:51 <ehird> it's tiny, and always has been the tiniest
00:48:10 <ehird> also, it's not useless, it's quite functional (not as in the usable sense, but in the paradigm sense)
00:48:18 <ehird> sure, the site is all corporate but that's recent crap
00:48:29 <ehird> also, lets you use CSS3/XPath selectors
00:48:31 <ehird> trivially
00:48:41 <ehird> it really is nice.
00:49:26 <ehird> GregorR: also, the main developer is the main javascripty guy at mozilla
00:50:07 <ehird> (hmm, "JavaScript Evangelist" apparently... whatever the fuck that means...)
00:52:34 <GregorR> Apparently using innerHTML on a table only works in Firefox >_>
00:53:02 <ehird> innerHTML barely ever works :p
00:54:19 <ab5tract> jquery++, ehird++
00:54:44 <ehird> ab5tract = GregorR;
00:54:48 <ehird> ouch, that must be painful
00:55:17 * ab5tract is immutable
00:55:20 <ab5tract> sorry buddy :P
00:55:32 <ehird> ab5tract: as far as i know, js has no immutable variables
00:55:33 <ehird> so tough shit
00:56:06 <ab5tract> then i don't fit the paradigm x)
00:57:30 <ehird> ab5tract: REBEL
00:57:35 <ehird> hurr
00:58:39 <ab5tract> hows the funge ide coming
00:58:50 <GregorR> ehird: It can now generate two colors. I also put it in a .js file so it can be included remotely.
00:59:07 <ehird> ab5tract: Not. GregorR: You are a baby. You have been eaten by a gruebaby
00:59:17 <ehird> In future, please baby.
01:00:21 <ehird> GregorR: where does it get the data?
01:00:35 <GregorR> ehird: Which data?
01:00:40 <ehird> aha
01:00:40 <ehird> var masterNN = new NeuralNet(3, [18, 4, 1], [-412.6361755614, 278.9842142232, -20.5600215938, -39.8960037087, 154.9130185798, -159.9429904879, 729.2216090158, 982.9458995752, 143.5533742592, 25.5308027322, -206.5386629423, -6.8355913173, -283.1128834544, 369.9597631534, 412.1520971465, 100.1539743296, -563.2459335712, -191.8307140707, -264.4321767135, 374.5932132645, 49.1988457295, 213.6956148766, -61.9765634350, 190.5191290147, 23.3574377357, 668.4313751847,
01:00:51 <GregorR> Oh, yeah, it just has the "correct" neural net inbuilt.
01:00:52 <ehird> GregorR: pretty small neural net
01:00:58 <ehird> hmm
01:01:00 <GregorR> 18 inputs, 4 inner nodes.
01:01:24 <ehird> GregorR: So if it was generating an N-length colour scheme, what is the max reasonable size of n?
01:01:37 <GregorR> It's hard to say.
01:01:41 <GregorR> Actually, I'll code up that function.
01:01:44 <GregorR> Sounds like fun.
01:01:48 <ehird> Yay.
01:02:03 <ehird> GregorR: I'm thinking, though, that it'll need to be more complex for my idea (which would also involve e.g. picking text colours)
01:02:20 <ehird> because... colours that go together for the current model don't work as foreground/background
01:02:36 <GregorR> ehird: Foreground needs to be higher saturation than background probably.
01:02:49 <ehird> yea
01:03:13 <GregorR> ehird: But it provides you the saturation in the complicated internal format it uses. It gives you [R, G, B, H, S, V, L, a, b]
01:03:32 <ehird> Yeah, but I want the saturation to be determined by the neural net :D
01:04:52 <GregorR> Uhhhh?
01:04:53 <GregorR> Wha?
01:05:05 <ehird> GregorR: Green.
01:05:15 <GregorR> *brain explodes*
01:05:29 <ehird> GregorR: Just like your face pepper salt.
01:05:36 <ab5tract> heh. GregorR nice work there man
01:07:29 <ab5tract> it could take the match and set the more saturated color to the foreground text
01:07:44 <ehird> but the difference isn't enough
01:07:47 <ehird> most of the time
01:08:24 <ab5tract> hmmm... collect the sequence of all the matches then pick the most saturated then?
01:08:45 <ab5tract> through the neural network of course
01:09:12 <ehird> yea.
01:09:13 <ab5tract> most saturated * aesthetic_ratio
01:10:13 <ehird> bye
01:11:37 <ab5tract> peace out
01:17:21 <GregorR> ehird: OK, look at it now :)
01:18:04 <ab5tract> GregorR: swtjc
01:18:04 <GregorR> Unfortunately, I don't know how to change a page's link colors from JS ...
01:18:12 <GregorR> ... swtjc ...?
01:19:31 <ab5tract> swxxtjxxcx
01:19:53 <GregorR> I see.
01:20:19 <oklopol> :o
01:20:24 <oklopol> that's nasty stuff
01:20:53 <oklopol> well, i slept all day, back to sleep again, have all the fun your conscience allows you to have ->
01:21:46 <ab5tract> as opposed to pxxpjxxcx ;)
01:22:05 <oklopol> GregorR: and how is that O(n!)? it's O(n^2) it could be O(n^2) if there are enough matching colors
01:22:25 <oklopol> i mean
01:22:26 <GregorR> oklopol: For every n it generates it needs to test it against ALL of the previous ns.
01:22:47 <GregorR> Oh, I guess that's n^2 isn't it :P
01:22:51 <oklopol> GregorR: yes, but that sounds more like n^2
01:23:02 <oklopol> but it can get n!, if you need to backtrack a lot
01:23:13 <GregorR> It's 1+2+3+4+...+n, not 1*2*3*4*...*n :P
01:23:52 <oklopol> if the best approximation of your neural net is an n-ary constraint, whatever i may mean by this; but i doubt it is
01:23:59 <oklopol> oh
01:24:12 <oklopol> well if you never backtrack and just fail, then it's n^2 ofc
01:25:43 <oklopol> so i guess you just failed; then again, i guess it's better to fail at ordos than by sleeping through a perfectly good reading day
01:25:58 <oklopol> i thought i'd finish alllll my books today :<
01:26:35 <oklopol> oooooooooooooooooooooooooooooooo
01:26:40 <oklopol> i think i'll say one more random thing
01:26:46 <oklopol> but i need to think a bit first.
01:26:48 <oerjan> ah, nothing to make you sleep long like having big plans for what you'll do when you wake up
01:26:59 <oklopol> :)
01:27:32 <GregorR> ehird: Hewwo? :P
01:27:35 <oklopol> that may be true, but usually those big plans prevent me from falling asleep, i'm fairly paranoid about my readings
01:27:43 <GregorR> ehird: I put a colorscheme generator on the current version.
01:27:52 <oerjan> ah yes, that too
01:27:55 <oklopol> ah random thing invented:
01:28:05 <oklopol> quick poll: what's your favorite page number?
01:28:10 <oerjan> 42
01:28:11 <oklopol> (can't be complex)
01:28:38 <oklopol> GregorR: please link
01:28:39 <ab5tract> do any of the bots on the channel implement 'message'?
01:28:44 <oklopol> so us mortals can look too
01:28:46 <oerjan> so it can be transcendental? :D
01:28:47 <oklopol> ab5tract: no.
01:28:49 <GregorR> oklopol: http://codu.org/checkmatch/
01:28:51 <ab5tract> GregorR: ehird said 'bye'
01:29:00 <GregorR> ab5tract: Oh, didn't notice X-P
01:29:02 <oklopol> you can store programs in fungot ofc...
01:29:03 <fungot> oklopol: i got no worse one in some printed book just recently... let me try to reproduce this problem on freenode. i rarely do any public performances or play in bands, i use it
01:29:06 <GregorR> oklopol: Sorry, had linked it yesterday :P
01:29:15 <oklopol> GregorR: i know, just saw it in the logs
01:29:20 <oklopol> 404
01:29:28 <GregorR> Erm, foop
01:29:32 <oerjan> ab5tract: i think there is a MemoServ or something
01:29:33 <GregorR> http://codu.org/colormatch/
01:29:34 <GregorR> Tpyo :P
01:29:52 <oklopol> oh
01:29:58 <oklopol> hehe, i read that as "color".
01:30:01 <ab5tract> i was asking for GregorR's sake so he can leave not for ehird
01:30:18 <oerjan> it doesn't have to be in the channel, i think, since it's a freenode service
01:30:22 <ab5tract> s/not/note
01:30:27 <ab5tract> ah
01:30:50 <oerjan> though i've never used it
01:30:53 <mbishop> Hmm
01:30:56 <mbishop> in D, huh?
01:31:05 -!- kaykay has joined.
01:31:46 <ab5tract> fungot greet kaykay
01:31:47 <fungot> ab5tract: lexical scoping works this way, one can do with the fact the fixed-point is taken directly from english, and " make out with her.
01:31:53 <oklopol> GregorR: some of the schemes are quite ugly, and it's no surprise, as it can, i assume, make any of the generated colors a background color, and i think people have even stronger heuristics on that than just "what go together"
01:32:28 <GregorR> oklopol: It filters a bit, but I can't find a smart filter.
01:32:35 <oklopol> "what looks good on what" is stronger than "what colors are friends"
01:32:36 <oerjan> hm... that should be doable in bf
01:33:05 -!- kaykay has left (?).
01:33:41 <GregorR> Yeah.
01:33:45 <ab5tract> GregorR: what model are you using to filter right now?
01:33:51 <oklopol> neurals
01:34:03 <ab5tract> the schemes
01:34:08 <oklopol> did you implement the neural network thing yourself, GregorR?
01:34:12 <GregorR> oklopol: Yeah.
01:34:27 <GregorR> ab5tract: V (of HSV) must be below 0.25 for the background and above 0.75 for the foreground.
01:34:29 <oklopol> ab5tract: no the php's i think, although this may just be a guess.
01:34:38 <oklopol> but it doesn't matter because it was a joke anyway.
01:34:39 <oerjan> ^def greet bf ++++++++[->++++<]>[->++>+++>+<<<]>++++++++.>+++++++++.>.,[.,]
01:34:39 <fungot> Defined.
01:34:46 <oerjan> ^greet ab5tract
01:34:46 <fungot> Hi ab5tract
01:35:06 <ab5tract> oerjan: is that my name in bf?
01:35:13 <oerjan> no, just "Hi "
01:35:25 <ab5tract> ahhh
01:35:42 <oerjan> made it up on the spot so it may not be optimal
01:36:35 -!- jix has quit ("CommandQ").
01:36:45 <oklopol> bf doesn't have enough features for abstraction to create your nick
01:36:50 <GregorR> OH, except that was broken!
01:36:52 * GregorR fixes.
01:37:10 <oklopol> yay the world is getting better
01:37:26 <oklopol> everytime a bug is fixed an angel dies!
01:37:28 <oklopol> i mean
01:37:32 <oklopol> the opposite of that
01:37:50 <ab5tract> GregorR: is there any way to collect the whole sequence of matches for a given color, then sort according to saturation, then multiply the top few by their respective aesthetic ratios
01:37:53 <oklopol> i'm a bit tired see you in the morning ->
01:37:58 <ab5tract> and then take the top performer of that'
01:38:32 <GregorR> ab5tract: Hmmm ... yes. But Idowanna :P
01:38:41 <GregorR> Reload the page, I improved the colorscheme generator substantially.
01:38:43 <ab5tract> hehe
01:39:11 <GregorR> Oops, and left debug code in X_X
01:39:11 <ab5tract> very nice
01:39:49 <GregorR> Now if I can just figure out how to change link colors from JS ...
01:41:19 <ab5tract> GregorR: jquery + css :P
01:41:36 <GregorR> And how does JQuery do it? X-P
01:41:46 <GregorR> (Part of why I don't use one of those is I don't want to learn (effectively) another language)
01:42:23 <ab5tract> it'll probably be the last js "language" you learn.
01:43:32 <ab5tract> it finds every 'a' tag (with a particular class/id or just all of them) and then applies your css change to it
01:43:49 <ab5tract> it or them, i mean
01:43:52 <GregorR> Blech, seriously? I can do that, but ... blech.
01:44:25 <ab5tract> in jquery it is maybe two lines
01:45:21 <ab5tract> GregorR: one last feature request - text boxes with the current scheme's color value
01:45:22 <GregorR> It's two lines in normal JS :P
01:45:24 <ab5tract> s
01:46:59 <GregorR> OK, reload 8-D
01:47:09 <oerjan> ^bf ++++[>++++<-]>[->++++++>+++>+++++++<<<]>+.+.>+++++.>++++.--.<<-.++.>>++.
01:47:09 <fungot> ab5tract
01:47:15 <GregorR> Erm
01:47:18 <GregorR> Reload after I upload X_X
01:47:22 <Corun_> Oooooh. I see BF.
01:47:37 <GregorR> OK, NOW reload :P
01:47:40 <Corun_> I see bf which prints a string
01:47:46 <Corun_> (From a glance)
01:48:00 <Corun_> Oh, fungot's outputting it
01:48:01 <fungot> Corun_: forgot what it was....
01:48:34 * Corun_ goes to find his bf string print minimizer
01:48:36 <ab5tract> oerjan: thank you very much :D
01:49:09 <oerjan> you're welcome :)
01:50:48 <oerjan> hm minimizing huh?
01:51:15 <ab5tract> oerjan: my name looks pretty cool in my purposefully obtuse befunge http://gist.github.com/15658 (first file in the gist)
01:51:21 <oerjan> ^bf ++++[>++++<-]>[->++++++>+++++++>+++<<<]>+.+.>>+++++.<++++.--.<-.++.>++.
01:51:21 <fungot> ab5tract
01:51:40 <oerjan> i think that was 1 char less
01:51:59 <ab5tract> i haven't gotten around to properly obtusing the befunge boobies on that gist yet
01:52:11 <ab5tract> but it would be great to have some brainfuck boobies
01:52:17 <oerjan> ^bf ++++[>++++<-]>[->++++++>+++>+++++++<<<]>+.+.>+++++.>++++.--.<<-.++.>>++.
01:52:17 <fungot> ab5tract
01:55:36 <Corun_> Damn it
01:55:47 <Corun_> Can't find my ol' bf string program generator
01:55:54 * Corun_ goes searching in backups
01:56:26 <oerjan> Corun_: there's one in the esoteric file archive
01:56:36 <Corun_> Hmm?
01:56:41 <Corun_> Link?
01:56:42 <oerjan> although i did this one by hand
01:56:45 <oerjan> lessee
01:56:52 <Corun_> Could be mine, I guess
01:56:55 <Corun_> Written in haskell
01:57:23 <oerjan> no, a java one
01:57:27 <Corun_> Bah
01:57:39 <oerjan> http://esoteric.voxelperfect.net/files/brainfuck/util/textgen.java
01:57:59 <oerjan> if you have another you might want to submit it
01:58:17 <ab5tract> yeah i'd much rather see it in haskell
02:00:26 <ab5tract> oerjan: you scope those ( o Y o )'s ?
02:00:37 <oerjan> hm?
02:00:46 <ab5tract> http://gist.github.com/15658
02:01:38 <oerjan> what do you mean "scope"?
02:01:54 <ab5tract> "peep", "viddy", "check out"
02:02:03 <ab5tract> ;)
02:02:07 <oerjan> ah you're going all greek on me
02:02:48 <ab5tract> i think it should be the hello world of esolangs, but that's probably because i thought it up
02:03:06 <oerjan> oh well, in that case:
02:03:18 <oerjan> ^ul ( o Y o )aS
02:03:18 <fungot> ( o Y o )
02:04:06 <ab5tract> GregorR: thanks for adding the scheme values to the colormatch page
02:04:35 <ab5tract> and nice work on the links ;)
02:04:43 <ab5tract> oerjan: what lang is that?
02:04:59 <oerjan> underload
02:05:14 <oerjan> it's on two of the bots here
02:05:19 <oerjan> +ul ( o Y o )aS
02:05:19 <thutubot> ( o Y o )
02:05:36 <oerjan> because it's very easy to implement, i think
02:05:47 <oerjan> but still more readable than bf
02:06:05 <ab5tract> ah.
02:06:17 <oerjan> it has even been implemented _in_ bf
02:06:43 <GregorR> oerjan: Could you reload the page in IE7? It might actually work maybe.
02:07:10 <oerjan> GregorR: i've already looked at it, it seemed to work
02:07:17 <GregorR> Awesomeo.
02:07:19 <GregorR> Thanks.
02:07:21 <Corun_> All I found was this...
02:07:21 <Corun_> http://obfuscated.co.uk/files/bfrealprog.txt
02:07:39 <Corun_> And my haskell implementation was... Well
02:07:41 <Corun_> Awful
02:07:41 <Corun_> :-)
02:07:52 <Corun_> I'd just learnt haskell like a few weeks before
02:07:59 <oerjan> fungot ran that version before but it was too slow (especially since fungot uses a bf implementation in befunge), so fizzie wrote an underload interpreter in befunge for it
02:07:59 <fungot> oerjan: fnord oklopol: i meant use part of the expression of state machines. foof-loop can express what foof-loop can't, namely recursive processes.
02:09:17 <ab5tract> foof-loops for all!
02:09:36 <oerjan> oh wait
02:09:52 <oerjan> GregorR: everything seems to work _except_ picking color 2 manually
02:10:02 <GregorR> WTF?
02:10:03 <GregorR> That's weird.
02:10:43 <GregorR> Oh, that's actually borken everywhere :P
02:10:45 * GregorR fixes it.
02:11:17 * Corun_ is annoyed that he's lost that
02:12:46 <oerjan> GregorR: actually writing in the first doesn't quite work either, although picking does, and curiously writing into the first and _then_ selecting the first pick putton causes it to pick up what i wrote in _including_ for the second color :D
02:13:32 <oerjan> oh and the pick button for the second color does cause the rgb to be written in, just not actually used
02:14:04 <GregorR> Hrm, that last one must be IE-specific .
02:14:10 <GregorR> (Also, reload, I just uploaded one fix)
02:14:26 <GregorR> Oh wait, that last fix may have fixed that too.
02:15:17 <oerjan> oh and the second pick menu doesn't close automatically on selection, though the first one does
02:15:29 <oerjan> i'll recheck
02:16:56 <GregorR> That's bizarre >_>
02:16:57 <oerjan> oh, now things work better except that pressing return doesn't cause written in values to take, i have to actually change focus with the mouse
02:17:30 <GregorR> Well, that's because it's onchange (AFAIK that's why anyway)
02:18:20 <oerjan> well it doesn't change just by writing in
02:20:24 <GregorR> That's because that's not how onchange works :P
02:20:32 <oerjan> that seems to be the only remaining flaw
02:20:49 <GregorR> I guess I could do onkeypress *shrugs*
02:20:57 <GregorR> It would run it more often than necessary, but *eh*
02:21:22 <oerjan> well selecting check match works. couldn't you make return do that?
02:21:47 <oerjan> even with focus in a text field
02:22:34 -!- ab5tract has quit ("http://www.mibbit.com ajax IRC Client").
02:22:43 <GregorR> Sure *shrugs*
02:23:15 <oerjan> tabbing works though
02:24:02 <oerjan> eek that was a particularly horrible green/pink combination
02:25:07 <oerjan> i think those two colors must be the worst :D
02:25:38 <GregorR> I agree.
02:25:42 <GregorR> Green + pink = instant barf.
02:25:45 <GregorR> Refresh, it updates on enter now.
02:26:36 <oerjan> i read somewhere that victorians considered green and orange to match
02:26:54 <oerjan> i haven't managed to get your NN to agree yet :D
02:27:10 <GregorR> Heh
02:27:45 -!- ENKI-][ has quit (Read error: 104 (Connection reset by peer)).
02:27:57 <oerjan> it works
02:28:18 <GregorR> ^^
02:31:09 <oerjan> hey i found one
02:31:29 <oerjan> #ED820A and #456D0E
02:33:36 -!- ENKI-][ has joined.
02:34:16 <oerjan> so apparently it accepts _some_ green/orange combinations
02:35:07 <oerjan> aha!
02:35:20 <oerjan> switching them causes it to no longer accept it
02:36:15 <oerjan> GregorR: your network decisions are not symmetric :/
02:36:36 <GregorR> Yeah, I know >_>
02:38:49 -!- Corun_ has quit ("Corun exited with status -65, a healthy resting heart rate, Keith.").
02:56:48 -!- ENKI-][ has quit (Read error: 110 (Connection timed out)).
03:57:26 <oerjan> +ul (::a:aa::a)((^):a)~*^(~aS:^):^
03:57:26 <thutubot> ((((((^))))))(((((^)))))(((((^)))))(((^)))((^))((^))(^) ...a out of stack!
04:22:44 -!- immibis has joined.
04:24:56 -!- revcompgeek has joined.
04:26:22 <revcompgeek> what do you guys think of BRZRK? http://www.esolangs.org/wiki/BRZRK
04:26:31 -!- immibis_ has joined.
04:27:11 <revcompgeek> what do you guys think of BRZRK? (http://www.esolangs.org/wiki/BRZRK)
04:27:19 <revcompgeek> what do you guys think of BRZRK? (http://www.esolangs.org/wiki/BRZRK )
04:37:31 <Jiminy_Cricket> What does BRZRK stand for?
04:37:44 <psygnisfive> ...
04:37:46 <psygnisfive> berzerk
04:37:47 <psygnisfive> duh
04:38:07 <psygnisfive> its Web2.0
04:38:13 <psygnisfive> here are no vowels in web 2.0
04:38:16 <psygnisfive> er..
04:38:21 <psygnisfive> wb 2.0
04:38:25 <Jiminy_Cricket> lol
04:40:26 <revcompgeek> ll?
04:40:45 <revcompgeek> It doesn't stand for anything.
04:41:01 <revcompgeek> I couldn't think of anything interesting
04:42:26 <GregorR> Don't you mean UNIX?
04:42:33 <GregorR> There are no vowels in UNIX :P
04:43:38 -!- immibis has quit (Read error: 110 (Connection timed out)).
04:43:59 * oerjan sees a great need
04:45:20 <oerjan> bah
04:48:45 <psygnisfive> UNIX is web 2.0, dude
04:48:54 <psygnisfive> so is Czech
04:49:07 <oerjan> no, UNIX is web -1.0
04:49:13 <oerjan> it was here before the web
04:49:26 <oerjan> possibly even web -2.0
04:50:23 <psygnisfive> nah,unix is SO web 2.0
04:50:39 <psygnisfive> web 2.0 is all about the clean, simple, minimal interfaces and network applications and shit
04:50:42 <psygnisfive> and thats so unix dude
04:50:50 <psygnisfive> shells? clean simple and minimal
04:51:04 -!- immibis_ has quit (Read error: 104 (Connection reset by peer)).
04:51:05 <psygnisfive> unix originated as time sharing shit? network applications.
04:51:06 <mbishop> unfortunately unix is no longer about being simple and minimal
04:51:16 <psygnisfive> really, Web 2.0 is UNIX 2.0
04:51:19 <mbishop> Pike pointed this out
04:51:24 <psygnisfive> silence!
04:51:41 <mbishop> once CAT had more functions than just concatenation, the unix ideal was dead :P
04:51:58 <psygnisfive> thats stupid
05:12:58 -!- revcompgeek has quit ("http://www.mibbit.com ajax IRC Client").
05:16:10 <mbishop> your stupid!
05:16:34 <mbishop> (only 24 minutes late!)
05:17:11 <oerjan> or eons, dependently on how you count
05:18:36 <psygnisfive> especially if you live inside a computer!
05:18:41 * psygnisfive taps icon
05:18:42 <psygnisfive> REBOOT!
05:18:45 * psygnisfive transforms
05:21:31 <mbishop> INCOMING GAME
05:21:40 <psygnisfive> :D
05:21:41 <psygnisfive> <3you
05:26:02 <oerjan> +help
05:26:22 <oerjan> bah
05:45:48 -!- psygnisfive has quit (Remote closed the connection).
06:12:30 -!- megatron has joined.
06:12:38 -!- moozilla has quit (Nick collision from services.).
06:13:47 -!- megatron has changed nick to moozilla.
06:16:29 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | err.
06:42:37 -!- oerjan has quit ("leaving").
07:16:32 -!- olsner has joined.
07:29:57 -!- psygnisfive has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:00:10 -!- olsner has quit ("Leaving").
09:12:16 -!- lilja has joined.
10:05:06 -!- M0ny has joined.
10:05:37 <M0ny> plop
10:13:51 -!- Chase-san has joined.
10:15:22 <Chase-san> With the PESOIX API how do you go back from it to the standard language you we're programming in, as I don't see a call to return from just printing everything (including the >[.>,]+- etc)
10:17:18 <Chase-san> even a rather round about way would be useful to know (I mean really its a esoteric language ;)
10:19:10 <Chase-san> ...
10:19:12 <Chase-san> doi
10:19:15 <Chase-san> i'm dumb hah
10:19:28 <Chase-san> kay nevermind
10:19:32 -!- Chase-san has quit.
10:30:13 -!- lilja has quit ("KVIrc 3.2.0 'Realia'").
10:44:21 -!- mbishop_ has joined.
10:45:10 -!- mbishop has quit (Read error: 104 (Connection reset by peer)).
10:56:39 -!- KingOfKarlsruhe has joined.
11:08:38 -!- moozilla has quit (Read error: 60 (Operation timed out)).
11:10:09 -!- moozilla has joined.
11:16:20 -!- moozilla has quit (Read error: 60 (Operation timed out)).
11:20:44 -!- moozilla has joined.
11:37:27 -!- megatron has joined.
11:37:35 -!- moozilla has quit (Nick collision from services.).
12:16:29 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | my hexprint uses much [--------------->+<] alike code and that's slow in slow mode but i like to watch memory.
12:58:52 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
12:59:09 -!- Judofyr has joined.
13:04:08 <ehird> psygnisfive: btw, you're wrong re: unix
13:04:27 <ehird> the unix aesthetic was dead way before the end of the 70s
13:04:34 <ehird> unfortunately.
13:04:57 <ehird> GregorR: /colormatch/=404
13:05:02 <ehird> err
13:05:03 <ehird> nm
13:29:51 -!- psygnisfive has quit (Remote closed the connection).
13:38:10 -!- sebbu has quit (Read error: 60 (Operation timed out)).
13:41:43 -!- sebbu has joined.
14:20:34 -!- jix has joined.
14:37:09 <AnMaster> wtf
14:37:21 <AnMaster> seems like some aircraft is flying low over here
14:37:27 <AnMaster> jet it sounds like
14:37:57 <ehird> AnMaster: They're dropping a bomb on you as part of their master plan to eradicate funge.
14:38:04 <ehird> Run. Don't look back. GO NOW!
14:38:05 <AnMaster> hahah
14:38:30 * AnMaster has quit (Read error: 60 (Operation timed out))
14:38:40 <ehird> Fuck.
14:38:45 <ehird> He was really annoying but he didn't deserve to die D:
14:38:48 <ehird> (Most of the time.)
14:38:55 <ehird> ... hmm, sure is peaceful in here...
14:39:02 <ehird> I could get used to this.
14:39:20 * AnMaster (n=AnMaster@unaffiliated/anmaster) has joined #esoteric
14:39:26 <ehird> AnMaster: Hah. Imposter.
14:39:27 <AnMaster> wtf was up with my router
14:39:33 <ehird> You're the guy who dropped the bomb!
14:39:35 <ehird> AREN'T YOU
14:39:44 <AnMaster> no, the aircraft is still up there
14:39:48 <ehird> AnMaster: Well, thank you very much.
14:39:50 <ehird> Oh.
14:39:53 <ehird> Damn.
14:40:00 <ehird> ... Meanwhile.
14:41:58 <ehird> http://www.zedshaw.com/blog/2008-10-28.html BREAKING NEWS: Zed Shaw shows elements of humanity.
14:42:48 <AnMaster> wtf sounds like there is a helicopter now too
14:43:00 <ehird> AnMaster: It's just the Funge Elimination Team.
14:43:05 <ehird> Relax, sit back. It'll be alright.
14:43:59 <AnMaster> ehird, nah my best guess is quite a lot more worrying actually... One of the countries high security prisons is located around 10 km or so from this town... maybe someone escaped
14:44:00 <ehird> http://arxiv.org/abs/0810.5056 Only the 53rd P != NP paper on arxiv today!
14:44:15 <ehird> AnMaster: You escaped, you were put in for crimes against fungemanity
14:44:29 <AnMaster> no not me.
14:50:42 <ehird> http://zephyrfalcon.org/weblog/arch_d7_2004_03_27.html#e536 python for commodore 64
14:57:48 <AnMaster> heh
14:58:23 <ehird> eral
14:58:25 <ehird> :P
14:58:27 <ehird> *real
14:58:30 <AnMaster> yeah
14:58:34 <AnMaster> I guess scaled down
14:58:37 <AnMaster> or it wouldn't fit
14:59:14 <ehird> no duh
15:05:38 <ehird> Ummmm.
15:05:39 <ehird> http://ccl.clozure.com/blog/?p=28
15:05:42 <ehird> Minimum donation...$500.
15:08:49 <AnMaster> they won't get any then
15:08:53 <AnMaster> I bet
15:09:06 <ehird> AnMaster: Of course they will; BigCorps use Common Lisp.
15:09:23 <ehird> But they would get a lot more if they didn't ask for $500 or more, naturally.
15:09:47 <AnMaster> h
15:09:49 <AnMaster> hm*
15:22:16 -!- jix has quit ("CommandQ").
15:22:27 <ehird> http://www.scientificblogging.com/news_releases/beatles_unknown_hard_days_night_chord_mystery_solved_using_fourier_transform *g*
15:23:39 <fizzie> Are you having some sort of blog hour or what?
15:23:55 <ehird> fizzie: Not really.
15:24:13 <ehird> Reddit is just amusing me more than usually today :p
15:24:34 <ehird> AnMaster: Think I should write that quadratic probe stuff for cfunge now?
15:25:34 <AnMaster> ehird, well if you want. I was reading up on different probing models and such
15:25:49 <ehird> AnMaster: I'd go for cuckoo hashing ideally, though, really, the best thing to do would be the static array stuff :-P
15:26:08 <AnMaster> ehird, yes I think trying a static array would be good
15:26:28 <ehird> {x in (...) and y in (...), then foo[x][y]} has got to be a lot faster than {hash (x,y); look up in hash array, traverse list until key=(x,y), return value}
15:26:48 <AnMaster> for reference mycology is about 200 chars wide and 800 lines. fungot much less
15:26:49 <fungot> AnMaster: sweet hairy moses i hope it's worth the 7 though.)
15:26:56 <ehird> I'm obviously not very well versed with the cfunge code, though, so I probably couldn't do that
15:26:57 <AnMaster> fungot stores stuff in negative funge space iirc
15:26:58 <fungot> AnMaster: isometric has been updated: http://www.iro.umontreal.ca/gambit/. what about ( for-each display what) ( newline)
15:27:06 <fizzie> AnMaster: Yes, but not much stuff.
15:27:13 <AnMaster> ehird, I could do it
15:27:14 <ehird> fizzie: how often does it access negative spaec?
15:27:15 <ehird> *space
15:27:20 <AnMaster> fizzie, where does it store all the data then?
15:27:26 <ehird> AnMaster: Yeah, I was just saying that i'll stick to other stuff :P
15:27:53 <fizzie> Well, the programs are stored in the positive space, from y=2000 downwards. But they are copied on line 8 before execution, anyway.
15:28:30 <fizzie> The one thing that really uses negative space a lot is the Underload interp, because the stack starts at x=0 (approximately) and grows to the left.
15:28:37 <AnMaster> ehird, oh and having all the entries being of a fixed size helps quite a bit I noted, malloc overhead was quite huge (which is worse than quite large, but also worse grammatically), so adopting the mempool system should be useful
15:28:57 <ehird> AnMaster: I'm not sure a mempool is really always useful.
15:29:00 <AnMaster> the existing mempool system should be easy to change for a different object size
15:29:18 <AnMaster> ehird, well depends. I did profile it for the case I wrote it
15:29:30 <AnMaster> both in term of speed and memory usage
15:30:02 <fizzie> Apart from the Underload stack (and possibly program -- depends on the program) the only thing in negative space are those str: strings and the "is my conversation looping" things.
15:30:29 <ehird> fizzie: Well, underload stack is worth optimizing for.
15:30:45 <ehird> AnMaster: btw, i would make the array have [0] = minus something
15:30:48 <ehird> so you get a bit of minus space
15:31:19 <AnMaster> for mycology. memory usage: before mempool: 7.8 MB, after mempool: 6.5 MB; speed: slight speed up, not significant enough to be sure though
15:31:20 <fizzie> Underload could probably be somewhat optimized by optimizizing the Befunge code; it was quite proof-of-concept what I'm now using.
15:31:25 -!- Azstal has joined.
15:31:30 <AnMaster> ehird, yes that sounds good for array
15:31:34 <ehird> AnMaster: Well, memory usage will shoot up for a static array.
15:31:58 <AnMaster> ehird, yes of course, but one issue before mempool was the malloc overhead
15:32:09 <ehird> yeah
15:32:14 <AnMaster> and since static array will be one huge chunk you will only get overhead once
15:32:24 <AnMaster> or not at all, depending on how you implement it
15:32:25 <ehird> Hm. ais523 hasn't been here for two days. Meh.
15:33:09 <AnMaster> static array should be quite easy
15:33:50 <AnMaster> just wish my hands weren't freezing :/
15:35:12 <AnMaster> now what was it you said fizzie about testing "within static array bounds"?
15:35:15 <AnMaster> power of tow
15:35:17 <AnMaster> two*
15:35:18 <AnMaster> hah
15:35:24 * AnMaster reads up
15:35:28 <ehird> AnMaster: fizzie said a bitmask thingy
15:35:39 <ehird> also, start Eclipse and put your hands next to the computer.
15:35:42 <ehird> Should warm them up nicely.
15:35:44 <fizzie> "if (x & ~0x3ff)" does "if (x >= 0 && x < 1024)", basically.
15:35:55 <AnMaster> ah yes
15:36:09 <AnMaster> ehird, haha
15:36:26 <AnMaster> I actually use kate mostly when working on cfunge
15:36:32 <fizzie> The resident GCC person could probably tell how much of that kind of stuff GCC does automagically, when constant expressions and simple variable references are considered.
15:36:42 <AnMaster> fizzie, ais?
15:36:49 <AnMaster> well he isn't here, ehird said so
15:36:51 <ehird> ais523 doesn't actually know gcc
15:36:54 <ehird> he just learned it to write gcc-bf :-P
15:37:02 <ehird> I think pikhq may be a gccy-person.
15:37:03 <ehird> Whatever.
15:37:35 <ehird> AnMaster: For full disclosure, I'm going to be editing cfunge with an editor I paid money for. You can reject my patches for dirty proprietaryism at your wish. :-P
15:37:44 <ehird> FUNGE_ATTR_FAST int ght_insert(ght_hash_table_t * restrict p_ht,
15:37:44 <ehird> fungeCell p_entry_data,
15:37:49 <ehird> isn't that arg meant to line up with the first...?
15:38:05 <AnMaster> ehird, yes it is. Probably something got renamed
15:38:14 <AnMaster> and I used sed to do it
15:38:21 <AnMaster> causing stuff to get misaligned
15:38:28 * AnMaster hacks on static array
15:39:13 <AnMaster> should it be malloced block or truly static array hm.
15:39:21 <AnMaster> probably doesn't matter meh
15:39:22 <ehird> AnMaster: truly static
15:39:40 <AnMaster> ah yes, it could matter for speed actually
15:39:41 <AnMaster> so yeah
15:40:34 <AnMaster> hm the bitmask trick is nice but kind of messy for when you want negative funge space
15:40:46 <AnMaster> in fact bitmasks on signed numbers are messy
15:40:58 <ehird> Yeah, well, optimization is messy.
15:41:03 <ehird> AnMaster: Just don't have it be [-x]
15:41:13 <ehird> you're not going to access negative array indices, surely
15:41:18 <AnMaster> indeed :P
15:41:28 <AnMaster> rather adding offset then checking
15:41:29 <ehird> so shift it up to the index you'll actually access
15:41:30 <ehird> yeah
15:41:31 <ehird> then check
15:41:34 <AnMaster> seems like the cleanest way
15:41:47 <AnMaster> and using non-offset for the hash for outer funge-space ;)
15:42:09 <ehird> yes
15:42:58 <ehird> AnMaster: Hm. I can get out of licensing my code as GPL3 by making it a dynamic library that's linked to, can't I? :-P~
15:43:04 <AnMaster> fizzie, how far into negative funge space does fungot go? (grammar fail)
15:43:04 <fungot> AnMaster: but use it as a simple evaluator" at http://paste.lisp.org/ display/ fnord
15:43:47 <fizzie> AnMaster: y=-15 is the topmost point it touches, but as far as the X axis is considered, it depends completely on the Underload stack length.
15:43:49 <AnMaster> ehird, well for the hash library it is actually LGPL, since I didn't write it, but used other code. And that is documented.
15:44:04 <ehird> AnMaster: that's not a grammar fail, btw
15:44:10 <AnMaster> oh?
15:44:21 <ehird> probably the most idiomatic thing you've said today :-P it's not very formal, though
15:44:46 <ehird> fizzie: funge stack length 10 = ?
15:45:07 <fizzie> If you're going to play around with the interpreter, I probably should write some Funge for fungot. There's at least the ignore-list, the HTTP client and more languages to implement.
15:45:07 <fungot> fizzie: the timestamp which i ignored and made my own brainfuck in it's place
15:45:24 <fizzie> Hmm, what about the Funge stack?
15:45:38 <oklopol> morning all.
15:45:50 <ehird> fizzie: err
15:45:51 <ehird> i meant
15:45:53 <oklopol> negative funge space? hmm prolly means exactly what i think it does.
15:45:56 <ehird> underload stack length 10 = how far in negative spae
15:45:57 <fizzie> oklopol: A bit late to be morning.
15:46:18 <oklopol> sure feels like morning after sleeping through 6 hours of lectures
15:47:01 <oklopol> (i did finish my books though)
15:47:03 -!- Asztal has quit (Connection timed out).
15:47:04 <fizzie> ehird: Well, the Underload stack is strings. So for (foo)(bar) the 'b' character would be in x=-8.
15:47:19 <ehird> ah
15:47:28 <AnMaster> hrrm I need to memset the array to be filled with space on startup
15:47:29 <ehird> fizzie: thing is... the underload stack is a good target for optimization
15:47:51 <ehird> fizzie: i think you should move it to positive space.
15:47:55 <ehird> AnMaster: yeah
15:48:00 <ehird> {} are immutable in C, right? I never really used those literals.
15:48:26 <fizzie> It makes the stack underflow checks more complicated, though; currently there's just some 0`|s.
15:48:32 <AnMaster> ehird, well depends on what you mean with immutable
15:48:43 <ehird> AnMaster: can you change the shit in it at runtime ;-)
15:48:57 <ehird> fizzie: Yea, but the more negativespace in the static array the less positive space
15:49:02 <ehird> and I'd say positive space is way more common than negativespace
15:49:05 <AnMaster> ehird, depends on where you assign the {}. Also look at the macro in vector.h
15:49:19 <AnMaster> so yes you can stick variables into it
15:49:28 <ehird> i mean
15:49:34 <ehird> foo = {1,2,3}
15:49:34 <AnMaster> unless you mean like code blocks
15:49:38 <ehird> you can't do foo[0] = 2
15:49:43 <ehird> as far as I recall
15:49:45 <fizzie> You can't do "foo = {1,2,3}" either.
15:49:47 <ehird> as i said, that is one part of c i never touched
15:49:48 <AnMaster> int foo[] = {1,2,3}
15:49:51 <AnMaster> yes you can
15:49:52 <ehird> fizzie: yes, you can
15:49:54 <AnMaster> const int foo[] = {1,2,3}
15:49:55 <AnMaster> no you can't
15:49:56 <AnMaster> :)
15:50:00 <fizzie> That's not "foo = {1,2,3}".
15:50:07 <ehird> fizzie: i was omitting the type for brevity
15:50:10 <ehird> AnMaster: well then
15:50:22 <ehird> int staticfs[] = {{' ', ', ', ', ', ', ', ', ',...},...}
15:50:26 <ehird> it'll be a huge file fer sure...
15:50:34 <ehird> but less runtime overhead
15:50:47 <fizzie> I wouldn't be storing those spaces in it.
15:50:55 <fizzie> Runtime overhead at initialization is probably a non-issue.
15:51:00 <AnMaster> ehird, err I was writing the static bit, I thought you were doing the hash bit?
15:51:08 <ehird> AnMaster: right, right
15:51:10 <fizzie> While a megabyte of spaces in the binary is just... ugly.
15:51:11 <ehird> doesn't mean i can't talk ab-
15:51:12 <ehird> hi ais523
15:51:15 <AnMaster> memset(&static_space, ' ', sizeof(static_space));
15:51:20 <AnMaster> that was what I was doing
15:51:23 <ehird> ais523: I'm actually workign with AnMaster to optimize cfunge.
15:51:42 <ehird> *crickets*
15:51:46 <AnMaster> heh
15:51:49 <ais523> hi ehird, are you still ehird?
15:51:53 <ehird> nopw
15:51:54 <ehird> *nope
15:51:56 <ehird> how did you guess
15:52:02 <fizzie> It's the bizarro-ehird.
15:52:16 <ehird> AnMaster: anyway, why use memset instead of a {} literal?
15:52:28 <ehird> it'd surely be faster using a literal, as nothing would happen at runtime
15:52:39 <fizzie> Er, you'd still be loading those spaces from the file.
15:52:47 <fizzie> It might well be faster to memset it instead of that.
15:52:47 <AnMaster> ehird, very simple, for a static array it would store the whole thing in binary and load it from disk
15:52:57 <ehird> true, true.
15:53:06 <AnMaster> so 1) what fizzie said 2) the code would be quite large
15:53:06 <ehird> alright then
15:53:06 <fizzie> For another thing, if you change the dimensions of the array, you'd need to modify the initializer.
15:53:21 <ehird> fizzie: now that's just an argument to give c proper macros :)
15:53:46 <fizzie> But as far as memset(&static_space, ' ', sizeof(static_space)); goes, that sets all the bytes to 0x20.
15:53:56 <fizzie> I'm assuming your static_space cells are not byte-sized, though.
15:53:59 <ehird> wait.
15:54:01 <ehird> AnMaster
15:54:06 <AnMaster> ehird, ?
15:54:07 <ehird> static_space is a nested array
15:54:17 <ehird> is it not?
15:54:19 <ehird> wait, no
15:54:20 <ehird> it'd be faster without
15:54:24 <ehird> actually, wait
15:54:25 <AnMaster> should it be?
15:54:26 <AnMaster> static fungeCell static_space[FUNGESPACE_STATIC_X * FUNGESPACE_STATIC_Y];
15:54:28 <ehird> hmm
15:54:28 <ehird> no
15:54:29 <AnMaster> was what I wrote
15:54:30 <ehird> you're right
15:54:34 <ehird> sorry, wasn't thinking
15:54:41 <AnMaster> it's ok ehird :)
15:54:49 <fizzie> But you need to initialize it manually, not with memset.
15:55:06 <AnMaster> fizzie, ah right, don't want to set every char
15:55:16 * AnMaster fixes
15:56:29 <AnMaster> for (size_t i = 0; i < sizeof(static_space) / sizeof(fungeCell); i++)
15:56:29 <AnMaster> static_space[i] = ' ';
15:56:30 <AnMaster> for now
15:56:54 <ehird> errrrrrrrrrrrrrrrrrr
15:57:02 <ehird> why not memset? oh, wait
15:57:05 <ehird> fungeCell can > char, right
15:57:07 <ehird> kay
15:57:21 <AnMaster> ehird, sizeof(fungeCell) == 4 or 8 bytes. Using char wouldn't work :/
15:57:25 <AnMaster> at all
15:57:29 <ehird> yah
15:57:40 <fizzie> Anyway, yes, the Underload stack could be moved to begin at whatever the maximum positive value in that static array is, for maximum cfungeyness.
15:57:56 <AnMaster> like all fingerprints would be 1 char for example, and then Mike Riley would surely have used all the printable ones already
15:58:08 <AnMaster> ;P
15:58:41 <ehird> AnMaster: that would be great
15:58:47 <ehird> also...
15:59:02 <ehird> relevant to AnMaster, MikeRiley, and funge-108 (even though i dislike it, but whatever) -
15:59:09 <AnMaster> hm?
15:59:12 <ehird> a response to the "but I can't keep a URI up forever!" -
15:59:15 <ehird> tag: uris
15:59:23 <ehird> step 1. pick a domain or an email address that you owned on day X
15:59:34 <ehird> step 2. if X.dayofmonth == 0, chop off the day of month
15:59:38 <ehird> err
15:59:39 <ehird> == 1
15:59:40 <ehird> :-P
15:59:43 <ehird> and chop off the day
15:59:47 <ehird> step 3. if X.month == jan, chop off month
15:59:58 <ehird> so "I owned foo@bar.com at jan 1 2008" = just 2008
15:59:59 <ehird> then
16:00:14 <fizzie> You're missing "step 3b. if X.year == 1, chop off year".
16:00:15 <ehird> tag:EMAILORDOMAIN,OWNEDAT:ARB
16:00:21 <ehird> fizzie: heh
16:00:23 <ehird> but, e.g.
16:00:39 <ehird> tag:mikerileys@email.com,2009,HorribleFingerprint5000
16:00:42 <AnMaster> hehe
16:00:59 <AnMaster> oh and you are missing step 4 and 5
16:01:00 <ehird> is a persistent, permanent URI that doesn't depend on anything changing (you can't retroactively not have that email at that time unless you're in featherworld)
16:01:02 <AnMaster> 4. ???
16:01:05 <ehird> so, yeah.
16:01:05 <AnMaster> 5. PROFIT!
16:01:09 <ehird> AnMaster: tired meme is tired
16:01:22 <AnMaster> all your memes are belong to us
16:02:19 <ehird> it has to be noted that if you DO own a domain serving web content that you think you can reasonably keep up for a long while, you should use an http uri instead for the whole "put it in your browser and get docs" thing.
16:02:33 <ehird> Still good practice to put the year/month in there, though, in case you ever use the same name twice.
16:02:51 <ehird> (e.g. http://rcfunge98.com/2009/01/HorribleFingerprint5000)
16:03:01 <ehird> oops i just clicked that
16:03:04 <ehird> now it's in his server logs :D
16:03:16 <ais523> I'll probably use an email-based tag: URL for IFFI, I think
16:03:26 <ehird> yes
16:03:32 <AnMaster> ehird, oh also the FUNGE_ATTR_FAST attribute is actually quite useful, on x86. It tells gcc to use a "pass arguments in register" calling convention on x86 (on other platforms that is the default calling convention usually). Profiling shows it helps a bit on x86. Just in case you wondered. :)
16:03:54 <ehird> AnMaster: If you say any more I will kill you for microoptimizing.
16:03:59 <ehird> With a fork.
16:04:01 <ehird> A rusty fork.
16:04:15 <AnMaster> a rusty fork of cfunge? ;)
16:04:19 <fizzie> That's not an optimal tool for killing.
16:04:25 <ehird> fizzie: It is, however, painful.
16:04:26 <ehird> Very painful.
16:04:42 <fizzie> You should first apply a file to the fork to sharpen it; you'll shave several centiseconds off the killing operation.
16:04:49 <ehird> Great idea
16:04:53 <ehird> It'll also be more painful.
16:04:56 <ehird> I will also use a spoon.
16:09:59 <AnMaster> hm, static array coded and compiles *tests*
16:10:26 <AnMaster> runs!? Wait... works on first try. Coded in C... Something must be wrong ;)
16:10:35 <ehird> o_O
16:10:38 <ehird> AnMaster: is it fast? :-P
16:10:59 <AnMaster> ehird, debug build, so don't know yet, just checking valgrind likes it and so on so far
16:11:22 * AnMaster builds optimised build
16:12:37 <AnMaster> ehird, about same speed, with hash the time varies more between fastest and slowest. With static the "spread" is smaller.
16:12:38 <AnMaster> hrrm
16:12:45 <ehird> Hmm.
16:12:48 <ehird> It should be a lot faster, really.
16:13:00 <AnMaster> http://rafb.net/p/rdV5Hn36.html
16:13:00 <ehird> You're cutting out the hash function, all the checks of the hashtable, the linked list traversal...
16:13:10 <AnMaster> ehird, maybe the check is bad then
16:13:14 * AnMaster looks
16:13:18 <ehird> There's probably a flaw, yeah.
16:13:44 <AnMaster> ah well at least the world is sane then. It *didn't* work on first try ;)
16:13:59 <ehird> :-)
16:14:22 <AnMaster> Breakpoint 1, fungespace_is_static (x=63, y=63) at /home/arvid/src/cfunge/trunk/src/funge-space/funge-space.c:123
16:14:22 <AnMaster> 123 if ((x & FUNGESPACE_STATIC_MASK_X) && (y & FUNGESPACE_STATIC_MASK_Y))
16:14:22 <AnMaster> (gdb) s
16:14:22 <AnMaster> 126 return false;
16:14:23 <AnMaster> right
16:14:53 <AnMaster> hrrm
16:15:18 <AnMaster> wait. I seem to be missing a ! there
16:15:24 <ehird> *g*
16:16:07 <fizzie> What you want is something like "if ((x & ~0x3ff) || (y & ~0x3ff)) { use_the_hash_instead(); }" -- are there any bits in either coordinates outside the range.
16:16:33 <AnMaster> hm right
16:17:42 <AnMaster> fizzie, wait, what did you mean with " are there any bits in either coordinates outside the range."?
16:18:13 <fizzie> Well, "x & ~0x3ff" will be nonzero only for values that are <0 or >0x3ff.
16:18:41 <AnMaster> um yes
16:19:24 <fizzie> For any value in [0, 0x3ff] only the ten least significant bits will be set, and those will be cleared by the masking; for any value that's <0 or >0x3ff there's at least some bits outside those ten least-significant which will still be there, making the result nonzero.
16:19:50 <AnMaster> you mean it could return "is in static" when it isn't?
16:19:56 <fizzie> The "outside the range" comment might've been a bit imprecise.
16:21:00 <ais523> why bother using &~ when you have >
16:21:11 <ais523> the compiler willl optimise them into the same thing anyway...
16:21:12 <ehird> ais523: speed, supposedly
16:21:12 <fizzie> ais523: It's clearer. :p
16:21:14 <ais523> write the clearer one
16:21:56 <fizzie> Did I not say that the one who deals with compilers will tell you how much the compiler will optimize that kind of stuff. :p
16:22:30 <ais523> a good rule of thumb: the compiler is better at silly low-level optimisation tricks than you are
16:23:16 <oklopol> i find that pretty clear too
16:23:33 <ais523> but yes, I find &~0x3ff relatively clear
16:23:51 <ais523> but would still find ((unsigned)x>=0x400) clearer
16:23:57 <ais523> and it will be compiled into the same thing
16:24:09 <ais523> I'll be back soon, rebooting, just upgraded the kernel
16:25:37 <oklopol> i wouldn't find that clearer, because i'd think (unsigned)x meant abs() at first.
16:26:24 <ehird> you don't program c, though.
16:26:37 <fizzie> Yes, and I'd start to wonder about C's conversion rules. "(unsigned)x" is not exactly "interpret the bits of x as unsigned".
16:26:58 <fizzie> I'm sure it does the right thing; but I'd wonder.
16:27:24 <fizzie> About the only thing I'd find completely unmistakable would be the (x >= 0 && x <= 1023).
16:27:27 <oklopol> ehird: i don't, but that's still not something i usually do, just like to announce it when i fail.
16:28:51 <AnMaster> BAD: z reflects
16:28:51 <AnMaster> >nvw>#;:;> ;$0 0 6: 8. 3$
16:28:53 <AnMaster> hrrm
16:29:35 <ais523> fizzie: (unsigned)x is "interpret the bits of x as unsigned" if you use two's complement
16:30:17 <AnMaster> huh z doesn't reflect for me
16:30:24 <AnMaster> in a small test.
16:32:00 <ais523> what does z do again?
16:32:25 <fizzie> Explicit nop, wasn't it?
16:32:38 <AnMaster> what fizzie said yes
16:32:55 <oklopol> zzz
16:32:56 <AnMaster> takes one tick, space take no ticks
16:33:21 <oklopol> ugh my head hurts so much.
16:33:22 <AnMaster> however the odd thing is I didn't even get past the funge-93 part first
16:33:25 <AnMaster> really strange
16:34:24 <AnMaster> wait...
16:34:26 <AnMaster> duh
16:34:29 <AnMaster> found the issue
16:35:06 <AnMaster> static_space[x*y] != static_space[x*FUNGESPACE_STATIC_X*y]; XD
16:35:13 <ehird> lulz
16:35:48 <fizzie> And you might still want something more like [x+FUNGESPACE_STATIC_X*y].
16:35:50 <AnMaster> well that isn't totally correct either. segfault
16:35:52 <fizzie> Now to the bus. ->
16:35:54 <AnMaster> fizzie, yes
16:36:48 <AnMaster> ehird, ok, major speedup
16:36:53 <ehird> woop
16:36:58 <AnMaster> real 0m0.122s to real 0m0.059s
16:36:58 <ehird> AnMaster: from 0.11 to what
16:37:01 <ehird> oh. wow.
16:37:14 <ais523> AnMaster: is that for Mycology
16:37:16 <ehird> see, if you'd spent less time putting posix_ in functions and more time thinking about algorithms and structures :-P
16:37:22 <AnMaster> ais523, yes
16:37:23 <ais523> running Mycology in .059s is pretty impressive...
16:37:33 <ehird> ais523: he added a static array
16:37:36 <AnMaster> ehird, however it may still be buggy, need to test edge cases, such as when writing near the edge of the static space and so on
16:37:41 <ehird> for the most common boundaries
16:37:41 <ais523> I suggested that months ago IIRC
16:37:59 <ehird> ais523: pfft, everyone knows microoptimizations do far better
16:37:59 <ehird> :D
16:40:04 <AnMaster> ehird, also *reduced* memory usage, at least for mycology.
16:40:10 <ehird> Ha.
16:40:15 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
16:40:18 <ehird> AnMaster: I hope you've learned a lesson. :-P
16:40:31 <AnMaster> well not odd really that memory usage is reduced, less overhead
16:40:54 -!- bsmntbombdood has joined.
16:42:50 <AnMaster> ehird, one issue is I can't run valgrind on it
16:42:52 <AnMaster> $ valgrind ./cfunge ../mycology/mycology.b98
16:42:52 <AnMaster> valgrind: mmap(0x629000, 1067462656) failed in UME with error 22 (Invalid argument).
16:42:52 <AnMaster> valgrind: this can be caused by executables with very large text, data or bss segments.
16:43:00 <ehird> jrj
16:43:01 <ehird> *heh
16:43:08 <ehird> fixable, i'm sure.
16:43:30 <AnMaster> ehird, it only happened after I corrected the size of the array, it was too small before
16:43:39 <AnMaster> due to the same forgetting *FUNGESPACE_STATIC_X
16:44:06 <ais523> not being able to run valgrind on something may indicate a deeper problem...
16:44:13 <AnMaster> it seems to be 128 mb now
16:44:18 <AnMaster> wtf
16:44:29 <ais523> also, 1067462656 bytes is a lot... that's about 1GB of memory
16:44:33 <ais523> not everyone has that much...
16:44:45 <AnMaster> indeed for a static array it is too much
16:45:11 <ais523> you're lucky the BSS segment was invented in that case, otherwise you'd have a 1GB executable...
16:45:21 <AnMaster> yes this doesn't work hrrm
16:45:22 <ehird> 1GB???
16:45:28 <ehird> your static array is too big!!
16:45:30 <ehird> what is it set at ??????
16:45:58 <AnMaster> ehird, 512x255
16:46:10 <ais523> well 512x255 doesn't come to 1GB
16:46:12 <AnMaster> err 511*255
16:46:20 <ais523> anyway, it's the mmap which had the 1GB argument, not the array
16:46:24 <AnMaster> ais523, true, but remember each line needs 255 entries
16:46:29 <ehird> AnMaster: it doesn't
16:46:33 <ehird> just make it only handle smaller lines
16:46:49 <AnMaster> well mycology is about 200 chars wide iirc
16:47:03 <AnMaster> so we can loose power of two if we want
16:47:12 <AnMaster> and it is about 700 lines long
16:49:11 -!- jix has joined.
16:50:31 <AnMaster> wait a sec
16:50:34 <AnMaster> something is wrong here
16:50:38 <AnMaster> #define FUNGESPACE_STATIC_X 255
16:50:39 <AnMaster> #define FUNGESPACE_STATIC_Y 511
16:50:44 <AnMaster> then the array should be:
16:50:47 <AnMaster> static fungeCell static_space[FUNGESPACE_STATIC_X * FUNGESPACE_STATIC_Y];
16:50:49 <AnMaster> right?
16:50:52 <ehird> yes.
16:50:54 <ehird> Durr.
16:51:00 <AnMaster> right
16:51:34 <oklopol> looks hot
16:51:54 <oklopol> but how will that help the society?
16:52:01 <ehird> in a hot way, presumably.
16:52:36 <oklopol> how hot exactly?
16:52:42 <AnMaster> huh
16:52:51 <ehird> oklopol: depends.
16:52:53 * AnMaster adds some valgrind macros in the code
16:52:55 <oklopol> how are doubles returned in stdcall
16:52:56 <oklopol> ?
16:53:02 <ehird> in a hot way, I'm guessing?
16:53:39 <oklopol> std's are not all that hot
16:53:54 <ehird> does anyone want to translate all this okoese into something actually meaningful?
16:54:00 <ehird> i'm guessing hot is related to okoality.
16:54:16 <oklopol> "how are doubles returned in stdcall?" was really my only point, and that was a question
16:55:01 <oklopol> "std's are not all that hot" was a simple std double entendre, the original hotness+society was just general okoese, i won't attempt to translate it into your human languages
16:55:42 <ais523> oklopol: did you just come up with a pun that only works in a non-existent language?
16:55:44 <ais523> if so, I approve
16:56:15 <AnMaster> wtf I end up with memory corruption elsewhere.
16:56:17 <oklopol> the hotness+society one?
16:56:22 <ais523> yes
16:56:29 <oklopol> yeah sure that's so much fun if you knew okoese!
16:56:42 <oklopol> but really, are they returned in like floating point registers?
16:56:55 <ais523> I don't know how stdcall works, really
16:57:03 <ais523> there are lots of calling conventions floating around
16:57:11 <AnMaster> (gdb) print &static_space
16:57:11 <AnMaster> $5 = (fungeCell (*)[130305]) 0x628540
16:57:12 <AnMaster> (gdb) print &pic
16:57:12 <AnMaster> $7 = (Drawing *) 0x7272a0
16:57:12 <ais523> and the only one I really know is the one ABI uses (for gcc-bf)
16:57:20 <AnMaster> (gdb) print 0x628540 + sizeof(static_space)
16:57:20 <AnMaster> $9 = 7499080
16:57:31 <AnMaster> now, is it just me, or are two static variables overlapping?
16:57:57 <AnMaster> wait I must be wrong
16:57:58 <oklopol> i asked our lecturer, he just said programming directly with stdcall was such a horrible experience he didn't wanna try to remember the details.
16:57:59 <ais523> that looks weird...
16:58:05 <AnMaster> (gdb) print &static_space + sizeof(static_space)
16:58:05 <AnMaster> $10 = (fungeCell (*)[130305]) 0xfd03a10580
16:58:07 <AnMaster> hm
16:58:19 <ais523> AnMaster: is that on 64-bit?
16:58:24 <AnMaster> ais523, yes
16:58:25 <ais523> that pointer looks worryingly large...
16:58:32 <oklopol> sources always say things are returned in EAX, why say something that specific if it clearly cannot be entirely true.
16:58:33 <ehird> yea...
16:58:37 <AnMaster> yes something must be wrong
16:58:50 <ais523> what is sizeof(static_space)?
16:58:59 <ais523> oh, there isn't an overlap really
16:59:30 <ais523> &static_space + sizeof(static_space) == (char*)static_space + sizeof(static_space)*sizeof(*static_space)
16:59:34 <ais523> which is surely not what you meant...#
17:00:17 <AnMaster> right
17:00:46 <ais523> pointer arithmetic in C works in units of sizeof(whatever you're pointing to), not in units of 1, unless you cast to char* first
17:00:47 <AnMaster> then why do I get memory corruption in pic, and valgrind fails to detect it
17:00:48 <AnMaster> hm
17:00:54 <AnMaster> must be some off by one error or such
17:02:05 <ehird> <ais523> pointer arithmetic in C works in units of sizeof(whatever you're pointing to), not in units of 1, unless you cast to char* first
17:02:10 <ehird> this always really annoyed me
17:02:19 <ais523> ehird: arrays wouldn't work otherwise
17:02:23 <ehird> ais523: i know but eurgh
17:02:25 <ais523> it only annoys you if you're trying to think too low-level
17:02:31 <ehird> it makes pointers a weird magic type with odd addition
17:02:36 <ais523> it's easy to do in C though, because it's so low-level itself
17:02:40 <ehird> ais523: considering c is low level
17:02:47 <ais523> "pointer" is not one type but lots, when you know that it's easy to handle
17:02:48 <ehird> and it provides easy ways to get a pointer's memory address
17:02:51 <ehird> like "casting to int"
17:02:55 <AnMaster> ais523, currently I'm wondering what is located in the 1368 byte gap between those variables
17:03:07 <ais523> AnMaster: get your compiler to output a map file
17:03:08 <ais523> and look at it
17:03:14 <AnMaster> I guess something that is addressable since valgrind didn't complain
17:03:16 <AnMaster> ah thanks
17:03:44 <AnMaster> ais523, can't locate that in man gcc?
17:03:53 <AnMaster> oh linker
17:03:56 <AnMaster> right
17:03:59 <ais523> yes, a linker option
17:04:20 <ais523> -Wl,-M
17:04:23 <ais523> as the argument to gcc
17:04:26 <ais523> (just -M to the linker)
17:04:53 <AnMaster> -M goes to stdout according to man ld?
17:04:58 <ais523> apparently so
17:05:03 <AnMaster> -Map hm
17:05:11 <ais523> strange, but I suppose it's like -E going to stdout
17:05:50 <ais523> yes -Wl,-Map,cfunge.map
17:05:52 <ais523> or whatever
17:05:59 <ais523> would give you a map file called cfunge.map
17:06:11 <AnMaster> yes I'm looking for static variables in it atm
17:06:26 <AnMaster> ais523, ah they would be in bss I believe...
17:06:32 <ais523> yes, most likely
17:06:38 <ais523> sensible place to put big things full of zeros
17:06:41 <AnMaster> because I can't locate them in that map file
17:06:51 <ais523> but bss should be in the map file too
17:06:57 <ais523> can you paste it, and I'll have a look myself?
17:07:18 <AnMaster> well 1861 lines
17:07:23 * AnMaster tries pastebin
17:07:35 <ais523> that's why I asked you to paste it, rather than just put it inline in channel...
17:07:47 <AnMaster> ais523, some pastebins got length limits
17:07:51 <AnMaster> http://rafb.net/p/cTCkFA47.html
17:08:05 <AnMaster> pic and static_space
17:08:45 <AnMaster> static_space is in funge-space.c pic in TURT.c
17:09:25 <ais523> funge-space.o was given 0xfe848 in the BSS
17:09:35 <ais523> that looks like it's large enough to fit your static-space array
17:09:54 -!- moozilla has joined.
17:09:58 <ais523> whereas TURT.o got 0xa8 of space
17:10:00 <ais523> which is not a lot
17:10:03 <ais523> how big is pic?
17:10:10 <AnMaster> ais523, sizeof(void*)
17:10:15 <Deewiant> ais523: what do you mean arrays wouldn't work
17:10:18 <ais523> ok, so it should fit easily
17:10:28 <ais523> Deewiant: well, a[b] means *(a+b)
17:10:33 <Deewiant> just map a[i] to *(a + i * sizeof *a)
17:10:35 <AnMaster> ais523, wait no
17:10:39 <ais523> so if pointer arithmetic were redefined to work on bytes, it wouldn't work properly
17:10:40 <Deewiant> it'd work fine
17:10:42 <ehird> ais523: no
17:10:45 <ehird> ais523: pointers are not arrays
17:10:47 <ais523> Deewiant: what about *p++ in arrays of non-string?
17:10:48 <ehird> that's a myth
17:10:49 <AnMaster> ais523, it was not a pointer, I was wrong
17:10:51 <AnMaster> (gdb) print sizeof(pic)
17:10:51 <AnMaster> $5 = 40
17:10:56 <ais523> ehird: I know pointers aren't arrays
17:10:59 <ehird> just do the crazy-ass overloading for arrays, OR what Deewiant said
17:11:04 <ais523> but array indexing is implemented using pointer arithmetic
17:11:07 <Deewiant> ais523: that would be an error and everyone would do it differently if it hadn't ever worked :-P
17:11:12 <ehird> ais523: doesn't have to be
17:11:14 <AnMaster> ais523, there is also another small static variable there
17:11:21 <AnMaster> (gdb) print sizeof(turt)
17:11:21 <AnMaster> $6 = 80
17:11:27 <Deewiant> ais523: it's trading one set of gotchas for another, both ways would work
17:11:43 <ais523> ok, 80 + 40 = 120, and 0xa8 is 168
17:11:46 <ais523> so easily enough space
17:12:13 <ais523> Deewiant: fwiw, pointers in BCPL work like you suggested, I think
17:12:19 <ais523> at least, all addition is done in 4-byte units
17:12:21 <Deewiant> ais523: didn't BCPL only have one type
17:12:25 <Deewiant> or was that B
17:12:25 <ais523> as all BCPL data types are 4 bytes long
17:12:39 <AnMaster> ais523, for funge space there is 1042440 + 48
17:12:44 <ais523> it only effectively has one type as they're all 4 bytes long
17:13:04 <ais523> 0xfe838
17:13:09 <ais523> and the compiler gave it 0xfe848
17:13:15 <ais523> so no, doesn't seem to be any static variable overlap
17:13:33 <AnMaster> ais523, hm right, wonder why I got memory corruption there, and why valgrind didn't warn
17:13:43 <Deewiant> ais523: according to wikipedia it was 'word' which was problematic when moving BCPL code away from 16-bit machines
17:13:49 <ais523> maybe something else was corrupting it?
17:14:02 <AnMaster> ais523, well I only changed the space stuff.
17:14:03 <ais523> you could have got a stray pointer somewhere which ended up pointing there
17:14:07 <AnMaster> hm
17:14:12 <ais523> as long as it was pointing into the BSS, valgrind wouldn't notice
17:14:14 <ais523> as you own all the space there
17:14:16 <AnMaster> mudflap time
17:14:45 -!- megatron has quit (Read error: 60 (Operation timed out)).
17:17:18 <AnMaster> ah found it thanks to mudflap
17:17:24 <ais523> what was it?
17:17:27 <AnMaster> it is really bad access in static_space
17:17:30 <AnMaster> (gdb) print 63 + 511 * FUNGESPACE_STATIC_X
17:17:31 <AnMaster> $3 = 130368
17:17:33 <AnMaster> (gdb) print sizeof(static_space) / sizeof(fungeCell)
17:17:33 <AnMaster> $5 = 130305
17:17:49 <ais523> bad arithmetic, then?
17:17:52 <AnMaster> yes
17:18:06 <AnMaster> can't figure out where the off-by-whatever error is
17:18:10 <AnMaster> static fungeCell static_space[FUNGESPACE_STATIC_X * FUNGESPACE_STATIC_Y];
17:18:13 <AnMaster> #define STATIC_COORD(rx, ry) (rx+FUNGESPACE_STATIC_X*ry)
17:18:21 <AnMaster> must be wrong
17:18:27 <fizzie> That should be ((rx)+FUNGESPACE_STATIC_X*(ry))
17:18:47 <AnMaster> fizzie, well that won't solve the issue however
17:18:51 <ehird> wb ais523
17:18:55 <fizzie> Sure, but it still should be like that.
17:19:00 <AnMaster> fizzie, yes
17:19:29 <AnMaster> still, off by one on FUNGESPACE_STATIC_X I guess
17:19:42 <ais523> ty ehird
17:19:55 <AnMaster> brb, freezing doesn't help me think
17:19:55 <fizzie> In any case, you could've done it as a 2d array and then the compiler would do the complicated "y*width+x" part for you. Not that it buys much more than a bit of syntax.
17:19:56 * ehird considers scribting
17:20:08 <ehird> fizzie: Does gcc optimize that?
17:20:11 <ehird> I doubt it.
17:20:19 <ais523> ehird: it's identical code both ways
17:20:24 <ehird> Oh, right.
17:20:26 <ehird> Of course
17:20:30 <ais523> even without optimisation, it comes to the same thing...
17:34:01 <AnMaster> ais523, is it? it seems about 0.010 seconds slower
17:34:40 <ais523> AnMaster: x[a][b] and x[a+b*SOMECONSTANT] should become the same code
17:39:08 -!- AnMaster has quit (kornbluth.freenode.net irc.freenode.net).
17:40:52 -!- AnMaster has joined.
17:41:44 <AnMaster> hm
17:42:17 <AnMaster> ais523, about speed: right, was using wrong test values
17:46:23 <fizzie> Of course with a 2d array the initialization is a tiny bit uglier; either a nested for loop or walking a pointer through it.
17:46:30 <AnMaster> yes
17:46:42 <AnMaster> and I fixed the off by one error now
17:47:59 <AnMaster> one issue is that this thing with offset to have some negative in the static array... what about signed overflow
17:48:07 <AnMaster> that is undef after all
17:48:41 <ais523> you can check the offset isn't negative
17:48:43 <AnMaster> x = position->x + FUNGESPACE_STATIC_OFFSET_X; // where position->x is a signed integer
17:48:57 <ais523> AnMaster: why aren't you checking before you do that
17:49:04 <ais523> I don't see how you can avoid a buffer overflow otherwise
17:49:04 <AnMaster> I should be :P
17:49:09 <AnMaster> um what?
17:49:25 <ais523> well, if you're only checking the result of the multiplication
17:49:33 <ais523> you might have really weird x and y which end up somewhere inside the array
17:49:41 <fizzie> ais523: It's easier to check [0, N] than [-N1, N2].
17:49:43 <AnMaster> ais523, I just add an offset to the coords so that some of negative fungespace is also in the static array
17:49:48 <ais523> ah, ok
17:50:13 <ais523> in that case, given the way fungespace wraps, cast position->x to unsigned first, and work with unsigned numbers
17:51:05 <AnMaster> hm that would depend on the system using two-complement
17:51:38 <ais523> AnMaster: nope
17:51:42 <fizzie> Was it guaranteed that "unsigned int" is large enough to contain all "int" values? I guess it was.
17:51:47 <ais523> cast to unsigned works as if you were using twos-complement
17:51:51 <ais523> regardless of what you were actually using
17:52:39 <fizzie> Also: you can cast it to unsigned and use those for the hash-table keys no matter what happens to the integer values, really. It's not like the hash table cares about it.
17:53:22 <AnMaster> lets say I have 1024*1024 as static, then this offset is added to move the static space to include a bit of negative funge space too. I then check if the resulting coordinates are within the static funge space, if yes I use that to access it, if not I use original coordinates for the hash library
17:53:27 <ehird>
17:53:28 <ehird> brb
17:53:59 <AnMaster> fizzie, hm the issue I'm concerned about is that adding the offset overflows it, but yeah I guess that will work
17:54:12 <fizzie> Well, you should be able to do that simply as "x = (unsigned)position->x + offset;"
17:54:29 <fizzie> Then the overflow will not invoke the nose-demons.
17:55:27 <fizzie> And the cast-to-unsigned is guaranteed to do the "right thing", so that -1 ends up being RANGE-1.
17:55:41 * AnMaster tests
17:57:21 <AnMaster> warning: comparison of unsigned expression >= 0 is always true. right... means I can actually remove part of the check for if it is in static array space
17:57:31 <ais523> yes
17:59:47 <fizzie> It's the equivalent of the if ((unsigned)x < N) style of testing. And I guess it's pretty clear, but personally not any clearer than bitmasking. Maybe I'm just irrationally fond of bitwise operations.
18:01:03 <ais523> fizzie: (unsigned)x < N works even if N isn't a power of 2
18:01:28 <AnMaster> real 0m0.052s
18:01:29 <AnMaster> whoo
18:01:37 <AnMaster> for mycology
18:02:13 <ais523> AnMaster: is that including all the file I/O?
18:02:19 <AnMaster> 256x1024 with offset 16x16
18:02:20 <AnMaster> ais523, yes
18:02:50 <ais523> AnMaster: you're really messing with Deewiant's "assuming working negative funge-space" there
18:03:07 <AnMaster> ais523, it will work, outside the static array a hash library is used
18:03:18 <AnMaster> if I enable sandbox mode (where all file IO except initial loading is forbidden):
18:03:21 <AnMaster> real 0m0.031s
18:03:35 -!- KingOfKarlsruhe has quit (Remote closed the connection).
18:04:24 <AnMaster> that disables i, o, =, restricts the env vars in y to a subset, disables FILE, SOCK, SCKE, DIRF, PERL
18:04:59 <AnMaster> oh yes TURT which does file IO to a fixed name is allowed
18:05:06 <AnMaster> (cfunge_TURT.svg)
18:05:14 <Deewiant> disabling PERL probably halves the time on windows :-P
18:05:29 <ais523> wb ehird
18:06:07 <ais523> Deewiant: you should get Mycology to test negative funge-space at -lots,-lots rather than -1,-1
18:06:08 -!- jix has quit ("This computer has gone to sleep").
18:06:26 <ais523> as AnMaster's special-casing negative fungespace 16 chars to the left of and above the origin
18:06:34 <ais523> which is clearly cheating...
18:06:46 <Deewiant> ais523: I can't assume that a reasonable-time algorithm is implemented
18:06:47 <AnMaster> ais523, lots,lots will work. just slower
18:07:03 <AnMaster> since it will use the hash table, instead of the static array
18:07:09 <ais523> Deewiant: why don't you check lots,lots in Mycology, by the way
18:07:20 <ais523> to verify that implementations are in fact using fungespace sensibly?
18:07:21 <Deewiant> ais523: same reason: if it's just one big dynamic array, for instance
18:07:38 <ais523> Deewiant: doesn't the Funge-98 spec imply it shouldn't be?
18:07:47 <Deewiant> no, it just says that it should work
18:07:50 <Deewiant> which it of course does
18:07:53 <Deewiant> but not in any reasonable time
18:07:56 <Deewiant> if done that way, that is
18:08:04 <ais523> even if you go to (4000000000,4000000000)?
18:08:10 <ais523> that would be out of the memory space of most computers
18:08:17 <Deewiant> yeah, but it would work on some computers
18:08:18 <ais523> *even if you go to (2000000000,2000000000)?
18:08:24 <Deewiant> the algorithm itself is sound
18:08:24 <ais523> yet it's a legit funge-space location
18:08:58 <AnMaster> this can't be right...
18:09:33 <Deewiant> ais523: I could equally well have a file with 4294967295 bytes in it and complain if it can't be loaded as it's a legit funge program ;-)
18:10:05 <ais523> Deewiant: wow, you found a bug in cfunge
18:10:14 <ais523> or possibly in the standard
18:10:26 <ais523> maybe Funge-108 should have "implementation limits" like the C standard does
18:10:34 <Deewiant> ais523: "If the underlying memory mechanism cannot provide this (e.g. no more memory is available to be allocated,) the interpreter should complain with an error and do what it can to recover, (but not necessarily gracefully)."
18:10:42 <ais523> ah, ok
18:10:51 -!- kar8nga has joined.
18:11:05 <Deewiant> so basically the program 'echo "out of memory"' is a valid funge-98 interpreter
18:11:25 <Azstal> awesome underlying memory mechanism :)
18:11:32 <Deewiant> :-P
18:11:54 <AnMaster> ehird, about the memory usage being less, I think that isn't correct. Seems the valgrind tool massif doesn't include static variables, only heap
18:12:15 <Azstal> * 2008-10-29: upgraded to nomalloc 0.76 to fix some OOM errors
18:13:01 <AnMaster> <Deewiant> ais523: I could equally well have a file with 4294967295 bytes in it and complain if it can't be loaded as it's a legit funge program ;-) <-- hm?
18:13:18 <ais523> AnMaster: it's about programs which are too big to fit in memory
18:13:22 <ais523> yet are legit Funge programs
18:14:01 <AnMaster> that is INT_MAX for 32-bit int isn't it?
18:14:09 <ais523> UINT_MAX
18:14:14 <ais523> for 32-bit int
18:14:25 <Deewiant> or, to be simple about it, 2^32-1.
18:14:29 <AnMaster> well. Get a 64-bit machine, get lots of ram
18:14:30 <AnMaster> :P
18:14:36 <AnMaster> then it should work
18:14:48 <AnMaster> may take a few minutes to load I guess
18:16:29 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | stdin - keyboard.
18:17:09 <AnMaster> ais523, also what about truly infinite funge spaces? it would only fail when the coordinate itself doesn't fit in memory
18:17:15 <AnMaster> bignum in other words
18:17:56 <ais523> heh, upon seeing that topic I interpreted the - as the stdin and wondered what the keyboard was doing
18:18:01 <ais523> optbot: fungot: say something
18:18:02 <optbot> ais523: * feesh starts off fbf
18:18:02 <fungot> ais523: s/ tru/ try/ has anyone on here used mod_scheme?. yarly' without ' orly' or ' spec' is that
18:18:19 <ais523> optbot: fungot: say something
18:18:19 <fungot> ais523: such as? i maintain my curiousity. i really do
18:18:19 <optbot> ais523: case 0:
18:18:29 <AnMaster> ^talk
18:18:29 <fungot> optbot: I want to talk with you, because this guy here, just above me, asked me to do it.
18:18:29 <optbot> fungot: Obey Newton's laws or face elongation!
18:18:30 <fungot> optbot: later folks, thanks for you help :)
18:18:30 <optbot> fungot: And mutter about how my college decided to ask for roommate requests, only to completely ignore them.
18:18:30 <fungot> optbot: i couldn't figure that out, not a quasiquote.
18:18:31 <optbot> fungot: it it tells me not to look at some things
18:18:31 <fungot> optbot: mitä saa fnord sokea, fnord ja fnord." 3.0.
18:18:32 <optbot> fungot: ~ps help
18:18:32 <fungot> optbot: a couple weeks ago, my first case if ( ( a b)
18:18:32 <optbot> fungot: You should put a gaping security hole into EgoBot in case this happens again.
18:18:40 <ais523> ^show talk
18:18:41 <fungot> (opt)(bot: I want to talk with you, because this guy here, just above me, asked me to do it.)~SS
18:18:49 <ais523> haha
18:19:06 <ais523> ~SS can be abbreviated to *S, btw
18:19:35 <ais523> <optbot> fungot: You should put a gaping security hole into EgoBot in case this happens again.
18:19:35 <fungot> ais523: well mit has the whole fnord range.
18:19:35 <optbot> ais523: everyone would have to ask me for a password then?
18:19:50 <ais523> what a great line, I wonder who said it originally?
18:23:03 <AnMaster> oh cool, icc decided to vectorise the loop that fills the static variable with spaces.
18:23:11 <AnMaster> Guess gcc does that too
18:25:26 <oklopol> fungot: optbot: mitä saa fnord sokea, fnord ja fnord." 3.0. <<< fizzie: finnish from where?
18:25:26 <optbot> oklopol: And remember that MemoServ + pastebin = email :-)
18:25:27 <fungot> oklopol: well i can, my ass is not dumb... a would do ' math with side effects. severe stomach ache is among those " contact your doctor immediately" effects. and i'm not particularly interested in helping, then.
18:25:28 * AnMaster pushes the static array code.
18:25:37 <AnMaster> done
18:25:51 <AnMaster> ehird, want a new tarball for last code?
18:25:58 <AnMaster> with the static array bit
18:26:44 <AnMaster> ehird, if you do: http://omploader.org/vdmt4 is a tar.bz2 of r461
18:28:32 <ehird> back
18:28:52 <AnMaster> <AnMaster> ehird, if you do: http://omploader.org/vdmt4 is a tar.bz2 of r461 <-- contains the static array stuff.
18:40:04 <AnMaster> fizzie, you may want to try last cfunge
18:40:36 <fizzie> I will, later tonight.
18:42:04 <oklopol> last cfunge?
18:42:17 <ehird> oklopol: latest.
18:42:25 <ehird> even though last is incorrect
18:42:25 <ehird> whatever
18:42:40 <oklopol> yeah i know what he meant
18:42:46 <oklopol> i'm just being a bum
18:42:48 <oklopol> :-)
18:43:04 <fizzie> Bumtsibum.
18:43:15 <oklopol> really i wanted to make some joke about cfunge officially being cancelled
18:43:19 <oklopol> but my head hurts
18:43:21 <oklopol> and i can't pun.
18:43:42 <oklopol> fizzie: where's the finnish from?
18:46:14 <ehird> WOOP WOOP! All Google accounts are now OpenIDs: http://www.techcrunch.com/2008/10/29/your-gmail-account-is-now-an-openid/
18:47:17 <fizzie> oklopol: The word "bum" just reminded me. I don't know the etymology of it.
18:47:28 <ehird> I read "bumtsibum" as "bum shit bum".
18:47:33 <ehird> Just letting you know.
18:47:49 <fizzie> ehird: I was referring to http://en.wikipedia.org/wiki/BumtsiBum!
18:47:55 <fizzie> Although that article is quite stubby.
18:48:04 <oklopol> fizzie: yeah but the other finnish.
18:48:10 <ehird> I thought you meant bum-tish-dum
18:48:12 <ehird> Rimshot.
18:51:47 -!- mbishop_ has changed nick to mbishop.
19:02:01 <fizzie> oklopol: *Oh*, that Finnish. I didn't read the backscroll much.
19:02:46 <fizzie> oklopol: I have my personal ircnet/#douglasadams channel logs in the mix too. It's a mostly English channel, but there have been some discussions in Finnish. It's curious that the word "sokea", for example, must appear at least twice somewhere.
19:03:34 <fizzie> Without the fnords, the original question indeed appeared on that channel and was: "Mitä saa joululahjaksi sokea, mykkä ja kuuro pikkutyttö?"
19:04:00 <fizzie> (And the answer was "Syövän." I'm not sure what the point was there.)
19:04:14 <ehird> translation?
19:04:29 <fizzie> "What does a blind, mute and deaf little girl get for christmas? Cancer."
19:04:53 <ehird> XD
19:08:17 <fizzie> The thing had zero context around it, so I have no clue what the point was there.
19:16:12 <oklopol> umm, that's tons of funny
19:17:37 <fizzie> Having a conversation with the bot again:
19:17:38 <fizzie> 20:17:04 <fizzie> fungot: How do you do!
19:17:38 <fizzie> 20:17:04 <fungot> fizzie: usually i depress myself by reading old logs
19:17:51 <fizzie> I guess it doesn't really have much else to read.
19:18:04 <oklopol> can it inspect its own source?
19:18:31 <fizzie> Sure, it's there in the Funge-space. And it does have read privileges to the source file, too.
19:18:41 <ais523> oklopol: Markov-chaining Befunge would be weird
19:18:51 <ais523> especially as it's not obvious what direction to read it in
19:19:28 <ehird> oh man
19:19:28 <ehird> fizzie
19:19:31 <fizzie> I guess there's now quite a mess of stuff to read. Although they're in the built language model files, which aren't exactly made for reading either, given that they lack all kinds of structure.
19:19:35 <ehird> make fungot's text database ITS OWN SOURCE
19:19:36 <fungot> ehird: sisc just ought to support scsh's delimited reader library. srfis help, but it doesn't
19:34:20 <AnMaster> fizzie, you can't update cfunge right now, datacenter issues
19:34:32 <AnMaster> so the server it is hosted down is unreachable
19:34:43 * AnMaster haven't got any info about ETA yet :/
19:34:51 <AnMaster> hasn't*
19:47:54 -!- Corun has joined.
19:50:12 -!- GiveMeMony has joined.
20:04:17 -!- cmeme has joined.
20:04:36 -!- cmeme has quit (Read error: 54 (Connection reset by peer)).
20:05:23 -!- cmeme has joined.
20:08:31 -!- M0ny has quit (Read error: 110 (Connection timed out)).
20:12:29 -!- jix has joined.
20:13:24 -!- GiveMeMony has quit (Read error: 110 (Connection timed out)).
20:21:35 -!- olsner has joined.
21:01:03 <AnMaster> ehird, there?
21:01:41 <ehird> yes.
21:05:02 <ais523> that's a nice short conversation...
21:07:18 <ehird> very zen
21:07:33 <ais523> sounds like a mezzawhateveritis comic
21:07:35 <oklopol> so, how's it oging?
21:07:55 <ais523> not very well atm, I haven't done anything useful in ages
21:08:10 <ais523> and I have 2 projects I actually have to work on for university, both of which are arguably eso
21:09:53 <fizzie> I got handed the dubious honour of maintaining yet another messy (although a mercifully small) pile of Perl, because the person who's so far been "responsible" for it is leaving for greener (i.e. more $$$s than in the academic circles) pastures.
21:10:15 <ais523> fizzie: more $$$s than Perl?
21:10:24 <ais523> Perl is full of dollars, due to using them as the sigil for scalars
21:10:40 <fizzie> Okay, more €€€, then.
21:11:55 <fizzie> I wonder if there already is a BrainFuck isomorph that uses only various currency symbols as commands, with a punny money-themed name.
21:12:14 <AnMaster> heh
21:12:24 <ais523> that's probably the rule number whatever of esolangs
21:12:26 <AnMaster> ehird, so how goes stuff?
21:12:34 <oklopol> kinda sucks for me too, trying to start this programming project, the problem is the description of what i'm supposed to do is really vague. and i hate thinking, unless the thing i'm thinking about is fully IO-less
21:12:35 <ais523> "There is a Brainfuck deriviative of it. No exceptions."
21:12:37 <AnMaster> assuming you saw that updated tarball
21:12:38 <ehird> AnMaster: wut
21:12:51 <AnMaster> wvt
21:13:37 <fizzie> oklopol: Well, re the Perl mess, I also have a feature request for it. The "requirements" from the "customer" are two words ("forced segmentation") and no-one seems to know what they want; I don't even know who "they" are.
21:13:50 <AnMaster> ehird, well I don't blame you if you stopped doing it. I was talking about that stuff you said you did on the hash library
21:13:52 <AnMaster> :)
21:13:58 <ehird> oh, right.
21:14:08 <ais523> fizzie: that's one crazily ambiguous requirement
21:14:11 <ais523> why don't you ask them what it means?
21:14:21 <AnMaster> ehird, far from as critical now when the static array handles most
21:14:23 <fizzie> ais523: Because I don't know who wanted the feature. :p
21:14:42 <fizzie> ais523: It's less ambiguous in context, but I still don't know what exactly it is they want.
21:14:50 <AnMaster> fizzie, moving the underload stuff around would probably help, profiling said it went outside the static stuff for a bit
21:14:59 <oklopol> fizzie: sounds even worse than mine.
21:15:05 <fizzie> AnMaster: How large is your static array, then?
21:15:16 <ais523> AnMaster: any day now I expect you to put out a version of Mycology optimised for cfunge
21:15:19 <AnMaster> 512x1024, offset 64,64
21:15:23 <oklopol> my problem is more that i don't want to actually read the given code/documentation, because i don't want to use thinking time for this.
21:15:24 <AnMaster> ais523, haha
21:16:23 <AnMaster> ais523, the fact is however that fizzie use cfunge because it is faster/better/have fewer odd limits than rc/funge. So if he optimise it for cfunge he can run even longer bf/unlambda programs
21:16:27 <oklopol> complaining/idling time is worth using on it though, no question.
21:16:32 <AnMaster> which I thought he wanted
21:16:44 <AnMaster> fizzie, I could make it larger I guess (1024x1024)
21:17:09 <fizzie> Well, the Underload stack will go past -64 pretty easily. It's reasonably easy to move, though... incidentally, which one do you think is faster in your implementation: something like 'ff*' compared to '98g'?
21:17:15 <AnMaster> would mean 4 or 8 mb static array (instead of 2 or 4)
21:17:38 <Deewiant> ff* should definitely be faster
21:17:47 <fizzie> Would assume so, yes.
21:17:47 <AnMaster> fizzie, ff* and 98g are not equivalent.
21:17:56 <fizzie> They are if I do ff*98p first.
21:18:00 <AnMaster> well yeah
21:18:06 <AnMaster> and stack should be quite fast
21:18:18 <AnMaster> lookup table heh, no that would most likely be slower
21:18:55 <fizzie> What about aaa** and 98g, then? Keeping in mind that the first one needs to fetch the extra instructions from the Funge-Space too.
21:19:35 <AnMaster> in other news life.bf in my profiled cfunge build is now so fast that patterns that repeat in cycles of 4 seem to be fixed on my monitor to one of the patterns.
21:19:36 <AnMaster> :P
21:20:01 <AnMaster> fizzie, well I don't know
21:20:25 <AnMaster> stack is pretty fast. but if you want to test it I recommend writing a short program that loops over that or such
21:21:46 <fizzie> I can easily move the Underload stack up a few hundred bytes by some tweaks followed by changing the 0`|-style stack underflow checks to ff*`|s, but if I want to move it "higher" (well, more to the right) than that I need to use either aaa** or <x><y>g to get the limit to compare against.
21:22:11 <AnMaster> fizzie, however... aaa** 5 funge-fetch, 4 pop 2 push
21:22:31 <AnMaster> 98g, 4 funge-fetch, 2 push 2 pop
21:22:45 <AnMaster> so logically it should be faster
21:23:24 <ehird> brb 1hr
21:24:06 <AnMaster> fizzie, also I could move the space a bit I guess if needed. It is easy for you to adjust the constants anyway, src/funge-space/funge-space.c lines 71-74
21:25:04 <fizzie> I guess, but it's all such guesswork when caches and such are involved. Also I have no clue how much stack a "typical" Underload program uses. Possibly it might even be faster to move the stack around a bit to keep the top parts in the "fast memory" always, but that's really too messy.
21:25:12 <AnMaster> fizzie, remember that the static array would be 4 * FUNGESPACE_STATIC_X * FUNGESPACE_STATIC_Y bytes on a 32-bit funge build
21:25:59 <AnMaster> fizzie, and yeah due to caches I don't know about the speed either, so better profile it
21:26:15 <AnMaster> it is near impossible to predict
21:26:30 <fizzie> In the good old days you could just count cycles. :p
21:26:56 <AnMaster> better profile it, writing a short program that does it a few thousand/million times.
21:27:41 <AnMaster> fizzie, also it may differ on your cpu
21:27:52 <AnMaster> since I got a 64-bit sempron, at 2 GHz
21:28:00 <AnMaster> with a 128 kb L2 cache iirc
21:28:15 <AnMaster> which is smaller than the cache of the Pentium 3 I have in another computer
21:28:47 <AnMaster> still I bet you can execute longer programs already
21:28:51 <AnMaster> ^show
21:28:51 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source bf cat talk test greet
21:29:07 <AnMaster> ^ul (:^):^
21:29:09 <fungot> ...out of time!
21:29:23 <AnMaster> fizzie, if you care to update, and see how long before it says out of time
21:29:37 <ais523> +ul (:^):^
21:29:38 <thutubot> ...out of time!
21:29:39 <fizzie> Well, I do all my fungot development on this 'eris' box (which is an Athlon 64 X2 5600+ -- the names are quite ridiculous) while the fungot in here actually runs on a 1400 MHz Pentium-M.
21:29:40 <AnMaster> should be interesting
21:29:40 <fungot> fizzie: s/ less/ fnord
21:29:49 <ais523> thutubot's out of time is faster or slower depending on how much memory use there is
21:30:01 <AnMaster> ^ul (:^):^
21:30:03 <fungot> ...out of time!
21:30:05 <AnMaster> ^ul (:^):^
21:30:07 <fungot> ...out of time!
21:30:19 <AnMaster> ^ul (::^)::^
21:30:21 <fungot> ...too much stack!
21:30:23 <AnMaster> ^ul (::^):^
21:30:25 <fungot> ...too much stack!
21:30:28 <AnMaster> hm right
21:30:29 <fizzie> Sure, I guess I could update it; but the ^ul out-of-time limit really depends on the program, since it counts Underload instructions which can take a very variable amount of time.
21:30:47 <AnMaster> fizzie, still for the same program it should be faster
21:30:49 <fizzie> ^ul ((fooooo):::***!:^):^
21:30:50 <fungot> ...out of time!
21:30:54 <AnMaster> since there would be fewer cycles
21:31:00 <fizzie> Well, that, sure.
21:31:00 <AnMaster> err
21:31:04 <AnMaster> same number of cycles
21:31:07 <ais523> ^ul (x)(~:*~:^):^
21:31:08 <fungot> ...too much stack!
21:31:08 <AnMaster> but faster done
21:31:18 <AnMaster> since the actual program code is in "fast funge space"
21:31:22 <ais523> fungot: I take it "too much stack" depends on the number of bytes used on the stack
21:31:23 <fungot> ais523: now consider that do-stuff might use a gc'd language to talk to a defective person. thanks for telling me about that paper has nothing to do
21:31:24 <AnMaster> instead of "outer fungespace"
21:31:25 <ais523> not the number of elements?
21:31:27 * AnMaster likes that name
21:31:35 <fizzie> ais523: Yes.
21:31:43 <fizzie> ais523: It's 10k bytes or so.
21:31:47 * oklopol likes it too
21:32:22 <fizzie> The time limit activates pretty fast for (:^):^ since it's such a simple program; might use a more complicated infiniloop for testing.
21:33:06 <fizzie> ^ul ((foobarbazquux):::***:~~~~~~~~~~~~~~~~!!:^):^
21:33:09 <fungot> ...out of time!
21:33:13 <fizzie> That one takes noticeably longer.
21:33:23 <fizzie> (At least when you're on the same Freenode server than fungot, anyway.)
21:33:24 <fungot> fizzie: sorry for butting in, but that is fixed in the .deb now,
21:33:36 <ais523> ^ul (x)(~(y)*~:^):^
21:33:52 <ais523> btw, that one would hold up Thutubot for ages too
21:33:52 <fungot> ...out of time!
21:34:00 <ais523> +ul (x)(~(y)*~:^):^
21:34:13 * AnMaster tries last rc/funge
21:34:15 <AnMaster> $ ./funge --help
21:34:15 <AnMaster> Segmentation fault
21:34:18 <thutubot> ...out of time!
21:34:25 <fizzie> Well, I'll update the cfunge I have on momus and let's see how fast that particular program is.
21:34:54 <ais523> AnMaster: presumably it isn't doing a C-INTERCAL and pretending to segfault when someone asks it for -help?
21:35:00 <fizzie> (Although quite a lot of the slowness comes from the large stack that extends out of the "fast space", I guess.)
21:35:04 <AnMaster> ais523, no.
21:35:13 <AnMaster> Program received signal SIGSEGV, Segmentation fault.
21:35:13 <AnMaster> 0x00000035fae73552 in strcmp () from /lib/libc.so.6
21:35:14 <AnMaster> haha
21:35:23 <fizzie> It has a "-h" flag, not "--help"; but I don't think I've used to get segfault out of it.
21:35:48 <AnMaster> well
21:35:59 <ais523> I always wondered why C-INTERCAL did that, by the way
21:36:10 <ais523> I took out the delay while it was pretending to dump core as it got on my nerves
21:36:20 <ais523> but it's still the only "legit" way to get an internal-error message
21:36:35 <AnMaster> nice it locks up in SUBR in mycology too
21:36:38 <AnMaster> GOOD: R transfers stack elements correctly
21:36:38 <AnMaster> GOOD: set mode with A
21:36:39 <AnMaster> ^C
21:37:22 <AnMaster> ah using -Y worked
21:37:24 <AnMaster> wonder why
21:37:39 <AnMaster> $ time ./funge -Y ~/src/cfunge/trunk/mycology/mycology.b98 &>/dev/null
21:37:39 <AnMaster> real 0m0.769s
21:37:40 <AnMaster> that is slow
21:37:41 <AnMaster> :D
21:38:16 <ais523> what does -Y do on RC/Funge?
21:38:25 <Deewiant> enables standards-compliant 'y' behaviour
21:38:26 <AnMaster> makes y command conform to standard
21:38:29 <ais523> ah, ok
21:38:34 <AnMaster> oh it's makefile ignore CFLAGS
21:38:37 <ais523> what's the non-standards-compliant behaviour?
21:38:39 <AnMaster> no wonder it was that slow
21:38:44 * AnMaster adds -O2 -march=k8
21:38:52 <AnMaster> ah much better
21:38:55 <AnMaster> real 0m0.218s
21:39:09 <AnMaster> still far from as good as cfunge before static even
21:39:20 <Deewiant> ais523: instead of 'by' pushing the 11th stack element, it pushes the 11th 'logical' element (for instance the delta of the IP)
21:39:36 <Deewiant> (as opposed to the y-component of the delta)
21:39:38 <ais523> IMO, that makes more sense
21:39:48 <AnMaster> also this really makes me wonder wtf he was doing:
21:39:49 <AnMaster> mterm.c:(.text+0x14): warning: the `gets' function is dangerous and should not be used.
21:39:57 <ais523> wtf?
21:40:02 <AnMaster> ais523, from rc/funge
21:40:02 <ais523> actually, W T F ????
21:40:05 <AnMaster> when linking
21:40:06 <ais523> someone used gets?
21:40:12 <AnMaster> rc/funge yes
21:40:17 <AnMaster> I seen it once before, mosaic
21:40:26 <AnMaster> but that was OLD
21:40:32 <fizzie> Heh, actually I think fungot's currently running on a 64-bit cfunge build, accidentally.
21:40:32 <Deewiant> rc/funge is almost as old :-P
21:40:32 <fungot> fizzie: ok i lied. there are some formatting issues and missing sections.)
21:40:37 <AnMaster> but this one, I remember pointing it out before
21:40:41 <AnMaster> and he hasn't fixed it
21:40:58 <AnMaster> huh wait
21:41:01 <fizzie> Let's try 32-bit r462.
21:41:03 <AnMaster> there are two downloads?
21:41:09 <AnMaster> v2 and v1?
21:41:09 <fizzie> ^raw QUIT :funkity-hunkity
21:41:09 -!- fungot has quit ("funkity-hunkity").
21:41:15 * AnMaster tries v2
21:41:56 <AnMaster> mterm.c:(.text+0x39): warning: the `gets' function is dangerous and should not be used.
21:41:59 <AnMaster> still that in v2
21:42:06 -!- fungot has joined.
21:42:11 <AnMaster> oh and v2 fails in SOCK
21:42:12 <AnMaster> odd
21:42:13 <ais523> wb fungot
21:42:14 <fungot> ais523: but then again it might". that might give it a url.
21:42:16 <AnMaster> GOOD: P pushed nonzero for socket with data
21:42:16 <AnMaster> UNDEF: 0"1.0.0.721"H pushed 0
21:42:16 <AnMaster> GOOD: P pushed 0 for socket without data
21:42:16 <AnMaster> GOOD: P pushed nonzero for socket with data
21:42:16 <AnMaster> UNDEF: 0"1.0.0.721"H pushed 0
21:42:19 <AnMaster> loop like that
21:42:34 <ais523> AnMaster: does cfunge do SOCK yet, and will it in the future?
21:42:51 <fizzie> ais523: Do you mean efunge or what?
21:42:57 <AnMaster> ais523, cfunge does, or fungot wouldn't work
21:42:58 <fungot> AnMaster: that's what they're trained to do xor have the same semantics, though. ;p ( yeah, sue me, but i'd really like it. good example:
21:43:01 <ais523> I meant cfunge
21:43:04 <AnMaster> efunge may in the future
21:43:07 <fizzie> Given that fungot's running on cfunge, it's a safe bet to say it does SOCK.
21:43:07 <fungot> fizzie: i have a lot of things
21:43:12 <fizzie> fungot: I'm sure you do.
21:43:12 <fungot> fizzie: uni tübingen is actively working on hills, so expect php errors, and is it the most recent officially sanctioned one.
21:43:19 <AnMaster> ^ul ((foobarbazquux):::***:~~~~~~~~~~~~~~~~!!:^):^
21:43:20 <fungot> ...out of time!
21:43:24 <fizzie> ^ul (x)(~:*~:^):^
21:43:24 <fungot> ...too much stack!
21:43:25 <AnMaster> faster?
21:43:28 <ais523> fizzie: I didn't realise you were doing it like that, Thutu has no network access but Thutu works fine
21:43:33 <ais523> *Thutubot
21:43:37 <ais523> ^ul (x)(~(y)*~:^):^
21:43:44 <fungot> ...out of time!
21:43:45 <ais523> that one's got it thinking again
21:43:51 <ais523> but not for all that long
21:43:59 <ais523> probably you could raise the time limit again
21:44:14 <AnMaster> well also it probably went outside fast space
21:44:38 * AnMaster ponders adding a diagnosis (build option) mode that warns when access is done in outer space
21:44:40 <fizzie> Yes, it's noticeably faster; now it's a good question how much of the speedup comes from the 32-bit build (I think the previous one was accidentally 64-bit) and how much from the space-change.
21:44:45 <AnMaster> for helping making funge programs fast
21:45:05 <AnMaster> fizzie, you could try again with 64-bit
21:45:09 <ais523> AnMaster: have a command-line option, and the option to not compile that option into the interp itself
21:45:10 <AnMaster> also ./cfunge -f
21:45:11 <AnMaster> to see
21:45:17 <AnMaster> what type of build
21:45:22 <ais523> actually, do that for all your command-line options
21:45:25 <AnMaster> it should tell you if it is 32-bit or 64-bit
21:45:27 <ais523> so you can save time not parsing them if necessary
21:45:40 <AnMaster> ais523, issue: more ifs to check at runtime == slowdown
21:45:48 <AnMaster> at least in something run as often as funge space access
21:45:59 <AnMaster> ah wait
21:46:02 <fizzie> * Cell size is 64 bits (8 bytes).
21:46:03 <AnMaster> you said the other way
21:46:07 <AnMaster> fizzie, there you are then
21:46:09 <fizzie> (For the previous one, that is.)
21:46:14 <ais523> AnMaster: I said have them as compile-time settings
21:46:16 <ais523> as in, #defines
21:46:22 <ais523> so you can #define all the command line args out of the program
21:46:38 <AnMaster> ais523, well you can disable tracing -t if you want at compile time
21:46:39 <AnMaster> :P
21:46:51 <ais523> yes, do that for all the args at compile tim
21:46:53 <ais523> *time
21:46:56 <ais523> to save a marginal amount of runtime
21:47:07 <AnMaster> UUNNDDEEFF:: TT aafftteerr MM ppuusshheedd 122 123 ^C <-- nice one from rc/funge on ./funge -Y --help mycology.b98
21:47:20 <ais523> how did that happen?
21:47:23 <ais523> multithreading chaos?
21:47:26 <AnMaster> ais523, no clue, it was rc/funge
21:47:30 <ais523> or TRDS gone mad?
21:47:39 <AnMaster> ais523, NO clue, I don't PLAN to debug rc/funge
21:47:44 <fizzie> If I really wanted to make fungot fast, I'd run it with some JITting system; it doesn't ever do any self-modification, and really only uses cardinal directions, so static code analysis + constant-folding + JIT complication should make it fearsomely fast.
21:47:44 <fungot> fizzie: gcc -g -wall -shared c/ fnord
21:47:45 <AnMaster> I have looked at it's code before
21:47:52 <AnMaster> nothing will make me want to do it again
21:48:04 <ais523> hahaha
21:48:27 <fizzie> I've looked at it once or twice to trace down some issues. I've seen worse code.
21:48:54 <AnMaster> oh using -S -S - Suppress summary
21:48:55 <AnMaster> cause it too
21:48:56 <AnMaster> wtf
21:49:05 <AnMaster> I bet there is memory corruption
21:49:20 <AnMaster> oooh
21:49:22 <AnMaster> ./funge -Y -S ~/src/cfunge/trunk/mycology/mycology.b98
21:49:23 <AnMaster> doesn
21:49:25 <AnMaster> doesnt*
21:49:26 <AnMaster> but
21:49:29 <AnMaster> ./funge -YS ~/src/cfunge/trunk/mycology/mycology.b98
21:49:30 <AnMaster> does
21:49:34 <AnMaster> now THAT is buggy
21:49:49 <AnMaster> cfunge uses getopt()
21:49:59 <AnMaster> which just works
21:50:12 <AnMaster> and doesn't segfault randomly
21:50:48 <AnMaster> fizzie, the main issue isn't horrible coding style, the main issue is that it is buggy and have a bad (but not horrible) coding style
21:51:35 <AnMaster> I bet if I ran the fuzz test script from cfunge on it it would just totally fail. While nowdays cfunge rarely fails in that except for OOM conditions (that cfunge doesn't always handle cleanly)
21:51:44 <AnMaster> and I try to fix all those bugs
21:52:21 <ais523> AnMaster: C-INTERCAL uses getopt on systems that have it, but it has its own alternate version for systems that don't
21:53:08 <AnMaster> ais523, ah right, remember I don't care about systems that don't implement POSIX ;P
21:53:50 <AnMaster> I only depend on POSIX.1-2001, though POSIX.1-2008 was ratified last month iir
21:53:51 <AnMaster> iirc*
21:54:09 <AnMaster> which shows I still care about backward compatibility~~~
21:54:55 <AnMaster> ah yes "Sep 26 2008: The IEEE has approved the document as IEEE Std 1003.1-2008" (http://www.opengroup.org/austin/)
21:55:05 <ais523> POSIX is an IEEE standard?
21:55:07 <ais523> I didn't know that
21:55:12 <AnMaster> ais523, yes it is
21:56:50 <AnMaster> ais523, anyway hopefully cfunge should work on any POSIX.1-2001 system that supports the memory mapped file option. Possibly the *build system* won't, but the code itself should, and if it doesn't I shall definitely try to fix it it if possible.
21:57:34 <AnMaster> "Remote/Funge - A new fingerprint FRPC has been added that allows a funge program to contact and execute funge procedures on remote funge servers." <-- Mike Riley has really gone nuts
21:57:36 <AnMaster> really
21:57:57 <oklopol> :D
21:57:59 <ais523> why not, that's an interesting idea for a fungerprint...
21:58:01 <oklopol> remote funge servers
21:58:03 <oklopol> awesome
21:58:13 <ais523> (I noticed the typo, but decided not to fix it because I liked it)
21:58:27 <AnMaster> hah
21:59:03 <AnMaster> it isn't documented however
21:59:10 <AnMaster> in either official fingerprints or the manual
21:59:48 <AnMaster> mentioned on http://www.rcfunge98.com/ though
21:59:51 <fizzie> Yes, you just need to guess.
22:00:02 <ais523> ah, it has its own domain name?
22:00:02 <AnMaster> nothing new with that
22:00:08 <fizzie> Is it implemented yet, though?
22:00:22 <AnMaster> fizzie, it says "has been added"
22:00:24 <ais523> "I am the original author of Rc/Funge-98, which was one of the first fully-compliant Funge-98 implementations." <--- was it ever fully-compliant?
22:00:33 <AnMaster> ais523, not that I know
22:00:50 <AnMaster> the last one isn't fully, the v1 one gets to the end with -Y
22:01:04 <AnMaster> at certain times it has passed mycology I know
22:01:14 <AnMaster> but that was way after cfunge did
22:01:21 <AnMaster> and ccbi
22:01:34 <fizzie> So it says, but the character sequence "frpc" doesn't appear in the beta release.
22:01:43 <AnMaster> well, *shrug*
22:01:45 <fizzie> It might be very "under construction" right now.
22:01:59 <AnMaster> it would be easy to code in erlang, in an actually fast way
22:02:02 <AnMaster> not that I plan to
22:02:20 <AnMaster> STRN, SOCK, SCKE and a few more yes, but most of his last ones: no thanks
22:02:26 <AnMaster> latest*
22:04:23 <fizzie> The docs do leave something to be desired. The SGNL fingerprint has this X instruction: "X (c -- ) Set current cell to character c -- Whatever X becomes has no effect on the ip that triggered it."
22:04:31 <AnMaster> ok wtf is that IPMD
22:04:49 <ais523> fizzie: I think I can guess what that does, though
22:04:58 <AnMaster> fizzie, he didn't even make SNGL, iirc that rc/funge based fork did
22:05:02 <fizzie> ais523: Oh, *right*.
22:05:08 <fizzie> ais523: So can I now that I reread it.
22:06:34 <AnMaster> what the heck is IPMD, it is implemented, but not documented
22:06:42 <fizzie> It's in the manual.
22:06:46 <fizzie> http://www.rcfunge98.com/rcfunge2_manual.html#IPMD
22:06:53 <AnMaster> ah found it
22:07:15 <AnMaster> it changes dimension count for current program?
22:07:16 <AnMaster> !?
22:07:18 <ais523> yes
22:07:30 <AnMaster> oh right
22:07:33 <ais523> it lets you use a sub-Fungespace of your current fungespace to run a funge of lesser dimension
22:07:34 <AnMaster> not that insane really
22:07:37 <ais523> AFAICT
22:07:48 <AnMaster> what about higher?
22:08:06 <ais523> higher works too apparently
22:08:17 <ais523> although ofc it's all blank to start with because you didn't load a program into there
22:09:03 <AnMaster> well yeah
22:11:06 <AnMaster> I still haven't sent any ATHR draft to Mike Riley.... I don't want to offend him with such a well documented fingerprint
22:11:08 <AnMaster> :D
22:12:40 <Azstal> I keep seeing references to Funge-108. Is that "Funge-98 now that we've actually figured how k and stuff works"?
22:12:58 <AnMaster> Azstal, yes and a bit more, it is a draft of mine
22:13:06 <AnMaster> I'm quite sure I linked you to it before?
22:13:31 <Azstal> did you?
22:13:38 <AnMaster> anyway..., considering how buggy rc/funge is there are currently only two really good implementations I'd say: CCBI (lots of features, ok speed most of the time) and cfunge (fewer features, tweaked for speed). efunge still lacks too many features and is too experimental to qualify
22:13:47 <AnMaster> Azstal, or someone with a similar nick
22:14:08 <AnMaster> http://kuonet.org/~anmaster/funge-108/ <-- select your preferred file format
22:14:22 <AnMaster> (pdf or the lyx source file)
22:14:38 <Azstal> ah, I see
22:15:25 -!- jix has quit (Read error: 110 (Connection timed out)).
22:16:02 -!- Azstal has changed nick to Asztal.
22:22:04 <AnMaster> ^bf --------------[.]
22:22:04 <fungot> ...
22:22:47 <AnMaster> ^ul (x)(~(y)*~:^):^
22:22:54 <fungot> ...out of time!
22:23:05 <ais523> ^ul ((ò)S:^):^
22:23:05 <fungot> òòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòò ...too much output!
22:23:10 <ais523> +ul ((ò)S:^):^
22:23:10 <thutubot> òòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòò ...too much output!
22:23:17 <AnMaster> +ul (x)(~(y)*~:^):^
22:23:20 <AnMaster> ^ul (x)(~(y)*~:^):^
22:23:26 <fungot> ...out of time!
22:23:33 <thutubot> ...out of time!
22:23:33 * AnMaster waits on thutubot
22:23:35 <AnMaster> ah
22:23:38 <ais523> thutubot has a lower limit too I think, it's just slow when a lot of memory's used
22:23:52 <AnMaster> right
22:24:22 <AnMaster> ais523, what is the memory growth of that function?
22:24:30 <AnMaster> linear?
22:24:41 <ais523> yes
22:24:47 <fizzie> It appends one 'y' each round.
22:24:48 <ais523> too slow to trigger out-of-memory checks
22:24:52 <ais523> but fast enough to cause problems
22:24:53 <AnMaster> ah
22:25:21 <AnMaster> fizzie, in what direction does the ul stack grow?
22:25:25 <ais523> +ul (x)(~(yy)*~:^):^
22:25:26 <ais523> ^ul (x)(~(yy)*~:^):^
22:25:39 <fungot> ...out of time!
22:25:46 <fizzie> AnMaster: Left, towards the negative X direction; didn't we have this talk already?
22:25:55 <AnMaster> fizzie, I may have forgotten
22:25:57 <thutubot> ...out of time!
22:25:57 <AnMaster> sorry
22:26:13 <fizzie> I think that was the argument for moving it right some characters.
22:26:18 <fizzie> Although that might've been mostly with ehird.
22:26:19 <ais523> +ul (x)(~(yyy)*~:^):^
22:26:23 <ais523> ^ul (x)(~(yyy)*~:^):^
22:26:28 <AnMaster> fizzie, is there any special reason to not make it grow right? or down?
22:26:44 <fungot> ...out of time!
22:26:45 <AnMaster> and with down I mean in negative x but positive y
22:26:47 <ais523> AnMaster: something to do with the way STRN worked, IIRC
22:26:52 <AnMaster> hm
22:26:56 <fizzie> AnMaster: STRN's fixed delta, primarily. It's easiest when I can pop a string simply by applying G to the current top-of-stack.
22:27:04 <thutubot> ...out of time!
22:27:10 <ais523> +ul (x)(~(yyyy)*~:^):^
22:27:10 <AnMaster> fizzie, what about JSTR hm
22:27:13 <ais523> ^ul (x)(~(yyyy)*~:^):^
22:27:24 <fizzie> I'm not sure I want to bother dealing with that.
22:27:30 <AnMaster> ah right
22:27:44 <fungot> ...out of time!
22:27:49 <ais523> hmm.... seems a good balance, I'm slowing down both bots a lot now
22:27:56 <ais523> I'll try with 8 ys next, I think
22:28:08 <thutubot> ...too much memory used!
22:28:27 <ais523> just on fungot though, this already hits thutubot's memory limit
22:28:28 <fungot> ais523: let me know if it's cargo cult programming doing it is incorrect. the version at http://www.standarddeviance.com/ sigma.html, but i
22:28:32 <ais523> ^ul (x)(~(yyyyyyyy)*~:^):^
22:28:38 <fizzie> Also JSTR (well, according to rc-funge manual) pops fixed-length strings. Although I guess there's nothing wrong in the gnirtsN format, compared to 0gnirts.
22:29:10 <ais523> antigolf challenge: see how long you can make fungot run before erroring out
22:29:15 <fungot> ...too much stack!
22:29:15 <fungot> ais523: and those magic identifiers are a pain
22:29:20 <ais523> a sort of busy beaver
22:29:25 <ais523> ^ul (x)(~(yyyyyyy)*~:^):^
22:29:26 <AnMaster> fungot, "cargo cult programming"?
22:29:47 <ais523> AnMaster: that's to do with carrying on programming techniques even though you have no idea why they work
22:29:51 <ais523> leads to a lot of strange code
22:30:08 <AnMaster> ah ok
22:30:13 <fungot> ...too much stack!
22:30:14 <fungot> AnMaster: no: see yes
22:30:16 <fizzie> ais523: fungot's limits are ffaa*** instructions, cd*:* bytes of stack, and cd*:* bytes of extending the program leftwards from the starting point.
22:30:16 <fungot> fizzie: like short int short
22:30:23 <ais523> ^ul (x)(~(yyyyyy)*~:^):^
22:30:26 <AnMaster> ais523, I just couldn't apply the "cargo cult" concept to "programming"
22:30:27 <AnMaster> :P
22:30:50 <fizzie> So 22500 instructions and 24336 bytes.
22:31:07 <AnMaster> <fungot> AnMaster: no: see yes <-- was that from some dictionary?
22:31:12 <fungot> ...out of time!
22:31:12 <fungot> AnMaster: that might even be able to write stuff, but not quite. you still, presumably, because you can never die, they just never put things into the wrong window.
22:31:48 <ais523> fizzie: does fungot break a botloop in ^ul, or only in things mentioning its name
22:31:48 <fungot> ais523: fnord is not available for ppc?
22:32:11 <fizzie> ais523: Only in things mentioning it's name. We had a couple of +ul/^ul loops.
22:32:23 <fizzie> ais523: I think mine was shorter than... someone else's, though.
22:32:36 <fizzie> The "no: see yes" came from #scheme, they were teaching a factbot there.
22:33:03 <AnMaster> fizzie, isn't there some TOYS instruction to read a block of funge space in a saner direction?
22:33:21 -!- jix has joined.
22:33:30 <ais523> ^ul (Hi jix!)S
22:33:30 <fungot> Hi jix!
22:34:30 <fizzie> AnMaster: Not a zero-terminated block, I think. And anyway, I would need instructions to specify the direction before every G/P. 0\01-\ is very ugly to write, since the delta needs to go below the starting-point.
22:34:34 <AnMaster> ah right
22:34:52 <fizzie> ^ul (^ul )(+ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:52 <fungot> +ul (+ul )(^ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:52 <thutubot> ^ul (^ul )(+ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:52 <fungot> +ul (+ul )(^ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:53 <thutubot> ^ul (^ul )(+ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:53 <fungot> +ul (+ul )(^ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:53 <thutubot> ^ul (^ul )(+ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:53 <fungot> +ul (+ul )(^ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:54 <thutubot> ^ul (^ul )(+ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:54 <fungot> +ul (+ul )(^ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:34:54 -!- fungot has left (?).
22:34:54 <thutubot> ^ul (^ul )(+ul )(~:SaS~aS:aSS)~:SaS~aS:aSS
22:35:06 <AnMaster> fizzie, time to make FGOT, functions for fungot ;)
22:35:17 <fizzie> Heh, now that fungot's so fast the loop gets going pretty rapidly.
22:35:24 -!- fungot has joined.
22:35:26 <ais523> it's easier to do a much shorter looped quine than that, but that one has the advantage of being symmetrical
22:38:36 <AnMaster> fizzie, you need ignore list yes
22:38:49 <AnMaster> fizzie, and you can tweak static limits of funge space as I said
22:39:47 <fizzie> Well, I'll consider it.
22:40:31 <fizzie> But I can pretty easily stick the starting-point of the Underload stack to whatever I select as the largest positive X value, so that as much stack as possible (without moving it around) will fit.
22:41:24 <AnMaster> fizzie, well largest positive X is 512-64, unless you tweak static limits
22:41:41 <fizzie> Also I've forgotten -march=pentium-m from the current build too.
22:41:44 <AnMaster> and that would at least help for small programs
22:41:56 <AnMaster> fizzie, cmake should keep that around?
22:42:03 <AnMaster> I mean you don't have to reconfigure
22:42:11 <AnMaster> just make should have worked
22:42:18 <AnMaster> or ccmake . to edit current values
22:42:33 <AnMaster> partial builds always work. I do it that way
22:43:28 <AnMaster> :)
22:43:40 <AnMaster> err incremental builds
22:43:41 <fizzie> I don't have bzr on the box I compiled that binary (since I might have some very different library versions on this box and fungot's actual home) so I just copy stuff around; didn't want to copy on top of old stuff. Although I guess I could've copied the build directory to the new revision.
22:43:42 <fungot> fizzie: not bad. i think i should just sell or give away all the monsters and hit points and other silliness
22:45:25 <AnMaster> heh?
22:45:36 <fizzie> Currently my "workflow" is bzr export ../cfunge_rXXX; cp ../cfunge_rXXX; patch -p1 << chroot.patch; cd ..; scp -r cfunge_rXXX iris:inst/ followed by building on iris. I guess I could streamline a bit.
22:45:50 <fizzie> And not <<, that was a typo.
22:46:02 <ais523> what would << do? Append input?
22:46:13 <ais523> maybe open the file for input but put the file pointer at the end of it
22:46:13 <fizzie> It's used in the <<HEREDOC syntax, at least.
22:46:18 <ais523> only really useful if it's a pipe or something
22:46:33 <ais523> yes, I'm just trying to think up eso meanings for it by analogy with >>
22:46:43 <AnMaster> well apart from heredoc I got no clue what the heck it would do
22:47:24 <fizzie> Seems like it does the heredoc semantics even if there's a space after '<<'. I've only seen it written "<<FOO", though.
22:48:42 <AnMaster> fizzie, there is also the case of -
22:48:48 <AnMaster> as in <<-END iirc
22:48:55 <AnMaster> however I don't use heredoc often
22:48:58 <ais523> isn't that a bash extension?
22:49:04 <AnMaster> ais523, maybe
22:49:18 <fizzie> There's also <<<FOO, according to the manual.
22:49:19 <AnMaster> I'm the resident bash expert, not sh expert :P
22:49:25 <fizzie> It's a "herestring".
22:49:26 <AnMaster> fizzie, <<< is here string
22:49:28 <AnMaster> much more common
22:49:31 <AnMaster> at least for me
22:49:37 <AnMaster> and quite a lot more useful
22:49:46 <AnMaster> avoids echo "$foo" | bar
22:50:01 <AnMaster> bar <<< "$foo"
22:50:02 <AnMaster> :)
22:53:19 -!- KingOfKarlsruhe has joined.
22:54:25 -!- Corun_ has joined.
22:54:40 <AnMaster> hm what about generating code at runtime? I mean... using something like llvm, to statically select branches that are fixed by command line options and such
22:55:01 <AnMaster> could be interesting
22:55:07 <AnMaster> not much speed difference I guess
22:55:35 <ais523> maybe a Befunge compiler which statically analyses the code to figure out which bits have to be interpreted and which can be compiled?
22:55:51 <AnMaster> ais523, isn't that undecidable?
22:56:05 <ais523> well, you could err on the safe side
22:56:09 <AnMaster> hm maybe
22:56:15 <ais523> but it's easy enough to prove that certain bits of code won't be modified in many cases
22:56:22 <AnMaster> and still have a fallback if it turns out you were wrong
22:56:32 <ais523> e.g. fungot never modifies a bit of code that was in the program to start with
22:56:33 <fungot> ais523: are we having fun hitchhiking to cincinnati or far rockaway!!" sort. i always found that to be a
22:56:34 <AnMaster> source level annotation?
22:56:36 <AnMaster> mabe
22:56:38 <AnMaster> maybe*
22:56:55 <fizzie> Didn't I just say about using JIT with fungot? :p
22:56:56 <fungot> fizzie: but most schemes have some ' unspecific' after things?
22:57:20 <ais523> fizzie: this would be compile-time, not JIT
22:57:51 <AnMaster> yes
22:58:02 <AnMaster> however I doubt I could pull off such a thing
22:58:28 <fizzie> I am doubtful as to whether you really could prove that sort of thing in non-trivial programs without including a recompiler in the interpreter just in case someone goes and really modifies the program.
22:58:34 <fizzie> Assuming the programmer isn't helping you, of course.
22:58:43 <ais523> well, you could trial-run the program
22:58:53 <ais523> you start with an assumption "nothing is modified" and see where control flow can go
22:58:54 <AnMaster> ais523, could be hard for something like fungot
22:58:55 <fungot> AnMaster: if you want to see the solution of that was a jest, as there is very little known about the file, and an anonymous function
22:59:03 <AnMaster> ais523, with SOCK and such
22:59:05 <ais523> once you find something that contradicts that assumption, change your assumptions and try again
22:59:08 <AnMaster> user input totally mess it up
22:59:10 <ais523> it would be slow but I think it could work
22:59:19 <ais523> and for user input, merely assume you could have got any input
22:59:28 <AnMaster> ais523, say, you have user input and then you do a jump on said input
22:59:34 <fizzie> I've done something like that once; it used a "stack" that could contain uncertain values.
22:59:40 <AnMaster> ais523, or it could have reflected
22:59:42 <ais523> AnMaster: you could analyse that easily enough
22:59:44 <AnMaster> on EOF
23:00:09 <ais523> there are lots of situations to handle, luckily computers are good at handling lots of situations...
23:00:10 <AnMaster> ais523, what about user input used as coordinates for p?
23:00:14 <AnMaster> then you can't know ANYTHING
23:00:20 <ais523> well, in that case you wouldn't know anything
23:00:25 <ais523> so you couldn't optimise
23:00:35 <AnMaster> ais523, and you need to know about all fingerprints
23:00:39 <ais523> for that matter, ^code breaks compilation in the case of fungot
23:00:40 <fungot> ais523: it is easy to fnord bf code in everywhere you'd want. rather than be spewed out onto one gargantuan monolith? or octopus? i can't escape it, eg.
23:00:42 <ais523> and yes
23:00:51 <AnMaster> still that idea about "XN"2( I had may be nice
23:00:53 <fizzie> The stack size could also be a bit uncertain; then it redid its analysis if it ended up in a previously analysed piece of code with a stack that didn't match the assumptions it used to have; in that case it just used assumptions vague enough to accord for both possibilities.
23:00:55 <AnMaster> and a nice fingerprint name too
23:00:56 <AnMaster> :)
23:01:26 <AnMaster> fizzie, got a link to that thing?
23:01:28 <Asztal> a tracing jit might be easier
23:01:47 <fizzie> No. I'm not even sure I still have that thing any more. I seem to forget my projects quite easily.
23:02:04 <AnMaster> fizzie, was it the graph generating one?
23:02:05 <ais523> AnMaster: a 2-letter fingerprint? Such things don't exist!
23:02:20 <AnMaster> ais523, oh yes they do
23:02:22 -!- Corun has quit (Read error: 110 (Connection timed out)).
23:02:25 <AnMaster> and so does more than 4
23:02:26 <ais523> heh... what would be really amusing would be a 2-letter fingerprint which turned on 32-bit emulation mode for 16-bit Funges
23:02:48 <AnMaster> ais523, afaik 16-bit funges have never existed
23:02:53 <fizzie> It was for a Java-based "compile Befunge to JVM bytecode" attempt, but I didn't get to the code-generating parts; I just did a C code generation output that didn't handle put/get at all.
23:03:07 <ais523> AnMaster: it's legal to write a 16-bit Funge-98 interp, isn't it?
23:03:09 <Deewiant> AnMaster: FBBI runs in DOS, no? it might be 16-bit
23:03:23 <AnMaster> Deewiant, FBBI does? Didn't know
23:03:38 <AnMaster> ais523, well you can't load any existing fingerprints
23:03:44 <AnMaster> but apart from that I believe it is
23:03:50 <AnMaster> don't know for sure
23:03:55 <Asztal> I made mine 16-bit for a laugh. It wasn't particularly good.
23:04:36 <ais523> maybe I should make a 17-bit Funge interp, that uses one's complement
23:04:50 <ais523> one's complement works slightly better if you have a prime number of bits, where 2^bits-1 is a Mersenne prime
23:05:08 <Deewiant> and then implement a 17-bit fingerprint which turns on 34-bit emulation mode
23:05:42 <ais523> ha
23:09:42 <fizzie> Found some traces of that Java thing, but nothing I'd bother "releasing" even as a "look at this cruft" tarball. It was reasonably clever, although not *really* clever; for example, I used to use a lot of "discard-ifs" (that is, use a | or a _ to both discard a (known) value and change direction) but it wasn't clever enough to realize that in :!#v_| the '|' if will always go up.
23:09:43 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
23:10:13 -!- kar8nga has quit (Read error: 110 (Connection timed out)).
23:11:11 <fizzie> (Well, except if it happened to deduce the zero/nonzeroity of the value from something else. But it didn't realize that the result of the _-if already gives some information about the other values too, since they come from that :.
23:11:52 <AnMaster> doing that properly could be quite had
23:11:54 <AnMaster> hard*
23:15:14 <fizzie> Actually now that I look at the code, it probably *was* clever enough to handle the fact that in :#v_| the latter if would always go down.
23:15:15 <AnMaster> fizzie, if anyone wrote _| would say the code was either meant for entering from two directions or was just silly
23:15:35 <AnMaster> fizzie, well why don't you release it
23:15:40 -!- moozilla has joined.
23:15:40 <ais523> doesn't _ pop its argument?
23:15:41 <fizzie> It's not silly: it's a nice way to combine $ and ^ (or v, depending on the case).
23:15:45 <AnMaster> apart from your love for java I think it would be interesting
23:15:57 <fizzie> ais523: Yes, but often you need the value still, so you do a : before.
23:16:09 <fizzie> Then after the if you need to get rid of the duplicate which is no longer interesting.
23:16:11 <ais523> ah, ok
23:16:27 <AnMaster> fizzie, $
23:16:28 <AnMaster> :P
23:17:08 <ais523> AnMaster: fizzie was talking about combining $ and ^
23:17:10 <fizzie> The underload interp does quite a lot of :'*-#v_$ style code; but if you want to turn ^ immediately afterwards, you can save a character by using | instead of $^.
23:17:24 <AnMaster> fizzie, hah right
23:17:25 <ais523> anyway, one use for mixed _ and | would be in a Huffman decoder
23:17:31 <ais523> you could make a decision tree out of _ | and spaces
23:17:53 <AnMaster> heh
23:18:00 <fizzie> Using as little characters as possible is one goal for Befunge-writing; one that has not been very important in fungot.
23:18:01 <fungot> fizzie: how efficient is thread creation/ starting in gambit? 32 bits?) and song notes match reality.
23:18:42 <ais523> but Befunge uses all the characters
23:18:44 <AnMaster> fizzie, well | would probably be faster, not sure
23:18:46 <ais523> even middot, on occasion
23:18:55 <AnMaster> ais523, only in IFFI
23:19:07 <AnMaster> ais523, which doesn't really count for most other cases
23:19:12 <ais523> yes, on occasion, like I said
23:19:22 <AnMaster> oh well
23:19:28 <ais523> the chars above 128 are reserved for proprietary interp features, after all...
23:19:49 <fizzie> Anyway, the :#v_| logic in the Java thing was pretty naive; : was done by pushing the same Value object twice on the stack, and after the _ (for the branch that went right) we went through the stack and altered any copies of the popped value there might be, which obviously completely breaks if you manipulate it with ~ or 'x- or something; even though you could still deduce something there.
23:20:19 <AnMaster> ais523, well yeah
23:20:20 <ais523> sounds like you need pointers, they help a lot in implementing that kind of thing
23:20:47 <AnMaster> heh
23:23:37 <fizzie> Can't say I've really missed pointers in Java, since a "Foo x" for a user-defined Foo there is pretty much "Foo *x" in C/C++.
23:24:45 <AnMaster> well erlang got references... But of course whatever they point to can't be modified
23:26:38 <AnMaster> + it is not as easy to use
23:26:47 <AnMaster> erlang:make_ref() then passing said reference around
23:27:03 <AnMaster> wait no
23:27:06 <AnMaster> that isn't the same
23:27:37 <AnMaster> that is like UUID
23:27:42 * AnMaster confused it
23:29:45 <AnMaster> well night
23:30:04 <ais523> night
23:37:29 <ehird> bakkk
←2008-10-28 2008-10-29 2008-10-30→ ↑2008 ↑all