00:01:21 -!- lament has quit (Ping timeout: 252 seconds). 00:05:26 -!- lament has joined. 00:18:12 -!- Pthing has quit (Remote host closed the connection). 00:30:18 -!- Sgeo has quit (*.net *.split). 00:30:18 -!- ttm has quit (*.net *.split). 00:30:19 -!- Asztal has quit (*.net *.split). 00:30:19 -!- augur has quit (*.net *.split). 00:30:43 -!- ttm has joined. 00:30:45 -!- Sgeo has joined. 00:30:45 -!- augur has joined. 00:30:50 -!- Asztal has joined. 00:40:58 -!- oerjan has quit (Quit: Good night). 00:52:09 -!- cheater3 has quit (Ping timeout: 248 seconds). 01:17:08 -!- jcp has quit (Remote host closed the connection). 01:21:20 -!- Pthing has joined. 01:28:29 -!- coppro has joined. 01:39:20 -!- Pthing has quit (Remote host closed the connection). 01:44:07 -!- jcp has joined. 01:46:07 -!- jcp has quit (Remote host closed the connection). 01:49:21 -!- jcp has joined. 02:29:04 -!- Asztal has quit (Ping timeout: 265 seconds). 02:59:32 Oh nose D-8 02:59:35 There's another Gregor Richards 02:59:38 http://www.wideawakemusic.com/gallery.html 02:59:45 Oh noes. 03:03:31 -!- lament has quit (Ping timeout: 268 seconds). 03:03:46 -!- lament has joined. 03:23:43 -!- jcp has quit (Remote host closed the connection). 03:24:27 -!- MissPiggy has quit (Quit: Lost terminal). 03:27:21 Oh nose ":-/"[1] 03:36:11 -!- jcp has joined. 03:58:09 -!- MizardX has quit (Ping timeout: 256 seconds). 05:12:20 -!- jcp has quit (Remote host closed the connection). 05:14:33 -!- jcp has joined. 05:18:37 ":-/"[1]? 05:19:17 fancy notation for nose 05:19:26 oooh 05:24:00 -!- jcp has quit (Remote host closed the connection). 05:24:54 Gregor: i knew a Gregor Richardson 05:25:21 Not close enough. 05:36:17 I once knew a Gregor Richards. 05:36:31 Guy registered http://www.codu.org/ for some reason. 05:37:09 wouldn't an oh nose be ":o/"[1]? 05:37:34 They would, in fact, like for you to think that. 05:41:36 -!- Gracenotes has joined. 05:42:34 pikhq: You'll notice that www.codu.org, while existent, forwards to codu.org :P 05:42:44 Gregor: Heheheh. 05:49:33 -!- amca has quit (Quit: Farewell). 05:56:30 -!- jcp has joined. 05:56:38 -!- jcp has quit (Client Quit). 05:59:13 -!- jcp has joined. 06:00:42 -!- cal153 has joined. 06:58:41 -!- FireFly has joined. 07:07:13 -!- tombom has joined. 07:32:16 -!- jcp has quit (Quit: I will do anything (almost) for a new router.). 07:46:27 -!- cheater2 has joined. 07:50:46 -!- tombom has quit (Quit: Leaving). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:22:05 -!- FireFly has quit (Quit: Leaving). 09:19:12 -!- gm|lap has quit (Quit: 2 hour UPS expired. Shutting down laptop.). 10:48:18 -!- oerjan has joined. 10:51:20 -!- ais523 has joined. 10:51:31 -!- ais523 has quit (Changing host). 10:51:31 -!- ais523 has joined. 10:51:31 -!- ais523 has quit (Changing host). 10:51:31 -!- ais523 has joined. 10:59:57 poor, poor fireballs 11:20:03 current favorite book: Handbook of Formal Languages 11:20:18 just for you, oerjan 11:20:28 dont let anyone else know about it x3 11:22:06 * oerjan rolls eyes 11:22:26 :p 11:22:28 its a nifty little book 11:22:48 theres one chapter that extensively covers some extensions of context free grammars 11:22:57 called controlled grammars 11:23:31 in which the rewriting of a string is controlled in some way, either by the string itself, or by some rules on the structure of derivations 11:23:34 or whatever 11:29:55 i'm going with the whatever 11:30:00 * oerjan whistles innocently 11:30:12 :( 11:30:16 its cool! 11:41:56 Handbook of Larval Fromages. 11:43:59 i think i'll skip those dishes 12:03:34 I have to agree with oerjan on that 12:04:45 oerjan, also: s/fireballs/fromer fireballs/ 12:24:41 -!- oerjan has quit (Quit: Later). 12:29:01 -!- augur has quit (Ping timeout: 268 seconds). 12:31:16 -!- BeholdMyGlory has joined. 12:36:20 http://divingintointercal.blogspot.com/ 12:37:36 cheater: has it been updated? 12:37:41 I'm aware of it, but didn't think it had changed in years 12:37:54 nope, still stuck at part 3 12:38:09 I'm secretly hoping that the author is still going, just hadn't figured out how to do anything more complex in INTERCAL yet 12:39:24 yeah, sadly 12:39:33 yeah, so am i 12:39:44 i hope he'll be able to tell us how to do intercal for the web 12:40:16 oh, I think I'm the third comment on that most recent blog post, btw 12:40:28 I only vaguely remember writing it, and it's marked as an anon, but it looks like my style 12:41:23 " Combining INTERCAL expressions into one line is IMO good practice; it makes them easier to optimise, and has the added advantage of being more confusing." 12:41:34 yep, I think that's me alright 12:49:33 -!- archtech has joined. 12:50:10 ais523: do you know if it's possible to do command line arguments for intercal programs? 12:50:52 ais523: in that case, i could re-implement drupal in intercal 12:53:22 cheater: not at the moment, at least in C-INTERCAL 12:53:30 there's a standard set of args all compiled programs support 12:53:34 but they don't support any others 12:53:42 hmm 12:53:54 what about CLC-INTERCAL? 12:54:02 is this specified in the INTERCAL manual? 12:54:34 which one? 12:54:47 the original one 12:54:49 C-INTERCAL's certainly pretty clear about it in its 12:55:04 the original one talks about the Princeton compiler, which has no mention of command-line args to the compiled programs themselves 12:55:06 just to the compiler 12:55:11 C-IMTERCAL is not the defining standard 12:55:23 *N 12:55:59 ais523: but the princeton compiler itself does not disallow them does it? 12:57:08 I *guess* you could also do first-order programming by including argv in the source and recompiling 12:59:28 cheater: the princeton compiler existed in the days of punched cards, I'm not entirely sure if a command-line existed 12:59:48 but I don't know what you mean by "disallow"; there's no language feature that would let you get at them 13:00:17 -!- ais523 has quit (Quit: Page closed). 13:00:21 well, hmm, ya. 13:00:26 o no 13:00:30 he quits 13:14:55 -!- augur has joined. 14:10:15 -!- lieuwe has joined. 14:16:09 -!- scarf has joined. 14:23:38 -!- coppro has quit (Quit: I am leaving. You are about to explode.). 14:31:40 there is no valid use case for a system without localhost 14:31:51 can someone please randomly contradict that with a plausible argument 14:31:58 that also takes into account the fact that it has ifupdown installed? 14:33:11 -!- Pthing has joined. 14:33:23 -!- Asztal has joined. 14:38:58 -!- coppro has joined. 14:40:15 -!- boily has joined. 14:48:15 -!- MizardX has joined. 14:52:54 -!- charlls has joined. 14:58:22 -!- lieuwe has quit (Quit: When two people dream the same dream, it ceases to be an illusion. KVIrc 3.4.2 Shiny http://www.kvirc.net). 15:00:37 -!- Blarumyrran has joined. 15:01:04 -!- Blarumyrran has left (?). 15:02:15 -!- archtech has left (?). 15:05:00 -!- coppro has quit (Quit: that school-y thing). 15:05:12 anyone knows once you have a validated promela model how do you translate your specification into valid c/c++ code? 15:07:08 Isn't that just the -a flag to spin? 15:07:37 It should write pan.c (and a pile of other pan.X files) that's compilable to an executable verifier. 15:08:37 Sorry, a bit lazy reading there. You didn't want a compilable verifier, you wanted the actual promela code into C. 15:15:09 excellent 15:15:23 no 15:15:29 -!- cpressey has joined. 15:15:50 what i mean is the c model you are actually trying to model with it 15:16:03 im not sure whats the right terminology 15:16:31 you mean that the -a flag produces a .c file that will run the verification? 15:16:40 Yes. 15:16:57 ah 15:17:37 what i mean is that once you have a model that checks out, you somehow have to use that to implement the c/c++ model right? thats the step of the process i'm not clear about 15:18:07 Yes, I got that a bit late. As far as I know, there's no magical tool that would turn a Promela model into C code. 15:19:13 ok, but i'm sure there are some sort of guidelines 15:20:25 If you go the other way, I hear there are some (more or less restricted) tools that do (or at least help) "model extraction", i.e. take C code and generate a Promela model for that. Guidelines for that sort of stuff are in the Spin book. 15:21:04 After a quick look at the table of contents -- http://spinroot.com/spin/Doc/Book_extras/index.html -- it doesn't seem to talk much about the opposite problem, how to turn a Promela model into a real implementation. 15:21:38 model extraction would work too 15:22:23 in fact i think thats the intended usage (you write your c/c++, you extract the model, verify, check for issues, adjust your code, rinse and repeat) 15:22:32 cool 15:22:57 i was thinking at it backwards i suppose 15:24:08 I guess both ways are used; the traditionalish "design → Promela model → implementation in C" one, and the fancier "implementation in C → Promela model for checking" one. 15:24:42 There indeed seem to be some automation for model extraction, but I'm not really qualified to recommend any, not having used any of them. 15:25:47 np, i will look and report back :P 15:34:07 -!- FireFly has joined. 15:36:00 -!- boily has quit (Quit: leaving). 16:05:10 -!- MigoMipo has joined. 16:06:17 -!- MissPiggy has joined. 16:37:20 hm 16:37:47 Deewiant, TURT has F for "move forward" and B for "move backward" 16:37:52 should negative arguments be allowed 16:38:04 because currently I think negative arguments to my F will move backwards 16:38:07 and vice verse 16:53:01 -!- augur has quit (Ping timeout: 264 seconds). 16:54:47 I know nobody asked me, but that sounds reasonable. 16:55:50 integer_to_colour(Value) -> 16:55:50 <> = <>, 16:55:51 {R,G,B}. 16:55:54 I find that rather neat 16:56:21 Heh, that TURT quine looks messy. I don't think I had even seen that before. 16:56:36 fizzie, which turt quine? 16:56:46 the one from the huge domain name guy? 16:56:55 Yes. 16:57:04 At www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info. 16:57:41 fizzie, and yes it does if your interpreter handle "pen down without moving (that is, followed by a jump or pen-up event) → draw a dot" 16:57:56 if you sed out all the dots that cfunge and iirc ccbi cerates it looks quite ok 16:58:48 fizzie, anyway isn't that integer-to-colour-triplet function rather nice 16:58:59 in C it would have been quite some bitshifting or such 16:58:59 I haven't run it, I was just judging based on that picture there. 16:59:13 But yes, it is nice. 16:59:20 fizzie, oh that picture is much better than what cfunge produces (due to missing the dots) 16:59:29 of course cfunge does the correct thing instead 17:00:00 fizzie, anyway in cfunge it produces quite a less blocky image 17:00:04 due to it producing an svg 17:01:29 If you don't mind portability, though, and assuming the fields line up right and there are no alignment mishaps, you could do a similar "struct rgb { unsigned char r, g, b; }; struct rgb integer_to_colour(unsigned u) { return *((struct rgb *)&u); }" thing in C too. 17:02:24 fizzie, well I'm not happy if it doesn't work on big endian or such 17:02:57 You can #ifdef in different struct definitions depending on endianness, but right, it's not guaranteed to work anyway. 17:03:27 unless otherwise specified erlang uses big-endian for bitstrings/binaries 17:03:43 (you can override it to one of: big, little, native) 17:04:50 fizzie, anyway the sanest way in C seems like something such as: 17:06:10 struct rgb integer_to_colour(uint32_t u) { return (struct rgb){.r=u&0xff0000, .g=u&0xff00, .b=u&0xff}; } 17:06:15 fizzie, agreed? 17:06:34 assuming same struct as above that is 17:07:56 fizzie, oh and erlang defaults to unsigned. With little endian signed it would have required something like: <> 17:08:16 (and similar on the other side of the pattern matching for each of R, G and B 17:08:17 ) 17:09:04 If you use the same struct rgb definition I do, ".r = u&0xff0000" with an eight-bit byte will most likely end up in an always-zero .r, 17:10:25 If you don't mind the reliance on well-defined unsigned wraparoundery and can assume CHAR_BIT == 8, it'd be enough with just .r = u>>16, .g = u>>8, .b = u. But maybe it's still best to mask with those masks before the shift, or with 0xff after. 17:11:09 (Away, food.) 17:12:31 fizzie, oh right 17:12:33 Incidentally, I think it would be well-defined to do something like "unsigned char *p = (unsigned char *)&u; return (struct rgb){ .r = p[0], g = p[1], b = p[2] };" if you like. It's in the standard that you can access all bytes of an object with a char*, and cast any pointer to a char pointer safely. 17:12:35 you need to bitshift it too 17:13:00 (But that's not endian-automatic the way bitshifting and masking is.) 17:13:12 indeed 17:13:17 -!- tombom has joined. 17:13:21 fizzie, and in C the best way is probably bitshifting 17:13:29 fizzie, and that was one quick meal 17:15:53 -!- kar8nga has joined. 17:18:16 Oh, I'm still away. 17:23:48 XD 17:35:31 Deewiant, oh dear it looks like both ccbi and cfunge mix up turn left and turn right 17:35:44 plus ccbi somehow manages to miss one dot in that test 17:35:51 or rather 17:36:00 the dot turns out the wrong colour 17:36:23 (test/turt.b98 in cfunge sources) 17:36:32 (I believe it might be incorrect) 17:37:20 (but still, ccbi gets the wrong colour for the right dot) 17:37:31 (it should be black not blue) 17:38:11 still, something is up with turn left/right there 17:39:10 for some reason turning right adds to the degree 17:39:18 and turing left substracts from it 17:39:50 and that doesn't match behaviour for set heading 17:44:46 -!- oerjan has joined. 17:46:25 -!- augur has joined. 17:51:36 oerjan, btw, just need you to confirm that I'm not mixing things up here: If you keep track of a heading and want to turn right you would substract from said heading. 17:51:37 right? 17:51:46 and turing left you would add to it 17:51:50 There was a general rejection of the theory of Evolution when it was first presented, and wasn't thoroughly excepted until a long time afterwards. 17:51:54 Furthermore, the revelation that the Earth is flat would be a far greater revelation than evolutionary theory was, meaning the public rejection and/or outcry would be far more widespread and violent. 17:51:56 assuming a math-direction 17:52:12 um are you sure i'm the one you want to ask? oh math direction 17:52:18 as in -> = 0 ^ = 90 <- 180 17:52:20 and so on 17:52:22 yeah then right turn would be negative 17:52:34 oerjan, then wth does both cfunge and ccbi do 17:52:40 what is this AnMaster some kind of LOGO? 17:52:53 MissPiggy, the fingerprint TURT for befunge 17:52:59 oh cool 17:53:19 ccbi and cfunge both sets heading as in math-direction 17:53:27 but mix up right and left 17:53:32 sheesh 17:54:11 well by math direction i assume you mean the standard way of displaying complex numbers, with i upwards 17:54:13 however for compatibility with older programs it might be better to redefine what right and left in English means 17:54:14 ;) 17:54:26 oerjan, yes 17:54:30 so e^(i*angle) is angle counterclockwise (in radians, though) 17:54:35 oerjan, well, unit circle for trig actually 17:54:40 which works out to the same thing 17:54:59 oerjan, and yes in radians of course. 17:55:43 oerjan, suggesting that <- would be 180 radians wouldn't make sense in *any* system, thus you could conclude the unit in that case was degrees 17:55:46 AnMaster: there was the argument that for a turtle degrees are better, since you get exact multiples of 360 (2*pi is not exact on floating point) 17:56:03 oerjan, turtle degrees? 17:56:17 oh 17:56:17 AnMaster: like bachelor of chenelography, etc 17:56:20 *turtle, degrees 17:56:23 oerjan, right 17:56:46 oerjan, and yes the unit in question for the interface is degrees in integer 17:57:26 so I track it as degrees but convert it to radians to calc sin and cos values for move(Distance) 17:57:27 of course even turns by 60 degrees gives you irrational x,y parts 17:57:39 (for integer forwards) 17:57:49 oerjan, true. And that is defined to be integer x,y 17:58:01 oh it is? 17:58:04 so I think it might be possible to get supposedly straight lines that are somewhat curved 17:58:15 oerjan, well, you have an integer-interface for TURT 17:58:24 (not sure about a real turtle bot) 17:58:29 i'm more thinking about how you might not end up where you started if you do a triangle, say 17:58:30 and there is a query position thingy 17:58:49 so you have to round to integers when drawing 17:58:51 because of rounding errors, if you are using integers 17:59:04 anyway since there is "jump to x,y" too 17:59:17 you want a line to continue where you left off 17:59:23 if you jump to current position 18:00:02 oerjan, and yes quite. Unless you do that 3/4/5 one 18:00:13 (or another one like that) 18:00:55 ah but that one has an irrational _degree_, i'd think 18:01:52 !haskell arctan(4/3)*(180/pi) 18:02:00 oerjan, oh hm 18:02:31 huh, EgoBot claimed a parse error 18:02:34 oerjan, well, if you round to nearest then just ending up near where you wanted to go is enough 18:02:46 oh it's that two possible compilations thing 18:02:47 -!- kar8nga has quit (Remote host closed the connection). 18:02:58 oerjan, how can that compile in two ways? 18:03:30 i probably misremembered the name of arctan, so the compilation as an expression failed. then the compilation as a file failed (obviously) and gave me a parse error 18:03:31 I shouldn't ask, but, don't all turtle interfaces have a rounding problem? I certainly remember Apple LOGO did. 18:03:58 there has to be /some/ way to do it without a rounding issue 18:04:00 cpressey: in _principle_ you could track exact algebraic expressions :D 18:04:19 Even though pi is irrational? 18:04:36 OK, I suppose. 18:04:53 you don't _use_ pi in a turtle. the actual sin and cos are algebraic when the angles are rational _degrees_ 18:04:58 (i think) 18:06:11 for example sin (60 degrees) = (sqrt 2)/2 18:06:24 er wait 18:06:28 cpressey, it seems nearly all turt programs I have found depend on left and right being mixed up 18:06:32 Well, even if they weren't, you could probably still do it. 18:06:44 (sqrt 3)/2 18:06:45 cpressey, but set-heading doing the math set-heading 18:06:51 as in, counter clockwise 18:07:26 I mean, track all movements since the beginning as an algebraic expression incl. sin and cos, reduce when possible using trig rules, and *only for output*, approximate the pixels. 18:07:28 !haskell atan(4/3)*(180/pi) 18:07:30 53.13010235415598 18:07:36 AnMaster: That's unfortunate. 18:07:48 cpressey, yes quite 18:07:53 Sounds almost like someone should define TUR2. 18:07:54 cpressey: that's what i assumed you meant 18:08:01 cpressey, why not TURT2? 18:08:28 Aren't fingerprint IDs four characters? 18:08:42 cpressey, I don't think it says anywhere that longer aren't permitted 18:08:44 nor shorter 18:09:00 Then it's a convention? 18:09:11 cpressey, you should know ;P 18:09:26 "The ( "Load Semantics" instruction loads the semantics for a given fingerprint onto any or all of the instructions A to Z. ( pops a count. It then pops count cells. For each cell that it pops, it multiplies a temporary value (which is initially zero) by 256, and adds the cell value to it. 18:09:26 In this way, ( builds a fingerprint. This mechanism makes it simple to express large fingerprints like 0x452e472e in printable ASCII such as ".G.E"4( ... ), while not requiring the use of ASCII as the medium for all fingerprints. " 18:09:31 quoting from the 98 spec 18:09:41 and yes it is a convention afaik 18:10:01 cpressey, certainly there is nothing preventing me creating a fingerprint 0 18:10:11 or such 18:10:18 Then not TURT2 because it breaks convention. :) 18:10:34 cpressey, also it causes issues in 32-bit funges 18:10:39 TURT2 would evaluate to a 40-bit value, is why, and 32-bit... exactly 18:10:39 which is a thing of the past anyway 18:10:52 Huh 18:11:01 cpressey, things are 64-bit or bignum nowdays (at least the thing *I* write ;P) 18:11:07 well, 18:11:08 You say that like things of the past have less value than things of the present. 18:11:11 cfunge has an option 18:11:17 cpressey, I was joking -_- 18:11:29 I think 32-bit funges are still fairly common 18:11:43 cfunge is 64- or 32-bit (compile time option) 18:11:46 efunge is bignum 18:11:57 cfunge defaults to 64-bit iirc 18:13:12 anyway, the issue is that TURT is so badly specced 18:13:27 Indeed 18:14:24 Hard to believe mixing up left and right, though. 18:15:33 cpressey, well, at least http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/tquine.php seems to depend on that behaviour and that plus a few test suite thingies are the only users of TURT I know of 18:16:06 cpressey, and yes, left/right is problematic. Probably it has been copied for compat between implementations since then 18:16:32 fizzie, btw did you ever do any more work on JIT-funge? 18:17:37 I think if I had to redesign it I would leave out the teleporting and the absolute-heading-setting stuff. 18:18:16 cpressey, and define which direction it was to turn in (math one is the only one that makes sense IMO) 18:18:25 (for relative ones at least) 18:18:32 Well, yes. 18:18:41 cpressey, also what about transparent colours? 18:18:53 you could have semi-transparent pen-colours 18:19:00 more realistic too 18:19:02 Gamma, huh. 18:19:10 cpressey, I was thinking of alpha channel 18:19:16 Oh, right. 18:19:27 cpressey, gamma is something quite different isn't it? 18:19:35 Yes, I was mixed up. 18:19:37 anyway since I render to svg, alpha should be trivial 18:20:38 cpressey, now, should it be additive (light based) mixing or subtractive (ink/crayon/...) based mixing? 18:20:49 the former would be way easier to implement 18:20:59 unless you render to a real turtle bot 18:21:04 but for me who renders to svg... 18:21:37 TURT2 is fine, it just overlaps with something 4-character 18:21:38 I think it would be forgivable for a real turtle robot to stick to black-and-white. 18:21:43 cpressey, oh and you should probably define TURT and TUR2 to share the same underlying turtle bot in case both are used during a single program run 18:21:44 (In 32-bit) 18:22:28 AnMaster: Just so you know, I'm almost certainly never going to get around to defining TUR2. Sorry. 18:22:44 Don't let that stop you or anyone else who wants to, though. 18:22:49 Deewiant, see about ccbi or cfunge having left/right mixed up for relative turining 18:22:58 I saw your comment 18:22:59 Deewiant, fixing it breaks the TURT quine amongst other things 18:23:07 :-) 18:23:21 Deewiant, so what are we to do? 18:23:32 provide a command line option? 18:23:45 You could always have a "chirality" flag you pass to the implementation, a boolean saying how left and right should be determined in TURT 18:24:00 chirality!!! 18:24:07 cpressey, well, the thing is that it is different in set-heading and turn left/right 18:24:09 Chirality is dead 18:24:22 --goatie 18:24:31 what did I miss there? 18:24:39 some sort of pop culture reference? 18:24:55 The point is to provide a command line option that makes the behaviour compatible with what existing programs expect 18:24:57 people in mirror worlds have goaties, of course 18:25:09 wait 18:25:12 *goatee 18:25:20 AnMaster: But hmm, what makes it inconsistent? 18:25:36 Deewiant, well set heading acts like it is math rotation 18:25:43 (Chivalry is dead) 18:25:44 How does it act like it? 18:25:57 set-heading 90 goes north? 18:25:59 Deewiant, as in, 0 = east, 90 = straight up 18:26:05 -!- kar8nga has joined. 18:26:06 as far as I can tell yes 18:26:32 I find that highly unlikely 18:26:40 hm 18:26:43 Looking at CCBI's source, at least :-P 18:27:00 Deewiant, how comes it renders the same as cfunge then 18:27:03 which does it that way 18:27:13 Beats me 18:27:14 void turnRight() { turt.heading += toRad(cip.stack.pop); turt.normalize(); } 18:27:14 void setHeading() { turt.heading = toRad(cip.stack.pop); turt.normalize(); } 18:27:20 Deewiant, anyway, turn right should substract 18:27:21 -!- MigoMipo has quit (Remote host closed the connection). 18:27:22 GROSS 18:27:26 * MissPiggy pukes on Deewiant 18:27:26 assuming math degrees 18:27:28 Deewiant, and it doesn't 18:27:31 Deewiant, that is the issue 18:27:37 According to this, and starting at 0, 90 right and 90 set-to are identical 18:27:54 -!- MigoMipo has joined. 18:28:02 Deewiant, yes that is the bug. Look at how you use those values 18:28:18 AnMaster: I wouldn't assume math degrees: to quote the docs "A 'Query Heading' (positive angle relative to east) " 18:28:27 Oh, never mind 18:28:32 That doesn't mean anything :-P 18:28:54 quite. The reason I didn't reply was I was trying to figure out wth you meant with that :P 18:29:49 all it means is that 0 =< A < 360 (or 0 < A =< 360, both are valid ways to interpret that) 18:30:03 (I would go for the former) 18:30:17 actually it doesn't even mean that 18:30:19 Actually, I'm not even sure it means that. It sounds quite meaningless to me 18:30:22 returning 720 18:30:24 is valid 18:30:27 but -720 isn't 18:30:38 AnMaster: "TRUT"4(n9a*HA.a,@ 18:30:43 Deewiant, ? 18:30:50 Could have just been "positive angle" 18:30:51 Whether H or R, this prints 90 for me 18:31:04 So where's the inconsistency? 18:31:29 Deewiant, that doesn't render anything 18:31:31 so I can't check it 18:31:41 Deewiant, and sure. 18:31:43 I don't give a damn about rendering 18:31:47 err 18:31:56 how else can you check it? 18:31:58 You just said that H is inconsistent wrt R/L 18:32:12 AnMaster, OOC, have you looked at Etcha at all? 18:32:27 cpressey, never heard of it 18:32:34 cpressey, and define OOC 18:32:34 http://catseye.tc/projects/etcha/ 18:32:40 Out Of Curiosity 18:32:43 ah 18:32:59 Deewiant, yes because when you render it turning right ends up turning left 18:33:05 Etcha does the turtle thing, but combines it with the program source 18:33:18 TURT has A and Q which print the heading and pos respectively, if there is a bug in pen movement these should be enough to show it 18:33:21 Deewiant, remember it is relative the turtle bot 18:33:29 Deewiant, (except for set heading) 18:33:42 Deewiant, now look at tests/turt.b98 in cfunge source. It has: 18:33:45 (Etcha's also implemented in some horrendous Java that MissPiggy would probably like.) 18:33:50 5F 9a*L 11x> ; Draw vertical line, turn 90 deg right.; 18:33:50 0C 5F 11x> ; Change to black, draw line. ; 18:34:10 which is very strange 18:34:53 Looks like a typo in your comment or code :-P 18:35:17 Deewiant, wait, is svg's coordinate system upside down? 18:35:22 hm 18:35:23 AnMaster: I'm still not seeing anything: "TRUT"4(n9a*HaF1PI@ prints a dot to the south as expected 18:35:27 that could explain some of the things 18:35:50 Deewiant, btw in that turt test code above you print the supposed-to-be-black dot as blue 18:35:55 and blue was never set as pen colour 18:36:00 it was set as the bg colour though 18:36:26 Deewiant, using ccbi x86_64 binary downloaded from your website today 18:39:32 Gah inkscape isn't zooming to the correct place by default 18:39:47 Deewiant, it zooms at the pointer iirc 18:39:49 when you scroll 18:40:02 (with ctrl down) 18:40:17 that's certainly how it works here 18:40:32 It's failing at using my viewbox 18:40:41 Deewiant, it uses it just fine for cfunge for some reason 18:41:13 It displays it fine in the preview thing when I have it selected in file->open 18:41:41 huh 18:42:18 Zooming in would take forever as it starts from like -200 to 800 and it's supposed to go to -0.001 to 0.002 or so 18:42:56 Deewiant, anyway, svg uses +y as down right? 18:43:04 or do I misremember? 18:43:10 Yes I'd think so 18:43:26 why can't it use a sane way like in math :/ 18:43:56 Deewiant, it seems to start pretty decently zoomed for ccbi output for me 18:44:05 It used to for me too 18:44:07 What version? 18:44:25 * AnMaster starts it again 18:44:30 inkscape --version 18:45:05 0.46 18:45:08 Well, all the more reason to rewrite this thing to not use tiny coordinates :-P 18:45:12 Inkscape 0.47 r22583 (Jan 22 2010) 18:45:31 on 0.47 on my other computer I see those problems you mention 18:45:53 Alright, so it's not my fault as such 18:45:53 efunge doesn't use tiny coordinates btw, both versions work fine there 18:46:13 I planned on using SVG Tiny originally which had a limitation of +-32767 or some such, which is why I used tiny coordinates 18:46:36 Deewiant, cfunge causes same issues as ccbi there 18:46:39 I ended up not doing so but I already had the coordinate impl at that point 18:46:46 trivial to fix 18:46:55 just stop scaling it 18:47:24 But I'll lose all my cool optimizations for printing numbers ;-P 18:47:47 Although I think I disabled them already for some reason or other 18:48:13 As it doesn't seem to emit 5e-5 which'd be shorter than .00005 18:52:05 But I'll lose all my cool optimizations for printing numbers ;-P <-- ? 18:52:28 you were golfing the TURT output 18:52:30 ?? 18:52:46 It did help for stuff like the quine 18:53:17 Deewiant, oh? 18:53:32 I mean, reduction measureable in kilobytes not bytes :-P 18:53:51 Deewiant, do you still try to make the paths as long as possible 18:53:52 that is 18:53:56 using M if jumping 18:54:00 instead of creating a new path 18:54:07 Of course, turning .00005 to .5 will help even more 18:54:12 AnMaster: Yes 18:54:13 Deewiant, I do that in cfunge but not in efunge. 18:54:25 Since SVG supports it, might as well 18:54:28 Deewiant, the quine is sluggish to zoom in with inkscape for the cfunge output 18:54:33 but snappy for the efunge output 18:54:40 so it seems like a counter optimisation 18:54:55 Space for speed 18:55:08 Do you only use M at the start of a path then? 18:55:12 Deewiant, correct 18:55:14 in efunge 18:55:55 How big are the quine SVGs from cfunge and efunge? 18:55:58 Deewiant, only space optimisation I do is to delete dots that are hidden under other dots or under "corner" points of paths 18:56:45 which is a reasonably fast "scan the cons-style list from newest to oldest and built a set (erlang stdlib provides that) with coordinates, remove circles if they are already in it" 18:56:58 Deewiant, you have to remember to get circles and lines in the straight order 18:57:03 I don't know if you do that 18:57:06 cfunge doesn't it seems 18:57:13 it always draws lines first then circles 18:57:42 but those two groups have their order preserved internally 18:57:47 just not between each other 18:58:52 Deewiant, btw I assume your output contains no newlines then? 18:59:03 oh hm it does 18:59:14 Deewiant, also "#00f000" 18:59:20 oh wait 18:59:21 misread 18:59:32 heck you do turn 0000ff into 00f 18:59:36 -_- 18:59:41 Of course ;-P 18:59:57 Deewiant, what is the algorithm for that. The one I can think of is fairly wordy 19:00:13 I'm sorry: "Etcha does the turtle thing, but combines it with the program source" -- it actually doesn't. It's like BitChanger but uses a turtle graphics playfield instead of a tape. 19:00:40 AnMaster: if (buf[1] == buf[2] && buf[3] == buf[4] && buf[5] == buf[6]) 19:00:41 cpressey, oh I bookmarked it for later 19:00:49 Deewiant, *cringe* 19:00:54 :-D 19:01:00 Deewiant, that assumes you have a fairly imperative language 19:01:10 Not really 19:01:16 Deewiant, now go implement it in scheme 19:01:29 Deewiant, for cons-list style strings 19:01:42 Deewiant, or maybe in haskell 19:01:45 Those can still be indexed? 19:01:54 Deewiant, can cons lists really? 19:01:56 well 19:01:59 cdar 19:02:00 I guess 19:02:19 (or was it cadr? I always mix those up) 19:02:39 (as in, I never remember which order to read the operations in) 19:03:37 oh cadr it seems 19:03:43 which doesn't make a lot of sense to me 19:04:07 uncurry (==) $ join (***) (map fst) $ (filter (even.snd) &&& filter (odd.snd)) $ zip (tail x) [0..] 19:04:21 This is how I'd write that comparison in Haskell if I wanted to be general about it 19:04:31 Where x is the #rrggbb string 19:05:01 If I wanted to be nongeneral I'd do (x !! 1 == x !! 2 && x !! 3 == ...) 19:05:18 But that's also less efficient since it traverses the list multiple times :-P 19:05:34 AFK for a bit -> 19:07:33 Deewiant, found the cause of the wrong colour circle in ccbi yet? 19:07:39 match([X,X|r]) -> match(r); match([]) -> true; match(_) -> false 19:07:58 cpressey, wth at that tail (assuming erlang) 19:08:18 AnMaster: ? 19:08:25 My syntax isn't exact 19:08:26 cpressey, lower case R 19:08:32 it's an atom 19:08:35 Fine. 19:08:37 R. 19:08:46 cpressey, you coded erlang before, there is no excuse ;) 19:09:25 -!- kar8nga has quit (Remote host closed the connection). 19:10:10 hm does css and svg accept color:red/color="red"? 19:10:18 if so that is shorter than #f00 19:10:25 I was merely surprised you didn't see there was an elegant way to express it in a functional language that you'. 19:10:30 re fluent in... 19:10:49 cpressey, I'm not that fluent, also I found that somewhat non-elegant 19:11:58 cpressey, however it's late and I had not just _a_ heavy day but several heavy days. And another one tomorrow... 19:13:09 cpressey, anyway, I have the colour as a binary at that point it seems. I blame io_lib:format for this 19:13:19 which is very strange 19:13:26 since no binary was involved 19:14:03 AnMaster: I'm not looking 19:14:04 Binaries always made me hesistate, but I *think* you can say things like <> to match them 19:17:22 -!- MizardX- has joined. 19:17:41 Something like all (uncurry (==)) . map snd . filter fst . zip (cycle [True,False]) . ap zip tail . tail might be nicer actually 19:18:06 -!- MizardX has quit (Ping timeout: 260 seconds). 19:18:08 MissPiggy: Is this kind of stuff less puke-worthy? 19:18:20 -!- MizardX- has changed nick to MizardX. 19:18:20 no 19:18:24 that's worse 19:18:29 D'oh 19:18:40 Deewiant: ap zip tail? 19:18:50 You know as well as I do that that should be zip`ap`tail. 19:18:59 The Aztec god of consecutive numbers. 19:19:07 I know that it could be, not that it should be 19:19:32 On a more serious note: I find infix "ap" to be much more readable. 19:19:35 In expressions like that where it'd need extra brackets to invoke the gawd I'd rather leave it as such 19:20:12 Mmm... 19:20:32 (zip `ap` tail) is nicer IMO, but... Whatever. 19:20:43 <*> has unfortunate precedence too, so that doesn't help 19:21:11 I still think the Erlang version is closest to how I think. 19:21:15 You're not going to get anything better, because of the precedence of 「.」. 19:22:03 cpressey: Yes, but that requires writing a separate function ;-) 19:22:06 AnMaster: I'm not looking <-- at what? 19:22:13 For bugs. 19:22:20 At the code, whatever. 19:22:32 As a side note, non-English punctuation is really nice for discussing programming. Doesn't collide at all for most languages. 19:22:48 "" is not English punctuation 19:22:59 Erm. 19:23:00 Bleh. 19:23:03 Not punctuation. 19:23:18 lament: Don"t confuse us. 19:23:19 Deewiant, why not? 19:23:35 cpressey: well ' isn't English punctuation either :) 19:23:49 ... Other word that refers to various bits of non-pronouncable inline metadata used in the writing of natural language. 19:24:01 although on the rare occasions that people use the correct apostrophe... they just get laughed at 19:24:24 cpressey, anyway for 3 colours you could just do [$#,X,X,Y,Y,Z,Z] 19:24:29 now that would be nice 19:24:37 AnMaster: Because TURT isn't on the top of my TODO list :-P 19:24:46 'Struth! 19:24:48 Deewiant, nor is ccbi I guess? 19:24:57 I meant, "of CCBI" 19:25:08 But yeah, it isn't either, as such 19:25:15 Deewiant, well okay. Still ccbi 1 still recieves bug fixes I thought? 19:25:25 receives* 19:26:08 I'd rather avoid messing with CCBI1 at all unless it's something relatively important 19:26:31 Deewiant, and TURT isn't? 19:26:47 Not IMO, especially since it mostly works :-P 19:26:57 AnMaster: Do you have a simple testcase for the north/south thing? 19:27:49 Deewiant, hm? well you may be right, the coordinate system of svg confused me I think 19:28:07 Alright 19:28:11 Deewiant, but the wrong colour of dot: yes 19:28:19 it is src/turt.b98 19:28:21 So now there's that colour thing and preserving order of lines/points 19:28:23 err 19:28:26 Actually tests/turt.b98 19:28:27 test/turt.b98 19:28:28 I meant 19:28:30 yeah tests even 19:28:33 :-P 19:28:40 -!- charlls has quit (Read error: Connection reset by peer). 19:28:43 Deewiant, obviously you found it by yourself though 19:29:01 Thus my 93-line TODO for CCBI grows by four lines. 19:29:05 Deewiant, anyway do you optimise #f00 into red? 19:29:09 Nope. 19:29:16 Deewiant, :/ 19:29:20 >_< 19:29:25 Deewiant, what? 19:29:33 afaik it is legal 19:29:36 ":/" seems hardly warranted :-D 19:29:47 Especially from someone who outputs #ff0000 19:29:49 Deewiant, THINK OF THE EXTRA BYTES 19:29:53 why is that an optimisation? 19:29:59 It saves a byte of space 19:30:01 scarf, fewer bytes 19:30:12 For the want of a byte of space, the kingdom was lost. 19:31:04 Deewiant, anyway I was ridiculing you for your extreme space optimisations that are time pessimisationsa 19:31:07 s/a$// 19:31:18 also you still try to format the svg nicely 19:31:22 "red" is the only one with any advantage, I think 19:31:29 lots of un-needed newlines and spaces 19:31:49 cfunge puts it all on one line (due to using the genx library to generate the xml) 19:31:51 Yes, I know 19:31:55 -!- charlls has joined. 19:31:59 (ehird managed to convince me to do that, not sure why) 19:32:20 I might do that M-only-at-start thing as well, seems nice enough 19:32:21 (since it outputs stuff like: ) 19:32:55 Aha, the defined colours are actually stuff like #808080 as well, so there's more advantage to be had 19:33:05 Deewiant, hm? 19:33:24 Continuing from my '"red" is the only one with any advantage, I think' 19:33:41 Deewiant, iirc those are (used to be?) different between browsers 19:33:52 No, they're well-defined 19:33:53 the only ones you could trust were black/white/red/blue/green 19:34:02 Deewiant, this might have been when HTML 4 was still new 19:34:04 There are 16 defined colours in HTML 4.0 19:34:05 I don't remember 19:34:13 And those same colours are defined in SVG 1.1 19:34:28 Deewiant, so which ones are advantages? 19:34:30 Which actually linked to the CSS 2.0 spec 19:34:46 There's system colours as well, which obviously aren't portable 19:35:07 AnMaster: silver, gray, maroon, red, purple, green, olive, navy, teal 19:35:08 Deewiant, btw why no DOCTYPE? 19:35:18 did CSS steal the colour list from X11, or vice versa? 19:35:22 or do they both have a common source? 19:35:31 scarf, X11 has a colour list? 19:35:36 I think X11 defines more colours than CSS? 19:35:37 I think so 19:35:49 some of them are really weirdly named 19:35:52 Deewiant: hmm, maybe 19:35:55 AnMaster: http://jwatt.org/svg/authoring/#doctype-declaration 19:36:58 Deewiant, the link to why is dead 19:37:16 or at least to where they tell it 19:37:20 I get a redirect loop 19:37:36 Accept cookies from yahoo.com 19:37:55 Or enable javascript or whatever you have disabled 19:38:23 AnMaster: But anyway, the fact that SVG 1.2 won't have one is also some proof I guess 19:38:24 Deewiant, I use lynx atm 19:38:29 let me try w3m 19:38:34 That would be a problem 19:38:39 :-P 19:38:42 Deewiant, I don't have X running 19:38:47 on this system 19:39:02 So you probably won't be able to use yahoo groups 19:39:14 maybe google has a cached copy 19:39:31 yep, cache:http://groups.yahoo.com/group/svg-developers/message/48562 worked 19:39:32 fungot, We have managed out of existence of interconnecting principles, then they were 19:39:33 cpressey: cyrus! are you leaving! we must use! let's show ' em! 200g per night. care, and stay...healthy! my husband...he's...he's...gone... but he left me precious gifts! the seeds...and our child, it's ancient history now... 19:40:03 cpressey, you sounded almost as bad as fungot there XD 19:40:04 AnMaster: cyrus! are you leaving! back to the present? he's been known. we reptites will rule the world in a mere door that keeps us bound, hand, foot...and tongue kid? ...oh, it's you, isn't this morbid? the great adventurer toma levine rests in a grave to the north. it's a great place for a picnic! heard that magus's place... 19:40:10 AnMaster: Well, I try. :) 19:41:52 Deewiant, is there any good svg validator btw? 19:42:08 Deewiant, since the w3c one accepted a viewbox of "hello" 19:42:16 :-D 19:42:48 I don't know of any others 19:43:00 Deewiant, and the w3c one is obviously quite useless 19:43:35 Deewiant, btw how easy would it be in ccbi to replace the rendering to svg with a completely different format? 19:44:08 Depends on how easy it is to render that format :-P 19:44:18 Deewiant, well, lets say png 19:44:34 I don't know enough about image formats to be able to say anything 19:44:48 Deewiant, well, any bitmap format then 19:45:01 But basically the stuff is stored as paths and dots 19:45:20 So it depends on how easily you can turn that into an image 19:45:23 Deewiant, how funge specific is it? 19:45:48 Deewiant, I mean, does the turtle part have a clean and nice interface that could be used for other things? 19:46:18 There's hardly any interface 19:46:32 (in efunge that is the case, and it can render to two formats, though one is slightly cheating: svg and raw (debug dump of all the nodes)) 19:46:57 Rendering once you have the data is trivial enough to do to any format (assuming you can render paths and dots) 19:46:59 I still haven't made it save to a file though 19:47:56 Getting the original image data to render is something that's only "cleanly" doable through the funge commands 19:48:23 -!- Gracenotes has quit (Ping timeout: 246 seconds). 19:48:34 Deewiant, what do you mean with that? 19:49:20 I mean that the only "clean" interface to getting a turtle-drawn picture is the funge commands, there's no nice turtle.moveforward(10) or turtle.turnright(45) or anything 19:50:11 start/0, start_link/0, stop/0, get_info/0, clear/0, render/1, rotate/1, set_heading/1, jump/1, move/1, set_bg_colour/1, set_pen_colour/1, set_pen_state/1]). 19:50:19 err ignore that ]). at the end 19:50:20 anyway 19:50:30 that is the api for efunge_turtle.erl 19:51:00 I have hardly any API, just a few structs and then the functions defining the funge commands 19:51:19 Deewiant, even in cfunge I mostly have separate functions for it, though not completely 19:51:24 A few helpers do exist which could be part of an API if there were one 19:51:28 it would require some work to pick it out 19:51:34 but not much 19:51:35 -!- scarf has quit (Remote host closed the connection). 19:51:58 Deewiant, and render returns an iolist 19:52:27 (erlang data type of mixed, possibly deep, cons list containing mixed binaries and cons-style strings) 19:53:00 (since the file and console io routines can work with this it is common for purposes where you expect it to go to IO only) 19:53:11 (no need to flattern it in any sort of nice way) 19:55:24 btw an idea for an interesting bitmap format: start with the middle pixel, then the one above it, then the one left of that 19:55:28 then one down 19:55:30 and so on 19:55:33 in a spiral 19:56:37 a nice property is that even if the image is cut off somewhere near the middle you would still get the center of the image where the most interesting things usually are 19:57:02 cpressey, Deewiant: opinions? 19:57:53 for non-square pictures you could just skip over the parts outside (would require a header with dimensions then) 19:58:32 Yes, it has a nice streamableness to it 19:58:42 cpressey, har 19:58:47 well actually 19:58:48 it does 19:59:25 so basically like: 19:59:27 v<<<<< 19:59:27 vv<<<^ 19:59:27 vvv<^^ 19:59:27 vvv^^^ 19:59:27 vv>>^^ 19:59:28 v>>>>^ 19:59:32 >... 19:59:32 If you have a "not really a part of the picture" color, you could do non-square pictures without a header (run-length encoding the pixels would help here) 20:00:05 Hell, you could do arbitrarily-shaped pictures with that "color" :) 20:00:17 cpressey, yes basically like alpha right? 20:00:26 :P 20:00:50 cpressey, anyway, sure you could have an alpha channel or whatever 20:00:53 I guess, with the additional implication that "you can just discard this part of the picture after it's done" 20:00:59 hm 20:01:06 as opposed to "I want a transparent border" or something 20:01:13 right 20:01:31 But yeah, very similar to alpha otherwise. 20:01:34 cpressey, would require removing one specific shade or adding one more bit/byte 20:02:02 cpressey, I imagine one would use 16-bit integers per channel here 20:02:12 or 8 bits at the very least 20:02:25 OR, you could embed commands to clip the existing image -- and additional pixels should flow around the new clipped region. 20:02:39 32-bit floating point per channel is kind of heavy (I have dealt with HDR, I know this) 20:02:45 You could stream entire slideshows, in a strange manner, if you went that way 20:02:58 cpressey, how? 20:03:18 stream a spiral, clip it to 0x0, stream another spiral, clip it... 20:03:25 oh I see 20:03:29 hm 20:03:46 cpressey, I wasn't thinking of the streaming aspect of it before 20:03:52 but that is interesting indeed 20:04:08 cpressey, I wonder how well it would compress though 20:04:16 I don't like the idea of embedding a "command" as much 20:04:34 cpressey, you could use embedded befunge ;) 20:04:49 would fit the 2D nature 20:04:55 Well, RLE is probably the simplest kind of compression you could do 20:04:58 Har 20:05:18 cpressey, I was thinking of "how well will deflate work on this 20:05:34 or such 20:10:52 Deewiant, do you know if you can set r of a circle using css in svg? 20:10:56 that would save quite a lot 20:11:17 Yes, and no you can't. 20:11:29 I remember you asking me about this a year+ ago too ;-P 20:12:15 ah 20:24:56 "Triton cluster has 112 compute nodes. Each of them has two 6-core "AMD Opteron 2435" CPUs, which corresponds to total of 1344 cores." Yay, more university-internal computational resources. 20:25:35 fizzie, you have access to that? 20:25:46 or will have rather 20:26:13 with that you could build some nice models for fungot! ;P 20:26:13 AnMaster: see? i like marle better than " princess,' the chosen time has come! he's strong and he's gonna thrash those monsters! yea! is it? 20:26:16 Yes. Though we have to share it with the physicists and the BECS ("Biomedical Engineering and Computational Science") people, so it'll probably be a bit crowded. 20:27:00 just pushed TURT updates to cfunge and the new TURT for efunge 20:27:29 still some TODO for the efunge one. Like compact colours and properly testing clear when pen is down 20:28:01 -!- adam_d has joined. 20:29:12 Deewiant, btw isn't black the default colour of paths and circles? 20:29:22 (assuming no css overrides) 20:29:29 There is no defined default for anything 20:29:35 ouch 20:29:44 Or did you mean SVG? 20:29:49 I don't know about SVG, that was about TURT 20:30:20 Words and phrases to use in specs! "Of course", "Generally", "Without a doubt", "Except for trivial cases", "Positive angle relative to east" 20:30:31 :-D 20:32:01 I've learned my lesson -- unfortunately my newfound zest for precision will probably not be applied to Befunge anytime soon. 20:35:55 Maybe Befunge-111 20:36:13 Ah, hey, speaking of inprecise specs 20:36:25 cpressey: TOYS: B ('pair of shoes') pops two cells off the stack and pushes the result of a "butterfly" bit operation. 20:37:02 I don't /think/ we've asked you what 'a "butterfly" bit operation' was supposed to be 20:37:26 indeed 20:37:29 I would like to know too 20:37:41 We've asked a lot of people, but I don't think we've asked you ;-) 20:37:45 since the only one we found doesn't work on that number of inputs iirc 20:37:57 No, we've got the (a+b, a-b) one 20:38:12 Deewiant, well yes, but that one was just copied from some other interpreter 20:38:14 Reverse-engineered from !Befunge 20:38:18 But also justified 20:38:20 hey 20:38:29 Deewiant, oh? 20:39:01 http://en.wikipedia.org/wiki/Butterfly_diagram 20:40:06 It was inspired by the mention in here: http://catseye.tc/projects/starw/doc/starw.html 20:40:15 But I have no idea why it has two inputs, or what that means. 20:40:16 Sorry. 20:40:18 -!- jcp has joined. 20:40:23 heh 20:40:37 "Butterfly the bits of X, i.e., 11001100 becomes 10100101." 20:40:41 FWIW I have no idea what that butterfly does either 20:40:42 Also a great spec. 20:40:49 Yep :-) 20:41:16 http://en.wikipedia.org/wiki/Butterfly_%28disambiguation%29 20:41:31 ATM, "Butterfliies Eat Pants" is the current vandalism. 20:41:51 >_< 20:41:58 DESU 20:42:22 Wareya: もっとです? 20:43:42 I think the 8-bit diagram in the Butterfly_diagram page might explain the *W butterfly operation 20:43:47 ? 20:43:51 Or not 20:44:27 cpressey, it looks like it tries to distribute those one-bits symmetrically? 20:44:36 according to a pleasing pattern perhaps 20:44:59 That's as good as anything I can come up with :) 20:45:39 cpressey, note that the two identical nibbles (separated with space): 1100 1100 becomes 1010 0101 20:45:53 patterns to note: 20:46:02 identical nibbles in input 20:46:15 symmetrical output byte 20:46:32 If you change directions in my language, you can change 1100 to 0011 or to 1000 if you're not careful! 20:46:33 mirror nibbles (follows from the previous one though) 20:46:46 every other bit is one in each nibble 20:47:04 the only place with two identical bits is where the nibbles join up 20:47:40 this is clearly very significant for, uh... significant reasons! 20:48:03 (of great significance of course) 20:48:15 it should also be noted that the sign bit was *not* changed 20:48:17 again very important 20:48:18 I think it's this 20:48:30 cpressey, ? 20:48:33 first 1100 -> 1x1x0x0x 20:48:42 second 1100 -> x0x0x1x1 20:48:47 cpressey, what are those x? 20:48:49 (second is like first just mirrored) 20:49:00 x means "use the bit from the other half" 20:49:14 so 20:49:18 then what 20:49:26 oh wait 20:49:28 So if you combin 1x1x0x0x and x0x0x1x1 you get: 10100101 20:49:43 cpressey, ah interesting. You know this would have been trivial in intercal I think 20:49:49 which is kind of amazing 20:50:19 So, there's your answer, I think. For two inputs, just treat each like the nibbles in *W 20:50:55 cpressey, but then the answer is twice the number of bits of the funge implementations? 20:51:05 :D 20:51:08 s/s\?/\?/ 20:51:20 cpressey, anyway it doesn't work out 20:51:40 oh wait 20:51:44 just push two separate cells 20:51:53 one with the upper 64 bits and one with the lower 64 bits 20:51:58 Sure! 20:52:01 of course this breaks down for bignum 20:52:02 -_- 20:52:10 Since the spec doesn't say how many result values there should be for B 20:52:44 cpressey, but it is impossible in a bignum funge. 20:53:06 * AnMaster mandates a "bignum considerations" section after the "security considerations" for future fingerprints 20:53:16 cpressey, want to see the ATHR spec btw? 20:53:33 it is somewhat in a flux 20:53:37 As I've mentioned, Funge, like C, just doesn't do bignum. 20:53:44 due to trying to figure out what is feasible 20:53:45 Sure. 20:53:50 you can emulate bignums in C 20:53:52 cpressey, and I declare that wrong. Becuase it does 20:53:53 :) 20:54:26 "do bignum" => "cleanly support bignums as a primitive type" 20:54:35 cpressey, yep 20:54:39 and it works mostly 20:54:45 cpressey, anyway http://sprunge.us/icgB 20:54:53 Because both languages define a MAXSIZE for integers. 20:54:54 and it is somewhat in flux due to various reasons 20:54:58 cpressey, -1 20:55:01 I return -1 20:55:04 for that y thing 20:55:59 cpressey, at least be happy I don't insist on doing a balanced ternary bignum funge! 20:58:51 ATHR looks pretty good, I like the books. 20:59:13 -!- gm|lap has joined. 20:59:16 cpressey, it is also rather well specced especially how it interacts with other known feral fingerprints 20:59:35 (especially the RCS ones which are infamously underspecced in general) 21:00:19 of course, I refuse to even try to figure out how it works with TRDS 21:00:48 since it is bound to cause issues when you time travel and have async threads 21:03:24 My head hurts. 21:04:08 cpressey, from TRDS alone or from ATHR + TRDS? 21:04:12 The implementation shall detect deadlocks (in a reasonably timely manner) when 21:04:12 two IIPC operations are waiting on each other and break them by making one of 21:04:12 is it just me, or the link for downloading verisoft is dead? http://cm.bell-labs.com/who/god/verisoft/files.html 21:04:12 the blocking threads reverse. 21:04:16 added that paragraph 21:04:29 >From all of it. 21:05:03 cpressey, what download link? Somewhere on that page? 21:05:24 AnMaster: you mean charlls? 21:05:25 yes 21:05:34 oh 21:05:36 right I did 21:05:45 charlls, indeed it seems to be dead 21:05:52 charlls, but look that page mentions .Z 21:05:54 it is OLD 21:06:08 and "http://www.gnu.ai.mit.edu/home.html." 21:06:10 wth :) 21:06:13 indeed 21:07:00 -!- jcp has quit (Remote host closed the connection). 21:07:08 do you know other model checking tools for c++? i've found inspect which seems somewhat mantained and ongoing but i'm not sure how to use it for lock-free primitives (cas and ll-sc) 21:07:18 c/c++ i meant, c is fine too 21:07:38 charlls, I have no clue 21:07:49 charlls, I use a message passing language when I need to do threads 21:07:51 such as erlang 21:08:00 I refuse to touch pthreads directly 21:08:04 !scramble scramble 21:08:15 is egobot here? 21:08:20 ^scramble scramble 21:08:20 srmlebac 21:08:26 oerjan, or did you mean fungot? 21:08:27 AnMaster: we must do it to save you! who the heck are you?! c'mon!! 21:08:33 ^scramble srmlebac 21:08:34 smeacblr 21:08:39 ^scramble smeacblr 21:08:40 seclrbam 21:08:42 !unscramble 11001100 21:08:44 ^scramble seclrbam 21:08:45 scramble 21:09:03 so at least for "scramble" it has a short period 21:09:05 oerjan, ... 21:09:06 oh right 21:09:10 ^unscramble 11001100 21:09:11 10100101 21:09:15 yay! 21:09:16 wow 21:09:20 cpressey, ^ 21:09:27 oerjan, what is the algorithm used there? 21:09:33 ^show scramble 21:09:34 >>,[>,]<[<]>[.>>]<[>>]<2[.<2] 21:09:47 ^unscramble unscramble 21:09:47 uenlsbcmra 21:09:57 ^unscramble uenlsbcmra 21:09:58 uaernmlcsb 21:10:01 Looks like butterflyification to me. 21:10:01 ^unscramble uaernmlcsb 21:10:02 ubasecrlnm 21:10:06 ^unscramble ubasecrlnm 21:10:06 umbnalsrec 21:10:10 ^unscramble umbnalsrec 21:10:11 ucmebrnsal 21:10:15 ^unscramble ucmebrnsal 21:10:15 ulcamsenbr 21:10:19 ^unscramble ulcamsenbr 21:10:20 urlbcnaems 21:10:25 ^unscramble urlbcnaems 21:10:25 usrmlebacn 21:10:30 ^unscramble usrmlebacn 21:10:31 unscramble 21:10:35 longer period for that one 21:10:36 hm 21:10:42 ^scramble 12345678 21:10:43 13578642 21:10:53 ^unscramble 12345678 21:10:54 18273645 21:11:00 ^unscramble 123456789 21:11:01 192837465 21:11:08 ^scramble 123456789 21:11:08 135798642 21:11:14 ^scramble abc 21:11:14 acb 21:11:19 ^scramble abcd 21:11:20 acdb 21:11:27 cpressey, not quite I think 21:11:31 i think we calculated periods around when those commands were first added 21:11:40 oerjan, ah 21:11:49 ^list 21:11:51 ^show 21:11:52 echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble 21:11:54 ^unscramble 12345678 21:11:54 18273645 21:11:58 ^show wc 21:11:58 [] 21:12:02 what 21:12:04 fizzie, ^ 21:12:14 ^show ul 21:12:15 >,[>,]<[<]>[<+4[>-8<-]+>-[-7[-2[<+3[>-4<-]+>[<+4[>-5<-]+>[-11[-3[[-]<2[>[-]>+<2-]>>[<2+>>-]+<[->-<3[[>+<-]<]>>[>]]>[->[>]<[[>+<-]<]<2[[>+<-]<]<[[>+<-]<]>>[>]>[[[>]>+<2[<]>-]<2[[>+<-]<]>>[>]>[>]>[<2[<]<[<]<+>>[>]>[>]>-]<2[<]>]>>[[<+>-]>]<2[<]]]<[->>[>]<[[>>+<2-]<]<2[[>+<-]<]>+>[>]+5[>+8<-]+2>-[<+[<]>+[>]<-]]>]<[->>[[<2+>>-]>]<3[[>+<-]<]]>]<[-<[[<]>.[-]>[[<+>-]>]>>[[<+>-]>]<2[<]<2]>>>[[<+>-]>]<2[<]<]>]<[->>[>]<[[>+<-]<]<2[>>>>[>] 21:12:21 1x2x3x4x, x8x7x6x5 21:12:22 well that one is cut short 21:12:37 It's also not used. 21:12:46 I don't know what that wc is about. 21:12:52 It doesn't look very worky. 21:12:56 ^wc foo bar baz 21:12:56 fizzie, ^ul isn't used? 21:13:08 what then is it for 21:13:26 ^show choo 21:13:26 >,[>,]+32[<]>[[.>]<[<]>[-]>] 21:13:28 ^show cho 21:13:29 >,[>,]<[<]>[[.>]<[<]>[-]>] 21:13:33 ^cho test 21:13:35 testeststt 21:13:38 I mean that brainfuck code is just a leftover from time before Underload was a directly supported language by fungot. 21:13:38 ^choo test 21:13:38 ^choo test 21:13:39 fizzie: i see. you know, i really care... a time portal? what in the...! ozzie's stumped! it's time you jumped off this mortal coil... 21:13:39 test est st t 21:13:39 test est st t 21:13:43 fizzie, ah 21:14:00 ^pow2 test 21:14:01 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912 1073741824 2147483648 42949672 ... 21:14:05 eh? 21:14:09 ^show pow2 21:14:09 That one doesn't take any inputs. 21:14:09 +2[[<+7[-<+7>]>[-<+<+>>]<[->+<]<-2.[-]<]+4[->+8<]>.[-]>>[-[>+2<-[>+2<-[>+2<-[>+2<-[>-8>+>[->+>+<2]+>>[<2->>[-]]<2[>+<-]>[-<+>]<4-[>+2<-[>+2<-[>+2<-[>+2<[-]]]]]]]]]]<[->+<]>+>[-<+>]>>]<3] 21:14:12 fizzie, right 21:14:16 It just outputs powers of two. 21:14:17 ^show source 21:14:18 (http://git.zem.fi/fungot/blob/HEAD:/fungot.b98)S 21:14:23 ^show help 21:14:23 (^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool)S 21:14:34 ^show show 21:14:38 aww 21:14:43 ^show hw 21:14:44 >+9[<+8>-]<.>+7[<+4>-]<+.+7..+3.>>>+8[<+4>-]<.>>>+10[<+9>-]<-3.<4.+3.-6.-8.>>+. 21:14:48 ^hw 21:14:49 Hello World! 21:15:13 ^fib 21:15:14 0.1.1.2.3.5.8.13.21.34.55.89.144.233.377.610.987.1597.2584.4181.6765.10946.17711.28657.46368.75025.121393.196418.317811.514229.832040.1346269.2178309.3524578.5702887.9227465.14930352.24157817.39088169.632459 ... 21:15:38 cpressey, what is your opinion on the coding style in http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 ;) 21:15:38 AnMaster: frog will do. the king fought the mystics over 400 long years. when will it be the reptites, or you silly apes who end up ruling the world? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast our land! now we'll have some peace! magus is a tad on the spooky side. our only hope. 21:15:56 Should at some point fix that >>> bug too. It collapses multiple <<>>s. 21:16:53 -!- tombom_ has joined. 21:17:04 AnMaster: I have no strong feelings about it. 21:17:06 fizzie, what was that triangle in the code for now again? 21:17:11 fizzie, around line 157 21:18:10 Converts punctuation token indices to characters. 21:18:13 I'm just amazed the thing actually works. 21:18:25 cpressey, well it uses the SOCK fingerprint for sockets of course 21:18:34 There's really no reason to have a triangle there, since a "comb-style" jump table would work as well. 21:18:56 -!- tombom has quit (Ping timeout: 240 seconds). 21:18:57 fizzie, or a binary w tree? 21:19:13 Well, that too, but since it's a contiguous range, I think a jump table makes sense. 21:19:19 The letters above the triangle are comments, in fact. 21:19:22 fizzie, a j table yes 21:19:22 It's also pretty. 21:19:37 cpressey, have you looked at mycology source then? 21:19:44 I don't think so. 21:19:57 Mycology's a lot wider, it's not always easy to look at it. 21:20:14 cpressey, http://sprunge.us/KcWN 21:20:16 and what fizzie said 21:20:22 also contains a literal null byte 21:20:25 to test that 21:20:52 Christ. 21:21:05 cpressey, the upper corner is a 93 test suite 21:21:10 the rest is for 98 21:21:23 you can see it is somewhat more compact up there 21:21:27 cpressey, also Deewiant wrote it 21:21:30 also,* 21:21:53 I fail to see how he can maintain it :) 21:21:59 I'm happy he does though 21:22:40 cpressey, I love the vertical strings in it 21:22:42 -!- Phantom_Hoover has joined. 21:22:49 and how some stuff is used differently in different directions 21:23:13 INTERCAL is not IWBTG. Malbolge is. 21:23:38 IWBTG? 21:23:55 I Wanna Be The Guy. 21:24:04 Insanely hard computer game. 21:24:47 mhm 21:25:07 Per the topic. 21:25:23 oh hadn't noticed 21:25:33 -!- AnMaster has set topic: 0 days since last topic change | For those who don't know: INTERCAL is basically the I Wanna Be The Guy of programming languages. Not useful for anything serious, but pretty funny when viewed from the outside. | http://tunes.org/~nef/logs/esoteric/?C=M;O=D. 21:26:04 ooh 21:26:09 Mycology is 180 columns wide 21:26:19 Mycology? 21:26:32 Probably matches what fits in UltraEdit-32, 1600x1200, Andale Mono 10pt or something 21:26:36 http://sprunge.us/KcWN 21:26:58 Phantom_Hoover, or official source: http://users.tkk.fi/~mniemenm/befunge/mycology.html 21:27:11 Or permalink: http://iki.fi/matti.niemenmaa/befunge/mycology.html 21:27:37 Deewiant, I just copy from top of browser. Always. At all sites. 21:27:52 Well then you're an idiot 21:27:57 Deewiant, why? 21:28:06 it should work. It makes sense if it works 21:28:08 and it is easiest 21:28:09 Because that's not always the best link to use 21:28:20 Deewiant, then the wrong link is displayed at the top 21:28:31 Not all URLs are permanent 21:28:35 "if you must use FBBI" 21:28:35 heh 21:29:05 I should *probably* apply those patches. Someday. 21:29:31 Or, Befunge-111. Ha. 21:29:37 Given that one of them is by you I'm surprised it isn't applied :-P 21:29:45 cpressey, befunge-111? 21:29:48 oh that 21:30:03 cpressey, well I was the guy working on s/108/109/ 21:30:12 but well, few people seemed to care 21:30:55 Well, probably the number of people who do care is greater than the number who seem to care. 21:31:16 I would never have guessed that there would be that many Befunge-98 implementations out there. 21:31:19 I suggest a technical memorandum clarifying k, fixing t behaviour (so it doesn't spawn infinite threads, no one implements the spec to the letter here), and clarifying out-of-order fingerprint unloading 21:31:44 plus probably some other minor points 21:31:48 I suggest doing something about every UNDEF in Mycology ;-P 21:31:57 Deewiant, well, possibly 21:32:07 -!- Phantom_Hoover has quit (*.net *.split). 21:32:07 -!- adam_d has quit (*.net *.split). 21:32:11 Deewiant, but most of them are in RCS fingerprints 21:32:32 -!- adam_d has joined. 21:32:37 -!- Phantom_Hoover has joined. 21:32:47 cpressey, also define k on k 21:32:51 Well yes, obviously not those ones 21:32:52 which Deewiant refuses to touch 21:33:01 (I worked it out for cfunge) 21:33:03 I see k on k as perfectly well defined :-P 21:33:07 Deewiant, oh? 21:33:12 You worked out your own view on the matter 21:33:19 I think mine is what CCBI implements :-P 21:33:27 Deewiant, you don't handle k on k is what you said before 21:33:36 I don't special-case it 21:33:40 The spec doesn't; why should I 21:33:51 Not too thrilled about the idea of an "addendum". There needs to be a new spec. 21:33:54 which means it ends up in a very very strange way iirc 21:34:06 cpressey, well corrigendum then 21:34:26 cpressey, that can be applied with reasonable effort to existing implementations 21:34:31 "Very very strange" - it's exactly what the spec defines :-P 21:34:35 while 111 are for more radical changes 21:34:44 Sure, you can argue that the spec /should/ special-case k on k 21:34:47 cpressey, see what I mean? 21:34:58 AnMaster: No. Or, maybe I do, and I disagree. 21:34:59 Deewiant, k on k used to *crash* ccbi iirc 21:35:00 But since it doesn't, I don't think any conforming interpreter should either 21:35:08 AnMaster: You misrecall 21:35:14 Deewiant, maybe it was cfunge then 21:35:15 It used to crash cfunge, maybe ;-P 21:35:23 I know cfunge crashed on 3k@ 21:35:27 at one point 21:35:44 I recall that 21:35:46 (for t build only) 21:35:48 The problem is, and has been since 1999, that there are so many directions Funge could go "post-98". And, no one seemed interested. 21:36:00 cpressey, I don't know what those directions are 21:36:12 cpressey, but if I have anything to say there should be some room for bignum out there 21:36:25 Another minor nit in the spec is the "team number" that y pushes 21:36:32 ooh yes 21:36:35 "Only significant for NetFunge, BeGlad, and the like." 21:36:40 maybe cpressey can explain wth it is 21:36:44 or was supposed to be 21:36:45 AnMaster: Well, just consider how many things could be taken out of the language because someone doesn't like them. 21:36:54 AnMaster: I thought it was mentioned in those old mailing list logs? 21:36:58 Or how many features could be added in the name of "makes it harder to compile". 21:37:16 cpressey, some time ago we discussed 98s in this channel. Which is befunge98 but with all the commands also in befunge93 taken away 21:37:26 it resulted in a very strange and interesting language 21:37:27 "team number" was for BeGlad, which was supposed to be Core Wars in Befunge 21:37:44 at one point I suggested there should be a 80x25 hole in fungespace from origo 21:37:48 but that was just insane 21:38:21 cpressey, ah interesting. And NetFunge was similar? 21:38:35 Probably for NetFunge it would be a like a node ID or something. 21:38:49 sounds like I could abuse that thing for ATHR then 21:38:50 But, that's the kind of thing that should be taken out. Should be in a fingerprint. 21:38:58 cpressey, true 21:39:01 like ATHR 21:39:03 But, i never liked the fingerprint system much. 21:39:08 i originally made TheSquare to be a sort of combat game of some sort 21:39:14 cpressey, true they should use URIs 21:39:16 ;) 21:39:21 that was one plan for 109 21:39:26 and I think it was the wrong thing to do 21:39:34 collisions aren't that common 21:39:50 cpressey, still befunge without loadable extensions would mean the end to things like fungot and ATHR 21:39:51 AnMaster: you! take! we find! you are crono. why not? then you should leave quickly! 21:40:09 fungot, now where was that phrase from.... I remember it from ct... 21:40:09 AnMaster: that no one was allowed to use the crane, enter any two of these letters, a b y. 21:40:36 AnMaster: Well, the main thing I didn't like about it was that there was no real way to make it portable. But that's not a good reason. 21:40:51 I think handprints are worse, and should just be thrown out. 21:41:01 cpressey, let IANA give out the numbers 21:41:01 What do you mean by "portable", exactly? 21:41:11 maybe have a handprint-revealing-fingerprint, at best. 21:41:12 $ ./cfunge ../mycology/mycology.b98 | grep ^UNDEF | wc -l 21:41:12 140 21:41:13 $ ./cfunge -F ../mycology/mycology.b98 | grep ^UNDEF | wc -l 21:41:13 8 21:41:16 Deewiant, ^ 21:41:26 -F is "disable all fingerprints" 21:41:26 Handprints are fairly useless, yes 21:41:43 Deewiant: Well, you can't really package them, into say a .so 21:42:06 Why not? 21:42:14 cpressey, fingerprints could in theory be loaded dynamically I guess but the speed penalties would be horrible 21:42:23 i recall k was just an utter pain in the arse 21:42:28 cpressey, I would refuse to do it for cfunge since cfunge is all about uttermost speed 21:42:31 Just the fact that there are different interpreters? 21:42:41 Deewiant: Well you CAN, but then, any implementation that doesn't easily support .so's, doesn't easily support fingerprint-packages. 21:43:10 I suppose you could do all kinds of messing about with SWIG and such, for say a Python implementation. 21:43:33 Yes, there's no way of implementing a fingerprint once and have it work for all implementations 21:43:34 But, yes, I agree this can easily be outside the bounds of the language spec. 21:43:40 cpressey, I run mycology in around 0.040 seconds (wall clock) 21:43:44 But I don't think that's necessary a problem 21:43:51 There could be a seperate module spec for modules that implement fingerprints, or something. 21:43:52 (measured with time builtin in bash) 21:43:59 Or multiple of those. 21:44:04 Deewiant: Well you CAN, but then, any implementation that doesn't easily support .so's, doesn't easily support fingerprint-packages. 21:44:06 Since fingerprints are sometimes so feral that it's not reasonable to do it anyway 21:44:13 cpressey, how do you hook into the interpreter? 21:44:22 cpressey, after all they have very different internal representations 21:44:33 AnMaster: Like I said, module spec. 21:45:00 That'd probably tie implementations to some design choices that the current spec doesn't 21:45:01 Which is None Of My Business As Language Definer (or something like that.) 21:45:15 cpressey, for cfunge the stack is a malloced chunk with a pointer to the top of it. It is grown one page at a time and never shrinks. 21:45:21 Deewiant: Only if they choose to follow it, which they wouldn't have to, to adhere to the language. 21:45:26 cpressey, for efunge it is a erlang list with top of stack at the start of the list 21:45:36 cpressey, no way those are even close to compatible internally 21:46:01 cpressey, and funge space: a static array around 0,0 with a memory pool backed hash table for the rest (cfunge) or an ets table (efunge) 21:46:04 AnMaster: In principle, you could write an adapter to whatever interface the module system uses. 21:46:14 In principle. 21:46:21 yeah in your dreams 21:46:24 There's no way I'd want to force that on any implementer. 21:46:38 cpressey, what about that mini-funge thing 21:46:42 with fingerprints in befunge itself 21:46:50 Well, now you see why I answered Why not? the way I did :) 21:46:51 of course works reasonably well for very tame fingerprints 21:47:16 AnMaster: I don't know what it is, but I have a secret project that sounds like it, but even better :) 21:47:29 and/or don't remember, if I did know once. 21:47:32 cpressey, just try implementing TRDS in minifunge 21:47:48 cpressey, here is the TRDS spec: http://rcfunge98.com/rcsfingers.html#TRDS 21:48:23 cpressey, and here is an addenum: http://rcfunge98.com/trds.html 21:48:25 -!- sshc has quit (*.net *.split). 21:48:32 AnMaster: ....far out. 21:48:40 gm|lap, ? 21:48:50 that's just... like... wrong 21:48:59 gm|lap, what? TRDS? 21:49:00 The easiest way of implementing TRDS in minifunge is implementing a Funge-98 interpreter in minifunge 21:49:04 I didn't write it 21:49:09 yeah 21:49:18 Deewiant, exactly 21:49:33 Deewiant, and ATHR you can't even do in minifunge 21:49:41 The secret project, FWIW, is to combine Mascarpone and Befunge -- define Befunge with a reflective meta-circular interpreter. 21:49:45 because SOCK needs to be non-blocking w.r.t. other threads 21:49:47 same for other IO 21:50:23 -!- sshc has joined. 21:50:24 AnMaster: Sure you can: write minifunge which writes a Funge-98 interpreter in to a file and then executes that 21:50:25 a pitty scarf isn't here 21:50:34 otherwise we could have suggested FTHR to him 21:50:38 cpressey: That sounds quite scary 21:50:39 (Feather for Befunge :D) 21:50:39 And actually the secret project was to be called "Beefgun" (an anagram of Befunge), not FWIW. 21:51:02 Deewiant, but = is implementation defined! 21:51:10 What is Feather, exactly? 21:51:19 AnMaster: So's minifunge :-P 21:51:19 I only heard scarf mention it once. 21:51:34 cpressey, a language where you can rewrite the interpreter retroactively kind of 21:51:38 I can't really explain it 21:51:50 "Retroactively" is scary, yeah. 21:52:10 Deewiant, good point 21:52:31 AnMaster: Not on the wiki. 21:52:45 Phantom_Hoover, what isn't? 21:52:49 feather? 21:52:51 well that is known 21:52:55 since the spec isn't finished 21:53:05 ais/scarf is still working on working it out iirc 21:53:30 -!- sshc_ has joined. 21:53:59 cpressey, anyway I think ais/scarf is up to the task 21:54:01 So what would the Befunge-111 spec need to address? Cleaning up ambiguities, specifying bignum behavior, throwing out useless crap like handprints and team numbers 21:54:05 cpressey, after all he maintains C-intercal 21:54:12 I wish him luck. 21:54:29 cpressey, and he wrote/is writing gcc-bf (bf backend for gcc) 21:54:40 I don't think Befunge-111 should add anything much to the language. 21:54:42 which is done to a large part but quite untested and buggy still 21:55:09 The reason I wouldn't want it to just be an addendum is because it needs such an overhaul. 21:55:10 cpressey, bignum is quite simple. You need a special value (such as -1) for cell size 21:55:36 cpressey: If you're up to it, going through the Cat's Eye fingerprints would be nice too ;-) 21:55:58 cpressey, and the rest that needs to be cleaned up for bignum is in fingerprints 21:56:09 the core language works just fine once you deal with y 21:56:20 s/ deal/'ve dealt/ 21:56:35 is befunge-109 out or not? 21:56:44 AnMaster: It still needs to be *specified*, less some program assume they can rely on there always being a fixed size, or something. 21:56:46 There's the partial spec 21:56:57 But no, it's not "out" as such 21:57:03 cpressey, indeed 21:57:10 not out indeed 21:57:17 Deewiant: I don't think I'm up for it, at least not as such. 21:57:38 Maybe TURT, since it seems popular (??!?) 21:58:02 cpressey, s/popular/discussed since it is ambig and I have been implementing it again recently 21:58:04 Not really popular, just hard to test automatically which is why it's always buggy ;-) 21:58:16 and what Deewiant said 21:58:22 Yeah, OK. 21:58:39 Sigh. 21:58:58 TOYS is quite nice but you need to reverse engineer large parts of it 21:59:00 Of course, it's hard to say what exactly is "popular" when we're starting out with Befunge-98 21:59:01 at least I had to 21:59:07 On an unrelated tack, based on Safalra's method of evaluating the number of valid BF programs of length n, it would appear that a compression system could be worked out. 21:59:08 AnMaster: Not really. 21:59:55 One annoyance in TOYS is F and G's "pops a vector, then a value i" followed by "j groups of i cells each" <-- where did j come from?! 22:00:28 yeah stuff like that 22:00:32 Other than that, I don't think there's even any UNDEF stuff in TOYS, unless I misremember. 22:00:40 Deewiant, butterfly 22:00:53 Well yeah, but that's so-so 22:01:10 If it weren't for the word "bit" in there I'd make it a non-undef at this point :-P 22:01:13 -!- Phantom_Hoover has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.8/20100214235838]). 22:01:45 cpressey, to not break old programs those places where handprint and such were should be "reversed for backward compat/future reuse" or such 22:01:57 otherwise offsets to y would need to be adjusted everywhere 22:02:01 which would be a pain 22:02:20 AnMaster: So you think Befunge-111 should be 100% compatible with Befunge-98? 22:02:44 I agree that anything less could mean major rewrites for existing programs. 22:02:58 cpressey, no, but something like "most programs should work just fine" 22:03:02 Then again, those programs can still be run under -98 implementations. 22:03:13 like 93 does in 98 possibly with some non-SGML space emulation 22:03:23 a few programs depend on stuff like f reflecting 22:03:32 but we won't run into that, all instructions are in use after all 22:03:34 -111 could really be a clarified / decrapped -98 22:03:50 gm|lap, you forgot "bug fixed" 22:03:58 since t in 98 as written in the spec doesn't work 22:04:12 hmm 22:04:13 I'm going to have to read this "spec" of which you speak, someday. 22:04:16 the new ip will there execute t on the first turn 22:04:25 cpressey, ;P 22:04:38 Yes, only writing something doesn't give a really good picture of it 22:04:43 You need to read it as well 22:04:44 true 22:04:47 I'm happy with breaking programs that rely on some of the fuxxier corners. 22:05:02 As long as I don't have to rewrite all of Mycology 22:05:08 TheSquare does concurrency by bouncing an IP backwards; however, i think you'd be best to go left/right 22:05:09 cpressey, yes, but y offsets is not one of those for stuff like "elements on TOSS" 22:05:19 which iirc is offset 21 or 23 22:05:22 as a bounce back would imply that it's not supported 22:05:23 don't remember exactly 22:05:31 (for *be*funge that is) 22:05:42 (I don't deal with other dimensionality normally) 22:05:50 Um, so 22:06:12 hmm, actually... 22:06:12 yeah 22:06:14 gm|lap, ? 22:06:18 hm 22:06:23 i think it should bounce back 22:06:29 it should indeed bounce 22:06:31 and send something forward 22:06:34 since 1) you check it with t 22:06:36 err 22:06:37 with y 22:06:41 Unicode? 22:06:46 2) you can see if anything else came the other way 22:06:57 cpressey, would be a pain for cfunge. fine for efunge 22:07:11 The way I read the spec, Unicode is currently optional 22:07:15 my main reason was that if one had Unefunge / Trefunge, it'd just be plain confusing 22:07:16 cpressey, since cfunge takes every shortcut available for speed. Including mmap()ing to load files 22:07:18 You're allowed to have it or not 22:07:24 and what Deewiant said 22:07:33 CCBI2 will have it as an option 22:07:44 At least, if it's finished before Funge-111 22:07:54 I'm thinking more along the lines of 'stop using the word ASCII so damned much'. 22:07:55 efunge currently does byte io for files and unicode code point IO for stdio 22:08:13 this could be trivially changed (5-10 minutes of work at most) 22:08:18 kleinefunge could be interesting =D 22:08:28 cpressey: I don't think there are any egregious uses of ASCII 22:09:17 cpressey, anyway, what about EBCDIC? :( 22:09:22 "However, a Funge-98 interpreter may also expose any number of proprietary instructions above ASCII 127 or below ASCII 0." -- internally, they shouldn't be thought of as ASCII, or even "characters" really, they're instructions. 22:09:51 Also, stack stack? 22:10:00 I considered making 2^666 in efunge print "BIGNUM!" 22:10:04 at one point 22:10:12 What about the stack stack? It's actually useful 22:10:21 yes stack stack is nice 22:10:27 and Deewiant would hate if it went away 22:10:35 I would miss it but not as badly 22:10:50 -1 would be an amusing thing to have 22:10:52 Would I miss it more? 22:10:57 gm|lap, -1 what? 22:11:01 I'll just point out that it's equivalent to a single stack, plus a special marker that can be placed on the stack to partition it into sub-stacks. 22:11:03 as an instruction index 22:11:05 Deewiant, yeah I think so 22:11:13 OK 22:11:27 cpressey: That's an implementation detail 22:11:27 cpressey, not quite, there is the storage offset. Also you can't optimise the way you suggested as well 22:11:39 Deewiant: True. 22:11:45 cpressey, after all, I do memcpy between stacks when I can avoid reversing order 22:11:48 I don't recall storage offset, will look. 22:11:50 :) 22:11:58 wow you are rusty :) 22:12:02 The storage offset isn't really related to stack stacks in any way 22:12:03 (no offence meant) 22:12:13 It's just coincidentally modified by the same commands that modify the stack stack 22:12:17 true 22:12:29 Deewiant, idea: storage delta offset 22:12:35 Yeah, i've only been busy designing like two dozen other !@#$%^&*ing languages since 1998 22:12:39 AnMaster: Y'wot? 22:12:55 damn i used to have the catseye rss feed 22:12:56 Deewiant, that way you can not just move it, you can mirror it and what not 22:12:57 cpressey: Yeah, your time would've been better spent memorizing the Funge-98 spec as you wrote it 22:13:08 Deewiant: Damn straight. 22:13:20 Deewiant, exactly ;P 22:13:25 AnMaster: How can you "mirror" the value put by p? 22:14:07 Deewiant, well for bignum compat it would have to be around the 0 axis, which is now moved thanks to the storage offset 22:14:45 One problem is that I find new designs much more interesting, so I have a hard time not thinking about them when looking at something like this. 22:14:48 so 0,2 with a storage delta of -1,-1 gives you the position -2 relative that offset 22:14:54 Deewiant, see what I mean? 22:15:04 AnMaster: What's the point? Why not just modify the offset directly? 22:15:07 if only I could make a nice animation showing what I meant 22:15:11 Deewiant, no but it is mirrored 22:15:16 burro was interesting IIRC 22:15:22 so higher value is in the other direction 22:15:40 AnMaster: So add the negation of the value to the offset 22:15:45 Deewiant, imagine you rotate befunge along the X axis 180 degrees 22:15:49 also this seems kinda interesting: http://www3.sympatico.ca/mt0000/bicom/bicom.html 22:16:02 Deewiant, multiply the value with the storage delta rather 22:16:19 then do it relative storage offset 22:16:23 Deewiant, see what I mean now? 22:16:34 AnMaster: So it modifies the value, not the position, now? 22:16:48 Deewiant, yes, it is an additional value to storage offset 22:16:51 both would co-exist 22:16:57 gm|lap: Burro is broken, but I have a fix for it... slowly underway. 22:17:22 hmmkay 22:17:24 AnMaster: So it's just a multiplier that is applied to p/g values? 22:18:25 also this seems kinda interesting: http://www3.sympatico.ca/mt0000/bicom/bicom.html <-- how can that work and still be a compression? 22:18:31 wrt bicom: wow crap, a c++ program that actually compiles properly! 22:18:36 some inputs must grow instead of shrink 22:18:39 AnMaster: I was thinking that vectors would be atomic objects (pop 2 vectors off stack, add them and push resulting vector, etc) 22:18:51 Deewiant, hm yes 22:18:58 AnMaster: same deal happens with most compressions 22:19:01 actually 22:19:03 all compressions 22:19:04 Deewiant, should be more like able to skew stuff. Maybe we should have a translation matrix instead 22:19:10 or rotation matrix or something 22:19:12 except for cat compression, where the input is the same as the output 22:19:14 for really fancy stuff 22:19:42 cpressey, I considered tagged tupes in funge-space/on stack at one point 22:19:44 i think the idea would be to split it into blocks and make sure that they remap correctly 22:19:56 cpressey, for implementing FPSP/FPDP (floating point support) 22:20:12 wait... it's not really that bijective :/ 22:20:15 cpressey, but erlang has sucky floating point semantics for NaN/inf so I decided not to 22:20:27 -rwxr-xr-x 1 ben ben 83742 2010-02-24 11:18 bc 22:20:27 -rw-r--r-- 1 ben ben 33528 2010-02-24 11:20 bc.bc 22:20:27 -rw-r--r-- 1 ben ben 33941 2010-02-24 11:20 bc.bc.bc 22:20:27 -rw-r--r-- 1 ben ben 34369 2010-02-24 11:20 bc.bc.bc.bc 22:20:41 gm|lap, what? 22:20:41 ohthatispoopy. 22:20:52 USAGE: bc [-d] [-p passwd] 22:20:52 oh I guess there is bc/unbc 22:20:52 -d: decompress (default is compress) 22:21:00 right 22:21:06 gm|lap, so not same function both ways 22:21:09 i think it might also use LZ 22:21:39 it uses arithmetic coding AFAIK 22:22:13 i might try a truly bijective audio compression scheme 22:22:47 just treat everything as an elias gamma code or something like that 22:22:57 and then remap where appropriate or something 22:23:03 ...that's not going to work, is it? :/ 22:23:20 plan B: pair some chars together in a special way 22:23:36 it'd be like a samplewise huffman 22:23:46 mhm 22:23:57 probably catch a delta of it or something 22:24:18 cpressey, anyway vectors being atomic would be annoying for cfunge that depends on the plain integer nature of funge space 22:24:33 cpressey, in the inline SSE asm for example (there are C fallbacks, but still) 22:25:30 AnMaster: Yeah, it would be a different language. 22:25:44 and are you scared of cfunge yet? 22:25:48 ;P 22:25:53 Well, not really... 22:26:27 I am starting to have some ideas for befunge-111, which is scaring me. 22:27:00 cpressey, mmap(), posix_madvise(), inline SSE asm, regparm calling convention on 32-bit x86 (using gcc __attribute__s), static array for the most commonly used funge space area around origo and hash library to fill out the rest 22:27:03 the list can go on 22:27:11 with various stack-stack optimisations 22:27:21 oh and y that is a lookup table for low fixed-offset values 22:27:24 Whatever gets you through the night :) 22:27:32 cpressey, "whatever makes me fastest" in cfunge 22:27:37 y is executed so rarely... 22:27:43 cpressey, not in mycology 22:27:50 Well, true 22:27:51 which is one of the things I speed test against 22:28:20 cpressey, oh and there is an option to use fully buffered stdout of course 22:28:59 Mycology really isn't worth speed-testing against, it's too quick to run through :-P 22:29:10 Deewiant, not for that befunge in perl 22:29:14 Would anyone kick and scream if Befunge-111 was only defined for 2 dimensions? Generalizing to different #s of dimensions would be nicer in that language where vectors are first class. 22:29:18 -!- MigoMipo has quit (Remote host closed the connection). 22:29:21 cpressey, only JIT-funge beats cfunge 22:29:26 and jitfunge is basically dead 22:29:32 unless fizzie starts working on it again 22:29:33 AnMaster: Just because there exists a slow implementation doesn't mean the test case isn't fast 22:29:58 cpressey, mike Riley might 22:30:01 bbl urg 22:30:07 "urg"? 22:30:23 Too much cfungeing for one night? 22:30:36 Either something "urg"ent came up, or... 22:30:38 the basic idea behind compression: each file is a number, e.g. a file containing 0xBEEF might be the number 0x1BEEF (you need that top bit to give a fair representation). 22:30:49 Ah, urg-ent indeed 22:31:18 basically, you want to make it so that the most relevant/likely files are the smallest numbers and the least are the biggest. 22:31:45 Also have an urge to deprecate =. 22:32:13 Or make it useful by being C system() or something always 22:33:55 = and t sound like they should go into fingerprints. 22:34:44 And the file I/O stuff too, I reckon 22:35:00 Sure, I could go for that. 22:35:40 -!- tombom_ has quit (Quit: Leaving). 22:36:04 Also, maybe fingerprints should be able to redefine a wider set of instructions, maybe all instructions except ")". That would let = and t stay the same. A compatibility-oriented implementation could "pre-load" the fingerprints for those,. 22:36:26 Basically, all the stuff for which y needs to be asked to know whether it's implemented 22:36:44 cpressey: That's opening the door to all kinds of abuse ;-) 22:37:05 Deewiant: More abuse than now? 22:37:13 I'd say so, yes 22:37:31 Say, could you redefine space (" ") in a fingerprint? 22:37:32 Well, maybe, and I didn't say I wasn't against it... 22:37:48 OK, " " and ";" are special. 22:38:06 They aren't instructions, therefore can't be redefined. 22:38:18 Well, maybe ";" can. 22:38:18 Agreed 22:38:22 No, not ";" :-P 22:38:40 :) 22:38:43 They're both markers and work completely differently 22:38:58 For example! 1k;;;;1 will execute the 1 22:39:13 Oh god, combining k and ; 22:39:23 Yeah. 22:39:24 Same for 1k 1, of course 22:39:51 But anyway, messing with those is a bad idea 22:40:20 Yeah, I agree. 22:41:13 Still, I don't like the idea of being able to redefine such basic things as #, $, 0-9, etc 22:41:40 Well, I like it in one sense, but I agree that it's probably too large a departure. 22:42:07 Still, I'd like to see t, i, o, = et al move to a fingerprint. 22:42:10 I can see the appeal, 22:42:26 but I don't think there's much of a use case except for malware :-P 22:42:34 (Malfunge?) 22:43:02 It feeds the "nightmare to compile" goal somewhat. 22:43:40 As does mapping the stack to funge-space. But neither has ever had a lot of support. 22:44:04 So maybe they're just not "Befunge-y". And that should trump the other goal. 22:44:05 Eh? You mean the stack overlays a location in funge-space? 22:44:25 Yes, that was one proposal. Pushing something onto the stack actually p's it somewhere. 22:44:40 That, too, could be a fingerprint, though. 22:44:49 Stick it in MODE :-P 22:45:04 I mean, with extremely feral fingerprints, the sky's the limit anyway 22:45:21 Yep 22:45:50 When it comes to "hard to compile", I don't think there's any advantage to either of the things you mentioned 22:46:22 Whether it's just 'A' or all of 0-126 that are modifiable by ( doesn't really matter, the implementation is essentially the same 22:46:45 And making the stack commands just work on funge-space is actually a simplification since you don't need to implement a stack :-P 22:48:16 Well, from the point of view of a compiler writer... if the stack is mapped to an arbitrary point in funge-space, I can no longer just use the machine stack, and I can no longer do simple optimizations 22:49:04 Optimizations it does inhibit, true 22:50:18 I wouldn't use the machine stack anyway, the spec doesn't indicate that you're ever allowed to fail on simple operations like 0-9 ;-) 22:51:28 (And the machine stack would run into limits pretty fast, I think) 22:51:40 Yeah, the spec doesn't define arithmetic overflow either though. 22:52:12 "In Funge-98, stack and Funge-Space cells alike should be treated as signed integers of the same size." 22:52:20 It doesn't define what should happen, true 22:52:31 But it at least implicitly acknowledges that the size is limited 22:52:49 It assumes it :) 22:53:25 My point is that it allows for it, at least :-P 22:53:41 Whether as the only option or not is a different question ;-) 22:54:03 Yeah. 23:00:20 jitfunge uses a sort of a machine-assisted stack: the stack memory is surrounded by no-access memory pages, and the "pop 0 from empty stack" is handled by catching the sigsegv, manipulating the saved context (to make the registers look like it would have read a 0 out) and then resuming execution from the next instruction. 23:00:54 But it still lives in the heap, no? 23:01:35 It's a separately mmap'd area, so.. I guess it depends on your definition of the heap. Certainly it's not the C heap. 23:02:10 But it's not in the "real" stack; it's just that there's nothing really magical about that stack either. 23:03:42 You could argue that it's not the machine stack because I don't use esp/rsp to point at it, nor do I use the push/pop instructions to access it. 23:04:12 guys 23:04:28 Is it possible to implement liberal 2D flow controll and expression nesting without allowing for paradoxes? 23:10:16 control* 23:11:20 Depends - what's a paradox? 23:12:26 -!- MizardX- has joined. 23:12:57 -!- adam_d has quit (Ping timeout: 248 seconds). 23:13:04 well 23:15:28 an expression nested with others with tests such that you continually reformed the initial test before ever completing interpreting the expression 23:15:31 -!- MizardX has quit (Ping timeout: 276 seconds). 23:15:37 back 23:15:47 Deewiant, urg = urgent 23:15:50 due to nosebleed 23:15:54 like a self modifying language in an infinite loop 23:16:14 -!- MizardX has joined. 23:16:37 Wareya: Sounds like Feather, or Chronofunge / TRDS -- you search for a "fixed point" where all your definitions work out, but there might not be such a point 23:16:53 Or make it useful by being C system() or something always <-- often impossible to implement 23:16:55 that's the problem 23:16:57 cpressey: Chronofunge?! 23:17:07 I think you always have to allow for the possibility of a paradox (infinite loop while looking for a stable state) 23:17:42 Deewiant: Chronofunge was the idea I had to add time-travel to Befunge 23:17:57 Don't know if TRDS was influenced by it 23:18:09 Zybourne time travel or traditional time travel? 23:18:40 I have no idea. 23:18:46 It feeds the "nightmare to compile" goal somewhat. <-- JIT compiling works just fine 23:18:46 -!- MizardX- has quit (Ping timeout: 276 seconds). 23:19:16 AnMaster: JIT compiling doesn't really count. 23:19:48 And making the stack commands just work on funge-space is actually a simplification since you don't need to implement a stack :-P <-- funge space is quite a bit slower due to the sparse-ness 23:20:25 zybourne time travel is the idea that time travel towards to passt just modified history as it was, and while the particular initial point of when you initiated traveling back in time once existed in time, it doesn't any more. 23:20:30 past&* 23:20:32 AnMaster: Speed was not the issue 23:20:33 past* 23:20:35 "In Funge-98, stack and Funge-Space cells alike should be treated as signed integers of the same size." <-- so the stack is a single signed integer? 23:20:48 AnMaster: (stack and Funge-Space) cells 23:21:10 AnMaster: Not: stack and (Funge-Space cells) 23:22:00 The latter would require a "the" to be valid anyway 23:22:11 traditional time travel is time travel that insists that causalty must remain intact, so going to the past would be virtually impossible without causing a paradox. 23:22:47 AnMaster: (stack and Funge-Space) cells <-- I know 23:22:54 I was just joking 23:23:07 Your joke failed because your parse is not valid 23:23:10 -!- augur has quit (Read error: Connection reset by peer). 23:23:15 Deewiant, meh 23:23:29 Wareya: TRDS is Zybourne, then 23:23:44 -!- augur has joined. 23:24:25 Wareya, with zybourne "[...] the particular initial point of when you initiated traveling back in time once existed in time" is problematic 23:24:31 what does "once existed" mean here 23:24:46 once upon a time 23:24:49 it implies a beore 23:24:50 before* 23:24:55 but along what time axis? 23:24:58 ? 23:25:08 "once existed" is illogical 23:25:15 it's the only expression I could come up with 23:25:28 that's the issue indeed I had with it 23:25:33 k 23:25:44 anyway, night → 23:26:00 It doesn't exist in time, but the cause is something that doesn't exist because of its effect. 23:26:03 Night. 23:26:08 i would suggest a certain book by dr. dan streetmentioner 23:26:44 oerjan: Which willo-onhaven been written, I presume? 23:26:56 presumably 23:28:54 -!- augur has quit (Ping timeout: 256 seconds). 23:36:54 -!- coppro has joined. 23:48:44 -!- cpressey has left (?). 23:50:24 -!- BeholdMyGlory has quit (Read error: Connection reset by peer).