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