2008-03-01: 00:00:31 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 00:10:00 -!- timotiis has quit ("leaving"). 00:13:09 -!- pikhq has joined. 00:18:03 -!- olsner has quit (Read error: 110 (Connection timed out)). 01:06:02 * Sgeo wants to have lucid dreams! 01:12:26 then have them. 01:22:59 -!- ihope has joined. 02:01:24 -!- GreaseMonkey has joined. 02:03:46 -!- Corun has quit ("This computer has gone to sleep"). 02:40:38 > ((Array new '(1 2 3)) length) 02:40:38 3 02:55:07 Ask an obvious question and you may hear "KVG," short for "Check it on Google, you idiot." <<< omg, i'm old. 02:55:23 never heard that! 02:55:36 (except in english, can i be young in english?) 02:57:33 it doesn't really say much finnish people are statistically smart, 99% of the population simply doesn't know anything anywhere in the world, so it's really no use comparing 02:58:44 but i do like to agree with the "extra playtime makes smart" thing, because i've been watching scrubs 24/7 for the last week, and i don't wanna lose my awesome brain powers 02:59:04 and no, this will not be a monologue, because i'll refullscreen now -> 03:10:37 scrubs is a terrible show 03:11:16 Most of the shows on TV are terrible shows. 03:11:35 And the ones that aren't terrible are so bogged down with ads so as to make them worthless. 03:12:06 ads? 03:12:10 that's why you bittorent them 03:12:38 -!- ehird has quit ("Konversation terminated!"). 03:13:31 -!- GregorR-L has joined. 03:19:55 purdue lol 03:20:02 PURDUELAWL 03:21:48 So, you decided on a grad school? 03:22:17 pikhq, are you having lagdeath in Sine? 03:22:28 Sgeo: Not connected to Sine. 03:33:15 http://www.reghardware.co.uk/2008/02/29/msi_stirling_cooling/ 03:44:53 hahahahah awesome 03:46:28 But my CPU is in a vertical position! :o 03:46:40 How would the hot air reach the engine! 03:47:06 doesn't need hot air... 03:47:30 uses heat right from the chip 03:48:17 cool that it's self-regulating too 03:49:47 -!- ihope_ has joined. 03:51:01 -!- ihope has quit (Read error: 110 (Connection timed out)). 03:51:10 -!- ihope_ has changed nick to ihope. 04:05:31 * GregorR-L reappears. 04:05:44 pikhq: I haven't officially made a decision - this trip is comp'd by Purdue ^^ 04:06:20 That being said, Purdue's pretty high on my list. I would have to see something really spectacular elsewhere (CMU rejected me, so that decision's simple :P ) 04:16:16 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 04:18:01 Mmkay. 04:19:57 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to). 04:30:59 * Sgeo wants lucid dreams! 04:53:52 * bsmntbombdood too! 04:54:24 * pikhq considers vomiting 04:54:40 i've done that before 04:54:53 ... vomited? 04:54:57 yes 04:54:57 I should think so. 04:55:19 it is not something i consider pleasent 04:55:39 I'm going with the Seinfeld plan: I will never vomit again, because I WILL NEVER VOMIT AGAIN >_< 04:55:55 neither is my spelling 05:00:56 I'm going with the pikhq plan: URGH. ME HAVE FLU. ME NO LIKE. ME WANT BRAINS. UUUUUUUURGH. . . 05:31:15 -!- Sgeo has quit (brown.freenode.net irc.freenode.net). 05:31:15 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 05:31:15 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 05:31:15 -!- lamentb has quit (brown.freenode.net irc.freenode.net). 05:31:15 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 05:31:16 -!- SimonRC has quit (brown.freenode.net irc.freenode.net). 05:35:10 What would be a good method for writing down a graph? 05:36:02 I'm thinking of using the method described by Kolmogorov - list the n nodes (by their types), and then writing the n² relations with either 0 and 1, to describe if two nodes are linked. 05:36:06 -!- SimonRC has joined. 05:36:08 -!- lamentb has joined. 05:38:33 -!- Sgeo has joined. 05:38:33 -!- oklofok has joined. 05:38:33 -!- AnMaster has joined. 05:38:33 -!- GregorR has joined. 05:38:42 haha- I just found what I thought was an omission in my instruction set, until I realized I could do a workaround by using self-modifying code. :D 05:39:22 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 05:39:24 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 05:39:24 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 05:39:24 -!- Sgeo has quit (brown.freenode.net irc.freenode.net). 05:39:27 -!- oklofok has joined. 05:39:55 -!- GregorR has joined. 05:40:07 -!- Sgeo has joined. 05:40:12 -!- AnMaster has joined. 05:41:16 -!- GregorR-L has quit (Read error: 110 (Connection timed out)). 05:50:28 -!- Tritonio_ has quit (Remote closed the connection). 05:56:17 -!- puzzlet has quit ("Lost terminal"). 06:09:27 -!- puzzlet has joined. 06:10:11 -!- puzzlet has quit (Client Quit). 06:11:33 -!- puzzlet has joined. 06:18:21 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 06:48:39 -!- oerjan has joined. 07:14:48 -!- slereah__ has joined. 07:15:02 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 07:23:41 -!- ihope has quit (Read error: 110 (Connection timed out)). 07:29:08 -!- ihope_ has joined. 07:29:12 -!- ihope_ has changed nick to ihope. 07:53:45 -!- Sukoshi has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:16:48 -!- ihope_ has joined. 08:34:17 -!- ihope has quit (Read error: 110 (Connection timed out)). 09:59:26 -!- Sukoshi has quit ("Leaving"). 10:03:15 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 10:06:28 -!- ihope_ has joined. 10:06:32 -!- ihope_ has changed nick to ihope. 10:18:11 -!- oerjan has quit ("Lurch! Er, lunch."). 10:42:23 -!- olsner has joined. 10:47:58 -!- sebbu2 has joined. 10:53:31 -!- sebbu has quit (Read error: 60 (Operation timed out)). 11:16:47 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 11:16:54 -!- slereah__ has joined. 11:20:10 -!- slereah_ has joined. 11:34:01 -!- slereah__ has quit (Read error: 110 (Connection timed out)). 11:41:46 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 11:41:58 -!- slereah_ has joined. 11:52:58 -!- ihope_ has joined. 12:10:34 -!- ihope has quit (Read error: 110 (Connection timed out)). 12:11:07 -!- jix has joined. 12:30:01 -!- ihope__ has joined. 12:30:06 -!- ihope__ has changed nick to ihope. 12:46:14 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 13:08:01 -!- ihope__ has joined. 13:09:15 -!- GregorR-L has joined. 13:25:21 -!- ihope has quit (Read error: 110 (Connection timed out)). 13:27:35 -!- GregorR-L has quit (Read error: 110 (Connection timed out)). 13:27:43 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 13:29:51 -!- oklopol has joined. 13:31:02 -!- RedDak has joined. 13:48:17 -!- Corun has joined. 13:56:28 -!- Judofyr has joined. 14:07:06 -!- ihope___ has joined. 14:07:11 -!- ihope___ has changed nick to ihope. 14:10:50 -!- RedDak has quit ("I'm quitting... Bye all"). 14:24:34 -!- ihope__ has quit (Read error: 110 (Connection timed out)). 14:54:21 -!- timotiis has joined. 15:05:39 -!- timotiis has quit (Read error: 104 (Connection reset by peer)). 15:10:48 -!- timotiis has joined. 15:18:55 -!- ehird has joined. 15:19:11 oklopol: hello 16:16:37 -!- Corun has quit ("This computer has gone to sleep"). 16:16:51 -!- ihope has quit (Read error: 110 (Connection timed out)). 16:30:59 hies 16:53:37 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 16:53:37 -!- slereah__ has joined. 17:11:32 -!- slereah_ has joined. 17:11:32 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 18:02:38 -!- ihope___ has joined. 18:02:41 -!- ihope___ has changed nick to ihope. 18:24:23 -!- timotiis_ has joined. 18:26:02 -!- otesanek has joined. 18:29:54 * Judofyr makes a Skull-interpreter in Ruby 18:30:35 Skull? 18:30:41 http://esoteric.voxelperfect.net/wiki/Skull 18:31:21 it's just like BF (can do the same thing), but a little nicer 18:31:27 things* 18:31:32 interesting 18:31:33 it only needs input... 18:32:13 rather like BF squeezed into a LISP-like syntax 18:32:35 yeah 18:32:40 without input.. 18:32:51 but that shoudn't be hard to implement 18:33:17 {read} :D 18:33:42 what about (1)? 18:33:51 hm.. 18:34:01 {} is already used... 18:34:03 :P 18:34:08 :INPUT: might match the syntax of the language better 18:34:13 yeah 18:34:56 { x[:INPUT:]} or similar 18:35:14 and rather than incrementing, you could set? 18:35:34 nah. I like the inc/dec 18:35:55 we better speak to fr34k (the creator) 18:36:16 good idea 18:38:42 -!- timotiis has quit (Read error: 110 (Connection timed out)). 18:44:44 -!- oerjan has joined. 18:46:31 -!- lamentb has changed nick to lament. 18:51:57 Judofyr: Ruby! 18:52:01 yay 18:52:05 and Treetop 19:14:41 -!- otesanek has left (?). 19:20:55 Yay! 19:21:03 treetop, heh 19:21:05 It runs the Hello World :D 19:21:08 i might use that soemtime actually 19:21:09 but.. 19:21:12 treetop is overkill for this 19:21:14 don't you think 19:21:23 I just want to check out Treetop 19:21:27 hehe 19:21:37 are treetop's parsetrees sane 19:22:37 ehird: Here are the grammar: http://pastie.caboo.se/159840 19:22:55 so I just run i=SkullParser.new.parse(string) 19:23:21 and then I can iterate over i.elements and check if it's OutputMode etc. 19:23:25 (which are modules) 19:23:53 * Judofyr doesn't know if it's the Treetop-way to do it, but it works like a charm 19:24:16 beware of some weird names.. 19:24:23 negopos = negative or positive 19:24:30 mod = modifies cell 19:30:12 nice 19:30:34 Judofyr: do you know of any doctest libs for ruby, btw? 19:30:42 nope, sorry 19:31:08 :( 19:31:11 i might have to write my own 19:31:17 but parsetree doesn't let me get '=begin..=end' blocks 19:31:55 ehird: have you done anything with your kilbot? 19:32:23 ihope: not as of yet. sorry 19:33:28 Could you send me a copy, or would that be agony? :-P 19:36:49 ihope: it does nothing yet 19:37:02 Doesn't it connect? 19:37:44 and now does it work with while-block too :D 19:38:27 ihope: yes. it just opens a socket, and has a two-liner which calls 'encode' on a Message and sends it to the server 19:38:38 and a main loop which just gets a line, 'decode's it, and passes it to a function 19:38:49 Network.IRC does all the parsing/generation work 19:39:12 Sounds good. 19:57:07 * Judofyr implemented input too :) 20:39:03 * Judofyr has just written cat.skull and it works! 20:41:00 if anyone wonders, I used !0! (where 0 is cell) for input 20:41:16 returns -1 on EOF 20:41:55 hm.. 20:42:02 does it need negative values? 20:43:17 return 0 on eof! 20:43:17 :D 20:48:52 i own #moderatelyrainyesoteric 20:48:53 that rules 20:48:58 when did i do that 20:49:32 ah, the canonical channel for discussing mild-mannered rain dances 20:58:09 -!- RedDak has joined. 21:41:51 -!- pikhq has quit (Read error: 110 (Connection timed out)). 21:42:33 So, I guess I should start on my fancy artificial life simulator thingy. 21:43:51 i hope so :P 21:45:52 Unfortunately, I have 1,376,544 distractions. 21:49:16 /quit = -1 21:56:06 Judofyr: i just got that 21:56:07 :( 21:56:25 Anyone knows how to get in touch with fr34k? 21:56:36 cleverly 21:59:08 The first question, perhaps, should be what programming to use. I guess my options are Pascal, Java, Haskell and Python, kind of, since those are the only ones I know to a good degree. 22:00:20 Isn't Haskall pretty hot now? 22:00:22 ihope: Haskell would be good for codifying the algorithm. Expressive. 22:00:34 The IO wouldn't be too bad either, so. 22:00:48 Though if you want to use e.g. SDL you might want to glue haskell for the algo and python for the gui together 22:00:51 (with pygame) 22:06:38 -!- immibis has joined. 22:09:12 The GUI elements would be pretty simple. 22:09:42 -!- pikhq has joined. 22:09:49 A grid with icons on it, a neural net. 22:11:27 I don't think there's anything else I want to display. 22:14:15 The idea is pretty simple: you have a 100x100 grid with 100 creatures on it (or something) and each creature sees whether the eight squares around it are occupied, its own current health, its own health last turn, and whether it successfully bit a creature last turn. 22:14:53 A creature can bite the creature in front of it, turn in either direction, or move forward. If the creature it tries to bite is facing it, the bite fails. 22:15:20 (You know how my kilbot ideas were stolen from B Nomic? This movement and biting stuff is stolen from PerlNomic.) 22:15:49 perlnomic?! 22:16:06 KilBot = ? 22:16:20 A creature is dead once it has been bitten 10 times. If a creature kills another creature, it automatically lays an egg; if a creature of the opposite sex encounters the egg, the egg hatches. 22:16:32 Judofyr: the best thing ever 22:16:44 ehird: PerlNomic, a Perl-based nomic. 22:18:18 I guess you can also have a creature sense whether it's male or female, and let it lay down chemicals and sense those, and see the directions of the creatures around it, and see eggs whether they were laid by males or females. 22:18:33 Or maybe I should deem the idea of males laying eggs ridiculous? 22:25:08 -!- oerjan has quit ("Good night"). 22:29:54 I guess giving eggs only to the females would be interesting, since the males would no longer have any incentive to kill. 22:30:42 * Judofyr shall write 99bottles in Skull 22:30:57 Judofyr: skull on the brain? 22:30:57 :P 22:31:07 :P 22:33:35 Hopefully I can have plenty of input and still keep the neural net to a reasonable size. If I want to keep this within 100 megabytes with 100 creatures, that's a megabyte per creature, and if the neural net width is 1,000 neurons, that's up to 1,000,000 connections per level. 22:34:12 And there's nothing to say that 1,000,000 connections per level are actually required. 22:41:51 So yeah, I can have all the input I want. 22:46:25 -!- pikhq has quit ("New kernel!"). 22:54:22 -!- Judofyr has quit ("- nbs-irc 2.36 - www.nbs-irc.net -"). 22:54:58 -!- Sgeo has joined. 23:16:17 -!- pikhq has joined. 23:16:59 -!- pikhq has quit (Client Quit). 23:17:43 -!- pikhq has joined. 23:59:30 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 2008-03-02: 00:00:16 -!- pikhq has joined. 00:02:44 -!- ehird has quit ("Konversation terminated!"). 00:13:06 -!- timotiis_ has quit ("leaving"). 00:20:11 -!- immibis has quit (Connection timed out). 00:32:03 -!- RedDak has quit (Remote closed the connection). 01:44:39 -!- UnrelatedToQaz has joined. 01:51:54 -!- jix has quit ("CommandQ"). 02:24:01 -!- UnrelatedToQaz has quit ("ChatZilla 0.9.81 [Firefox 3.0b3/2008020514]"). 02:33:24 -!- ihope has quit (Read error: 110 (Connection timed out)). 02:53:14 -!- Quaver has joined. 03:23:02 -!- immybo_ has joined. 03:25:04 -!- immybo_ has quit (Client Quit). 03:54:25 -!- Quaver has quit. 05:35:18 -!- Sgeo has quit (Connection timed out). 06:17:07 -!- immibis has joined. 06:59:01 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to). 07:22:53 -!- GreaseMonkey has joined. 07:23:39 -!- oerjan has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:17:18 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 08:37:29 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 09:43:01 -!- ihope___ has joined. 09:43:06 -!- ihope___ has changed nick to ihope. 10:30:17 -!- oerjan has quit ("Fool! Er, food."). 10:33:40 -!- sebbu2 has changed nick to sebbu. 10:36:03 -!- RedDak has joined. 11:11:07 -!- jix has joined. 14:29:53 -!- RedDak has quit (Remote closed the connection). 15:05:28 Is there an interpreter for the analytical engine? 15:06:16 probably 15:07:34 http://www.fourmilab.ch/babbage/cmdline.html 15:07:37 Thar 15:23:15 -!- Judofyr has joined. 15:23:23 Hi everybody :) 15:40:56 Hi. 15:53:22 Hell. The original Analytical Engine paper is full of old timey device reference. 16:00:14 * Judofyr is writing the spec to Skull+ (Skull with input and subroutines) :) 16:08:21 -!- timotiis has joined. 16:12:11 -!- Sgeo has joined. 16:19:58 -!- ehird has joined. 16:22:50 jee-zus 16:22:51 ML is ugly 16:23:28 ML? 16:23:35 specifically, OCaml 16:23:55 Oh. 16:24:01 The Haskell painted in red? 16:24:52 *Sgeo wants lucid dreams! 16:24:52 *bsmntbombdood too! 16:24:52 *pikhq considers vomiting 16:24:55 that is BIZZARE 16:25:05 lol 16:48:29 -!- RedDak has joined. 17:25:19 -!- ihope___ has joined. 17:25:57 -!- Judofyr has quit ("- nbs-irc 2.36 - www.nbs-irc.net -"). 17:37:09 Let us conceive a pile or vertical column consisting of an indefinite number of circular discs, all pierced through their centres by a common axis, around which each of them can take an independent rotatory movement. If round the edge of each of these discs are written the ten figures which constitute our numerical alphabet, we may then, by arranging a series of these figures in the same vertical line, express in this manner 17:37:10 any number whatever. 17:37:23 Old time tapes weren't very practical! 17:42:27 -!- ihope has quit (Read error: 110 (Connection timed out)). 18:05:34 slereah_: that isn't really the same as a tape. More like a register. 18:06:21 Well, if there's an infinity of disks, and each one can take 10 different symbols, it could be viewed as a tape :o 18:06:36 indefinite != infinite. 18:06:51 Oh. Misread that part. 18:07:02 heh 18:07:53 the analytical engine used a punch/card reader to provide unbounded storage, if I recall, which would be analagous to a tape 18:08:29 Oh hell. The article is talking about weaving. 18:08:56 It's all the punch card's fault! 18:09:11 Looms were the first to use punchcards, remember? 18:09:44 I know. Hence, it's the punch card's fault! 18:09:49 Babbage had the unique status of existing just on the brink of technologies that would make fully automatic computing possible. 18:10:25 "Two species of threads are usually distinguished in woven stuffs; one is the warp or longitudinal thread, the other the woof or transverse thread, which is conveyed by the instrument called the shuttle, and which crosses the longitudinal thread or warp." 18:10:40 Allthough I'm not sure that this information is especially important. 18:11:11 I think it's important if you want to explain how the punchcards are used to encode weaving patterns 18:14:01 i am writing a decent todo thingy 18:14:03 who's interested? 18:14:08 it will support offline & online operation 18:14:19 + a web interface for when you're on a different machine 18:14:22 Hm, what was #zingcode ? 18:14:25 and Tons Of Cool Stuff 18:14:29 I had that set on autojoin 18:14:32 Sgeo: Zing and CZing discussioj 18:14:38 WHat's zing/ 18:15:06 * Sgeo goes to get rid of unneeded channels in his autojoin list 18:15:13 ooh, maybe via irc! 18:15:16 Sgeo: proglang 18:16:10 the command line interface will be awesome 18:16:11 :-P 18:17:31 ehird: so, a todo list app with commandline, web-based and IRC-based interfaces? 18:17:51 In PSOX? :o 18:18:06 RodgerTheGreat: Pretty much. 18:18:10 RodgerTheGreat: But with actually unique features. 18:18:14 sounds potentially quite nifty 18:18:19 And, the idea is that adding items isn't any harder than e.g. a simple textfile 18:18:25 unless you want to, to provide more info 18:18:35 slereah_, not if it's in a normal language, I'd assume 18:18:41 ehird: have a look at this and see if it gives you another wonderful idea: http://pocketmod.com/ 18:18:57 *GASP!* I said something not 100% positive about PSOX! 18:20:05 RodgerTheGreat: seen it. don't have a use for it. 18:20:06 :P 18:21:03 the natural idea here, which you are missing, is to provide an RSS feed for the web-based interface, so that you can hook up this global todo system with Pocketmod and innumerable other PIMs 18:21:16 of course it will have an rss field 18:21:23 duh! :) 18:21:51 RodgerTheGreat: I hope that adding a todo item will be basically this: 18:21:54 $ todo "Do foo and bar." 18:22:11 with some kind of tag: 18:22:15 $ todo @code "Code foo." 18:22:17 or, something 18:22:34 and if you just say "todo", it lists out a line-by line list of your todos 18:22:49 then it'd be easy to grep for things 18:23:07 yes 18:23:13 formatted with gorgeous ANSI codes 18:23:15 and maybe paged 18:23:27 but it would probably only show recent ones 18:23:32 and tell you to give it -a for all of them 18:23:35 or something 18:23:43 gotta have a commandline flag to dump out pure text, though 18:23:47 and of course tons more ways to view stuff :) 18:24:00 RodgerTheGreat: 'if we are on a supporting terminal, ansi' 18:24:15 'ls' e.g. does this 18:25:03 * Sgeo tries the pocketmod thing 18:25:49 Sgeo: it's a pretty nifty idea, but I think what it needs is some kind of database you can store on your computer and an easy way to read data from a used one and enter it into the database 18:25:53 RodgerTheGreat: did i mention that the todos will be revision controlled? 18:25:56 with git. 18:26:02 :( 18:26:11 this is a bad idea. 18:26:17 hah, i forgot, you don't like vcses because you think they're all like svn 18:26:23 have fun with your generalizations, i guess 18:26:49 I don't like vcses because they're generally *unnecessary* and you just demonstrated a prime fucking example of that 18:27:31 RodgerTheGreat: you will see. 18:27:39 it will be terribly useful in this case 18:28:00 yes, I will see this project slowly spiral into feature bloat and the dark forests of overkill 18:28:26 hardly 18:28:30 i like simple, minimalistic things 18:28:32 like git. 18:31:52 * ihope___ arrives in a huff 18:31:54 -!- ihope___ has changed nick to ihope. 18:32:03 Hello iHope 18:32:42 hey, ihope 18:33:27 -!- Judofyr has joined. 18:39:46 -!- oerjan has joined. 18:42:54 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 18:43:01 -!- slereah_ has joined. 19:01:44 -!- Sgeo has quit ("Ex-Chat"). 19:02:03 -!- Sgeo has joined. 19:05:10 http://sgeo.diagonalfish.net/screenshots/xchat_strangeness.png 19:11:40 Subchannels. Cool. 19:12:44 that's cool 19:12:44 :D 19:12:56 ehird, I want them all to be on the same level, dagnabit 19:12:56 Infinite Array of IRC Channels 19:13:11 a server is just a remote channel! 19:13:19 channel uris. 19:13:26 decentralized channel relations! 19:13:31 ugh 19:13:34 ehird: but IAIC doesn't spell anything! 19:13:47 IIRC 19:13:49 Infinite IRC 19:13:58 (iirc, that's the name) 19:16:17 infinite irc, that's the name. 19:16:28 if i remember correctly. 19:16:49 of course. 19:16:51 that's the joke. 19:17:16 oh, it was a joke? 19:17:17 :D 19:17:32 yes. 19:17:38 but i still like my idea! 19:17:48 It's like the cvs/svn->git transition.. for irc! 19:21:24 -!- ihope___ has joined. 19:38:22 -!- ihope has quit (Read error: 110 (Connection timed out)). 19:40:13 -!- ihope___ has changed nick to ihope. 19:42:51 So, some people are extremely smart, some people have a photographic memory, some people have lucid dreams naturally, etc. It'd be interesting to be a different one of those every day. 19:45:14 and now you can! 19:45:19 * lament gives ihope some curious pills 19:45:41 You now have a pornographic memory :o 19:45:45 * ihope takes them, and then takes them 19:46:37 * oerjan takes the polkadot pill 20:26:35 -!- calamari has joined. 20:53:51 -!- slereah__ has joined. 21:08:03 -!- slereah_ has quit (Read error: 110 (Connection timed out)). 21:12:14 -!- RedDak has quit (Read error: 104 (Connection reset by peer)). 21:13:30 -!- RedDak has joined. 21:30:07 -!- oklokok has joined. 21:30:39 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 21:38:28 -!- Sgeo has quit ("Ex-Chat"). 21:38:52 -!- Sgeo has joined. 21:39:19 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 21:39:42 -!- Sgeo has joined. 21:40:50 -!- Sgeo has quit (Client Quit). 21:41:39 -!- Sgeo has joined. 21:57:53 topic awesome as always 21:58:21 -!- oklokok has set topic: Note to self: change topic.. 21:58:42 -!- ehird has set topic: awesome as always. 22:13:55 -!- pikhq has set topic: #esoteric | awesome as always. 22:14:22 * Sgeo wonders why pikhq isn't in Sine 22:14:30 Or ehird 22:26:21 pikhq: get thee to Sine! 22:27:10 *sin 22:32:07 Ne. 22:32:49 pikhq, whynot? 22:36:25 -!- Corun has joined. 22:41:31 -!- jix has quit ("CommandQ"). 22:45:29 -!- Slereah has joined. 22:48:37 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 22:56:03 -!- oerjan has quit ("Good night"). 23:09:01 -!- bsmntbombdood has joined. 23:12:58 -!- RedDak has quit (Remote closed the connection). 23:31:51 -!- timotiis has quit ("leaving"). 23:41:33 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 23:41:34 -!- slereah_ has joined. 2008-03-03: 00:09:18 -!- olsner has quit ("Leaving"). 00:13:32 -!- ehird has quit ("Konversation terminated!"). 00:17:47 -!- Corun has quit (Read error: 104 (Connection reset by peer)). 00:20:00 -!- Tritonio_ has joined. 00:20:25 -!- Corun has joined. 01:02:49 Man are the programs for the analytical engine ugly. 01:04:14 hello 01:04:40 Hi. 01:05:08 Where can you see them? 01:05:42 -!- sebbu has quit ("@+"). 01:06:27 IN MY MIND 01:06:28 AAAAAA 01:06:33 But more accurately, 01:06:41 http://www.fourmilab.ch/babbage/cards.html 01:07:03 Although I suppose a better language could be written for it. 01:35:52 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 01:36:17 -!- Judofyr has joined. 02:00:37 -!- slereah__ has joined. 02:00:37 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 02:10:11 -!- ihope has quit (Read error: 110 (Connection timed out)). 02:52:33 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 02:52:57 -!- Judofyr has joined. 03:01:20 -!- Corun has quit ("Leaving"). 03:24:39 * Sgeo is now a "wannabe Canadian" thanks to ehird 04:13:59 -!- slereah_ has joined. 04:20:22 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 04:47:32 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 04:47:50 -!- slereah_ has joined. 05:07:07 . . . I just *won* the game. 05:10:19 no you didn't 05:10:22 get over it 05:10:28 www.xkcd.com 05:10:35 Randall Munroe's word is law. 05:11:04 -!- GreaseMonkey has joined. 05:11:13 Finally! 05:11:18 It's about time! 05:12:11 :o 05:21:19 -!- calamari has quit (Remote closed the connection). 05:25:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 05:26:50 -!- Judofyr has joined. 05:35:32 -!- Sgeo has quit (Remote closed the connection). 06:54:31 i was winning the game until 10:00 07:14:31 -!- olsner has joined. 07:14:45 wow, i actually started writing an oklotalk interp :o 07:15:00 S={A=_;´{B=_;´{C -> A!C!(B!C)}}}; 07:15:00 K={A=_;´{B=_;A}}; 07:15:00 S!K!K!3 07:15:09 that works now 07:15:33 err... S={A=_;´{B=_;´{C=_;A!C!(B!C)}}}; that is 07:16:04 it's prettier once i add pattern matching, but i'll take a break first 07:51:01 mwahaha, oklotalk has both dynamic and static scoping, simultaneously for each variable 07:51:35 sometimes i feel i've designed this language to be especially unsuited for compilation 07:51:49 i guess that was one of my goals 07:55:38 S={A=_;´{B=_;´{C -> A!C!(B!C)}}}; 07:55:38 K={A=_;X=8;´{B=_;A}}; 07:55:38 X = {_ - 3}; 07:55:38 Y = 4; 07:55:38 (`(`(`(s (`(s (k S)) (`(s (k K)) (`(s K) K)))) (k (`(s K) K))) X) Y) 07:55:41 works! 07:56:14 wonder if i can safely assume scoping works perfectly 07:56:27 that applies X to Y 07:56:34 returning 1 07:57:25 http://www.vjn.fi/pb/p614566165.txt i love my hand-compiled oklotalk code 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:06:18 -!- slereah_ has quit (Remote closed the connection). 08:06:33 -!- slereah_ has joined. 08:13:08 -!- oerjan has joined. 09:00:04 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 09:01:57 -!- olsner has quit ("Leaving"). 09:08:08 wow, i actually started writing an oklotalk interp :o 09:08:13 wtf is oklotalk? 09:09:16 oklopol's pet language. probably unimplementable. ;) 09:11:01 well, at least i think i can implement this subset ;) 09:11:08 Not even if you had an Oklopol at home? 09:11:13 granted, i'm leaving out a lot of stuff 09:12:30 for example, with my current implementation i'm pretty much bound to python's lack of tail recursion and continuations, and cannot have them either 09:13:04 oklokok, got a link for details on this language? 09:13:13 you'd think :) 09:13:23 i wrote a tutorial of some sort 09:13:30 link? 09:13:55 but that's a bit outdated now, because i made a few changes (for the better!) 09:13:59 hmm 09:14:10 i can try and locate it 09:14:16 oklokok, I want to see the specs for the language :P 09:15:05 i'm not sure i hate you enough to torture you with the specifics ;) 09:15:12 also, i don't have a written spec 09:15:31 you can look at my interp once i get it working! 09:15:50 oklokok, ok tell me about it then 09:15:57 what kind of language is it 09:16:13 it's designed to be fairly terse 09:16:18 with a very free syntax 09:16:32 you know about perl right? 09:16:34 ;P 09:16:35 for example, you can do sexps, haskell-style and C-style function calls 09:16:38 yeah 09:16:47 i know some perl 09:17:08 oklotalk is prototype-based (kinda), and uses _ for args 09:17:15 although neither choise was from perl 09:17:18 it's designed to be fairly terse with a very free syntax <-- sounds like perl to me :P 09:17:39 _ was a coincidence, and prototyping just arose from what i used for functions 09:17:49 not that I can code perl, I code C, bash, awk, brainfuck, and some other ones 09:17:52 perl is a lot less free 09:17:56 in syntax 09:18:11 oklokok, ok thats extreme 09:18:15 {X -> {Y -> X}}!$5, 8)!´{A B->A+B} == 5+8 09:18:19 {X -> {Y -> X}}!$5 8)!´{A B->A+B} == 5+8 09:18:23 {X -> {Y -> X}}!5 8)!´{A B->A+B} == 5+8 09:18:29 ({X -> {Y -> X}}!5 8)!´{A B->A+B} == 5+8 09:18:36 ({X -> ´{Y -> X}}!5 8)!´{A B->A+B} == 5+8 09:19:04 you can change about 20 details there without changing it 09:19:09 is it possible to design an esoteric language, with sane syntax that isn't a turing tarpit I wonder 09:19:20 or would it not count as esoteric then 09:19:37 well, the definition includes weird ideas 09:20:02 hm? 09:20:12 what do you mean? 09:20:15 i consider graphica (HAVE I MENTIONED GRAPHICA?!??) esoteric, although it can be used for normal pattern matching based functional programming 09:20:35 haven't heard of graphica before 09:20:48 because its idea is ...well, i'd like to say new 09:20:56 but it's prolly as old as oerjan 09:21:01 what is it's idea? 09:21:18 you know haskell? 09:21:32 well, you don't have to 09:21:46 I don't know much functional programming really 09:21:53 a bit of lisp 09:21:57 yes you do! it's obligatory! :D 09:22:00 just that you can make trees in a similar fashion (at least syntactically) 09:22:03 like 09:22:04 hmm 09:22:16 Tree 0 = () 09:22:22 oerjan, a bit of lisp I know, or rather, elisp 09:22:28 Tree n = Tree n-1, Tree n-2 09:22:40 this would make a fibonacci heap -like structure 09:22:49 do you see it? 09:22:55 ok *waits for things to make sense* 09:23:11 now, this kinda of recursive shit only lets us make trees 09:23:18 in the mathematical sense 09:23:31 ah now I think I understand 09:23:34 now, to be able to make arbitrarily connected graphs, i added global tagging 09:23:50 global tagging means, you can make a ring like this: 09:24:07 first, on the top level, you tag the top node as "top" 09:24:22 then, at Ring 0, you tag current node as "top" again 09:24:31 ok 09:24:33 now, the bottom case is considered the same case as the top case 09:24:56 effectively creating a ring 09:25:04 i can show this in code 09:25:04 oklokok, we aren't talking about rings as in "kernel executes in ring 0" I assume? 09:25:12 heh 09:25:13 no 09:25:15 like 09:25:33 we have nodes A, B, C, D and E, where A->B->C->D->E->A 09:25:36 ah right 09:25:37 where -> is a connection 09:25:52 oklokok, looped linked list? 09:25:56 this would be something like this (wait a bit) 09:26:04 yeah 09:26:45 (I normally prefer C, I guess that shows) 09:27:05 Ring n :: #top 09:27:05 = Ring n 0 09:27:05 Ring n n :: #top 09:27:05 Ring n m 09:27:05 -> Ring n m+1 09:27:10 this is one way to do it 09:27:16 :: means tagging 09:27:20 ok 09:27:25 = means absolute equality, or "redirection" 09:27:33 re-evaluate this node as ... 09:27:53 this way you can first add a few connections, then call the node something else to add some more 09:27:59 -> means "connection to" 09:28:11 as do <- and <->, but for different directions 09:28:24 right 09:29:11 currently, graphs are evaluated strictly, and making them lazy, while errorless, would actually be impossible 09:29:14 * AnMaster still thinks that a clearer way to describe a linked list would be along the lines of: typedef struct listItem { void * data; size_t size; listItem * next; } 09:29:56 no it isn't 09:30:01 no? 09:30:03 no. 09:30:07 ? 09:30:17 mine was a complete definition 09:30:28 if you actually implement the whole thing, it's not as pretty. 09:30:32 true,I would need to add how to use this data structure 09:30:56 graphica is very intuitive once you get the hang of it 09:31:07 oklokok, a lot of things are 09:31:13 i've made tons of graphs with it, and they usually work right away 09:31:53 http://www.vjn.fi/oklopol/graphica.txt <<< an n-dimensional binary cube 09:32:37 it would be about a half shorter, if i had some list operations in the language 09:34:04 graphica actually has a spec of some sort 09:34:16 but i seem to have lost that one too :D 09:34:27 always fun when a computer breaks <3 09:36:11 another idea in graphica was the fact that [4 5+2] is parsed as [4 (+ 5 2)] 09:36:21 this is very useful, actualyl 09:36:25 *actually 09:36:52 also, my screen just flipped 90 degrees clockwise 09:37:07 quite hard to move the mouse and i have a hard time reading 09:38:05 does anyone know how to flip it back? 09:38:20 and whether this in fact is something my computer should be doing :D 09:39:43 it's achieving sentience. RUN! RUN AWAY! 09:40:23 okay, fixed 09:42:05 also, dropped my cell phone in a glass of water 09:42:09 by accident 09:42:32 AnMaster: lemme see your c version of the cube :) 09:42:54 (mine worked on the first attempt, unless you cound the fact i had a few syntax errors) 09:43:45 someday, graphica will be the sql of graph-creation, i tells ya! 09:43:56 sql sucks by the way 09:44:25 heh 09:44:35 oklokok, I don't even understand the problem 09:44:42 the problem? 09:44:50 oklokok, however, what language would you use to write an interrupt handler? ;P 09:45:01 n-dimensional binary hypercube, what's there to understand 09:45:39 oklokok, well, I'm in what equals last year of high school here in Sweden 09:45:46 so not cs student yet heh 09:45:52 AnMaster: 1) i wouldn't write that 2) graphica is designed for the exact purpose of making graphs 09:45:54 however I plan that next year 09:46:17 3) i know you were joking, i just don't laught at jokes, i ruin them by appearing to take them seriously 09:46:21 so I admit, that part of that stuff goes over my head 09:46:34 oklokok, ah THAT kind of person 09:46:35 sigh 09:46:35 well, i'm in the same class 09:46:46 you know more of us? 09:46:57 hot stuph 09:47:10 huh? 09:47:19 ispell doesn't know "stuph"? 09:47:22 nor do I 09:47:26 ph == ff 09:47:33 ah 09:47:39 like graph is actually just leetspeak for graff 09:47:39 weird typo 09:47:49 oklokok, now that is a joke 09:48:02 yes. 09:48:06 it indeed was. 09:48:47 however, I wonder, is it possible to write an esoteric language, that is general-purpose, got a nice syntax, and isn't a turing tarpit? 09:49:05 anyway, in an n-dimensional binary hypercube the coordinates of each node are lists of length n containing ones and zeroes 09:49:25 and every number [0..2^n[ is a node 09:49:39 (as its binary representation as a list) 09:50:03 for each node N: for each node M: if H(N, M)==1, N<->M 09:50:08 where H is hamming distance 09:50:39 mhm 09:50:47 H = sum( [m!=n for n:N, m:M] ) 09:51:04 hamming distance = number of places where the lists diffe 09:51:05 r 09:52:39 for an x-ary hypercube you just allow any combination of numbers [0..x[ in the lists 09:52:58 * AnMaster wonders, object orientated brainfuck, hm 09:53:11 as a new language of course 09:53:29 i was designing something of that sort as a macro language for brainfuck 09:53:41 cerebral penetration 09:54:05 Reaper is intended to have a nice-looking syntax. But just on the surface. 09:54:08 but i was a noober back then 09:54:22 also, functional brainfuck, hm 09:54:38 oklokok, oh why not use m4 ;P 09:54:57 all i remember about Reaper is that it's based on destructors, and that you have multiple ways to separate the parts of an atom token 09:55:02 m4? 09:55:09 functional brainfuck, in what sense? 09:55:11 macro language, used by autotools 09:55:28 if you mean a procedural one, it's been done 09:55:37 oklokok, not procedural 09:55:44 I done a procedural one myself so... 09:55:47 I mean functional 09:55:56 higher order functions and so on 09:56:00 first-class fucntions? 09:56:03 functions 09:56:04 yeah 09:56:31 so... m4 does generix object oriented macro languages? 09:56:33 generic 09:56:41 oklokok, not object orientated no 09:56:53 but you could likely implement it hehe 09:56:56 well, then that's why not use it :) 09:57:05 http://en.wikipedia.org/wiki/M4_%28computer_language%29 09:57:36 oklokok, ever used autoconf? or automake 09:57:41 no 09:57:43 they use m4 heavily 09:57:45 i've never used anything 09:57:58 i don't trust a wheel i didn't invent 09:57:58 oklokok, I bet you got m4 installed on your computer (assuming it is not windows) 09:58:06 it is windows now 09:58:11 ugh 09:58:17 vista <3 09:58:27 :( 09:58:30 DRM :( 09:59:34 well, i don't see anything fundamentally wrong in preventing piratism 09:59:56 as long as i'm not in a minority not being able to do it 10:00:25 in case that's what DRM is, i don't actually know anything, nor care 10:00:37 http://en.wikipedia.org/wiki/Digital_rights_management#Controversy 10:01:01 i gotta admit vista is even worse than ubuntu, though, should try to get xp or something here 10:02:15 well, vista is more reliable, but xp was a lot better 10:02:24 i mean, more reliable than ubuntu 10:02:35 well I don't use ubuntu 10:02:42 I run Gentoo Linux and FreeBSD 10:02:56 i hear gentoo works 10:03:11 but i'm fairly sure i couldn't get it installed 10:03:14 works well for me 10:03:23 oklokok heh 10:07:12 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 10:08:02 -!- slereah_ has joined. 10:08:11 reaper's page is much too hard to understand 10:09:11 hmph, now i'm just staring at the screen :D 10:09:28 oklotalk or scrubs, gotta ask my bot 10:09:49 >>> choose oklotalk scrubs 10:09:49 scrubs 10:09:57 ololobot is never wrong 10:28:36 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 10:30:00 -!- slereah_ has joined. 10:30:27 oklokok, what is scrubs? 10:30:31 a show 10:30:40 tv series 10:30:45 sitcom 10:30:50 Isee 10:30:52 I see* 10:41:59 F = {A B -> A * B; N -> N * 3}; 10:41:59 f 3; 10:41:59 f 6 7 10:42:03 pattern mtaching works 10:42:07 *matching 10:42:08 yay 12:18:14 -!- oerjan has quit ("leaving"). 12:25:47 -!- sebbu has joined. 13:17:19 -!- Deewiant has left (?). 13:43:39 -!- timotiis has joined. 13:48:45 -!- wildhalcyon has joined. 14:00:01 -!- timotiis has quit ("leaving"). 14:00:09 -!- timotiis has joined. 14:04:03 -!- RedDak has joined. 14:21:52 -!- jix has joined. 14:51:31 -!- RedDak has quit (Remote closed the connection). 15:09:24 -!- dbc has quit (Read error: 110 (Connection timed out)). 15:31:03 -!- slereah__ has joined. 15:47:42 -!- dbc has joined. 15:58:45 -!- slereah_ has quit (Connection timed out). 16:09:49 * Judofyr is almost finished with a bf2sku program in Skull+ :) 16:10:54 pretty slow though 16:27:46 -!- Sgeo has joined. 16:27:53 yay! 16:28:03 Hi 16:28:06 Judofyr, hm? 16:28:11 bf2sku is 780 bytes in Skull+ :D 16:28:18 Sgeo: just written a bf2sku 16:28:21 Skull+? 16:28:32 http://esoteric.voxelperfect.net/wiki/Skull_plus 16:28:33 -!- helios24 has joined. 16:28:40 hi helios24 16:28:50 hi 16:29:07 Sgeo: My little Skull-derivative :) 16:33:25 Sgeo: Here's the code: http://gitorious.org/projects/sofaskull/repos/mainline/blob/master/samples/bf2sku.sku 16:35:47 -!- ehird has joined. 16:36:08 -!- ehird has set topic: #awesome | esoteric as always. 17:18:39 -!- RedDak has joined. 17:23:14 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.11/2007112718]"). 17:50:45 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net). 17:51:22 -!- lifthrasiir has joined. 17:55:55 -!- ais523 has joined. 18:07:59 ais523: hellos 18:08:10 ehird: 18:08:26 ais523: 18:08:36 * ais523 is here 18:08:49 !!!! really?!/129817981212 18:09:28 I have to try to start a conversation somehow 18:09:39 or we'll just be pingspamming the channel indefinitely 18:10:12 ping 18:10:31 pong 18:10:38 hmm... seems that attempt didn't work 18:11:59 [18:11] [CTCP] Received CTCP-PING request from ais523, sending answer. 18:12:04 the all-seeing eye of konversation 18:12:08 yes 18:12:19 it even lets me know when Freenode sends a ctcp-version 18:12:24 hmm... I wonder why it does that? 18:12:25 you use konversation too <3 we're like soulmates 18:16:35 ais523: ESO should have a TURKEY BOMB spec 18:16:40 that is as vague and meaningless as the original 18:16:58 the original isn't vague and meaningless! 18:16:59 call it CHICKEN EXPLOSIVE, citing trademark claims by Cats Eye Technologies 18:17:12 there should be a derivative, Esutu, with a flashier site, 18:17:16 most of it is very well defined, it's just that a few things are left deliberately unclear 18:17:21 that renames it back to TURKEY BOMB, after a deal with CatsEye 18:17:32 (is my Debian/Ubuntu/Firefox parody obvious enough yet?) 18:18:08 if it was a propor parody, then you'd need to have tried a couple of other names first, finding that they were copyrighted by third parties 18:18:15 s/propor/proper/ 18:18:27 ais523: no 18:18:32 that's a different one 18:18:35 Debian didn't do that 18:18:37 that was Firefox 18:18:41 yes 18:18:41 but 18:18:42 I meant the IceWeasel thing 18:18:45 very recently 18:19:04 Moz say 'LULZ, OUR ICON & STUFF - COPYRITED. U CANT USE IT UNDER A FREE LICENZE, BTCHZ' 18:19:20 Debian say 'Well, ok then. we'll call it IceWeasel, and make our own icon 18:19:38 Ubuntu say 'THIS DESTROYS OUR FLASHY EFFECTS. Hey moz, mind if we include it? Under that non-free license of yours' 18:19:42 Moz say 'SUR' 18:19:44 Debian say '*sigh*' 18:19:59 Debian are pretty strict about freeness 18:20:17 for instance, I think they refused to include the documentation for GNU tar because they didn't like its license 18:20:36 that might be the wrong program, though, but I remember it was some really common GNU program 18:20:50 ais523: I wouldn't call this 'pretty strict'! 18:21:06 The GNU folks, in general, abhor man pages, and create info documents 18:21:06 instead. Unfortunately, the info document describing tar is licensed 18:21:06 under the GFDL with invariant cover texts, which violates the Debian 18:21:06 Free Software Guidelines. As a result, the info documentation for tar 18:21:06 is not included in the Debian package. 18:21:08 Mozilla foundation explicitly said that the Firefox name and icon were (C)&TM, and that they must stay under a non-free license. 18:21:13 I know 18:21:28 I think that not accepting that is just reasonable. 18:21:33 Mozilla is just like IBM, Sun, etc. anyway 18:21:37 They don't 'get' open source. 18:21:39 protecting the trademark is one of the easiest ways to try to maintain control over an open source project 18:21:42 They just jumped on the bandwagon when it looked shiny. 18:22:00 So Firefox &co. are very bad open-source/free-software posterchildren 18:22:12 what I'm saying is, if Debian flip out over something like cover texts, then they'll definitely have problems with a nonfree trademark license 18:23:42 yes 18:23:44 hmm... what happened to the invariant section in the Emacs manual? 18:23:55 but what I'm saying is that Ubuntu's un-flipping-out in this case was idiotic 18:24:00 it seems to be missing from my version, which implies that someone got permission to read it at some point 18:24:06 because it really is a terrible situation 18:24:18 and ehird: Ubuntu isn't exactly the freeest distribution of Linux around 18:24:24 exactly 18:24:25 after all, it was designed for convenience, mostly 18:24:46 on another note, I actually saw the word "subtrahend" used seriously earlier today 18:24:54 anyway, it means that the iconic (literally) open source product is actually non-free. all those advertisements 'OMG OPEN SOURCE BROWSER'? they contain a non-free name and icon. 18:24:56 it makes no damn sense. 18:25:19 but the browser itself is open-source 18:25:19 I think it makes perfect sense 18:25:23 it just has closed-source marketing 18:25:27 that makes sense in some sense 18:25:33 ehird: isn't the name "GNU" copyright the same way? 18:25:42 lament: I don't believe so. 18:25:47 Well, it might be, but it's certainly freely licensed if so. 18:25:52 Same with the GNU logo. 18:26:08 ais523: well, it means that marketing on how great open source is just look at this browser is closed-source :) 18:26:27 and, more importantly, 18:26:28 ehird: Ironic, but I don't see how that's impossible 18:26:35 it means that any free system cannot actually include Firefox as-is. 18:26:40 http://www.gnu.org/graphics/agnuhead.html 18:26:42 after all, it's possible to argue that open-source is good for software but bad for marketing... 18:26:43 thus, Firefox isn't really free software. 18:26:44 "The GNU logo can be used verbatim in contexts talking about GNU in a supportive and accurate way. For permission, ask webmasters@gnu.org." 18:26:48 Not free at all. 18:26:55 lament: OK, then gnu are ridiculous too 18:26:58 GNU is not free software! oh gn0! 18:27:12 What if we want to talk about it in a negative and accurate way? 18:27:14 I always preferred BSD tools anyway. :-P 18:27:22 Sgeo: DOUBLEPLUSUNGOOD 18:27:22 hmm... that's the logo, I wonder what the trademark license is like 18:27:40 -!- olsner has joined. 18:27:41 at any right, firefox is perfectly reasonable 18:27:42 hmm... another example of this sort of trademark thing is Mesa 18:27:45 i mean at any rate 18:28:03 ++ WARN: initializing libvcd 0.7.23 [linux-gnu/i486] 18:28:03 ++ WARN: 18:28:03 ++ WARN: this is the Beta development branch! 18:28:03 ++ WARN: use only if you know what you are doing 18:28:03 ++ WARN: see http://www.hvrlab.org/~hvr/vcdimager/ for more information 18:28:04 ++ WARN: initializing libvcd 0.7.23 [linux-gnu/i486] 18:28:06 ++ WARN: 18:28:08 ++ WARN: this is the Beta development branch! 18:28:10 ++ WARN: use only if you know what you are doing 18:28:12 ++ WARN: see http://www.hvrlab.org/~hvr/vcdimager/ for more information 18:28:13 ++ WARN: Sgeo is a flooder 18:28:14 oops 18:28:22 I don't know waht I'm doing, I hope DeVeDe does 18:28:34 get a client that knows what flooding is 18:28:42 it's meant to be an open-source implementation of a graphics library's API, but it's hard to say which one without violating trademark restrictions 18:28:45 Like konversation. :p 18:29:06 ais523: which lib? 18:29:15 Mesa 18:29:22 ah 18:29:22 opengl 18:29:35 luckily they give lots of hints 18:29:39 i like opengl 18:29:39 :P 18:29:43 ais523: their website says is. 18:29:44 it 18:29:50 http://www.mesa3d.org/->introduction 18:29:53 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics. 18:30:17 yes 18:30:17 wawait, OpenGL isn't open? 18:30:22 although even that sentence is carefully worded 18:30:24 * Sgeo is confuzzled 18:30:26 Sgeo: your hopes and dreams: shattered. 18:30:36 Sgeo: the software-only implementation is open-source 18:30:44 the trademark itself is heavily locked down 18:30:58 and there are hardware or partially-in-hardware implementations that aren't open-source 18:31:14 thus most OpenGL libraries can't be redistributed 18:31:20 ais523: kde's redmond theme's description: "a style from the north-west of the usa" 18:32:04 sometimes I think people deliberately steer further away from trademarks than necessary, to poke fun at trademarks 18:32:15 there's the whole *nix thing, for instance 18:32:41 *nix just means 'any unix or unix-compatible system' 18:32:46 yes 18:32:51 it's not called Linix though 18:32:54 so it doesn't work well :) 18:33:16 but the reason the term came about was because there were so many (UNIX system)-like operating systems that had names ending in nix that weren't called UNIX 18:33:19 * Sgeo MURDERS DeVeDe 18:33:57 * Sgeo opens up k3b 18:34:00 Hm. 18:34:09 I want to write a silly c compiler. 18:34:13 For no particular reason, really. 18:34:32 I would write it in Ruby but I want it to be self-compiling. So I guess I have to write it in C. 18:34:41 incidentally, ehird, remember when you tried gcc's -O3 on that compiled Underload source? 18:34:46 yep 18:35:00 and that was on my decent computer (imac) :) 18:35:04 I was running -O2 on some compiled-from-OIL C code (it was very long), and it actually caused thrashing and the oom-killer 18:35:18 i hope the oom killer killed gcc 18:35:24 no, it killed trackerd 18:35:24 instead of Any Process (which is whta it actually kills) 18:35:42 in the end I had to use Ctrl-Alt-F1, Ctrl-Alt-Del to reboot 18:35:52 and even that took the system about half an hour to respond to 18:36:00 um, reset button anyone? 18:36:10 * ais523 daren't press reset during disk accesses 18:36:17 which happen basically all the time during thrashing 18:36:18 i have mastered pressing it with my little toe 18:36:28 it's a tiny, inwards-facing one 18:36:34 so i kind of wriggle my toe into it and push slightly 18:36:38 it's very convenient. 18:37:09 * ais523 has mastered turning on some sorts of computer by kicking the power button 18:37:25 (the sort where the seat is high, but the CPU itself is on the floor, and there is a large power button) 18:37:28 that's trivial 18:37:29 :) 18:37:45 not that trivial with the particular make of power button 18:37:49 when wearing shoes 18:37:56 ok, that's a good point i guess 18:39:01 http://tastyspleen.net/~billk/ruby/quiz/158-hello-world/158_hello_world.rb look at the maze solver! 18:40:11 ais523: other ruby fun - there's an ObjectSpace 18:40:18 ObjectSpace.each {|x| ... called for each object ... } 18:40:29 i imagine writing that must be really hard; ObjectSpace.each obviously can't cons 19:05:56 -!- timotiis has quit ("leaving"). 19:05:59 -!- timotiis has joined. 19:26:07 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 19:26:35 -!- Judofyr has joined. 19:46:23 -!- oerjan has joined. 19:59:22 -!- timotiis_ has joined. 20:12:34 -!- timotiis has quit (Read error: 110 (Connection timed out)). 20:18:46 -!- helios24 has quit ("Leaving"). 21:13:18 -!- oerjan has quit ("leaving"). 21:55:28 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 21:55:54 -!- bsmntbombdood has joined. 22:27:14 -!- ais523 has quit ("so as to get home on time"). 22:41:10 SWIM = awesome 22:41:38 SWIM? 22:42:51 Standard Writing, I'm 22:42:56 the most awesomest markup language 22:43:00 being developed for ESO 22:53:35 Sgeo: ping 22:54:00 pong 22:54:25 #swim 23:08:32 -!- jix has quit ("CommandQ"). 23:17:09 -!- RedDak has quit (Remote closed the connection). 23:25:26 -!- olsner has quit ("Leaving"). 23:37:38 -!- timotiis_ has quit ("sleep"). 2008-03-04: 00:11:06 -!- adu has joined. 00:18:41 hi 00:19:35 -!- adu has quit. 00:20:30 bye 00:27:32 "... Unfortunately, Ossanna's troff was written in PDP-11 assembly language and produced output specifically for the CAT phototypesetter. He rewrote it in C, although it was now 7000 lines of uncommented code and still dependent on the CAT. As the CAT became less common, and was no longer supported by the manufacturer, the need to make it support other devices became a priority. However, before this could be done, Ossanna died. ..." 00:29:00 -!- ehird has quit ("Konversation terminated!"). 00:44:17 ..Where have I seen "Troff" before? 00:56:54 troff is the markup language used by man pages. 00:56:57 It's pretty horrible. 00:57:28 Or rather, roff is the markup and troff is the default implementation, or something like that. 01:08:19 I remember seeing it mentioned in some For Dummies book 01:13:42 GregorR: The format used by man pages is actually only a set of macros in troff. 01:13:50 Rull-on troff gets even worse. ;) 01:21:12 Rull-on? 01:25:21 Full-on. 01:31:34 * Sgeo is going to go to sleep soon, maybe I'll have a decent amount of sleep tonight! 01:47:14 -!- sebbu has quit (No route to host). 01:50:26 G'night all. Here's hoping for remembered lucid dreams.. 01:51:32 -!- Sgeo has quit ("Ex-Chat"). 02:40:37 -!- adu_1 has joined. 02:41:23 -!- adu_1 has changed nick to adu. 03:00:50 -!- adu_1 has joined. 03:16:24 -!- adu has quit (Connection timed out). 03:23:55 -!- andydude has joined. 03:24:48 -!- andydude_ has joined. 03:26:11 -!- andydude_ has quit (Client Quit). 03:39:20 -!- adu_1 has quit (Read error: 110 (Connection timed out)). 03:40:43 -!- andydude has quit (Read error: 110 (Connection timed out)). 04:00:44 -!- GreaseMonkey has joined. 04:22:25 -!- adu_1 has joined. 04:22:35 -!- adu_1 has quit (Client Quit). 04:27:16 -!- adu has joined. 04:33:31 -!- calamari has joined. 04:43:25 -!- adu_ has joined. 04:45:53 -!- adu has quit (Nick collision from services.). 04:46:11 -!- adu_ has changed nick to adu. 04:54:09 -!- adu_ has joined. 04:55:53 -!- adu_ has quit (Remote closed the connection). 04:57:29 -!- adu has quit (Nick collision from services.). 04:58:13 -!- bd_ has left (?). 05:00:55 -!- adu has joined. 05:05:49 http://www.nonlogic.org/dump/images/1204607128-Censored.png <- new cartoon guys! 05:20:23 -!- andydude has joined. 05:22:23 -!- adu has quit (Nick collision from services.). 05:22:27 -!- andydude has changed nick to adu. 05:23:24 -!- adu has left (?). 05:26:06 meh 05:26:34 meh? 05:29:48 at your comic 05:31:37 LMAO 05:31:40 anything in particular you didn't like about it? 05:32:17 And yes, I do want to know. :p 05:32:48 heheh. Glad to see you enjoyed it, pikhq. What do you think of the new look? 05:33:08 Your art looks *really* good inked and colored like that. :) 05:33:17 thanks 05:33:21 Not quite Dresden Codak level, but pretty good. 05:33:50 well, naturally- I think he takes more than an hour and a half to do his, for one thing 05:33:51 Of course, DC is nearly a god of webcomicry, so. . . 05:34:05 I suspect as much, myself. 05:34:31 I'm thinking about buying/making a font of my handwriting for the speech bubbles and things, though 05:34:43 I'm not sure how I feel about the Comic Sans knockoff 05:34:53 Comic Sans is 'Meh'. 05:36:36 -!- andydude has joined. 05:39:08 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 05:39:30 -!- adu has joined. 05:40:22 -!- adu has quit (Remote closed the connection). 05:40:25 -!- Judofyr has joined. 05:47:20 -!- calamari has quit ("Leaving"). 05:54:28 -!- andydude has quit (Connection timed out). 06:31:33 -!- sebbu has joined. 06:34:36 -!- olsner has joined. 07:14:56 nothing more refreshing than a good 14 hours of sleep 07:17:43 " get a client that knows what flooding is" <<< iirc, konversation warns when you're about to start a flood, but it does not do the actually useful part of slowing down the flood. 07:18:35 -!- olsner has quit ("Leaving"). 07:20:10 -!- Judofyr has quit. 07:21:44 i want to know too, make another cartoon with just that one square 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:15:01 -!- oerjan has joined. 08:43:45 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 09:15:44 -!- oklokok has quit (Client Quit). 10:31:07 -!- jix has joined. 10:38:58 -!- slereah_ has joined. 10:39:18 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 11:00:36 -!- jix has quit ("CommandQ"). 12:02:25 -!- jix has joined. 12:16:08 -!- oerjan has quit ("hoogle hates operators"). 12:52:47 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 12:53:35 -!- slereah_ has joined. 13:16:10 -!- RedDak has joined. 13:20:32 -!- slereah__ has joined. 13:20:39 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 14:11:51 hello 14:36:54 -!- RedDak has quit (Remote closed the connection). 15:19:54 * AnMaster just got a SQL error on esolang wiki 15:20:21 not able to reproduce *shrug* 15:29:03 -!- ehird has joined. 15:29:22 -!- ehird has quit (Remote closed the connection). 15:29:41 -!- ehird has joined. 15:59:38 -!- Judofyr has joined. 16:12:51 -!- slereah_ has joined. 16:13:46 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 16:25:07 -!- timotiis has joined. 16:45:52 -!- ehird has quit ("Konversation terminated!"). 16:46:33 -!- slereah__ has joined. 16:46:38 -!- ehird has joined. 16:47:06 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 17:07:54 -!- Corun has joined. 17:09:16 -!- slereah_ has joined. 17:09:52 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 17:38:55 anyone got an idea for some new language, turing tarpit style, but not just some variation of brainfuck or similar languages 17:39:06 hm 17:39:14 * AnMaster wants to code something 17:39:22 (in C) 17:39:33 well, I am a tremendous fan of stack-based languages, and there are many unique and painful ways to do that in a minimalistic fashion 17:39:46 RodgerTheGreat, got any link so I can read up on that? 17:40:01 providing only pancake-flips or something like that for deep stack manipulation could be fun 17:40:02 one sec 17:40:06 -!- oklokok has joined. 17:40:19 http://en.wikipedia.org/wiki/Stack-oriented_programming_language 17:41:12 your code won't look anything like BF, and although there are already esolangs that are stack-oriented, there are a lot of new and different ideas you can explore 17:41:39 or it could inspire you to create queue-oriented languages or a similar monstrosity 17:42:08 hm 17:42:23 RodgerTheGreat, got any examples of existing stack based esoteric languages? 17:42:30 (or queue based) 17:42:32 yes... 17:42:33 FALSE is one 17:42:35 Befunge 17:42:40 .... thousands, really 17:42:43 -!- ais523 has joined. 17:42:50 hm ok 17:42:54 Arguably, FORTH and PostScript 17:43:01 What of Underload! 17:43:03 ehird, err wait, befunge is 2D hm 17:43:11 uhhh 17:43:12 and? 17:43:14 slereah_: oh yeah 17:43:15 hmmm 17:43:16 befunge is a hybrid of several things 17:43:17 wonderful underload <3 17:43:22 is there any 3D language :D 17:43:25 hello ais523 17:43:26 TreFunge 17:43:29 AnMaster: Funge-98 17:43:33 contains N-funge 17:43:37 for all values of N 17:43:38 aww 17:43:38 AnMaster: noit-o'-mnain worb 17:43:39 sigh 17:43:40 well, not negative 17:43:42 and not 0 i don't think 17:43:44 * slereah_ had an idea. 17:43:46 but 1,2,3,4,5,6,7,... 17:43:52 I'm not sure if it's TC, or even a good idea. 17:43:55 several n-dimensional languages exits 17:43:56 *exist 17:43:58 1.6 dimensional 17:44:00 hrrm? 17:44:09 (wtf would that look like) 17:44:11 A language based on animal populations. 17:44:13 queue-oriented languages are largely unexplored! 17:44:24 a language involving apples and string 17:44:29 RodgerTheGreat, not sure how to make one, but sounds interesting 17:44:32 AnMaster: integers 17:44:41 You define areas, and animals 17:44:53 ehird, well, I want a 4i-dimensional language ;P 17:44:54 With predation relations, reproduction rates and the like* 17:45:05 And you act on those. 17:45:11 * ais523 is wondering what the original question was 17:45:15 It would be really easy to do Fibonacci! 17:45:26 Dimensions can't be imaginary. 17:45:29 ais523, " anyone got an idea for some new language, turing tarpit style, but not just some variation of brainfuck or similar languages * AnMaster wants to code something" 17:45:36 ais523, that was the original question 17:45:38 OK 17:45:58 There's plenty of theoretical machines that no one touched. 17:46:00 but queue based language sounds very interesting idea *puts on list* 17:46:14 Sceql 17:46:21 (if I've spelt that correctly) 17:46:30 that was a queue-based language 17:46:33 * AnMaster looks at RodgerTheGreat 17:46:33 A query language (Think SQL, but crazier) that works on stacks 17:46:33 not sure whether it was TC 17:46:39 ah true 17:46:51 :D 17:46:58 would it be possible to make a queue based language TC? 17:47:05 I said "largely unexplored", not "none exist" 17:47:12 I don't see why it wouldn't be possible! 17:47:13 AnMaster: yes 17:47:17 -!- oerjan has joined. 17:47:20 hm 17:47:58 and I'd still like that biblically-themed gimmick language we were tossing about a while back 17:48:26 Would it have TEN COMMANDS? 17:48:48 ments 17:48:51 oh 17:48:53 * AnMaster just got a SQL error on esolang wiki 17:48:53 you referenced that 17:48:54 heh 17:49:01 oerjan, yep 17:49:01 everyone gets those 17:49:01 it does that all the time 17:49:07 oerjan, ah 17:49:10 RodgerTheGreat: DO UNTO OTHERS 17:49:20 ye olde heisenbug 17:49:27 I figured commandments would be like functions or assertions 17:49:30 CAST THE FIRST POINTER 17:49:32 Or something 17:49:34 AnMaster: it's possible, because when talking about computability, "queue-based" means absolutely nothing 17:49:43 possible to make a queue-based language tc that is 17:49:46 What would be the data structure? 17:49:47 LET THERE BE PEPERONY AND CHEASE 17:49:53 What would Jesus program! 17:50:13 what about other religions 17:50:26 hmm 17:50:31 the SQL-stack should be called: 17:50:36 Using bodies as variables, and souls as value? :o 17:50:40 * SELECT FROM 17:50:47 i was thinking about a language based on religions a while ago 17:50:47 no reason you couldn't slip in parts of the torah and Koran, but I'm not sure it would be as instantly recognizable to most people 17:51:03 RodgerTheGreat: i think such a biblical language might be NSFW 17:51:08 KNOW 17:51:12 haha 17:51:44 the torah _is_ part of the christian bible too. the koran might be a more difficult matter. 17:51:55 what about a language, where you had to define the source as the result of an equation in RPN, possibly the result should be interpreter in unary? The equation would have to involve complex numbers and a least amount of terms maybe 17:51:56 What, genociding all the variables for having the wrong value? 17:52:02 17:52:11 oerjan: but jesus came along and fixed all that; really god was just misunderstood 17:52:16 now look away from that evil one and look at this lovely new one 17:52:18 yes, that's it 17:52:22 <.< 17:52:23 AND THE LORD SAID UNTO NOAH, "GATHER YE SIX OF EVERY ENTRY IN THE 'ANIMALS' TABLE THAT ARE CLEAN AND STORE THEM IN THE ARK" 17:52:24 -!- RedDak has joined. 17:52:46 Is heaven the output? 17:52:47 RodgerTheGreat: wow, so my StackSQL is now in the biblical language? 17:52:56 AnMaster: i didn't get your idea 17:53:17 AND THE LORD SAID UNTO NOA, "TABLE ANIMALS SIX EVERYENTRY CLEAN? IF ARK STORE THEN" 17:53:18 oklokok, was random, doesn't work well I think 17:53:20 AND THE LORD SAID UNTO NOAH, "SMITE NOT THE UNCLEAN ANIMALS FOR THEY ARE SACRED IN THE EYES OF THE LORD" 17:53:23 cat >/dev/hell 17:53:38 dd if=/dev/god of=/dev/heaven 17:53:44 (file not found: /dev/god) 17:53:50 well I don't know much of the Bible, and even less of it in English so hm 17:53:50 "the void" or "clay" would probably be input 17:54:11 AnMaster: if that's the game we're playing, then i have an idea too: a language where a stack and there's some complex numbers where the stack is defined in terms of arbitrary calculations on the range of its lists and all the multiprocessing 17:54:17 I'd guess the language would probably include many synonyms for builtins and keywords to retain coherence 17:54:26 oklokok, hehheh 17:54:40 LET THERE BE X 17:54:40 RodgerTheGreat, this reminds me of that shakespearlang 17:54:44 RodgerTheGreat: it would be 40% nop :p 17:54:49 lol 17:54:51 RodgerTheGreat, that is, same basic idea 17:55:12 yeah, exactly- that's what makes it a gimmick language rather than high-concept 17:55:24 what about a language which looks like shell commands? 17:55:30 that exists 17:55:32 it's called 'bash' 17:55:34 Judofyr, err, that's called shell 17:55:35 Heh 17:55:49 :P 17:55:56 Judofyr, ais523, I wrote an modular irc bot in bash btw: http://envbot.org 17:56:02 ais knows 17:56:07 yeah, but it shouldn't do what you expect 17:56:22 Judofyr, oh cat = sudo rm -rf /? 17:56:33 AnMaster: and we call know. 17:56:34 *all 17:56:39 its a waste of time too 17:56:45 that wouldn't be a noob-safe language :P 17:56:46 it would be cooler in zsh, anyway 17:56:56 ehird, too easy in zsh 17:57:04 the only thing i like more than telling people i know everything that has ever happened here when someone tells me something is to tell people what others already know. 17:57:22 AnMaster: hardly 17:57:28 anyway, your project seems to be serious 17:57:32 also, english is clearly not suited for that complicated sentences 17:57:32 therefore zsh would be the best choice 17:57:43 ehird, how many servers got zsh on them? 17:57:48 most. 17:57:51 AnMaster: sudo rm -rf /? would delete all directories with one-character names in the root directory 17:57:58 and if not its in 99% of pkg management systems 17:58:05 zsh is the second-most popular shell from bash i'd say 17:58:08 ais523, the question mark was not part of the question, it was a question mark 17:58:14 and its programming language is highly superior 17:58:14 ehird, while bash isn't portable, it is more portable than zsh normally 17:58:16 it is very advanced 17:58:23 AnMaster: still. zsh is a better choice 17:58:28 ehird: maybe ash is the most popular, because that's used in most embedded systems 17:58:37 ais523: i don't think AnMaster is targeting those 17:58:57 ehird, I'm targeting standard shell servers, like those you can get for $5 or whatever it is 17:59:04 AnMaster: those have zsh 17:59:28 ehird, not last I checked on the one I got an account on, runs freebsd 6.2 17:59:34 and got bash but no zsh 17:59:38 AnMaster: then its a rarity 18:00:06 anyway that wasn't the point of this discussion, feel free to fork, it's open source ;P 18:00:28 it wouldnt be a fork 18:00:30 itd be a rewrite 18:01:22 now, why not make it work under either then (painful, as the common subset of extended functionality compared to POSIX isn't that large iirc) 18:02:07 why not make it work under POSIX sh? 18:02:34 ais523, interesting idea, but would be painful 18:04:20 hm, if that "if an infinite number of monkies tyoe on an infinite number of typewriters for infinitly long we would get all the great works of Shakespear sooner or later is true", then that is true for any data 18:04:31 Yes. 18:04:39 It's called the internet 18:04:47 meaning, it would sooner or later generate a brainfuck interpreter heh 18:04:47 AnMaster: um, duh 18:04:51 Millions of monkeys on millions of typewriters! 18:04:55 why is that suprising? 18:04:59 not really 18:05:07 it's such an obvious statement that only an idiot would argue against it 18:05:10 ehird, but what if you could exploit it 18:05:13 :) 18:05:17 Not really 18:05:20 if you have a perfect random number generator on (0,1) [i.e. for bits] 18:05:21 It's totally random 18:05:23 and run it infinitely 18:05:25 ehird, indeed 18:05:29 of course it will generate everything 18:06:00 But then again, the only way to have a good program out of it would be to use a bigass if 18:06:07 the problem is that _finding_ something in the monkey output is even harder than writing it yourself in the first place 18:06:07 And it would be shorter to just use the if 18:06:09 please show me some statistics to support this. 18:06:12 well, what's inside the if 18:06:14 how likley is it that cat /dev/urandom will generate hamlet in ASCII, starting within 1 MB from stream start with fewer than three errors in it? 18:06:21 anyone want to calculate? :) 18:06:43 oklokok: support one 18:06:45 err 18:06:46 oklokok: support what 18:06:52 AnMaster: /dev/urandom is not random 18:06:53 , 18:06:56 AnMaster: A string of length n is always 1/256^n 18:06:57 for example, there will be _many_ more instances of "To be or not to flaggle gnart gop" than of the entire Hamlet 18:07:02 ehird: that monkey thing! 18:07:08 AnMaster: that's trivial to calculate 18:07:11 ehird, ok, true, /dev/random with a hardware based number generator 18:07:14 oklokok: ummm 18:07:23 oerjan: tell oklokok he is silly 18:07:26 based on atmospheric noise 18:07:28 ehird, ^ 18:07:30 Although it would be better to use the printable character set. 18:07:36 of course if you have a truly random bit generator run through every possible combination infinitely that contains everything 18:07:44 slereah_: OK. 18:07:45 oerjan: tell ehird i was joking 18:07:50 Then a rng on (0,255) 18:07:52 oklokok: oh. :P 18:08:09 oklokok: you are silly 18:08:09 I like random number generators built from a radioactive sample and a detector array, sealed in a lead-lined box 18:08:11 (32,127) would be better. 18:08:15 ehird: oklokok was joking 18:08:23 perhaps the penis in my name makes me appear even stupider than i actually am 18:08:33 hmph, i already have oklopol in use 18:08:44 let msg = "oerjan: tell oklokok to tell " ++ msg in msg 18:08:53 (i know i could kill it) 18:09:18 oklokok: tell let msg = "oerjan: tell oklokok to tell " ++ msg in msg 18:10:15 uhh 18:10:16 does the irp spec say it has lazy evaluation? i think that would be kinda funny. 18:10:18 oerjan: that's wrong 18:10:25 reduction example: 18:10:26 let msg = "oerjan: tell oklokok to tell " ++ msg in msg 18:10:29 ======> 18:10:39 oerjan: tell oklokok to tell oerjan: tell oklokok to tell oerjan: ... 18:10:44 oklokok, hehe 18:10:46 oklokok: You write "Please do this function with x evaluation" 18:11:03 Please evaluate the list in range 1,inf, strictly. 18:11:05 IRP can does all! 18:11:14 ehird: Fuck-you error 18:11:44 sheesh 18:11:46 ehird: you too must be happy to know i actually begun writing an oklotalk interp 18:12:03 oklokok: OH YEAH 18:12:11 :P 18:12:13 oklokok, link to source? 18:12:14 give me a REPL, nao 18:12:19 AnMaster: Do you know what oklotalk is? 18:12:22 He won't be done for years! 18:12:25 ehird, I know 18:12:28 I seen it 18:12:28 It's the biggest, most ambigious language that exists 18:12:38 let msg = "tell oerjan: tell oklokok to " ++ msg in "oklopol: " ++ msg 18:12:39 it does not have a parser yet, but it already evaluates *some* of the basic things 18:12:42 I know he's been talking about it for months, but I still don't know what it is! 18:13:00 the problem is oklotalk's pattern matching and it's parsing, which are the most complicated things, aren't even started yet 18:13:09 oklokok, no esolang entry on it? 18:13:23 no. 18:13:27 i'm scared of the wiki 18:13:40 slereah_, some extreme syntax thing 18:13:44 but i'll put it there, even though it's not entirely made for esopurposes 18:13:48 oerjan: ok, fine 18:13:49 evaluate that 18:14:00 What be the syntax? 18:14:06 slereah_: You don't want to know 18:14:09 oklokok: Show him quicksort! 18:14:17 ehird: you probably guessed, but i'm only implementing a subset of it. 18:14:21 I've seen examples 18:14:23 ehird, you forgot the magic word (not, xyzzy!) 18:14:25 ;P 18:14:26 But I don't know what they mean 18:14:28 Show him quicksoooooooooooooooooooooooooooooort 18:14:33 :D 18:14:39 i can show *a* quicksort 18:14:41 yes 18:14:43 an evil one 18:15:14 Bible Code does not approve of evil codes 18:16:15 {L->{.L>}/_+._+{.L<}/:_} 18:16:21 i think that will do 18:16:30 What does it mean:! :o 18:16:34 that's not fully portable 18:16:37 it's just mean! 18:16:58 because if the lists contain lists, the addition will not put ._ automatically in a list 18:17:01 Judofyr: Oklotalk rocks 18:17:19 oklokok, really post a syntax desc 18:17:41 AnMaster: it is not parsable by traditional parsers 18:17:48 Without the syntax, it's hard to get a sense of the evilness 18:17:51 iirc it's even more malleble than perl 18:17:54 {L->{.L>}/:_+[._]+{.L<}/:_} <<< made portable + corrected an error 18:17:56 ehird, how comes? 18:18:06 AnMaster: its too ambigious+context sensitive+runtime-changable 18:18:14 [(Quicksort in Overload)] 18:18:14 (The quick brown fox jumps over the lazy dog.) 18:18:14 (~:L{gg(("<"")S:S'""Sn1~:A~D(:@~:@-@~zaa~g(A1a&)f)e@(:A@za*~D)e'*t.DDD?:^~'*t.DDD?:^@~a&*(">"")S:S'""Sn)f~!):^nSn 18:18:21 ais523: haha 18:18:32 somewhat longer than the oklotalk version 18:18:43 that's the language that was eventually tarpitised into Overload 18:18:56 ais523, can't find overload on esolang? 18:18:58 {L->'({.L>}/:_)+._+'${.L<}/:_} <<< added some more shit, but now i'm fairly sure it works :D 18:19:05 but I keep getting stuck halfway through when trying to write the spec 18:19:13 it can be done shorter, i'm just a bit panicky doing this live :P 18:19:16 AnMaster: that's because I've never actually managed to write the spec 18:19:21 ah ojk 18:19:22 ok* 18:19:34 I can give you a buggy interpreter in C++ that you can reverse-engineer if you want to mess around with it, though 18:19:39 * slereah_ should write the Andrei Machine 9000's specs 18:19:46 (that's only half-finished and abandoned because it became unmaintainable) 18:19:51 there are binary and trinary esolangs right? so what about other n-nary 18:19:59 ais523: you got a mix up :P 18:20:02 hey 18:20:06 who wants to write a turkey bomb impl :3 18:20:08 TriINTERCAL works in bases 3-7 18:20:13 Ten-ary? :o 18:20:18 ehird, not possible I think after looking at it 18:20:25 slereah_, whoo, that would be fun 18:20:45 anyway, {.L>}/:_ is assumed to mean {.L>_}/:_ because it ends in an oper, which means: collect for tail of argument all elements that are greater than the head of the list 18:20:59 umm, not greater, smaller 18:21:03 2i would be moar fun 18:21:04 AnMaster: um it is 18:21:08 {.L<}/:_ is the inverse 18:21:14 ais523 did a little bit writing a TURKEY BOMB interp beforehand 18:21:15 so ... :D 18:21:33 ehird, it is? turky bomb didn't specify most things about implementation it seemd? 18:21:36 I vote that the interpreter should be called CHICKEN EXPLOSIVE 18:21:36 seemed* 18:21:39 AnMaster: what in particular seems impossible about it? 18:21:40 like "half a bit" 18:21:46 AnMaster: half a bit is easy 18:21:49 just use crazy padding 18:21:56 ehird, err, what? 18:21:57 (i want to remind everyone once again oklotalk is *not* my official terse language! cise is :)) 18:22:18 Cise? 18:22:24 Overload was meant to be mine, but that would require implementing a standard library 18:22:29 (which would contain a sort function) 18:22:35 ehird, the size of some objects too, 18:22:51 AnMaster: some languages have extendable syntax, you can use any base 18:22:54 incidentally, the quicksort I pasted above also shows debug output 18:23:09 slereah_: Cise owns. 18:23:11 oklokok, what about non-unsigned integers? 18:23:24 i should put some examples somewhere 18:23:25 that is, something that isn't an unsigned integer 18:23:34 umm, like what? 18:23:39 oklokok: Cise does not use the wiki, it be not on it :o 18:23:45 do you understand "extendable syntax"? 18:23:46 *own the wiki 18:23:48 ais523: OMG, hexl-mode in emacs lets you use your major mode. I just used nxml-mode with hexl-mode 18:23:56 that's zen 18:23:59 ehird, another thing: PUDDING size: Infinite. impossible to *implement* 18:24:01 HexML? 18:24:05 AnMaster: you mean Amiced? 18:24:13 if so - just store it as a NEGATIVE_AMICED 18:24:25 and store it in any PUDDINGs that don't contain the AMICED in question 18:24:26 also, PUDDING could be done quite trivially in haskell. in C, you just make it the minimum to store its fields, and fake it 18:24:46 hm true 18:25:33 -!- RedDak has quit (Remote closed the connection). 18:25:50 ehird: the ide will be PARROT NUKE 18:25:54 oerjan: haha 18:26:04 ais523: OMG, hexl-mode in emacs lets you use your major mode. I just used nxml-mode with hexl-mode that's zen <-- NICE! 18:26:06 * AnMaster tries 18:26:19 wow indeed 18:26:34 breaks if you add more text though i think 18:26:34 :) 18:26:43 ehird, still, it's pretty :) 18:26:51 yes 18:26:59 can you syntax-highlight the hex? 18:26:59 but nxml-mode thinks the hex is part of the file 18:27:01 so messes up a bit 18:27:01 damn, cannot get Cise upped 18:27:08 ais523: no but the right-hand doc is 18:27:16 nxml-mode is horrid anway, its evil tricksy :) 18:27:30 http://www.vjn.fi/pb/p411124234.txt <<< my official terse language. 18:27:41 ehird, it doesn't work for hexl + shell mode here 18:27:43 weird 18:27:45 ais523: opinions on the name CHICKEN EXPLOSIVE? ;) 18:27:48 AnMaster: shell-mode is too hacky 18:27:50 but try: 18:27:55 M-x shellM-x hexl-mode 18:28:09 ehird, no I mean shell script mode 18:28:13 ah 18:28:14 let me try 18:28:14 ehird: it doesn't trip off the tongue like TURKEY BOMB does 18:28:31 hmm 18:28:32 oklokok: Looks like noise! 18:28:34 you're right, AnMaster 18:28:39 ais523: true 18:28:51 ehird, no idea why it doesn't 18:29:31 ehird, also doesn't work for lisp mode (as in *scratch* buffer 18:29:49 nxml-mode is evil 18:29:51 cise is only my current terse language though, i don't have such an intuitive way to see what's useful for the general graph, so cise pretty much just makes list operations terse 18:29:55 iirc it's a minor mode 18:30:05 tried implementing a red-black tree on it... that was hell :D 18:30:11 oklokok: cise spec? 18:30:13 i'll impl 18:30:34 you don't wanna parse cise... 18:30:57 ehird, I don't even have nxml-mode here? 18:31:12 hehe 18:31:15 you have to parse at runtime in the general case, i think 18:31:16 install it, AnMaster... 18:31:23 it contains an xml parser written in elisp 18:31:24 that's how it works 18:31:27 and it validates on-the-fly 18:31:31 and highlights errors exactly 18:31:33 because correct parsing relies on type checking 18:31:37 oklokok: sure 18:31:38 i can do that 18:31:42 anyway, i'll go buy me some keb 18:31:45 ah emacs-23 has it 18:31:59 ehird, ok, that's eww 18:32:09 i know you can, the real reason is i don't want you to implement my languages before me :D 18:32:39 AnMaster: no 18:32:41 it's brilliant 18:32:45 it is amazing for editing xml 18:32:47 pure bliss 18:32:48 the languages i'm in any way proud of, that is, you can implement yabc if you want... :P 18:32:48 ehird, mixing the modes I mean 18:32:49 ... 18:32:51 but its inner workings, whaow :) 18:33:16 AnMaster: that ' Invalid' thing is actually hacked in by nxml-mode 18:33:45 ehird, also why the brainfuck is emacs-32 ignoring my .emacs file, at least this line: "(setq inhibit-startup-message t)" 18:33:51 it works fine under emacs-22 18:33:59 -32 18:33:59 xD 18:34:04 ehird, err 18:34:06 anyway 18:34:06 23 I meant 18:34:06 its this 18:34:08 sorry 18:34:08 (setq inhibit-splash-screen t) 18:34:20 ehird, err, they renamed it? 18:34:21 sigh 18:34:49 I have emacs aliased in my bashrc to not show the splash screen 18:34:51 ehird, still doesn't work 18:35:17 alias emacs='emacs --no-splash' 18:35:49 AnMaster: #emacs 18:36:01 ais523, err, not really, because I use emacs as emacs-22, and emacs-23 as "whatever snapshot I currently use of that pre-release" 18:36:21 oklokok: aww come on, i want to try cice 18:36:24 so i can fail terribly 18:41:21 ais523: hey you 18:41:26 uhh what was i going to say 18:41:48 :| 18:42:01 how am I meant to know? 18:42:14 magic 18:42:21 ais523: how's BURKEY TOMB for a name? :P 18:42:28 yes 18:43:10 xD 18:43:13 kind of hard to pronounce 18:44:02 'tomb' is a real word 18:44:07 and 'burkey' is easy to pronounce 18:44:44 doesn't roll off the tounge, though 18:46:31 ais523: An Implementation Of Turkey Bomb I Mean Jeez sounds good 18:46:35 AIOTBIMJ 18:46:55 that's even harder to pronounce 18:47:59 Yeah well :P 18:49:06 BURKEY TOMB is rather easy 18:49:13 IMO 18:49:16 ais523: How about Tuberculosis 18:49:26 ehird: the failing terribly sounds like such an egoboost i might just make you a spec ;) 18:49:29 ehird, err "Tuberculosis" is hard 18:49:46 AnMaster: you didn't get the joke 18:49:48 :( 18:49:56 nop? 18:50:01 Turkey Bomb 18:50:01 TB 18:50:06 oklokok: \o/ :D 18:51:25 * slereah_ wrote a cat for the Andrei Machine :D 18:51:40 slereah_, for what? 18:51:49 The Andrei Machine 9000 18:51:56 what is it? 18:52:03 It's a Kolmogorov machine, but with an attempt at I/O 18:52:17 I'm not too sure it can do I/O at arbitrary points, but well. 18:52:36 is andrei your name 18:52:44 It's the name of Kolmogorov 18:52:48 And shorter to write. 18:52:57 and what is a "Kolmogorov machine"? 18:53:04 AnMaster: you are unable to google. 18:53:11 AnMaster: this is serious. we must spoon-feed you information. 18:53:17 ehird, I tried, found wikipedia page on person 18:53:22 but no mention of machine 18:53:30 http://www.esolangs.org/wiki/Kolmogorov_machine 18:53:30 second result 18:53:41 ehird, not in Swedish google :( 18:53:59 don't use swedish google then 18:54:07 ehird, it redirects me to it 18:54:24 The cat would be 0-5,-;0,->0-5,-;0-2,->0-5,-;0-2-6-7-*2,->0-*2,- 18:54:57 AnMaster: there's a button to go to US 18:55:08 Although 0,->0-5,- isn't really necessary, its only for the case where you input /000 18:55:12 ehird, yep, and that redirects me back again straight away 18:55:28 Oh wait, forgot to add the actual output of the value 18:55:33 AnMaster: google.com/ncr 18:55:45 oklokok: ciseeeeeee :-D 18:55:57 :P 18:56:00 ehird, weirdly: redirects 18:56:02 * AnMaster sigjs 18:56:04 sighs* 18:56:12 if i do something coding-related, it'll prolly be about oklotalk 18:56:17 *tonight 18:56:55 oklokok: i just want the spec so i can badly fail to implement it 18:56:55 :( 18:57:12 i don't have a spec yet! 18:57:15 so i'd need to make it 18:57:33 just write a short one :p 18:57:36 i just have a list of currently known functions 18:57:53 perhaps tomorrow. 18:58:04 ehird: maybe I'll send you the Overload interp so far (the first one in C++ that's more advanced), so you can try to write your own saner version 18:58:22 lol 18:58:25 ais523: okies :P 18:58:28 I just got a job offer :D 18:58:37 Judofyr: programming sofa skull? 18:58:50 ehird: no, with Ruby on Rails 18:58:52 ehird's such and implementation whore! 18:59:00 Judofyr: eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeek 18:59:08 oklo! 18:59:10 the problem is that I have to go to school :( 18:59:12 0-5-4,-;0-4,->0-5-4;0-*2|*2-4,->0-*2|*2,-;0-2-6-7-2-4,->0-5-4,-;0,->0-5,-;0-2,->0-5,-;0-2-6-7-*2,->0-*2,- 18:59:15 bsmnt! 18:59:15 Or something 18:59:24 * bsmntbombdood fellates oklo 18:59:28 uuhh 18:59:32 * Judofyr still has 3 years left with school :( 18:59:41 Judofyr: me quit school! 18:59:44 high school? 18:59:47 Remind me that eso-std.org needs a qdb 18:59:49 :D 18:59:54 PRE SCHOOL :O 19:00:17 oklokok: hm... It's a little diffenrent here in Norway, so I don't know... 19:00:24 bsmntbombdood: no you didn't :o 19:00:25 different* 19:00:27 Graphs in ASCII are pretty uninspiring. 19:00:48 slereah_: no if they're made in graphica 19:00:49 yes i did 19:00:49 ehird (and anyone else interested): http://pastebin.ca/928017 19:00:51 *not 19:01:04 bsmntbombdood: no university for you? 19:01:07 nope 19:01:52 oklokok: There seem to be plenty of programs with that name 19:03:06 I'm pondering writing a befunge interpreter in bash, however, I'm not clear on one point, while the size of the playfield isn't limited in Befunge-98, is it "not limited in one dimension, but still limited in the other" or "totally unlimited"? 19:03:24 -!- oklokok has quit (Read error: 104 (Connection reset by peer)). 19:03:30 ais523: you know i would prefer a spec 19:03:31 :-P 19:03:38 -!- oklokok has joined. 19:03:40 AnMaster: It's Funge-98 19:03:40 * ais523 has two partially-complete specs 19:03:51 And don't bother; there are about 20 implementations, only one passes the test suite 19:03:54 and it was written over a yaer 19:04:02 can someone give me a link to the logs 19:04:03 it is an extremely complex langugae 19:04:12 ...or just paste me the few lin 19:04:13 es 19:04:18 ircbrowse.com 19:04:20 oklokok: they're linked from the community portal on the wiki 19:04:36 i'm too lazy for something like that 19:04:38 ehird, then the page http://www.esolangs.org/wiki/Befunge is wrong 19:04:45 ehird, it states "Befunge-98 removes the fixed-size restriction on the playfield, and thus should be Turing-complete." 19:05:05 AnMaster: uhhh, it is TC 19:05:08 but Don't Bother 19:05:11 Writing an interp 19:05:15 It is extremely difficult 19:05:17 ehird, quote from esolang 19:05:21 I didn't say it wasn't TC 19:05:22 ... 19:05:27 Since, you know, since it was released, *only one person has correctly implemented it* 19:05:27 quote from the wiki 19:05:35 Heh 19:05:41 ehird, http://www.esolangs.org/wiki/Befunge#Computational_class 19:05:42 ehird: http://pastebin.ca/928021 is the reasonably-full but vague and confusing spec 19:05:42 So it took about a decade to be implemented correctly. 19:05:44 But maybe AnMaster is a master programmer! 19:05:51 slereah_, I'm not 19:05:56 but will be fun to try 19:05:59 CCBI/Mycology's site seems to be down 19:06:01 A reasonably good programer? 19:06:08 slereah_, "okish" 19:06:09 AnMaster: Even the *person who wrote most of the befunge98 spec didn't get it right* 19:06:11 does befunge have bignums? 19:06:32 Writing interpreters for 2D languages does not seem to qualify as fun. 19:06:43 especially befunge98 19:06:48 well, why am i saying that 19:06:49 it's Funge98 19:06:52 AnMaster: you hear that? 19:06:55 you need to implement N dimensions 19:07:01 ehird: http://pastebin.ca/928023 is the much clearer spec I got less than halfway through 19:07:04 and, again, only one person has got Funge98 right, ever. 19:07:06 ehird, hrrm 19:07:11 And it took them a year, using D and the rich Tango library. 19:07:20 Most of the people here, in Bash? Very little chance. 19:07:29 well I won't do that then, however the original befunge maybe 19:07:31 ehird: that person did manage to correct someone else's interp to get a lot more right 19:07:32 I could manage that 19:07:36 though it isn't TC 19:07:43 and now there's a testsuite, you can continually keep on fixing your first error 19:07:45 befunge-93 is trivial yeah 19:07:51 ais523: still 19:07:54 i wouldnt attempt it in bash 19:08:17 ehird: you have to go off and write an Overload interp now, now I've given you a reference interp and two specs 19:08:21 what's hard to implement about funge-98? 19:08:29 ais523: yes yes ;) 19:08:32 (not that any of them is perfect for understanding the language with) 19:08:33 is it just the n-dimensionality? 19:08:35 oklokok: its very complex 19:08:43 the most complex esolang existing for sure 19:08:47 i should check it out 19:08:49 by many factors 19:08:51 ok what about befunge-98--? ;D 19:09:52 ehird: maybe recent INTERCAL dialects beat it for complexity 19:10:13 with these restrictions I could do it in bash: 1) playfield resricted to two dimensions 2) restricted in width to some fixed amount 3) height not restricted 19:10:18 ais523: doubt it 19:10:22 AnMaster: no 19:10:25 you couldn't 19:10:33 then I could use some cleaver tricks with bash's one dimensional arrays 19:10:42 well known way 19:10:46 no, AnMaster 19:10:50 the language itself is just too comple 19:10:53 there is no way you could do it 19:10:55 ehird: stop being such a pessimist 19:10:58 heck, I couldn't 19:10:58 :P 19:11:01 ehird, so not even same instruction set 19:11:08 there isn't anything all that difficult about it, it's just so extensive that it's easy to make a mistake 19:11:21 also, speed would be terrible 19:11:30 I won't aim at making a fast implementation 19:11:39 AnMaster: http://catseye.tc/projects/funge98/doc/funge98.html 19:11:45 One look at that spec should send you running 19:12:58 ok, befunge-93++ then it is 19:13:06 AnMaster: hehe, did that spec scare you? 19:13:09 sure scares me 19:13:28 What's the syntax to make a footnote on Esolang? 19:13:29 would still be turing complete, by specifying that "height of play field is not limited" 19:13:41 ehird, anyway section "Wrapping" did scare me 19:13:44 slereah_: there isn't one 19:13:48 because Cite isn't installed 19:13:48 Oh. 19:14:00 just use tags to put an asterisk or something similar 19:14:05 and use it as a footnote marker 19:14:12 sup? 19:14:18 superscript 19:14:27 as in this is in superscript 19:15:17 ais523: opinions on Tuberculosis as a TB interp name? 19:15:31 It's not TB. 19:15:58 ehird: if you can somehow get in the tuber=potato thing, then I like it 19:16:00 slereah_: huh? 19:16:07 House reference. 19:16:51 ais523: was that sentence even english? 19:16:51 :p 19:16:57 ehird: yes 19:17:09 'tuber=potato' maybe should have been in quotes 19:17:18 what 'tuber=potato' thing 19:17:21 (sorry, i'm dumb today) 19:17:50 a potato is a sort of tuber 19:18:01 playfield can be limited too, and still it can be tc 19:18:05 and the letters TUBER occur consecutively in Tuberculosis 19:18:08 oh. 19:18:10 potatoculosis 19:18:12 and potatos seem linked to TURKEY BOMB in some way 19:18:18 #tuberculosis 19:18:25 just have bignums, and you don't even need an infinite stack 19:18:32 ehird: stop making random channels and forcing other people to join you there! 19:18:46 hahaha 19:18:47 :D 19:18:49 no, it's fun 19:18:58 besides, you aren't there 19:19:05 yes, i am 19:19:08 #tuberculosis 19:19:11 either that, or it's a secret channel 19:19:23 oklokok just joined 19:19:24 so I can't tell if you're in it without joining it myself 19:19:39 fine, i reg'd it 19:19:51 tuber, cool oasis 19:20:31 "it all starts when a nulevule comes out of its nest" 19:20:32 3 people are in already 19:20:35 it's popular! ;) 19:20:37 *nulecule 19:21:54 -!- Corun has quit ("Leaving"). 19:26:06 -!- Corun has joined. 19:27:55 oklokok! 19:28:30 ! 19:28:51 and don't you fellate me 19:28:58 that's just for bsmnt 19:29:08 Okay. 19:29:08 what? 19:29:11 Where can I find this Graphica? 19:29:30 must be the alzheimer again 19:29:38 Probably. 19:29:41 bsmntbombdood: i'm fairly sure i was being clear 19:29:47 slereah_: i have a spec somewhere 19:29:49 that's why he had to quit school, you see 19:29:57 wait a year or something, i'll get it 19:30:03 What, bsmntbombdood got pregnant? 19:30:11 And you had to drop out of high school? 19:30:31 Got any idea to draw some graphs? 19:30:48 I don't look forward to do them in gimp 19:30:53 * oerjan makes a note not to expect too much of slereah_'s medical knowledge 19:30:58 slereah_: you could use GammaPlex if you wanted something esoteric 19:31:12 oerjan: do you actually know for certain what gender bsmntbombdood is? 19:31:12 Buttbabies, oerjan 19:31:34 ais523: hm interesting question 19:31:59 there have been pictures of him 19:32:20 but certain, of course not 19:32:31 slereah_: try R, perhaps? 19:32:40 http://www.vjn.fi/oklopol/graphica.txt <<< and n-dimensional binary hypercube in case you missed it, slereah_ 19:32:45 that's an example 19:32:50 i cannot find the spec right now 19:33:00 or depending on what you need to graph, I might be able to whip up some postscript, given time 19:33:38 i don't think R is for this kind of graphs 19:33:42 RodgerTheGreat: I really don't want to google R. 19:33:46 says something about statistics in there 19:33:50 slereah_: r programming 19:34:02 wait, do you mean like graph theory graphs, or statistics graphs? 19:34:09 graph theory 19:34:09 Graph theory. 19:34:11 kolmogorov machine 19:34:20 oh, then fuck- R probably can't do that 19:34:32 I recall reading about a python plugin for managing those though 19:34:32 I tried to use Gato, but I can't install it. 19:34:41 I miss some Python modules apparently 19:34:45 RodgerTheGreat: yeah, my graphica interp! :D 19:35:02 "managing" 19:35:11 it doesn't manage 'em, just makes 19:36:14 I thought it came with some handy data structures 19:37:41 isn't gato just for drawing graphs? 19:37:51 I don't know. 19:38:04 Though it would be a good start. I do need some pix to illustrate the article 19:38:27 well, for starters, why the hell would anyone make a language spesifically for the purpose of creating graphs 19:38:43 unless of course as a part of a graph drawing program or something 19:38:49 it'd be awfully.... esoteric... 19:38:53 oklokok: why the hell would anyone make an esolang anyway? 19:39:01 Sexual perversion? 19:39:07 * RodgerTheGreat high-fives ais523 19:39:13 Hmm, sex, what? 19:39:21 Corun: Do you have that on highlight? 19:39:22 all i'm saying there's prolly no big, real, language for that. 19:39:37 real being something not made by me 19:39:44 Heh. 19:40:01 I guess I can just whip up something with Python. 19:40:07 I always end up there! 19:40:18 Corun: you are now in charge of developing a "sexy" programming language. Strike fear into us all. 19:40:30 ayeeeeeh 19:40:33 Penis input? 19:40:51 void main() {} -> I put on my robe and wizzard hat 19:41:06 zz? 19:41:11 also 19:41:13 void main()?! 19:41:19 that won't even COMPILE 19:41:23 you mean: int main(void) 19:41:24 Or would it? 19:41:40 ehird: void main() compiles but is UB 19:41:42 heaven forbid we use simplified illustrations to present a joke 19:41:43 As far as I know, main() compiles on some compilers 19:41:48 as in, you're not supposed to do it 19:42:05 and main(){} is correct C89 (but not correct C99) 19:42:05 RodgerTheGreat: are you saying one cannot be pedantic on #esoteric? 19:42:23 ais523: no no no 19:42:26 func() 19:42:29 IS NOT LEGAL in a prototype 19:42:32 it must be func(void) 19:42:36 I'm simply voicing my irritation about it, as usual. I realize it's inevitable, oklokok 19:42:41 yes, but you can use functions without prototypes 19:42:41 void main() will NOT compile 19:42:49 it will if you put braces after it 19:42:52 RodgerTheGreat: do realize i just said that because you said that some time ago. 19:43:02 because that's a non-prototype declaration of "function taking unspecified args, returning void" 19:43:22 i think everyone should both be pedantic and be irritated about it 19:43:36 main returns int 19:43:47 but int is the default in C89, so you can leave off the int at the start 19:43:50 although I am aware of making that statement, I believe I was being sarcastic. Not that it matters. 19:43:56 (C99 doesn't have defaults, you have to state the data type) 19:44:02 oklokok: i hate it when you say that. btw CAPITALIZE YOUR SENTENCES 19:44:38 RodgerTheGreat: does not matter, no, but were you being sarcastic now or back then? 19:45:06 ah, russell's paradox. 19:45:43 he wioll haven been sarcastic previously afterward 19:46:30 heh, anyway, i don't think you were being sarcastic back then, because you were accused of being pedantic, and that was your response... i just followed the pattern. 19:47:32 there is no pattern. our words make sense purely by trogg. 19:48:34 oerjan: is that a HHGTTG verb? 19:48:42 what's a trogg, besides a person who tries to be a wog? 19:49:14 ais523: more or less 19:49:47 oklokok: it's what i typed when trying to type a random unpronouncable word. obviously i failed. 19:49:59 google gives some WoW link 19:50:49 every word with less than 10 characters has a sexual/drug-related meaning in urbandictionary. 19:51:29 yes. even siojuww 19:52:35 hah, i was _not_ fooled into googling that. nope, never. 19:52:50 That's like 141167095653376 words :o 19:53:07 slereah_: that's modern english for ya 19:53:39 hehe 19:53:41 i have a fun idea 19:53:54 something like urbandictionary, but meanings are generated 19:53:57 Does it involve jello? 19:54:02 that too. 19:54:25 jello looks _so_ like a random letter combination 19:54:31 oklokok: i can trivially write that 19:54:37 markov chain + urbandict DB dump = fun and laughter 19:54:42 :) 19:54:56 well, that's an easy but sucky way to do it 19:55:05 :( 19:55:08 you can probably make it correct english. 19:55:29 most of urbandictionary is not correct english 19:56:23 okay, you can make everything actually have a meaning. 19:56:32 correct that way. 19:57:42 ditto 19:58:08 Ditto: A popular lottery in New Zealand 19:58:35 Holy shit, Gygax is dead 20:00:20 * ais523 checks Slashdot to confirm 20:00:38 * oerjan checked wikipedia 20:00:47 ..gygax 20:00:47 ? 20:00:50 * ehird is dum 20:00:54 Gary Gygax 20:00:56 Gary Gygax 20:00:58 D&D guy 20:03:14 ehird: because you're probably the second most interested in my oklotalk interp in the world: it currently does both static and dynamic scoping perfectly, i think, ran ``s``s`ks``s`kk``skk`k``skk on it 20:03:40 hah 20:03:42 oklokok: src? 20:03:45 the dynamic scoping should work too, sk ofc doesn't tell anything about that. 20:03:48 :o 20:03:52 you do not want to see it. 20:04:01 Hm. I wonder if it would be easy to run some combinators in the Andrei Machines. 20:04:29 As a tree or something 20:04:35 for one, the interp is so slow you would cry. 20:04:46 i dooo 20:04:47 i like slow 20:04:49 heh 20:05:17 not that it actually matters, but i'll only show it in priv, and don't want you to spread it. 20:05:56 heh 20:05:58 ok :p 20:06:49 -!- oklokok has changed nick to oklopol. 20:11:28 -!- olsner has joined. 20:12:43 Does GIMP have a tool for basic shapes, or should I look for another program? 20:33:48 slereah_, inkscape? 20:33:58 I'll try it. 20:46:13 -!- Corun has quit ("Leaving"). 21:06:40 oerjan: ping 21:07:31 gnidllgnafnoopeepeepsnapfiongflipspIONG 21:07:46 oerjan: erm. 21:07:56 I was just wondering if you had any ideas how to represent a BI_IT and similar 21:08:14 you can pad them to an integral number of bits but you'll have trouble finding reasonable data to put in them anyway 21:08:16 since i don't know what it _is_... 21:08:26 half of a trit + two-thirds of a bit 21:08:39 you can combine 6 of them to get a data type consisting of 4 bits and 3 trits 21:08:47 oerjan: read TURKEY BOMB spec 21:09:03 oops 21:09:27 well, a trit = ln 3 / ln 2 bits 21:09:33 convenient link: http://catseye.tc/projects/turkeyb/doc/turkeyb.html 21:09:39 :p 21:10:15 1.45914791702724 bits 21:10:38 oerjan: yes. 21:11:14 strange, I make it 1.5849625007211563 bits 21:11:15 so in one you can save a bit + a little more 21:11:18 (according to ghci) 21:11:28 (log 3/log 2)/2 + 2/3 ? 21:11:38 oh, I just calculated log 3 / log 2 21:11:54 agree with you on the size of a BI_IT 21:12:02 the next two decimal places are 4 and 8, apparently 21:12:31 hmm... is it usual for people to use ghci for quick calculations? 21:12:44 well i just used hugs :) 21:12:44 haskell isn't known for being good at, well, arithmetic 21:12:45 :-) 21:13:00 but it _is_ 21:13:01 (I think this should be resolved with matlab. ;P) 21:13:05 haskell is good at arithmetic 21:13:11 ais523: yes 21:13:15 it does bignums automatically 21:13:17 as long as you don't want weird functions 21:13:18 umm 21:13:27 bignums automatically is an idea from the 50s 21:13:28 :-) 21:13:38 yes, but how many calculators actually do it? 21:13:43 uhhh 21:13:48 all of them? :/ 21:13:59 most don't 21:14:06 Windows Calculator, for instance 21:14:13 or pretty much any handheld electronic calculator 21:14:40 um, i meant ones on a compooter 21:15:04 dc seems to do bignums, though 21:15:40 Google calculator doesn't, instead rounding large numbers to floating-point 21:15:56 every language does bignums 21:16:15 * (+ (/ (/ (log 3) (log 2)) 2) 2/3) 21:16:15 1.4591479 21:16:15 in conclusion, oerjan is right 21:16:18 what SBCL says goes :-P 21:16:18 not all of them do by default, or easily 21:16:21 the problem is arbitrary precision reals 21:16:30 SBCL? 21:16:37 from the syntax I guess it's a Lisp variant 21:16:37 ais523: Steel Bank Common Lisp 21:16:48 ais523: not all, but most good ones. 21:16:49 the best open-source Common Lisp implementation, IMO :) 21:16:57 * ais523 fires up flonck 21:17:09 if a language does not do them, it either sucks, or is some low-level wongomadol 21:17:20 SBCL descended from CMUCL 21:17:28 'The name "Steel Bank Common Lisp" is a pun on Carnegie Mellon University Common Lisp from which SBCL forked: Andrew Carnegie made his fortune in the steel industry and Andrew Mellon was a successful banker.' 21:17:54 wongomadol: The capital of Southern Zambesi 21:18:09 oerjan: you sure know a lot :o 21:18:17 what would half a bit of information be? 21:18:28 ( to | 21:18:30 err 21:18:32 ( to ` 21:18:36 but a backwards ` 21:18:39 i can't enter those 21:18:46 would there be a possibility of the info being wrong or what... 21:18:53 i can't quite get on top of it 21:19:00 Half a bit of info: ( to ` 21:19:03 err 21:19:04 wait 21:19:07 i don't get that 21:19:13 oklopol: 0 ( 21:19:18 1 ` (imagine the ` is backwards) 21:19:21 (´ 21:19:29 half a bit of information is the amount of information in knowing that an event of probability 1/sqrt 2 occured. 21:19:30 now wtf does that mean? 21:19:46 ah. 21:19:56 oklopol: ... 21:19:56 wait... 21:19:57 no 21:20:06 WHOLE BIT --- HALF BIT 21:20:08 0 --- ( 21:20:09 1 --- ` 21:20:14 It's half of the digit. 21:20:23 oh, it's a joke :D 21:20:35 sorry, was assuming it was an unlambda reference 21:21:28 ais523: underlambda. do the tiers have a spec yet? 21:21:54 hmm, i need to think about this half-a-bit crap, you might be able to get something interesting out of it 21:22:05 turkey bomb has something like that? 21:22:22 ehird: 1, 1a, 2, 2a 21:22:36 ais523: ESOification? :D 21:22:37 although I'm planning to move S from 1 to 2a because it fits more logically there 21:22:55 ehird: yes, eventually 21:22:56 let me work out the size of a BI_IT using flonck first 21:23:03 ais523: Can I make overlambda? :P 21:23:05 I've got the output, now just need to translate it into decimal :) 21:23:07 ehird: yes 21:23:18 @define flonck 21:23:22 damn, we need Endeavour in here 21:23:25 oh wait i didn't write it yet 21:23:26 :P 21:24:47 hmm... it gave me an output of 0.666666, which is obviously wrong 21:25:00 @define flonck 21:25:08 ehird: an RPN floating-point calculator written in INTERCAL-72 21:25:35 wow 21:25:56 ais523: what would overlambda be, by the way? :P 21:26:05 no idea 21:26:20 oklopol: Cise spec? :D 21:26:22 I want to fail terribly! 21:27:05 oh, you :) 21:27:14 tomorrow isn't until like 30 minutes 21:27:24 I CAN'T WAIT 21:27:24 :( 21:29:46 hmm... there seems to be something wrong with flonck's implementation of ln 21:30:28 ah, I was writing ln 20 / ln 30 by mistake 21:30:30 oklopol: aww come on :( 21:30:33 which is quite different 21:32:27 J 21:32:35 s/.*\n// 21:33:03 I now get an answer of 7.35053 21:33:06 which is also wrong 21:33:15 hmm... flonck is really hard to use 21:33:26 and floating-point output in Roman numerals is not very understandable either 21:34:00 (6 decimal digits mantissa, one bit sign, and 1 base-5 and 1 base-10 digit for exponent) 21:34:02 ais523: i need to write my calculator sometime 21:34:12 it would be like a programming language but specialized for quick calculator stuff. 21:34:13 (but written in Roman numerals) 21:34:20 it would have infinite-precision floating-point numbers, too 21:34:22 <3 gmp 21:34:39 oh, and it would allow stuff like the google calc 21:34:44 pseudo-english input 21:34:48 e.g. '2*3 in binary' 21:34:56 110 21:35:16 sorry, I thought I was in #irp for a moment 21:35:19 oh 21:35:20 and this: 21:35:21 http://www.google.com/search?q=number+of+horns+on+a+unicorn+acre+in+tea+spoons+per+light+year 21:35:53 they've been adding more silly units into it again, I see 21:35:54 what is that from? 21:36:08 bsmntbombdood: it was on reddit a while back 21:36:23 ais523: it makes sense, actually 21:36:32 'number of horns on a unicorn' is admittedly a joke unit 21:36:34 it's 1, of course 21:36:37 so LHS = 1 acre 21:36:40 now 21:36:46 'X per Y' will be handled automatically 21:36:50 teaspoons will be in there for cooking 21:36:55 light year for obvious reasons 21:37:00 I was referring to the unicorn unit 21:37:03 the rest make sense 21:37:05 so, the only joke unit involved is 'number of horns on a unicorn' 21:38:12 I wonder if they'd heard of the fortnight/furlong/firkin system of measurement? 21:38:39 mostlikely 21:39:04 http://www.google.com/search?aq=f&hl=en&safe=off&q=1+furlong%2Ffortnight&btnG=Search 21:39:23 hmm... why do you have safe=off in that URL? 21:39:50 ais523: his prefs include it? 21:39:52 dunno 21:40:02 ehird: if they do, that's somewhat revealing 21:40:13 'dunno' is probably the best response 21:40:23 http://www.google.com/search?q=number+of+horns+on+a+unicorn+baker%27s+dozens+answer+to+life%2C+the+universe%2C+and+everything+baker%27s+dozen+acres+in+tea+spoons+baker%27s+dozen+per+light+year 21:40:33 ais523: safesearch is a pretty bad idea no matter what.. 21:40:41 esp. since it could filter out legit results 21:41:05 also, i have no idea what anyone could do with the 'revealing' info that someone has turned off safesearch. 21:41:08 perhaps blackmail them. 21:43:38 this gets me wondering whether Google have been persuaded to write an antifilter 21:43:50 which only returns results that safesearch would have filtered out 21:43:56 some people might be interested in that too... 21:44:48 ais523: a funny common lisp thing -- 21:44:54 the special form THE 21:44:58 (the TYPE THING) 21:45:03 its a type hint to the compiler 21:45:13 i.e. 'this will always be a TYPE, stop yer checks' 21:45:16 why is it amusing? 21:45:18 (the fixnum 5) 21:45:26 (the list '(1 2 3)) 21:45:29 pseudo-english 21:45:44 can that be implemented with (macro)? 21:46:26 ais523: of course not. 21:46:32 it's an internal compiler thing 21:46:37 it doesn't have to listen to it 21:46:39 but e.g. 21:46:45 (the fixnum 928374892347982347923847239847238947234234) 21:46:50 will, in most compilers, be ... not that 21:46:58 it's best used in cases like 21:47:01 (the fixnum (+ a b)) 21:47:07 (I'm still trying to argue my point about (macro) not fitting well in Lisp) 21:47:26 ais523: if the compiler provides enough hooks you could define it with defmacro 21:47:53 but whatever, you are wrong. it might not fit with what you want in a paren-filled language, but Lisp is all about macros. you're just saying 'i don't like macros', not 'macros are unlispish' 21:48:38 there is a subset of this channel that should avoid reading today's xkcd... 21:49:04 I know how to tell if you are int this subset ... 21:49:07 really? link! 21:49:21 but to tell you would cause exactly the problem that avoiding reading today's xkcd would cause 21:49:22 oklopol: it's about losing the game 21:49:28 lisp is all about scaring the user away with 50-year-old conventions, fragmented community, half-crazy evangelists, weird syntax and an overall air of nuttyness 21:49:29 tee hee 21:49:32 ehird: I like them in some cases, but the rest of Lisp seems like the wrong language to put them in 21:49:48 there is a new xkcd today? 21:49:52 http://www.google.com/search?q=1+teaspoon+in+megaparsec+barns 21:49:56 SimonRC: is it uncontroversial, well-sourced proof that the Game exists? 21:49:59 oerjan: yes, it's about losing The Game 21:50:05 because Wikipedia have been looking for that for a while 21:50:07 ais523: it is a definition 21:50:12 SimonRC: lol 21:50:28 ais523: well, those people are idiots :) 21:50:33 unfortunately, xkcd probably isn't a sufficiently reliable source 21:50:37 The Game undisputably does exist and it's very popular 21:50:44 ehird: yes, but can you /prove/ it 21:50:58 s/$/?/ 21:50:58 -!- Judofyr has quit. 21:51:00 someone mentionned an origin on the XKCD forum thread 21:51:05 or at least hinted at an origin 21:51:13 ais523: you can't *prove* anything 21:51:15 I'm pretty sure that your statement is true, but finding reliable sources has proven very difficult 21:51:29 well, sure. the game is by definition entirely grassroots 21:51:35 oh, and BTW, for any game, there exists another game with the winnign and losing conditions reversed 21:51:39 ehird: use the Wikipedia definition of 'find that it's stated in at least two reliable sources independent of the source itself' 21:51:50 SimonRC: yes, that game is actually played at a roleplaying group I help to run 21:51:50 so there is a game that you win whenever you lose The Game 21:51:56 assuming The GAme is a game 21:52:02 SimonRC: I just won The Antigame!!!!! 21:52:03 \o/ 21:52:13 ais523: yeah, um, you're not going to find that 21:52:16 it's a popular mind game 21:52:17 little else 21:52:17 except that the first person to remember the existence of the Anti-Game wins it, and announcing the fact causes everyone within earshot to lose 21:52:23 now, I just need to go back in time and invert the "win" game before The Game gets invented 21:52:31 ais523: ah 21:52:31 it probably deserves a WP article 21:52:34 but it isn't highly notable 21:53:01 er i still won 21:53:06 oerjan: huh? 21:53:12 * oerjan wonders what this is all about 21:53:24 * oerjan visited the xkcd page 21:53:25 oerjan: see forum thread, post #1 21:53:35 ehird: http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/The_Game_%28game%29_%286th_nomination%29 21:53:46 (that URL was retyped, so I may have got it wrong) 21:53:46 oerjan: The Game. 21:53:53 do not read more that the first few posts though, as there are some very evil posts in that thread 21:53:54 286th nomination 21:53:55 :-D 21:54:00 6th, actually 21:54:04 yes 21:54:05 but it took that many before it was deleted 21:54:06 ubt it looks funny 21:54:07 Also 21:54:11 'The Game (game)'?! 21:54:13 xD 21:54:18 The Game (non-game) 21:54:25 actually, reading the whole thread didn;t harm me 21:54:27 haha 21:54:29 ehird: disambiguator 21:54:34 ais523: a ridiculous one 21:54:34 :-) 21:54:39 it might make you lose a lot more over the next few weeks though 21:54:56 I don't play 21:55:08 ais523: Everyone starts playing the moment they learn of The Game's existance. 21:55:09 many people playing think the third rule compels me to play, but as I'm not playing I'm not bound by it 21:55:09 ais523: to be accurate, you don't obey the rules 21:55:12 You do not have a choice. 21:55:24 the rules compel people to believe that, but they are wrong 21:55:29 That's not a rule. That's just The Game. 21:55:29 hmm 21:55:38 because the rules don't bind people until they start playing 21:55:40 By its definition, it is a game whose participation is required after learning of its existance. 21:55:46 The rules are just by-notes. 21:55:54 admittedly, once you start, it's theoretically impossible to stop without forgetting the rules 21:55:59 ais523: please stop trying to climb throught the keyhole and just open the damn door. 21:56:08 ehird: it's a game, not a law of physics 21:56:20 the definition of winning the game is a definition in the mathematical sense 21:56:22 BUT 21:56:28 the game cannot escape that greater rule binding all games, just as a side-effect-less function in haskell simply *cannot have side-effects*, both are run in microcosms bounded on an upper level 21:56:31 you are not compelled to obey the rules 21:56:35 SimonRC: AFAIK it's impossible to win the original game 21:56:39 ais523: No. 21:56:40 ais523: yes 21:56:58 oklopol: you are wrong 21:56:59 ehird: what statement of mine did you just try to object to? 21:57:06 ehird: no i'm not 21:57:09 ehird: oklopol was right 21:57:23 except for unsafePerformIO, of course 21:57:26 factorial n = if n == 0 then 1 else unsafePerformIO (putStrLn "SIDE-EFFECT") `seq` n * factorial (n-1) 21:57:27 :P 21:57:28 hehe :) 21:57:33 oklopol: I win. 21:57:39 okay, okay, you won this round 21:57:42 OK unsafePerformIO isn't standard but every interpreter and compiler implements it 21:57:47 but i'm fairly sure i had a point, still 21:58:04 I agree with oklopol's point even if the statement has factual problems 21:58:31 the definition of playing the game is to have heard of it, BUT there is no compulsion in the general case to obey the rules just because something called "playing the game" is defined as what you are doing 21:58:40 sudo the-game --daemonize 21:58:45 No longer in its jail! 21:58:56 OK, so we're all bound by it now since I just introduced you all to it by starting it as a root daemon. 21:58:59 Now you all must play, 21:59:01 Yay. 21:59:10 root priveliges don't carry over IRC AFAIK 21:59:20 if they did, it would be a massive security risk 21:59:26 ... so, by the definition of the rules, I am playing the game, BUT i am not obeying the stated rules 21:59:26 as well as being somewhat hard to implement 21:59:43 the rules themselves have a factually incorrect view of reality 22:00:08 ais523: that was on god@universe 22:00:13 that is another idea too: the original statement of the rules had a major misprint in them 22:00:17 my message was just informing you that i'd done it 22:00:25 and to introduce you all to the game (which is now a new instance) 22:00:27 thus, you are all playing it. 22:00:32 * ais523 chooses not to believe ehird 22:00:35 :( 22:00:43 summary: "I must obey the rules of The Game must I? Or else what?" 22:01:28 hmm 22:01:48 or else... 22:01:55 well, let's just say god@universe has kill(1) 22:02:01 or else I will hit you with an ellipsis 22:02:14 I wonder if I can beat some of the posters on that thread for "suggestion that is most likely to make someone keep losing the game every 5 mins for the next week". 22:02:32 SimonRC: The Game porn 22:02:32 * SimonRC recalls the Basil puzzle. 22:02:33 free 22:02:37 that's the problem with laws, in most peoples' eyes, nothing can be forbidden, things can only have a punishment. 22:02:41 that gives away free iphones 22:02:47 loaded with the porn as the theme & homepage etc 22:03:03 oklopol: well, things can help or hinder one's objectives 22:03:12 a poster campaign? 22:03:15 oklopol: I'm quite handy with attaching gdb to a process and poking at memory... 22:03:19 I will MAKE ais523 obey! 22:03:19 a prime-time TV ad? 22:03:49 SimonRC: an IRC nickname? 22:03:58 ais523: yes! 22:03:59 -!- ehird has changed nick to TheGamehird. 22:04:06 -!- SimonRC has changed nick to YouJustLostTheGa. 22:04:20 YouJustLostTheGa loses 22:04:23 -!- YouJustLostTheGa has changed nick to SimonRC. 22:04:23 YouJustLostTheGa: is there a limit on nickname length? 22:04:32 yes 22:04:33 hehehe, I just made about 1000 pweople lose 22:05:00 SimonRC: i don't see what you mean 22:05:06 ehird: i don't see what you mean 22:05:14 presumably SimonRC was in more than one channel 22:05:27 * ais523 just tried to tab-complete the word 'presumably' 22:05:30 highlighting me ? 22:05:44 -!- TheGamehird has changed nick to UJustLostTheGame. 22:06:09 ais523: wow, vi is actually pretty cool 22:06:13 oklopol: yes 22:06:19 UJustLostTheGame: also yes 22:06:22 interesting. 22:06:24 the external file filtering is actually pretty cool 22:06:26 but I haven't really learnt to use it 22:06:26 saw this on reddit: 22:06:30 if you're editing a file 22:06:32 :%!xxd 22:06:37 and it's very beginner-unfriendly 22:06:37 xxd prints out a hex dump of the file 22:06:46 edit the hex stuff (formatted just like a regular hex editor) 22:06:48 then: 22:06:51 :%!xxd -r 22:06:53 and it goes back 22:06:55 even worse than Emacs in that respect 22:07:05 i never thought of using filtering for stuff like that 22:07:20 -!- oerjan has quit ("Good night"). 22:07:24 and the coolest thing, of course 22:07:32 is that you can use vi's moving commands to use it efficiently 22:07:38 wow 22:07:41 hl -> bw 22:07:47 and you go one hex block at a time 22:07:55 I think that comes to almost 1000 people simultaneously 22:07:59 surely a record... 22:08:18 SimonRC: were you busy counting how many people were in all the channels you were in? 22:08:20 but an admin must have read it, and they might be about to /wall 22:08:22 ... 22:08:24 ais523: yes 22:08:43 hmm 22:08:48 i'm going to join #ubuntu 22:08:50 what we need to do now is get [[The Game (game)]] as Wikipedia's front-page featured article 22:08:53 and try it there 22:09:09 but you'd need loads more sources for that to happen 22:09:14 maybe Everything2 would be easier 22:09:19 yea, about 800 people just saw my nick change 22:09:23 ais523: i'll try :P 22:09:27 I bet severl will copy it 22:09:29 acutally no 22:09:32 i'm too lazy 22:09:43 hey -- is anyone here an ircop on a relatively big network? 22:09:52 /wall You just lost the game. 22:09:53 :-) 22:10:03 you would so get in trouble for that 22:10:11 bah 22:10:14 not if it was efnet 22:10:16 :P 22:10:20 just like a Wikipedia admin would get in trouble for putting it in the sitenotice 22:10:33 -!- RedDak has joined. 22:10:38 efnet is anarchic 22:10:39 (no, I'm not going to do that, no matter how hard you try to persuade me) 22:10:56 * SimonRC imagines the headlines: "Wolphram Prize Winner starts wave of Game-Losing" 22:11:18 * ais523 wonders how annoyed Wolfram Research would get at the misspelling 22:11:23 oops 22:11:31 ais523: you are that guy, right? 22:11:34 yes 22:11:56 * SimonRC ponders bashing the time around when he changed his nick 22:12:12 how often is #esoteric bashed, anyway? 22:12:17 probably not often enough 22:12:43 and bashing it would actually tie into the point of the thread, ironically 22:12:47 ais523: ummm 22:12:51 i assume he means a diff. network 22:12:52 (does IRC have threads?) 22:12:59 kinda 22:13:00 there's not 800 people in here 22:13:11 UJustLostTheGame: I am in many channels 22:13:23 [22:13] [Whois] SimonRC is a user on channels: #esoteric 22:13:25 all of which are apparently secret apart from this one, or on different networks 22:13:28 ah 22:13:29 #uncyclopedia #haskell and #nethack being the major contributors 22:13:33 um 22:13:36 they're not secret 22:13:38 and you're not in them, SimonRC 22:13:45 yes I am 22:13:51 go visit them 22:13:51 well 22:13:54 /whois disagrees 22:14:07 /whois is cencored 22:14:10 *censored 22:14:18 SimonRC is in #haskell 22:14:22 I just nipped over there to check 22:14:24 i don't see the game in wikipedia 22:14:32 bsmntbombdood: it was deleted after 6 AfDs 22:14:39 the previous 5 didn't get enough consensus to delete it 22:14:43 oh 22:15:07 afd? 22:15:23 Articles for Deletion 22:15:30 where people debate about whether to delete an article 22:15:30 ah 22:15:35 hmm 22:15:44 eso-std.org should have an irc network, but that would fragment the community :-) 22:15:45 normally it's clear-cut delete or keep (or sometimes merge, redirect or transwiki), but not in this case 22:15:55 ais523: 'normally'? hardly 22:15:55 :p 22:16:11 UJustLostTheGame: write a pair of bots that copy all conversation from each channel into the other 22:16:14 As some wit said: "The human hand has 5 fingers [citation needed]" 22:16:23 and UJustLostTheGame: yes, it is normally clear-cut how to close an AfD 22:16:31 ais523: such bots exist 22:16:31 ais523: well sure 22:16:33 but ... that's kinda ugly 22:16:35 :P 22:16:37 ais523: they can tie networks together 22:16:40 one channel is far nicer 22:16:49 let's all migrate to eso-std.org#esoteric 22:16:49 :D 22:16:53 apparently in some places there's a craze of people carrying around small adhesive [citation needed] signs to stick on adverts 22:17:19 there was one such bot in the OTTD channel for a whiloe 22:17:19 ais523: xkcd. 22:17:22 *while 22:17:26 there was an xkcd comic on that 22:17:29 and now people are copying it 22:17:35 ais523: he waves it at a political speech 22:17:43 Randal is going to get power-mad some day 22:17:52 I mean, he just took on The Game 22:20:11 *pause* 22:20:36 All you need is one disgruntled Google employee (with access to the front-page image)... 22:20:48 oh, wait, "disgruntled Google employee" is an oxymoron 22:20:52 bugger 22:21:03 you could put it in the adverts at the bottom of Hotmail messages 22:21:14 that would only require a disgruntled Microsoft employee, which is much more likely 22:21:39 ais523: simon peyter jones is a MSofties 22:21:43 hmm 22:21:52 nah MS research isn't real MS 22:22:06 hehe 22:23:27 anyone here checked out DragonFly BSD? 22:23:32 its checkpointing stuff looks awesome 22:23:34 why? 22:23:36 + the virtual kernels 22:23:38 cool 22:23:47 SimonRC: smalltalk-like imaging of any process 22:23:51 * SimonRC want's hot-swappable kernels 22:23:56 & chroot jails and such are replaced with virtual kernels 22:23:57 *want 22:23:59 *wants 22:24:18 _why uses it as his main OS 22:24:28 & is maintaining a ruby binding to those nifty dfly stuff 22:24:47 ooh, maybe the front page of slashdot would be good... 22:25:09 nah, most of the people there probably play it already 22:25:21 hmm... what about making it pop up in a Windows Update dialog box? 22:25:44 ais523: i had an idea for bignum libs 22:25:53 ais523: good point 22:25:57 since you need internal bookkeeping even gmp has max-digits 22:26:06 what if you stored bookkeeping nums as bigints? 22:26:09 turtle bignum! ;) 22:26:28 UJustLostTheGame: just store it using base-Fibonacci or some other self-delimiting number scheme 22:26:32 then you don't need delimiting info 22:27:04 but a decent philosophical analysis of The Game might make the front page of slashdot and digg... 22:27:08 hmm 22:27:54 is savethegame.org still running? 22:28:03 dunno 22:30:51 -!- ais523 has quit ("what oerjan said"). 22:31:23 ? 22:31:35 Well, the first version of the Andrei Machine's specs is posted. 22:31:44 I should prolly go to bed. 22:35:35 UJustLostTheGame: look back up... 22:35:46 "22:07:20 -!- oerjan [n=oerjan@hagbart.nvg.ntnu.no] has quit ["Good night"]" 22:35:53 slereah_: where 22:36:29 http://www.esolangs.org/wiki/Andrei_Machine_9000 22:37:06 ok 22:37:15 slereah_: is 9000 your trademark? 22:38:12 It's based on the Gruntmeister 9000 in the Dilbert cartoon. 22:38:49 wuzz that 22:39:47 oklopol: it's that one with the engineer with the wonky tie 22:39:49 ;-) 22:40:06 i know *dilbert*, just not gruntmeister 22:40:08 :) 22:40:18 It's from the animated series. 22:40:41 although dilbert actually has some weird-ass translation in finland, so i could well have not known that 22:40:44 There's a bunch of them centered around their next product, the Gruntmaster 6000. 22:41:24 Then one day, the competition announces a product of their own, the Gruntmeister 9000 :o 22:41:43 i liked 9000 better as your trademark 22:41:48 please make it that 22:41:53 * slereah_ erases oklopol memory 22:41:56 :P 22:41:59 It's my trademark, bitch. 22:42:45 love machine 9000, andrew machine 9000, will we be seeing something *original* soon? 22:42:55 Well, there's Lazy Bird! 22:43:06 was lazy bird 9000 original in some way? 22:43:11 And the never finished Clockpunk! 22:43:19 that i've never even heard about 22:43:23 Also the soon to come Volterra. 22:43:32 that i've never even heard about 22:43:49 Although those two, I'm not sure if they're Turing complete, or even useful in some way 22:43:59 Volterra is based on animal populations as datas. 22:44:14 It's easiest program will be the Fibonacci! 22:44:27 *its 22:44:39 heh 22:45:02 Clock Punk uses clocks as datas. 22:45:15 you prolly get primitive-recursive functions out of volterra 22:45:16 It is painfully slow, inefficient and unportable. 22:45:34 if it's anything like i imagine 22:45:53 Well, I thought of it today, so I'm open to suggestion. 22:46:21 well, first of all you want "o" to be the basic "creature" 22:46:26 o is a nop 22:46:27 So far, you have to define the animals. Their original populations, reproduction rates, predation conversion. 22:46:29 oo is fibonacci 22:46:56 parens someway separate populations 22:47:05 how is that fibb? 22:47:06 and populations fight when barriers crash 22:47:09 And then, once you haver that, you give a list of instructions 22:47:19 barriers crash when the population inside them gets too big 22:47:30 then the population gets smaller, and barriers can rebuild. 22:47:40 SimonRC: they will mature up, and start breeding 22:47:51 because they belong to the same initial population, they shall not fight 22:47:55 and thus live forever 22:47:58 As the name implies, it's based on the Lotka-Volterra equation. 22:48:11 obviously 22:48:12 So it's a very simple model. 22:48:21 It's also on a discrete version of it. 22:48:28 * SimonRC looks it up 22:48:54 You've got n populations. herbivores at the bottom, and then, n eats n-1 22:49:04 oh, fun 22:49:18 unbounded storage? 22:49:29 The herbivores have a reproduction rate. an individual gives birth to puppies and kittens or whatever. 22:49:30 surely you can't even do list indexing in it? 22:49:50 The predators converts food into babies 22:50:02 Well, it's only an idea so far 22:50:25 hmm, your clockpunk idea sounds fun actually: each variable increments every time an instruction is executed. 22:50:31 A stupid one, and actually similar to Clock Punk. 22:50:45 a cat would need to compensate for the ticks taken between input and output for example 22:50:51 Both are time changing variables. 22:51:12 Yes. Clockpunk has huge problems for that 22:51:16 Even for Hello, world 22:51:17 i don't really like the idea of numbers for volterra 22:51:28 -!- sebbu has quit ("@+"). 22:51:38 but whatever moves your bowels 22:51:41 where is clockpunk? 22:51:41 as they say 22:51:58 Clockpunk has an interpreter, of sort, if you want 22:52:02 But it isn't complete yet 22:52:08 ah, ok 22:52:18 It still lacks the conditional jump. 22:52:29 Or maybe not. Maybe it's just not complete 22:52:31 I forgot 22:52:53 http://membres.lycos.fr/bewulf/Russell/Clockpunk.py 22:53:23 There's two symbols. - waits for one time period, * executes an instruction. 22:53:38 The instructions depend on the value of the clock, mod 8 22:53:53 ah, ok 22:53:59 not like my idea quite then 22:54:14 What was your idea? 22:54:26 Just clocks as variables? 22:54:32 yesish 22:54:45 It's actually a better idea, since you can use conditionals 22:54:51 And actually have inputs. 22:54:59 TBH I think keeping track of how long everything took would be quite hard enough 22:55:22 Plus, with multitasking, it might even be impossible! 22:55:28 if one branch of an if takes longer than another, the compensation must differ 22:55:50 but the clock ticks must be defined in the language 22:56:10 Well, if it is, it would just be a Turing machine where the cells increase at every step. 22:56:10 this makes everything slow down proportional to space consumption 22:56:13 Not very clocklike 22:56:19 slereah_: hmm 22:56:32 very like a computer clock though 22:56:53 Isn't it just a regular clock inside? 22:57:07 (When I say regular, I mean a quartz cristal) 22:57:33 hmm 22:57:45 ok, maybe like the x86 instruction counter then 23:02:17 * slereah_ was thinking of three variables for Volterra. 23:02:26 Sheep, wolves, and BEARS 23:02:42 Bears do not attack wolves, but they can through the rule of cool 23:03:34 slereah_: also add some nopular birds 23:03:53 So they can do functions? :o 23:04:08 nopular == one that performs a nop 23:16:43 -!- timotiis has quit ("leaving"). 23:18:15 no 23:18:18 add lazy birds 23:18:20 (birii?) 23:19:01 I'm not sure combinators would fit well in the context! 23:21:45 birii -> virii 23:21:48 add lazy viruse 23:21:48 s 23:24:13 heh, right, lazy birds... birds just happened to be the most apparently nopular creature i could think of 23:26:36 birds referring to the lambda-calculus-with-birds thing, right? 23:27:00 Combinators, yes. 23:27:22 yeah, that's the reference i didn't get from what i said myself 23:27:33 which is kinda weird. 23:37:33 hmm... i'm fairly sure i just invented directed acyclic graphs... 23:37:47 i hate living in this century 23:39:03 but at least this mathematics i'm doing with it just *has* to be new, because no one prolly investigated dags that much! 23:40:54 3 = 33 ascii 23:40:55 in hex 23:40:55 cool 23:41:20 n = 3n in ascii, isn't it defined on that? 23:41:58 same goes for letters ofc, except letters are one-based 23:42:47 well still :( 23:42:53 oh, indeed 23:43:11 A 1..10 scale in hex is one of the few places where an E is good 23:43:24 A is not so good, and 7 rather sucks 23:43:28 etc 23:44:28 zzzzz 2008-03-05: 00:05:34 -!- olsner has quit ("Leaving"). 00:14:27 -!- UJustLostTheGame has quit (Remote closed the connection). 00:14:57 -!- ehird has joined. 00:26:19 -!- jix has quit ("CommandQ"). 00:32:54 -!- RedDak has quit (Remote closed the connection). 00:40:43 -!- Sgeo has joined. 01:39:10 All in favor of me writing an OS? 01:39:26 No. 01:39:27 * pikhq shouts 'Aye' 01:40:05 No. 01:40:07 I tried it once. 01:40:12 It's not exciting. 01:40:13 Or fruitful. 01:40:16 And where'd you get stuck? 01:40:26 At the part where it became terminally boring. 01:40:34 . . . Which is? 01:40:36 so right at the start, then :) 01:41:04 I'm for it, as long as I'm not you. 01:41:23 lament: And all the way through. 01:41:35 Regular OS, or eso OS? 01:41:44 I dunno. 01:41:49 Esomic is quite tempting. 01:42:27 ATM, I'm just fiddling with basic routines for doing text mode without the BIOS. 01:44:35 pikhq: think: it's a LOT of fairly meaningless porting work. 01:45:04 lament: I think I noticed already. 01:45:21 I'm terminally bored, though. Might as well do *something* with that terminal boredom. 01:49:14 design a really cool non-esoteric programming language 01:49:29 a better lisp, perhaps :) 01:50:02 to qualify, it has to be better than anything else in existance. 01:50:36 -!- ehird has quit ("Konversation terminated!"). 01:50:52 Non-esoteric? Doesn't that require a lot of instructions? :o 01:51:23 What's the shortest instruction set for a non-esoteric language that isn't machine code? 01:54:36 machine code languages probably have the biggest instruction sets 01:54:51 That depends: what do you consider an esolang? :p 01:54:53 also, what's an "instruction"? Any builtin? 01:55:21 If you consider Lambda calculus non-esoteric, then there you go. 01:55:25 Well, if it's CISC yes. 01:55:55 Well, built in in the basic language I suppose. 01:56:04 Without the modules and whatnots. 01:57:02 Well, in *that* case. . . 01:57:09 Hmm. 01:57:16 Lisp? :p 01:57:43 * pikhq shrugs 01:59:37 lisp/scheme has very few 02:01:40 pikhq: do it! there aren't enough amazingly awesome languages. 02:01:45 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 02:01:45 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 02:01:48 -!- Sgeo has quit (brown.freenode.net irc.freenode.net). 02:01:48 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 02:01:48 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 02:01:48 -!- Overand has quit (brown.freenode.net irc.freenode.net). 02:02:22 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 02:02:23 -!- oklopol has quit (brown.freenode.net irc.freenode.net). 02:02:29 -!- dbc has quit (brown.freenode.net irc.freenode.net). 02:02:29 -!- cherez has quit (brown.freenode.net irc.freenode.net). 02:04:16 NEVER!!! 02:04:21 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 02:04:21 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net). 02:04:22 -!- atsampson has quit (Read error: 104 (Connection reset by peer)). 02:09:13 -!- SimonRC_ has joined. 02:09:45 -!- Sgeo has joined. 02:09:45 -!- AnMaster has joined. 02:09:45 -!- GregorR has joined. 02:09:45 -!- Overand has joined. 02:10:09 -!- bsmntbombdood has joined. 02:10:09 -!- Tritonio_ has joined. 02:10:11 -!- cmeme has quit (Killed by ballard.freenode.net (Nick collision)). 02:10:13 -!- cmeme has joined. 02:10:13 -!- RodgerTheGreat has joined. 02:10:13 -!- sekhmet has joined. 02:10:38 -!- atsampson has joined. 02:10:38 -!- oklopol has joined. 02:10:38 -!- dbc has joined. 02:10:38 -!- tejeez has joined. 02:10:38 -!- cherez has joined. 02:18:14 -!- SimonRC has quit (Connection timed out). 02:29:12 -!- cmeme has quit (brown.freenode.net irc.freenode.net). 02:29:12 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 02:29:12 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 02:31:13 -!- poiuy_qwert has joined. 02:32:32 -!- cmeme has joined. 02:32:32 -!- RodgerTheGreat has joined. 02:32:32 -!- sekhmet has joined. 02:33:04 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 02:33:07 -!- sekhmet has joined. 02:39:03 -!- calamari has joined. 02:52:25 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 02:52:25 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 02:52:25 -!- cmeme has quit (brown.freenode.net irc.freenode.net). 02:54:23 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net). 02:54:23 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 02:54:23 -!- Sgeo has quit (brown.freenode.net irc.freenode.net). 02:54:23 -!- Overand has quit (brown.freenode.net irc.freenode.net). 02:54:23 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 02:54:23 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 02:54:23 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 02:54:23 -!- atsampson has quit (brown.freenode.net irc.freenode.net). 02:54:24 -!- oklopol has quit (brown.freenode.net irc.freenode.net). 02:54:24 -!- dbc has quit (brown.freenode.net irc.freenode.net). 02:54:24 -!- cherez has quit (brown.freenode.net irc.freenode.net). 02:54:24 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net). 02:54:24 -!- pikhq has quit (brown.freenode.net irc.freenode.net). 02:54:25 -!- poiuy_qwert has quit (brown.freenode.net irc.freenode.net). 02:54:25 -!- SimonRC_ has quit (brown.freenode.net irc.freenode.net). 02:54:25 -!- slereah_ has quit (brown.freenode.net irc.freenode.net). 02:54:25 -!- puzzlet has quit (brown.freenode.net irc.freenode.net). 02:54:25 -!- mtve has quit (brown.freenode.net irc.freenode.net). 02:54:49 -!- lament has quit (Nick collision). 02:55:06 -!- lament has joined. 02:55:06 -!- sekhmet has joined. 02:55:06 -!- RodgerTheGreat has joined. 02:55:06 -!- cmeme has joined. 02:55:06 -!- poiuy_qwert has joined. 02:55:06 -!- cherez has joined. 02:55:06 -!- tejeez has joined. 02:55:06 -!- dbc has joined. 02:55:06 -!- oklopol has joined. 02:55:06 -!- atsampson has joined. 02:55:06 -!- Tritonio_ has joined. 02:55:06 -!- bsmntbombdood has joined. 02:55:06 -!- Overand has joined. 02:55:06 -!- GregorR has joined. 02:55:06 -!- AnMaster has joined. 02:55:06 -!- Sgeo has joined. 02:55:06 -!- SimonRC_ has joined. 02:55:06 -!- slereah_ has joined. 02:55:06 -!- lifthrasiir has joined. 02:55:06 -!- pikhq has joined. 02:55:06 -!- puzzlet has joined. 02:55:06 -!- mtve has joined. 03:50:23 -!- Tritonio_ has quit (Remote closed the connection). 03:53:04 pikhq: behold a doodle! http://www.nonlogic.org/dump/images/1204661750-arch.png 03:53:33 it's got all kinda feet! 03:53:37 *kindsa 03:53:56 they're all four-toed, just in different orientations 03:55:03 well, my point was in no way anything. i should really start tagging my actually meaningful sentences somehow... 03:55:10 haha 03:55:14 :P 03:55:23 Heh. 03:55:37 likin' the character design overall? 03:55:49 IRC with sentence tagging. Good idea? 03:55:55 (very Web 2.0, BTW.) 03:55:59 I think I've finally figured out a design for the leg mechanics that I'm happy with. 03:57:02 i should sleep... 03:57:28 why the fuck would i drink a couple of energy drinks at about midnight, when i want to wake up early 03:58:01 Because sleeping is bad for you. 03:58:02 I guess I should work on PSOX safety and finish the filesystem domain, then it's a release of 1.0b1 03:58:16 pikhq, are you working on PSOX compatible tools? 03:58:29 Sgeo: No, I'm working on a simple kernel. 03:58:41 Will anyone notice 1.0b1? 03:59:10 ATM, it just proves that I'm running in 32 bit mode. 03:59:43 (by running a 32-bit ELF with a Multiboot header, of course) 04:04:16 -!- pikhq has set topic: Gygax: May you get a perfect 20 on your 'rest in peace' saving throw. | #awesome | esoteric as always. 04:12:07 Multiboot header? 04:12:31 The GNU Multiboot specification. . . 04:12:53 It's a generic method for a bootloader to talk to an OS kernel and load it into memory. 04:13:05 Works pretty well for most any OS. 04:13:28 One kernel using it is Xen. ;) 04:30:22 -!- atsampson has quit (brown.freenode.net irc.freenode.net). 04:30:46 -!- atsampson has joined. 04:44:59 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net). 04:49:00 -!- lifthrasiir has joined. 04:49:01 -!- lifthras1ir has joined. 04:50:10 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)). 05:16:51 -!- Sgeo has quit (Remote closed the connection). 05:17:49 -!- calamari has quit ("Leaving"). 06:53:14 -!- poiuy_qwert has quit. 06:59:51 -!- olsner has joined. 07:18:27 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net). 07:21:14 -!- lifthras1ir has joined. 07:33:38 -!- olsner has quit (brown.freenode.net irc.freenode.net). 07:33:38 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 07:38:02 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 07:38:02 -!- cmeme has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- Overand has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- lament has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- oklopol has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- atsampson has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- dbc has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- cherez has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- pikhq has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- mtve has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- SimonRC_ has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- puzzlet has quit (brown.freenode.net irc.freenode.net). 07:38:03 -!- slereah_ has quit (brown.freenode.net irc.freenode.net). 07:38:04 -!- lifthras1ir has joined. 07:38:04 -!- olsner has joined. 07:38:04 -!- atsampson has joined. 07:38:04 -!- lament has joined. 07:38:04 -!- sekhmet has joined. 07:38:04 -!- RodgerTheGreat has joined. 07:38:04 -!- cmeme has joined. 07:38:04 -!- cherez has joined. 07:38:04 -!- tejeez has joined. 07:38:04 -!- dbc has joined. 07:38:04 -!- oklopol has joined. 07:38:04 -!- bsmntbombdood has joined. 07:38:04 -!- Overand has joined. 07:38:04 -!- GregorR has joined. 07:38:04 -!- AnMaster has joined. 07:38:04 -!- SimonRC_ has joined. 07:38:04 -!- slereah_ has joined. 07:38:04 -!- pikhq has joined. 07:38:04 -!- puzzlet has joined. 07:38:04 -!- mtve has joined. 07:38:04 -!- Overand has quit (brown.freenode.net irc.freenode.net). 07:38:04 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 07:38:04 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 07:40:24 -!- AnMaster has joined. 07:40:24 -!- GregorR has joined. 07:40:24 -!- Overand has joined. 07:40:41 -!- Overand has quit (Read error: 104 (Connection reset by peer)). 07:40:44 -!- Overand has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:59:43 -!- oerjan has joined. 09:19:26 -!- olsner has quit ("Leaving"). 09:50:36 -!- jix has joined. 10:12:10 -!- Tritonio_ has joined. 10:26:52 well my befunge93 in bash is making progress (or rather, befunge93+, to make it turing complete, I allow infinite 2D playfield, limited width but not limited height) 10:28:42 * AnMaster goes to code string mode 10:45:17 -!- jix has quit ("CommandQ"). 11:07:46 -!- Corun has joined. 11:32:05 -!- Corun has quit ("This computer has gone to sleep"). 11:43:35 -!- pikhq has quit (Read error: 110 (Connection timed out)). 12:08:18 Hell. 12:08:31 There's a buttload of exceptions to handle for a Fibonacci graph. 12:33:49 -!- jix has joined. 12:34:27 -!- SimonRC_ has changed nick to SimonRC. 13:01:07 -!- oerjan has quit ("Cuss! Er, bus."). 13:10:45 -!- RedDak has joined. 13:41:20 -!- Judofyr has joined. 13:49:58 -!- dak has joined. 13:55:49 -!- RedDak has quit (Read error: 110 (Connection timed out)). 14:02:53 -!- timotiis has joined. 14:14:57 -!- pikhq has joined. 15:04:04 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)). 15:08:09 -!- Tritonio_ has joined. 15:14:39 -!- BMeph has joined. 15:24:15 -!- oklopol has quit. 16:03:23 -!- Sgeo has joined. 16:17:31 -!- sebbu has joined. 16:29:50 -!- oklokok has joined. 16:30:14 -!- oklokok has changed nick to oklopol. 16:47:09 -!- sebbu has quit ("@+"). 16:54:23 for befunge93, is the input line based? that is, should it read one char (like fgetc), or a whole line (like fgets)? 16:54:45 sure it should pass one char at a time to the code, but should it cache the results until the user hits enter? 17:05:22 -!- oklokok has joined. 17:06:59 -!- BMeph69 has joined. 17:07:18 -!- BMeph has quit (brown.freenode.net irc.freenode.net). 17:07:18 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net). 17:07:29 -!- BMeph69 has changed nick to BMeph. 17:08:29 -!- lifthras1ir has joined. 17:12:16 -!- Sgeo has quit (brown.freenode.net irc.freenode.net). 17:12:16 -!- dak has quit (brown.freenode.net irc.freenode.net). 17:12:17 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 17:12:17 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 17:18:39 -!- pikhq has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- cmeme has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- BMeph has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- Judofyr has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- lament has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- oklokok has quit (brown.freenode.net irc.freenode.net). 17:23:21 -!- jix has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- atsampson has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- oklopol has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- dbc has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- cherez has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- timotiis has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- Overand has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- mtve has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- SimonRC has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- puzzlet has quit (brown.freenode.net irc.freenode.net). 17:23:22 -!- slereah_ has quit (brown.freenode.net irc.freenode.net). 17:23:26 -!- GregorR has joined. 17:23:26 -!- AnMaster has joined. 17:23:26 -!- dak has joined. 17:23:26 -!- Sgeo has joined. 17:23:26 -!- lifthras1ir has joined. 17:23:26 -!- BMeph has joined. 17:23:26 -!- oklokok has joined. 17:23:26 -!- oklopol has joined. 17:23:26 -!- pikhq has joined. 17:23:26 -!- timotiis has joined. 17:23:26 -!- Judofyr has joined. 17:23:26 -!- jix has joined. 17:23:26 -!- Overand has joined. 17:23:26 -!- atsampson has joined. 17:23:26 -!- lament has joined. 17:23:26 -!- sekhmet has joined. 17:23:26 -!- RodgerTheGreat has joined. 17:23:26 -!- cmeme has joined. 17:23:26 -!- cherez has joined. 17:23:26 -!- tejeez has joined. 17:23:26 -!- dbc has joined. 17:23:26 -!- bsmntbombdood has joined. 17:23:26 -!- SimonRC has joined. 17:23:26 -!- slereah_ has joined. 17:23:26 -!- puzzlet has joined. 17:23:26 -!- mtve has joined. 17:24:08 -!- oklokok has quit (Client Quit). 17:25:44 -!- oklopol has quit (Read error: 110 (Connection timed out)). 17:48:47 -!- jix has quit ("CommandQ"). 17:55:44 -!- sebbu has joined. 18:08:59 -!- Corun has joined. 18:30:28 -!- ehird_ has joined. 18:44:35 -!- oklofok has joined. 18:45:28 for befunge93, is the input line based? that is, should it read one char (like fgetc), or a whole line (like fgets)? sure it should pass one char at a time to the code, but should it cache the results until the user hits enter? 18:45:42 so should it be buffered or not? 18:46:01 I can't help you! 18:46:05 I know little of efunge. 18:46:16 err, how is that related to befunge? 18:46:26 ah 18:46:27 sorry 18:46:28 bad font 18:46:36 * AnMaster read "efunge" as "europe" 18:46:41 weird mis-reading 18:47:57 Heh. 18:52:04 slereah_, btw my bashfunge is going well 18:52:26 it isn't befunge98, but a superset of befunge93 that is turing complete 18:52:36 calling it befunge08 now 18:52:43 *9000 18:52:51 death station 9000? 18:52:54 http://rage.kuonet.org/~anmaster/bzr/index.py/log/bashfunge/head 18:52:56 :D 18:53:06 still a few eval around, plan to fix that later 18:53:14 (but only in libstack.sh) 18:55:18 AnMaster: why do you like Bash? 18:55:35 ehird_, because it makes people ask why I like bash 18:55:37 ;P 18:56:43 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 18:58:07 -!- olsner has joined. 19:00:22 ehird_, how is tuberculosis going? 19:00:57 -!- dak has quit (Remote closed the connection). 19:02:22 olsner now likely thinks i literally have tuberculosis 19:02:41 so do i 19:03:00 ehird_: ZOMG, YOU HAVE TUBERCULOSIS FOR REAL? 19:18:50 -!- slereah__ has joined. 19:19:34 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 19:29:24 -!- slereah_ has joined. 19:29:33 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 19:35:32 'pikhq, are you working on PSOX compatible tools?' 19:35:41 if not, get back to work! you must do as i say 19:35:42 :-P 19:36:43 AWW NetAuthority is down 19:36:44 http://www.netauthority.org/index.html 19:38:24 on the upside it links to cectic 19:45:14 * Sgeo reads through cectic 19:46:04 -!- slereah_ has quit (Remote closed the connection). 19:49:00 -!- slereah_ has joined. 20:09:44 -!- oerjan has joined. 20:18:44 -!- RedDak has joined. 20:23:49 -!- louzer has joined. 20:24:15 What is meant by wrapping constants on wikipedia? 20:24:23 *wiki 20:24:47 I mean I went to BF wiki and found non-wrapping and wrapping constants 20:24:55 what's the difference 20:25:29 anyone? 20:25:49 louzer: with wrapping means that if you increment 255, you'll get 0 20:26:08 on some implementation it will just exit/crash the program 20:27:05 and some, strangely enough, have numbers bigger than 255... 20:27:30 but most of the time, the wrapping-constants will work 20:27:31 lets say I'm trying to print letter E. so if i use the wrapping code, and if I add 255 to the memory location after the byte with ascii E is formed.. the memory will become 0, crash or go higher? 20:27:54 is that wat u mean? 20:28:13 yes 20:28:18 I think so :P 20:28:40 hmm interesting.. 20:28:47 u know im starting to like BF 20:29:20 wrapping code may not give the ascii E to begin with 20:29:56 I tried and it outputted E 20:29:56 (on a non-wrapping implementation) 20:30:17 hmm is non-wrapping .. wrapping the property of the implemetnation? 20:30:29 yes 20:30:58 the non-wrapping code should work on all implementations that can support all byte values at all 20:31:39 wrapping code may only work on those which wrap 255 to 0 and vice versa 20:31:56 finally! got it 20:32:01 thank you 20:32:15 but for output, some of the wrapping codes _may_ work otherwise, but be slower, on implementations which truncate output to the last 8 bits (i think egobfi does this) 20:32:35 hmm interesting 20:33:10 in that case the actual value produced may differ in the other bits 20:33:37 this is because most of the special wrapping code is based on tricks from modulo 256 arithmetic 20:33:48 ok 20:34:08 i cant believe this thing is turing complete 20:34:19 haha 20:34:26 -!- jix has joined. 20:35:13 if ur on mac os x what is the recommended bf interpreter 20:36:02 no idea 20:36:07 its ok 20:36:52 louzer: most interpreter for Linux will work for Mac too 20:37:08 Judofyr: ok will compile one then 20:37:43 louzer: Or find one in Python/Java/Ruby etc. 20:38:02 Judofyr: yeah.. or write one 20:38:11 yeah 20:38:16 that's pretty easy 20:38:22 hehe 20:40:23 i guess writing a brainfuck interpreter is the initiating rite for #esoteric, like writing a monad tutorial is for #haskell 20:40:43 i don't think i've done either, btw 20:41:00 which language do you use? 20:41:27 what* 20:41:33 mostly Haskell for what little programming i do nowadays 20:42:21 oerjan: http://haskell.org/haskellwiki/Short_examples/BF_interpreter :) 20:42:35 oh i know it has been done 20:42:53 it's just i never finished mine 20:43:26 i've mostly done unlambda interpreters instead 20:46:50 what the heck the wiki example uses an actual foreign array 20:49:32 when it's so easy to use a pair of lists for unbounded tape 20:49:50 oerjan: it's a wiki, you can improve it :) 20:50:13 well it's supposedly a particular interpreter 21:10:22 * SimonRC does sick things with C 21:10:29 A Forth! 21:22:20 in the style of that J interpreter 21:23:01 SimonRC: brillant 21:24:18 "V(tl)for(;;){w.p=*ip.p;(*w.p+2)();}} 21:24:28 that's awesome 21:24:37 the top-leve loop, with extraneous " 21:24:39 truly, how c was meant to be 21:24:42 heh 21:25:35 it means: forever: let w be what the ip reg points to; call the function whose address is stored at w+2 21:25:43 w is pointing to the current word, BTW 21:26:14 SimonRC: plz show full source 21:26:15 :D 21:26:34 the code for colon defs relies on w pointing to the current word, becuase it changes the ip to w[3] 21:27:33 SimonRC: I'm working on a concatenative functional language 21:27:37 like Joy & Cat 21:27:41 but strongly-typed like Cat 21:27:49 ok 21:27:50 but cooler - I hope to make it *purely functional* like Haskell 21:27:53 Monads! 21:27:59 grin 21:28:15 dip :: 'R 'a ('R -> 'S) -> 'S 'a 21:28:50 SimonRC: can't think of any fun examples to show you 21:28:51 :P 21:30:02 SimonRC: but it means that a stack underflow can never happen 21:30:05 since it is always a type error 21:30:13 and is therefore caught at compile-time 21:30:31 SimonRC: now tell me how awesome that is :p 21:31:29 or, you know. don't. 21:32:05 sounds rather lie cat so far 21:32:07 *like 21:32:26 SimonRC: yes 21:32:29 but far more awesome 21:32:43 because cat is not purely functional 21:32:50 ah, ok 21:33:06 does cat have type inferrence? 21:33:08 OTOH, stacks do tend to put an ordering on instructions 21:33:12 it seems to but not for functions 21:33:17 and no 21:33:20 you can reason about stacks functionally 21:33:27 oh, yes 21:33:31 a function is `stack -> stack` 21:33:36 but with more constraints on 'stack' 21:33:37 like, dup: 21:33:44 'R 'a -> 'R 'a 'a 21:33:47 where 'R is the rest of the stack 21:33:58 and then ' ' instead of being the application operator like in Haskell is the compose operator 21:34:02 ehird_, what language is that? 21:34:08 AnMaster: ? 21:34:15 that you are talking about 21:34:32 one i'm making 21:34:50 what is it called? 21:35:07 also, what about TURKY BOMB, did you get anywhere with the interpreter? 21:35:08 no name ye 21:35:08 tt 21:35:11 and not yet 21:35:13 or did you give it up? 21:35:13 but i will work on it soon 21:35:50 ehird_, did you say I wouldn't be able to do befunge in bash? ;P 21:35:58 I said Funge-98. 21:36:03 it is befunge93, and quite a bit of befunge98 21:36:06 You are just doing Befunge-93 with one extension, which is trivial. 21:36:21 ehird_, not one extension, I'm aiming at quite a few of them 21:36:26 even the stack stack bit 21:36:42 until you get Fingerprints and Funge's topology rules.. 21:36:48 its not even CLOSE 21:36:51 SimonRC: hmm 21:36:54 how WOULD monads work? 21:36:56 ehird_, I do have fingerprints, partly 21:37:00 functions can return multiple values 21:37:07 but i cannot express that in a type to wrap it in 'm' 21:37:12 ehird_, not fully yet however 21:37:51 bind :: 'R (m 'a) ('R 'a -> 'R (m 'b)) -> 'R (m 'b) 21:37:56 SimonRC: but that only handles one return value 21:42:16 m ('R 'b) obviously 21:43:20 oerjan: that wraps the whole stack in the monad 21:43:27 yes. 21:43:29 specifically, the stack gets reduced to one element 21:43:33 with the whole stack 21:43:39 oerjan: but that can include stuff not involved in the monadic computation 21:43:41 * SimonRC wonders what the pre-processor would do with a macro called $ 21:44:10 oerjan: so that's incorrect 21:44:11 will it recognise it in constructs like foo$bar? 21:44:11 SimonRC: which pre-processor? 21:44:12 i see. tricky. 21:44:18 SimonRC: if cpp - 21:44:19 the c one 21:44:22 it uses c identifier rules# 21:44:27 so you can't define $ 21:44:34 oh 21:44:45 does that mean I can't have a macro called ^ either? 21:45:19 * SimonRC calls in _ instead 21:45:21 *it 21:45:42 SimonRC: that is correct 21:45:51 WAIT 21:45:53 NO DISREGARD THAT 21:45:55 $ is a valid macro nam 21:45:56 e 21:46:00 cool! 21:46:03 but 21:46:10 SimonRC: it uses C breaking rules, but dumbified 21:46:11 #define $ 2 21:46:13 hello$world 21:46:14 -> hello$world 21:46:18 :-( 21:46:24 the cpp is retarded 21:46:24 :) 21:47:19 #define _ ;ip.p++;} 21:47:36 heh 21:47:41 SimonRC: that won't break though 21:47:43 you can't do a_b 21:47:57 indeed, but it still looks good, even with the spaces 21:48:11 SimonRC: can i see the interp? :D 21:48:15 not yet 21:49:06 aww 21:49:18 SimonRC: hehe, HUMAN-LOOKING DEFINITIONS: 21:49:28 hm? 21:49:38 say-hi: "Hello, world!" print. 21:49:42 ok 21:49:45 NAME: DEF. 21:51:05 fact: ('R Int -> 'R Int) dup 0 = [1] [dup 1 - fact *] if. 21:51:14 but ofc you can leave out the typedef 21:55:38 SimonRC: what functions does your forth have? 21:55:43 the usual 21:55:56 here are the binary operators, as defined in the source: 21:56:03 B(ad,+) B(su,-) B(mu,*) B(di,/) B(an,&) B(or,|) B(xo,^) 21:56:36 SimonRC: ehm.. not traditional forth i take it... 21:56:49 no, that is how they are defined in the C source 21:56:51 that is, 'if' isn't a word defined in forth in yours? 21:57:05 not yet 21:57:16 IMO most 'forths' out there that aren't actual real ANS Forth are more like 'regular stack languages' 21:57:22 yeah 21:57:37 the secret of forth is factoring, simplicity, and smallness 21:57:42 and hackability 21:57:47 SimonRC: jonesforth is the best example of what i'd consider "real forth" 21:57:55 yes 21:57:55 i wouldn't call yours forth, probably :-) 21:58:00 why? 21:58:08 well, I consider 'forth'ness to be an implementation attribute 21:58:12 not the external interface 21:58:26 and? 21:58:33 how is mine not forth? 22:00:11 SimonRC: it looks programmed at a too high level 22:00:11 :-P 22:00:30 I am using lots of macros 22:04:19 * SimonRC wonders if there is a way to get macros to set up the initial dictionary 22:05:01 heck, intialising is going to be really tough 22:05:10 -!- jix has quit ("CommandQ"). 22:06:26 SimonRC: forth is a lot easier in asm 22:06:31 yeah 22:06:36 or in Forth :-) 22:07:07 or in fact any language with a semi-decent macro system 22:07:49 nahh 22:07:51 asm is the easiest 22:12:14 SimonRC: I broked jonesforht 22:12:15 JONESFORTH VERSION 45 22:12:16 14498 CELLS REMAINING 22:12:16 OK SWW LIT 22:12:16 PARSE ERROR: SWW 22:12:16 SEE LIT 22:12:16 Segmentation fault (core dumped) 22:12:20 err 22:12:24 flood. 22:12:29 heh 22:12:30 but still 22:17:02 SimonRC: I wonder how small you can make a Fort 22:17:03 h 22:17:08 maybe a 100% ascii dos com one? :) 22:41:29 ok, I have some untestted and indeed uncompiled code to show you 22:41:38 gimme a pastebin 22:45:14 -!- sebbu has quit ("@+"). 22:45:16 ooh 22:45:18 pastebin.ca 22:45:28 yeah, my logger just told me that 22:46:26 SimonRC: soon, pb.eso-std.org 22:46:27 ;) 22:47:54 http://pastebin.ca/929695 22:48:03 now, bed-time for me 23:02:17 Return to Sender 23:02:17 Atheist: I don't believe in God, yet I have morals. Theist: You don't need to believe... Theist: Think of it this way: if you didn't believe in the post office, you'd still get mail. Caption: Your mail unicorn would still fly by and teleport letters into your mailbox... Caption: No matter what you believed. Atheist: Uh... I don't think they use flying unicorns... Theist: Sheesh. Do you atheists believe in ANYTHING? 23:02:17 talk Talk about this comic in the forum. 23:02:21 -!- ehird_ has quit (Remote closed the connection). 23:03:22 -!- oerjan has quit ("Good night"). 23:04:12 -!- RedDak has quit (Remote closed the connection). 23:05:35 -!- Corun has quit (Connection timed out). 23:20:37 -!- louzer has quit (Read error: 113 (No route to host)). 23:21:11 -!- timotiis has quit ("leaving"). 23:25:36 -!- ehird has joined. 23:26:11 I think I'll work on PSOX 1.0b1 on Friday 23:26:17 And I'm adding in safety stuff 23:28:07 -!- olsner has quit ("Leaving"). 23:28:12 Sgeo: I would argue with you, but I'm too busy despairing about PSOX every time it's mentioned. 23:28:46 It's internal safety against mistakes, not safety against malicious PSOX programs 23:36:29 So, basically, it's more about adding a command to enable certain unsafe commands, just to prevent some poor Brainfuck coder from hitting rm * rather than ls. 23:38:53 pikhq: Are you satirizing it? 23:38:55 I hope so. 23:39:16 ehird: Just commenting ATM. 23:39:23 My satire is crueler. 23:39:43 So, basically, you're strapping a nuclear sub to a skateboard? 23:39:57 pikhq: It's a nuclear sub with a little plastic cover over the torpedo buttons. 23:40:13 Except that 'rm *' in PSOX would require a call to glob, etc. 23:40:18 'ls', significantly easier. 23:40:25 And how on earth do you typo something like that?! 23:42:02 Try 'thinko'. :p 23:45:14 ? 23:45:29 oh 23:45:37 welp, if you make something like that... 23:45:43 you deserve the lesson! 23:45:50 esp. if you're running it in a dir with important files 2008-03-06: 00:16:33 thinko? 00:16:47 Also, there's basically an rm -rf in the current PSOX spec 00:16:56 and you could easily specify a / 00:17:45 Also, it won't really help with accidentally hitting rm instead of ls, it's more of against using a filesystem function instead of a network function 00:20:40 [00:16] Also, there's basically an rm -rf in the current PSOX spec 00:20:43 This just means your spec is retarded. 00:20:46 * Sgeo pokes pikhq now 00:21:04 Also, presumably there is no 'network-rm', because that would make no fucking sense. 00:22:28 What does a lack of network-rm have to do with anything? 00:23:25 0x00 0x06 0x06 FNUM(1)/recursive STRINGNL/entityname 0x0A 00:23:39 Um, the trac version doesn't have the force option yet 00:24:09 Sgeo: Because if you use a filesystem function instead of a network function you COULDN'T accidentally 'rm -rf'. 00:25:36 wha? 00:27:01 /sigh. 00:27:29 0x00 0x06 something instead of 0x00 0x08 something doesn't sound too difficult to me 00:27:47 although I think the arguments would be wrong, but still.. 00:29:36 Maybe I should restrict FS operations to the current directory? 00:33:33 hahaha 00:33:48 pikhq: He's strapping a nuclear sub to a skateboard, then making sure the nukes can only aim in a certain range. 00:33:54 And putting them behind flimsy plastic. 00:38:35 ehird: LMAO 00:39:14 Sgeo: I'm going to recommend *against* that. 00:39:38 At the most, leave something saying 'For the love of god, don't use this without thinking about it.' in the spec. 00:40:12 Against restricting to the current directory (or below)? 00:40:29 pikhq, but someone could make a mistake in writing a BF program and accidentally call it 00:40:58 Sgeo: And someone could, by mistake, rewrite PSOX to be the evilest virus. 00:41:02 Then run it as root on a government system. 00:41:08 You could go to jail! Better stop writing PSOX. 00:42:22 And someone could, by mistake, do the 'rm' syscall rather than 'ls'. :p 00:42:38 Somehow, I think calling rm by mistake is much more likely than your scenario ehird 00:42:50 pikhq, well, I think the arguments are slightly different, but still... 00:44:00 I really do not understand how Sgeo's mind works. 00:44:49 (Paranoid yet ignorant that all the stuff he's building on takes the route of assuming the programmer isn't a ridiculous idiot?) 00:46:48 pikhq apparently made a bunch of mistakes when writing wget.b, and was testing it on PSOX.. if FS worked and he accidentally called the rm function.. 00:47:04 Then nothing would happen because he'd have permissions set up sanely. 00:48:09 Well, I'm leaving this madhouse for another day. See you people around. 00:48:21 -!- ehird has quit ("Konversation terminated!"). 00:54:38 I suppose certain functions should have safety codes.. 01:26:44 -!- faxathisia has joined. 01:27:17 morning 01:42:58 morning 01:43:13 I guess some functions should have safety codes, and some not 02:15:39 -!- poiuy_qwert has joined. 02:53:55 * oklofok begun writing a cise interp, because he forgot the power cord of the computer the oklotalk interp was on somewhere 02:56:00 i love how variables are set in cise, "A = [1, 2, 3]; B = [2, 3, 5]" can just be written as 1 2 3 2 3 5;AB 02:56:51 ";" means "the following is a pattern match", and the list will automatically be cut in half... this is of course a marginal case, but cise is a marginal language 03:01:06 marginal language? 03:01:49 that was mostly wordplay, i meant it's not meant to have any use except for being short with programs of the type seen in golfing. 03:02:01 oh 03:03:11 not that i'm deliberately making it impossible to extend, i'm just assuming the fact parsing is in the general case, well, impossible, cracks down with bigger problems. 03:03:41 at least i think it will suffer from the halting prob, i haven't defined semantics fully yet 03:04:38 lol. my cise quicksort is simply *wrong*. 03:04:52 it's not a typo, it's simply the wrong algo. 03:04:59 i'm going to hurt myself. 03:05:34 /2;A b:C,',JnB this is some weird hybrid of mergesort and quicksort 03:05:57 cuts list in half, sorts both sides, and puts the middle element back in the middle 03:07:23 i'm very tempted to leave all constants impossible to put in the source :P 03:07:36 so that number 2 could not be "2" 03:07:52 you'd have to do something very weird to get it 03:08:46 * oklofok is fairly sure you don't need numbers for algorithms 03:17:31 you can implement nats in just about anything 03:20:24 bsmntbombdood: i'm aware of that. anyway, new quicksort: h:L,JnH'/#>h 03:20:40 O.o 03:21:04 the expression separation syntax i'm using is mostly good for making things *clearer*. i'm not sure why the fuck i have it... :D 03:21:33 Jn pattern seems common 03:22:54 patternmatch onto h:L (== cut off head, put in h, put rest of list on stream because it's uppercased)... then, join with h (the head) the two lists returned when recursed throught the two results of mapping >h through the list collecting smaller and bigger results 03:23:05 *through 03:24:55 /# is one of my more "complex" functions, it takes a function f and a list l, then maps f on l, sorts results and groups identical adjacent results (identical results are ofc always adjacent in a sorted list...), then performs both the same sorting and the same grouping the the list l 03:25:11 it's not actually complex, just hard to explain in a short manner... 03:28:31 hmm... it seems it's not even trivial to define in cise 03:28:35 that's not good... 03:28:38 Is anyone going to fiddle with PSOX 1.0b1 when it's released? 03:28:58 Sgeo: are you going to play with cise when i finish my interp? 03:29:03 cise? 03:29:09 :D 03:29:15 at least i know what yours is :P 03:29:27 you prematurely proved my point 03:30:58 btw. did anyone actually read my explanations? the function is a bit complex, i may have a fundamental error there 03:31:13 i'll test once i get the basic shit rolling 03:31:59 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 03:32:37 -!- Judofyr has joined. 03:34:12 Sgeo: anyway, because i too am an attention whore, cise is my *awesome* language 03:34:35 it's so awesome, you could say "awesome is cise", and not be wrong. 03:35:31 wtf... i have failed in bubblesort too 03:37:16 oklofok, wiki page? 03:37:26 not yet, i'm writing a spec now 03:53:57 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 03:53:58 -!- atsampson has quit (brown.freenode.net irc.freenode.net). 03:54:00 -!- dbc has quit (brown.freenode.net irc.freenode.net). 03:54:00 -!- cherez has quit (brown.freenode.net irc.freenode.net). 03:54:17 -!- oklofok has joined. 03:54:17 -!- atsampson has joined. 03:54:17 -!- dbc has joined. 03:54:17 -!- cherez has joined. 03:55:29 * Sgeo eats a netsplit for dinner 03:57:18 -!- bsmntbombdood has changed nick to grub. 03:59:53 * oklofok goes off to get some grub -> 04:17:58 * Sgeo is going to sleep now. Good night 04:19:00 -!- Sgeo has quit ("Ex-Chat"). 04:21:24 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 04:21:34 -!- grub has changed nick to bsmntbombdood. 04:21:37 -!- poiuy_qwert has quit (Read error: 110 (Connection timed out)). 04:22:20 /whois bsmntbombdood 04:22:23 whoops 04:22:29 * oklofok fails at stalking 05:07:27 -!- GreaseMonkey has joined. 06:46:27 -!- louzer has joined. 06:46:47 -!- louzer has quit (Client Quit). 06:54:24 -!- Judofyr has joined. 07:23:03 -!- Judofyr has quit. 07:30:16 -!- atsampson has quit (Connection reset by peer). 07:45:26 -!- GregorR has quit (Remote closed the connection). 07:51:10 -!- GregorR has joined. 07:51:53 -!- atsampson has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:10:40 -!- oerjan has joined. 08:44:08 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 10:46:50 -!- oerjan has quit ("leaving"). 11:05:53 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 11:06:08 -!- slereah_ has joined. 11:09:50 is it possible to make a quine in brainfuck I wonder 11:11:04 Yes it is, here's one for example http://www.bf-hacks.org/hacks/quine.b 11:13:05 interesting 11:13:22 I find befunge source a lot easier to follow than brainfuck btw, is that normal? 11:14:31 I can't read befunge 11:14:39 I can't program in any stack language at all though 11:27:42 I find stack languages quite easy 11:27:53 compared to languages like brainfuck 11:28:12 visualizing the path is easy for me 12:11:11 * slereah_ received a book on modal logic. 12:11:19 I shouldn't have bought the cheap version. 12:11:24 Some ass took note in it. 12:11:33 :/ 12:11:58 I like it when I got a book from the library and someone "corrected" something in the book wrong 12:12:26 In that case, it isn't so moch corrected as "I need money for a notebook" 12:12:34 oh :/ 12:12:35 Maybe that's why he sold it. 12:12:39 lol 12:12:40 To buy a notebook. 12:12:46 But now, he doesn't have the book! 12:12:52 hahaha 12:12:55 Quite the conundrum. 12:13:59 "This is a metaproof of a metatheorem, not a proof of a theorem" 12:14:09 Can't you write that on a piece of paper you cheap bastard? 12:14:16 rofl.. 12:14:31 (wtf is a metaproof?) 12:14:59 I suppose it's a proof done outside the system itself 12:15:23 A proof uses the axioms and rules of inference of the system, a metaproof something outside of it 12:17:27 * slereah_ reads the description of the book where he bought it 12:17:28 Book Description: Shows general cover wear. Highlighting and writing 12:17:28 throughout. Otherwise no problems. 12:17:35 Maybe I should have read it. 12:18:50 -!- Tritonio_ has joined. 12:35:27 -!- Corun has joined. 12:55:55 -!- Corun has quit ("This computer has gone to sleep"). 12:58:51 -!- timotiis has joined. 13:50:34 -!- RedDak has joined. 14:47:59 slereah_: is there anything like "I came up with a brilliant proof for this, but it's too big to fit in the margin" anywhere in the book? 14:48:46 -!- sebbu has joined. 15:11:57 -!- BMeph has joined. 15:37:33 -!- RedDak has quit (Remote closed the connection). 15:44:23 -!- pikhq_ has joined. 15:45:17 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 16:16:16 RodgerTheGreat: I don't know! 16:16:44 My guess would be some sort of class context. 16:16:54 Possibly with the author himself! 16:17:04 (There's the phone number of the author in the book) 16:18:40 Although since there's also the adress of the university, I guess not 16:18:54 I'm not too sure what the point of the phone number and all is. 16:22:00 -!- atsampson has quit (Read error: 104 (Connection reset by peer)). 16:33:04 -!- atsampson has joined. 18:02:21 -!- ihope has joined. 18:02:39 Ello. 18:03:03 Hello sir. 18:06:01 -!- jix has joined. 18:07:20 -!- RedDak has joined. 18:35:40 -!- Judofyr has joined. 18:46:37 -!- cherez has quit ("Leaving."). 18:46:46 -!- cherez has joined. 18:51:12 -!- RedDak has quit (Remote closed the connection). 18:59:33 -!- jix has quit ("CommandQ"). 19:21:14 -!- olsner has joined. 19:23:04 -!- jix has joined. 19:36:10 An amazing mix of the serious and parody: http://www.gamasutra.com/view/feature/3563/microsoft_excel_revolutionary_3d_.php?page=1 19:40:38 Awesome. 19:43:42 -!- oerjan has joined. 19:52:43 hi 19:52:46 http://www.bash.org/?845468 19:53:16 :((( 19:53:27 so totally should have been ++sheep; not sheep++; 19:54:09 (wait do you read sheep++; as 'increment sheep'?) 19:55:06 as post increment 19:55:15 ++sheep would be pre-increment 19:55:33 "post increment sheep" "sheep post increment" or what? 19:55:47 iirc (but I'm not sure) related sequence point in C 19:55:53 why would it matter? 19:55:55 faxathisia, err? 19:56:09 faxathisia, the former I would say 19:56:16 at least in English 19:56:17 semantically it makes no difference to the code 19:56:30 faxathisia, with post and pre no, indeed 19:56:31 but it matters to whether or not it rhymes 19:57:03 and for me it didn't rhyme because I read it "sheep plus plus" 19:57:26 lol, that should be a programming language 19:57:33 lol 19:57:48 language of the day 19:57:50 I do! 19:58:00 you got a infinite queue of sheeps, jumping over the gate (ie, pushing them onto the stack) 19:58:03 something like that 19:58:25 anyone want to write a spec for it? 19:58:26 A queue jumping on a stack? :o 19:58:38 slereah_, err, sheeps 19:58:56 anyway 19:59:10 I bet you could base a programming language on counting sheeps 19:59:34 But what can you do with that language? 19:59:43 oh wait, with ++, hm it got to be object orientated 19:59:52 or abject oriented 20:00:16 That's the problem with awesome ideas. You need to make instructions out of them. 20:00:23 gate would have to be a critical section, for concurrency issues 20:00:31 faxathisia, "abject"? 20:00:41 as coined by GOTO++ 20:00:53 faxathisia, *googles* 20:01:20 curse you heisenbug, sql error again 20:01:25 from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)". 20:02:55 argh, manual only in French 20:03:23 so impossible for me 20:03:29 faxathisia, tell me about abject 20:03:38 * slereah_ be French 20:03:40 I don't know French and GOTO++ seems to lack an English manual 20:04:02 It's from this http://gpp.niacland.net/faq.html.en 20:04:07 It's hilarious 20:04:10 slereah_, ok, I'll write a programming language in Swedish then 20:04:21 slereah_, and tell you that too :P 20:04:36 :D 20:04:52 * slereah_ once thought of making a BF clone in ancient egyptian 20:05:01 you know that language 20:05:01 But unicode doesn't have hieroglyphs 20:05:07 slereah_, hahah 20:05:12 it doesn't? 20:05:13 wow 20:05:51 i thought it did 20:06:02 I looked! 20:06:21 There's the other standard (forgot the name) that had an attempt at it. 20:06:28 With 1500 fucking symbols in it 20:06:59 the egyptians must have been pretty advanced to have 1500 symbols for fucking 20:07:04 faxathisia, that page really doesn't explain it 20:07:09 It does 20:07:11 oerjan, hahah 20:07:14 Notice that, from a certain point of view, GOTO++ opens a new paradigm, the “abject-oriented programmingâ€. Abject (from the latin abjicio, from ab-jectum: throw away, with violence) point to a radical movement of retreat, opposed to the welcoming of the object; the representation of the abject denotes the necessary distanciation against the real and its monstruous deployment. 20:07:31 faxathisia, yes, but what does that *MEAN* 20:07:38 nothing 20:07:40 lol 20:07:55 what about subject-oriented programming, anyone done that? 20:07:57 The whole thing is a joke 20:08:06 which I was referencinc 20:08:18 faxathisia, of course, it is a esoteric language 20:08:25 is there an interpreter for it? 20:11:05 yay, by befunge interpreter in bash alsmost pass the mycology test suite. it fully passes the befunge93 part and almost all items of befunge98 20:11:21 still the fingerprint stuff missing for example 20:11:34 I wonder, who are all those people who never talk? 20:11:45 slereah_, highlight them all and see? 20:11:56 I mean, you know, who are they really! 20:11:58 slereah_, I can go on for days without saying a word in this channel 20:12:04 Not what's their IP numbers. 20:12:13 I'm on a total of 378 channels currently 20:12:15 But some of them, I don't think I ever saw them talking! 20:12:26 slereah_, are your irc client on 24/7? 20:12:42 My computer is always on, at least. 20:12:51 And I usually look at the logs. 20:14:17 * AnMaster looks for ehird 20:15:39 is there something like mycology but for befunge 93? 20:15:44 what are missing of the required f98 features are only negative funge-space, multiple stacks (though quite a bit of that is done) and the fingerprint based loading 20:15:51 ehird bet I couldn't do it 20:16:11 lament, hm yes mycology does have a b93 part 20:17:39 oh wow, beQunge is really pretty 20:19:19 * lament is writing a befunge-93 interpreter 20:19:42 lament, well see http://rage.kuonet.org/~anmaster/bzr/index.py/log/bashfunge/head 20:20:03 it is currently befunge08, a simplified befunge98 version 20:20:31 lament, in what language are you writing your befunge-93? 20:20:50 * slereah_ be wondering. 20:21:06 Is there a funge that's based on designing circuits? 20:21:07 "be wondering"? You mean "is wondering"? 20:21:17 Yes. But with "be" to sound cooler. 20:21:19 slereah_, interesting, how do you mean 20:21:23 Also popped collars. 20:21:51 Well, you design a circuit in ASCII. 20:22:05 And run it. 20:22:25 AnMaster: python 20:22:37 lament, well befunge93 is easy 20:23:13 slereah_, interesting, but would it be a funge really? self modification would not be possible I think 20:23:32 slereah_, btw: 20:23:34 * AnMaster be funge 20:23:36 * AnMaster runs 20:23:49 Well, I just mean being 2D. 20:23:56 I'm not too knowledgable on funges 20:24:08 slereah_, why not make it? 20:24:28 Because I'm not too sure I'd be able to make a parser for it. 20:24:37 I already have trouble making Mulambda. 20:24:46 So 2D is kinda hard 20:24:50 What's Mulambda? 20:25:13 I'm trying to make a language based on µ-recursive functions. 20:25:29 err what is a "µ-recursive function"? 20:25:34 Because for too long, the grandfather of all computing has been ignored! 20:25:38 micro-recursive? 20:25:44 AnMaster: You define a list of functions. 20:25:49 There's 4 primitives : 20:25:50 it is shown that the μ-recursive functions are precisely the functions that can be computed by Turing machines 20:25:58 The 0() function 20:26:09 The successor function s(x) 20:26:12 slereah_, interesting 20:26:34 The projector function p,n(x1,x2,x3,...,xn) = xn 20:27:00 And the µ function, µy f(y,x1,x2,...) = smallest y such that f = 0 20:27:06 ok 20:27:16 and that is turing complete? 20:27:18 And it is indeed Turing complete. 20:27:26 The first one to be! 20:27:32 * AnMaster finds that hard to believe, but if you say so... 20:27:40 Well, not counting combinators and the analytical engine 20:27:51 btw, is the human brain turing complete? or is it more? or less? 20:27:54 But it's what launched all the theories on computability 20:28:10 The human brain is moar of a bounded storage machine 20:28:11 AnMaster: There's no evidence of anything 20:28:44 slereah_, true, not turing complete, but with infinite memory, would it be turing complete? 20:29:21 Well, any man can perform the instructions of a Turing machine! 20:29:33 It's not even clear (due to beliefs like souls.. religion.. supernatural things.. which are all impossible to disprove) that the brain is a computer 20:30:15 faxathisia: But what if a computer has a soul too :o 20:30:23 It just doesn't make sense to talk about something organic like this in a mathematical formalization 20:36:14 the human brain is asm-tc, it is easily programmable as if it was a turing machine, but it is bounded 20:36:37 anyone can simulate sk in their head 20:36:51 slereah_ just said that, i see 20:36:54 my head hurts a bit 20:37:12 Well, in your head gets awkward fast. 20:37:17 But a man with a pen can do! 20:37:27 you can't program a brain 20:37:38 sure you can 20:37:41 Sure you can. Tell someone a list of instructions! 20:37:50 They way a brain thinks is like the way gravity works 20:38:08 Through a metric tensor? 20:51:19 -!- Corun has joined. 20:53:10 slereah_: the projector function returns its last argument? 20:53:31 Well, it returns the nth argument 20:54:17 It's actually supposed to be p(k,n)(x1,x2,x3,...,xn) = xk 20:54:30 But really, the n is usually clear from the context. 20:55:53 slereah_: You could write an interpreter in lisp without having to write a parser 20:56:13 I hope you're right! 20:56:14 READ 20:56:27 Learning real languages isn't much fun 20:57:02 a lot of people think it's not a real language :P 20:58:00 Does it have more than 30 instructions? 20:59:43 Only two instructions are required: "next program" and "run". 20:59:51 Heh. 21:00:13 Program number 27 is +++++++++++++++++++++++++++R. 21:00:28 Is this actually true? 21:00:38 (Because theoretically, you could totally do it) 21:01:10 Maybe I should make some statistics of the number of functions/commands/instructions/whatever in esolangs, to see if there's a trend 21:02:19 Is what actually true? 21:02:36 Next and run D: 21:02:46 It's possible, but very inefficient. :-) 21:03:09 Do you even need the run? 21:03:23 You do if you want these to actually be instructions. 21:03:29 make any character + and EOF run 21:03:35 And if you don't want the instructions to be psychic. 21:03:39 makes it easier to writea quine 21:03:51 Quine? Fun. 21:04:27 Well, repeating quine at least. 21:04:37 Just a loop with print x 21:04:38 Here we go: http://esoteric.voxelperfect.net/wiki/Unary 21:04:40 *+ 21:04:45 I imagine an actual quine would be possible. 21:04:54 I know of unary. 21:09:20 "Should be treated and output" should be treated and output. 21:11:23 Put the main part of the program on the tape, put the part of the program that puts that on the tape on the tape, output that. 21:11:52 It might be possible to write a Unary quine in less than 1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 characters, though that would require some talent. 21:13:00 just write it in brainfuck, and make the part outputting the brainfuck code write it in unary, then just convert into unary 21:13:21 doing it like that shouldn't be too hard 21:13:22 Also, there might not be enough matter in the universe to run said program 21:14:22 Plus, with unary, you can just use brute foce! 21:16:32 -!- ehird has joined. 21:16:41 HELLO 21:17:01 HI 21:17:04 HI DUDE 21:17:18 -!- ehird has set topic: Topic: Topic topic topic topic topic 20 topic topic 'topic topic topic' topic topic. | #topic | topic topic topic. 21:17:27 Message message message message message. 21:17:37 * faxathisia action 21:17:50 ALL CAPS 21:18:47 Question? 21:19:05 Word! 21:19:06 Answer. 21:19:26 "String" 21:20:20 no caps 21:20:37 Zot might be a better choice for unary. 21:20:52 Although it tends to be rather huge. 21:22:31 Type -> Type 21:22:40 and I repeat 21:22:53 dip :: 'R 'a ('R -> 'S) -> 'S 'a 21:22:58 awesomecakes 21:23:13 (also, dip is like the nicest thing ever. it makes stack language code pretty.) 21:23:49 on another note.. printf :: 'R str -> 'S 21:24:21 uncons :: 'R [a] -> 'R [a] a 21:24:23 err 21:24:25 But * is a type. :-P 21:24:25 ['a] 21:24:39 uncons :: 'R ['a] -> 'R ['a] 'a 21:24:46 which is really useful for functional stuffs. 21:30:06 faxathisia: do you like stack languages? 21:30:11 no 21:30:19 They make me feel stupid in the bad way 21:30:28 faxathisia: you'll like Joy! 21:30:32 it's not like forth 21:30:33 no I wont 21:30:33 it's a lot simpler 21:30:34 and purer 21:30:43 I tried to write a type inferer in it 21:30:43 faxathisia: seriously. 21:30:45 that was horrible 21:30:49 well, yeah, probably 21:30:54 but 'dip' &frenz are nice 21:31:15 It put me off stack languages for life 21:31:50 faxathisia: http://rafb.net/p/7ISFuM24.html 21:31:54 printf skeleton 21:32:01 it can, obviously, only be typechecked at runtime 21:32:10 it would require a very specialized typesystem to be otherwise :) 21:32:18 that's neat 21:32:26 if you have type info at runtime, just splatter check calls before 'print' in the 's','i',etc cases 21:32:36 faxathisia: i think that should be easy enough to read :) 21:32:55 'case' is the only real magic there 21:32:59 it is lispish 21:33:06 * faxathisia used case 21:33:07 [..] is a list, and a closure. 21:33:15 faxathisia: its not modeled on Joy's 21:33:17 that's my language 21:33:18 :P 21:33:26 It looks exactly like Joy 21:33:30 faxathisia: maybe so 21:33:32 but it's more fun 21:33:34 and it's strongly typed 21:34:08 hmm 21:34:17 "case" won't type well 21:34:23 in fact [...] as a sequence won't , in general 21:34:25 this is a pseudotype for it 21:34:53 case :: 'R 'a ['a ('R -> 'S)] -> 'S 21:34:58 where [a b] means 'a list of a and b' 21:35:21 for strong typing you're going to need several differen kinds of lists, like haskell has both lists and tuples 21:36:05 oerjan: indeed 21:36:19 oerjan: but i like the []y syntax 21:36:19 :-p 21:36:27 also, case is 21:36:31 [a b a b]... 21:36:41 which won't type even as a tuple (e.g. [(a,b)] would be [(a b) (a b)]) 21:42:05 ehird, 21:42:15 what are missing of the required f98 features are only negative funge-space, multiple stacks (though quite a bit of that is done) and the fingerprint based loading 21:42:15 ehird bet I couldn't do it 21:42:31 ehird, that is how far I got with my befunge in bash today 21:42:35 it's late here now though 21:42:49 ehird, how goes tuberculosis ? 21:46:10 AnMaster: On hold until I figure out how to reasonably manipulate fractions of bits 21:46:20 AnMaster: and 21:46:24 have you tried Mycology on it? 21:46:28 ehird, I have 21:46:33 that is how I can say what is left 21:46:34 :) 21:46:40 pretty good, then 21:46:41 link? 21:46:51 ehird, http://rage.kuonet.org/~anmaster/bzr/index.py/log/bashfunge/head 21:46:58 (if it's so easy, I'm tempted to micro-optimize a C one.)_ 21:47:07 ehird, well the x instruction, I got it working locally 21:47:11 but it isn't pushed yet 21:47:15 as it breaks other stuff 21:47:16 * oerjan wonders if Mycology would be a good cure for tuberculosis 21:47:19 the mycology guy is devilishly clever 21:47:57 ehird, but I think the hard bits are the bits left really 21:48:06 AnMaster: probably 21:48:12 AnMaster: do you support N-funge? 21:48:22 ehird, no, just befunge 21:48:22 that is, not just Une/Be/Tre 21:48:24 ah 21:48:32 ehird, with more, it would be harder I bet 21:48:39 AnMaster: they're all derived the same way algorithmically though aren't they? 21:48:39 no special cases 21:48:54 ehird, yeah, with a few more/less instructions 21:48:59 like "go into screen" and such 21:49:12 AnMaster: what does 6-funge look like? :-) 21:49:18 (Hmm. That's 'Sexfunge') 21:49:32 -!- ehird has set topic: Fe fi fo funge, I smell the brainfuck of an Englishman.. 21:49:43 ehird, depends on language, in Swedish six and sex are both the same word heh 21:49:46 "sex" 21:49:54 AnMaster: Sextuple 21:49:57 -> Sexfunge 21:50:02 Is that when you got mushrooms on your genitals? 21:50:07 s-expressions 21:50:12 readjust - 21:50:19 Sex, pressions, funge. 21:50:25 -_- 21:50:40 AnMaster: "HRTI" 0x48525449 High-Resolution Timer Interface 21:50:40 ehird, anyway, in befunge I can kind of cheat with wrapping 21:50:46 you will have trouble with that 21:50:56 ehird, I haven't done any extensions yet 21:50:57 "PERL" 0x5045524c Generic Interface to the Perl Language <-- you can do this though 21:51:01 and you don't have to support them 21:51:03 afaik 21:51:09 mycology tests them 21:51:13 so ha :) 21:51:17 ehird, and accepts if they don't exist 21:51:21 yes, but still 21:51:28 you should support TURT 21:51:31 because they're a b98 TURT quine 21:51:34 it draws itself using it 21:51:36 ehird, I won't implement such. I aim at correctness not speed also 21:51:42 beh 21:51:46 it's no fun without the fprints 21:51:54 ehird, e? 21:51:56 eh* 21:52:05 "TRDS" 0x54524453 IP travel in time and space <- this might be difficult 21:52:10 AnMaster: the TURT quine!! it's fun! 21:52:17 ehird, also I don't know how to do negative funge-space 21:52:26 maybe if I got three extra arrays 21:52:33 one for each "quadrant" 21:52:38 with origin in the middle 21:52:40 that could work 21:52:56 and a lot of fiddling with the index 21:53:10 "TRDS" 0x54524453 IP travel in time and space <- this might be difficult <-- in time? 21:53:20 ehird, anyway where is the registry over these extensions? 21:53:21 :/ 21:54:05 AnMaster: that's from the mycology readme 21:54:34 ehird, also I got some issues with array width, current local code reallocates everything if program tries to write in a cell that would be outside current array width 21:54:41 as I do it as a wrapped aray 21:55:02 line 1 = [0 +x], line 2 = [ const * y + x] 21:55:13 where const is first the longest line of the loaded code 21:55:25 it is time consuming reallocation 21:55:29 and the whole thing is slow 21:55:36 that's how you do raw screen stuff in an OS :-) 21:55:37 ehird, anyway if I wanted speed, I'd do it in C 21:55:43 0xB8000(insert correct number of 0s) 21:55:47 cast to unsigned char * 21:55:53 ehird, err 21:55:57 whatever 21:56:12 ehird, anyway reallocation is painfully slow 21:56:20 a few seconds for even small programs 21:56:28 with native 2D arrays it would be much better 21:56:29 :) 21:56:54 ehird, also, I'm not even going to try concurrent funge or file io or execute 21:57:00 because, those are optional 21:58:51 ehird, another thing, the y instruction is only partially implemented, date and time stuff I don't do yet, and currently I push -27315 when any a positive invalid entry is wanted (though I plan to change it to make it more compatible) 22:00:32 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 22:01:14 ehird, feel free to make patches to my code! 22:01:21 ;P 22:01:48 actually once I get this working, I may do a C version 22:01:51 or maybe objc 22:04:42 objc<3 22:04:45 objc+os x<3 22:05:10 AnMaster: fix yur bzrweb 22:05:14 I wish objc would replace c++ 22:05:21 yes, me too 22:05:31 It's everything C++ should have been 22:05:32 and all the NS apis, oh my, <3 22:05:44 gnustep is kind of useless though :) 22:05:59 so i hope someone writes a decent implementation of all of those nice APIs that is cross-platform 22:06:09 otherwise, people will have to buy macs to use my software. how will i live. :( 22:09:54 I'm going to write one in Python. But it'll be fast, thankfully. 22:09:56 Why? numpy. 22:10:01 It'll be spending most of its time in C. :P 22:10:14 I should call it f3nge (see topic) 22:11:10 -!- jix has quit (Read error: 148 (No route to host)). 22:12:26 objc seems kinda lame 22:12:32 lament: lies 22:12:34 it is awesome 22:12:42 take smalltalk, take c, and make them actually hug 22:12:49 You should try writing 11k line programs in it with a friend 22:12:56 ehird: yeah, yeah 22:12:58 It's a decent language 22:13:14 (as opposed to C++: take modula-3 and god knows what other crap, take c, mash them together in a FIGHT FIGHT FIGHT and add some more crap that makes it incompatible with c and oooh turing-complete compilation etc etc etc) 22:13:24 ehird: i don't like having to write an interface and an implementation for everything. And why are instance variables part of the interface? 22:13:53 kind of irrelevant details 22:13:55 and, of course, there's NO STANDARD LIBRARY which completetly KILLS any potential the language might have had. 22:14:44 there is a standard library, dear lament 22:14:46 It's called NS* 22:14:50 um 22:14:52 ...yeah. 22:14:56 nah 22:15:03 fyi the NS classes are awesome. 22:15:06 It's called objcruntime.h 22:15:07 :P 22:15:11 faxathisia: eek. :-) 22:15:21 the NS classes as provided by gnustep? 22:15:40 lament: no, Apple. But I am biased. ;) 22:15:45 oh I wrote a parodey 22:15:51 parodey? 22:15:53 ehird: oh, apple, sure. I agree. 22:15:56 is that a parody involving e? 22:15:59 parody 22:16:08 lament: yeah other platforms need a good implementation 22:16:09 ehird: but locked-in languages are silly 22:16:14 http://fax.twilightcoders.net/CocoaC/ 22:16:19 but openstep exists 22:16:19 apple pretty much owns objc 22:16:24 and needs some love 22:16:24 ;) 22:16:27 witness objc 2.0 22:16:34 faxathisia: haha, yeah, i hate that tutorial 22:17:12 * faxathisia think .. if anyone has a chance of understanding this kind of humor it's someone from #esoteric 22:17:22 faxathisia: however i do like cocoa 22:17:23 so die die die 22:17:27 faxathisia: hahaha 22:17:41 (Also, sscanf is a horrid abomination from hell. That's why. :P) 22:17:46 That's just a biproduct of my work writing an objc bride in CL btw 22:19:09 Is cocoa a parody avoiding a particular vocalic symbol? 22:19:34 -!- RedDak has joined. 22:20:14 lovely tutorial 22:20:20 ty :D 22:22:16 Also, why is this involving bridal affairs? 22:30:06 hmm 22:30:14 faxathisia: you actually use CL? :) 22:30:25 well, KigForth now does a little bit of stuff 22:30:26 for a couple years yeah 22:31:00 I have a program that does 6 7 * . 22:31:13 it uses a word in forth to do call * 22:31:34 SimonRC: meh 22:31:37 i tried kigforth when you posted it 22:31:39 syntax errs. 22:31:42 yes 22:31:50 I did say I had'nt tried to compile it 22:32:01 SimonRC: Make kigforth strongly typed! 22:32:11 no 22:32:15 it's a Forth damnit 22:32:32 SimonRC: but strongly-typed functional concatentative languages are fun 22:32:54 wow @ N0x35C49E 22:32:59 http://pastebin.ca/931031 22:33:05 lament: ??? 22:33:18 noxes cage? 22:33:27 SimonRC: that c code is actually really nice 22:33:33 huh? 22:33:38 i wish all c was like that.. i hate looking at most c :p 22:33:57 deadpan sarcasm doesn't work that well on IRC 22:33:57 assert(sizeof(C*) == sizeof(C)); 22:33:59 that's quite a demand 22:34:06 not really 22:34:08 SimonRC: good thing -- it wasn't sarcasm 22:34:15 really? 22:34:20 thanks 22:34:22 faxathisia: do you like it? 22:34:58 the idea is that C is a "cell" type: a union of equal-sized ints, pointers, function pointers, etc 22:35:01 like CL? Yes It's fanstic 22:35:25 the asserts make the program blow up meaningfully if the types aren't the same size as the union 22:35:29 fantastic .. beh cannot type 22:35:38 no, my paste 22:35:53 I ought to comment the cryptic variable names a bit more 22:35:59 SimonRC: your C is too advanced 22:36:03 SimonRC: in forth cells are untyped.. 22:36:09 they're just "int" 22:36:19 and internally, cast into (int *) when doing odd stuff 22:36:46 but casts are too long textually 22:37:07 SimonRC: Easily solvable. 22:37:15 #define C(x) (x) 22:37:17 .p for a pointer, .s for a string, .i for an int, .f for a function pointer, etc are easier to read IMO 22:37:20 #define CP(x) (x*) 22:37:26 SimonRC: and maybe so, but it's not Forthy 22:37:27 :) 22:37:42 hmm 22:37:54 mm... maybe i should learn CL after all 22:38:27 Combinatory logic? 22:39:42 lisp 22:40:03 CL? 22:40:12 Common Lisp 22:40:15 Oh. 22:40:59 heh, obviously the definition of fetch should be: 22:41:01 W(st,fe,"!" ,*T.p=S;D;D) 22:41:07 -!- RedDak has quit (Remote closed the connection). 22:41:16 I like ;D;D to drop two items from the stack 22:41:24 it looks... happy 22:42:38 * SimonRC goes to bed 22:53:03 Hm. Maybe I should write Clock Punk in C. 22:53:18 It has an easy syntax and concept, and it would be faster. 22:53:44 Although I think I need to separate the I/O from the memory. 22:54:09 The input is a nightmare when it's on the memory. 22:55:08 Already bad enough to deal with the input time! 22:56:07 -!- oerjan has quit ("Good night"). 23:12:23 "For output, the machine would have a printer, a curve plotter and a bell. " 23:12:23 ... 23:12:27 A bell for output? 23:12:33 Is that for error messages? 23:14:50 For getting attention, I suppose? 23:16:37 Type "solve P = NP, then start ringing", go get coffee, come back, go get a sandwich, come back, go get a taco, come back, go get a bottle of chocolate milk, come back, go get a banana, come back... 23:18:09 "I have a proof for P = NP, but unfortunately it is too long for this IRC server's flood limit" 23:18:14 -!- timotiis has quit ("leaving"). 23:19:34 All proofs of P = NP can be put into the form "X. X implies P = NP. Therefore, P = NP." 23:19:56 If both X and "X implies P = NP" are decently easy to prove, there you go. 23:20:48 -!- atsampson has quit (Read error: 113 (No route to host)). 23:32:05 -!- Corun has quit ("Leaving"). 23:36:53 -!- Corun has joined. 23:48:54 -!- ihope_ has joined. 23:57:34 ihope: P = NP, because I said so. 23:57:36 QED. 23:58:19 SimonRC: I am writing a forth in the same style now! 23:58:23 int main() {for(;;)NEXT();return 0;} 23:58:23 :D 23:58:34 P=NP is so boring. 23:58:45 P\=NP is in 23:58:47 Let's make something bolder. 23:58:52 Like NC=EXP 23:58:59 SimonRC: ok, this is awesome: 23:59:03 void NEXT() {ip++();} 23:59:17 ehird: you forgot I said so => P = NP. :-P 23:59:31 ihope_: I said so => X for all X 23:59:33 that is an axiom 23:59:37 Ah, I see. 23:59:55 So, MPEG looks like a series of JPEG images, doesn't it? 2008-03-07: 00:00:12 'series of jpg images' is actually a video format 00:00:15 can't remember its name 00:00:27 ihope_: H.264 is where it's at 00:02:12 So if I have one image displaying for half an hour... 00:04:59 The brk and sbrk functions are historical curiosities left over from ear- 00:04:59 lier days before the advent of virtual memory management. 00:05:01 SHUT UP OS X MANPAGES 00:05:25 -!- ihope has quit (Read error: 110 (Connection timed out)). 00:05:28 SimonRC: where is kigforth 00:13:44 -!- atsampson has joined. 00:14:50 so i have this MPEG file 00:14:52 it's porn 00:15:21 it was made by catting several smaller clips together 00:15:51 now, some players (MPlayer) play all of it, and some (Quicktime) stop after the first clip 00:16:36 i wonder if the mpeg standard is under-specified, or if mplayer is just really smart 00:17:42 That's what I'm normally wondering while watching catted together porn. 00:17:58 lament: mplayer smartness 00:18:01 lament: yes. 00:18:02 -!- slereah__ has joined. 00:18:15 Which, I suppose, means "both". 00:19:16 >:| 00:19:35 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 00:21:25 -!- olsner has quit ("Leaving"). 00:53:59 -!- Sgeo has joined. 01:10:46 hmmm 01:10:52 the eso-std.org pastebin will be up sometime 01:11:20 Is it ESO approved? 01:11:34 but of course. 01:11:43 unfortunately; pygments doesn't haev that many esolang highlighters right now 01:11:45 it has Brainfuck, though. 01:11:50 Still, writing 'em will be trivial. 01:12:12 What is there to highlight in BF apart from brackets? 01:17:02 slereah__: grouping 01:17:07 <> and +- and ,. 01:17:17 those groups should be highlighted differently but the same between chars 01:17:19 < and > the same 01:17:23 + and - the same, but different from <> 01:17:34 slereah__: Name the pastebin's code. :P 01:19:51 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 01:20:00 -!- Judofyr has joined. 01:20:16 Pastebin. 9000. 01:20:16 Well, I have no idea. 01:20:16 Wouldn't highlighting the +- and all result in a terrible eyesore? 01:20:16 Oh, grouping. 01:20:16 Why ., then? 01:20:21 It's a legitimate pice of code! 01:21:00 ... 01:21:03 Highlight +- 01:21:06 as the same 01:21:08 Same with <> 01:21:09 etc 01:21:19 I.e. groups of instructions that are inverses or whatever, should highlight the same 01:21:23 ais523's emacs mode does that 01:21:35 Then I reiterate my remark : wouldn't that be a terrible eyesore? 01:22:16 Like a gay alphabet soup 01:22:40 No. 01:22:43 It's quite nice in ais523's mode 01:22:59 Pixplz? 01:23:04 Noes, lazy. 01:24:14 Any other highlighter project in mind? 01:25:00 -!- ihope__ has joined. 01:25:03 -!- ihope__ has changed nick to ihope. 01:26:01 * slereah__ tries to make esolangs stats 01:26:10 number of symbols/commands 01:26:28 The "command" thing is a little fuzzy for some though. 01:28:55 ... 01:28:58 Holy shit. 01:29:03 I have no attention span 01:32:22 It is kind of a shame that we don't have attention spans. 01:32:37 I have a wonderful idea for a program but don't have the attention span to write it. 01:33:43 I usually wait for some period of activity where I can actually hold on to a project for a few weeks! 01:34:26 That's pretty much how the Love Machine 9000 and Lazy Bird got written. And why everything since is in limbo. 01:34:31 Some period of activity? 01:34:43 You know, motivation and focus! 01:34:59 Are you currently schooling? 01:35:14 Yes. Although it has little to do with it. 01:35:30 It's mostly motivation. 01:40:47 * ihope nods 01:41:00 I blame all my lack of motivation to write programs and such on school. :-P 01:41:45 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 01:43:17 -!- slereah_ has joined. 01:43:18 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 01:50:51 I want to give 10,000 creatures each a 10-kilobyte brain and see what emerges. 01:51:18 Mudkips. 01:57:18 Interesting. 01:57:47 Quite. 01:58:36 Well, I'll be gone, sir, and anon sir, and quoting Shakespeare again when I return. 01:58:40 Adieu. 01:58:56 Bai 02:00:02 -!- ihope__ has joined. 02:04:17 Is there a definition for a command? 02:07:21 -!- pikhq_ has changed nick to pikhq. 02:17:32 -!- ihope has quit (Read error: 110 (Connection timed out)). 02:20:30 -!- slereah__ has joined. 02:20:30 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 02:20:56 -!- calamari has joined. 02:28:33 -!- Corun has quit ("Leaving"). 03:29:19 ihope__: so i herd u liek mudkips 03:38:04 GregorR, pikhq ihope__ slereah__: Should I remove directory manipulation, i.e. only allow removal of individual files at a time? 03:38:10 And copying moving etc.? 03:39:11 Are you going to use it? 03:39:14 ehird? 03:39:34 slereah__, hm? 03:40:27 Because boy will you be disappointed if you toil at it only to never use it: 03:42:58 -!- ihope__ has quit (Read error: 110 (Connection timed out)). 03:49:20 " I blame all my lack of motivation to write programs and such on school. :-P" <<< i did too, until i got half a year basically off school, and my productivity crashed totally 03:49:26 also, he's not here 03:49:38 Oh you. 03:50:11 yeah, me :) 03:51:00 i only implemented ints and lists to oklotalk, but while having to take a break from writing it i've realized it already lets you do pretty complicated abstractions 03:51:22 But... 03:51:26 -!- ehird has quit ("This computer has gone to sleep"). 03:51:26 What is Oklotalk! 03:51:36 you can extend numbers with new operations and you can make new types with the old ones, and new ones... currently you cannot do both though :P 03:51:41 It's been six months and I still don't know! : 03:51:59 that will require explicit second-order coding 03:52:06 which is kind of a lame term 03:52:21 slereah__: my grandest language atm 03:52:28 also my oldest language 03:52:39 Yes, that much I know. 03:52:43 But what is inside! 03:52:48 What is the underlying concept! 03:53:01 it's very... ugly. 03:53:17 it's kinda like python, but even less restricted 03:53:38 syntax is 100% robust in that everything parses 03:54:28 it's functional, although given it has both dynamic and static typing you can just make a while function and write iterative code without knowing it's done with recursion 03:54:35 *scoping 03:54:54 'kay 03:54:57 dynamic *typing* simply sounds more natural, i always confuse the terms :) 03:55:48 like I = 5; while ´{ I < 10 } ´{ I <- I + 1 } 03:56:12 "´"'s are ncessary, because functions are assumed to be funcokens otherwise 03:56:29 Funcokens? 03:56:32 a funcoken is a token parsed as an operation, kinda 03:56:49 Phew. I had gay porn on my mind. 03:56:53 so you can do 4 {_ * __ - 2} 5 to get 4*5-2 03:57:46 Why the double underscore in the middle? 03:57:49 "__" as an implicit binary operand marked isn't done yet, so you'd have to do 4 {A B->A*B-2} 5, but anyway 03:57:55 it means ropd 03:57:58 right operand 03:58:01 _ is left operand 03:58:09 ...in case both are used, that is 03:58:20 if you don't use __ in the body, both will be in _ :D 03:58:39 so... parsing needs infinite lookahead 03:58:53 i consider this a positive thing 03:59:17 well... you don't have to do that at parsing 03:59:42 i haven't done it yet, so i don't even know the exact semantics with more complicated functions 03:59:51 Heh. 03:59:58 Is it inspired by anything in particular? 04:00:05 hmm... wonder if i should make functions objokens by default... 04:00:15 oklotalk? i guess by K 04:00:31 although i don't exactly know much about K 04:00:58 the name looks like smalltalk, but when i decided on the name, i had no idea what smalltalk was 04:01:11 Holy hell, K is ugly. 04:01:17 Looks like an esolang! 04:01:25 it's fairly curious smalltalk may be the language oklotalk has most in common with. 04:01:33 * faxathisia wonders why everyone learns K instead of J :S 04:01:48 faxathisia: It's superior. 04:01:51 One letter above. 04:01:52 faxathisia: it's one more? 04:01:55 yeah 04:02:01 I like J a lot more 04:02:35 nothing says a joke is trivial more than two guys saying it simultaneously 04:03:07 :D 04:04:09 god i'm an idiot, went to see this guy to pick up my religion assignments he'd done for me... forgot my power cord and half of the assignments at his place, and he's not coming home for ages :) 04:04:22 whhell, as they say, cheating is self-beating! 04:04:40 oh, right, they don't. 04:05:01 i had a dream i was running in the hallway of my house and ircing via the buttons of the elevator 04:05:16 What, you were senging it in binary? 04:05:49 no, the wall had the whole alphabet 04:06:01 not qwerty, pretty random 04:06:10 there was no screen, i saw the text in my head 04:06:34 this dream involved me drinking 3 liters of chocolate milk 04:06:38 DVORAK? 04:06:40 no 04:06:45 well 04:06:48 i don't know dvorak 04:06:54 so, maybe dvorak. 04:07:02 Well, you know 6 letters of it already! 04:07:10 ',.ppyfgfgcrgrcl 04:07:12 aoeuueididhtdhtn 04:07:13 ;qjkjkxbkxbmmxbw 04:07:22 faxathisia: gesundheit 04:07:47 this is roughly the layout :P 04:07:52 the problem with oklotalk parsing is, even though everything parses, most things are pretty uninteresting 04:08:15 faxathisia: baning at it at random? 04:08:18 *banging 04:08:45 ',.pyfgcrl aoeuidhtn qjkxbmwv <-- without duplicates 04:09:56 hmm 04:10:05 i like the idea of left-had only okoing 04:10:14 scscscscscscscscscscscscs 04:10:23 well 04:10:28 i guess there's efefefefefefe 04:10:37 but i never got into that really 04:12:01 perhaps i should continue my cise interp instead of watching friends 04:17:39 orange juice, i want that 04:22:04 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 05:26:08 -!- calamari has quit ("Leaving"). 05:58:20 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net). 05:58:33 -!- Sgeo has quit (Remote closed the connection). 05:58:45 -!- lifthras1ir has joined. 06:18:02 my keyboard feels sticky and disgusting :( 06:18:09 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)). 06:18:46 but it's really. really pretty. 06:26:56 -!- cmeme has quit (Read error: 104 (Connection reset by peer)). 06:29:47 -!- cmeme has joined. 06:41:06 -!- Judofyr has joined. 06:45:41 lament: pix 06:46:04 http://z3.ca/~lament/keyboard.html 06:46:31 8| 06:46:37 du bist schnell 06:47:26 wow nice 06:47:38 hmph, i'm still loading 06:48:52 asdf i want a keyboard where keys aren't in that stupid formation 06:49:46 it seems i'm the only one in this world who wants their character part of the keyboard to be symmetric 06:49:56 what do you mean? 06:49:58 this is fairly weird, since not many have asymmetric hands 06:50:15 the character part of the keyboard == the left part 06:50:20 where the characters are 06:50:25 it's mostly symmetric 06:50:39 the uppermost line 06:50:48 is wrong 06:50:58 it should be a bit to the right or a bit to the left 06:51:12 i think the keyboard should just be split into two halves 06:51:14 every time i press a button on it, i die a bit inside, it's simply wrong. 06:51:22 since each button is only assigned one hand 06:51:30 it makes no sense to keep the two parts together 06:51:53 (well, you need to have two space buttons... big deal) 06:51:54 true, but that's something i can live with 06:52:02 such keyboards do exist 06:52:10 you mean, your kind? 06:52:14 that i now 06:52:15 konw 06:52:17 know 06:52:43 but are there any keyboards out there where the lines of the keys aren't... retarded? 06:52:59 i have a hard time finding a term for that 06:53:00 oh, nice, it's not even very expensive: 06:53:01 misaligned 06:53:01 http://www.kinesis-ergo.com/freestyle.htm 06:53:28 you see those in shops all the time 06:54:36 hmm... perhaps i could buy that projective keyboard and wribble it into giving me a sensible keyboard setting 06:54:49 that would be double cool 06:59:42 hmph, if only oses would provide a basic set of objects for programs to use, for instance playlists would readily be unionizable without any effort 07:00:08 well, i guess vlc supports that anyway, but i have no idea how 07:00:20 prolly just by opening the playlist 07:21:39 -!- Judofyr has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:09:42 -!- Corun has joined. 08:17:02 -!- oerjan has joined. 08:18:33 -!- olsner has joined. 08:18:59 -!- Corun has quit ("This computer has gone to sleep"). 08:56:12 -!- olsner has quit ("Leaving"). 09:16:40 -!- faxathisia has quit ("-"). 10:27:30 -!- oerjan has quit ("Bus-y"). 10:43:39 ehird: Direct-threaded code is Fail for portability. You cannot portably compile DTC at run-time: each Forth word will be a list of function calls. But with my indirect-threaded code, each Forth word is a list of word addresses; more portably compilable. 10:52:32 lament: nise kb 10:52:34 *nice 11:37:15 -!- tejeez has quit (Read error: 145 (Connection timed out)). 11:42:42 ooh, cool stuff: http://www.lambdacs.com/debugger/debugger.html 11:43:16 the more you play with it, the more amazing it gets 12:05:07 -!- Tritonio_ has joined. 12:26:02 AnMaster: fix yur bzrweb ??? 12:46:09 -!- tejeez has joined. 13:20:57 -!- ihope__ has joined. 13:20:59 -!- ihope__ has changed nick to ihope. 13:23:28 -!- jix has joined. 13:42:34 -!- ihope__ has joined. 13:46:42 -!- Tritonio_ has quit (Remote closed the connection). 13:59:35 -!- ihope has quit (Read error: 110 (Connection timed out)). 14:06:15 -!- RedDak has joined. 14:38:48 -!- BMeph has joined. 14:41:36 -!- RodgerTheGreat has quit. 15:08:04 -!- Corun has joined. 15:29:24 -!- ais523 has joined. 15:33:49 -!- ihope__ has quit (Read error: 104 (Connection reset by peer)). 16:13:44 -!- Sgeo has joined. 16:14:30 LAST STORY IN FINE STRUCTURE RELEASED WOOHOO! http://qntm.org/?structure 16:15:40 Sgeo: ? 16:16:51 what's ? about it? 16:19:44 the sentence doesn't make a whole lot of sense, and I don't like clicking on random hyperlinks 16:19:49 hm optimizing befunge is near impossible 16:20:01 AnMaster: that was deliberate in the design of befunge 16:20:11 which was designed to keep out compilers, and optimisers by extension 16:20:17 in brainfuck an interpreter/compiler could just merge several + for example, in befunge that isn't possible 16:20:42 the k instruction of funge98 *can* be optimized sometimes, but that is about all 16:20:48 -!- oerjan has joined. 16:20:54 ais523, indeed 16:21:41 possibly you could do some JIT optimization, like say, pre-compile paths or something 16:22:13 Fine Structure is basically a connected collection of fiction stories by Sam Hughes 16:23:07 damn, here i thought there were news about the variability of the fine structure constant 16:23:22 oerjan, same 16:24:19 it's fascinating - a subatomic, dimensionless constant that apparently may have _changed_ over the lifetime of the universe 16:24:21 ais523, actually, several things in funge98 can be optimized, but almost none in befunge93 16:24:39 oerjan: also, which happens to be ridiculously close to an integer 16:24:50 (in fact 1/an integer, but it's dimensionless so it could just as easily be the other way up) 16:25:41 hm... it seems to have drifted away from the 137.00 value that was announced previously 16:25:48 probably due to more accurate measurements 16:25:58 ais523, for example, on the ; instruction, store the position of the matching ; for next time you hit it, or k, for example you can optimize 2kv to just change direction once 16:27:21 -!- ehird has joined. 16:27:31 oerjan, I know that, but what exactly is it, I just know it is some constant that you can measure in a way that won't be affected by instruments (ie, you can't check if an atom got larger, because the atoms in the instrument you use to check would also have grown) 16:27:48 * Sgeo was wrong, it wasn't the last installment 16:27:53 ehird, hi 16:28:05 AnMaster: fix yur bzrweb <--- what is wrong with it? 16:28:08 it works fine here? 16:28:10 http://en.wikipedia.org/wiki/Fine-structure_constant 16:28:20 oerjan, thanks 16:28:51 WIYF (& G T) 16:28:51 "WIFY"? 16:29:07 Wikipedia Is Your Friend 16:29:38 oerjan, except, when the articles goes over my head *looks for Swedish interwiki or simple English*, like it often does in cases of physics 16:30:09 ehird: http://pastebin.ca/932238 16:30:19 * AnMaster sighs at the usual "stub" status of the Swedish pages 16:30:22 (you asked me how Underlambda was getting on, that's the most recent draft spec) 16:30:26 (but it isn't finished yet) 16:30:54 ais523, hm? why not use latex for writing the draft? 16:31:06 AnMaster: because those are just the notes I made 16:31:14 * AnMaster uses the gui "frontend" lyx for anything such 16:31:21 the actual specification is likely to be in something more suitable 16:31:33 but flat text files are good for jotting things down in 16:31:42 I find lyx is very useful, and lets me avoid headache from pure latex 16:31:57 (I'm developing a reference interp which pretty much just implements the rewrite rules literally) 16:32:14 However, the language is designed so that it can be compiled, or implemented much more efficiently. 16:32:37 It's just that the rewrite rules turned out to be a good way to write the spec in an unambiguous way 16:32:58 the definition of C, for instance, is very complicated when written out in words referring to stacks 16:33:03 ais523, on jotting down I agree, but my draft for a befunge08 (basically 2D funge98 with some details to make it possible to implement in, say, bash, in a sane way, though my long term goal is extending to full 2D funge98) now at 10 pages, I use lyx for it 16:33:40 the definition of C, for instance, is very complicated when written out in words referring to stacks <-- hah indeed *has read large parts of C99 standard* 16:34:17 ais523, on your specs, "#! /usr/bin/underlambda" must it be that exact line? 16:34:21 I was referring to C the Underlambda command, not the language, but I've read much of the C89 and 99 draft standards too 16:34:23 AnMaster: yes 16:34:24 what if the binary is somewhere else? 16:34:28 like in /usr/local/bin 16:34:31 symlink 16:34:43 but the string is more for identification of the language 16:34:51 ais523, I suggest it should be allowed to be: #!/usr/bin/env underlambda 16:35:03 there are also various subtle things, such as # can be used as a quote symbol for an m4 interpreter 16:35:16 hmm... maybe #!/dev/env/underlambda 16:35:30 ais523, that is the way I do for bash, because on for example, freebsd, all non-basesystem binaries are installed to /usr/local/* 16:35:55 but I don't like forcing symbols into people's environments 16:36:00 and really, underlambda, or any esoteric language interpreter/compiler, does hardly belong in a base system of any OS 16:36:06 there should be a /dev/which, really 16:36:16 ais523, heh? no system got that 16:36:25 that does what the which command does 16:36:30 /usr/bin/env is standard, I think POSIX 16:36:31 so /dev/which/sh = /bin/sh 16:36:38 so that means, /usr/bin/env bash 16:36:44 will find bash if it is in the path 16:37:06 looking at env's man page, that looks like a bit of a hack 16:37:10 ais523, it is the generic portable way for when your interpreter may be in a different place 16:37:45 * ais523 checks my BusyBox/ash root 16:37:48 and it seems to work there too 16:38:05 for example 16:38:07 $ ls /usr/bin/python* /usr/local/bin/python 16:38:08 ls: /usr/bin/python*: No such file or directory 16:38:08 /usr/local/bin/python 16:38:13 so maybe /usr/bin/env would work 16:38:14 on freebsd 16:38:23 (I'm still open to suggestions) 16:38:33 the important part is the #! / at the start, anywway 16:38:36 s/ww/w/ 16:38:39 on gentoo linux: 16:38:40 $ ls /usr/bin/python /usr/local/bin/python* 16:38:40 ls: cannot access /usr/local/bin/python*: No such file or directory 16:38:40 /usr/bin/python 16:38:52 ais523, you mean that space? hm ok 16:39:30 (it's needed for portability, because there's some OS (forgotten which one) which looks for magic 32-bit words at the start of files to determine their file type) 16:39:42 (and it uses #! / as the magic word for executable text files) 16:39:52 hm 16:40:01 ais523, never heard of such a OS 16:40:08 I suspect it's an old one 16:40:13 tell me if you remember the name of it 16:41:11 The /usr/bin/underlambda was anyway just my guess at what should go there; I'm not very good with #! strings 16:42:12 -!- jix has quit ("CommandQ"). 16:48:47 ehird, well what is wrong with my bzrweb? it works here 16:49:14 ais523, for portability, using env is likely the best way :/ 16:49:20 agreed 16:49:28 on modern systems, it should be available 16:49:31 is it in POSIX? 16:49:52 ais523, not sure about that, but I think it may be 16:50:09 STANDARDS 16:50:10 The env utility conforms to IEEE Std 1003.1-2001 (``POSIX.1''). The -P, 16:50:10 -S and -v options are non-standard FreeBSD extensions which may not be 16:50:10 available on other operating systems. 16:50:22 * AnMaster checks on his gentoo system as well 16:50:46 hm just the usual "see info page", sigh 16:51:00 (*bsd got way better man pages than linux) 16:52:30 what do you think of the rest of the spec? 16:52:41 (it isn't nearly finished yet, there should be a lot more, containing more advanced commands) 16:53:24 ais523, was away eating so haven't had time to look 16:53:30 OK 16:54:24 ais523, tell me a summary what is special with this language please 16:54:36 it's designed as an update to Underload 16:54:46 Tier 1 is sufficient to be TC 16:54:51 underload was one you never finished? or? 16:54:52 and tier 2 for Brainfuck-completeness 16:54:56 Underload was finished 16:55:04 but wasn't very usable for practical programming 16:55:10 seeing as it was an output-only tarpit 16:55:34 ok, what was special for underload then? 16:55:34 Underlambda is 'purer' in some sense; it's a concatenative programming language where all data are functions 16:55:42 Underload is basically a concatenative tarpit 16:55:50 the same way that Brainfuck is an imperative tarpit 16:55:59 and Unlambda is a functional tarpit 16:56:19 ok (you know, most of us in this channel, including myself, got very odd minds, or we wouldn't do this kind of stuff!) 16:56:37 * ais523 thinks that concatenative languages are very neat 16:56:42 Unlambda isn't really a tarpit. it has bells and whistles. odd ones, but... 16:56:44 I can't say, I'm familiar with the concatenative languages thing 16:56:55 what is their speciality? 16:57:01 basically, all commands are functions which take a stack as an argument and output another stack 16:57:15 and concatenating two commands leads to another command which is the composition of their functions 16:57:25 manipulating code as data is normal, and the usual way to write loops 16:57:38 (in fact the only flow control command in Underload is 'eval', written as ^) 16:57:56 ah, multi-stack based language? and self modifying? 16:58:18 one stack in Underload 16:58:23 and not exactly self-modifying 16:58:30 it's more like Muriel; you construct new program on the fly 16:58:33 ah, you said functions take stacks and return stacks? 16:58:38 yes 16:58:39 but with just one stack? 16:58:45 you apply the entire program to an empty stack 16:58:50 because the entire program is just a function 16:58:53 sounds like unefunge98, with a single stack, stripped of most commands? 16:58:53 and it returns a stack 16:59:04 you can use it like that 16:59:11 except the flow control is completely different 16:59:21 and you can put all sorts of data on the stack 16:59:35 ok, flow control is one of the major things that make funges to what they are 16:59:36 (such as bits of your program) 17:00:37 as an example, an infinite loop in Underload is (:^):^ 17:00:49 (:^) pushes the code :^ on the stack 17:00:59 : copies that, so there are two copies of :^ on the stack 17:01:16 and ^ executes the top stack element, leaving :^ as the program and :^ on the stack 17:01:22 (and everything repeats from there) 17:01:33 ais523, anyway, making the #! /usr/bin/env underlambda to the fixed string would be as bad, because what if someone else made another interpreter for the language, he/she couldn't use same name, and if you want to use a specific interpreter, you would have to run it like: nameofotherinterpreter sourcefile.whatever 17:01:51 you would do it like that anyway 17:01:57 hmm... maybe I should simply just insist on the #! 17:01:59 ais523, hm? 17:02:14 you would normally run a program under an interpreter by writing the interpreter's filename 17:02:14 ais523, actually "#! /" should be ok 17:02:20 yes 17:02:30 and you can write #! /bin/false if you don't want the program to be executable 17:02:48 (one of my favourite Perl cheat quines: #!/bin/cat) 17:03:18 Hello people folks. 17:03:19 ais523, you would? you know, likely quite a few shell scripts exists in your /usr/bin, you are not likely to run them with the interpreter's name in front 17:03:23 hello slereah__ 17:03:31 -!- slereah__ has changed nick to Slereah. 17:03:36 yes, but I generally prefix gcc to C programs 17:03:43 and likewise the name of a BF interp to BF programs 17:03:58 Underlambda is expressly designed to be compilable 17:04:19 ais523, for example, do you do bash /bin/gunzip? or just gunzip? 17:04:25 (Underlambda tier 1 -> GolfScript is possible by simple text substitution, for instance) 17:04:32 on my system it is a short shell script, calling gzip with some parameters 17:04:57 same here, actually 17:05:25 but what I'm saying is that although shell scripts and other scripts are normally run through the #! line, programs in non-scripting languages normally aren't 17:05:33 especially on Windows... 17:05:38 windows, bah 17:05:47 yes, but I want the language to be portable 17:06:09 ais523, I think python on windows installs some registry entry to make sure if you double click a *.py, it will run under python 17:06:14 yes 17:06:15 it is possible I know 17:06:18 based on the file extension 17:06:23 it's actually quite easy 17:06:35 * ais523 used Windows for several years (and DOS before that), but uses Linux nowadays 17:06:53 ais523, anyway, by forcing a specific #!* line, you restrict portability in fact 17:07:21 to me a portable program is one that works without problems on multiple systems without changing the source code 17:07:35 a specific #! line is more portable, because at least it can be picked up by commands like file(1) 17:07:37 ais523, ah, I went from Mac OS 7 -> redhat linux 5.0 (or 6.0? not sure) 17:08:09 then slackware due to rpm hell, then suse, debian and quite a few other distros 17:08:17 Idea : A negative reinforcment language. 17:08:22 but say if I write #! /home/ais523/blah/blah/blah/underlambda at the top of my script 17:08:27 and finally settled on gentoo and freebsd 17:08:30 If there's a syntax error, it deletes your hard drive :o 17:08:39 to me a portable program is one that works without problems on multiple systems without changing the source code 17:08:39 indeed 17:08:56 then it might run on my system if I change the directory structure, but probably not yours 17:09:07 a specific #! line is more portable, because at least it can be picked up by commands like file(1) <--- file tells me a file starting with #!/bin/env bash is a bash script here 17:09:13 rerr 17:09:14 err* 17:09:17 */usr/bin 17:09:22 yay for *not copy pasting* 17:09:24 :/ 17:09:46 If there's a syntax error, it deletes your hard drive :o <-- you mean deathstation 9000? 17:10:01 Sure, why not 17:10:05 Slereah, (if you don't know it, a joke about all the "the result is undefined" in C standard) 17:10:35 t.t: a underlambda script text executable 17:10:48 (actual output of file(1) when run on #! /usr/bin/env underlambda) 17:10:58 A hostile language 17:11:22 ais523, indeed, file is quite smart. 17:11:36 btw, what is the correct file ending for a befunge93 program? and what about befunge98? 17:11:38 except it sometimes identifies C files as Pascal 17:11:50 AnMaster: .bf and .b93 according to the specs 17:12:08 which is why I'm annoyed when people use .bf for Brainfuck 17:12:08 ais523, hm, .bf sounds like brainfuck to me 17:12:15 it should be .b 17:12:23 hm 17:12:33 ais523, what about befunge98 then? 17:12:42 .b98 17:16:21 Ah, found the Gödel proof with modern notation. 17:16:31 The original has the horrible PM notation. 17:17:37 pm? 17:17:47 Principia Mathematica. 17:17:56 ah 17:18:10 Fact : Bertrand Russel hated parenthesis 17:18:19 He didn't even like Polish notation! 17:18:32 He used some sort of horrible dot based notation. 17:20:59 Although the Godel paper spare me the dots. 17:21:00 :D 17:21:03 sounds awesome 17:21:15 i don't exactly like the standard math notation 17:21:25 oklofok: http://membres.lycos.fr/bewulf/Russell/2.56.jpg 17:21:33 (Yes, that's why that folder is named Russell) 17:21:52 Proof written in both Russell and modern notation. 17:22:07 i'd like something like polish notation, but so that you could optionally have function arguments on top of each other 17:22:11 At least the first line. 17:22:16 kinda like you do with standard division notation 17:22:21 i cannot open that 17:22:30 something wrong with my internets 17:22:37 Oh. 17:23:31 Well, if you want an example; 17:23:35 ⊢ :: p ⊃ ~( ~q ) . ⊃ . p ⊃ q : ⊃ :. ~q ⊃ ~p . ⊃ . p ⊃ ~( ~q ) .: ⊃ : ~q ⊃ ~p . ⊃ . p ⊃ q 17:23:41 If the unicode displays. 17:23:46 it does 17:23:49 go that's sexy 17:23:56 *god 17:24:21 If you want to know the principle, it's in the PM. Maybe you'll understand it, unlike me! 17:24:38 I can sort of read it, but I don't think I can actually write big things in it. 17:25:44 i don't feel like guessing syntax without having no idea about semantics :P 17:25:55 i'm assuming the u's are what they are in math ? 17:26:08 "is super-/subset of" 17:26:13 No. 17:26:15 oh 17:26:17 just superset 17:26:20 It's the old notation for "imply" 17:26:21 and okay 17:26:24 yeah 17:26:29 that was my second guess 17:26:32 seen that somewhere 17:26:39 Translation is ⊢ ( ( p → ~( ~q ) ) → ( p → q ) ) → ( ( ( ~q → ~p ) → ( p → ~( ~q ) ) ) → ( ( ~q → ~p ) → ( p → q ) ) ) 17:26:47 actually guessed that after realizing there were no C's 17:27:11 The dots serve to separate statements. 17:27:24 could someone link me the funge-98 spec? 17:27:53 i cannot access pages, so i need the link so i can ask a guy to send it to me via dcc :P 17:28:00 http://quadium.net/funge/spec98.html 17:28:10 thnks 17:28:25 I actually think that's a mirror, but it seems to have the right data on 17:28:30 *thanks 17:28:56 that's the massive spec even ehird was scared of? 17:30:49 * ais523 isn't scared of it 17:30:53 but ehird was for some reason 17:31:23 vacj 17:31:25 back 17:31:31 whoa 17:31:34 i missed a LOT 17:32:44 if ehird doesn't consider something trivial, it must have some complexity. 17:32:49 -!- RedDak has quit (Remote closed the connection). 17:33:14 ais523: /usr/bin/env is highly common 17:33:25 I'll use that, then 17:33:45 AnMaster: bzrweb -- yours wont;' show the file contentes 17:33:56 I was more interested in forcing a particular magic string, than what that string actually was 17:34:08 i.e. I want all progams to use the same string but don't care what it is 17:35:31 [17:06] * ais523 used Windows for several years (and DOS before that), but uses Linux nowadays 17:35:34 you used windows like yesterday 17:35:36 :-) 17:35:46 i remember saying that GNU/Windows was the most awful idea i've heard 17:36:04 I still use Windows for some things, such as checking emails with my real work on my laptop 17:36:30 generally use SunOS when I don't have my laptop (accessed via Exceed on Windows) 17:36:41 GNU/Windows was what I used at home before I got this laptop 17:36:53 SunOS, hee :) 17:37:16 CDE/SunOS, to be precise 17:37:23 i'm a mac luser but i suck because my first mac was intel 17:37:25 it was this one 17:37:27 but at least it gives me a POSIX shell I can type commands into... 17:37:32 and stupidly I didn't upgrade the ram from the base 1gig 17:37:34 :| 17:37:42 i can upgrade that on the cheap anyway, at least 17:38:05 works much better than my old, crusty computer though ... that thing was ready to die like 5 years ago 17:38:51 you could try to save it by putting some lightweight version of Linux on it 17:39:05 * ais523 has been working on a Linux system with 64MB memory and 16MB disk space recently 17:39:18 ais523: the hardware is mostly mutually compatible 17:39:19 Busybox/Linux, not GNU/Linux 17:39:33 the base system came from when i was a young'un.. 17:39:41 i didn't really know how to not break a computer then 17:41:10 ais523: anyway, the eso-std.org pastebin coding is underway 17:41:14 hmm... it seems that consistent-speed multithreading was implemented in both Funge-98 and FukYorBrane before it was added to INTERCAL 17:41:23 ehird: are you using an Emacs-based syntax highlighter? 17:41:30 ais523: nope, something better ... 17:41:37 it's written in python for about two reasons - the first, and most important, is the syntax highlighter -- Pygments 17:41:43 it supports, like, 200 languages out of the box 17:41:46 even Brainfuck, by default 17:41:55 and its lexer-thingy framework is very flexible 17:41:59 http://pygments.org 17:42:12 how does it handle Perl? 17:42:21 that's really hard to syntax-highlight 17:42:30 ais523: what's that 'unparsable perl' snippet again? 17:42:32 the regexp + # thing 17:42:36 i'll try it on pygments 17:42:51 probably it fails somehow, but generally you shouldn't complain ;) 17:43:14 ais523: look at the language dropdown 17:43:14 it's huge 17:43:17 from memory, maybeunarymaybebinary /1*0; #/; 17:43:37 actually, that should be 'maybenullarymaybeunary' 17:43:52 ah it's this 17:43:52 whatever / 25 ; # / ; die "this dies!"; 17:44:07 same principle 17:44:23 ais523: http://pygments.org/demo/636/ 17:44:36 so, it fails, but fails in the same way that the eye would scan it 17:44:55 which.. isn't too bad, I'd say 17:46:32 http://pygments.org/demo/637/ 17:46:32 kate beats it on that 17:46:34 AnMaster: bzrweb -- yours wont;' show the file contentes *looks* 17:46:54 ehird, ah indeed 17:46:57 will fix later 17:47:35 now I got a funge98 question, the standard doesn't mention the issue, and mycology doesn't test it. what should happen on this code (entering from left, going right): 17:47:47 04-k# 17:48:02 I think thats undefined 17:48:22 ehird, ok, (at least C standard says things are undefined, sigh) 17:48:31 2008?02?02 17:48:32 The behaviour of 1k # is now considered UNDEF. 17:48:37 AnMaster: from mycology web page 17:48:42 I think that's isomorphic?? 17:48:46 ehird, err no 17:48:49 okay 17:48:52 then contact Deewiant 17:48:57 my question is for negative iterations 17:48:59 memoserv might help. 17:49:05 AnMaster: hmm 17:49:07 jump bcakwards? 17:49:30 ehird, what should happen when the iteration count is negative for k, in general, for #, jump backwards may be a good idea 17:49:35 but what about other ones? 17:49:42 like +? or a number 17:49:43 AnMaster: I am sorry, I have no idea. 17:49:46 Ask Deewiant. :-) 17:49:49 hm ok 17:50:02 when is he/she on irc normally? and in this channel? 17:50:18 Used to be quite often. 17:50:25 [17:50] -NickServ- Nickname: Deewiant << ONLINE >> 17:50:25 [17:50] -NickServ- Registered: 1 year 9 weeks 4 days (5h 30m 22s) ago 17:50:31 Well whaddya know -- he's online now. 17:50:42 In #haskell, no less. 17:50:45 I am tempted to /invite him :-) 17:50:50 To put the real answer on the record. 17:50:55 Aww. 17:50:57 Who's Deewiant? 17:50:58 You can only invite if you're an op?! 17:50:59 Lame. 17:51:03 Sgeo: Mycology & CCBI author. 17:51:14 And, therefore, Befunge-98 guru. 17:51:33 Am I a PSOX guru? 17:51:43 * [Deewiant] is away (Sauna.) 17:51:56 I'll /msg him for when he gets back, I guess. 17:53:02 ehird, I sent a /msg to him 18:01:13 * oerjan smells a finn 18:01:51 KILL WITH FIRE 18:01:53 KILL KILL 18:02:10 no, another one 18:02:13 (i actually mean POWER, but no one knows the reference anyway) 18:02:56 POWER WITH FIRE? interesting. 18:03:11 umm no, silly 18:03:15 KILL POWER FIRE 18:03:21 ah 18:03:26 and then POWER KILL 18:03:28 that makes sense 18:03:28 not 18:04:02 hmm... that makes even less sense than the average HOMESPRING program 18:04:09 but apart from the caps is visually similar 18:04:15 :D 18:04:25 KILL POWER FIRE 18:04:42 FIRE POWER KILL 18:05:01 KIRE FOWER PILL 18:05:47 PILL ROW FREE PK 18:07:08 this channel must be the second weirdest i ever encountered 18:07:09 FLOWER KIPPER POLE 18:07:16 o_O 18:07:20 CLOWER FLIPPER MOLE 18:07:23 oklofok: Not even close! 18:07:27 *CLOVER 18:07:34 *CLOWNER 18:07:43 Slereah: well, unless you count temporary chanels 18:07:45 NOONE OWNS CL 18:07:47 *chanelzorz 18:08:01 chanel 5? 18:08:10 yeah, and 9. 18:08:29 oklofok: which one was weirder? 18:08:44 not in this network 18:08:45 (just out of interest, #esoteric seems relatively sane about half the time it's active) 18:09:24 sure, that's why it was #2 18:09:34 Esoteric is pretty sane if I compare it to some other chans. 18:09:44 Plus, it is even serious most of the time! 18:09:54 in the other channel, you often see hours of okoing without no one talking anything else. 18:09:57 *on 18:10:21 okoing? 18:10:23 assssssdf, cise is hell to implement 18:10:30 oh noes, we are not the mad enough 18:10:34 ais523: okokokokokokokokoko 18:10:43 why would anyone do that? 18:10:53 oklofok: er, are you the only person in it? :D 18:10:55 well, why not. 18:11:17 oerjan: no, we're actually a registered association :) 18:11:41 What, the ESO association? 18:11:43 association internacional de okoficacion 18:11:50 :D 18:12:01 ehird, how goes tuberculosis? 18:12:06 I wonder, are there any girls on esolang? 18:12:12 I don't think I ever saw one. 18:12:18 there was this sukoshi chick 18:12:22 there were one or two 18:12:34 *CACK* *COUGH* *ACKFOO* *GWAPF* 18:12:35 they were about as fucked up as you would expect esolang girls to be 18:12:51 *two*? 18:12:54 hmm 18:13:03 actually, i think i remember another one 18:13:08 the one i scared away 18:13:16 with the naked pics? 18:13:30 i don't remember 18:14:11 hmm 18:14:16 something about being a sexbot 18:14:19 :D 18:14:33 i should dig up the logs 18:14:57 her nick was something like gamegirl, unless she turned out to be a guy in the end, don't remember 18:15:22 actually, i vaguely recall you, lament, saying it couldn't be a girl, because no girl would put "girl" on their nick 18:15:23 anyone with "girl" in the nick is a guy, isn't that well-known? 18:15:30 probably, all of this was just a dream. 18:15:32 oerjan: vise-versa? 18:16:05 no, i definitely don't think everyone with "guy" in the nick is a girl. but i might be wrong. 18:16:13 -!- oklofok has changed nick to okloMAN. 18:16:24 believable so far 18:16:28 now change it to oklogirl 18:16:33 omg 18:16:35 no way! 18:16:39 rofl 18:16:43 okay, okay 18:16:47 -!- okloMAN has changed nick to okloHOTGIRL. 18:16:52 HEY BABY 18:16:54 see? not believable at all :) 18:16:55 i'm so gonna get banned from all the chans i'm on. 18:16:59 yes 18:17:03 -!- Deewiant has joined. 18:17:03 :D 18:17:08 lez hope not. 18:17:09 heh, most girls that I know are girls on irc use gender neutral nicks 18:17:10 -!- okloHOTGIRL has changed nick to oklopol. 18:17:14 oklopol: starting with this one :P 18:17:21 lament: nooooo :D 18:17:23 Deewiant, hi, did you see the questions I asked in /msg 18:17:25 AnMaster: that's true of men too 18:17:31 AnMaster: negative k is undefined by the spec 18:18:00 AnMaster: in my interpreter it reflects, in some it crashes or causes infinite loops :-) 18:18:00 never let your k become negative 18:18:18 talking about the k-means algo? 18:18:20 Deewiant, also in general, the instruction k execute, executes on the k, right? 18:18:21 AnMaster: if you're interested in what exactly happens across interpreters have a look at http://iki.fi/matti.niemenmaa/befunge/mycology-comparison.html 18:18:24 Deewiant: It's funny that it's taken him a few days to get close to what you did in over a year. :-) 18:18:32 Though, admittedly, he DID have Mycology &co. to test it on :p 18:18:43 so what would 2k'c do? 18:18:46 ehird: most of the time was spent in writing Mycology, not the interpreter :-) 18:18:53 everything gets finished in a day, or in about a year 18:19:07 make that over a year 18:19:11 Deewiant, I have used mycology on my befunge interpreter (not complete yet, but the 93 part is complete) 18:19:19 Deewiant: Hehe. Still, in *Bash*.. 18:19:25 ehird, indeed 18:19:29 ... Next up: Besed-98? :-) 18:19:39 AnMaster: it's not 100% specified whether k executes on or off the k, personally I think it's on the k 18:20:06 AnMaster: 2k'c is something that could do pretty much anything depending on how you want to think about it 18:20:17 it's similar to the issue with nested k 18:20:32 Deewiant, what would you recommend a interpreter to do in those cases? 18:20:44 AnMaster: Print out messages implying that it is a toaster. 18:20:52 i.e. if you need to execute something that moves whilst within a k, do they all execute from the k or only the first or none of them or what 18:20:58 a *hot* toaster 18:21:01 sort of like the ask-the-user on division by 0? 18:21:07 It should output to the bell. 18:21:13 Your computer has a bell output, no? 18:21:19 ais523: hah 18:21:26 Deewiant, I find the 98 specs are quite unclear over k really hm 18:21:36 Slereah: for(;;){printf("\7");fflush(stdout);} 18:21:40 AnMaster: there was some correspondence between Jerome Quelin (author of Language::Befunge), Mark Glines (author of Befunge98 [the interpreter]) and myself about nested k which somewhat relates to these questions of yours 18:21:42 (note that division by zero produces a result of zero in Funge-98, but Befunge-93 instead is supposed to ask the user what they want the result of the division to be) 18:21:46 Slereah: for(;;){printf("\7***TOASTING***\n");fflush(stdout);} 18:21:47 Heh 18:21:59 AnMaster: and yes, they are. as they are on many other things. 18:22:33 Deewiant: You should write a Trefunge test-suite. 18:22:35 wait, did I say Mark Glines? err. I meant Lee Houghton. 18:22:43 Or -- a program that algorithmically generates an N-dimensional test suite! 18:22:45 Deewiant, hm maybe someone should make those issues clearer? (at least C standard says things are undefined ;) 18:22:53 ehird: sh'ya right :-D 18:23:09 AnMaster: I suppose you could ask Chris Pressey about that if you're interested 18:23:11 Deewiant: even an autotester 18:23:16 AnMaster: I'm not sure if he is, though ;-) 18:23:32 Deewiant, errm who? 18:23:35 % ./Ncology -s 1 -e 100 -p Nfunge 18:23:49 AnMaster: guy who invented Befunge 18:23:57 ..........................FAILS on 64d: Quaridor fails to jeuros through-outen the vinn. 18:24:29 AnMaster: he comes by here every few months 18:24:31 hm 18:24:52 When was the last time! 18:25:03 I probably would have implemented correct nested k -handling in my interpreter but it would have turned out to be too tricky so I got lazy :-) 18:25:16 probably along the same time as he last edited the wiki... lessee 18:25:19 Deewiant, so what does your interpreter do on nested k? I can't get the the gcc d compiler to compile on 64-bit so... 18:25:35 can I paste five lines on Befunge here? 18:25:38 s/on/of/ 18:25:58 and if not, is there a pastebin you guys use or something 18:26:03 Deewiant, and also what does it do on for 2k'c 18:26:17 AnMaster: I'm not sure, but I think it'd first push ' and then c 18:26:18 Deewiant: Yes! pb.eso-std.org 18:26:19 that would be Nov 13 18:26:21 (Note: May not be up yet) 18:26:25 For now, pastebin.ca :-) 18:26:30 Deewiant, interesting, and what about 3k'c then? heh 18:26:33 ehird: :-) 18:26:48 ehird, Firefox can't find the server at pb.eso-std.org. 18:26:49 AnMaster: 3k'ca would push ', c, and then a. (I think.) 18:26:53 AnMaster: GOSH REALLY 18:27:10 ehird, ah right, didn't read the "may not be up" line 18:27:23 AnMaster: I'm not 100% sure to be honest, since 2k# jumps twice from k I guess that's how ' would work 18:27:31 Deewiant, and if the line ends after the c? 18:29:04 Deewiant: Hey, you should write the Befunge-98 lexer for eso-std's pastebin. Pygments' is horribly b0rken. :P 18:29:21 Deewiant, so, summary, these instructions are not allowed in k: ", ; and space (and don't reflect) these are allowed but behaviour is unclear: k ' and s. 18:29:23 I think Befunge-98 would be extremely hard to parse properly within pygments though 18:29:25 is that correct? 18:29:36 AnMaster: it'd push a space as is standard for acccessing outside bounds 18:30:13 AnMaster: space and ; are somewhat unspecified/unclear as well, the spec says they're not to be executed but whether that means they're ignored or reflected on is up to you 18:30:25 AnMaster: http://pastebin.ca/932396 18:31:17 hmh, that code is misaligned for some reason 18:35:27 hm, I'd give a warning and not reflect on nested k. As for nested ', I'd push the char after the ' the given number of times for k to iterate, then continue after the k'c (or whatever char) 18:35:48 err not " nested ' " 18:35:51 so what about 2k# then 18:35:54 remove nested in that place 18:36:06 does it make sense to you that it jumps only once? 18:36:07 Deewiant, for that mycology got a test, I would follow that test 18:36:14 AnMaster: I wrote that test. :-P 18:36:23 Deewiant, indeed I know that 18:37:00 I'm just saying that you're going to have some special casing to do if you want them all to "feel logical" 18:37:08 negative iterations on k, on *nix: reflect on windows: format c: 18:37:13 *runs* 18:37:37 i.e. 5k# jumps 5 times, but 5k'c pushes c 5 times <- one of those has to be a special case 18:37:40 Deewiant, I already special case k, as I do the "ip forward" bit at the end of the main loop. 18:38:05 AnMaster: Windows will prompt the user for the volume label of the hard drive if you do that 18:38:07 I mean that you're going to need separate cases depending on what instruction k is executing 18:38:12 as a check against accidentally formatting it 18:38:18 ais523, aww 18:38:32 ais523: and further, if windows is installed on C, it'll say that the volume is in use even if you say yes to the "are you sure" 18:38:48 * ais523 didn't realise that Windows did a volume-in-use check in such cases 18:39:10 AnMaster: and you can't really write a separate case for every instruction especially if you plan on implementing (m)any fingerprints :-) 18:39:12 I mean that you're going to need separate cases depending on what instruction k is executing <-- yep 18:39:41 Deewiant, I plan a minimal befunge98 implementation as I do it in bash(!) 18:39:47 * ais523 thinks k should always reflect with a negative argument 18:39:51 AnMaster: the way it's specified, I don't think there should be any special cases 18:39:56 ais523, yeah 18:40:09 because there is no way to run a command a negative number of times 18:40:09 AnMaster: apart from the invalid instructions like "; 18:40:23 which is why Underlambda only supports nonnegative integers in its stdlib 18:40:47 ais523, hm, I'm sure it would be possible in TURKY BOMB ;) 18:41:00 (what with all their "half a bit wide" and such) 18:41:03 (or to be precise tier 4, which acts like an arithmetic stdlib, and has a low tier number because most implementations will want to optimise it for performance) 18:41:24 AnMaster: there's no syntax to express it in TURKEY BOMB but it fits well into the spirit of the language ;) 18:41:35 ais523, exactly 18:41:36 AnMaster: implement the TRDS fingerprint, it's a nice one 18:42:18 Deewiant, I'm not even sure how to do fingerprints, currently my plan for the negative funge space thing is four arrays around the origin, one for each quadrant 18:42:36 TRDS is the time travel fingerprint 18:42:56 really annoyed me, probably spent a month on that one alone 18:43:02 Deewiant, that reminds me, the funge registry thing link at http://catseye.tc/projects/funge98/doc/funge98.html is broken 18:43:19 and then the first test I run against RC/Funge leads to it crashing 18:43:19 so where do I find out about such things 18:43:19 AnMaster: yeah, it doesn't exist 18:43:20 like what handprint I should use and such 18:43:33 although I think there's an archive of it somewhere, sec 18:43:44 currently I use the sum of the values of the ASCII chars in Bashfunge 18:43:47 http://catseye.tc/projects/funge98/doc/old_index.html 18:44:24 AnMaster: my Mycology page links to all Befunge-98 interpreters I know of and has downloads for any that've fallen of the 'Net, too 18:44:26 Deewiant, and what about the finger print registry? 18:44:52 and Mycology tests almost every fingerprint that has been implemented on any of said interpreters :-) 18:45:06 and the Mycology readme refers to the two or three that it doesn't test 18:45:07 the registry doesn't appear to be on catseye.tc, at the moment 18:45:17 ais523: I linked to it above 18:45:17 Deewiant, hm, and where do I find docs on the different fingerprints? 18:45:37 AnMaster: in the readmes of the interpreters that first implemented them, mostly 18:45:46 sigh 18:46:15 AnMaster: RC/Funge-98, the jvh version of same, and then http://catseye.tc/projects/funge98/ 18:47:04 Deewiant, also, for y instruction, byte size, what should your return in, say, an interpreted languages that treat everything as strings (like bash do)? 18:47:19 or if you use bignums 18:47:28 eh 18:47:31 I dunno :-P 18:47:52 maybe the amount of memory installed? :-) 18:48:11 hmh, the specs are clear as usual 18:48:12 " Typically 4, could also be 2, 8, really really large, infinity, etc." 18:48:19 I wonder how one would push infinity as an integer 18:48:50 AnMaster: I'd just push a really big number. 18:48:56 I'd give special meanings to negative values returned from that y request, like -1 = BIGNUM/infinity -2 = Not applicable -3 = Implementation defined 18:49:19 -3? of course it's implementation defined, you're asking the implementation what it defines it as :-) 18:49:31 something like that would be nice but it's not in the spec. 18:49:35 Deewiant, ok "-3 = none of these" 18:49:44 (say, quantum befunge)? 18:49:54 Deewiant: certain floating-point bitpatterns are defined to mean infinity 18:49:58 I thought about writing an "unofficial spec" which would clarify everything but decided against it, there are already two standards 18:50:05 but that's not very helpful for an interp which only uses integers 18:50:11 ais523: yes, but this is an integer we're talking about. 18:50:19 Deewiant, so I'd do befunge08 18:50:20 "In Funge-98, stack and Funge-Space cells alike should be treated as signed integers of the same size. " 18:50:23 * AnMaster fires up lyx 18:50:27 ais523: it's defined as above 18:50:42 maybe we need a Funge-08 18:50:56 AnMaster: we already have 3 standards only 1 of which is properly defined and only 1 of the latter 2 was ever really implemented properly :-) 18:51:11 Deewiant, bashfunge does a workaround for that, it can't store \0 in a variable, so results with \0 are stored as the *string* NUL heh 18:51:32 personally I think Funge-98 is interesting enough in itself, a new standard wouldn't be of much use to anyone 18:51:45 * ais523 is a big Funge-98 fan too 18:51:45 AnMaster: gotta love bash :-) 18:51:46 Deewiant, well, 98 is so unclear 18:51:58 only in corner cases, though 18:51:59 -!- Judofyr has joined. 18:52:17 I'm speccing up Underlambda as a set of rewrite rules, with side effects specified in English 18:52:23 I doubt that that would help for Befunge, though 18:52:32 -!- timotiis has joined. 18:52:38 ais523, I think it should at least say "on blah the result is undefined" like the C standards do 18:52:49 AnMaster: the trouble is that there are so many cases to consider 18:52:56 especially with the fingerprint mechanism 18:52:57 AnMaster: are you referring to Befunge or Underlambda? 18:52:59 not knowing if it is undefined, or somewhere else in the standard is a problem 18:53:07 I decided early on not to test separate fingerprints together 18:53:15 Deewiant, well yes, I'd implement 0 fingerprints 18:53:20 the universe would end trying to put them together 18:53:38 Deewiant, also a working registry is needed IMO 18:53:50 AnMaster: aye, but as originally specified you can have fingerprints, so when you think from the viewpoint of the spec-writer it's tricky to go through everything 18:54:30 AnMaster: the days of standardizing funge-98 are over, in the meanwhile we make do with what we have :-) 18:54:33 Deewiant, what is the license of the 98 standard document itself? 18:54:44 -!- RedDak has joined. 18:54:50 AnMaster: beats me 18:54:58 AnMaster: has a copyright at the bottom apparently 18:55:25 Deewiant, doesn't say if you are allowed to make changes to it or not 18:55:42 AnMaster: I doubt mr. pressey is that much of a jerk :-P 18:55:47 by default things like that are copyrighted all-rights-reserved, unless the author states otherwise 18:55:48 * AnMaster would be much happier with something like GFDL or even CC-by-sa 18:56:07 AnMaster: at the time, such things weren't as much an issue as today 18:56:08 I suspect that you'd get permission if you asked for it, but I think you do have to ask to avoid breaking the law 18:56:17 ais523, indeed 18:56:22 anyone know his email? 18:56:30 it's on the web page 18:56:54 maybe on the site, but not on the page 18:56:56 * ais523 is amused that cats-eye.com has been domain parked, and the domain parkers have put a picture of a dog at the top 18:57:55 Deewiant, can't find the email? 18:58:34 AnMaster: http://catseye.tc/about/catseye.html 18:58:45 ah 18:59:53 ais523: hurray for the {{catseye}} template! 18:59:57 the snarkiest template on all wiki. 19:01:17 * ais523 has to go, anyway 19:01:19 -!- ais523 has quit ("bye!"). 19:08:42 oh no, he went. we are not observed any more. does that mean we cease to exist? 19:08:43 Deewiant, I sent a mail about it 19:09:22 AnMaster: I hope he's not interested, I'd hate to have to rewrite more bits of Mycology ;-) 19:09:42 Deewiant, then I'd write a Funge08 standard from scratch 19:09:56 AnMaster: and I'd be happy to not implement it ;-) 19:11:00 Deewiant, I aim at making it compatible. The only thing I'd is clean up corner cases, and add a new instruction to be able to modify some rules at runtime (say, should we use befunge93 or funge98 style spaces?) 19:11:22 -!- otesanek has joined. 19:11:28 in bash at least, the latter is quite easy 19:11:44 I would just redefine the function that handles the " instructions on the fly 19:11:46 :) 19:12:05 or just add a check in the handler 19:12:23 Deewiant, yeah, but that is slower to execute ;) 19:12:33 yeah, I suppose 19:12:52 Deewiant, also I can't get your interpreter to compile, because I can't get gcc d compiler to compile 19:13:07 complain to the GDC folks :-) 19:13:14 hm 19:13:33 join #d and ask about it 19:13:43 -!- RedDak has quit (Read error: 113 (No route to host)). 19:14:29 I've been thinking of making a linux binary but never got around to it 19:14:58 Deewiant, for what arch? 19:15:05 x86, it's all I've got 19:15:09 I got x86_64 19:15:18 but I could run it in 32-bit mode then 19:17:03 -!- RedDak has joined. 19:17:16 Deewiant, btw does j wrap? also what about say a program consisting of this only: ff*j 19:17:23 everything wraps 19:17:39 would that wrap a lot of times? 19:17:39 hm 19:17:46 Deewiant, so when mycology tests s at -1,-1, where should result end up? 19:18:31 hmm? it does 501-01-p or something, right, and expects to get 5 back when it does 01-01-g 19:18:51 err not s indeed 19:18:54 g I meant 19:18:59 (late here) 19:19:23 Deewiant, ok, so it shouldn't put a value in negative fungespace? 19:19:35 of course it should, that's what p is defined as doing :-) 19:19:50 but it doesn't actually test that by jumping to -1,-1 though 19:19:58 although it prolly should 19:21:13 Deewiant, hm, I think we should have several possibilities for implementations here, allowing them to implement only some quadrants ;) just to make test suite writing as hard as writing implementations 19:21:32 no no, the spec is quite unambiguous on this one ;-) 19:21:51 and trust me, writing the test suite was much harder than writing CCBI :-D 19:22:00 but adding stuff to y would break things "abusing" y to get a value from the existing stack 19:22:19 ah, that doesn't work on most impls anyway 19:22:54 Deewiant, it doesn't on mine either, I push -27315 and print out "the coder is a jerk" 19:22:58 AnMaster: hint: easy way of implementing Funge-Space is to use a hash table or equivalent, if your lang provides such 19:23:26 Deewiant, bash doesn't, I use an array that wraps every nth entry, so [n * y +x] 19:23:37 and when it needs to grow, it reallocates the entire thing 19:23:41 time consuming I know 19:23:50 (at least it is a sparse array) 19:24:04 bash only provides single dimension arrays 19:25:47 Deewiant, btw, writing a test suite would be easier with less compact code, I wrote some tests for my interpreter, fewer tests than mycology but more lines in file 19:25:55 not a lot on each line though 19:26:05 that's not the hard part 19:26:12 the problem is that you can't assume instructions work 19:26:16 or that's how I tried to do it 19:26:28 so that you get maximal info even if some instruction prior doesn't work at all 19:27:17 Deewiant, oh and mycouser.b98 doesn't check y if unbuffered input is used 19:27:29 so it wants an extra enter after asking for a char 19:27:43 just hold down the button then :-) 19:27:44 my interpreter uses unbuffered input 19:28:06 mycouser can't really assume y works either, since it's befunge-93 as well 19:28:07 Deewiant, well, shouldn't it check 1y for that flag ? 19:28:12 Deewiant, ah ok 19:28:13 right 19:28:35 you could check if it is 93 or 98, like you do in the main test suite 19:28:36 ;P 19:28:46 I couldn't be bothered 19:28:55 I do do something though since it checks a few fingerprints 19:29:09 yeah 19:29:45 also "cell size in bytes", what about a trinary funge? 19:29:57 or in future, one using qbytes? 19:30:09 doesn't matter, it still stores a set amount of data in each cell? 19:30:19 (or infinity) 19:30:37 Deewiant, yep but funge98 says: "1 cell containing the number of bytes per cell (global env)." 19:30:41 that wants it in bytes 19:30:54 but it may not be bytes, or not whole bytes, and so on 19:30:56 hey, even bytes is poorly defined 19:31:02 8-bit bytes? 24-bit bytes? 19:31:07 Deewiant, aren't they always 8 bits? 19:31:08 Deewiant: byte = 8-bit 19:31:11 no 19:31:12 that's the definition of 'byte' 19:31:16 http://en.wikipedia.org/wiki/Byte 19:31:19 ehird, I thought so too 19:31:21 (It is not the definition of 'char' in C, however.) 19:31:31 (But mostly 'char' is 8-bits in C.) 19:31:35 (sizeof(char) == 1 in C, always, though.) 19:31:40 "historically, bytes have ranged from five to twelve bits." 19:31:49 ok 19:31:50 that's fskced 19:31:51 :) 19:31:51 "Bytes of six, seven, or nine bits were used on some computers, for example within the 36-bit word of the PDP-10." 19:32:00 "The UNIVAC 1100/2200 series computers (now Unisys) addressed in both 6-bit (Fieldata) and 9-bit (ASCII) modes within its 36-bit word." 19:32:04 etc. :-) 19:32:12 ehird, so if char is 16 bits, then what would sizeof a type of less bits be? 19:32:23 there is no such type 19:32:32 ah, char must be smallest? 19:32:36 yep 19:32:57 right, then that part of the standard needs to be cleaned up 19:33:11 are you making notes? :-) 19:33:26 Deewiant, I am 19:34:33 -!- otesanek has left (?). 19:34:45 Deewiant, I would add some special negative values, one being "something else" or such, then a y request of, say, 21 would return if it is binary/trinary/and so on and if 21 returns -1 it would be "qbits", a value of 0 = none of these 19:34:49 something like that 19:35:07 the thing is they have to be of use to the program 19:35:08 22 would then define the size of the cells in the unit of 21 19:35:09 :) 19:35:11 read funge-98 19:35:16 was quite simple 19:35:19 oklopol, I have 19:35:34 point is, it doesn't work for a trinary funge or such 19:36:04 if it uses qubits it still has to return some kind of meaningful value instead of just "some qubits" 19:36:13 or where there is no byte size, say, language interpreter is coded in is treating everything as strings 19:36:19 AnMaster: i read it, i meant 19:36:21 Deewiant, indeed 19:36:37 so... funge-98 doesn't have n-funge? 19:36:43 sure it does 19:36:45 oklopol, it does 19:36:53 it introduced them :-P 19:36:53 however, that is n dimensions 19:36:54 hmm, i missed that then :) 19:37:09 but it assumes binary 19:37:20 ...binary? 19:37:29 oklopol, as in "not trinary" 19:37:31 or such 19:37:35 (fournary?) 19:37:39 oh, right 19:37:39 quaternary 19:37:42 ah 19:37:49 anyway, where's n-dimensionality defined? 19:37:52 in the spec 19:37:57 probably in a footnote at the bottom or something 19:37:58 aside from trefunge 19:38:23 Funge-98 is a class of three real and officially sanctioned programming languages (Unefunge, Befunge, and Trefunge) and provides a paradigm for describing any number of imaginary ones with different topologies and any number of dimensions." 19:38:32 this was said in the beginning 19:38:37 there you go 19:38:40 oklopol, yes, "any number" indeed 19:38:43 but i didn't actually see any standardization on that 19:38:50 there's not much to standardize 19:39:03 Deewiant, however, what about 2+3i-funge (no idea how to implement) 19:39:12 or 1.84-funge? 19:39:24 AnMaster: how would you define a nonintegral space :-) 19:39:34 I mean, go ahead by all means 19:39:35 Deewiant, indeed, no idea 19:39:42 hmm, i guess x can, in theory, set any vector to be delta. 19:39:46 like it says under "Other Topologies" 19:39:57 where does it get the length of the vector? 19:40:01 oklopol: "vector" is defined as "n numbers where n is the number of dimensions" 19:40:08 Deewiant, however, please see http://catseye.tc/projects/turkeyb/doc/turkeyb.html 19:40:11 oklopol: so in befunge, it's always 2 numbers, in trefunge it's 3, etc. 19:40:23 Deewiant, "Two thirds of a bit plus half a trit." 19:40:23 fractional spaces are fractals. may be hard to do with a minimum cell distance though 19:40:36 AnMaster: :-) 19:40:37 An RPC client library based on JSON (so loads of good language support) in 119 lines of Python, even including an HTTP proxy for it. Woot. 19:41:00 The x "Absolute Vector" instruction pops a vector off the stack, and sets the IP delta to that vector. 19:41:00 A vector on the stack is stored bottom-to-top, so that in Befunge, x (and all other vector-popping instructions) pops a value it calls dy, then pops a value it calls dx, then sets the delta to (dx, dy). 19:41:03 oerjan, I never understood how "fractional spaces are fractals" work 19:41:07 this is all that's said about x. 19:41:24 oh, so it's just a preset amount of dimensions? 19:41:27 oklopol: "http://catseye.tc/projects/turkeyb/doc/turkeyb.html 19:41:30 darn 19:41:30 lol. 19:41:32 oklopol: "a vector (set of co-ordinates)" 19:41:40 Deewiant: TURKEY BOMB is odd yet. 19:41:41 *yes 19:41:41 oklopol: " The origin is (0, 0) in Befunge, (0) in Unefunge, and (0, 0, 0) in Trefunge. " 19:41:49 Deewiant, ehird is trying to make a turkey bomb interpreter btw 19:41:56 ehird: good for you :-) 19:42:04 i've always assumed funge-98 supported infinite dimensions 19:42:34 oklopol, the size of a vector grows with one cell for each dimension 19:42:54 AnMaster: and that has what to do with what? 19:43:06 oklopol, that the standard does define it 19:43:27 the standard doesn't say anything about infinite dimensions 19:43:28 vector on stack (top -> bottom) zxy in 3-funge 19:43:35 there's a preset amount of dimensions 19:43:39 there English fails 19:43:52 you can add 3 more dimensions using Swedish 19:44:02 yeah, or finnish 19:44:03 öäåzyx 19:44:04 oklopol: no, it has to be finite if it's to be Cartesian 19:44:07 oklopol, indeed 19:44:13 anyway I meant zyx above 19:44:16 not zxy 19:44:17 Deewiant: no 19:44:22 it can be *extendable* 19:44:35 Deewiant, yes but you could always add one :P 19:44:39 in a lazy funge, it could actually be done with the current x instruction 19:44:47 but laziness isn't defined either 19:44:49 oklopol, just store all as bignums 19:45:00 AnMaster: that doesn't help. 19:45:02 oklopol, tell me more what you mean with that? 19:45:12 adding dimensions on demand? 19:45:32 just that i could start moving into any dimension 19:45:45 how would that work 19:45:48 using x 19:45:53 oklopol, indeed, but how would x know how big the vector should be? 19:46:04 so that you' use 0"gnirts", for instance 19:46:06 but you don't 19:46:13 oklopol, ah sounds good 19:46:22 however, a problem 19:46:28 that's how i've done it, made a befunge extension a few years ago 19:46:35 0 is a valid delta in a dimension 19:46:37 before i knew much about befunge 19:46:48 mind you, it's a lot more complicated and extensive than funge-98. 19:46:50 say, you mode 0 in the first dimension and 1 in the second 19:46:55 that would be equal to > 19:47:04 oklopol, got a link? 19:47:04 because even rail is more complicated than that :) 19:47:12 i don't have much online. 19:47:16 aww 19:47:22 i have exactly one language online. 19:47:26 oklopol, what is rail? ruby on rails? 19:47:35 and one graphica example on my page 19:47:38 err no 19:47:44 rail @ esolang 19:47:47 * AnMaster looks 19:48:08 rail has function entry points at a semantical level, funge doesn't seem to 19:48:13 nope 19:48:17 it's all 'goto' 19:48:23 yeah. 19:48:33 not even 'gosub' :-) 19:48:38 heh :) 19:50:03 anyway clearly funge98 needs to be extended 19:50:08 * oerjan suddenly wonders if you could combine gosub and COME FROM 19:50:23 indeed. the turtles need to be cleverer 19:50:28 oerjan, hm what about come to? 19:51:03 no, I got no idea what come to would do? 19:51:08 oerjan: rewrite the come from line to have the line of the return line? 19:51:24 come from is one hot concept 19:51:45 COME TO PAPA 19:51:58 -!- Judofyr has changed nick to JudoBot. 19:52:24 oh, right, and rail isn't mine, in case i wasn't clear about that and the page is neither 19:52:26 ah, the truth is revealed 19:52:30 COME TO: maybe a probability for the program to jump to that point at any time? Like gravity this probability would decrease when you get further from the statement? 19:52:32 what about that? 19:52:33 once again, i cannot open pages 19:52:34 he was not human at all 19:53:03 -!- JudoBot has changed nick to Judofyr. 19:53:17 * AnMaster looks at Judofyr 19:53:43 what's that one language on esolang where every operation only *probably* works? 19:53:46 or are there multiple? 19:53:52 I'm using wi-wi-wi-windows 386! 19:54:01 All my applications are running at once! 19:54:05 i'd like to see that, but once again, i need a straight link so i can dl via a friend 19:54:18 Java2K 19:54:26 ah 19:54:32 remembered it had a j 19:54:52 damn 19:55:01 what? 19:55:01 my downloader has disconnected :P 19:55:07 anyone wanna send me the spec on dcc? 19:55:09 oklopol, why not just browse the web? 19:55:12 i'm feeling eso tonight 19:55:23 well, i cannot open webpages right now 19:55:30 oklopol, dcc? should I dcc them to you? 19:55:31 don't ask me why, i don't know and i don't care :) 19:55:40 AnMaster: if it's not too much trouble. 19:56:03 oklopol, well how can you recieve it then? 19:56:23 dunno why, but dcc works. 19:56:27 just sounds like chicken or egg first problem to me 19:56:41 irc and messenger work fine 19:56:56 oklopol, so you want me to send over DCC, the specs for DCC? 19:57:01 may I ask why 19:57:16 Judofyr: I have data here, I have data there 19:57:16 what about ftp? 19:57:18 i'd like to read 'em 19:57:19 I have data that has never been together 19:57:24 Wi-wi-wi-windows 386! 19:57:29 yes! 19:57:29 oklopol, is it so you know how to implement DCC so you can receive the specs on DCC so you can... 19:57:31 ;P 19:57:50 oklopol, what about gopher? would be easier for me 19:57:55 * AnMaster runs a gopher server 19:58:00 gopher! 19:58:00 AnMaster: umm... java2k specs that is 19:58:02 :) 19:58:05 Deewiant, :D 19:58:08 i don't need dcc specs 19:58:13 what's gopher? 19:58:14 anyone wanna send me the spec on dcc? 19:58:26 * oklopol is even stupider than usual without google 19:58:27 oklopol, that sounded like you wanted the specs on dcc 19:58:33 http://weblog.jamisbuck.org/2008/3/6/when-duplication-is-not-duplication This is so wrong. Two or more, use a for! 19:58:36 yeah, i didn't realize that, sorry 19:58:55 stop linking stuff! :D 19:58:57 AnMaster: do you actually /use/ gopher? 19:59:20 Deewiant: He runs a server so he can tell everyone he runs a gopher server. 19:59:25 Same reason he uses Bash.. 19:59:32 ah, I see 19:59:38 Deewiant, yes to make ppl on irc ask about it 19:59:39 :P 19:59:43 but bash I use more in fact 19:59:58 Deewiant, http://envbot.org <-- modular irc bot in bash, and project is serious 20:00:31 sure, "serious" in the sense that it's not a joke, but /why/? :-P 20:00:33 Deewiant, anyway gopher://inspircd.dyndns.org (yes it is a bit empty) 20:00:36 it's serious so far as AnMaster runs it to make people ask why. 20:00:40 (Do you see a pattern here?) 20:00:45 ehird, no in fact not 20:00:49 Deewiant, because it is fun 20:00:53 * oklopol is starting to think no one will send the spec to him 20:00:54 AnMaster: inspircd is a real program you know 20:00:55 and a challenge 20:01:00 ehird, yes I know 20:01:19 I used to be on the QA team of inspircd, quit though, had too little time for it last yea 20:01:20 year* 20:01:24 I've never found shell scripts fun, but to each his own I guess :-) 20:01:28 got more time now, so I may rejoin 20:01:39 ehird, so yes I know about inspircd :) 20:01:39 * oerjan is reminded of once dilbert lost his net access 20:01:58 oklopol, I'll do when I find out how to do dcc from erc 20:02:06 what client? 20:02:09 please don't flame about that I use ERC 20:02:14 oklopol, I said ERC didn't I? 20:02:15 ah. 20:02:21 irc client for emacs 20:02:22 AnMaster: inspircd is far too unmodern.. 20:02:22 i'm not aware of that 20:02:23 :) 20:02:36 ehird, it is? nah, I would say it is cutting edge 20:02:40 I oughta code IRCd That's Actually Modern, You Know, Like, No Code From 1992, I Mean Sheesh 20:02:41 i'm guessing /dcc 20:02:47 ehird, what one would you call modern then? 20:02:47 itamyklncf1ims 20:02:56 oklopol, "unknown command" 20:03:04 erc can't do dcc 20:03:09 ehird, ah 20:03:10 heh 20:03:15 maybe I could write a module to do it 20:03:20 just I suck at elisp 20:03:22 AnMaster: already done 20:03:23 erc-dcc 20:03:26 but erc is just a toy. 20:03:27 seriously. 20:03:27 ehird, ah right 20:03:33 ehird: btw. cise has turned out to be quite a task 20:03:53 oklopol: I want the spec! 20:03:53 :( 20:04:01 didn't finish the spec, because i had a sudden inspiration to just implement it :D 20:04:03 Deewiant, btw when I do funge08, it will be in LaTeX 20:04:08 oklopol: let me tryyy 20:04:09 :D 20:04:11 Deewiant, using the GUI frontend lyx :) 20:04:12 AnMaster: good luck with that :-) 20:04:26 Deewiant, well lyx is easy, and I love lyx 20:04:29 ehird: nooooo, you'll just ruin my fun :) 20:04:35 pure latex would be hard 20:04:50 Deewiant, http://www.lyx.org/ 20:04:54 ummm 20:04:56 latex isn't hard 20:05:01 But I think TeX is the nicest. 20:05:04 Pure, unadulterated TeX. 20:05:18 ehird, ok right, don't say my interest for bash is insane then :P 20:05:29 TeX is simple. 20:05:30 And nice. 20:05:33 oklopol: naww 20:05:35 I suck at parsers 20:05:38 let me try horribly 20:05:59 ehird, so do I, so I prefer languages where each char is an instruction 20:06:05 like brainfuck or funge 20:06:07 ehird: this is no ordinary parsing ;) 20:06:30 oklopol: lemme try :D 20:06:36 AnMaster: I certainly don't prefer those. 20:06:38 you have to constantly type check as you parse, and choose the first parse tree without type mismatches 20:06:42 They're unimaginative, for the most part. 20:06:46 oklopol: wow, that sounds awesome 20:06:48 ehird, for parsing them that is 20:06:51 let me try, i'll make it terrible 20:07:00 not for writing parsers in 20:07:01 :P 20:07:06 ehird: it is very awesome, indeed :) 20:07:27 oklopol, fun! 20:08:02 it's basically prefix, but type checked and with currying 20:08:03 can you in java2k actually write a program that does the same thing every time it is run? 20:08:26 AnMaster: yes, iirc 20:08:32 AnMaster: i think you can make a metaprogram that gets you any desired *probability* of it working. 20:08:42 oklopol, 100%? 20:08:43 the exact answer would be no, though, iirc. 20:08:54 AnMaster: no 20:08:57 i mean 20:08:59 limit of 100 20:09:06 oklopol, is it turing complete then? 20:09:21 http://www.p-nand-q.com/humor/programming_languages/java2k/13.txt 20:09:23 hello world2k 20:09:25 i guess technically no, but do realize ehird recalled differently. 20:09:31 http://www.p-nand-q.com/humor/programming_languages/java2k/26.txt 20:09:32 ah 20:09:33 this prints out F 20:09:45 is it long? paste it to me if not :< 20:09:52 oklopol, it certainly is 20:09:56 * oklopol is retarded 20:09:58 I could pastebin it though 20:10:02 ... 20:10:04 ;P 20:10:08 :D 20:10:14 'Java2K uses a 11-based number system, which is a very good approximation of the 10-based decimal system for many purposes, including counting up to and including 9.' 20:10:14 :D 20:10:14 oklopol, tried restarting your router? 20:10:32 ehird: i lolled too :D 20:10:33 heh indeed 20:10:41 AnMaster: no. i don't want to disconnect irc... 20:10:44 :< 20:10:45 -!- ehird has set topic: Fe fi fo funge, I smell the brainfuck of an Englishman. | pastebin - http://pb.eso-std.org/. 20:10:49 lulz, not yet :D 20:10:55 ehird, I'm thinking of not doing safety in PSOX 1.0 and just having the filesystem domain manipulate indivitual files 20:10:58 oklopol: get a decent client, sheesh ;) 20:11:02 Sgeo: lulz 20:11:05 That is, there will be an rm, but no rm -r 20:11:16 ehird: a decent client will not disconnect if i restart my router? :o 20:11:19 pikhq: Sgeo, PSOX, tank, skateboard, tanks are filled with water. 20:11:25 oklopol: no 20:11:28 but it will remember everything 20:11:29 oklopol, depends 20:11:34 so you'll be out for about 3 mins 20:11:34 max 20:11:37 ehird: i have konversation 20:11:45 can it be made remember? 20:11:47 :) 20:11:56 oklopol: yes 20:11:57 oklopol, with static ip it *may* be possible for client and server not to note that you disconnected 20:11:58 go into networks 20:12:00 i'm assuming you know everything about it becauseeeee you were using it iirc 20:12:00 edit Freenode 20:12:05 assuming you reconnects fast enough 20:12:08 add to channel list 20:12:19 voila, channels auto-joined on startup/connect 20:12:48 oklopol, you may also want your client to auto identify to services on connect 20:13:06 -!- jix has joined. 20:13:11 yes 20:13:15 add to auto commands: 20:13:18 /msg nickserv identify FOO 20:13:20 and voila 20:13:24 tbh i can't find "networks". 20:13:26 you can also tick 'connct at startup' 20:13:28 oklopol: its in the first menu 20:13:30 on the menu bar 20:14:48 Heh. 20:14:57 define "in the first menu", it's not in any of the basic menus or "settings" :) 20:15:24 *because 20:15:58 * Sgeo wonders if YouOS is Still Alive 20:16:29 ehird: found it 20:16:33 thanks 20:16:57 it was "server list", so naturally my robot brain saw no relation to "networks" 20:17:35 ah 20:17:36 :) 20:17:51 Sgeo: Hmm. 20:17:56 Another "Web OS" 20:18:02 How interesting, exciting, and useful. 20:18:16 I made some apps for i 20:18:17 it 20:18:28 hmm... i guess it's not that bad that i'm actually searching through the whole tokenization space + parse tree space... 20:18:38 oklopol: plz spec 20:18:53 O(k^n) parsing, where k depends on similarity of tokens 20:19:25 Although I agree taht it's mostly pointless 20:19:37 http://squatt.er/ would be a great name to be domainsquatted 20:19:46 oklopol: 'similarity'? 20:20:16 what country is er? 20:21:13 ehird: hard to define 20:21:23 hm cannot find it 20:21:25 the point is, you get an exponential amount of tokenizations 20:21:40 and for each tokenization, and exponential amount of parse trees 20:21:55 so, perhaps "second order" exponential number of possibilities 20:22:11 the expression separator is finally starting to make sense 20:22:13 :) 20:23:30 ehird: i conclude that .er would be a great name to be domainsquatted 20:24:33 oh, Eritrea 20:25:33 Personally I can't wait for the Somali government to ... come back into existence. 20:25:43 And hopefully sell domains to anyone. 20:25:46 http://en.wikipedia.org/wiki/.er 20:26:08 rochest.er (lame delegation - delegated servers have no such zone) 20:26:09 heh 20:26:17 .er is great for obscenities 20:26:19 http://fuck.er/ 20:29:58 ehird: What happened to your IRC-bot/parser? 20:30:38 -!- Corun has quit (Read error: 110 (Connection timed out)). 20:31:26 ehird: Direct-threaded code is Fail for portability. You cannot portably compile DTC at run-time: each Forth word will be a list of function calls. But with my indirect-threaded code, each Forth word is a list of word addresses; more portably compilable. 20:33:02 * oerjan gets the deja-vu feeling 20:34:18 yeah, but ehird weasn't there the first time 20:45:57 back 20:46:03 Judofyr: What about it? 20:46:15 SimonRC: Blah blah blah blah blah THIS IS FORTH DAMNIT 20:46:17 is it usable? 20:46:28 Judofyr: No. Not yet. :( 20:53:23 how do you compile at run-time? 20:53:39 I assume you have to comma together a load of opcodes? 20:54:06 Sgeo: that isn't the last episode of fine structure. 20:54:20 SimonRC, I realized 20:54:24 ok 20:54:28 I thought that the next one would be the last, but I was wrong 20:54:33 Are you an FS fan? 20:54:38 a bit, yes 20:54:48 I liked the ed stories too 20:55:38 SimonRC: its very simple to compile at runtime 20:55:51 see: jonesforth :) 20:55:55 Any hypotheses on the unlisted story? 20:55:56 and ooh, Sam Hughes++ 20:56:14 ehird: no, joensforth uses indirect-threaded code, like I do 20:56:15 I tried looking for fiction edited in Feb. 2008, but didn't find anything 20:56:20 you use direct-threaded code 20:56:26 SimonRC: oh, yes 20:56:28 well, mine is simple 20:56:37 you see a word name 20:56:45 look it up in the dictionary, find its funcptr 20:56:49 append that to the word 20:56:56 but to compile, you must comma together a load of function calls 20:57:02 yes 20:57:03 and? 20:57:03 ehird: no 20:57:14 a string of function pointers is not executable directly 20:57:23 ehird, compiling forth? quite possible iirc 20:57:31 AnMaster: gosh, really. 20:57:35 SimonRC: yes it is 20:57:37 ip++() 20:57:37 ip++() 20:57:37 ip++() 20:57:38 ip++() 20:57:38 ip++() 20:57:38 ip++() 20:57:46 ip--() 20:57:51 ip%2() 20:57:58 err, what is the problem? 20:58:06 ok... 20:58:08 * AnMaster reads up but can't find where discussion start 20:58:14 starts* 20:58:20 but the ip points to a pointer to a function... 20:58:32 SimonRC: funcptr() works in c. 20:58:35 yes 20:58:36 it's (*funcptr)() 20:58:47 SimonRC: anyway 20:58:55 if we have '+ +' 20:58:59 ehird, prototypes prefered ;P *runs* 20:59:01 we search the dictionary for '+' 20:59:10 and a function can't be built by caoncatenating together a load of pointers 20:59:16 then, the next memory address is its length 20:59:23 then, is all the functions 20:59:25 we just take that address 20:59:28 and append it to our list. 20:59:36 ok 20:59:38 and the last thing in every function is the postlude 20:59:41 which pops the stack and goes back 20:59:46 SimonRC, ehird: may I ask what you are doing or trying to do? 20:59:48 so how do you compile ina reference to a function written in forth? 20:59:53 SimonRC: ... 20:59:54 i just told you 20:59:55 AnMaster: write a forth 21:00:05 um 21:00:08 no 21:00:09 SimonRC, there are plenty of interpreters and compilers for forth iirc? 21:00:10 SimonRC: my forth words are valid functions 21:00:21 ehird: yes 21:00:21 AnMaster: There is also a working Befunge-98 implementation. Stop writing yours. 21:00:32 Actually, stop writing any software. It's probably been done before. 21:00:34 ehird: I'll have to see this to get what you are talking about 21:00:35 ehird, ok, point taken 21:00:38 ;P 21:00:54 but forth isn't really esoteric is it? 21:01:39 no 21:01:39 it isn't 21:01:39 * AnMaster makes a difference between "writing yet another compiler/interpreter for an esoteric language" and for "normal languages" 21:02:24 for a "mainstream/normal" language, I would try to improve existing tools, or have a extremely good reason to create a new one 21:02:30 AnMaster: IT'S FUN. 21:02:31 stfu. 21:02:42 ehird, so when do you plan to write your own C compiler? 21:02:45 *runs* 21:02:48 I have. 21:02:49 :| 21:02:54 ehird, oh!? 21:02:55 link? 21:02:56 Forths are a lot easier, though. 21:03:07 AnMaster: Bitrotten. And none of them really worked fully, as a whole they were probably pretty good. 21:03:17 ah 21:03:19 I see 21:03:35 considering GCC is still not fully C99... 21:04:00 uhm 21:04:02 k&r c ofc 21:04:08 ok :/ 21:04:15 C is simple, honestly 21:04:33 * AnMaster thinks C should be classed as esoteric when it lacks prototypes ;P 21:05:01 SimonRC: woot, i have a simple dictionary 21:05:01 char d[] = { 3, 104, 108, 116, 0, F_hlt, 0 }; 21:05:05 err, wait 21:05:08 a funcptr won't fit into a char. 21:05:09 oops. 21:05:19 hm, that's interesting.. i don't wanna use whole ints for each name char 21:05:25 ehird, indeed, you need something that is intptr_t wide 21:05:36 AnMaster: no, just int. portability is not important for forths :) 21:05:36 ehird, that could be 64-bit even 21:05:40 AnMaster: anywayu 21:05:41 ... 21:05:44 i can't just use an integer type 21:05:45 * AnMaster runs x86_64 21:05:54 AnMaster: who gives a damn, this is a small toy interp 21:06:03 I run x86_64 too, damnit. 21:06:09 but I don't want to use an int 21:06:12 ehird, so you plan to compile it in -m32? 21:06:16 maybe some kind of union of char[4] and int? 21:06:21 SimonRC: maybe 21:06:25 SimonRC, 8 char! 21:06:43 can you initialize unions in literals? 21:06:52 I have a set of asserts that all the components of my union are the size of the union 21:06:54 ehird, in C99 you can afaikk 21:07:01 {.foo = bar} 21:07:06 no, no c99 kthx 21:07:08 no idea about older C 21:07:38 anyway please don't assume pointers are 32-bits. Such C code is horrible 21:07:38 hmm 21:07:49 AnMaster: this is meant to look like the J prototype interp ffs 21:07:58 why are you so uptight about people coding fun toy interpreters?! 21:08:08 anyway, I wonder if I can cast directly to a union 21:08:09 if so... 21:08:09 D d[] = { 3, "hlt\0\0\0\0\0", 0, F_hlt, 0 }; 21:08:17 a dictionary record is this: 21:08:32 ehird, I'm not, as long as it compiles with -ansi -pedantic -Wall -Wextra -Werror 21:08:33 ;P 21:08:41 name length, name, number of instructions, funcptr 21:08:42 or -std=c99 instead of -ansi if you want 21:08:44 0 terminates 21:08:46 ehird: that would put a string pointer in there 21:09:03 SimonRC: hmm, as an int? yes, probably 21:09:06 hmm 21:09:07 damnit. 21:09:16 what is the def of F_hlt? 21:09:19 ehird, SimonRC indeed about the string pointer: you can put an actual string in a struct too, in C99 21:09:20 *runs* 21:09:22 SimonRC: something like this: 21:09:28 void F_hlt() {exit(0);} 21:09:29 C99 got variable size structures 21:09:35 AnMaster: yup 21:09:57 ehird: ok, what is the structure notation for this: 21:10:00 SimonRC: for forth words, the funcptr will be F_magic 21:10:08 SimonRC: which will step through the funcptrs after it, calling it 21:10:14 thus, a program really is just a list of functions. 21:10:21 hmm 21:10:22 ah, I think I see 21:10:25 it will be F_magic, hackified 21:10:29 to hardcode the addr 21:10:32 but how does F_magic know which word to step through? 21:10:38 SimonRC: just like that. 21:10:39 ouch 21:10:41 the perverse way of doing closures 21:10:42 :-) 21:10:57 ehird: right, that was the admission I was looking for 21:11:00 ehird, and this will only work on little endian 32-bit I assume? :P 21:11:04 or you could hack with ip? 21:11:14 SimonRC: actually, wait, that's right!! 21:11:18 hmm 21:11:19 but then.. 21:11:24 words aren't a list of funcptrs any more 21:11:30 :( 21:11:31 AnMaster: stfu 21:12:09 (In fact I had mentally discounted your perverse closures) 21:12:22 haha 21:12:28 ooh, wait... 21:12:32 hmm, no.. 21:12:40 SimonRC: since ip will be F_magic.. there's no way to utilize ip 21:12:41 unless.. 21:12:43 ip2! 21:13:06 ehird, you know, software that isn't portable bitrots much faster 21:13:33 AnMaster: I don't. give. a. shit. 21:13:41 I will write this once, use it for 10 minutes, laugh, admire it. 21:13:47 Then ignore it 21:13:53 btw, someone made a forth interpreter in bash 21:13:54 I repeat -- 21:14:02 THIS IS NOT INTENDED TO BE A SERIOUS INTERPRETER FOR REAL USE!!! 21:14:05 ehird, ok what is so special about your forth interpreter? 21:14:13 NOTHING, except I wrote it! 21:14:16 ah 21:14:17 Goddamnit, shut. up! 21:14:28 well, mine is written in a really dense style 21:14:33 and to give me some C practice 21:14:34 SimonRC: ditto 21:14:57 most of the source is macro calls, and much fo the rest is macro defs 21:15:51 SimonRC: I concede you're right with the funcptr thing. 21:15:52 SimonRC, you know, C99 got the inline keyword :P 21:15:53 How do you resolve it? 21:16:04 AnMaster: are you being intentionally dense? :| 21:16:10 ehird, aye 21:16:14 AnMaster: but how do you write this with it? : 21:16:25 SimonRC, I agree macros are useful sometimes 21:16:28 #define V(x,b) void x(){b} 21:16:31 Or this: 21:16:33 but it is easy to overdo it 21:16:39 #define OD(c) C*p=dic;while(p){{c}p=p[1].p;} // loop p over dictionary 21:16:51 SimonRC, why do you want a macro like #define V(x,b) void x(){b} 21:16:52 or this: #define W(n,pr,N,c) V(f_##n,c;ip++;) C n[]={{.s=N},{.p=pr},{.f=f_##n}}; // native word 21:16:59 AnMaster: BECAUSE IT'S A JOKE 21:17:02 IT'S LIKE THAT FOR FUN 21:17:04 IT'S AMUSING 21:17:07 GOD. FDSFKSDF DAMNIT 21:17:08 AnMaster: 'cause I have a lot og functions with that signature 21:17:19 SimonRC, those macros would require some variables to be in that function, or global variables 21:17:26 hm 21:17:32 AnMaster: Would they?? Wow, I thought they involved puppies. 21:17:36 (I think AnMaster is being not very serious and not showing it clearly, hence ehird is taking him to seriously) 21:17:41 SimonRC: so how do you handle the thingy 21:17:41 and oh 21:17:43 okay then 21:17:43 :p 21:17:54 SimonRC, indeed you got it 21:18:00 * SimonRC bangs ehird and AnMaster's heads together 21:18:03 ow 21:18:04 ouch! 21:18:22 the traditional Clarkstone approach for bickering boys 21:18:24 :-) 21:18:34 but seriously, I'm much happier with clean code. you know about doxygen? there is such I thing for bash, called bashdoc 21:18:35 I use it 21:18:45 for any script larger than about 200 lines 21:18:51 does that tell you something ;P 21:19:00 that might be where you're goping wrong 21:19:06 you're writing 200 lines of bash 21:19:09 *grin* 21:19:11 SimonRC, haha 21:19:31 SimonRC, I got programs in bash with over 1000 lines of code (comments excluded) 21:19:38 I think envbot is such 21:20:50 SimonRC: pleez tel muy? :p 21:20:57 oh, i know what i could do! 21:21:16 oh, I forgot your question 21:21:18 entry = name length, name, number of instructions, funcptr, instructions -- as usual 21:21:19 BUT 21:21:26 * AnMaster suggests ehird write a GCC frontend for forth 21:21:28 -!- ais523 has joined. 21:21:29 instruction = address of 'name length', ... 21:21:29 * AnMaster runs 21:21:35 then, NEXT is: 21:21:57 ehird: that is exactly what mine does, I think... 21:22:06 and JonesForth 21:22:15 it's indirect-threaded code 21:22:20 the topic lies! 21:22:27 ip += (*ip)+2; ip(ip+1); 21:22:29 ais523, it does 21:22:30 ais523: yes 21:22:30 :) 21:22:45 ah, waitamo, maybe not 21:22:55 #define NEXT ip+=(*ip)+2,ip(ip+1) 21:22:56 :D 21:23:01 SimonRC: and that isn't what yours does 21:23:07 yours doesn't take the instructions as arguments 21:23:35 well, I pass round w, tha address of the most-recently-started word, as a global variable 21:23:50 the dataflow is actually just that of an argument 21:24:14 SimonRC: I still don't get how you resolve this 21:24:39 ok 21:25:13 -!- ais523 has changed nick to ais523|slightly_. 21:25:13 I have a structure I will call a word 21:25:23 -!- ais523|slightly_ has changed nick to ais523|sl. 21:25:29 it is 3+n cells 21:25:49 -!- ais523|sl has changed nick to ais523|sl_busy. 21:26:04 name pointer, previous word pointer, code pointer, data* 21:26:26 my forth code is a list of pointers to words 21:26:36 oh no, he went. we are not observed any more. does that mean we cease to exist? 21:26:43 luckily, we have logs, so you're still alright 21:27:10 to execute forth code: 21:27:26 the ip points to the current position in the list 21:27:47 you deref the ip into the w register 21:28:05 ah that's good 21:28:28 then you call the function pointed to by the code field of the word pointed to by the w register 21:29:11 that function will often look at the w register to see which word is being executed 21:29:32 for forth words, the code is the co function 21:30:06 -!- jix has quit ("CommandQ"). 21:30:21 that pushes the ip on the return stack, sets the ip to point to the data of the word (fields 3+), which is also a list of word addresses 21:30:36 the last one of those will be the address of ret 21:30:47 the code of ret is a function to pop the ip off the stack 21:31:05 EOF 21:37:55 yay 21:38:01 cise mergesort parses correctly 21:38:26 not that that's all that hard to do 21:38:34 just 4 different parse trees 21:38:49 for the second expression, two for the first 21:39:06 mergesort, once again, '/,}#< 21:39:40 it manages to parse that as (' (/ *)) ((}# <) *) 21:39:47 * is the "stream parameter" 21:40:35 the stream is something that holds the current result of computations, the function params are on it, then passed on to each expression one by one, always putting the result back on the stream 21:40:53 ' / }# < are the operations 21:41:07 as you see, nothing tells it what to curry and what way 21:41:47 it simply knows }# wants a function, so it gives it "<", and appliesthe curried (}# <) to the stream parameter 21:42:01 where, on the other hand, "'" wants a list of lists (it) 21:42:07 (it's the recursion function) 21:42:30 so it will use / to split the stream parameter, and use the result of "/" as its lists 21:42:37 "/" is the function to split lists 21:43:01 i'm fairly sure i score one in my quest to invent something original here 21:43:10 hmm 21:43:12 which would be a total of 2 points! 21:43:14 mwahaha 21:43:42 have you read about ursala? 21:43:49 no :| 21:43:57 is it... that? :) 21:44:09 http://www.basis.uklinux.net/ursala/ 21:44:19 it is an insanely dense programming language 21:44:25 something like this is prolly done with perl too. i just make it a bit more explicit 21:44:34 i can't open that :) 21:44:44 it has a sublanguage called pointer expressions where each command is 1 char, and you can do a fair amount in it 21:44:53 oklopol: huh? 21:45:03 umm, and it does type checking for tokenization and parsing? 21:45:09 no, 21:45:13 SimonRC: i cannot open webpages. 21:45:16 I was thinking m,ost ly the insane density 21:45:20 oklopol: why? 21:45:31 oh, no, that was not my "new" idea... 21:45:41 there's a lot of languages for that already 21:46:06 the new thing is just the way i'm making it terse 21:46:19 ok 21:46:29 i still have no idea whether it works for bigger programs, but i think it's pretty cool it could even parse that :) 21:46:43 doesn't that mean that changing the type of one function can break oterh functions by changing their parse treee? 21:46:56 sure. 21:47:00 ouch 21:47:11 this is incredibly inefficient to parse 21:47:22 which is exactly why it might be fruitful for terseness 21:47:24 doesn't matter that much on modern machines 21:47:33 can humans parse it? 21:48:01 they can, but they won't necessarily find the right parse tree... 21:48:07 a computer will take the first possible 21:48:12 a human will take what suits them. 21:48:17 oh dear 21:48:22 well, it is esoteric 21:48:30 i'm going to add commands for actually choosing the parse tree ;) 21:48:38 how about ( and ) 21:48:46 like, "choose fifth parse tree" 21:48:54 ouch 21:49:05 those are parsed as you'd except 21:49:07 expect 21:49:19 also, "," and ";" are used to separate expressions 21:49:23 give me more detail about how that mergesort works 21:49:30 by separating them, you can escape the hell of exponential parsing. 21:49:33 okay 21:50:08 (' (/ arg)) split arg in two, then recurse to both branches 21:50:18 then, the result is given to the second part 21:50:22 }#< 21:50:34 ((}# <) arg) 21:50:36 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 21:51:03 }# is fairly mergesort-spesific, although it's very generic, it takes a list of lists, and a function to choose an element from a list 21:51:17 it then gives the function the head of each list 21:51:32 and puts on a "return list" the head that was returned 21:51:37 now, < has two definitions 21:51:47 it can either take a list, and return minumum 21:51:50 *minimum 21:52:06 or it can take two values and return a boolean indicating which was smaller 21:52:18 now, the first one is type inferred, of course 21:52:47 ok 21:52:49 so }#< gets two sorted lists (they were recursed into), and always picks the smaller of their heads 21:52:55 until they're empty 21:53:09 also, you don't need to check the special cases [] and [1-element] 21:53:40 because recursing with param N just returns N if the function has already been called with it iiiin the same recursion stack 21:53:42 *in 21:53:51 that was some confusing terminology 21:53:56 in the same recursion anyway 21:54:01 what is the recursion pattern of ' ? 21:54:10 pattern? 21:54:15 what do you mean? 21:54:21 what exactly does ' do? 21:54:25 ah 21:54:37 it takes a list of values, and maps current function to it 21:54:48 what is "current function"? 21:54:49 current being the one it is called from 21:54:54 in this case the whole program 21:54:58 ok 21:55:01 well, the mergesort 21:55:17 what does comma do? 21:55:26 separates two expressions 21:55:33 when a function is called 21:55:39 the params are put on the "stream" 21:55:47 the stream is then run through each expression 21:56:07 and after running them all, its contents are the return value of the function 21:56:25 you can use it to escape the exponential parsing hell, i imagine 21:56:29 "run through"? 21:56:39 and in what order? 21:56:48 lessay you have expressions e1 e2 e3 ... en 21:56:53 separated by commas 21:57:25 you'd basically do (en ... (e3 (e2 (e1 args)))) 21:57:32 and that would be the result of the function 21:57:40 the expressions are functions 21:57:57 running through means applying the function to the contents of the stream, and putting the result on the stream 21:57:59 why is the stream called a stream? 21:58:07 hmm 21:58:08 because i decided it is :) 21:58:18 information kinda flows through the expressions 21:58:22 that's the idea 21:58:33 you can have other kinds of expressions too, you see 21:58:39 pattern matching, for instance. 21:58:45 you can just do that on the fly 21:58:48 wait 21:59:01 if I have a stream continging [1,2,3] and I pass it through icrement, what do I get out? 21:59:05 this is done by prepending the expression with ; instead of a comma 21:59:10 depends 21:59:13 what's increment? 21:59:21 \x -> x + 1 21:59:32 that would not have a parse tree. 21:59:44 indeed, no 21:59:52 well 22:00:01 I mean, increment is the function that returns one more than its argument 22:00:30 lists may for instance map functions like that through them if nothing else works 22:00:41 "if nothing else works"?! 22:00:52 on paper, at least, i have the possibility of putting a value for operations' types 22:01:06 so that there are less wanted types of operations 22:01:18 that are taken if a parse tree could not otherwise have been formed. 22:01:33 ok 22:01:44 this is nuts 22:02:01 i probably will not implement that any time soon, because even doing what i have now efficiently is hell' 22:02:21 and "less wanted operations" are by definition only used after the whole parse tree space has been searched 22:02:28 and... that's an exponential job. 22:02:47 how does / split the list? 22:02:48 i'll take those nuts as a compliment, i'm fairly satisfied with cise myself <3 22:02:50 ah 22:02:54 it has two definitions 22:03:04 int -> list -> list of lists 22:03:25 which splits into (whatever the int was) lists 22:03:36 *splits the given list into 22:03:45 equally distributing the elements 22:03:49 then 22:03:52 cool 22:03:56 there's just / :: list -> list of lists 22:03:59 which splits in hald 22:04:01 *half 22:04:07 night 22:04:26 i'll try actually adding / :: int -> list -> list of lists now, lessee what happens 22:04:27 AnMaster: 'night 22:04:45 oklopol: is the implementation available anywhere? 22:04:49 hmph, you're both green, stupid konversation 22:05:05 umm, i just scribbled it up, so no, not yet at least 22:05:10 also, it does not yet evaluate it. 22:05:15 although that isn't too hard 22:05:37 the parsing is the gist of cise really 22:06:39 how does ' know when to stop? 22:07:23 as i said, there's a runtime check that recursion is not done twice with the same params 22:07:35 if it is, params are just returned. 22:07:38 ok 22:07:47 waitamo... 22:07:54 the input the mergesort isn't a list of lists 22:08:07 my original way was to return [] when given [], but that was less parametrizable 22:08:12 how does }#> get given one? 22:08:16 ' takes a *list* of values 22:08:35 and returns a list of the values that went through recursion 22:08:36 now 22:08:45 mergesort gets (list int) 22:08:55 / makes it (list (list int)) 22:09:13 ' makes it (list (list int)), just recurses through them 22:09:22 then 22:09:37 (}# <) gets the (list (list int)) ' returned 22:09:46 hmm... 22:10:01 wonder what happens if i do }#<'/... :D 22:10:12 that's semantically equivalent, you see 22:10:30 do we end up merging pairs of lists of lots at a time? 22:10:45 we may end up merging lists of lists 22:11:09 it's not something you often need, prolly, true, but there are a *lot* of list operations in cise. 22:11:17 it's basically a list language 22:11:45 St sorts a list, for instance, currently 22:12:14 there's also a separate "permutation type", you can kinda "almost" sort a list with it: 22:12:19 you call Sp on a list 22:12:25 and it returns a permutation 22:12:39 which is how the list should be permutated to be sorted 22:12:46 you can just do Sp list list to get it sorted 22:13:05 hmm 22:13:16 just today i had a situation where i needed that... 22:13:22 that's cool 22:13:43 it allows you to keep keys and values in seperate lists, and sort both by sorting one 22:14:02 yeah, for instance. 22:14:14 the super-dooper operators sound rather J/K-ish 22:14:18 but there was something that was pretty hard to do otherwise, involving a "group" operation as well 22:14:27 yeah. 22:14:57 they do, i'm not saying i'm the first one to make a terse *array-processing language* either, just the parsing is completely "new" :P 22:15:12 also, i'm calling mine list-processing, but same thing i guess. 22:15:28 well, lists imply trees more than arrays, imo 22:15:36 also the magical figuring out what variation of an operator to apply is J/K-like 22:15:40 kinda 22:15:42 and the overloading 22:15:49 and cise should, at least in the future, also have a nice support for tttttrees 22:15:55 hmm 22:16:04 yes, sure, but i doubt it's done to this extent 22:16:05 ho do they differ from ordinary trees? 22:16:13 oklopol: indeed 22:16:16 most likely the parse tree is clear without context. 22:16:44 there's compile-time *overloading* done based on types, but on the existing parse tree. 22:16:54 yup 22:17:12 at least i think so, because no one in their right mind would do something like what i've done :D 22:17:32 what do you means how do they differ from ordinary trees? 22:17:38 could you maintain a serious program written in it 22:17:51 surely any tiny change would introduce a fountain of problems 22:17:55 ? 22:18:17 well, if you keep expressions short, it may just work. 22:18:47 parsing nested functions has to be done at runtime, though, it is done when the function is first encountered, based on what functions existed at that time 22:18:57 after that, the functions is uses will not change 22:19:09 this means you can, if you want, introduce new operators to the language 22:19:15 mmmm, jit 22:19:25 "jit"? 22:19:33 oops, JIT 22:19:39 just-in-time compiling 22:19:43 ah. 22:19:44 right 22:19:46 ofc 22:20:13 that is necessary, because when you're parsing the beginning of the program, you cannot have parsed the rest to see what operators will emerge 22:20:21 because you'd have to have parsed the beginning. 22:20:33 nothing good would arise from this sick fixed-point equation, methinks. 22:20:56 couldn't you just enforce top-down semaintics? 22:21:07 everything has to be deduceable from the program up to that point? 22:21:19 well, that's what i have, basically. 22:21:28 hmm 22:21:30 ah 22:21:42 you mean 22:21:57 i could use the functions that have been defined in the source up to the point of parsing 22:21:57 ? 22:22:06 yes-ish 22:22:11 that's not good, because you may want to have circular dependency 22:22:20 that is rare 22:22:27 i guess. 22:22:30 introduce a specific operator for it 22:22:36 oklopol: just do it like C and allow a way to predeclare a function 22:22:47 yup 22:22:49 i already have an operator for setting a variable. 22:22:56 hmm 22:23:00 or Forth has deferred words 22:23:14 which are also general-purpose function hooks, ISTR 22:23:20 predeclaration doesn't really fit in 22:23:26 oh 22:23:30 or then does 22:23:35 i mean 22:23:39 or how about a y-combinator kind of thing? 22:23:46 you just have to have introduced the *token*, to use it in parsing 22:23:48 a specific mechnism for mutual reference 22:24:18 so you can do 0;foo to set foo, and then function-involving-foo;bar and then function-involving-bar;foo 22:24:22 ; sets a variable 22:24:41 that's actually what C does, more or less 22:24:48 yeah 22:24:50 Oh dear, NFS is playing up again 22:25:18 i guess you could actually compile cise if it's done like that 22:25:23 I thought ; was for function sequencinging kind of things? 22:25:43 which would be quite awesome actually, weeks of compiling just to get a few chars of program to compile :P 22:25:52 (assuming using my unoptimized strict parser) 22:26:11 SimonRC: "," is the sequencer 22:26:20 ";" is a pattern matcher 22:26:43 ok 22:26:43 so you can put parts of the stream or all of it in variables midway in the function 22:26:56 wibble 22:27:12 BTW, does the left or the right part of a function go "first"? 22:27:31 xD 22:27:44 okay, this was a classic failure from my part... 22:27:52 i did ghc cise.hs -o cise 22:28:03 guess what my cise SPEC was called ;) 22:28:09 ouch 22:28:42 "file has changed do you want to reload from disk?" I HAVE NO IDEA WHY THAT'S HAPPENED, BUT SHUUURE :DDD 22:28:51 i'm a fucking idiot 22:28:59 lost much? 22:29:00 oklopol, is there a cise~ ? 22:29:00 hmm 22:29:12 or whatever? 22:29:17 can you "undo" the re-load~? 22:29:20 SimonRC: it's basically prefix + currying 22:29:25 look for a backup 22:29:25 Sgeo: i may just love you 22:29:28 let's see 22:29:38 or see if you pasted or copied it anywhere 22:29:48 or something in a pastebin? 22:29:50 yeah! :) 22:30:04 i probably wouldn't even have looked xD 22:30:11 but it was there 22:30:13 or be like Paul Graham and say "screw the docs the program is the spec" 22:30:26 :P 22:30:35 in future, keep you manual is a different dir 22:30:43 oklopol, so I was right? 22:30:43 guess i should 22:30:45 or maybe call it "cise.txt" 22:30:52 Sgeo: yes, i do love you 22:32:28 I can never remember the log for this channel 22:33:03 * ais523|sl_busy generally goes to it via the community portal on Esolang 22:33:25 it's http://tunes.org/~nef/logs/esoteric/ according to my browser history 22:33:36 -!- RedDak has quit (Remote closed the connection). 22:34:06 * oerjan just writes t u in the address bar and the browser shows the rest 22:34:35 since I accidentally deleted the Underlambda specs (by typing rm * by mistake), I've set emacs to back up everything in a different directory 22:34:52 and it took out my old reference interp at the same time 22:35:04 but I'm working on a new version now (when I'm not doing University work) 22:36:11 ais523|sl_busy: doesn't your uni keep backups? 22:36:22 I was doing it on my laptop 22:36:32 not on the University servers 22:36:50 and although I keep backups, I didn't take them often enough to save the spec 22:37:00 (which I'd only been working on for about 2 days then) 22:37:34 wow 22:37:43 [['}#', '<'], ["'", ['/', '*']]] from }#<'/ 22:37:47 oh right 22:37:51 i didn't check if that was right 22:37:53 lol :P 22:37:55 let's check 22:38:02 it is 22:38:10 one of my friends stores their home directory, minus large media files, in Subversion, so they can access it from anywhere, and so it's automatically backed up with a simple svn ci 22:38:26 that pretty awesome, there is, after all, about 6 parse trees from those 4 tokens 22:38:38 (okay, it's not) 22:38:45 (but it's promising!) 22:39:21 5 character mergesort, and not even *complete* cheat 22:39:35 is cise concatenative 22:39:42 I can't quite tell from your description 22:39:47 not fully, i don't think so 22:39:49 are they unicode characters 22:39:51 well 22:39:54 cise is "gluing" 22:40:05 it stick stuff together in whatever way works 22:40:11 :P 22:40:15 composition, argument-passing, curring, etc 22:40:23 *currying 22:40:24 yeah, you can pretty much just slash your characters there and it works! 22:40:33 lament: i don't think so 22:40:52 except when the computer finds a nex and exciting interpreetation of your ambiguous parse tree... 22:40:56 *new 22:41:02 curly bracket close, that number character, less-than, single quote, slash 22:41:07 And I thought C++ was bad 22:41:14 heh 22:41:19 (In C++, parsing depends on the kinds of various identifiers) 22:41:34 (and in cise, it depends on what parses don't cause type errors?) 22:41:45 (foo(bar); could meant many different things) 22:41:46 ais523|sl_busy: (exactly) 22:42:07 what do you do when there are two non-erroneous ways to parse the program? 22:42:09 what is your typesystem? 22:42:14 SimonRC: but at least in c++, foo is always s single identifier ;) 22:42:21 ais523|sl_busy: it takes the first one. 22:42:29 SimonRC: i currently have ints, booleans and lists. 22:42:39 implemented simply as python tuples :) 22:43:00 so you can just add types by introducing another type name :) 22:43:20 what order do parses come in? i.e. which is "first"? 22:43:40 that i shall define in the spec, currently it's what my implementation has. 22:44:01 it has to be well-defined ofc, because this is all about terseness. 22:44:58 well, for many programs, you can simply use a clear prefix notation. 22:45:07 brackets? 22:45:09 so it should try to parse your thing as such 22:45:18 there are not brackets. 22:45:31 they would help human readers 22:45:33 well, () are used to define a function 22:45:37 ok 22:45:55 i guess i might make it possible to use that in a sort of bracket-like fashion 22:45:57 somehow... 22:46:05 or something liek it 22:46:13 how about intercal-style "" 22:46:25 which also parse ambiguously 22:46:27 you can set variables, so you can definately be as clear as you wish. 22:46:31 hehe 22:46:33 but less ambiguously than without 22:46:40 ok 22:47:14 ;I,;mc,[]("[]"),=}!!b->"+"+mC1"-"-mC1">"+C1"<"-C1(;X)Wh=mC0=}X??b i wonder if this parses :P 22:47:22 that's not at all ambiguous, even 22:47:28 ...or then it is, not sure 22:47:43 that should be a fully working binary brainfuck 22:47:45 what should it do? 22:47:49 cool 22:48:00 * ais523|sl_busy is amused by IRC messages crossing from time to time 22:48:01 how the fuck does it work? 22:48:14 ais523|sl_busy: yeah, brain-lag 22:48:19 it uses goto's and whiles, and i'm not sure i even remember how it works :) 22:48:25 *boggle* 22:48:31 but, it's like, 1 line! 22:48:36 goto is, of course, not impossible even in a concatenative language 22:48:41 I wonder if J/K can beat that 22:48:53 first of all, a lot of that is not up to date anymore. 22:49:00 i think. 22:49:24 let's look at something simpler, preferably :) 22:49:35 Al/_:¨ this should check if a number is prime 8| 22:49:48 umlaut is a character in cise? 22:49:50 that isn't in ASCII 22:49:56 true. 22:50:18 it's in my keyboard, so i use it. :) 22:50:28 i prolly change everything to ascii later 22:50:37 because cheating otherwise, ofc 22:50:39 how does the ascii-checker work? 22:50:41 the shortest BF interpreter entered on codegolf.com was 106 bytes long 22:50:44 in Perl 22:51:15 however, that website doesn't let you see what the program was, unless it was you who submitted it 22:51:40 SimonRC: ascii-checker? 22:52:23 oops 22:52:28 I meant prime-checker 22:52:45 hmm, first of all, Al/_¨ should work now, second, this seems to rely on type *conversion* 22:52:45 :) 22:53:14 haskell.org 22:53:31 that does (all (div val [1..val-1])) 22:53:42 wong time no see 22:53:51 and assumes an integer can also be divided by a list to get a list of them resultzorz 22:53:56 oerjan: I don't understand your last two comments 22:54:01 :) 22:54:06 * oklopol does 22:54:15 oklopol: or, in Bill Gates's case, long time no C 22:54:19 the second explains the first one. perfectly. 22:54:20 oerjan is an irc advertiser bot 22:54:43 really? I thought they were a Norwegian mathematician 22:55:05 but it's easy to jump to conclusions over the internet 22:55:08 Ah, I see 22:55:17 ais523|sl_busy: observe oerjan closely, what you just saw was oerjan's *thing* 22:55:37 everyone has a thing! 22:55:42 hmm, no I don't 22:56:05 you only have one thing in my head 22:56:36 because you're not *that* active, not that weird, and you've clearly stated to me a personal detail 22:56:57 wonder if you know what that is 22:57:53 hmm, one a clock 22:58:02 What's my thing? 22:58:11 Sgeo: do you really have to ask? 22:58:30 Sgeo: it most probably starts with P 22:59:12 ais523|sl_busy's thing is also pretty clear, you're branded for life. 22:59:29 well 22:59:29 * oerjan thinks ais523|sl_busy has at least two things 22:59:41 oerjan: what's the other? 22:59:43 I'm pretty sure I have several 23:00:01 he's also the INTERCAL guy in my mind 23:00:04 getting into arguments with ehird over programming style and choice of language is one of the non-obvious ones 23:00:06 Oh, I misunderstood what you meant by "thing", I thought you meant style of talking 23:00:08 ais523|sl_busy: my branding comment meant exactly that while you have done a lot of stuff, you just have that one thing. 23:00:30 repeatedly adding daemons to EgoBot was another, but it isn't here at the moment 23:00:36 yeah, i also know he's an intercal guru, but the global fame overrides that. 23:01:05 as for style of talking, I'm ridiculously addicted to singular they 23:01:10 even though I forget to use it from time to time 23:01:20 true 23:01:30 Didn't we have this conversation a few months back? 23:01:45 I am the neophile. 23:01:52 heh 23:02:03 * oklopol is many philes... 23:02:11 i need to eat something -> 23:02:15 neophile? Addicted to matrix, or something else? Obsessed with new stuff? 23:02:28 addicted to sniffing neon 23:02:45 oerjan: that would have no effect, surely? 23:02:56 I go "ooh stack programming bounce bounce bounce bored ooh array programming bounce bounce bounce bored ooh hight-order functions bounce bounce bounce bored" 23:02:59 etc 23:03:07 *higher-order 23:03:16 you'll have to sniff a _lot_ 23:03:21 ais523|sl_busy, would have an effect if oxygen didn't get to your lungs 23:03:28 hmm 23:03:37 hmm, actually a lot of guys here don't have a thing 23:03:38 write a few Underload programs, then you'll get the hang of concatenative programming 23:03:45 because i've never seen them talk 23:04:02 well, if you have any elemental flourine in you it will react with xenon... 23:04:03 or look at my draft Underlambda spec and write some pure functional concatenative programs (in the Unlambda sense of pure functional, not the Haskell sense) 23:04:08 but not neon afaik 23:04:25 SimonRC: surely no body could survive large amounts of elemental flourine 23:04:40 ais523|sl_busy: unless you are a flourine elemental 23:04:55 * SimonRC recalls a GITP episode 23:04:55 flourine, or fluorine? 23:05:01 whatever 23:05:02 I think we've been mispelling it consistently 23:05:16 "uo" is rare in English 23:05:27 Noun 23:05:27 flourine 23:05:27 1. Common misspelling of fluorine. 23:05:34 (from Wiktionary) 23:05:55 that's a LIE 23:06:06 but the way that's written, it seems like "Common misspelling of fluorine" is the /definition/ of 'fluorine' 23:06:18 s/'fluorine'/'flourine'/ 23:06:26 flourine is a dangerous chemical arising in flour that has been stored too long 23:06:34 :-P 23:06:37 so therefore 'flourine' is a noun that can only possibly refer to the word 'flourine' 23:06:43 in a nice bit of self-reference 23:06:53 heh 23:07:15 oklopol: how about a compiler with common sense 23:07:18 ? 23:07:23 recursive [adj.]: see recursive 23:07:37 SimonRC: No, I will NOT compile this virus! 23:07:44 "obviously I don't want to throw away all the results you stupid machine, I meant to save them in that otherwise-empty list!" 23:07:44 SimonRC: like, that it'd take the parse tree resulting in a nice algo? ;) 23:08:08 and it would automatically change the program to DWYM 23:09:05 DWYM? 23:09:18 Do What You Mean 23:09:22 (cannot google...) 23:09:23 ah 23:09:25 SimonRC: main(){printf("%i",pi);} 23:09:29 as in WYSIWYM 23:09:29 prints out all of pi 23:09:30 but 23:09:41 comparisons etc involving pi 23:09:41 (posited as an improvement on WYSIWYG) 23:09:44 use an approx. value 23:09:46 oklopol: why you not have interwebz? 23:09:53 i have no idea 23:10:06 perhaps i should restart my router like ppl keep telling me :o 23:10:07 oklopol: Router. Restart it. 23:10:07 oerjan: that doesn't terminate 23:10:12 oklopol: You just set up Konversation, so! 23:10:21 can you start a web browser? 23:10:26 well, i just set just freenode 23:10:32 a better example would be 'recursive [adj.]: see the definition of recursive in the previous edition of this dictionary' 23:10:37 SimonRC: yes, but it won't open anything 23:10:46 with a genuine definition in the first edition 23:11:12 oklopol: can you ping anywhere outside your network? 23:11:12 that would most likely be tail recursion 23:11:13 ais523|sl_busy: lazily evaluated recursion 23:11:19 depending on the laziness of the reader 23:11:24 ais523|sl_busy: lessee 23:11:36 ehird: eso-std.org doesn't respond to pings 23:11:45 oklopol: well, you can get on IRC... 23:11:47 recursive [adj.]: when a function (see recursive-inner). 23:11:49 looks like I'll have to go back to bouncing them off Google 23:11:52 i can ping google. 23:11:56 recursive_inner: calls a function that (see recursive_inner) 23:12:05 ais523|sl_busy: does it not? oh wells. 23:12:09 ais523|sl_busy: it will, sometime. 23:12:12 no wait, Google isn't responding to pings from here either 23:12:22 the University firewall must block pings... 23:12:25 ehird: did you read my cise rant? 23:12:39 it seems my idea actually works, to some extent 23:12:53 ais523|sl_busy: i *can* ping google 23:12:55 have you tried a different web browser? 23:13:03 hmm no 23:13:06 or telnet www.google.com 80 23:13:09 oklopol: gimme spec 23:13:13 what about typing HTML commands in by hand? 23:13:26 (heh, that's what SimonRC suggested, but I meant to say HTTP and got the wrong acronym) 23:13:57 okay. 23:14:03 i can get google on telnet :P 23:14:06 ah. 23:14:08 LOL 23:14:18 i have a proxy set, must be down :) 23:14:21 * oklopol owns 23:15:14 I have noticed I sometimes try to apply debugging techniques to religion-like things 23:15:26 SimonRC: that's unlikely to work 23:15:31 otehr peoples' 23:15:41 :twisted: 23:15:41 unless they're porting gdb to humans nowadays 23:16:01 i had a jehova's witness on the door today 23:16:10 apparently there's a big jesus party coming 23:16:13 I mean, I see some nonsense, and try to divide up the reasoning 23:16:18 oklopol: again 23:16:23 ? 23:16:28 * Sgeo starts looking at Magnatune again 23:16:30 yep, and same guy actually :) 23:17:00 surely everyone gets a chance to repent during those seven nasty years? 23:17:01 it would be so awesome to join a group like that 23:17:06 hmm 23:17:08 BTW, I made an ogg version of the Fugue Hello World I wrote 23:17:14 (for people who can't read MIDI) 23:17:16 i've just seen so many cult movies i'm afraid they'd kill me :) 23:17:25 start your own 23:17:25 but Esolang doesn't accept ogg-format uploads for some reason 23:17:30 then you'd be boss 23:17:36 ais523|sl_busy, url? 23:17:37 heh 23:17:50 Sgeo: nowhere, as I've just explained 23:17:53 oh 23:17:59 I can paste it to a filebin temporarily, though, for you 23:18:01 I thought maybe you put it up elsewhere 23:18:17 Actually, I think I did get the midi to work 23:18:20 It's just painful 23:18:26 oklopol: interwebs work now? 23:18:30 yeah 23:18:36 yay! 23:18:42 yayeeee 23:18:45 Sgeo: http://filebin.ca/ddtfxb/hworld.ogg 23:18:57 do i have to upload my interp now?;) 23:19:02 (unfortunately that link will stop working after an unspecified length of time) 23:19:11 would be no use, you simply could not read it. 23:19:20 * SimonRC invites oklopol to a party with lemons, a girl in a tub, goats, and E 23:19:25 mwahaha 23:19:45 omg i love tub parties 23:19:52 uh 23:19:56 will there also be another girl and a cup? 23:19:56 Anyone up to making a PSOX program in Fugue? 23:20:03 oklopol: of course 23:20:28 Sgeo: I have a very complicated indirect chain of programs which amount to a BF->Fugue compiler 23:20:32 good, is this the #esoteric orgy me and bsmntbombdood have been planning for ages? 23:20:47 however, they're sufficiently non-portable that I don't think they're capable of running on more than one computer 23:20:53 and unfortunately that computer isn't this one 23:20:54 chain of programs? Please elaborate? 23:21:12 oklopol: dunno 23:21:18 BF->Prelude compiler. Prelude->Fugue compiler, but with music in a weird intermediate format I invented. 23:21:50 Then I use that weird intermediate + another program I wrote to send a series of keystrokes to a proprietary MIDI editor, typing in the entire piece of music 23:22:03 (hmm... maybe I could alter it so it works with Rosegarden?) 23:22:11 is there any Choon involved? 23:22:24 According to the wiki and my understanding, Prelude is equiv. to Fugue.. is this wrong? 23:22:27 Then, I export to MIDI, and use TiMidity to synthesize that into ogg if needed 23:22:33 Sgeo: almost but not quite 23:22:44 "not quite"? howso? 23:22:46 Fugue's a superset because it can handle literal constants greater than 9 23:22:52 but that's a very minor difference 23:22:58 SimonRC: no Choon anywhere 23:23:42 :') 23:23:44 oops 23:23:47 :'( 23:23:59 So why not translate Prelude to Fugue directly? 23:24:01 SimonRC: because it's a different language 23:24:05 Sgeo: because I don't know MIDI 23:24:11 or at least, I know MIDI pretty well 23:24:13 but not its file format 23:24:25 (I'm more used to it as a protocol) 23:24:26 btw i made a music description language the other day, it totally owns standard score notation 23:24:37 unquote :: 'R ('R -> 'S) -> 'S 23:24:38 * Sgeo types pylib into Fx 23:24:45 i'll turn it tc next week, methinks 23:25:06 Nothing on there, /me googles Python MIDI 23:25:07 ehird: I'm having problems figuring out the kind of 'R in that 23:25:21 you mean you calculate scores? 23:25:24 ais523|sl_busy: R is an abbrev. for "Rest" 23:25:30 for a while now i've been thinking about something like hamming distance for melodies, would be nice to have a database of songs 23:25:36 ais523|sl_busy: It means "the rest of the stack." 23:25:47 for instance you could check whether a melody is your invention, or already exists 23:25:49 http://www.mxm.dk/products/public/pythonmidi 23:25:51 And, of course, EVERYTHING types as ('R -> 'S) -- you give it a stack in and you get a stack out 23:26:00 oklopol: this has been studied before of course 23:26:03 oklopol: I seem to remember that someone once did that simply by writing down the up-down sequence of notes 23:26:10 which discriminates between tunes pretty quickly 23:26:15 althoug of course it isn't a perfect hash 23:26:16 but only roughly 23:26:34 and will split very similar tunes apart 23:27:10 everything done on the subject suck ass as far as i know. 23:27:12 and what if you can't remember the intor? 23:27:13 *sucks 23:27:14 *intro 23:28:01 it may be best to have it both for the intro and for the first few notes of the chorus/main theme, for tunes that have one 23:28:25 umm, or just the whole piece 23:28:48 * Sgeo goes to write a prelude2fugue.py 23:29:07 my bf2pre.c is in the Esolang filestore IIRC 23:29:19 oh great, now I have both the SG-1 and Atlantis themes in my head at once now 23:29:40 SimonRC: damn, my headmusicplayer isn't multithreaded 23:29:45 it has a gui like xmms too 23:29:55 mine task-switches... 23:30:19 I do actually task-switch quite explicitly in some situations 23:30:46 atlantis theme? 23:30:51 SimonRC: you read the daily wtf, don't you? that place is becoming a wtf in itself 23:30:59 ehird: really? 23:31:00 * ais523|sl_busy reads it 23:31:05 I mean, at least the *parody* MFDs in the comments are funny.. 23:31:14 oklopol: yeah, Stargate Atlantis 23:31:25 did you see the thread with 700+ comments on one of the main stories? 23:31:30 which? 23:31:31 presumably it was linked from one of the big sites 23:31:48 SimonRC: the one where a company had used JavaScript for authentication 23:31:54 ais523|sl_busy: reddit linked it 23:31:59 it got on the front page 23:32:00 where the password was checked against plain text client-side 23:32:04 ehird: that would explain it 23:32:05 hehehe 23:32:12 that could describe several ones 23:32:22 Error: Target org.macports.fetch returned: fetch failed 23:32:23 Error: Status 1 encountered during processing. 23:32:23 sfhkjsdfh 23:32:25 the amusing thing was that it appeared to be a scam company's website in the first place 23:32:40 i need to sleep for a while, cya -> 23:33:02 did anyone sign up as "little Bobby Tables"? :-) 23:33:17 SimonRC: you can't inject SQL into client-side JavaScript validation 23:33:28 that's one thing to be said for it, at least 23:33:34 ais523|sl_busy: no, but it might make it through to the server side 23:33:54 there was no server side 23:34:01 wibble 23:34:05 the page simply had a script that checked the username/password 23:34:15 and if it was right, redirected the user to another web page 23:34:20 ah, ok 23:34:24 which they could just access directly if they knew the URL 23:34:47 still more amusingly, the people in charge of the website found out, and changed the username/password 23:34:55 lol 23:34:59 (but of course they were still visible in view source...) 23:35:02 What the fuck?! 23:35:11 that is the WTF moment 23:35:13 really 23:35:30 it was one of the better frontpage stories there 23:35:48 I wonders if MFD is supposed to be any good or whether someone knows they are crap but people will like discussing it. 23:35:50 Amusingly, the daily wtf's first few submissions sucked. terribly 23:36:07 ehird: it was not originally on thedailyWTF 23:36:08 SimonRC: I dunno, I basically skim over the actual comic and read the hilarious modified versions in the comments instead 23:36:10 * Sgeo decides to give up on prelude2fugue 23:36:11 and IMO they weren't oo bad 23:36:15 *too 23:36:20 SimonRC: on Wikipedia, MFD is where non-article content is deleted 23:36:27 ais523|sl_busy: Mandatory Fun Day 23:36:29 as in, pointless webcomics that people run on project pages 23:36:36 hahahaha 23:36:36 ah 23:36:37 I found the acronym coincidence amusing 23:36:40 that's great 23:36:44 maybe deliberate 23:36:49 what does "MFD" stand for? 23:36:55 SimonRC: Misc. for deltition 23:36:56 Miscellany for Deletion 23:36:57 *deletion 23:36:59 ok 23:37:05 as in, all pages not covered by other deletion processes 23:37:12 mainly, it's used for project pages and user pages 23:37:12 hm.... 23:37:12 Mandatory Fun Day: Man, Fuck 'Dis 23:37:30 no 23:37:39 although I hold the record for successful MfDs of system interface messages 23:37:45 Man, Fucked by Dis (the language) 23:37:58 heh 23:37:58 (I have 2, nobody else has any) 23:38:03 ais523|sl_busy: system interface messages? 23:38:04 ais523|sl_busy: wow 23:38:06 how did you do that 23:38:12 SimonRC: things like the global site header 23:38:16 yes, they're actually transcluded pages 23:38:19 wow 23:38:21 MediaWiki is awful, awful software 23:38:23 not quite transcluded, but much the same 23:38:26 I think everyone can agree on that 23:38:31 and MediaWiki makes a lot of sense for WMF 23:38:38 the forum software is TRWTF 23:38:41 but most of its features are designed just to be convenient for them 23:38:43 SimonRC: I know 23:38:45 the wiki software is TRWTF 23:38:46 the preview that isn't 23:38:57 I mentioned the CAPTCHA in one of my posts 23:39:00 Twiki softwareITRWTF <-- shorthand! 23:39:04 ais523|sl_busy: everyone does that 23:39:05 :( 23:39:11 when you preview the post, it changes the captcha image, but keeps the same word 23:39:22 hehehe 23:39:25 giving you a second chance to OCR it with different data 23:39:37 (and ehird: no, I didn't say what the CAPTCHA word was, like so many people do) 23:39:50 http://thedailywtf.com/Articles/18-The-Bullet-That-Slayed-The-Beast.aspx What is the expected *reaction* to this? 'Ha ha ha'? 23:39:55 (but from what they have said, it seems to me that it's just taking random words from lorum ipsum) 23:40:05 It basically amonuts to 'LOL, Microsoft r awsum. Open src ppl SUXORR' 23:40:22 ehird: the reverse of the usual? 23:41:34 ehird: I actually rather like MediaWiki in some ways 23:41:42 (see Wiki Cyclic Tag on Esolang, for instance) 23:41:49 it's not TC because infinite loops are impossible 23:42:03 ais523|sl_busy: Even toy wikis disable template recursion. :-) 23:42:03 but it is TC when the user restarts the loop by hand (by piping output to input) 23:42:20 everything 23:42:24 's tc when the user does it 23:42:24 :) 23:42:36 yes, but not much user intervention is needed 23:42:42 I call the situation 'Muriel-complete' 23:43:06 ais523|sl_busy: Would a brainfuck interp in MWT be possible? 23:43:24 {{brainfuck|,[.,]|hello}} 23:43:25 ehird: I've already written a cyclic tag system in it 23:43:31 Obviously, you'd need to restart it at points 23:43:35 But could you actually do that parsing? 23:43:44 but there's no way to do parsing for chars that don't have special wikimarkup meanings 23:43:54 ah 23:44:00 which is why the cyclic tag system needs to use = as a list separator 23:44:31 ehird: it may be possible if Extension:StringFunctions were installed, though 23:44:51 (note that I avoided extensions for Wiki Cyclic Tag, including the well-known ParserFunctions that make MediaWiki a bit like a programming language) 23:45:30 ais523|sl_busy: Hmm. It occurs to me that a template system can trivially simulate the lambda calculus.. 23:45:32 Like this: 23:45:42 -!- oerjan has quit ("Good night"). 23:45:44 K is 23:45:50 Err 23:45:54 Let's try the mocking bird combinator 23:45:54 easier 23:45:55 :P 23:46:01 {{ {{{1}}} | {{{1}}} }} 23:46:33 ehird: no 23:46:45 ais523|sl_busy: Yes, I know MW's probably doesn't allow that, but that's because it sucks 23:46:48 actually, maybe that would work 23:46:53 and MW does allow that syntax 23:47:06 but I was trying to track what happened to the parameters 23:47:06 only one way to find out.. 23:47:10 but it seems it's fine 23:47:21 User:Elliott/mwc/m here I come! 23:47:23 and ehird: you'll just get a template loop error if you aim it at itself 23:47:26 (mwc == mediawikicode) 23:47:39 ais523|sl_busy: 'Y' could come in handy here 23:47:45 Hmm, you can't create anonymous templates though 23:47:53 So you can't do Y, or much anything really 23:47:56 Hmm. 23:48:00 I'll try S, K, I 23:48:03 you may be able to do something with extra parameters 23:48:07 Hmm, wait.. 23:48:11 by defining K1, S1, S2 23:48:15 ais523|sl_busy: Is it possible to curry it? 23:48:15 Yes 23:48:19 (the partially-curried forms of S and K) 23:48:20 But how do we get the param to K1 23:48:25 that was given to K 23:48:35 you would need to be passing more than one param around 23:48:42 ais523|sl_busy: example? 23:48:44 show me K 23:48:54 however, bug 5678 has now been fixed, so I don't think it's possible nowadays 23:49:12 I mean, you can do: 23:49:13 previously, you could do something like K = K1 {{!}} {{{1}}} 23:49:16 Hmm 23:49:19 What is {{!}} 23:49:27 a template containing just | 23:49:30 OK. 23:49:33 I'll give it a try. 23:49:38 but that only worked by exploiting a parser bug 23:49:42 ais523|sl_busy: K1, or {{{K1 ...}}} ? 23:49:49 related to ParserFunctions, which aren't on Esolang 23:50:05 you dereferenced the {{!}} using {{#if:1|{{{thingtodereference}}}}} 23:50:21 but that doesn't work nowadays, and never ought to have worked in the first place 23:50:25 ais523|sl_busy: {{User:Elliott/!}} 23:50:28 is that OK? 23:50:41 also 23:50:47 #if:1 could be simulated by If1 23:50:51 yes, that's pretty much identical to the corresponding Wikipedia template 23:50:51 which would be {{{1}}} 23:50:55 and ehird, no, it was a bug in #if 23:51:02 Welp, I'll try it anyway 23:51:19 ais523|sl_busy: K1 would just be {{{1}}}, correct? 23:51:25 yes 23:51:29 Hmm 23:51:31 Then it could be 23:51:35 I {{!} {{{1}}} 23:51:35 :-) 23:51:37 allowing for dereferences in appropriate places 23:51:54 and I can't figure out where they ought to go right now 23:51:59 ah 23:52:12 but they won't work anyway, so you can't test 23:52:16 okay :( 23:52:21 ais523|sl_busy: so there's no way to curry a template properly 23:52:36 there may still be a way 23:52:38 alas, that si so often the case 23:52:40 but it's kind of hard to explain 23:52:48 I am working at work on a system that would be TC if you could curry 23:52:50 suppose /every/ template carries around two params 23:53:06 ais523|sl_busy: I think I might see where you're going 23:53:13 then, you make sets of 3 templates, to generate the resulting template base name, first param, second param 23:53:18 (Permission to pollute esolang's main namespace? I, K, etc. aren't going to be really common names.) 23:53:22 and somehow cart blocks of those around 23:53:33 ehird: I can't give you that permission, you'd have to ask Graue 23:53:47 who is Graue? 23:53:50 I'll take Graue's permission as implied. iirc, you can delete pages, ais523|sl_busy, so if I regret it I'll just bash yiou ;) 23:53:52 SimonRC: esolangs owner 23:53:57 ais523|sl_busy: hmmm 23:54:03 K = K1 {{{1}}} 23:54:06 not on IRC? 23:54:09 incidentally, see User:Ais523/k1 on Esolang; I had this sort of idea earlier 23:54:17 {{ {{ K | foo }} | bar }} 23:54:19 -> foo 23:54:29 SimonRC: not registered, apparently, but he does come here occasionally 23:54:34 + 23:54:38 I've gottt it! 23:54:41 Time to do shizz 23:55:03 ehird: I can also block users :) 23:55:21 ais523|sl_busy: don't be cruel :'( 23:55:36 hey hoo, K can just be 'I {{{1}}}' 23:55:38 I only intend to do that, though, if you cause a big mess and then blame it on me 23:55:38 that's cool 23:56:07 hmm... Esolang is still on Parser_OldPP, I think, so there is at least some chance that you'll be able to get delayed parsing of | 23:56:23 I don't think I need it, ais523|sl_busy. 23:56:24 Well, not sure. 23:56:26 (on the new preprocessor, it decides which |s are literal and which ones are commands right at the start of parsing, so that wouldn't work) 23:57:21 ais523|sl_busy: I think I can trick MW into accepting the Y combinator 23:57:26 Since I think I can avoid *direct* recursion. 23:57:40 ehird: I think it checks to see if the same template name is used three times in a chain 23:57:48 no matter what the params 23:57:49 Hmph. Oh well 23:58:21 MW? 23:58:25 MediaWiki 23:58:31 Oh MediaWi..riright 23:58:44 ais523|sl_busy: is whitespace ignored? 23:58:50 {{ {{{1}}} | abc }} and stuff 23:58:58 ehird: sometimes 23:59:07 if it's either side of a metadata character, it's normally ignored 23:59:19 and it's definitely ignored between {{ and |, which in this case is the only relvant case 23:59:36 (except if you have a multiword template name, of course) 23:59:41 {{ {{ {{{1}}} | {{{3}}} }} | {{ {{{2}}} | {{{3}}} }} }} 23:59:42 S2 23:59:44 ais523|sl_busy: is that OK? 2008-03-08: 00:00:00 that looks right 00:00:35 hmm, you remarked exactly at midnight 00:00:44 ais523|sl_busy: hmm... 00:00:46 {{ {{ S1| K | S }} | K }} 00:00:50 that's what it thinks SKSK is 00:00:57 I think I need more {{ }} ing of partially evaluated forms 00:01:07 ais523|sl_busy: S, S1, S2, K, I are my templates 00:01:34 * Sgeo has gotten MW pages to contain text that you can't put in directly, and that resaving with no changes change the page.. 00:02:10 ais523|sl_busy: I definately have a weird bug 00:02:10 Sgeo: I know at least two examples of that, but they're both bugs according to the devs 00:02:11 {{ {{ K | hello }} | world }} 00:02:12 --> 00:02:19 {{ I| hello | world }} 00:02:27 Oh, of course. 00:02:29 that's not a bug 00:02:31 Hmm, wait.. 00:02:35 {{{subst:ns:0}}{some_template}} 00:02:36 that's just MediaWiki marking characters as literal 00:02:41 ais523|sl_busy: Ah. 00:02:42 they don't magically deliteralise 00:02:44 So I need your trick? 00:02:46 erm wait 00:02:48 (What was it, again?) 00:02:55 ehird: I already explained that it doesn't work 00:03:15 ais523|sl_busy: OK. So should I just give up, or is there hope? 00:03:24 well, I just gave up last time I tried 00:03:46 I don't think a simple method will work, because you can't just insert | marks into the middle of templates remotely 00:03:51 ais523|sl_busy: Trying your {{!}} 00:04:05 I think the bug that I used was fixed 00:04:11 or maybe not a bug 00:04:35 {{ {{ {{{1}}} {{!}} {{{3}}} }} {{!}} {{ {{{2}}} {{!}} {{{3}}} }} }} 00:04:51 {{{{{{{1}}}{{!}}{{{3}}}}}{{!}}{{{{{2}}}{{!}}{{{3}}}}}}} funnier without whitespace 00:04:52 Sgeo: you can do it by trying to subst a non-existent page 00:05:18 also note that a user was once banned by Arbcom, partially for setting their signature to ~~~~ (but for other more serious reasons too) 00:06:14 although I admit that it was an ingenious thing to do 00:06:22 wht happens if your sig is ~~~~ ? 00:06:30 SimonRC: when other people edit the page it becomes their sig 00:06:32 think about it 00:06:37 cool 00:06:40 mw substs user->sig on ~~~~ 00:06:46 if user->sig = ~~~~ 00:06:50 it puts ~~~~ on the page 00:06:52 it's not as simple as that 00:06:53 when edited, it sees ~~~~ 00:06:54 but I can't remember why 00:06:55 and substs user->sig 00:07:02 ais523|sl_busy: because sigs are interp'd for wikicode 00:07:04 and I think it may have changed over time 00:07:04 but yeah, basically. 00:07:11 ais523|sl_busy: anyway, I cannot think how to make my templates work 00:07:13 ehird: there are sig filters nowadays 00:07:16 if you have any ideas I'd really like to hear them :) 00:07:48 I don't have enough of one 00:08:13 it may be possible to do clever things using = on Parser_OldPP, but I don't think that's sufficient for this 00:08:59 hmm 00:09:01 what is = 00:09:05 oh 00:09:05 yes 00:09:07 keywording 00:09:09 hey, that's a good idea.. 00:09:14 I mean 00:09:16 it's for named parameters 00:09:21 if we say that we have args x, y, z for S 00:09:21 then 00:09:23 and yes, you can have a param called 1 or 2 if you like 00:09:36 which has interesting interactions with numbered params 00:09:41 S = S1|x{{{1}}}{{{2}}} 00:09:43 and 1 must be = 00:09:49 ais523|sl_busy: actually i have no idea how i could utilize that 00:09:49 heh 00:10:14 I don't either 00:10:23 although I used it for Wiki Cyclic Tag for list parsing 00:10:34 http://esolangs.org/wiki/FURscript if this had a call procedure command I think it would be turing complete 00:10:38 due to lambda calculus hackery 00:12:10 [DIRFORMAT="DIRECTORY","BYPASSSECURITY?"] FORMATS A DRIVE AND ASKS WHETHER TO BYPASS ALL RESTRICTIONS 00:12:34 I like how it formats the drive beforehand 00:12:35 and then asks the user whether it should have done 00:12:58 luckily it doesn't say which drive is formatted, so as long as I have a floppy disk I may be alright 00:14:06 hmm... there are three comments requesting deletion on the talk page of that page 00:14:19 one of them is mine, though, so it would be inappropriate for me to delete it myself 00:14:22 don't delete it 00:14:24 its hilariously bad 00:14:35 btw 00:14:36 write that onwiki, so your opinion is preserved? 00:14:36 http://pastebin.ca/932888 00:14:41 SKI mediawiki thingy 00:14:47 a simple statement of the problem 00:14:51 so it's easier to think about it 00:15:07 ehird: MediaWIki blocks template loops anyway 00:15:18 so... why not just restart by hand, like with my cyclic tag interp? 00:15:32 ais523|sl_busy: Because the more automatic, the cooler. 00:15:36 We want mini programs in MW pages! 00:17:18 ais523|sl_busy: Hmm 00:17:18 {{ {{{1}}} | {{{1}}} }} 00:17:20 called with itself 00:17:23 returns a link to the template 00:17:28 is that how it handles inf loops? 00:17:30 yes 00:17:36 it makes them into links rather than transclusions 00:17:53 if you do it with subst, you get a little HTML comment in the output saying there was a loop 00:18:06 hmm... I wonder if it's visible in view source with the nonsubst version? 00:18:33 {{ subst: {{{1}}} | {{{1}}} }} 00:18:35 how do i make that work 00:18:36 :| 00:18:55 it isn't easy, although I managed it once 00:19:06 it involved editing the template once it had already been set up 00:19:24 I don't get what you're saying 00:19:24 :p 00:19:29 I tried to make /SKI be that 00:19:33 but it just puts that literally. 00:21:13 -!- timotiis has quit ("leaving"). 00:23:01 ehird: do you want me to clean up the mess you've created now, or are you still having fun messing around with it? 00:24:49 ais523|sl_busy: not sure 00:29:25 an interesting PDF I just came across: http://www.tcs.ifi.lmu.de/~gruberh/data/fun07-final.pdf 00:29:32 it's about esoteric sorting algorithms 00:29:43 (that is, ones which are so bad they wouldn't be used in practice, like bogosort) 00:30:29 wasn't there a website about those 00:30:41 like intelligent-design sort? 00:32:51 the paper manages to optimise bozosort (which is itself twice as efficient as bogosort) to O(n^3 log n) running time 00:34:03 odd that it's more efficient 00:37:30 "the number of values a bit can have is small" -> another choice Wikipedia quote 00:37:38 * SimonRC wonders what the correct form of "yours truly" to refer to himself is, when he is talking to himself 00:37:48 "mine truly"? 00:37:54 ais523|sl_busy: not as small as it could be! 00:37:56 ais523|sl_busy: lol 00:38:00 * lament likes halfbits 00:38:15 sqrt(2) values 00:38:26 ISTR they exis in QM 00:38:35 wow, we seem to have been having a lot of TURKEY BOMB discussions later 00:38:41 although this one is in disguise 00:38:43 and probably in other information theories 00:38:45 s/later/lately/ two lines ago 00:39:03 has anyone tried to implement TB? 00:39:14 SimonRC: yes 00:39:21 ais523 and I have a project to do so ongoing 00:39:23 where? 00:39:38 are you implementing it as a programming language or a drinking game? 00:39:42 but finding meaningful values you can stuff into fractions of a bit is hard; you can pad the field to the nearest byte but you can't store anything meaningful in it. 00:40:43 SimonRC: it's ehird's project, but they keep trying to credit me with it 00:41:25 you mean s/credit/smear/? 00:41:27 :-) 00:41:30 (which is incidentally the difference between the BSD and MIT licences; BSD disallows other people crediting you for their work) 00:41:46 BTW, anyone know about DISC profiles? 00:41:49 ais523|sl_busy: nooo 00:41:51 ais523|sl_busy: I meant 00:41:53 you tried to implement it 00:41:56 and I am ongoing 00:42:00 I didn't get all that far 00:42:07 I seem to be the classic high D+C 00:42:15 although I did generate some useful ideas, and the TCness definitions 00:42:26 (at least, it has TC control flow, not sure about data structures) 00:42:28 we need more quantum languages 00:42:46 Quantum INTERCAL turned out to be a cheat; it's actually just a form of multithreading 00:42:48 the usual one seems to be the raw equations 00:42:56 which are an esolang by themselves 00:43:10 we need quantum TwoDucks! 00:46:13 halfbits in particular deserve more attention 00:46:58 is it possible to write numbers in base 1/sqrt(2)? 00:47:02 maybe, any collection that comes to a total of n bits can store a number from 0 to ceil(2^n)-1 ? 00:47:27 ais523|sl_busy: ITYM sqrt(2) 00:47:32 and if so, yes 00:47:53 most numbers have multiple representations 00:48:08 well, why can't I have a number system with a negative number of digits available? 00:48:25 or at least, a number of digits somewhere between 0 and 1 00:49:50 heh, ternary arithmetic: 00:49:51 A base-three system is used in Islam to keep track of counting Tasbih to 99 or to 100 on a single hand for counting prayers (as alternative for the Misbaha). The benefit —apart from allowing a single hand to count up to 99 or to 100— is that counting doesn't distract the mind too much since the counter needs only to divide Tasbihs into groups of three. 00:50:22 wow 01:03:29 -!- ais523|sl_busy has quit ("ehird, if you want those pages deleted, you're going to have to ask onwiki because I really ought to go home"). 01:08:59 -!- faxathisia has joined. 01:39:37 * SimonRC goes to bed. 01:40:47 * ehird doesn't. Ever. 01:41:51 How do I killall sound or killall flash stuff? 01:42:29 This is rather urgent, I'm going batty 01:42:41 -!- Corun has joined. 01:43:03 Sgeo: Speakers. Mute them. 01:43:17 But I want to be able to hear other sound 01:43:27 reboot o_o 01:43:30 Just not this sound that is stuck and I can't seem to kill it 01:43:35 faxathisia, is there any other way? 01:44:34 What's the thing that GNOME uses for sound? 01:45:18 I think it's using HALD 01:45:23 I can't kill that, can I? 01:45:45 killed 01:45:51 And that sound is STILL playing 01:45:53 what is difficult about rebooting..? 01:46:35 * Sgeo will reboot 01:47:38 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 01:51:23 -!- calamari has joined. 01:51:30 -!- Sgeo has joined. 01:51:40 * Sgeo is obviously back 02:01:22 did that work? 02:04:53 yes ofc 02:05:02 But I want to know what process I could have killed to fix it 02:06:00 * Slereah is less obviously back 02:15:39 http://pikhq.nonlogic.org/kernel.tar.bz2 02:16:56 Does it support PSOX? 02:17:38 * Slereah sees the future. 02:17:44 "Would you like it to?" :o 02:20:10 Sgeo: Hardly random. Your self-promotion is deterministic: the constant function true. 02:20:36 "Please be kind to our operators: they may not be very intelligent, but they're all we've got." 02:20:37 Heh. 02:21:01 Slereah, eh? 02:21:11 I'm reading the INTERCAL dow 02:21:13 *dox 02:36:17 Sgeo: It doesn't even have *processes*. ;) 02:36:18 (yet) 02:36:53 -!- ehird has quit ("This computer has gone to sleep"). 02:39:12 -!- olsner has joined. 02:50:00 -!- Corun has quit ("This computer has gone to sleep"). 02:57:09 -!- Corun has joined. 02:59:35 pikhq, will it eventually support Python? 02:59:49 btw PSOX 1.0 spec not finalized, that will come with b1 02:59:52 PSOX 1.0b1 03:12:01 Hahahah, apparently there's a #jesus on FreeNode X-D 03:12:16 Now 100% F/OSS! Download jesus-prealpha-0.1.tar.gz today! 03:12:40 "Turn to Jesus ASAP. It's the only way to escape hell! He's paid the price for your crimes, now come and collect your ticket.." 03:12:42 Lul 03:18:57 Sgeo: Well, it may eventually support POSIX. 03:19:16 By providing enough system calls to support a port of Newlib, of course. 03:31:42 Newlib? 03:40:22 I'm trying to think up of some language based on set theory, but there's the incompleteness theorem posing problems :o 03:50:37 Newlib is a small, simple libc by Red Hat, meant for embedded systems or initrd's. 03:54:30 -!- Corun has quit (Read error: 110 (Connection timed out)). 04:21:30 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 04:32:56 uclibc 04:34:52 err uClibc, sorry :) 04:42:51 calamari: Isn't that harder to port? 04:43:05 probably 04:43:08 Newlib is trivial. 04:43:26 'Provide these functions, and link them with newlib. Voila, you've got newlib working.' 04:45:29 G'night all 04:45:31 http://www.busybox.net/lists/busybox/2005-March/013759.html 04:46:25 :) 04:47:02 -!- Sgeo has quit ("Ex-Chat"). 06:17:44 i missed the orgy :( 06:18:17 Apparently. 06:18:33 -!- pikhq has set topic: bsmntbombdood missed the orgy. | Fe fi fo funge, I smell the brainfuck of an Englishman. | pastebin - http://pb.eso-std.org/. 06:49:49 http://www.erbzine.com/mag17/1744.html 06:49:51 :D 07:25:40 -!- calamari has quit ("Leaving"). 07:48:06 -!- Slereah has quit (Remote closed the connection). 07:52:33 -!- Slereah has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:19:15 -!- oerjan has joined. 08:49:19 -!- Sukoshi has joined. 08:51:35 Hello 08:52:15 Hi. 08:52:48 Hi. 08:53:28 Sukoshi is a cat program :o 08:53:38 I am? 08:53:42 Oh :D 08:53:44 someone in ##c is telling me to cast isupper/toupper and lower :( 08:53:55 I'm like no.. that's not a requirement 08:54:14 Indeed. Your mom is the requirement! 08:54:18 (Hah.) 08:54:21 lol 08:54:25 I'm not saying that... 08:55:06 Situation: 08:55:44 I have admin access to a block of machines behind a Cisco router which I have some access to, but not enough time to explore. Ports may or may not be open to the outside, which ones, I am not sure of yet. 08:56:01 Objective: Create a system backdoor. 08:56:08 Ideas? 08:57:06 Can I save a whole bunch of money by switching to Cisco? 08:57:22 That depends on the state of your finances. 08:57:38 And in which direction the wave function collapses when observing. 08:58:28 -!- Judofyr has joined. 08:59:47 Sukoshi: If you can't serve on any of them (due to nothing forwarded) you could just run deamons on them which ping HTTP connects, POSTing the results of exec`ing whatever was on the page 09:00:15 Yep. Which was the idea I was thinking of. 09:00:17 It's a pretty ugly solution so it fit's whatever you're doing :P 09:00:59 I am fomenting a proletariat revolution. 09:01:18 The means of production shall be robbed from the capitalists and nationalized into the hands of the People. 09:01:20 (Not.) 09:01:36 Can it wait? My Guy Fawkes mask still hasn't arrived. 09:01:41 Nah. 09:01:53 I need more top hats, see. 09:01:58 So the capitalists must fall now. 09:03:19 Sukoshi: alternatively if they run any PHP server just stick a system($_GET['foo']) somewhere, easy to beam a shell though 09:03:23 hah, who shall produce the top hats if not the capitalists? besides everyone knows only capitalists wear top hats 09:03:30 Capitalists don't wear top hats anymore. 09:03:35 Look at Ron Paul! 09:03:44 (that might be wrong .. I probably forgot PHP) 09:03:52 they do in North Korean films. they are the truth, you know! 09:03:57 faxathisia: No PHP here. 09:04:07 Not that I know PHP. 09:04:13 Do they also sport big moustaches? 09:04:26 I can't have a mustache unless I get hormones. 09:04:31 I don't really want hormones :\ 09:04:37 But I still want a top-hat, see. 09:04:48 probably. they are also fat and drink a lot of whisky. 09:04:53 Why, you a girl? 09:04:54 iirc 09:04:57 Yes. 09:05:10 So there are girls on esolangs! 09:05:13 Indeed. 09:05:21 What's your esolang? 09:05:26 BF. 09:05:34 For winz and justicez. 09:06:25 I wish these bloody Congressional amendments were easier to find. 09:06:52 Sukoshi: Are you still using smalltalk? or something else? 09:07:21 faxathisia: I wish I had the *time*, really. 09:07:28 aw.. 09:07:41 But when time does open up (and it will), I will do more of it! 09:09:18 I've been busy with the Calc III. 09:09:40 Well somewhat busy anyway. This weekend my (somewhat self-assigned) homework will start the actual Calculus. 09:09:45 Sukoshi: Have you seen a proof that √2 exists? :D 09:09:50 o_O?! 09:09:54 Link plz !!! 09:09:59 I have it was so awesome 09:10:42 Link! 09:10:45 Wow, that sounds awesome. 09:11:06 Is... this your proof? http://us.metamath.org/mpegif/sqr2re.html 09:11:56 You have to click on each step, and then the steps of the steps for the actual proof from ZFC axioms 09:12:08 ..... 09:12:16 y = x^2 is continuous on [0, 2).. so it has a solution for y = 2, by .... 09:12:30 * faxathisia (tries to find the name of this theorem) 09:13:01 Definition of Continuity? 09:13:09 Oh wait. :P 09:13:12 aha! http://en.wikipedia.org/wiki/Intermediate_value_theorem 09:13:19 IVT? 09:13:25 Bolzano Weierstrass 09:13:28 Ohhhh. 09:13:34 Hah. Interesting. Interesting. 09:13:44 But you can use that for most any irrational number. 09:13:46 It be that the two limits at a point are equal, and equal to the function at this point :o 09:13:47 * faxathisia hisses at Set theory 09:14:25 Ø : THE EMPTY SET DOES NOT APPROVE OF YOUR HISSING 09:14:30 But irrationals are real ... LOL WUT FAILZ 09:14:55 lol 09:15:13 * faxathisia thinks.. (How can I get Sleareah into Type Theory..) 09:15:28 Hell, I got into set theory by type theory! 09:15:35 Because type theory is horrible 09:15:39 At least the PM type theory. 09:15:55 I got into ... electrical engineering ...? :P 09:16:19 But most of the PM is horrible : http://membres.lycos.fr/bewulf/Russell/14.01.jpg 09:16:29 Russell doesn't know dick about making nice notations. 09:16:42 That reminds me of my friend's (whose coursework I'm self-studying) extra-credit problem with 4d spheres. 09:16:50 hmm never heard of PM 09:17:00 Principia Mathematica 09:17:20 Quite the masterpiece, really 09:17:33 But it's really hard to read, with the notation conventions 09:17:42 o_O 09:17:47 Someone who hasn't heard of PM?! 09:17:48 fun fact: if you make a cube length and put a sphere with radius 1 at one the corners.. the center of the cube is not inside the sphere 09:17:59 for some dimension... higher than 3 .. I forgot which 09:20:01 oh 09:20:05 I heard of Principa.. 09:20:12 have not read it yet 09:20:26 You can have it for free! 09:20:27 Hey, anyone here up for a game of Nomic in parallel with an evolving Prolog mirror? 09:20:31 It has 0 copyright! 09:20:55 It has copyright on 0 - it proved it existed 09:21:22 http://membres.lycos.fr/bewulf/Russell/54.jpg <- trhar 09:21:39 (/\ is the old "empty set" notation) 09:21:45 No Nomic/Prolog? Awww :| 09:22:06 Sukoshi: What is your intrest in Prolog? 09:22:09 Forgot what theiota means 09:22:12 the sphere exactly touches the cube center for n=4 09:22:25 Ew. Balls are touching. 09:22:28 sqrt(4*(1/2)^2) = 1 09:22:34 faxathisia: I miss it lots. 09:22:50 I've been programming bare bones stuff for the longest time ... and Prolog is what I crave, heh. 09:23:15 A friend of mine told me that mercury is moar awesome for logic programming. 09:23:21 Never tried though 09:23:57 Well, there are many Prolog implementations out there, and it's widely understood. 09:24:05 So maybe it's more convenient. Depending on what yer after. 09:24:33 I don't know.. 09:24:42 I don't think mercury is that wonderful 09:25:01 Prolog is wonderful. 09:25:13 I haven't given Mercury the nod over though, so I dunno. 09:26:28 * Slereah has some retarded idea for a logical language 09:26:47 But I'm not sure it's even somehow feasable. 09:26:53 wouldn't that be ... illogical? 09:27:18 Only time will tell! 09:28:08 (Only your mom will tell.) 09:28:39 Zing! 09:51:02 -!- sebbu2 has joined. 10:04:50 -!- sebbu has quit (Read error: 110 (Connection timed out)). 10:06:39 -!- Judofyr has changed nick to JudoBot. 10:07:10 -!- JudoBot has changed nick to Judofyr. 10:23:55 -!- Judofyr has quit. 10:24:24 -!- Judofyr has joined. 11:18:44 Was there anything TC between the analytical engine and Schofinkel's combinators? 11:47:54 -!- timotiis has joined. 11:55:04 -!- oerjan has quit ("leaving"). 12:47:41 -!- fizzie has joined. 13:42:19 -!- Corun has joined. 13:53:34 Slereah: you mother, i'm sure 13:53:37 *your 13:53:43 r r brokens. 14:22:18 My mother wasn't born :o* 14:24:15 -!- Corun has quit ("This computer has gone to sleep"). 14:38:41 -!- ihope has joined. 15:05:56 Slereah: What are Schofinkel's combinators 15:06:25 Regular combinators. 15:06:35 like S and K? 15:06:39 And they were created by Schonfinkel 15:06:44 but just any set which are TC? 15:06:50 In 1920. 15:07:03 There was S and K back then, yes 15:08:04 cellular automata aren't turing machines are they? 15:08:42 They're TC. 15:08:52 Well, they can be at least. 15:08:59 Although I think CA are more 60's. 15:09:04 I don't think I get your question 15:09:19 what does it mean to be between e analytical engine and Schofinkel's combinators? 15:09:35 I was wondering if anything happened between 1890 and 1920 15:09:40 Ohhhh 15:09:47 The analytical engine was TC, combinators are. 15:10:07 I was wondering if there's anything between the two 15:10:09 Or if there's a 30 years gap 15:11:13 The analytical engine was 1890? 15:12:26 1842 15:12:45 Or something 15:15:09 What was in 1890, then? 15:16:23 "“The Analytical Engineâ€, paper by Major-General Henry P. Babbage (Charles Babbage's son), read at Bath on September 12th, 1888; published in the Proceedings of the British Association, 1888" 15:26:05 -!- Tritonio_ has joined. 15:40:40 -!- Corun has joined. 15:50:02 Is there a table for INTERCAL's unary operators? 15:50:15 I don't understand the manual 15:58:27 -!- ehird has joined. 16:09:01 What are its unary operators? 16:10:33 and, or and xor 16:10:36 (yes, unary) 16:15:51 Doesn't it do a bit shift left and then and/or/xor or some such? 16:16:47 From what I understand, it takes the number, uses pairs of 'em and put the result on the first bit of the pair 16:17:23 Although from the examples, I can't tell. 16:33:14 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 16:33:29 -!- Slereah has joined. 16:35:56 hello 16:36:03 Hi 16:36:15 :) 16:47:25 Cheese. 16:47:35 You know Prolog? 17:01:48 Kind of. 17:02:07 (to-derive (append x '() x)) 17:02:07 (to-derive (append (cons x xs) y (cons x zs)) 17:02:07 (append xs y zs)) 17:02:14 acceptable syntax? 17:10:38 -!- Judofyr has quit. 17:11:06 faxathisia: no 17:11:11 verbose. 17:11:14 Try this 17:11:24 (-> append x '() x) 17:11:45 (-> append (| x xs) y (| x zs) (append xs y zs)) 17:12:00 (the extra parens are superflouous, and you really need short names to make prolog readable) 17:12:24 the arrow is the wrong way :P 17:12:36 faxathisia: no 17:12:43 it's a statement -> 17:12:49 -> is pointing to the truth 17:12:58 you're DEFINING what append is 17:13:12 faxathisia: Unicode! 17:13:18 unicode :o 17:13:18 Like this: 17:13:46 (? append x '? x) 17:13:52 omg lol 17:13:56 it's ?'s 17:14:02 arg 17:14:03 err 17:14:03 wait 17:14:04 (? append x '? x) 17:14:12 was using the norweigen oerjan-o instead of the empty set symbol 17:14:12 heh 17:14:16 faxathisia: i'll screeny 17:14:17 can you send it in UTF-8? 17:14:20 oh ok 17:14:25 and no, i don't know how to tell xchat aqua to be undumb 17:14:51 you have to set the option in Server List/Show Details/Connect Options 17:14:58 and then reconnect? 17:15:04 yeah 17:15:22 faxathisia: i'll jsut screeny then 17:15:23 :p 17:15:33 yay for Skitch which makes it all nice 'n quick 17:16:02 faxathisia: http://img.skitch.com/20080308-tabpr4jgrbrx8q85sk8k95yfqi.png 17:17:17 faxathisia: it's awesome 17:17:18 :p 17:17:22 well 17:17:26 You could use the |- unicode symbol 17:17:29 For more pretentiousness 17:17:31 But I like mine 17:17:42 faxathisia: Write a mode for $EDITOR that transforms -> into the right symbols for it! 17:17:50 or just one that has a command to insert a definition 17:18:11 hmm.. yeah .. I should learn to write emacs modes 17:18:22 ?-C ===> (? |name| ) 17:18:29 |...| is overwrited 17:18:30 by typing 17:18:37 then a tab or something goes onto the arglist 17:18:44 () transforms into that O 17:20:08 yeah, I think I steall pretty-lambda from schemem mode to do that 17:21:49 faxathisia: Um, may I suggest you avoid aligning things in this mode.. 17:21:55 Unicode characters are proportional, in most monospace fonts. 17:22:01 E.g. that /O is wider. 17:22:01 yeah that sucks :? 17:22:14 faxathisia: But everyone knows proportional fonts for coding rawk, if the font's good. 17:22:16 BE REVOLUTIONARY 17:31:36 -!- Judofyr has joined. 17:31:42 Judofello. 17:31:52 (Thanks, Judofyr. Thudofyr.) 17:33:24 -!- Judofyr_ has joined. 17:33:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 17:34:01 -!- Judofyr_ has changed nick to Judofyr. 17:34:11 ehird: Hello :) 17:41:22 BREAKING NEWS -- IDIOT FOUND ON INTERNET 17:41:24 'Well, I think that a programming language has to be Turing-complete to be considered a programming language.' 17:41:28 UPDATE AT 11 17:41:37 bullshit. 17:41:49 oh 17:41:54 I:D 17:41:59 faxathisia: reddit is such fun 17:42:04 * faxathisia did not notice 'IDIOT" 17:42:16 it was far better before they switched to python 17:42:17 :p 17:42:21 it was like 17:42:33 'Oh cool, it's like a site where - OH MY GOD IT'S LISP I BETTER LEAVE THE INTELLIGENT PEOPLE ALONE' 17:42:42 'Oh, it's written in Python? Am gud with Python! HAY GUYZ' 17:42:46 :D :D lol 17:42:58 It's true 17:44:03 faxathisia: of course the latest iteration of the site sucks a lot less than lispit :) 17:44:23 lisp (good) -> web.py (sucks, because web.py is terrible) -> pylons (awesome) 17:44:31 I don't personally like Pylons but it sure makes reddit nice 17:45:41 not seen reddits code 17:46:09 looks pretty trivial if you know dhtml or whatever they do that stuff with 17:49:07 faxathisia: uhh 17:49:12 reddit is written in dhtml now? 17:49:25 I don't know :P 17:49:33 faxathisia: DHTML is a javascript thingy. 17:49:38 Reddit is a whole site. 17:49:42 I mean you just need some javascript and the rest is trivial 17:49:45 ... 17:49:49 http://reddit.com 17:49:59 the only JS used is optional, and for the fancy reply box thingies. 17:50:56 Anyway, reddit isn't open source, you couldn't look at its source if you wanted to. 17:51:04 :S 17:51:23 faxathisia: do you even.. know what reddit is 17:51:31 why did you imply that reddit is mostly javascript?! 17:51:35 that makes NO SENSE 17:52:03 lol 17:52:16 faxathisia: seriously, WTF 17:52:22 Why does this disuccsion remind me of a train wreck? 17:52:30 I'm not up with the latest web 2.0 17:52:36 highlight what major part of reddit you believe to be javascript?! 17:52:45 fizzie: faxathisia's driving, I guess. 17:52:46 but I could write reddit except for the dynamic HTML stuff 17:52:59 you could write it, but not all its features. 17:53:05 exactly 17:53:08 e.g. the rating algorithm. 17:53:18 which is very finely tuned over years of, you know, loads of traffic. 17:53:39 Theorem: Just because the interface to something is simple, does not mean that the thing itself is simple or easily replicated. 18:01:34 ehird: Does you know what Judofyr means? 18:01:49 Do* 18:04:41 Judofyr: noes. 18:04:45 I was just quoting Look Around You 18:04:58 fyr = guy in norwegian :) 18:05:05 it's sort fo Karate Kid :P 18:05:10 of* 18:05:16 Thanks, ${name}. Th${name[first_vowel(name)..]}. 18:07:47 faxathisia: by the way 18:07:55 I had this crazy crazy idea last night 18:07:56 but it's really long 18:08:02 and i don't wanna flood #esoteric 18:08:08 Thaxathisia? 18:08:10 what's it about? 18:08:18 faxathisia: an esolang 18:08:20 but it's not just a language 18:08:23 :O 18:08:24 it's.. ahrd to explain 18:08:29 try 18:08:32 #nodist, i'll explain there 18:08:34 its long 18:39:27 -!- oerjan has joined. 18:40:33 Hey, oerjan. 18:41:20 Hey, pikhqoerjan. 18:42:36 'evening 18:56:58 -!- calamari has joined. 19:16:10 * SimonRC thinks of a privacy escalation: pty-grabbing. If someone runs sudo from a pty, then sudo usually caches their ability to use sudo there for about 5 mins. There might be a way to exploit this to escalate local to root. 19:19:32 SimonRC: there is 19:19:45 this is why you configure sudos timeout to 0 19:29:43 Deewiant, there? 19:30:14 my funge98 interpreter in bash does get to the end of mycology, with a few BAD though, but it doesn't die 19:31:08 oh and quite a few N/A 19:31:53 (as it does no fingerprints at all, and therefore currently reflect on all fingerprints :/) 19:32:50 * AnMaster is going to write a full Befunge98/08 interpreter in C later 19:34:12 bbiab 19:40:16 * SimonRC admires type theory notation 19:41:00 I don't want readability in my math. I want a hugely complex slightly ugly pile of symbols for maximal intimidation effect. 19:41:18 intimidate the muggles! 19:43:28 SimonRC: Most people would agree, sans the 'type theory' part. 19:43:32 Slereah: what are these "Schofinkel's combinators"? 19:43:39 s///ing it with 'maths' 19:43:47 ah, nm, I just saw 19:44:57 Deewiant, btw a question: in the mycology readme, at each extension is listed a hexdecimal number, what is it for? 19:47:47 AnMaster: its fingerprint code 19:47:55 which is the 4 ascii chars concatted together in hex 19:49:45 yes 19:49:54 that is the algo given in the F98 spec, ISTR 19:50:16 though F98 has some allowance for longer codes, doesn't it? 19:50:21 SimonRC: I just kind of know what the relation to a 32-bit number and a four-character code will be instinctively. 19:50:25 So much stuff uses it. :-) 19:50:32 It's like BCD, except it's ASCII Coded Hex 19:53:26 ehird, ahah 19:53:29 aha* 20:04:05 It's like BCD, except it's ASCII Coded Hex 20:04:12 So, it's the same in that ... it's coded. 20:04:43 GregorR: <_< 20:06:39 * SimonRC is surprised to find out that most of the humanoid furry things on Sesame street are left-handed 20:07:55 SimonRC: It's a conspiracy 20:09:08 obviously they come from a mirror world 20:09:31 they are refugees - the only ones that were not evil and had goatees 20:09:40 oerjan: hahah 20:09:59 #esoteric is great 20:10:01 :p 20:10:08 hmm, one more subdomain I need -- http://qdb.eso-std.org/ 20:11:58 ehird: actually, the theory I was reading was that they originated from an island near India, and were brought to NY by a circus (at the time that such things were popular) which failed and abandonned them, 20:12:05 SimonRC: .. 20:12:12 http://www.erbzine.com/mag17/1744a.html 20:12:16 (part 2 of 3) 20:12:36 read part 1 first, I recommend 20:12:37 thats a parody 20:12:38 yes?? 20:15:42 yes 20:16:00 the style's called "ha ha only serious" 20:16:01 IT'S THE UNTARNISHED TRUTH YOU HEAR 20:16:13 SimonRC: it's incredibly hard to detect 20:16:13 :) 20:16:24 they are taking serious thinking tools to a silly question 20:16:33 speaking of which i need a new fscking mighty mouse, I can't use my current one because the teflon got scratched to hell so it grinds along 20:16:42 but I am *dying* without expose & 3d smooth scrolling 20:17:47 * ehird is a spoilt mac luser 20:18:00 i thought "ha ha only serious" meant a joke that was more serious than it appeared 20:18:05 oerjan: kind of 20:18:23 imagine a post making ridiculously overboard statements about windows 20:18:29 but the basic concept behind them is actually true in windows 20:18:38 not using a serious style to investigate something foolish, but rather the reverse 20:18:46 yes 20:18:54 I think the essence of 'ha ha only serious' is that to truly define it properly, you need to utilize it 20:19:05 so i fail to see how anything about muppets can qualify :D 20:19:07 which creates somewhat of a bootstrapping problem when nobody well-versed in using it proficiently is to hand 20:19:52 clearly it needs to be taught from kindergarten 20:20:02 yes 20:22:14 -!- sebbu2 has changed nick to sebbu. 20:23:38 hehehe "Indeed, if we look at transcripts of Sesame Monsters speech, it is remarkable how transparent it is. Sesame Monsters are almost obsessively focused on the sorts of tasks or skill sets that a frugivore needs to find food - They are fascinated with the difference between one thing and another, with distinguishing objects from groups, they're obsessed with timing, with location, with finding, with counting." 20:24:13 func.func_globals = MiniFluff(func.func_globals) 20:24:13 TypeError: readonly attribute 20:24:17 my hacks are foiled!!!!! 20:28:21 -!- jix has joined. 20:30:43 * oerjan hacks at your foils 20:36:13 ehird: what is that? 20:37:25 SimonRC: me tryingh to do evil 20:37:35 what evil? 20:37:38 Python? 20:37:42 Pythonic evil 20:37:57 specifically, i'm trying to change a function's closure 20:38:13 i have managed to do that now, but am unable to pass arguments to the function I get out 20:42:08 -!- jix has quit (Read error: 54 (Connection reset by peer)). 20:45:53 -!- jix has joined. 21:03:15 -!- jix has quit ("CommandQ"). 21:04:20 -!- jix has joined. 21:23:01 hmm 21:23:06 i think Nodist's operations may be halting-problem 22:37:10 what is Nodist? 22:39:11 SimonRC: someone who has #nodist logs will give you the explanation i gave 22:40:37 the explanation you gave? You didn't explain it to me 22:41:28 IT'S NEKKID PROGRAMMING 22:41:35 hawt 22:41:47 ehird: and why are you trying to modify a function rather than adding __call__ 22:41:50 SimonRC: I did in #nodist 22:41:55 ah, ok 22:41:57 and because the function was given to me 22:42:01 and yes, i know that's horrid 22:42:03 i was just feeling evil 22:42:06 I was evil-golfing the code 22:42:10 ah, ok 22:42:12 (try to add as much evil as possible) 22:42:24 did you get it to work? 22:42:27 nope 22:42:28 :) 22:43:03 ehird has no talent for evil 22:43:06 -!- ehird has left (?). 22:43:10 -!- ehird has joined. 22:43:11 shitcakes 22:43:13 who just asid what 22:43:28 oh and SimonRC http://rafb.net/p/fW8hqI64.html 22:43:47 i was insulting you behind your back 22:44:07 we said, for one time only, the meaning of life 22:44:31 * ehird hits ircbrowse.com 22:48:21 that makes a bit of snese 22:48:31 but it seems some of the conversation is missing 22:49:45 darn, urbandictionary has a definition for snese 22:50:08 the verb, though 23:22:21 -!- jix has quit ("CommandQ"). 23:28:57 -!- oerjan has quit ("Good night"). 23:50:31 -!- Corun has quit ("Leaving"). 2008-03-09: 00:05:38 -!- timotiis has quit ("leaving"). 00:47:10 omfg 00:47:11 http://impomatic.blogspot.com/ 00:47:17 it's TAOCP in Redcode 00:47:21 we need one of them for Brainfuck 00:54:59 :D 01:07:05 OH MY 01:07:07 awesome esolang idea: 01:07:09 based on surreal numbers. 01:13:41 "Based on surreal numbers" is the idea? 01:16:01 -!- atsampson has quit (Remote closed the connection). 01:16:17 -!- atsampson has joined. 01:17:15 ihope: yes 01:17:57 It'd be interesting to try to compute with Collatz sequences. 01:20:00 Start with an integer. Add its left-shift, increment, shift right as far as possible, repeat. 01:21:56 Or perhaps an esolang based on neural nets. 01:38:54 The latter is an idea I had. 01:42:10 We need a really novel idea. 01:42:16 * ihope searches Wikipedia for a really novel idea 01:42:57 Really novel idea: Charles C. Comstock. Let's make an esolang based on Charles C. Comstock. 01:45:21 SimonRC: Regular combinators :o 01:47:04 Slereah: huh? 01:48:12 Slereah: what are these "Schofinkel's combinators"? 01:48:16 (I was sleeping) 01:48:25 Also, it's Schonfinkel 01:48:33 I can never remember the spellin 01:48:34 g 02:04:51 An esolang based on Go, how about. 02:06:15 Conway's game of life? :o 02:06:26 Bingo. 02:06:30 IIRC, the earliest simulations were done on a Go board ":0) 02:06:35 Among other things 02:06:51 We find a Conway's Life universal constructor and make an esolang to control it. 02:07:48 Something like set of rules-input? 02:08:24 What do you mean? 02:08:41 How about a game of Nomic with a Prolog mirror? 02:08:45 What do y'all say? 02:08:53 A Prolog mirror? 02:09:26 ihope: Step one: universal constructor. 02:09:29 (good luck) 02:09:41 Well, a game of life is defined by the rules governing the life-death of cells 02:09:42 Thank you. I'll begin work immediately. 02:09:43 And the input 02:10:11 Yes, that. 02:10:36 A Prolog mirror that we work on continuously. 02:11:04 Sukoshi: what do you mean by a mirror? 02:11:26 It mirrors the progress of the Nomic game. 02:11:40 I see. 02:11:41 As in, we write our Nomic laws as clauses in Prolog. 02:11:53 Does anyone here have a copy of Winning Ways for your Mathematical Plays? 02:12:06 I know of two computer nomics. I don't think either has enough players. :-) 02:12:33 WHOA Sukoshi is here 02:12:41 we all thought you died :| 02:13:03 No, at the moment I'm browsing portions of our school website that shouldn't be browsed. 02:13:08 PerlNomic (http://nomic.info/perlnomic/), which I haven't fully understood, and AtNomic, which I haven't taken the time to really look at. 02:13:38 Sukoshi: Hey, you're here again! 02:13:59 :D 02:14:03 Anyways. 02:14:10 I have an OS kernel in progress. :) 02:14:18 http://pikhq.nonlogic.org/kernel.tar.bz2 02:14:51 Heh. 02:15:10 pikhq: Challenge: make it run gcc. 02:15:30 I know a guy (for small values of 'know') who worked on an OS for 2-3 years and got to the point where binutils&gcc etc ran on it 02:15:35 and could compile bash, iirc 02:15:37 pretty cool 02:15:58 Darn it. I have to crack this Tomcat password. 02:16:17 Sukoshi: Try throwing coffee at it. 02:16:20 Maybe I should just sniff the password using the machine farm at school I have control over. 02:17:05 ehird: That's the goal, actually. 02:17:15 pikhq: Awesomecakes. 02:17:23 Sukoshi: :) Nice progress on that prank. :D 02:17:33 Yah:) 02:17:34 I would start an OS project again if I didn't sux0r at asm 02:17:37 & x86 02:17:48 The gradebook was the easy part, meh. 02:17:53 pikhq: however, I can probably identify EXACTLY which tutorial you are using 02:17:53 :) 02:17:59 i see very familiar code 02:18:03 ehird: Except that I'm not using it. 02:18:15 I used it to get the multiboot header, Makefile, and linker script. 02:18:17 I have 1 goal fully fulfilled. The second goal partially fulfilled. The third goal is getting some progress. 02:18:25 Everything else, I've been reading up on documentation. 02:18:49 (frankly, that tutorial sucks. 'Just copy this code!!!' *Ugh*.) 02:19:06 pikhq: the idea is that you should be able to easily find out what the code doe 02:19:06 s 02:19:09 You're creating a kernel? 02:19:10 the info is in the x86 layout stuff 02:19:34 I spent most of the past week figuring out what the fuck to do with the GDT. . . 02:19:37 Well, I think there was supposed to be some universal constructor stuff included with Golly. 02:19:43 pikhq: Yes, the GDT is fux0red. 02:19:45 If I'd followed that tutorial, I'd be fairly clueless still. 02:19:52 I did it on my own, so I grok it. 02:19:53 pikhq: Done the interrupt handlers yet? 02:20:00 435345345 repetitive functions in asm. 02:20:00 Painful, but worth it. 02:20:07 ehird: Plan to. 02:20:23 Although I want to read up on nasm's macro features first. 02:20:27 pikhq: Um that package is a bit minimal for what I can see 02:20:38 Are you sure it was justified to put it in a .tar.bz2 and upload it somewhere? :p 02:20:55 It *is* minimal. 02:21:03 I just want to be able to say 'Oooh, shiny.' 02:21:04 :p 02:21:11 pikhq: I think your KPORT_H might break at some point 02:21:17 make it a #define? 02:21:41 Use __attribute__((always_inline))? :p 02:21:46 pikhq: bah 02:21:49 #define! :D 02:21:50 return 0xDEADBEEF; 02:21:51 heh 02:21:59 I prefer DEFEC8ED 02:22:04 (solaris coredump magicnum) 02:22:09 Why is the file called kernel.tar.bz2.tar, I wonder... 02:22:19 ihope: Um, what? 02:22:31 I think you suck. That's not what's on my server. ;) 02:22:42 I delegate the suckiness onto my computer. 02:23:07 I agree with your delegation. 02:23:28 pikhq: Once you've got a gcc on there, write your own text editor. 02:23:41 Using a pre-written text-editor to develop your OS stuff in your os sux0r. 02:23:44 You must write your own! 02:24:01 (Before you get gcc running, youc ould make your own c compiler to write a text editor with, or something, too. :p) 02:24:13 pikhq: May I suggest a blend of microemacs and non-vim vi? 02:24:55 -!- ihope has set topic: bsmntbombdood missed the orgy. | Fe fi fo funge, I smell the brainfuck of an Englishman. | pastebin - http://pb.eso-std.org/ | Is a topic.. 02:25:14 -!- ehird has set topic: bsmntbombdood missed the orgy. | Fe fi fo funge, I smell the brainfuck of an Englishman. | pastebin - http://pb.eso-std.org/ | qdb - http://qdb.eso-std.org/ Is a topic.. 02:25:26 gotta add non-existant eso-std.org domains before someone does something or other while i write them! 02:25:27 :) 02:26:17 You evil, evil persono, you. 02:26:42 * pikhq adds __attribute__((always_inline)) in kport.h 02:26:51 pikhq: nooooo 02:26:54 don't depend on gcc 02:26:54 srsly 02:27:04 you could be one of the only modern OSs not to 02:27:05 :-) 02:27:09 Too late. 02:27:14 if you write your own cc, you could probably even make it compile your kernel! 02:27:21 There *is* one other OS that doesn't depend upon GCC. . . 02:27:24 c'monnnn, make 'em defines or put the definitions in a c file ;) 02:27:29 pikhq: what, plan9? :p 02:27:34 Of course, whether Windows is *modern* is a matter of taste. :p 02:27:38 haha 02:27:46 i don't really consider windows an os 02:27:47 :) 02:27:59 I consider it a really *bad* VMS clone. 02:28:11 Comparing windows to vms? 02:28:14 sacrelihe 02:28:16 With Win32 thrown in for God-knows-why. 02:28:17 ge 02:28:36 pikhq: Hmm, do you actually use a vcs or are you a archive-up hobo like rodger :p 02:28:48 Windows NT has a biological link to VMS. . . 02:28:53 ehird: ATM, archive-up hobo. 02:29:01 pikhq: Git. Srsly. 02:29:05 I plan to set up SVN when I get around to it. 02:29:15 Time to award some Patent Titles! Overand is a Scamster. ehird is a Champion. Judofyr is a Minister Without Proposal. pikhq is a Twelve Months Long Service. 02:29:23 version control systems without the 'lulz, server' or the 'lulz, molasses' or the 'lulz, in-the-way' parts. 02:29:25 :) 02:29:31 ihope: I don't think I have twelve months yet. 02:29:38 Er, Minister Without Portfolio. 02:29:39 I should have six months' coming up in a bit. 02:29:44 * ehird is a Champion! Yaaaaay. 02:29:44 :p 02:30:01 Also: I'm the only Agoran entitled to grant Champion. 02:30:06 And only when someone wins. 02:30:18 * ehird 's confuzed 02:30:19 I'm also the only person required to *record* a win. 02:30:28 ihope and I are both Agorans. 02:30:33 oerjan is a former Agoran. 02:30:53 www.agoranomic.org 02:30:54 And you're a former B'an, and I'm a former former B'an. :-P 02:31:21 #esoteric is like the turnpike of the internet 02:31:26 the nerdy internet 02:31:30 nerdy, mathematical internet 02:31:52 We're the smartest people in the world! Kind of. 02:34:23 Your Mom. 02:34:52 Anata no haha. 02:35:01 Vian Patrinon. 02:35:08 Ta mere. 02:35:18 ima shelha 02:35:19 Tomaar Maa. 02:35:22 Via patrino estas patrifikulon. 02:35:23 tua mae 02:35:29 tvoya mat' 02:35:38 ¿Por qué estamos hablando en otras however-you-want-to-say-"language"-today? 02:35:54 ihope: Ne. 02:36:01 tu mama esta hablando en otras idiomas 02:36:13 Touché. 02:36:19 Douch'e. 02:36:29 Crochet. 02:36:35 Krikkit. 02:36:48 Ribbit. 02:36:55 Anta no LULZ ga Ookiku natta. 02:37:04 Sukoshi: :D 02:37:16 Belgium, man, belgium! 02:38:43 yare yare, konna ni natte shimatte... 02:39:12 . . . Okay, that's 3 Japanese speakers here. 02:39:46 Ja, sore ha koko ni sanjin no nihongo wo hanaseru hito ga iru. . . 02:41:55 http://www.verizonmath.com/checkyourmath.htm 02:42:14 Boku tachi no YUME HA 02:42:19 Sekai wo KAERU YO 02:42:37 yume? 02:42:39 Kurumayoi ni NOTTE! Bishounen no sonzai wo UBARECHA-U! 02:43:03 *BARECHA-U 02:43:03 . . . 02:43:09 ldgt [eax] 02:43:19 Ching chong? 02:43:25 Sukoshi: henna koto iwanaide yo 02:43:46 女ã®æ°—紛れãªå¤¢ã¯æ™®é€šã˜ã‚ƒãªã„ã®ã€‚ 02:43:52 pikhq: writing boot loaders are we? 02:44:04 *lgdt 02:44:15 Yay, someone spoke English! 02:44:17 * SimonRC tries Japanese too: box box box box box box box box box box 02:44:22 Anyone here play with Haiku, by the by? 02:44:23 olsner: Kernels. 02:44:34 HaikuOS that is. 02:44:38 Neko pan wa desu desu pan wa desu... um... domo arigato. 02:44:51 Moto desu, ne. 02:45:01 Pan bread is. Pan bread is. Many thanks. 02:45:08 *Pan = cat 02:45:33 pikhq: How is the State of the Development there? 02:45:54 I don't speak Japanese, but I ought to, because I've wanted to for years 02:45:56 Sukoshi: I have it set up to realise the difference between user-mode and kernel-mode. 02:46:02 Also, because 3 people is practically *peer pressure*! :D 02:46:11 And it makes me wonder what doing, say, jmp 0x08:0x00 would do. 02:46:24 (In Linux) 02:46:28 Hehe. 02:46:37 Well I heard threads were there like water. 02:46:50 ehird: learning japanese gives you access to whole internets full of desu 02:46:55 I'm going to test it. 02:47:30 don't learn Japanese. 02:47:56 olsner: just what i've always wanted 02:48:03 :| 02:48:49 Apparently, gas doesn't much like long jumps. 02:49:01 as an added bonus, you'll be able to more fully enjoy your wednesdesus 02:49:09 pikhq: Bootstrap a low-level FORTH onto it. 02:49:42 olsner: and desu the desus on the desuweb? 02:49:55 desu desu hai 02:50:11 It segfaults. 02:50:21 jmp 0x08:0x00 02:50:25 Why can't I do that? :( 02:50:45 are you sure you want to jump to address 0? 02:50:46 olsner: Does it empower the desus on my Haskell desu? 02:50:52 olsner: Just testing. 02:51:00 Technically, that's address 0 in kernel mode. 02:51:01 ;) 02:51:20 Well, assuming they have GDT[8] for their ring 0 code segment. . . 02:51:25 * pikhq pulls up the Linux source 02:51:41 Are you testing wiht QEMU, pikhq ? 02:51:52 Bochs. 02:52:02 pikhq: try linux 0.1 02:52:05 it's very understandable 02:52:06 Aw. Why not QEMU? 02:52:16 QEMU is nice 02:52:26 Because I use Gentoo, and Qemu still doesn't build with GCC 4. 02:53:02 All I want is the bit that loads the GDT. 02:53:27 Maybe it's in the kernel entry point? 02:53:35 pikhq: Gentoo? aarrgh 02:54:03 f unroll loops! f unroll loooops! 02:55:03 * olsner knows too little of the specifics to be of much help 03:05:49 lol, I believe I've just found the bug in the bootloader/"operating system" I was working on in 2003 03:06:43 Well, *that's* bizarre. 03:06:48 Linux has a vm86 handler. 03:07:04 wait no... but it looked as if I'd mixed up dw and dd and produced a totally bogus jump address for jumping into PM 03:09:12 -!- ehird has quit ("This computer has gone to sleep"). 03:09:21 * pikhq hurls 03:09:46 Linux has the world's *worst* way of going back into the BIOS to reboot. 03:10:16 They have a *char[]* of bytes that represent the machine code required to go back to 16-bit mode. 03:11:58 -!- ehird has joined. 03:15:04 so i'm reading HTDP... and it seems so far that Haskell would be a more appropriate language for the book 03:15:48 but it didn't get to the macros yet (i don't know if it ever does) 03:20:19 such bad taste, yet so funny: http://img.lulz.net/src/09_podborka_36.jpg 03:22:00 kekeke 03:22:19 very hard to tell black pieces apart 03:22:25 Racist. 03:22:47 the world is racist. 03:24:00 "Combining a rabbit-ears with a spot to form a rabbit is not permitted, although the programmer is free to use it should he find an EBCDIC reader which will properly translate a 12-3-7-8 punch." 03:24:05 Hm. 03:28:21 -!- ihope has quit (Read error: 110 (Connection timed out)). 03:29:24 -!- ehird has quit (No route to host). 03:54:33 -!- Corun has joined. 04:18:14 -!- Corun has quit ("This computer has gone to sleep"). 04:21:37 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 04:30:36 anyway, 04:30 = bed-time 04:34:30 05:30 = even more so 04:34:38 -!- slereah_ has joined. 04:35:48 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 04:41:25 Nah. 04:41:37 Well, 05:30 isn't bad, but 04:30 is. 04:42:11 -!- poiuy_qwert has joined. 04:43:18 05:30 just implies a nocturnal schedule. 04:43:27 * faxathisia wakes up at 04:43 :S 04:44:24 Depends if you wake up at 08:30 like I do. 04:44:43 * pikhq wakes up at 06:00, usually. 04:45:07 -!- slereah__ has joined. 05:16:37 -!- slereah_ has quit (Read error: 110 (Connection timed out)). 05:57:13 -!- calamari has quit ("Leaving"). 06:59:34 -!- poiuy_qwert has quit (brown.freenode.net irc.freenode.net). 06:59:34 -!- atsampson has quit (brown.freenode.net irc.freenode.net). 06:59:34 -!- faxathisia has quit (brown.freenode.net irc.freenode.net). 06:59:34 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 07:02:06 -!- poiuy_qwert has joined. 07:02:06 -!- atsampson has joined. 07:02:06 -!- faxathisia has joined. 07:02:06 -!- AnMaster has joined. 07:13:43 -!- poiuy_qwert has quit (Read error: 110 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:02:25 "The principal obstacle to an authentic emulation of the Engine is that, in modern colloquial parlance, it was mankind's first bold venture into the domain of vapourware. The Engine was designed, drafted, described, discussed, and debated, decade after decade, but it was never actually built." 08:02:26 Heh 08:03:47 Like a lot of things on this channel? ;) 08:04:46 Plenty of ideas thrown around to end up in the trash! 08:04:56 But we usually don't spend 30 years on it 08:11:43 -!- Judofyr has joined. 08:14:58 -!- ehird has joined. 08:15:02 when i left here before 08:15:06 my intention was to sleep 08:15:13 i would like to make it clear that this did not happen 08:22:15 Sleeping pills dude 08:24:47 Sleep is for the week. 08:25:00 Weak even :D 08:31:37 slereah__: Noes. 08:31:44 By the time I was ready it was after 7 08:31:50 No point sleeping after a time like that. 08:37:28 Hm. I wish pikhq was around. 08:37:55 Be careful whatr you wish for, or it might just happen :o 08:38:06 I know :D 08:42:41 squaring the circle is easy assuming Ï€ = 4 08:43:24 Or just using your ruler, with the pi graduation 08:44:28 Or just be a dick like Kronecker, and say that irrationals don't exist. 08:45:26 interesting 08:47:16 When Lindemann proved that Ï€ is transcendental in 1882 Kronecker said 08:47:17 Of what use is your beautiful investigation of Ï€. Why study such problems when irrational numbers do not exist. 08:48:38 Squaring a circle? 08:48:55 Cantor also had problems with Kronecker. 08:49:01 Because Kronecker was a giant dick. 08:49:15 construct a square with the same area as a circle 08:49:19 Sukoshi: You take a circle, and you transform it into a square with the same perimeter 08:50:07 Kronecker had this notions that only integers really existed. 08:50:14 I think Kronecker is right, intuitionism is great.. 08:50:31 (there are finite constructions of the reals now) 08:50:54 Meh. 08:50:55 but it's fine to take axioms and construct them later on 08:51:57 it's just that, if you decide some new axiom "every set has a lowest upper bound" or some-such, without having constructed it from a consistent logic, how can you know that you still have consistency? 08:55:01 slereah__: [08:49] Because Kronecker was a giant dick. 08:55:07 My mind read 'was' as 'had' 08:55:11 Because of sleep-lack 08:55:13 Heh. 08:55:22 I'm not privy to those details! 09:00:25 faxathisia: What if I got into law? 09:00:34 I'm just looking for an opinion here :P 09:01:21 I don't know, there must be something to it.. one my school friends who basically a genious has dropped out of a math course to do politics and I think he wants to get into law 09:01:26 Does it involve neat uniforms and a lawgiver, and killing mutants? 09:01:40 and I can't spell :S 09:02:09 I'm considering law. I still love science, but I love law too and am good at it too. 09:02:18 Sukoshi: you cannot abadon 09:02:19 SCIENCE! 09:02:21 faxathisia: Think of it this way. Law is logic. 09:02:32 A bunch of horn clauses. 09:02:43 Except it's not just horn clauses in theory. It's horn clauses in practice. 09:02:53 Only fascists love law :o 09:03:02 Sukoshi: SCIENCE! 09:03:36 Heh. 09:04:01 WHAT HAS SCIENCE DONE! 09:04:25 Your mom? 09:04:30 (Come on. You had that coming.) 09:04:45 Yeah. LIKE YOUR MOM 09:04:55 faxathisia: At least, that's how I view law. From a logic perspective. 09:05:13 SCIENCE! 09:05:18 S.C.I.E.N.C.E. SCIENCE 09:05:30 S.C.I.E.N.C.E. = SCIENCE CIENCE IENCE ENCE NCE C E 09:05:37 Stop saying that while I'm hacking Java code. You're making me feel dirty :P 09:05:55 Prolog for President! 09:06:08 Hahaha :D 09:06:16 Science H. Logic! 09:06:26 I have a friend in law school. 09:06:49 Saying it is related to logic is lies :o 09:06:55 (anyone know this ? http://www.cs.cmu.edu/~fp/lollimon/ ) 09:07:16 Sukoshi: The Java is the gateway to EVIL and SUPERSTITION 09:07:23 NATURE'S FOUR-DAY HARMONIOUS TIME CUBE 09:07:23 err 09:07:24 I mean 09:07:25 SCIENCE 09:07:29 It's actually just incredibly boring. 09:07:29 lol 09:07:47 And when you realize Swing should have been decapitated due to horrible design issues, you feel more worthy using the language \o/ 09:08:08 But I have an exam to study for, so meh. 09:08:24 swing is great, 09:08:27 compared to awt :P 09:09:10 Oh gawd :D 09:09:20 GTK is great. I heard QT is a lot better though. 09:09:24 KDE is definitely nice. 09:09:59 I have a feeling that McCLIM is really really good .. if you know it inside out 09:10:14 but I don't know this, not used it enough 09:10:29 Qt<3 09:11:49 I've heard McCLIM suffered from overkill syndrome. 09:12:14 I love how simple/abstract GTK is. 09:13:24 also HTML is useful sometimes (by running a local webserver) 09:13:41 (defgeneric add (container widget)) <-- That's basically the work horse of GTK. 09:14:07 Sukoshi: HOWEVER, gtk sux0r in its actual widgetness. 09:14:12 e.g. see: gtk+os x 09:14:15 Huh? 09:14:23 Oh, you mean cross-platform issues? 09:14:27 mostly, yeah 09:14:34 and i personally don't like the look-'n-feel on x11 09:14:36 I don't doubt that. It's meant to be a Linux thing, heh. 09:14:36 but that's just me 09:14:46 Sukoshi: still the windows support is passable 09:14:55 Yeah. It's livable. 09:15:30 and, although that 'add container widgt' is simple 09:15:33 a nested structure model is far better 09:15:42 Hrm? 09:15:47 for languages with no brain -- like c -- you can build it up with some kind of add operation ;) 09:15:56 Sukoshi: it's like this: 09:15:58 foo = 09:16:01 foo = 09:16:02 ... 09:16:04 foo.add(bar) 09:16:05 etc 09:16:10 totally tedious way of working 09:16:12 I got nothing of that :P 09:16:17 when widgets are inherently nested 09:16:23 they should be treated as such 09:16:32 not as matryoshka dolls 09:16:39 Huh? 09:17:20 it's just the difference between imperative and declarative 09:18:43 Hm. An example? 09:19:29 faxathisia: yes 09:19:35 I think I get what you mean. Give the properties of different layers of a nested structure rather than building up the nest yourself? 09:19:40 Sukoshi: yep 09:19:49 Swing attempts that with its content panes. 09:20:02 It's ... not as good IMO. 09:20:02 the 'add' thingy is just a way to build up one of those structures because you can't actually do it in C.. 09:20:13 Sukoshi: well, come on, Swing anything is not a good comparison 09:20:19 Well in general. 09:20:25 really, gui toolkits right now are unbearable 09:20:26 I like the flexibility of a generic (add) 09:20:32 cocoa might be ok, i haven't tried it 09:20:43 but from what i've seen, they all overcomplicate the simple stuff and oversimplify the complicated stuff 09:20:54 & think in terms of C or some other similar language only 09:21:09 instead of having a higher-level abstract data model with the c/whatever imperative-style implementation being decoupled 09:22:37 ADD is perfectly Lispy. 09:24:36 Sukoshi: But not structured. 09:24:47 It is too implementation-centric to be the basis of a toolkit. 09:25:04 Why? 09:25:13 because it is tied into the imperative style 09:25:14 Why can't it be used in every implementation? 09:25:17 How? 09:25:18 add this, then add this 09:25:33 instead, the toolkit's design should be on a nested, declarative structure 09:25:34 What structure would you propose then? 09:25:42 in a functional or similar language, it would just be the nested tree 09:25:45 sure, for C, you need add(). 09:25:49 See, I've never had a bone with mixing functional or declarative with imperative. 09:25:50 that's just an implementation detail. 09:25:59 the actual model should be based on nested structures, 09:26:04 because in the end that's what it will produce. 09:26:04 XML. Right. 09:26:15 Sukoshi: Well, yes, except that using XML for a gui is a henious crime :) 09:26:17 XML is horrible, but that point aside. 09:26:20 Yeah :P 09:26:30 Also, s-expressions might be a non-horrible example, if you're in need of one. :p 09:26:40 Exactly. 09:28:02 well look at McCLIM 09:29:49 XML should be fine as a file format, if you have a GUI program to edit GUIs 09:30:51 Glade, yep. 09:33:02 * faxathisia tries to learn lollimon by staring at example code 09:34:56 faxathisia: mcclim is kinda eww 09:41:30 from ##C 'The first rule about large software projects is "don't make large software projects".' 09:42:24 What's the second rule? 09:42:54 faxathisia: ##c is the source of such wisdom and clarity 09:42:58 and is totally not filled with rambling idiots 09:43:09 honest 09:43:17 well.. I'm there 09:43:53 faxathisia: i could probably rank ##c-ers by idiocy, elitisim and plain retardedness 09:44:01 you'd probably be at the bottom, though :) 09:44:05 (#1: poppavic. no competition.) 09:44:22 someone should make a random number generator based on poppavic's 'sense-o-meter' 09:58:32 perm nil. 09:58:33 perm (H::L) o- elm H , perm L. 09:58:42 faxathisia: what's that 09:58:45 it's pretty 09:58:47 lollimon 09:58:50 I like elegant nondeterminism 09:58:53 Yes :D 09:59:05 this is impressive 09:59:29 googling lollimon gives me an irc lo of #haskell 09:59:30 Gwern"lollimon - gotta rape'em all..." 09:59:40 i laughed far too much at that 09:59:49 early morning... kind of when you have not slept :-P 11:00:01 http://www.cs.cmu.edu/~fp/lollimon/ 11:00:13 friendly page 11:00:48 19 lines of variable declarations. 11:00:53 Heh, this class is made of win. 11:01:02 Sukoshi: Your whole family is made of meat. 11:01:12 Waiiii?! 11:01:39 faxathisia: ocaml 11:01:40 how shitty 11:01:45 :/ 11:01:59 ocaml is fine 11:02:30 Nah. It has side effects faxathisia, so it is made of FALE :P 11:02:31 noes 11:02:35 and yeah 11:02:38 what Sukoshi sed 11:02:48 beh 11:02:52 it desperately tries to be a functional language 11:02:54 but fails miserably 11:02:58 * faxathisia sits out till haskell enthusiasm dies out 11:03:11 * Sukoshi joins faxathisia. 11:03:44 Hey, I'm not a haskell fanboi 11:03:46 :( 11:04:05 :p 11:05:13 -!- RedDak has joined. 11:07:46 Sukoshi & ehird, you should read Dijkstra - A Discipline of Programming 11:07:47 if you think side effects are not good 11:08:08 I think side effects are. 11:08:09 (or if you just want to read a good book) 11:08:12 faxathisia: Hey, I do like side effects. 11:08:18 I just also like Haskell. 11:08:18 But hey, it's by Dijkstra. 11:08:30 I like Haskell too 11:08:34 I got into Haskell for a while. I left. I tried to get back in, but failed. 11:08:35 exactly 11:08:40 I like both styles of programming 11:08:49 though I tend to think functionally, and code it out imperatively 11:08:50 weird :| 11:09:27 I sincerely wish Java had structs. 11:09:33 Why, oh why, does Java not have structs. 11:09:37 class .. 11:09:46 Actually wait. Why, oh why, does Java have to have one public class per file. 11:09:46 Sukoshi: Because Java is retarded. 11:09:49 Considered Scala? 11:09:59 This is studying for a test that uses Java. 11:10:04 So the app needs to be in Java. 11:10:44 ehird: A haskell implementation of lollimon would be a good thing :O 11:10:47 Sukoshi: You could decompile Scala's output bytecode into Java. 11:10:58 ... :D 11:11:05 I might try when I finish some stuff 11:11:21 Plus hey, some people might find this app useful. 11:11:28 It's a Direct Connect client. 11:11:45 -!- Judofyr has quit. 11:12:08 -!- Judofyr has joined. 11:14:35 Who's watching Gundam 00? 11:14:56 -!- faxathisia has quit ("-"). 11:14:59 Weeaboos. 11:15:42 I'd be a weeaboo if I actually like Japanese weather or Japanese politics. 11:15:54 ... Or Japanese traditional family life, or Japanese social life, or .... 11:16:00 Well you get the picture :) 11:17:23 Well, that's weeaboo enough for me :D 11:17:40 -!- Judofyr has quit. 11:17:58 JAPANESE WEATHER IS SUPERIOR TO WEATHER IN ALL OTHER COUNTRIES 11:18:46 Ye gods weeaboo. 11:19:17 Did someone just say weeaboo? 11:19:18 Aww. Gundam 00 is fun and interesting and political. 11:19:37 I mean come on, I'm on the side of the HRL. 11:19:46 Go Socialism! Yah! Yah! Yah! 11:23:09 JAPANESE TRADITIONAL FAMILY LIFE IS SUPERIOR TO JAPANESE TRADITIONAL FAMILY LIFE IN ALL OTHER COUNTRIES 11:23:10 WAIT WHAT 11:23:24 Your mom. 11:23:30 :D 11:23:51 -!- Sukoshi has left (?). 11:23:57 * slereah__ can't think of one jap scientist :o 11:24:02 Only chinese ones! 11:24:23 JAPANESE SCIENCE IS SUPERIOR TO JAPANESE SCIENCE IN ALL OTHER COUNTRIES 11:24:41 It doesn't recycle well, ehird 11:24:50 JAPANESE RECYCLING -- 11:25:05 Try another classic. 11:25:16 EVEN THE JAPANESE GET IN TROUBLE! 11:25:28 JAPANESE GETTING IN TROUBLE -- 11:25:36 ... 11:25:40 You are both suspended. 11:29:28 JAPANESE SUSPENSION 11:30:19 Japan 11:30:52 They have a *char[]* of bytes that represent the machine code required to go back to 16-bit mode. 11:30:54 pikhq: that's not stupid 11:31:03 when you want arbitary machine code, you store it in char* 11:32:34 an ddamn 11:32:39 i keep sseeing things i said 11:32:43 which i think 'crap that was like two days ago' 11:32:51 but it was in this awake-session because aaah i've been up too long :< 11:51:42 -!- faxathisia has joined. 11:54:15 wowzers 11:54:29 'INTERCAL and Malbolge (and perhaps Java) are steps toward the ultimate barrier of programming. But they don't rely on *chance*.' 11:54:44 that has to be the most devilish language i evevr came up with and then forgot 11:55:06 Lynxplz? 11:55:18 slereah__: sry. that's basically the onlny thing left of it 11:55:22 I never made the catual languae i think :( 11:55:26 Of what? 11:55:30 the spec 11:55:35 I apologize for my spelling, I can barely type. 11:55:43 What was the basic idea? 11:55:54 sdfjkhsjkgdfg i keep typing 'cat ..' 11:55:55 slereah__: that. 11:56:05 be hellish at programming, but rely on *chance* for many operations 11:56:24 Quantum malbolge? 11:57:03 nah 11:59:41 hmmm 11:59:49 Joy quotations AREN'T lists, are they? 11:59:53 for one simple reason -- 11:59:55 [foo] 12:00:04 'foo' isn't representable as any object in Joy 12:00:09 thus quotations must be of an AST instances 12:00:14 which is Name | Literal 12:00:18 where Literal = Object 12:06:03 -!- jix has joined. 12:21:23 45345 12:22:19 -!- oerjan has joined. 12:39:02 -!- timotiis has joined. 13:25:48 y 13:27:06 z 13:27:13 æ 13:27:37 D:þ 13:27:47 Even the passenger gets in trouble! 13:27:48 XB 13:27:51 * oerjan saw you running out of english alphabet, so he assisted 13:28:01 hahah @ those comics 13:28:22 You are both suspended. 13:30:58 http://www.lawlforkids.com/d/3058-1/wait.png 13:31:29 -!- oerjan has quit ("I got the last word BWAHAHA"). 13:31:51 The strangest thing is that kid that yells "Fight!" 13:32:03 Like he's Shao Khan from Mortal Kombat. 14:09:05 -!- jix has quit (Nick collision from services.). 14:09:13 -!- jix has joined. 14:46:52 Refridgerator 14:59:00 -!- slereah_ has joined. 14:59:59 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 15:11:12 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 15:12:13 -!- Slereah has joined. 15:23:41 ehird: Sure it's stupid. 15:24:04 Just because there's some way of using it doesn't make it less stupid. 15:24:12 The asm keyword is in GCC for a reason. 15:24:17 And yes, Linux uses it. 15:30:44 pikhq: I assure you there will be a good reason. 15:30:48 WHy not post on the lkml? 15:31:22 -!- Corun has joined. 16:12:45 -!- RedDak has quit (Remote closed the connection). 16:27:59 omg 16:28:01 lyx is awesome 16:30:18 -!- Tritonio_ has quit (Remote closed the connection). 17:15:57 holy crap 17:16:06 knuthtex is a single 1mb source file 17:18:20 but it's literal programming, so it's easy to read! *cough* 17:19:13 olsner: actually the pascal has so many embedded WEB instructions that it's almost impossible to even if you filter out the docs 17:19:16 :/ 17:20:05 hmmm 17:20:14 what's that really trivial pascal dialect thingy? 17:20:15 heh, yeah, I've found it a golden example of failed application of literate programming 17:20:25 the bnf is just a page or so long 17:20:29 olsner: thank god nobody uses knuthtex, eh? ;) 17:21:37 aha 17:21:38 PL/0 17:23:07 so if you imagine PL/0 + parameters to functions + some control structures (repeat...while, etc) + arrays.. 17:23:11 knuth would be overjoyed ;) 17:30:35 slightly off topic, but since the project I need this for is an befunge interpreter in C I think it is on topic 17:30:42 anyone know a good sparse matrix library for C? The ones I found are all C++ :/ 17:32:19 this channel isn't often on topic anyway... besides, if befunge is involved in any way whatsoever it's definitely on topic :P 17:32:36 ok 17:32:40 so, any idea? 17:33:47 Hell, what is the topic anyway! 17:33:53 It is pretty broad 17:34:25 so anyone got an answer? 17:34:46 something like "Fe fi fo funge, I smell the brainfuck of an Englishman." seems to be the current topic if the /topic is to be believed 17:35:05 btw, qdb.eso-std.org doesn't work though mentioned in the topic 17:35:23 olsner, but you don't know an answer to my question? 17:35:34 AnMaster: nope, sorry 17:35:39 sigh 17:36:07 I need some kind of sparse matrix for funge-space 17:36:10 I suppose you want to find the people who know fortran, and maybe they'll also know how to do what they do in C 17:36:22 why fortran? 17:36:59 hmm, I guess linear algebra/numerics => fortran in my database of stereotypes 17:37:15 ah. but well this isn't algebra 17:37:26 olsner: .eso-std.org is not all up yet 17:37:27 it will be 17:37:28 sometime 17:38:09 what's with the delay? 17:38:14 laze. 17:38:26 oh, you don't actually have it yet? 17:38:30 i have eso-std.org 17:38:34 but i cba to set it all up 17:38:47 cba? 17:38:50 can't be arsed 17:38:55 ah 17:39:21 thought it was a name server delay or something 17:39:58 laziness got the best of you, eh? someone needs to have his thunks forced... 17:42:16 heh 17:42:18 that sounds painful 17:42:48 ehird, do you have any idea about sparse matrix in C? 17:43:19 no 17:49:57 faxathisia: hey you 17:50:00 debug my prolog lisp :( 17:50:17 http://rafb.net/p/dKbjcr51.html 17:50:20 example(R) -> No 17:50:20 :( 17:51:54 You know [lam|E|A|C] = [lam| (E'|'A'|'C)] ? 17:52:13 and you could write lam(E, A, C) instead 17:52:29 faxathisia: err, ok 17:52:32 then what i want is 17:52:37 [lam|[E|[A|[C]]] 17:52:44 but can you pattern match calls in prolog? 17:52:46 well that changes everything 17:52:47 :) 17:52:49 [lam,E,A,C] 17:52:53 yes 17:52:55 err 17:52:56 i want 17:53:00 [lam|[E|[A|C]] 17:53:03 subtle difference 17:53:03 [lam,E,A|C] 17:53:03 :) 17:53:10 but, if i can pattern match on func calls, faxathisia .. 17:53:14 then certainly! 17:53:25 ehird: prolog doesn't have function calls, you construct expressions which you can match on 17:53:25 Functions don't exist 17:53:29 yes yes 17:53:31 it was a metaph000r 17:53:59 metaphor? mispresentation of facts! :P 17:54:02 It's a compound 17:54:19 faxathisia: do you like my lack of spaces by the way. 17:54:37 I don't see any missing spaces 17:54:45 faxathisia: arglists 17:54:47 after commas 17:54:47 etc 17:54:52 * faxathisia usually puts a space after commas 17:54:56 yes 17:54:57 i don't 17:54:58 i' mevil 17:55:11 No you aren't that's perfectly acceptable 17:55:12 :P 17:55:19 :( 17:55:32 faxathisia: any comments on my prolog style? 17:55:34 i think it's pretty neat 17:55:44 i mean, you even get undefined symbol and shiz -> No, for free 17:57:00 well you should probably be aware of write_canonical 17:57:04 and in particular 17:57:07 whutz dat 17:57:08 :( 17:57:24 it's funny how prolog just answers your buggy programs with "No." like some zen master 17:57:26 [a,b,c] = '.'(a,'.'(b, '.'(c, '[]'))) 17:57:37 yes 17:57:38 that thing 17:57:38 (just like lisp) 17:57:38 still 17:57:39 :) 17:58:24 faxathisia: I can't do "Y is cons(A,B)" 17:58:25 :( 17:58:43 is does arithmetic calculation 17:58:43 maybe you're mixing up is and =? 17:59:24 5 is 2+3. 17:59:48 2+X = Y+3. %% X = 3, Y = 2 18:01:06 probably :| 18:04:46 why is it that way around? 18:06:09 why is = a reflexive, symmetric, transitive relation and is/2 performs computation the assignment? 18:06:33 because prolog is about pattern matching and unification rather than about doing actual operations... so arithmetic is exiled into 'is' while '=' does unification 18:06:57 It's absolutely idiotic and brain damaging to use = for assignment, like C and other languages 18:07:05 faxathisia: Because arrows are ugly in ASCII 18:07:50 well, indeed, = should be used for both 18:07:59 no.. 18:08:06 that would make no sense 18:08:14 oh :< 18:08:44 so "is" is actual assignment? 18:09:01 why would it not make sense? 18:09:03 rather, it's unification with the result of arithmetic or something like that 18:09:10 A is B. %% Evaluate B as if it were some arithmetical expression then unify the result with A 18:09:22 and how is that not the same as what = does? 18:09:39 normal unification does no modification whatsoever on either expression 18:09:43 so 2 is 1 + 1. is actually calculating, whereas 2 = 1 + 1 fails a just like how dog = cat fails 18:09:45 do something to make left operand equal right operand :| 18:10:07 :( 18:10:23 X = Y+3 basically builds a data structure (Plus Y 3) then unifies that with X 18:10:27 In math .. when you write =, it's an equivalence relation 18:10:32 note there's no evaluation there 18:10:51 in which situations would "=" and "is" make a different result, but both make sense? 18:10:53 which means x=x, x=y -> y=x and x=y->y=z->x=z 18:10:53 Is there even a mathematical symbol for assignment? 18:11:29 but some idiot thought they'd abuse the notation and use = for something completly unlike an equivalence relation and confuse millions 18:12:01 Where did you get that statistic? 18:12:05 faxathisia: we all cry about that every night, now answer mine! 18:13:04 The abstract syntax of Prolog is, Term ::= atom | Variable | functor(Term, ..., Term) 18:13:22 When you write something like X + 3, that's sugar for '+'(X, 3) 18:13:29 ofc 18:14:55 so anyway, writing Y is 7 + 3. % Prolog sticks 7 + 3 into some turing machine at this point, then unifies the result (10) with Y 18:15:43 but if you write e.g. X + 3 = 7 + Y. %% It's just a logical statement of equivalence, which happens to succeed, unifying X with 7 and Y with 3 18:16:12 what does y = 7 + 3 do then? 18:16:20 i just see all this as equations. 18:16:24 7 + 3 = 7 + 3. 18:17:05 is there a situation where these unevaluated expressions are actually useful? 18:17:05 Yes 18:17:20 is it just math prolog does not evaluate, or is it all functions? 18:17:28 and you know what i mean by functions. 18:17:53 what are these situations,btw? 18:18:01 There is no computation at all in Prolog (except these rare cases like is and IO..) 18:18:26 those "functions" are more like haskell's constructors ... it's basically an AST you pattern match on 18:18:48 i guess 18:20:28 guess you cannot actually write a function like + anyway. 18:20:30 for example, :- op(600, fy, s). 18:20:30 peano_add(X, o, X). 18:20:30 peano_add(X, s Y, s Z) :- peano_add(X, Y, Z). 18:20:30 now you can go 18:20:44 peano_add(s s s o, s s s s s s s o, Y). 18:21:04 and it will do Y = 10 (except it's peano encoded) 18:21:11 hmm 18:21:14 or you could write 18:21:23 peano_add(A, B, s s s s s s s s s s o). 18:21:38 and it will describe any A, B which sum to 10 18:21:40 i always thought a prolog a + b means something like add(a, b, RES0): RES0 in the expression 18:21:56 s/:/; 18:22:28 + is just some infix operator, a + b = '+'(a, b) 18:22:50 i think it's better my way :-) 18:22:55 what is? 18:23:00 it's meaning 18:23:07 because with that 18:23:12 7 = 3+4 18:23:31 *its 18:24:21 you can do stupid things like: 18:24:22 :- op(900, xfy, ++). 18:24:31 A ++ B = X :- append(A, B, X). 18:24:42 now I can write 18:24:57 X ++ [c] = [a,b,c]. % to find out X = [a,b] 18:25:10 wtf 18:25:27 then how is it not that a + 1 = 3 means a = 2? 18:25:35 that's the exact same thing 18:25:44 because (X ++ [c] = [a,b,c]) = '++'(X, '='([c], [a,b,c])) 18:25:55 now what you have is ++ at the top level 18:26:07 and everything inside is just abstract syntax 18:26:22 It's not computed, because there is no computation in Prolog 18:26:31 it's not like eval/apply 18:26:31 hmm? 18:26:38 is that AST right? 18:26:52 i read that as X ++ ([c] = [a,b,c]) 18:26:52 where you traverse the structure evaluating every paremeter first 18:27:10 yeah that's why I choose such a high fixity for ++ 18:27:51 i guess i may be totally wrong in thinking prolog equations mean roughly "find values for variables so that equations are true" 18:28:02 in that case i just don't like the language 18:28:08 which is kinda hard to argue :P 18:28:36 "find values for variables so that equations are true" is totally wrong 18:28:49 i guess 18:29:44 but you can write a lot thinking it works like that 18:29:53 *lot of programs thinkgin 18:30:00 *thinking 18:32:15 faxathisia: what's wrong with that, where does it fail? 18:33:07 You cannot enjoy writing code with that mindset 18:33:38 you can't? 18:33:45 i sure can 18:33:53 well 18:34:11 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 18:34:11 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 18:34:11 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 18:34:11 -!- jix has quit (brown.freenode.net irc.freenode.net). 18:34:12 -!- lament has quit (brown.freenode.net irc.freenode.net). 18:34:26 not entirely, distinction of "=" and "is" doesn't make much sense thinking that way 18:34:35 -!- jix has joined. 18:34:35 -!- fizzie has joined. 18:34:35 -!- Deewiant has joined. 18:34:35 -!- tejeez has joined. 18:34:35 -!- lament has joined. 18:34:39 is shouldn't be taught 18:35:06 what do you mean? 18:35:14 that it's stupid? :P 18:35:23 doing lots of numerical work in Prolog is not good 18:36:27 Doggy Muzzle 18:36:27 Doggy Muzzle 18:36:27 £107.00 18:36:27 Displaying 1 to 7 (of 7 products) Pages: 18:36:28 prolly 18:36:39 Damn copypasta 18:36:56 btw is there a prolog bot :-) 18:37:02 yes 18:37:03 Tomy 18:37:09 on #prolog? 18:37:24 yeah, not there just now though 18:37:24 guess i could just check the userlist 18:37:27 god i'm lazy 18:37:32 i see 18:37:39 I wrote something silly just now :) 18:37:49 metacircular thing 18:38:05 http://rafb.net/p/06NXcc30.txt 18:38:41 It's printing out a derivation of running a metacircular query 18:39:35 Heh. Love the logical symbols with slashes 18:40:05 \= ? 18:41:42 \= means not unifiable 18:44:48 okierific 18:48:16 *kablamo 18:49:49 -!- timmytiptoe has joined. 19:01:54 s 19:02:08 5 19:03:03 § 19:16:57 $ 19:17:35 ζ 19:17:37 I ran out of chars for s, so here's a poster : http://www.mathematicianspictures.com/math_images/ADA_20x30r01_275w30=MATH_P_LOVE_R01_THUMB.JPG 19:18:55 śŜÅŞşŠșșṠṤṦṨṢṡṩṨsⓈⓢ⒮ 19:19:50 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 19:19:50 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 19:19:50 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 19:19:50 -!- timmytiptoe has quit (brown.freenode.net irc.freenode.net). 19:19:52 -!- lament has quit (brown.freenode.net irc.freenode.net). 19:19:52 -!- jix has quit (brown.freenode.net irc.freenode.net). 19:20:26 -!- timmytiptoe has joined. 19:20:26 -!- jix has joined. 19:20:26 -!- fizzie has joined. 19:20:26 -!- Deewiant has joined. 19:20:26 -!- tejeez has joined. 19:20:26 -!- lament has joined. 19:23:07 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 19:23:07 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 19:23:07 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 19:23:08 -!- lament has quit (brown.freenode.net irc.freenode.net). 19:23:08 -!- jix has quit (brown.freenode.net irc.freenode.net). 19:23:10 -!- timmytiptoe has quit (brown.freenode.net irc.freenode.net). 19:23:29 -!- timmytiptoe has joined. 19:23:29 -!- jix has joined. 19:23:29 -!- fizzie has joined. 19:23:29 -!- Deewiant has joined. 19:23:29 -!- tejeez has joined. 19:23:29 -!- lament has joined. 19:27:19 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 19:27:19 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 19:27:19 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 19:27:21 -!- lament has quit (brown.freenode.net irc.freenode.net). 19:27:21 -!- jix has quit (brown.freenode.net irc.freenode.net). 19:27:22 -!- timmytiptoe has quit (brown.freenode.net irc.freenode.net). 19:28:02 -!- timmytiptoe has joined. 19:28:02 -!- jix has joined. 19:28:02 -!- fizzie has joined. 19:28:02 -!- Deewiant has joined. 19:28:02 -!- tejeez has joined. 19:28:02 -!- lament has joined. 19:32:40 HEH. 19:33:39 Grr. Why does my computer think it's still MST? 19:43:42 -!- timmytiptoe has quit ("Leaving"). 19:58:30 -!- slereah_ has joined. 19:58:52 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 20:13:47 Halp. who knows something that can convert a png file into ansi? 20:14:23 Wouldn't an ASCII image generator do the trick? 20:14:46 No. 20:14:48 *ANSI* 20:14:51 As in with colour codes 20:14:56 Oh. 20:15:01 I'm not too good on codes. 20:15:03 cacaview does it 20:15:06 butit's ncurses thingy 20:15:08 it can't dump to afile 20:22:55 hmm 20:23:02 : #kilbot 20:26:44 -!- slereah_ has quit (Remote closed the connection). 20:27:00 -!- slereah_ has joined. 20:35:20 -!- oerjan has joined. 21:03:48 -!- ehird has changed nick to a. 21:03:51 oops 21:03:53 -!- a has changed nick to ehird. 21:04:18 Hello mister A. 21:04:24 I am mister N. 21:07:52 "As a rule, I dont use Perl-based shite, so Ack is off the table right off the bat. Anything that eliminates the usage of probably the worst programming language ever conceived is a good step forward in my book." 21:08:10 I'll ignore this decent software because I don't like Perl and it affects me! What do you mean I'm insecure?? 21:10:40 ack excluded source files for me, and iirc did some seriously weird shit when used with cygwin, so I've gone back to grep -Ir 21:10:56 olsner: even so. 21:11:41 'I won't use ack because it's Perl HEY I READ THIS INTERNET ARTICLE IT SAID PERL SUCKS AND RUBY IS AWESOME!! DO YOU KNOW ABOUT RUBY?? I AM GOING TO KILL PERL!! I WON'T USE ACK IT'S PERL. HEY EVERYONE, NEW PROJECT! RUBYACK. IT'S ACK BUT IN RUBY. OH WAIT WOW THIS ARC THING LOOKS PRETTY GOOD. .......... 21:18:16 LMAO 21:18:30 Of course, Ack is more awful than Perl. :p 21:18:45 pikhq: Ack is a grep replcaement. I don't see the comparison basis. :p 21:18:59 ehird: Perl *can* be used in that place. 21:19:17 Of course, Perl can also be used for everything else. . . 21:19:21 And still be unreadable. 21:19:28 pikhq: egobfi pipeline is my grep 21:19:28 <3 21:19:40 I have slaves to do that for me. 21:19:50 sometimes i just evaluate the regular expressions with _my mind_, though 21:20:20 egobfi? 21:20:36 olsner: EgoBot's brainfuck implementation. Rating: 'pretty good'. 21:20:41 ehird: hmm, and how many megabytes per second can your mind scan? 21:20:57 bff.c is arguably better for sheer speed (and we all know that's what matters) but egobfi has more tweaky options 21:21:26 so, you write brainfuck programs rather than grep and regexps? 21:21:33 yes :D 21:21:37 i compile them with _my mind_ 21:22:03 i just _stare_ at the computer and it spawns egobfi for me with the right program 21:22:03 wow, _your mind_ sure sounds powerful :P 21:22:30 I bet oleg has such powers over ghc, if rumours are any indication 21:22:30 what's _your mind_? 21:22:33 ITYM _my mind_ 21:22:35 ehird is the next step in evoluton 21:22:55 yes, of course, _my mind_ 21:23:01 slereah_: Bu..but reddit says that's meant to be Ron Paul! 21:23:07 HOW COULD REDDIT LIE TO ME :( 21:23:08 PLON RAU! 21:23:13 PRO LUNA! 21:23:25 I'm thinking about getting a _comind_ with secret category-theory powers at some point 21:23:29 PORN AUL! 21:24:22 olsner: wouldn't a comind take power from _my mind_? 21:24:27 since it is the opposite of _my mind_ 21:24:48 Is it like kryptonite? 21:24:53 it would draw power from the co-universe, so no 21:25:19 a comind is an unthinking device 21:25:35 I would have to share that power with the other cominds of course, but there aren't too many, so I think I'd be fine 21:25:41 oerjan: some things cannot be unthunked 21:25:44 like infinite lists 21:26:22 ITYM "unthunk" 21:26:29 oerjan: shush you 21:26:32 it was part of my joke 21:27:27 i am merely correcting your grammar. think, thank, thunk. 21:28:08 -!- BMeph has joined. 21:28:55 thank you? 21:29:13 quite often, in fact. 21:29:51 :P 21:31:03 by the way 21:31:06 who here knows LyX 21:31:36 *chirp* 21:34:06 *chirp* 21:34:45 * olsner relies on his carpals for latex hacking 21:35:10 yesh, well TeX is complex 21:35:14 and LaTeX is bloated 21:35:21 lyx's produced source files are even nice and readable 21:35:21 :p 21:35:38 -!- calamari has joined. 21:48:54 ehird, I love lyx 21:49:07 use it a lot 21:49:16 ehird, so yes I know lyx 21:49:30 however, I won't answer any question if you haven't read and done the tutorial first 21:49:36 and looked in user guide 21:50:30 -!- atsampso1 has joined. 21:50:50 woot i've almost been awake 31hrs 21:50:58 AnMaster: the html output is broken 21:51:04 it outputs soem kind of prettyprinted text 21:51:05 in .html 21:51:06 :D 21:51:07 ehird, haven't used it 21:51:19 using pdftex output only 21:52:28 ehird, just tried it, it looks ok? 21:52:43 a table is broken 21:52:47 but apart from that 21:53:07 AnMaster: i get somethuign like this 21:53:09 oh and it did a horrible job on equations 21:53:17 The Brainfuck Programming Language 21:53:18 Elliott Hird 21:53:18 9th March 2008 21:53:18 Abstract 21:53:18 Brainfuck is a minimal esoteric programming 21:53:18 etc 21:53:20 and List class got images 21:53:21 plaintext foramtinged 21:53:30 but iwth html entityioes 21:53:34 sorry i can;t ype 21:53:38 errrrrrrrrrrrrr? 21:53:56 oh and index looks like crap 21:54:05 but apart from that, quite ok 21:54:12 would need some post processing but quite ok 21:54:16 AnMaster: i got into view->html 21:54:18 anyway I prefer pdf output 21:54:21 and it gives me a n html page with that source 21:54:22 not even html 21:54:23 ehird, I did export html 21:54:27 don't you undestantd what i'm saying :| 21:54:31 file -> export -> html 21:54:32 i click html, it gives me plaintetxt 21:54:33 worked here 21:54:42 oh 21:54:44 iwas using view->html 21:54:47 -!- slereah__ has joined. 21:54:47 because there was view->pdf 21:54:48 etc 21:54:49 that worked 21:54:54 ehird, view -> html works too 21:54:58 what lyx version? 21:55:26 $ lyx --version 21:55:27 LyX 1.5.4 (Mon, Feb 25, 2008) 21:55:27 Built on Mar 7 2008, 22:58:56 21:55:43 ehird, if it is an older version, try upgrading 21:55:48 mac /Applications/LyX-1.5.0-beta2. 21:55:51 also it could be a TeX problem 21:55:55 ehird, duh, that's old 21:55:59 beh 21:55:59 get 1.5.4 21:56:03 blame the fscking ftp seorver 21:56:07 ftp link plz 21:56:19 no idea 21:56:23 I get it using portage 21:56:26 * AnMaster uses gentoo 21:56:29 i dont 21:56:33 try their website 21:56:36 o ise os x, except when ic ant type like now 21:56:36 maybe it got a download 21:56:40 in which case i use odfgi x 21:56:43 or somethign simlar 21:57:01 http://www.lyx.org/download/ 21:57:06 you *could* have googled 21:57:10 -!- Tritonio_ has joined. 21:57:11 as iirc you told me some time ago 21:57:25 i diify--yes 21:57:28 but i lost the ftp link 21:57:31 to the actual bins ofr os ox 21:57:33 ehird, so don't complain 21:57:37 you could have googled for lyx 21:57:39 sheesh 21:57:39 yes 21:57:40 hit their website 21:57:44 but that doesnt get the m the tftp link 21:57:47 click download link 21:57:56 and look, it got a link for download!? 21:57:59 YES IT DOES! 21:58:18 "Please use ftp mirrors below in case ftp.lyx.org is down." 21:58:32 What's the point of the projection function in the primitive recursive? 21:58:42 Is there a function that can't be written without it? 21:58:42 AnMaster: sowhy not yell at me then :| 21:58:52 ehird, I found a binary on a ftp mirror 21:58:53 for os x 21:58:58 but I won't paste link 21:59:01 fine, great, so what 21:59:03 jeez 21:59:05 because you can find it yourself 21:59:06 :) 21:59:08 no problem 21:59:15 it was like 3 clicks from download page 21:59:23 AnMaster: #esoteric is 99% useless because most of the things discussed here can be found elsewhere. 21:59:33 and as you can notice I am kind of having a mild inability to type right now 21:59:40 ehird, how comes? 21:59:43 which probably bodes un-good for me writing a spec, but :) 22:00:01 AnMaster: I think my hands have shut down to power the rest of my body o.o 22:00:06 ehird, ouch 22:00:10 ok a link then 22:00:11 ftp://ftp.lip6.fr/pub/lyx/bin/1.5.4 22:00:13 next time 22:00:14 google 22:00:22 in that dir is a file for os x 22:00:55 ueah i just found it 22:00:56 :) 22:01:13 theys hould fix their damn ftp not to leave old releases in top level disr 22:01:14 :| 22:01:19 with no newer releases in sight 22:01:20 err? 22:01:36 I just followed link from download page 22:01:41 their stuff is not broken 22:01:51 ftp://ftp.lip6.fr/pub/lyx/ is top dir 22:01:55 then I clicked bin 22:02:00 and selected last version 22:02:08 wtf do you mean old in top dir 22:02:08 AnMaster: when i got the old version 22:02:09 it was there 22:02:10 so there 22:02:11 :p 22:02:14 there are no old in top dir 22:02:21 pre/ or someting 22:02:22 :) 22:02:31 well that may have been quite long ago 22:02:32 -!- atsampson has quit (Read error: 110 (Connection timed out)). 22:02:47 ehird, anyway html output isn't pretty 22:02:54 I would suggest pdftex 22:03:12 AnMaster: i will choose a system with decent html output 22:03:14 that is the end of it 22:03:30 ehird, well, it will need some post-processing 22:03:38 but I think it depends more on tex than lyx 22:03:39 :) 22:03:45 so don't complain about lyx 22:04:19 ehird, here is the latex preamble I'm using for funge08: 22:04:21 http://rafb.net/p/oGYwec89.html 22:04:36 * AnMaster changes from befunge to funge 22:05:34 document class is koma-script article with options: bibtotoc,idxtotoc 22:05:41 woot 22:05:42 htmnl works now 22:05:54 ehird, ok 22:05:56 my document is kinda lacking in markup though 22:05:56 :( 22:05:59 so it isn't that nice 22:05:59 ehird, oh? 22:06:04 AnMaster: its very simple 22:06:05 :) 22:06:15 ehird, ah well then that's your input 22:06:19 yeah 22:06:28 AnMaster: can't think of anywhere to add more semantics though really 22:06:31 i'll paste the lyx file :) 22:06:46 ehird, however, lyx doesn't do my document nicely for html, because I made it for pdf 22:06:59 http://rafb.net/p/Gw7czI59.txt 22:07:00 because I got some really wide and long tables 22:07:41 whatever.lyx is from a different version of LyX, but the lyx2lyx script failed to convert it. 22:07:42 ehird, ? 22:07:43 wtf 22:08:05 UnicodeDecodeError: 'utf8' codec can't decode bytes in position 34-39: unsupported Unicode code range 22:08:09 that is what I get 22:08:14 AnMaster: uh, no idea 22:08:19 looks like something messed up with paste? 22:08:23 -!- slereah_ has quit (Read error: 110 (Connection timed out)). 22:08:28 unicode gets messed up by pastebin 22:08:29 maybe the ''s 22:08:30 ko 22:08:32 *ok 22:08:33 ill filebin 22:08:36 ehird, can you upload it to a server? 22:08:37 ah good 22:08:44 (wtf is filebin btw?) 22:09:10 pastbein but for files 22:09:10 :| 22:09:26 ehird, "Elliott Hird" <-- is that a male or female name (I'm not a native English!) 22:09:35 AnMaster: haha, male 22:09:46 http://filebin.ca/kjeqq/test.lyx 22:10:08 that works 22:11:27 ehird, that's short 22:12:04 ehird, why a subscript bignum? 22:12:10 Wasn't Elliott the guy with a magical dragon in some movie? 22:12:28 Or possibly Elliott was the dragon 22:12:39 the dragon i think 22:12:59 * oerjan googles 22:13:23 http://en.wikipedia.org/wiki/Pete's_Dragon 22:14:41 ehird, lyx really needs at least 5-10 pages to be able to show it's awesomness 22:16:46 latex looks weird in pdfs tho.. the letters are all different sizes 22:17:19 calamari, nah 22:17:24 AnMaster: yeah 22:17:30 that depends on what options you use 22:17:41 very distracting.. have to print it out or zoom way in 22:17:47 or do you mean the actual string "LaTeX" 22:17:48 ? 22:17:55 no, the documents 22:18:04 * ehird is back 22:18:10 AnMaster: because Brainfuck_N 22:18:13 so Brainfuck_bignum 22:18:30 also, I think you mean 'Computer Modern' looks weird 22:18:38 ehird, I use helvetica 22:18:41 a sec 22:18:46 Which just means that you don't share Knuths sense of aesthetics 22:18:49 pretty common ;) 22:18:57 ehird, I can't get filebin to work? 22:19:34 it's the "research paper pdf" look.. instantly recognizable that they used latex 22:19:40 AnMaster: kill it 22:19:47 hahh 22:19:51 ehird, kill what? 22:19:52 calamari: no, it's the Default-Latex-font-look 22:20:09 calamari: yes, Computer Modern has a distinct style. most of the fonts & font tech you're used to wasn't around when it was designed. 22:20:25 however its actually a nice font, just takes getting used to ;) 22:20:36 I would make my webpages Computer Modern if anyone had the font! 22:21:21 * AnMaster does the paste binary files on nopaste trick 22:21:27 needs a special command line tool 22:21:44 this is my befunge08 draft, use wget or curl to get it, firefox or such would fail at it 22:21:51 http://rafb.net/p/2sIDlA55.txt 22:21:53 it is a pdf 22:21:54 ehird: I'll take your word for it 22:21:58 calamari, look at it 22:22:04 do you think it got those issues? 22:22:29 I think that shouldn't be ".txt" :) 22:22:39 calamari, blame nopaste 22:22:42 hehe 22:22:42 AnMaster: dude give source 22:22:42 just use wget or curl 22:22:44 then rename it 22:22:46 NOBODY wants to download a pdf 22:22:48 ehird, I will 22:22:56 ehird, what? 22:23:00 yes you want 22:23:09 well, no 22:23:12 i for one won't :) 22:23:12 it works very well in konqueror 22:23:13 :) 22:23:22 ehird, still please take a look at this one 22:23:49 the image in appendix c, I'm rendering a better one atm 22:24:02 just waiting a few hours for blender to finish it 22:24:16 one way to tell you have too much crap on your desktop: cannot find a file you just downloaded 22:24:43 calamari, haha 22:24:48 calamari, so what do you think of it 22:24:54 a browser would mess it up 22:25:00 Hello, world! How arey ou today? I think a little bit of my typing ability has come back so I am typing quickly to test. 22:25:02 Oh, not bad. 22:25:03 AnMaster: that is from LaTeX? 22:25:07 calamari, it is 22:25:10 AnMaster: lex! lex! lex! lex! lex! 22:25:13 errr 22:25:14 i mean 22:25:14 lyx 22:25:15 okay cool.. see that looks fine 22:25:28 eh yes from lyx 22:25:31 and lyx uses latex 22:25:32 so.. 22:25:33 no i mean 22:25:35 LYX SRC 22:25:36 PLZ 22:25:44 so it's the defgault font that looks like crap 22:25:53 ehird, ah well pastebin mess it up 22:25:54 :( 22:25:56 calamari: it's the default font that you're not used to 22:26:04 i can guarantee you that Computer Moden is beautiful ;) 22:26:26 in an ugly kind of way 22:26:29 ehird, the lyx source would make no sense 22:26:37 it includes stuff like external *.eps 22:26:39 and *.png 22:27:00 * calamari goes baqck to working on his rubik's cube cipher 22:28:07 ehird, but I'll send it in some way 22:29:33 ehird, http://rage.kuonet.org/~anmaster/funge08.tar.bz2 22:29:55 ehird, note, I haven't gotten permission to reuse this really yet, I'm waiting for answer on license on funge98 22:30:15 ehird, so I'll remove the file in 5 minutes 22:30:17 hurry 22:30:32 people on #esoteric are simultaneously paranoid and lax.. 22:30:46 ehird, got it yet? 22:31:01 * pikhq pulls it for his archive of censored files 22:31:03 the images I both made myself 22:31:14 pikhq, likely it will be allowed soon 22:31:23 or I'll rewrite it from scratch 22:31:31 pikhq, it is just a copyright issue of the text 22:31:38 Hmm. Not seeing the guy responsible in here ATM. 22:31:39 anyway it is funge98 standard, extended 22:31:55 ehird, have you fetched it or not? 22:32:46 ehird, also mine is optimized for being made into a pdf 22:32:53 like the \usepackage{microtype} 22:33:00 just for pdf 22:33:08 makes some nicer typesetting 22:34:02 ehird, also you may want to change from "indent new paragraphs" to "use vertical skip" 22:34:09 it will help for web page at least 22:35:38 5 minutes passed 22:35:40 removed file 22:35:46 ehird, I'm making some changes to your file 22:37:11 ehird, you want to post-process that file however 22:37:28 to change the _bignum thing from an image to using the html or whatever it is 22:38:49 it doesnt use an image 22:38:51 its 100% pure html 22:38:51 kthx 22:46:13 ehird, it isn't here 22:46:14 weird 22:46:32 ehird, anyway you got my lyx source 22:46:36 what did you think of it? 22:46:37 :) 22:58:06 -!- CakeProphet has joined. 23:01:22 ehird, ? 23:02:18 I just found the bugs in my Protected-Mode bootstrap: 1) mistook dd for dw when building the far jump 2) forgot to add the 32-bit jump prefix to the same far jump 3) called real-mode interrupts after resetting idt (and gdt) 4) misunderstood nasm macros, generating completely bogus data in my gdt 5) misunderstood the format of the gdt limit parameter 6) didn't disable interrupts until after loading the idt with an empty 23:02:18 table 23:02:31 I wonder what the heck I was doing back then 23:04:32 TM? 23:04:56 TM? 386! 23:05:17 SK! 42. 23:13:02 Screwing everything up. 23:15:32 just about... but now I do have something that boots up, reads a bootstrap from disk, calls the bootstrap, successfully enters PM then prints a C in the upper-left corner of the screen (from PM), then halts 23:15:50 the question now is what the heck the purpose of this thing was 23:16:32 probably some megalomaniac scheme of writing your own OS 23:17:47 could be... the modification date on this thing, before I started nesting yesterday, was some time in July 2003 23:17:48 * pikhq has something that gets loaded from Grub, successfully set up user mode and kernel mode, then prints out the GDT 23:19:01 wow, it even has a user and kernel mode? 23:19:08 Yeah. 23:19:16 It doesn't *use* said user and kernel mode yet, though. 23:19:21 No multitasking. ;) 23:19:31 bah, how hard can it be 23:19:34 Still, it'd be fairly trivial to enter user mode. 23:19:39 Just a long jump into it. 23:19:51 * AnMaster sighs 23:19:52 I believe it's sector 0x18 that's user mode's CS? 23:20:02 s/sector/segment/ 23:20:07 depends on the gdt :P 23:20:22 I only have a kernel-mode CS and DS thus far 23:20:24 * pikhq reads gdt.c again 23:20:30 gdt_set_gate(3, 0xFFFFFFFF, 0, GDT_USERCODE, GDT_FLAGS); 23:20:42 I'd say that's doing user-mode CS and 0x18. 23:20:47 s/and/at/ 23:20:47 can't seem to find a sequence of moves that gives a period > 1260 23:20:57 gdt_set_gate? I think I know which tutorial you've been using :P 23:21:23 I'm not using a tutorial. 23:21:33 I wrote that all by myself. . . 23:21:49 The tutorial that I found first, which had that function in it, was truly awful, though. 23:22:01 "Copy this code. Everything will work!" 23:22:03 *Ugh*. 23:23:23 [22:20] gdt_set_gate? I think I know which tutorial you've been using :P 23:23:27 i said exactly the same thing 23:23:30 but for his putchar routines 23:23:45 bah, putchar? the console is a framebuffer! 23:23:46 while that tutorial may suck, the ohers are all worse ;) 23:24:08 fun idea: no text mode ever implemented 23:24:15 ehird: Like I said: I wrote my stuff all on my own. ;) 23:24:18 the gui is heavily baked in and made to be as optimized as possible 23:24:25 and is just as stable as the text mode 23:24:25 ;) 23:24:26 Well, except for the multiboot stub, makefile, and linker script. 23:24:33 no more shitty gui layers! 23:24:47 of course you could write a terminal driver that just outputs to a terminal gui window. 23:24:54 ehird: So. . . you have GUI pretty damned quickly? 23:25:17 pikhq: Well, the GUI should reeeaaaally be saved to later. BUT, this way is fun :D 23:25:25 calamari: in rubik's cube? that's the period of turning one face, then the whole cube, isn't it. 23:25:28 Make it X-compatible, and I'll be impressed. 23:25:33 you'd actually, you know, have to think about your gui and its implications and its stability 23:25:36 pikhq: bah 23:25:37 compatibility 23:25:39 who needs it 23:25:51 *shrug* 23:26:03 Anyways: I had a really insane idea for my syscall interface. 23:26:15 oerjan: trying to find a fixed sequence of moves with the longest period.. i.e. after doing these same exact moves X times, for which moves is X largest? 23:26:25 Write the syscall and its arguments to 0x00, then int 66h. ;p 23:26:37 pikhq: So .. basically linuxs syscal. 23:26:40 But with diff. mem addrs 23:26:41 so far the best is an 8 move sequence period 1260 23:26:42 ehird: No. 23:26:52 Linux's syscall has the syscall arguments in registers. 23:26:55 you mean overload the segmentation fault handler for syscalling? 23:27:06 I think I'll try adding some feedback to see if I can create a longer period 23:27:13 olsner: No; use paging to actually map 0x00 somewhere. 23:27:25 ah, yes, that makes more sense 23:27:55 but I somewhat like the idea of null pointers giving segmentation faults when accessed 23:28:33 I like the idea of making Malbolge the user programming language. 23:29:24 pikhq: Hey! ESO already exists 23:29:25 >:( 23:29:36 * pikhq should *probably* make a Brainfuck interpreter the first running program on this kernel. 23:30:15 calamari: the biggest period may not be that big 23:30:21 pikhq: with loads of memory map stuffed 23:30:24 and make it binary brainfuck 23:30:28 so you can program your os in it! 23:30:33 then transform the interp + co into asm 23:30:35 LMAO 23:30:37 and you will truly have a brainfuck OS 23:31:03 you can also micro-optimize the (probably tiny) brainfuck interp for every byte it's got. that would be fun :-) 23:32:43 i really want to get my os project going sometime 23:32:51 watching gcc compile something on it would be awesome 23:32:52 :-) 23:33:36 pikhq: i assume your kernel will be monolithic 23:33:37 os = fix (recompile . boot) 23:33:52 olsner: QEmu represent. 23:34:03 i think i'll probably make a monolith first, then try my random wacky microkernel idea after that :p 23:34:06 hmm? 23:34:24 (the basic idea is that most 'microkernel's really suck because their concept of a process is too heavyweight, and their IPC stuff is terrible) 23:34:27 (so: fix that.) 23:34:42 the problem is, the more you do cool ideas, the less likely you are to run gcc.. 23:35:59 oh, and if i get either one of those up, after a year or so i'll think about toying around with some gui concepts i had 23:36:15 like a shell that integrates with a gui properly but isn't one of those god-damn awful 'GUI SHELLZ' you see around 23:39:03 :) 23:39:10 but really i just want to mess around in kernelspace 23:55:27 pikhq: i wonder how much a microkernel could actually refer 23:55:34 * pikhq has an idea for a filesystem. . . 23:55:44 if we have the kernel as process 0, and call it the 'procd' 23:55:51 Anyone familiar with the UMSDOS filesystem of Linux 2.0-2.4? 23:55:55 and all it does is the minimum neccessary for processes + ipc 23:55:59 then you could even put: 23:56:07 console drivers, etc. in their own module 23:56:27 of course your process structure would get optimized pronto; you'd have a hell of a lot of procs ;) 23:56:59 I assume you'd have that sucker use Multiboot. 23:57:11 (otherwise, good luck getting all your processes up and running. ;)) 23:58:41 pikhq: Meh. 23:58:47 It would do it all itself ;) 23:58:54 handle its own procs etc 23:59:07 The idea is that there is no 'root process' 23:59:17 procd (cheap name for 'the core kernel') is proc 0 23:59:24 but when it spawns off stuff, they aren't a child of procd 23:59:35 because procd's "children" are not children at all, they have no parents (awwww) 23:59:59 basically, procd would be the very minimum you need at the base: super-strong, fast glue. 2008-03-10: 00:02:11 pikhq: opinions? 00:02:30 pikhq: I've used UMSDOS 00:03:19 seemed to work fine 00:03:40 pikhq: hmm 00:03:40 one way to do IPC 00:03:40 would be very simple 00:03:53 you can send off an opaque message -- (void *) -- to a process 00:03:53 my latop hd was too small to partition, so win95 and linux shared the drive 00:03:59 then use poll() or whatever to get a response, async 00:04:14 if IO is a process, then all IO becomes async 00:06:14 best period 1260 sequence (5 moves): L F' R2 L U' 00:06:40 pikhq: p.s. i've seen this passed around http://www.jamesmolloy.co.uk/tutorial_html/index.html 00:06:45 maybe better than bran's tutorial 00:08:40 pikhq: it seems to be more modern & thorough 00:09:20 Tutorial, shmootorial. 00:09:49 pikhq: hey, i haven't seen one "COPY 'N PASTE THIS" in it yet 00:09:59 & it has even a chapter on multitasking 00:10:02 so i'd say -- worth a look 00:10:12 calamari: i found a wikipedia article on the Rubik's Cube group, but nothing about its largest element order 00:10:23 pikhq: heh, the gdt stuff is nice and long 00:10:26 & actually explains it ;) 00:10:45 -!- Sgeo has joined. 00:10:48 oerjan: I'm having success combining that sequence with color-based turns 00:11:08 ehird: I'm still proud of doing it myself. :p 00:11:09 -!- jix has quit ("CommandQ"). 00:11:20 oerjan: for example if the upper right color is red, turn the right side 00:12:18 oerjan: so far I've gone out to a million iterations and it's not too bad.. right now tweaking it for the most even distribution 00:12:21 pikhq: I would still take a look at the stuff there. 00:13:36 you mean it hasn't come back after a million iterations? 00:14:10 oerjan: if it had, then the distribution would badly skew 00:14:27 hm wait, are you actually iterating the same exact moves? 00:14:34 yes 00:14:51 those 5 moves, plus 1 color based move 00:15:20 no i mean, the color based move does not necessarily repeat after a while 00:15:33 only if the cube does 00:15:37 it might not be reversible 00:15:47 that's a good thing, isn't it? 00:16:24 i mean you might _never_ get back to the original state 00:16:31 perhaps not 00:16:57 calamari: you should check if any intermediate states repeat 00:17:01 yes I should 00:17:09 but I am not sure how to do that 00:17:15 -!- oklofok has joined. 00:17:32 do you know of an algorithm that doesn't use a linear amount of ram? 00:17:44 there's a simple way - you keep the states at time n and 2*n 00:17:56 -!- oklopol has quit (Connection reset by peer). 00:18:33 you can easily calculate those incrementally 00:18:34 what do mean? 00:19:03 pikhq: http://www.jamesmolloy.co.uk/tutorial_html/7.-The%20Heap.html this kind of thing jus treminds you that malloc()ing small blocks frequently should probably be considered harmful ;) 00:19:08 (1) put your original state in two variables 00:19:30 (2) do one iteration on the first copy, two iterations on the second 00:19:47 (3) check if they have become equal. if not, go to (2) 00:19:54 nice 00:20:11 thank you.. I will do that immediately 00:21:06 this will show if they repeat, although not necessarily the first point at which a repetition occurs 00:21:58 is there a name for that algorithm? 00:22:05 don't know 00:22:07 I'd like to read more about it on wikipedia 00:22:25 ahh ok.. well thanks :) it's good 00:29:12 boom.. repeated 00:29:23 * oerjan is not surprised 00:29:25 so it's not good enough yet 00:30:07 -!- timotiis has quit ("leaving"). 00:31:00 well it'll have to repeat eventually since there are only ~45-48 bits of state in a rubiks cube 00:31:23 but I'm sure that look much less time than 45 bits 00:31:27 tool 00:31:32 argh... 00:31:35 took 00:36:01 sorry, but i just googled for "rubik's-cube period 1260" and the first result contains the text "Maximum order for the Rubik's Cube is known to be 1260". 00:37:34 pikhq: Hmm. mallocd. 00:37:35 :-) 00:37:39 :) 00:38:11 pikhq: mallocd is, of course, started by procd, which while doing the internal book-keeping required to start mallocd, utilizes mallocd to allocate its structures. 00:38:19 :D 00:39:06 heh, if mallocd existed: 00:39:28 And I assume you've got mallocd running in ring 1? 00:40:39 hmm 00:40:46 i'm not sure how you'd send stuff off to the malloc process 00:40:53 a normal 'fd' sounds tempting, but somehow wrong :) 00:40:55 pikhq: heh, guess so 00:41:02 but that recursive dependencys kinda the main nag! 00:41:05 Message-passing, of course. 00:41:17 pikhq: yes 00:41:22 but through which method 00:41:26 FDs would be the unixy way 00:42:17 oerjan: however that is when applying the algorithm without taking color into account 00:42:19 pikhq: e.g., assuming 'write' is the syscall.. 00:42:25 how do you represent sending over a size_t? 00:42:32 since write takes a const void * 00:42:45 & you can't reliably cast 00:43:04 but anyway, PSEUDOcode for malloc: 00:43:22 sorry, what are you guys doing? 00:43:31 looks like an operating systems class in here 00:43:58 calamari: heh 00:44:03 calamari: pikhq's writing a little kernel 00:44:07 i'm throwing around batty ideas 00:44:21 posix? 00:44:27 calamari: that's his intention 00:44:31 nifty 00:44:38 calamari: yeah. i think if you have a sufficiently complicated test you should be able to take a tour around the longest path of the _graph_ of the cube, which surely must be longer 00:45:02 (graph of configurations) 00:45:31 yeah I figure there's no algorith that'll result in every combination being used in the sequence 00:45:37 pikhq: http://www.exclaim-project.org/ I would admire the progress on this toy OS if the creator didn't take it so ?$()%@?! seriously 00:45:59 He seriously thinks that some day not far from now it could be actually used on real systems in place of linux 00:46:06 /sigh 00:46:24 calamari: that's essentially the question of whether the configuration graph has a hamiltonian path 00:46:37 right 00:47:24 * oerjan wonders if that is even known, this being NP-complete to check and all 00:47:50 pikhq: ah, i know how mallocd could exist 00:47:58 the kernel 'pretends' to be multiple processes 00:48:01 procd, mallocd, etc 00:48:09 they act just like regular, good ol' fashioned processes 00:48:19 but they're actually coupled into the kernel core, because well -- they are core 00:48:32 pikhq: good idea? 00:49:22 oerjan: thanks for all the help with this :) 00:49:44 Evil. 00:49:48 But that'd work. 00:49:55 Is there a point to Exclaim? 00:50:05 mallocd? 00:50:07 Probably not. 00:50:38 what's mallocd? 00:52:06 A malloc daemon. 00:52:32 WHY would there be a malloc daemon? 00:52:43 * Sgeo goes insane 00:52:45 Sgeo: You didn't even know what malloc was before I told you. 00:52:52 I don't think you really should be questioning things like that ;) 00:53:07 However, mallocd may be a bit overkill, but still pretty awesome. 00:53:34 Make all library stuff a separate process while we're at it! 00:53:47 brb 00:53:53 Sgeo: Welcome to microkernel. 00:54:27 calamari: Actually, my plan is to just provide enough syscalls to easily port over some good library. 00:54:37 (POSIX/C library, of course) 00:54:56 pikhq: There's a nice one of them specifically deisgned for hobby OSes 00:54:57 let me find it.. 00:55:02 who was talking about newlib the other day? 00:55:19 libgloss? 00:55:59 I was. 00:56:19 pikhq: Here you go 00:56:19 http://sourceforge.net/projects/pdclib 00:56:26 Plus it's public domain-ey-ness. 00:56:28 Which is nice. 00:56:35 And the configuration to bind it into your kernel is really simple. 00:57:21 How does one go about making a kernel? 00:57:31 Sgeo: Oh god, please don't. 00:57:31 With much pain and agony. 00:57:42 If you don't grok C, don't bother. 00:57:46 I do *not* want to have to support the design desicions of Sgeokern. 00:57:48 not that much pain or agony.. depending on the kernel :) 00:57:55 if lgdt [eax] makes you run in fear, then don't. 00:57:58 pikhq: C knowledge is hardly enough; you need to know quite a bit about how the actual machine works.. 00:58:08 calamari: He doesn't use C, as far as I know. 00:58:08 for various values of 'quite a bit' 00:58:14 I guess Python doesn't cut it 00:58:22 pikhq: ahh that's right .. hehe 00:58:24 Sgeo: What lead you to make that deduction? 00:58:32 Sheer cunning intellect? :-) 00:58:33 although my BOS kernel was written in x86 asm 00:58:33 ehird: True, but if you don't know C, then you *don't* know enough about how the machine works. 00:58:40 pikhq: Quite true. 00:58:46 Although, why can't Python be compiled into x86 instructions? 00:58:53 calamari: Okay, if you write it in assembly, you've *proven* that you know enough. 00:58:55 Sgeo: that wouldn't help 00:59:00 -!- sebbu has quit ("@+"). 00:59:01 you still need lower-level access than python exposes 00:59:07 plus, python is pretty uncompilable 00:59:12 Sgeo: How would you make Python write to an arbitrary address? 00:59:14 youd just compile it down to some vm opcodes, basically. 00:59:17 it's been done. 00:59:21 it's just too dynamic. 00:59:35 besides, if you DO do that, AND then strap on the low-level tweaks into python.. 00:59:41 you've just lost any advantage of python and made it a pain. 00:59:49 there's a reason C is so close to the metal in all aspects. :) 00:59:54 And you would've spent less time learning C and assembly. 01:00:11 Also, if you're doing kernel C you learn to be edgy. 01:00:31 In Python code, you just throw anything around and the gc will mostly make everything go peachy in the end. 01:00:33 Are there other C-likes that are easy like Python, but still compilable and can access low-level stuff? 01:00:38 Whereas in a kernel... 01:00:38 pikhq: so are you planning on using newlib then? probably a gcc compiled for it so you don't have to go through that pain 01:00:42 Sgeo: hee 01:00:54 calamari: Probably. 01:00:56 'I want to write a kernel!! But that low-level stuff frightens and confuses me, so I don't want to really learn it.' 01:01:03 Compiling GCC for it is *not* that big of a deal. . . 01:01:06 I've done worse. 01:01:11 pikhq: check out pdclib! 01:01:21 (Setting up a Hurd cross-dev environment? *shudder*) 01:01:38 * Sgeo looks up libc 01:01:51 Sgeo: Sure there is. It's called *C*. 01:01:58 :p 01:02:31 I forget the compiler option used for compiling kernels 01:02:36 Doesn't at least some of the ker.. no, I guess you write in C, compile it on an already-made system, and it works as a kernel, and you could possibly compile the source on that kernel now that exists 01:02:38 pikhq: But C is haaaard! Let's go shopping. 01:03:10 ehird: no need to mock 01:03:15 calamari: that's a meme :) 01:03:24 Sgeo: Yes, at least some of the kernel needs to be in assembly. 01:03:36 ehird: you didn't know C at one time too.. hehe 01:03:57 ..but why? Can't C be compiled into x86? Isn't that why C is used? 01:03:57 * pikhq looks at gdt_asm.s. . . 01:03:59 calamari: No actually 01:04:04 I learned C before my conception 01:04:11 God gave me the power as soon as I was formed 01:04:12 Sgeo: Because C doesn't expose *everything*. 01:04:19 ehird: what was your return code when you came out ? 01:04:22 Like, say, the registers. ;) 01:04:23 Aborting me would be a henious crime indeed, because all my genius was already there! 01:04:27 calamari: pi. 01:04:41 ehird: float or double? 01:04:43 calamari: in http://www.math.niu.edu/~rusin/known-math/00_incoming/dirac Chip Eastham makes an educated guess that the graph does not have a hamiltonian path 01:04:56 I'm curious, though. . . Would it be possible, or even *sane*, to implement my asm_gdt_load function via just some inline assembly? 01:05:05 calamari: No. Every digit. 01:05:08 Do you need direct access to registers to make a kernel? 01:05:09 The truly godly type! 01:05:12 Sgeo: Yes. 01:05:14 ehird: you need to go back to C class 01:05:17 ehird, why? 01:05:22 Sgeo: You need direct access to *everything* 01:05:33 * Sgeo doesn't quite see why.. 01:05:37 If the thing at the root of your system doesn't access every part, what are they going to do? sit around being bored? :) 01:06:07 calamari: Shush. 01:06:18 Nature's 4-day harmonious time cube allowed me to do it. 01:06:35 People who say that the real pi cannot be a return value are educated stupid! 01:07:08 * pikhq returns pi 01:07:11 Base pi, of course. 01:07:16 Although I guess the libc needs to be partially in asm.. although what if libc is compiled with another libc, then once that preliminary version is done, compile it with itself? 01:07:19 lol, #awesome is being invaded by people, apparently related to a project called awesome :P 01:07:53 oerjan: great link, thanks 01:07:54 Sgeo: I can make *libc* without assembly. 01:08:05 ehird: :DD 01:08:15 owned those bastards! 01:08:17 Assuming that my syscall interface has a function entering the kernel at a specified address. . . 01:08:26 Hmmmmmmmm 01:08:40 If I made a project called libjesus, I'll bet I could protest FreeNode and take over #jesus . 01:08:48 Anyways, are people here going to test PSOX 1.0b1 when it comes out? 01:08:52 Sgeo: libc is basically all in C 01:09:01 because, well, it 01:09:07 's the *C library* 01:09:08 :) 01:09:09 Then, I need only do (kernel_entry)(syscall, args); 01:09:10 brb 01:09:10 GregorR: just make sure it's your project otherwise you'll only get ##jesus :( 01:09:20 ehird: It sometimes has inline assembly. 01:10:03 hmmm... actually that means the current channel should be ## too 01:10:06 Specifically, asm("foo. . ." /* Load args to the syscall in registers.*/ "int $0x80" /* Enter the kernel. */); 01:11:20 calamari: yes 01:11:23 but once we get irc.eso-std.org ;) 01:11:27 we can have # ! 01:11:31 ooh 01:11:35 #!/bin/esoteric 01:12:00 Does anyone in here besides myself even care about PSOX? 01:12:02 # is a valid channel name! 01:12:03 it works, it exists. 01:12:17 Sgeo: i mostly care about your mother, tbh 01:12:17 ehird: yeah 01:12:22 Sgeo: More people did before you started whining about how nobody cares about it and bothering everyone about that fact :-D 01:13:02 Sgeo: well, I thought I'd try to be interested, but you shot down every one of my ideas and suggestions without giving them a moment's though.. so yeah then I lost interest.. oops :) 01:13:34 calamari, um.. oO log link? 01:13:44 calamari is one bitter bitch 01:13:45 ! 01:13:59 actually 01:14:01 we could have + 01:14:08 oklofok: people try to eat me, so I became bitter to dissuade them 01:14:10 calamari: so true, so true 01:14:41 :D 01:14:44 Sgeo should learn to phrase his questions as 'anyone want to reaffirm the way i'm doing this?' :) 01:14:52 * oerjan notes that neither #islam, #muhammed nor #buddha exist... 01:15:27 this is fun, i went to sleep at about 22.00 so that i could wake up early... 01:15:34 [00:15] * Cannot join #christian (Channel is invite only). 01:15:34 woke up at 1:14 01:15:37 is that appropriate for freenode 01:15:37 :| 01:15:58 let's report them! 01:16:06 [00:15] * You have left channel #anus (requested by ChanServ: "GODDAMNED*WANKERS") 01:16:10 i wanted to be in anus 01:16:12 :( 01:16:38 I think I made a comment about it needing and/or/xor 01:17:19 ..and it does 01:17:24 * oerjan imagines GregorR going to protest #jesus and Freenode staff answering, "Oh no, the channel owner gave us conclusive proof that he is representing Jesus. Unfortunately we are not at liberty to disclose it" :D 01:17:28 What else did you suggest? 01:18:53 * Sgeo pokes calamari 01:19:05 Sgeo: that kind of incessant prodding is why people have been ignoring psox 01:19:10 can't you be .. a little more patient? 01:19:55 KjSDKLFjsdf;jsdjsdfsdfsdf 01:19:58 #awesome is REGGD 01:20:12 awesome. 01:20:32 Hm, a discussion about the LNUM/LBYTES format 01:20:35 umm... by you? 01:21:04 between myself and calamari 01:21:41 * oerjan pokes calamari with some salt and pepper, and olive oil 01:22:02 http://bespin.org/~nef/logs/esoteric/08.02.17 01:22:36 ircbrowse.com 01:22:37 srsly 01:23:35 * pikhq realises that it is possible to implement *hard links* using FAT. 01:24:03 fat is not a REAL MAN 01:32:53 pikhq: I want driectory hard links :P 01:33:27 pikhq: what about a file system whose structure is a filesystem 01:33:28 I use mount --bind for that now.. so never mind :) 01:33:30 not an opaque amount of bits 01:33:33 ditto for that one 01:33:37 turtles, down, all the way 01:33:58 ehird: need a base case to end the recursion 01:34:04 calamari: nonsense 01:34:08 just use an infinity machine 01:34:20 the empty system, of course. if it works for ZFC... 01:34:21 the #1 preferred platform of choice for turtle-system designers & implementers 01:34:32 Infinity machine: http://www.chiark.greenend.org.uk/~sgtatham/infinity.html 01:35:01 hmm, has anyone coded the empty os yet? 01:35:02 If endeavour was written, I'd pronounce that as '@what infinity machine=http://www.chiark.greenend.org.uk/~sgtatham/infinity.html' 01:35:15 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 01:35:33 that would be ...well, awesome 01:35:36 oklofok: it was coded by Zen Buddhist monks in the early 9th century 01:35:48 oh, i see 01:36:08 they didn't need to invent hardware for it, since it was empty. 01:36:24 oh, and if i ever decided i was pasting '@what infinity machine' to people too much after mentioning it, 01:36:27 i'd do something like: 01:36:42 '@counter infinity machine=@what infinity machine' 01:36:47 where @counter msg=cmd 01:36:57 means 'whenever i say something which contains msg, run cmd.' 01:36:57 :D 01:37:01 need to make an ipod shuffle os 01:37:14 calamari: no uclinux support 01:37:15 :) 01:37:21 Somebody should make an emulator for the infinity machine that always displays just how much slower than realtime it's going :P 01:37:30 ehird: yeah.. guess I need the compiler first don't I 01:38:30 pikhq: linux boots slow on my ipod video.. at least make yours boot really fast :) 01:38:54 -!- Sgeo has joined. 01:38:59 you know what a really good infinity machinie program would be? 01:39:02 Back 01:39:06 ehird: the universe? 01:39:07 What did I miss? 01:39:11 one that somehow interacted with a normal webserver machine 01:39:12 basically 01:39:21 it would accept programs 01:39:25 over the web 01:39:28 check them for safety 01:39:31 then send it off to the infinity machine 01:39:37 which would run them 01:39:42 and then send its computation result over the wire 01:39:45 back to the browser 01:39:56 also a web service with api bindings to most langauges 01:40:03 infinite computing made easy, for everyone! 01:40:25 and since it can speed everything up infinitely, it will only EVER take about a millisecond more than the network lag for any computation 01:40:51 Way to aim high. 01:41:40 GregorR: to be honest 01:41:45 if you have a web server 01:41:48 and an infinity machine 01:41:52 it would be a few weeks project 01:42:07 safety checking -- the infinity machine would probably have stuff for that anyway, see the article 01:42:30 My last statement was what we in the biz call "sarcasm" 01:42:34 so, all it has to do is splice in 'infinity's at every step possible, so that even non-'infinity'-using code will run fast 01:42:39 GregorR: Still. :p 01:43:30 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 01:44:06 GregorR: Would be pretty useful. 01:44:07 -!- bsmntbombdood has joined. 01:44:14 Especially since you'd only ever need a one function api. 01:44:21 string -> ? 01:44:27 hi bsmntbombdood 01:44:32 an optionally a 'cluster' thingy 01:44:40 to specify a custom infinity machine 01:45:57 GregorR: :D 01:47:07 pikhq: hmm 01:47:13 procd handles sending messages to procs 01:47:16 but it does this through a message 01:47:24 > solve(CONUNDRUM); 01:48:14 Hmm. 01:48:36 Your kernel would need to handle the message-passing system. 01:48:59 pikhq: But the kernel only manifests itself in the multiple processes it pretends to be. 01:49:44 messaged. 01:49:45 ; 01:49:47 ;p 01:50:05 -!- CakeProphet has quit ("haaaaaaaaaa"). 01:50:06 pikhq: Well, messaged would just essentially split up about 2 parts of procd for no reason and retain the same problem 01:50:06 :P 01:50:13 Fine, fine. 01:50:22 I guess I could have TWO primitives.. 01:50:29 That is, the send, and the async-get-response 01:50:34 Yeah. 01:50:37 who here linked the bogosort paper? 01:50:41 was it faxathisia? 01:50:43 pikhq: Of course when programming an app you shouldn't worry about any of this stuff 01:50:45 And optimise the fuck out of that. 01:50:48 pikhq: it's low level, behind the scenes stuff 01:50:52 you'll have to do 01:51:04 #include 01:51:08 and they'll haev names like 01:51:18 MyOS_send_ 01:51:24 the trailing underscore means BEWARE 01:51:37 but yeah, in most apps you'll just use everything like normal. 01:51:56 except that if you want to use asynchronous IO you can use the stadard posix interfaces with one difference.. 01:52:06 everything will seem a lot snappier, because in the background, that's what its doing natively :) 01:53:24 :) 01:53:51 oh, and of course 01:54:03 it will include a user-level version of that message passing stuff 01:54:15 to make asynchronous server and client programming <3, even in C 01:54:20 pikhq: awesome idea, or pwnsome idea? 01:54:33 and ofc you could easily port the api to an inferior OS by emulating the ipc interface it uses :) 01:56:31 pikhq: hmm, i think the main user-level interface will be this 01:56:49 err 01:56:51 better post an example 01:56:51 heh 02:00:28 -!- olsner has quit ("Leaving"). 02:03:20 pikhq: behold -- 02:03:31 http://pastebin.ca/935965 actually nice-looking event based programming thingy in c 02:04:25 hmm, wait 02:04:28 need a null terminator there 02:05:10 pikhq: new - http://pastebin.ca/935970 02:06:00 typedef struct {char *name; size_t ac; void *fp;} LWmessage_t; 02:06:07 i wish i could give you a scary funcptr type 02:06:12 but that's all that iwll work :) 02:07:38 pikhq: I like my cheap interning trick though 02:09:05 hm 02:09:07 need a cast 02:09:08 :) 02:12:33 err 02:12:34 no char 02:12:51 wow 02:12:58 const *const is a valid type on c 02:13:00 all on its own?! 02:13:04 wtf 02:14:59 defaults to int perhaps? 02:15:09 like short int = short 02:19:21 And const = const int. 02:30:32 * Sgeo is bored 02:30:43 And I really should be doing homework 02:36:41 -!- ehird has quit ("This computer has gone to sleep"). 02:38:06 -!- oerjan has quit ("leaving"). 02:44:16 -!- Sgeo has quit (Remote closed the connection). 02:45:11 -!- Corun has quit (Read error: 110 (Connection timed out)). 02:47:53 -!- Sgeo has joined. 03:00:30 i just realized the translation of "windows for workgroupsversion 3.11" on my old comp was wrong 03:01:12 quite dazzzzzling 03:01:25 also, i need a better keyboard 03:33:49 -!- Sgeo has quit ("Ex-Chat"). 03:34:09 -!- Sgeo has joined. 03:41:51 wow, spacewar on PDP-1 actually looked really pretty. 03:41:52 http://en.wikipedia.org/wiki/Image:Spacewar%21-PDP-1-20070512.jpg 03:43:58 cool 03:44:51 Well, of course. The PDP1 wasn't this piece of crap that we have on our desks. . . 03:45:10 Oh, you meant it actually *looked* pretty, not that its code was elegant. 03:45:11 :p 03:55:50 yes, it looks pretty 03:56:02 compare with http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/KSpaceDuel1.1.png/800px-KSpaceDuel1.1.png 03:56:07 ewww 04:13:32 -!- AnMaster has quit (Connection timed out). 04:14:34 -!- AnMaster has joined. 04:20:39 -!- calamari has quit ("Leaving"). 04:23:40 -!- calamari has joined. 05:16:52 Bye all 05:16:56 -!- Sgeo has quit ("Ex-Chat"). 06:48:36 -!- calamari has quit ("Leaving"). 07:51:16 -!- BMeph has quit ("calls it a night"). 07:59:59 -!- clog has quit (ended). 08:05:29 -!- clog has joined. 08:05:29 -!- olsner has joined. 09:23:38 -!- oerjan has joined. 09:48:57 -!- olsner has quit ("Leaving"). 09:53:05 http://obsoleteskills.com/Skills/Skills 10:14:42 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!"). 10:18:10 -!- AnMaster has quit (Connection timed out). 10:19:31 -!- AnMaster has joined. 10:41:48 -!- puzzlet has quit (Remote closed the connection). 11:06:01 -!- Xion has joined. 11:06:43 Carlos Castaneda rulezZ 11:07:07 FIGHT! 11:08:35 * oerjan informs Xion that #esoteric is about esoteric programming languages. Our topic has just been a bit anarchic of late. 11:10:00 Ouch 11:10:10 Although it doesn't mention castenada 11:10:17 indeed not 11:13:46 -!- Xion has left (?). 11:32:57 now excuse me while i go to refill my Qi... 11:33:00 -!- oerjan has quit ("leaving"). 14:18:20 -!- Corun has joined. 14:24:51 -!- timotiis has joined. 14:43:48 -!- atsampso1 has quit (Read error: 113 (No route to host)). 15:26:14 -!- Corun has quit ("This computer has gone to sleep"). 15:38:28 -!- RedDak has joined. 16:11:31 -!- faxathisia has joined. 16:12:03 :/ 16:12:05 http://pb.eso-std.org/ 16:12:33 does not load 16:12:42 -!- BMeph has joined. 17:04:49 -!- sebbu has joined. 17:08:57 -!- RedDak has quit (Remote closed the connection). 17:15:22 -!- timotiis has quit (Read error: 104 (Connection reset by peer)). 17:33:59 -!- ais523 has joined. 17:34:38 slereah__: INTERCAL's unary operators work by opping the number and the number rotated to the left 17:34:56 e.g. #V2 is #6 (...0010 or ...0100) 17:43:47 -!- Tritonio_ has quit (Remote closed the connection). 17:50:17 -!- timotiis has joined. 18:26:53 -!- boily has joined. 18:28:12 -!- boily has quit (Client Quit). 18:40:45 is there a programming language with macros that are easy to write? 18:46:04 lament: depends on what you mean by "macros" 18:46:13 and "easy to write", for that matter 18:46:47 well, i'm looking at scheme and CL macros... 18:46:52 and they just seem way too complicated 18:46:57 to actually use extensively 18:47:17 unlike scheme and lisp, which are nice languages, scheme and lisp macros are not nice languages. 18:47:49 i'd rather do my pattern matching and substitution with some other, better-suited tool. 18:47:50 lament: you could use m4 18:47:58 although it's not all that easy to write due to issues with nested quoting 18:48:11 (it's a TC language based entirely on macros, and almost an esolang) 18:48:39 yeah, i know about m4, but it seems a good macro system should be aware of the syntax of the language (as it is in lisp) 18:49:39 i guess the real problem is that each macro definition is a compiler 18:49:58 and to write a lot of compilers you want a very powerful language 18:50:23 which syntax-rules doesn't strike me as :) 18:51:45 ISTR there was an assembler which used Brainfuck as a macro language 18:51:52 but I'm pretty sure it was an esolanger who wrote it 18:51:56 haha 18:53:18 oh, i actually haven't looked at r6rs macros 18:54:49 (r6rs seems pretty cool...) 19:03:16 -!- ais523 has quit ("Moving to a different connection."). 19:13:38 -!- ais523 has joined. 19:19:36 -!- jix has joined. 19:48:24 Deewiant, there? 19:48:26 /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../include/d/4.1.2/tango/core/Array.d:141: Error: cannot implicitly convert expression ('\xff') of type char to char[1LU] 19:48:26 /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../include/d/4.1.2/tango/core/Array.d:152: Error: cannot implicitly convert expression ('\xff') of type char to char[1LU] 19:48:31 when I try to build ccbi 19:48:54 and: 19:48:54 ccbi/mini/funge.d: In function 'loadMiniFunge': 19:48:54 ccbi/mini/funge.d:103: error: conversion to non-scalar type requested 19:49:02 tango-0.99.5 19:49:16 the former sounds like a tango problem 19:49:23 or rather a GDC problem 19:49:49 Deewiant, I can't change gdc version 19:49:56 it would be painful 19:49:58 I haven't tested tango 0.99.5, can't guarantee that will work 19:50:07 Deewiant, what one have you used then? 19:50:16 $ gcc --version 19:50:17 gcc (GCC) 4.1.2 20070214 ( (gdc 0.24, using dmd 1.020)) (Gentoo 4.1.2 p1.0.2) 19:50:23 like it says on the page, tango 0.99.4 19:50:26 ah, gdc 0.24 19:50:27 I installed tango from source 19:50:30 there's a note about that on the page as well 19:50:33 Deewiant, I did the change 19:50:35 for it 19:50:44 "If you’re using GDC 0.24, you’ll need to make a slight change in utils.d for compilation to work, replacing the line:" <-- that one 19:50:45 yeah, it looks like the same change has to be done in mini/funge.d 19:50:47 followed that 19:50:53 since the line is identical 19:50:59 do the same change there 19:51:51 i'm learning emacs!! 19:52:00 Deewiant, and the tango thing? downgrading is not an option, I got other apps needing the latter version 19:52:12 i'm earning lemacs!! 19:52:39 lament: good to hear it 19:52:44 AnMaster: I think that's your only option. there's nothing in my code that uses tango.core.Array so it's a problem within Tango 19:52:45 just out of interest, did you already know vi? 19:52:58 AnMaster: or rather, the problem is that your version of GDC is too ancient for Tango 19:53:01 i predict i'll learn emacs for about 5 minutes, then stop 19:53:04 Deewiant, hm 19:53:06 yes, i use vim 19:53:11 lament, emacs here 19:53:50 lament: you can get by with the arrow keys and backspace (or C-f C-b C-n C-p C-d if your terminal is really old) 19:54:04 Deewiant, I can't find 0.99.4 anywhere 19:54:17 AnMaster: http://www.dsource.org/projects/tango/wiki/PreviousReleases 19:54:21 ais523: i know, but everything else seems really difficult 19:54:25 but you only really get the gain over GUI editors when you learn some of the more useful shortcuts; C-s and C-M-% are good ones 19:54:43 lament: the docs give a misleading view of what it's like, in my mind 19:54:52 because different people use different shortcuts 19:55:02 ais523: a lot of the time, a list of completions appears in a different window and it's so many keystrokes to switch to that window, select an appropirate completion and switch back. Is there a fast way to do that? 19:55:20 lament: type the first letter that you haven't written so far and hit tab again 19:55:26 it's bolded in recent versions 19:55:46 (if that isn't unique, then you type another letter and so on) 19:56:13 i don't get it 19:56:18 well 19:56:21 they're not completions sometimes 19:56:36 like when you want to switch to another buffer (C-x C-b) 19:56:45 you get a list of buffers, itself in another window 19:57:05 lament: C-x C-b is different from C-x b 19:57:18 one puts up the list, the other lets you tab-complete the name on the minibuffer line 19:57:27 (unfortunately, I can never remember which is which) 19:57:32 oh, true 19:57:39 i'd like both at once, of course 19:57:46 show a list of all buffers, and tab-complete the name 19:57:55 can emacs do that? 19:58:19 lament: go to the minibuffer-entry version, then hit tab twice 19:58:27 that puts up a list of things for everything that tab-completes 19:58:30 (just like in bash) 19:58:37 oh, cool 19:59:01 -!- atsampson has joined. 19:59:06 Deewiant, that older tango fails to build 19:59:06 thanks 19:59:11 warning - gcx.d:319: Error: implicit conversion of expression ((p - *(pool + 0LU)) / 1L / 16L) of type long to uint can cause loss of data 19:59:30 baah 19:59:40 make things easy and get DMD 19:59:53 or the latest SVN version of GDC 20:00:12 Deewiant, then I'd rather skip ccbi, *shrugs* 20:00:31 and this tango thing doesn't even want to install to a prefix 20:00:34 imo that's shitty 20:00:44 I don't know about tango, join #d.tango and complain 20:00:56 it works for me using DMD just fine 20:00:59 Deewiant, I'm writing a conformat c one :) 20:01:23 already GOOD up to k test, k is not yet implemented 20:01:41 Deewiant, C99 btw :) 20:01:52 go ahead 20:02:14 http://rafb.net/p/Y44uBK56.html 20:02:16 so far 20:02:24 started coding on it yesterday 20:02:35 nice :-) 20:03:01 Deewiant, I have some issues with finding a sparse matrix library or something for C though 20:03:23 currently I just allocate a rather large array and use an abstraction so it should be easy to replace with something sane later 20:03:27 got any good idea? 20:05:31 AnMaster: http://pastebin.ca/936934 is the changes I had to make to ccbi to get it to run under gdc 20:05:43 (mostly on Deewiant's guidance) 20:06:26 err 20:06:30 what file is first change in 20:06:34 the diff isn't valid 20:06:46 it's missing a line 20:07:21 diff -r ccbi_src/fingerprints/rcfunge98/base.d ../ccbi_fixed/fingerprints/rcfunge98/base.d 20:07:31 sorry, missed it off my copy&paste somehow 20:07:38 ais523: I've since changed that code so it no longer uses tango.core.Array 20:07:43 OK 20:07:56 but hmm, I'm getting this tango error with DMD on Linux myself 20:07:57 am investigating 20:08:12 Deewiant, with the current tango? heh 20:08:42 AnMaster: not sure which version it is, SVN HEAD from a few weeks back i think 20:09:04 I think I know what could cause it but I'm not sure how to fix it 20:16:02 Deewiant, should k work on z btw? 20:16:09 IMO it should 20:16:12 but not on space 20:16:25 but when looking at CCBI source it looks like it ignores z too? 20:16:35 the specs aren't clear on that point 20:17:08 well, it ignores z because it doesn't matter 20:17:16 but it only reflects on space and ; IIRC 20:17:17 it does when concurrent doesn't it? 20:17:23 k always takes one tick 20:17:27 ah right 20:17:37 if (i == ' ' || i == ';' || i == 'z') 20:17:37 return; 20:17:45 looks like it doesn't reflect on either? 20:17:50 AnMaster: you got that tango.core.Array problem with the latest tango (0.99.5) correct? 20:17:52 apparently not :-P 20:18:00 Deewiant, indeed it was 0.99.5 20:18:03 doesn't matter, the spec is so unclear 20:18:06 AnMaster: alright, thanks 20:18:11 and 0.99.4 fails to compile 20:19:42 I got a minimal sample which doesn't compile due to that error 20:20:01 I'll see if it's fixable or a bug 20:25:07 looks like it's an ages-old compiler bug which everybody hates but for some reason has never been fixed 20:25:26 so what will you do, if it affects both gdb and dmd? 20:25:36 I'll fix the code 20:25:45 the problem is that I'm calling "tango.text.Regex.find" 20:25:51 send me a patch for ccbi when you fixed it 20:25:57 but there's no function called 'find' in that module any moore 20:25:58 pastebin that is 20:26:10 so why don't it report that error instead? 20:26:22 -!- olsner has joined. 20:26:24 tango.text.Regex privately imports tango.core.Array 20:26:42 this should mean that trying to call regex.find would fail since there is no find 20:27:05 but due to the private import and the age-old bug, which is that fully qualifying names like that ("regex.find" as opposed to just "find") bypasses private imports, it tries to call tango.core.Array.find 20:27:11 and, of course, fails since the param types don't match 20:27:21 *sigh* I HATE this bug 20:27:34 reported it myself, about 20 months ago 20:27:40 -!- Corun has joined. 20:28:00 ah well, so what I need to do is figure out the right way of doing regex matching with the new tango.text.Regex 20:30:11 here we go 20:30:46 AnMaster: there's a function called 'help' in ccbi.d 20:30:54 yes? 20:30:56 replace its definition with the following 20:30:59 static bool help(char[] s) { return (regex.Regex("^(--?|/)([?]|h(e?lp)?)$", "i").test(s)); } 20:31:19 aaaagh, no don't 20:31:20 darn 20:31:26 it compiles, but doesn't work :-P 20:31:34 ok *waits* 20:31:49 * AnMaster is trying to get the darn k to work 20:31:59 Deewiant, ccbi is "gpl 2 or later" right? 20:32:21 I think it's BSD actually 20:32:29 ah, can still use it 20:32:33 my project is gpl3 20:32:34 :) 20:32:45 I just need to read your code to understand how k should work 20:33:06 heh 20:33:28 the bit about moving if executing k did move it is complex 20:33:36 yes, it is 20:33:45 scope (exit) 20:33:45 and that's the main reason why I didn't implement nested k 20:33:45 if (ip.x == x && ip.y == y && ip.dx == dx && ip.dy == dy) 20:33:45 ip.move(); 20:33:47 wtf is that 20:34:03 Deewiant, mine will reflect on nested k, and print a warning 20:34:22 (with warnings enabled that is) 20:34:50 mine just does something random :-) 20:35:22 I try to make all undefined cases sane and also clean up the standard at the same time 20:35:28 AnMaster: I pastebinned the nested k stuff last time, so you can have a look-see there too 20:35:29 still waiting for answer on that though 20:35:44 Deewiant, yes I did, and your code really makes it much clearer 20:35:52 and I'm not going to do nested k 20:36:33 AnMaster: if you reflect on nested k, wouldn't it be possible to form an infinite loop by jumping into the middle of three ks? 20:36:34 that scope(exit) stuff is why it's tricky to get stuff like 4k] right as well 20:36:36 * AnMaster notes all instructions apart from k are inlined into the case blocks for the instructions in ExecuteInstruction function 20:36:48 ais523, gaaa! 20:37:13 ais523, then it's a problem of the programmer IMO 20:37:13 not that 111#kkk is particularly useful, anyway 20:37:15 AnMaster: okay, it seems that the fact it doesn't work is a problem on my end (not using 0.99.5), try what I said earlier 20:37:42 ais523: at that point it's prudent to ask "what did you expect?" :-) 20:37:47 ccbi/stdlib.d:238: function ccbi.stdlib.RawCoutFilter!(false).RawCoutFilter.write of type ulong(void[] src) overrides but is not covariant with tango.io.Conduit.OutputFilter.write of type uint(void[] src) 20:37:47 ccbi/stdlib.d:238: function ccbi.stdlib.RawCoutFilter!(false).RawCoutFilter.write function write does not override any 20:37:47 ccbi/stdlib.d:386: template instance ccbi.stdlib.RawCoutFilter!(false) error instantiating 20:37:51 I get that now 20:38:04 O_o 20:38:09 dammit 20:38:15 Deewiant, what does that mean 20:38:21 * AnMaster is a C programmer! 20:38:35 AnMaster: my function returns ulong while the library function returns uint or vice versa 20:38:55 or no, incorrect 20:39:01 this is due to the fact that you're on x86_64 20:39:03 sec 20:39:11 Deewiant, indeed I am :) 20:39:28 Deewiant, don't you have some intptr_t or such for your pointers? :P 20:39:40 so you can always get the same type as standard libraries 20:39:51 -!- fizzie has quit (Read error: 60 (Operation timed out)). 20:39:54 AnMaster: I'm using size_t 20:39:59 AnMaster: but it appears the code uses uint :-P 20:40:05 hah 20:40:06 I just assumed it would be size_t 20:40:17 AnMaster: just change the return type of write from size_t to uint 20:40:25 Deewiant, where should I do so? 20:40:44 AnMaster: ccbi/stdlib.d:238 as it says :-) 20:40:46 Deewiant, btw rebuild failed to build until I did: ln -s . ccbi 20:40:56 just FYI 20:41:05 AnMaster: yeah, because I'm an idiot and packaged the code under ccbi_src directory instead of ccbi 20:41:10 AnMaster: I noticed that myself :-) 20:41:55 oh god! 20:42:06 obj/ccbi.ccbi.o: In function `_Dmain': 20:42:06 ccbi.d:(.text+0x711): undefined reference to `_D5tango4core9Exception24IllegalArgumentException7__ClassZ' 20:42:06 ccbi.d:(.text+0x72c): undefined reference to `_D5tango4core9Exception24IllegalArgumentException5_ctorMFAaZC5tango4core9Exception24IllegalArgumentException' 20:42:10 LOTS of things like that 20:42:12 O_o 20:42:15 maybe 2-3 screens 20:42:34 are you using rebuild? 20:42:37 I am 20:42:43 AnMaster: are you recursing into the source directories, and linking tango? 20:42:45 from dsss-0.75 20:42:51 ais523, ? 20:42:59 WTF? I click off of a D channel, and find D talk. 20:43:00 I had that sort of error when I built, due to only linking files in the main src directory 20:43:03 but not its subdirs 20:43:03 and it outputs a six-line command line when it tries to build? 20:43:07 GregorR: :-) 20:43:09 I installed tango following http://dsource.org/projects/tango/wiki/UnixInstallGdc 20:43:12 ais523, ^ 20:43:49 Deewiant, err? 20:44:01 now it says: ccbi.d(19): module instructions cannot read file 'ccbi/instructions.d' 20:44:02 instead 20:44:03 wtf 20:44:14 AnMaster: i.e. a huge "gcc tango/core/Exception.d" etc. 20:44:14 oh wait it removed the symlink 20:44:17 that was needed 20:44:21 for it to build 20:44:28 * AnMaster renames source dir instead 20:44:51 AnMaster: did you see the "Troubleshooting" section on that page? 20:44:56 May I ask: Since when do so many people in #esoteric use D? 20:45:05 GregorR: only I do, and people can't get stuff to compile :-P 20:45:07 GregorR: it's the language in which CCBI was written 20:45:10 Deewiant, aha 20:45:24 * GregorR strokes his nonexistent beard. 20:45:29 * GregorR then goes to eat lunch :P 20:45:36 GregorR is the D guru 20:45:37 GregorR: tango + GDC 0.24 isn't a good combination 20:45:45 /usr/bin/gdmd 20:45:45 /usr/bin/x86_64-pc-linux-gnu-gdmd 20:45:45 /usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2/gdmd 20:45:45 /usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2/x86_64-pc-linux-gnu-gdmd 20:45:46 what one? 20:45:48 ask him !! 20:46:03 /usr/bin/gdmd is some gentoo specific wrapper 20:46:12 to select version of gcc 20:46:20 AnMaster: probably the third but I'd check all to be sure 20:46:35 ah a perl script 20:47:40 -!- oklofok has changed nick to oklopol. 20:48:40 err 20:48:48 now it fails to build 20:48:50 new tango that is 20:49:17 * AnMaster tries clean sources 20:49:19 heh 20:49:44 if that also fails I guess my gdc install got borked because of tango 20:49:59 and I'm not going to recompile gcc and gdc 20:50:05 takes too long 20:50:16 shouldn't be necessary 20:50:32 the binaries are the same, after all 20:51:35 nop just fails still 20:51:42 ar -qsv libtango-cc-tango.a core/BitManip.o core/Exception.o core/Memory.o core/Runtime.o core/Thread.o core/ThreadASM.o stdc/wrap.o stdc/posix/pthread_darwin.o 20:51:42 ar: creating libtango-cc-tango.a 20:51:42 ar: core/BitManip.o: No such file or directory 20:51:42 gmake[1]: *** [libtango-cc-tango.a] Error 1 20:51:43 how does it fail 20:51:50 in that way ^ 20:51:55 odd 20:52:03 -!- oerjan has joined. 20:52:22 look, it replaced libgphobos.a it seems 20:52:25 so I blame tango for it 20:52:48 it didn't even create a backup 20:52:48 AnMaster: you can always compile lib/common/core/BitManip.d yourself 20:52:55 Deewiant, how? 20:53:17 AnMaster: "gdmd -c lib/common/core/BitManip.d" or whatever :-) 20:53:57 but it cleans it out on a new build 20:54:08 make it not clean it out 20:55:33 AnMaster: tell you what, see if http://iki.fi/deewiant/ccbi works for you 20:56:24 it can execute yes 20:56:34 $ ./ccbi --help 20:56:34 tango.core.Exception.ArrayBoundsException@/u/opi/48/mniemenm/bin/../opt/dmd/import/tango/core/Array.d(2131): Array index out of bounds 20:56:35 hah 20:56:42 oh yeah, right 20:56:47 that's because I don't have 0.99.5 20:56:52 and the trunk I do have is buggy :-P 20:56:54 so it won't work for me then? 20:57:08 well, I guess not since it dies if it gets command line arguments :-) 20:57:12 I'll get 0.99.5 and build a new one 20:57:16 $ ./ccbi ~/bashfunge/trunk/mycology/mycology.b98 20:57:17 tango.core.Exception.ArrayBoundsException@/u/opi/48/mniemenm/bin/../opt/dmd/import/tango/core/Array.d(2131): Array index out of bounds 20:57:21 very nice 20:57:23 exactly :-) 21:02:07 yay k works as it should now I just got the f93 space issue (will fix later when I restructure some things) and now: 21:02:07 Unknown instruction at x=11 y=49: ' (39) 21:02:07 BAD: ' reflects 21:02:07 * AnMaster implements 21:02:29 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 21:03:21 -!- sebbu2 has joined. 21:05:37 * AnMaster implements x 21:06:40 AnMaster: what lang are you writing the implementation in? 21:06:55 ais523, C, using several C99 features 21:06:59 BAD: wraparound with non-cardinal delta doesn't work 21:07:03 * AnMaster ponders that one 21:07:20 it's hard to solve 21:07:49 AnMaster: not really, you just reverse the direction of the pointer, not executing any commands en route, and reverse it again when you hit the edge of the playfield a second time 21:08:25 ais523, yes, but that is slow and painful, *me is caching edges for each column and row* 21:08:29 -!- SimonRC has quit (Read error: 110 (Connection timed out)). 21:08:46 my INTERCAL debugger, for instance, implements the 'set next instruction' command by putting a loop around the program, preventing any commands executing until the right point is reached, and running the program until it reaches the right point 21:08:48 and then there is the stack stack thingy 21:09:17 ais523, err what? 21:09:31 it's the whole ABSTAIN thing 21:09:40 assume I don't know intercal 21:09:43 you just need a way to make things tickless (if threading), and to prevent commands running 21:09:51 so you have a flag in your interp which makes all commands into NOPs 21:10:01 ais523, yes I got a mode enum 21:10:10 then, every time you hit the playfield edge, you toggle the flag and change the IP direction 21:10:15 like ipmCODE ipmSTRING and so on 21:10:28 ais523, yes I know that version 21:10:30 right 21:10:44 but still... 21:11:24 you only need to do it for non-cardinal directions 21:11:33 how on earth to find if this is the edge or not when traveling non-cardinal! 21:11:41 I can't see how I could find it 21:11:49 AnMaster: try again? 21:11:58 AnMaster: err, referring to CCBI of course :-P 21:12:01 Deewiant, wgetting same binary? 21:12:04 yeah 21:12:12 appears to work on my end, at least :-) 21:12:52 Deewiant, also where does one find docs on the official catseye extensions 21:13:05 reverse engineering your code = not fun 21:13:07 AnMaster: I believe I linked there last time 21:13:16 Deewiant, yes the registry 21:13:19 AnMaster: same place as the funge-98 spec, move one directory up 21:13:22 but that is dead and broken 21:13:36 AnMaster: as in, http://catseye.tc/projects/funge98/ 21:13:41 aha 21:13:42 the library/*.html 21:14:20 -!- SimonRC has joined. 21:17:02 -!- sebbu has quit (No route to host). 21:17:03 -!- sebbu2 has changed nick to sebbu. 21:17:40 Deewiant, if you got a matrix that you can acccess using x and y, how would you find edge or not when traveling non-cardinal? 21:18:06 store some sort of bounding box and reflect only when you hit it? 21:18:14 err not reflect, but wrap I mean 21:18:38 in 2D, if you know for certain you're going non-cardinal, then technically speaking you only need to store the top and bottom 21:18:49 because anything that goes off the left or right edge will hit the top or bottom eventually 21:19:01 unless it goes directly left or right 21:19:04 AnMaster: what I do is keep track of min/max X and Y 21:19:26 AnMaster: which isn't 100% accurate (c.f. the mycology tests on wrap at edge of file/line) but works 21:19:48 Deewiant, ah, so a kind of bounding box then 21:19:54 AnMaster: check against each edge in turn and drop it down at the one it leaves first, i think 21:19:55 in 3D 21:19:56 2d* 21:20:01 aye 21:20:04 so really bounding rect 21:20:08 there are other ways, too 21:20:21 yeah 21:20:23 I think GLfunge98 did something cool, but I can't remember for sure 21:20:24 right, can't do that though until I get the final fungespace thing to work 21:20:34 AnMaster: the CCBI bin works? 21:20:41 such as having some 'uninitialised' value on the playfield that magically turns into 32 when you try to read it 21:20:44 Deewiant, it passes mycology at least 21:20:51 AnMaster: alright, good enough :-) 21:21:12 Deewiant, but it isn't 64-bit :( 21:21:23 don't have a 64-bit machine, sorry 21:21:30 compile it yourself if that's a problem ;-) 21:21:46 Deewiant, you know the problems that cause 21:22:06 AnMaster: AFAIK GDC's 64-bit support is a bit flaky anyway 21:22:30 anyway I'll fix my fungespace later, I got a abstraction anyway, so it is easy to replace get/set/wrap/loadfile with something else 21:23:02 because current is just extended 800x2500 array, until I find some sparse matrix that work XD 21:23:38 (oh and setting -1,-1 would still work, it wraps to positive value, so even if you jumped there, mycology would never know) 21:23:48 (but it breaks cardinal wrap) 21:24:56 Deewiant, err your y is not correct it seems, it leaves out some utf8 from env variables? 21:25:11 AnMaster: how's that 21:25:28 the envvar support on linux is fairly untested 21:25:29 LC_ALL=sv_SE.UTF8 one env variable contains a ö 21:25:44 AnMaster: pipe it to a file and see what comes out at that pos 21:25:46 Deewiant, you don't run a real OS normally? 21:25:52 * AnMaster pipes 21:25:56 AnMaster: no, I like my computer games :-) 21:26:14 Deewiant, no ö 21:26:23 just empty in that place 21:26:27 AnMaster: just nothing? like "aäb" becomes "ab"? 21:26:29 hrm 21:26:32 * AnMaster notes CCBI is NOT conforming :P 21:26:35 * AnMaster runs 21:26:38 :-) 21:28:26 Deewiant, if I make a new standard (that is I'm still waiting for answer on my mail about license) I'm going to define all the undefs 21:28:47 possibly in some cases to other values than what ccbi does, (though I will keep those I find sane) 21:29:23 hmm... does anyone here know of a command (preferably POSIX, or something else reasonably available on Linux) that looks for two identical lines in a file, but doesn't need to read in the whole file before it can check? 21:29:48 ais523, you mean uniq -d ? 21:29:54 that style of thing? 21:29:58 AnMaster: no, the lines needn't be consecutive 21:30:09 I'm trying to verify that my infinite loop program is actually working 21:30:09 ais523, ah like sort -n | uniq -d ? 21:30:18 AnMaster: yes 21:30:26 ais523, try seen trick in awk 21:30:27 :O 21:30:29 :P* 21:30:46 awk '!seen[$0]++' # Remove second and subsequent instances of each input line, without having to sort them first. 21:30:55 adapt to your case 21:31:00 I assume you know awk 21:31:08 AnMaster: actually I don't 21:31:21 ais523, I don't very well either, just the basics 21:31:25 I know sed and perl, though 21:31:33 don't know those 21:31:40 but I'm sure you could do it in them 21:31:51 heck, you could even do it in befunge if you wanted, it is turing complete 21:32:07 * ais523 runs that awk script through a2p 21:32:15 although I could guess what it did anyway 21:32:35 a2p? 21:32:48 awk to perl compiler 21:32:58 a useful thing to have around if you don't know awk 21:33:02 because it compiles almost literally 21:33:09 without making too much of a mess of the code 21:33:21 AnMaster: export A=ä; and then running Mycology works just fine here 21:33:31 Deewiant, interesting 21:33:49 -!- slereah_ has joined. 21:34:06 yes, my infinite loop works! 21:34:20 #!/usr/bin/env underlambda 21:34:20 (((x)\x)(((((z)y(z)x^)\z^)\y^)\x^)((y)(y)z^)\y\z)((x)x^)\x^| 21:34:21 AnMaster: the code for getting the env vars is quite pointer-mathy and should be understandable for a C coder like you, if you see the problem let me know ;-) 21:34:37 Deewiant, if I have time that is 21:34:41 of course, it's possible to write that much more simply as (:^):^, but I wanted to do it Unlambda-style 21:34:51 AnMaster: yes, of course 21:35:03 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 21:35:13 (what I've written there is almost literally ```sii``sii, except that to save space I lambdad ``sii in `xx) 21:35:20 Deewiant, hm I wonder, a sandbox mode, that doesn't allow file, and restricts some extensions partly, would that be nice? 21:35:32 AnMaster: definitely 21:35:34 AnMaster: for CCBI? 21:36:04 Deewiant, for funge08 as a flag it can check with y to see if the interpreter is in that mode 21:36:05 someday I have a plan of running an esogolfing site that sandboxes by restricting the capability of interps and compilers to be able to do evil things 21:36:06 bleh, grammer 21:36:10 grammar* 21:36:17 AnMaster: well, y already says whether files are supported 21:36:26 AnMaster: so if the interpreter is in that mode it can just say so in y 21:36:28 Deewiant, some extensions allow IO right? 21:36:44 not all interps have to support all fingerprints anyway 21:36:45 AnMaster: yes, and you can tell that they don't work by the fact that you try and load them and it fails ;-) 21:36:46 like say, that drawing thing 21:36:59 TURT, DIRF, FILE, some others maybe, yes. 21:37:09 Deewiant, but some may have useful stuff that does work in a sandbox but other parts that don't? 21:37:30 AnMaster: none of those do, and I think it's poor style to make a fingerprint which does 21:37:38 Deewiant, hm ok 21:37:48 AnMaster: of course "useful" is relative :-P 21:38:00 AnMaster: but if the output doesn't work, the corresponding instruction just reflects 21:38:05 so I don't think it's that bad 21:38:18 a conforming script should just say "output failed" at that point and not die 21:38:30 Deewiant, btw, mycology did some very interesting thing when I had an error in turn right code that meant dy changed but dx didn't 21:38:37 or maybe it was turn left 21:38:41 anyway, one of them 21:38:47 AnMaster: I can't test for every possible bug 21:38:53 Deewiant, indeed not hehe 21:39:27 AnMaster: if your ] is the equivalent of 0"/ fr- mr"x it's not my fault that Mycology runs a ] expecting it to work .-P 21:39:40 x or =? 21:39:44 ais523: darn, good point 21:39:53 but either way, really :-P 21:40:12 that'd set the IP's delta to (109,114) and leave some crap on the stack 21:40:18 I can't test for that, either :-P 21:40:31 well, you can, because they're pretty large numbers, but you probably shouldn't 21:40:31 Deewiant, how can you write strings backwards in your head 21:40:37 I still don't get that 21:40:50 I can only give as much output as possible and then the developer can see what did work and look at the src to see what didn't 21:40:52 ysae s'ti 21:40:55 AnMaster: 1 year of writing Befunge :-D 21:41:02 hahah 21:41:08 ais523, :( 21:41:26 hmm... 21:41:28 Deewiant, if mycology was easier to read :/ 21:41:30 but no, I usually had a program reverse long strings for me 21:41:38 retsaMnA ,:( 21:41:52 d-: '325sÄ±É 21:41:55 haha that actually makes sense in Swedish backwards 21:41:56 ais523, ^ 21:42:04 retsam = teasing 21:42:18 and you are doing that! 21:42:30 dÇÊŽ 21:42:49 ok now you are just crasy, using uncide to write upside down 21:42:50 ... 21:42:52 Deewiant: are you copy-pasting those upside-down letters from a character map, or do you happen to know how to type them offhand? 21:42:55 so it's not the same as retvis? 21:43:11 AnMaster: suggestion if you haven't done so already - implement a "trace mode" (or full-blown debugging) 21:43:14 Deewiant, btw this test suite I use to test some basic things (it is longer than this): http://rafb.net/p/uCth5W27.html 21:43:18 much easier to read 21:43:26 ais523: lɯʇɥ˙dılÉŸ/ɯoɔ˙pÉÉŸÊŒÇɹ˙ÊÊÊ//:dʇʇɥ 21:43:42 pÉÉŸÊŒÇɹ? 21:43:50 my font fails on that 21:43:53 partly 21:43:55 AnMaster: you put the question mark at the wrong end of that word 21:43:59 it's revfad upside-down 21:44:05 AnMaster: yeah, that was my mistake really 21:44:14 AnMaster: at the start I didn't expect it to become nearly as long as it did 21:44:20 (my font managed it fine) 21:44:31 AnMaster: the Befunge-93 area had to be squashed since it has to fit in 80x25 21:44:34 Deewiant, heh, yes mine just does 38 basic tests 21:44:40 AnMaster: after that I figured maybe 80x200 would fit the whole thing 21:44:45 Deewiant, hah 21:44:52 or you could have used several files 21:44:55 AnMaster: rather 200x25 21:45:02 I decided against that early on 21:45:05 hmm... now we need a reversible esolang in which writing a string upside-down reverses what a function does 21:45:08 Deewiant, why? 21:45:17 because I wanted it to be easy to use 21:45:26 that way you don't need all instructions to be self-inverse, but still have symmetry 21:45:27 "foo mycology.b98" and bam, you know whether your interpreter works or not 21:45:48 fungus is much more annoying than that - it tries to load parts of itself using y and i 21:45:49 incidentally, the upside-down i and l are wrong 21:46:17 Deewiant: at least it doesn't try to load parts of itself using compression and p 21:46:21 Deewiant, interesting 21:46:22 so if y and/or i aren't supported properly you get all kinds of problems 21:46:34 Deewiant, but, so does mycology, it tries to load the randomness thing 21:46:40 yeah, but that's late 21:46:46 and it should fail nicely 21:46:51 it does 21:47:01 and it continues despite that 21:47:02 Deewiant, where do you find fungus? 21:47:09 probably linked from my page 21:47:13 J^4's site 21:47:20 J^4? 21:47:27 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/fungus.php 21:47:39 guy who made !Befunge 21:47:41 wow at that domain name 21:47:53 yeah, he's proud of it, a domain name which is valid befunge code :-) 21:48:04 hehehe 21:48:07 Deewiant: aren't all strings valid Befunge code? 21:48:15 look, I bet there isn't any fight over that domain 21:48:44 ais523: ...and does something meaningful and doesn't loop infinitely 21:48:57 OK, that's harder 21:49:25 although I suppose if you run sed s/at/@/g you'll get many non-infinite-looping domain names 21:49:43 but I guess the idea is that it spells out some code, not that it is code in itself :-) 21:56:40 wow, there's a Befunge-in-INTERCAL there 21:56:43 * ais523 tests it 21:56:57 if it works, I'm going to ask for permission to add it to the C-INTERCAL distribution 21:57:24 it hit an error when I first tried to run it, though 22:00:33 Deewiant: mycology is unfortunately more than 80 chars wide 22:00:45 is there an 80x25 version for use with Befunge-93 interpreters? 22:04:42 ais523, there is 22:04:56 ais523, the first 80x25 chars in mycology is 93 testsuite 22:05:01 so just discard the rest 22:05:03 yes, I just realised that 22:05:05 like a interpreter should 22:05:17 that's a nonconformance in the INTERCAL interp already, then 22:05:36 indeed 22:06:58 * oerjan is suddenly surprised there isn't a befunge debugger named penicillin 22:07:41 oerjan, heh? most times you can output such in interpreters 22:07:42 or something like that 22:07:46 like a trace mode 22:07:48 or whatever 22:08:10 i mean i am surprised no one has used that name... 22:09:29 oerjan: I don't see anything obvious about it 22:09:56 in other news, interfunge passes Mycology-93 22:10:10 penicillin is made from a fungus... 22:11:44 ais523, interfunge? 22:11:54 ah intercal fungus 22:12:00 AnMaster: it seems J^4 wrote a Befunge interp in INTERCAL 22:12:01 ah well 22:12:10 ais523, ok that's insane 22:12:23 next you are going to tell me someone did that in brainfuck 22:12:26 oerjan wrote an Unlambda interp in INTERCAL, though, so I'm not sure which is more insane 22:12:35 and I'm just waiting for a befunge98 interpreter in befunge98 22:12:38 -_- 22:12:39 and AnMaster: brainfuck is marginally easier to program in than INTERCAL, in most cases 22:12:51 ais523, ah, that's amazing 22:12:59 except for those cases where INTERCAL's more advanced features come in useful 22:13:09 ais523, PLEASE COME FROM? 22:13:10 ;P 22:13:23 INTERCAL's probably better for really complex programs, but writing such in esolangs is normally inadvisable anyway 22:13:26 (no idea what that would do) 22:13:36 AnMaster: threading and backtracking can be useful 22:13:47 AnMaster: PLEASE COME FROM by itself is a syntax error 22:13:50 ais523, isn't there some threaded brainfuck versions? 22:14:06 ais523, look I don't know intercal! I just know a few words 22:14:10 although there are expressions starting with ?, so it needn't be a syntax error depending on what's on the next line 22:14:16 and yes, there's Brainfork 22:14:23 but INTERCAL's threading model is more elegant IMO 22:14:41 ais523, look, anything is more elegant than threading in esoteric languages IMO 22:14:52 * AnMaster points to nptl on linux 22:14:59 you can't get much more elegant than aiming two COME FROMs at the same line 22:15:12 ais523, what would that do? 22:15:23 AnMaster: multithread and run both 22:15:28 oh god 22:15:47 what did you expect it to do? 22:17:34 no clue 22:17:36 error out maybe 22:18:19 it does that if multithreading is disabled 22:20:14 BTW, the backtracking model is more general than Prolog's 22:39:57 I don't know prolog either 22:39:58 tell me 22:40:02 what is backtracking? 22:40:39 do you know what a continuation is? 22:40:47 if you do, it's slightly easier to explain 22:41:13 ais523, isn't that something like passing some code and it's context around? 22:41:24 the context itself is the continuation 22:41:32 you were describing Continuation Passing Style 22:41:33 note: I'm an imperative and object orientated guy! 22:41:46 backtracking is an imperativish version 22:41:56 mhm 22:42:02 go on, I'll join in when I can 22:42:10 basically, at a point in the program, you can decide to MAYBE perform an action (with MAYBE being an INTERCAL keyword; other languages have other ways to specify it) 22:42:21 so for instance, you could MAYBE assign a value to a variable 22:42:33 right, no problem if (random() %1) 22:42:34 :) 22:42:47 should likley be uniform or close enough 22:42:51 the assignment is done, but the software remembers the state when it was done 22:43:14 and at any time later in the program, you can GO BACK to before the assignment was done, and run the code instead in an alternate version where the assignment wasn't done 22:43:31 ais523, I see, useful for debugging, but not much else? 22:43:33 or you can GO AHEAD and forget the saved state just before the assignment 22:43:42 AnMaster: it's useful not just for debugging 22:43:48 for instance if you want to implement regexps 22:43:53 or a parser 22:44:04 yes, I'd use pcre, or for parser, bison/yacc/whatever 22:44:11 for instance, you might not be sure what a particular symbol means without reading more context 22:44:20 lex I mean probably 22:44:25 or whether a particular bit of a regexp matches here or later 22:44:36 ais523, ah, evil lookaheads :P 22:44:37 for instance, consider /ab/ matching "cdaefabg" 22:44:50 yep it does 22:44:59 instead of looking-ahead, you can MAYBE match the a of /ab/ to the first a in the string 22:45:18 ais523, but that is likely to be slower? 22:45:20 and when you find the b doesn't match, you can GO BACK and match the a to the second a instead 22:45:29 and backtracking is infamous for being slow 22:45:43 then it's pointless *true C programmer* 22:45:45 and also producing useless debug info in the case that none of the options match 22:46:00 but sometimes it's the easiest option 22:46:07 ais523, it isn't the best still 22:46:10 (in that way it's sort of like recursion; slow but sometimes easiest) 22:46:42 ais523, I still wouldn't do recursion if I could avoid it! 22:47:16 in fact, while gcc think my function that does looping will recurse, and therefore won't inline it, it won't recurse 22:47:27 because I won't excute looped k instructions in funge 22:47:40 but I can hardly blame gcc for not being smart enough 22:48:18 for an example, you can look at http://pastebin.ca/937153 22:48:30 it's permute.i from the C-INTERCAL examples, and its documentation 22:49:41 it's actually pretty easy to read for an INTERCAL program, which is 'not very' 22:49:45 horrible 22:50:20 look, at least befunge got some kind of elegance! 22:53:42 INTERCAL has its own kind of elegance 22:53:51 there's a translation into a weird C/INTERCAL/Prolog mix lower down the page 22:54:05 yes and that is equally hard to read 22:54:11 I don't know prolog 22:54:18 I don't know intercal 22:54:22 I DO know C 22:54:43 the program, as written, is basically impossible to express in C 22:54:53 (even though I compile into C) 22:55:01 you have to write it really differently 22:55:08 * ais523 goes to paste the C it compiles into 22:55:56 I guess a lot of goto could do it 22:56:18 http://pastebin.ca/937166 22:56:22 AnMaster: worse. setjmp 22:56:30 eww 22:56:40 and you have to save all the variables involved, too 22:56:44 ick_? 22:56:55 AnMaster: it's the INTERCAL compiler's name 22:57:03 I understand it 22:57:08 ick is how I feel over that code 22:57:08 the ick_ is the name-mangle prefix it uses so as not to clash with other people's code 22:57:19 that's only half of it 22:57:36 because you have to link in libickmt too, which contains most of the heavy work for the backtracking 22:57:42 wait a sec, how does rand differ from random 22:57:49 I see it use rand function 22:57:54 AnMaster: it's standard C89, rather than POSIX 22:58:10 CONFORMING TO 22:58:10 The functions rand() and srand() conform to SVr4, 4.3BSD, C89, C99, POSIX.1-2001. The function rand_r() is from POSIX.1-2001. 22:58:12 and although there's no reason for it in either standard, random tends to be more random 22:58:16 ah ok 22:58:28 ais523, ah that's good, I use random() 22:58:48 weird man srand works, but man 3 rand gives me an openssl man page 22:58:49 stupid 22:59:58 ais523, what about drand48 then? 23:00:13 are they more or less random? 23:00:14 no idea 23:00:16 than random() 23:00:21 http://www.muppetlabs.com/~breadbox/intercal-man/blotch.gif 23:00:25 What's this symbol? 23:00:33 slereah_: it doesn't actually mean anything 23:00:43 it was listed in the original spec as being available for future expansion 23:00:59 slereah_, inkblot? 23:01:06 But does it exist in an actual character set? 23:01:14 you get it by overprinting a whole load of punctuation marks 23:01:24 Oh. 23:01:25 I think it's [^H]^H-^H# but I'm not sure 23:01:35 Punching the fuck out of the punch card? 23:01:51 hey, at least two INTERCAL-72 operators were overpunches 23:02:05 but they've since been added to Unicode 23:02:05 That's why I ask! 23:02:11 ais523, oh god 23:02:14 wait a second 23:02:15 Even the rabbit one? 23:02:21 no, not the rabbit 23:02:32 intercal used PUNCH CARDS? 23:02:36 the bookworm is the mathematical for-all symbol 23:02:48 and the change symbol is a cent sign 23:02:49 AnMaster: yes 23:02:52 someone was stupid enough to do an esoteric language on punch cards!? 23:02:54 -_- 23:02:55 it dates from the days of EBCDIC 23:03:02 it was invented in 1972, after all 23:03:03 that's just, fucked up 23:03:04 Well, it was all that was available 23:03:18 slereah_, what about MULTICS thing? 23:03:22 CLC-INTERCAL still accepts the "Hollerith" input format 23:03:42 I tried to find some punch card computer or something, but there's only one company that sells them, and it isn't cheap :o 23:03:48 MULTICS? 23:03:54 or whatever 23:03:59 before unix 23:04:17 http://en.wikipedia.org/wiki/Multics 23:04:19 that one 23:04:19 I'm not old enough, AnMaster 23:04:28 slereah_, nor am I 23:04:39 I'm also not that computer savvy 23:04:45 ah, I'm that 23:05:05 AnMaster: if you feel insane enough, read http://filebin.ca/vjsonz/unravel.c 23:05:15 The internet really let me down when it comes to punch cards. 23:05:21 bah bad mimetype 23:05:37 it's the multithreading/backtracking part of C-INTERCAL's runtime library 23:05:43 oh god 23:05:49 that interacts with the compiled-from-INTERCAL program I pasted recently 23:06:23 look you can do that *without setjmp 23:06:29 you just need some goto 23:06:35 yes, in theory you can do anything without setjmp 23:06:44 in this case, though, the setjmp jumps out of the library and into the user program 23:06:46 ais523, and even it's easy here now 23:07:00 in most special cases it's easy 23:07:11 but have you even seen what the general case looks like? It's horrific 23:08:02 I don't want to read more of that file 23:08:07 it's a well commented mess 23:08:09 horrible 23:08:38 any budding open source programmer is invited to refactor if they feel they're up to the challenge 23:08:58 no that's way below me 23:09:11 I don't want to mess with INTERCAL ever in compiled form 23:09:52 unravel.c manages to safely contain most of the really gnarly stuff, anyway 23:09:59 Deewiant, there? 23:10:03 the rest of the compiler is completely sane by comparison 23:10:14 Deewiant, I find my interpreter faster up to the point where it fails mycology 23:10:17 :P 23:10:47 (incidentally, anyone reading this in the logs, if the filebin link has gone you can extract the file from the tarball at http://intercal.freeshell.org/download) 23:11:27 AnMaster: My client flags Deewiant as being away, so you're unlikely to get an answer immediately 23:11:34 I know 23:11:37 but then it flags you as beeing away too 23:11:44 ais523, I should be 23:11:48 but I'm not 23:11:53 * AnMaster really needs to sleep 23:13:24 Deewiant, huh, think I found a bug in CCBI on returning from the request 18 of y instruction 23:13:30 -!- Corun has quit (brown.freenode.net irc.freenode.net). 23:13:32 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 23:13:53 -!- Corun has joined. 23:13:53 -!- GregorR has joined. 23:14:18 Deewiant, n29*y <-- shouldn't that return 1? because there is one item on the single stack, the top stack 23:17:00 Deewiant, further, ccbi gets into an infinite loop or something on mycouser if I do this: 23:17:01 Assuming Befunge-98 instructions work... 23:17:02 Which base to read input in? 3 23:17:02 Selected base 3 23:17:02 Input a number in that base: 47 23:17:09 hehe 23:17:40 Which base to read input in? 473 23:17:40 Selected base 473 23:17:40 Input a number in that base: 23:17:45 didn't let me input anything :( 23:21:19 wow: http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/tquine.php 23:21:30 that's certainly a new twist on the notion of a quine 23:22:11 -!- RedDak has joined. 23:22:21 Awesome 23:23:00 wonderful domain name too 23:23:08 ais523, indeed 23:25:49 * ais523 has to go, anyway 23:25:51 -!- ais523 has quit ("Bye!"). 23:26:08 Found this in the vintage computer section : http://cgi.ebay.com/chinese-ABACUS-WITH-LEATHER-DRAGON-PHOENIX-WOOD_W0QQitemZ180222253443QQihZ008QQcategoryZ1247QQssPageNameZWDVWQQrdZ1QQcmdZViewItem 23:27:32 heh, "vintage computer" 23:27:50 Item location:??, ??, China 23:29:05 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php <-- heh 23:29:31 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php <-- befunge interpreter in unefunge :( 23:30:13 -!- oerjan has quit ("Good night"). 23:55:49 -!- jix has quit ("CommandQ"). 2008-03-11: 00:05:18 -!- RedDak has quit (Remote closed the connection). 00:05:27 damn, the more i look at lisp, the better it seems 00:05:33 (lisp as in CL) 00:20:33 but i'm still pretty sure it sucks :) 00:27:04 -!- timotiis has quit ("leaving"). 00:31:38 -!- Tritonio_ has joined. 00:39:35 -!- sebbu has quit ("@+"). 00:40:46 -!- BMeph has joined. 01:24:14 -!- olsner has quit ("Leaving"). 01:35:41 -!- calamari has joined. 02:24:51 -!- CakeProphet has joined. 02:26:22 ...what's a good C reference? 02:26:38 like, not a tutorial, but something that has a lot of information I can look up quickly. 02:49:33 -!- Corun has quit (Read error: 110 (Connection timed out)). 03:02:57 -!- CakeProphet_ has joined. 03:19:22 -!- CakeProphet has quit (Read error: 110 (Connection timed out)). 03:31:01 -!- CakeProphet_ has quit ("haaaaaaaaaa"). 03:53:38 man 04:02:31 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 04:03:08 -!- GregorR has joined. 04:15:23 * pikhq declares some of his music 'hell for basses'. 04:15:37 The *bass part* is written in the lower end of the treble clef. :( 05:37:26 -!- immibis has joined. 05:38:04 -!- immibis has left (?). 06:18:00 no bassist is going to like you for that. 06:19:32 lament: It's music that I have to sing. 06:19:37 I'm a bass. 06:19:41 I fucking hate it. 06:19:47 oh, you're a bass. 06:19:55 * pikhq wants to be *below* the bass clef, thanks. 06:19:58 cut your balls off. 06:20:12 I'll just convince the tenors to sing my part. :p 06:59:01 -!- calamari has quit ("Leaving"). 07:14:24 -!- BMeph has quit ("calls it a night"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:01:26 -!- bsmntbombdood has quit. 08:15:21 pikhq: aaand notes please 09:00:04 -!- bsmntbombdood has joined. 09:27:19 -!- oerjan has joined. 10:11:06 stack stacks in funge is really complex 10:11:15 are* 10:26:16 they are? 10:27:21 pikhq: "your music", assumed you meant a composition of yours, but i now realize that might not be the case 10:27:44 if its not yours that way, i ofc don't care much for the score 10:28:13 although, i guess i still do a bit 10:37:47 guitar pro is one awesome program, it simply cannot play a song correct :D 10:44:20 -!- oklokok has joined. 10:44:36 used my morning well http://www.vjn.fi/oklopol/music/random/riff006.mid 10:45:02 WOAH 10:45:21 2 seconds in it's already /awesome/ 10:45:25 :D 10:45:27 well, thx 10:45:35 that's just the midi guitar, it' kinda sucky 10:45:38 *it's 10:46:04 It's the sort of similar to the sound as Ooze on megadrive 10:46:17 or Alien Solier 10:46:18 also, some parts i guess should have some synth, and some parts i haven't really thought through 10:46:47 because it's so fucking slow composing when you listen to it after every fucking note : P 10:47:55 that was good 10:47:58 faxathisia: i guess after that reaction i have to link you to some of my musics 10:48:52 http://www.mikseri.net/artists/?id=44508 <<< my old band 10:49:03 http://www.mikseri.net/artists/?id=62623 <<< my other current band 10:49:47 (the other one i don't have anything online for, and it's not really my band) 10:50:26 we have much better and weirder stuff nowadays, but haven't recorded yet 10:51:06 Syleily is not mine, and Wanna feel pain is only mine when the synth solo starts 10:51:20 which i play very badly, i used to suck quite bad 10:56:22 uhh, i sing like a horse 10:57:01 ...in case horses suck at that 10:57:08 not sure, never heard one sing 10:58:19 well, also http://www.vjn.fi/s/black.mp3 and http://www.vjn.fi/oklopol/music/etydes/all-as-midi.rar 10:58:30 listen to some of that if you have time 10:58:52 i can also upload you my hundreds of other gp songs if you want, but i think you're fine with those :P 10:59:06 what's gp? 10:59:09 guitar pro 10:59:35 usually do songs with that, because i tablatures are a lot nicer than the normal score notation 10:59:38 *-i 11:00:12 a matrix view is of course the best for composition, and i have some ascii notations i use, but i don't have any program that actually plays those, nowadays 11:00:31 should make one, just so lazy 11:05:15 actually i don't know what the *notation* is called, perhaps pikhq tells me 11:05:34 it's basically "note writing" in finnish 11:06:14 which is a quite idiotic, scores are only good for writing piano sheets, if that 11:06:23 * oklokok HATES. 11:06:39 -!- sebbu has joined. 11:11:08 i also have about a hundred riffs as a test of my newest notation, but you'd have to learn that 11:11:18 * oklokok counts 11:12:41 lol just 50 11:13:26 would be cool if i used even 50% of my time, i'd have enough stuff to fill the screen with links when someone comments my music :-) 11:13:43 unfortunately someone introduced me to the world of tv series 11:14:09 * oklokok kills 11:22:04 * oerjan verbs 11:39:14 oerjan: verb verbing you verbing motherverber 11:40:52 your noun! 11:41:38 verb pronoun. 11:42:57 Why can't pronoun all just verb adverb? 11:44:01 interjection exclamation mark i'm so adjective at pronoun 11:44:22 lol 11:45:53 AnMaster: no need to verb adjective. 11:46:07 s/adjective/adjective 11:46:56 to what? I can't figure out what you mean 11:47:32 oerjan: verb pronoun verb pronoun question mark 11:47:44 s/oerjan/nick :D 11:47:59 s/:D/smiley 11:48:01 * AnMaster goes to verb on his noun interpreter 11:48:10 s/s/*/*/substitution 11:48:16 AnMaster: that might be for the vest. 11:48:27 *best, actually 11:48:35 "vest"? A kind of clothing right? 11:48:41 yeah 11:48:45 ah best 11:49:11 verb verb stackstacks of befunge! 11:49:12 :( 11:49:26 what's adjective about them, really? 11:49:39 they are complex to implement 11:49:41 that's the problem 11:49:47 hmm, in bash? 11:49:49 in C 11:49:50 * oerjan calls a moratorium on generic grammar terms 11:49:53 hm 11:49:59 * AnMaster points to his cfunge 11:50:01 how are they complex to do in c? 11:50:09 can be either conformant funge, or C funge 11:50:11 you decide 11:50:21 anyway it will be conformant 11:50:28 you make a stack thingie, then make a stack of stacks. 11:50:33 that's it, really 11:50:48 oklokok, yep, but then there is the complexities of { and } instructions 11:50:52 begin stack and end stack 11:51:07 with transfer of items in order between stacks and what not 11:51:12 umm, their behavior ais imperatively described there 11:51:20 yep 11:51:21 you just do exactly what it says. 11:51:23 *is 11:51:25 and it isn't easy to implement 11:51:43 not the way I made the stack structure 11:52:04 using the variable sized structure to have an array of pointers to stacks at the end of the stack stack structure 11:52:06 make a function to move a certain amount of shit from the top of a stack to the top of another, and put a boolean flag there to indicate direction 11:52:06 a C99 feature 11:52:26 anyway I think I got it mostly now 11:52:32 begin stack that is 11:52:46 just need to do some magic to find storage offset 11:52:55 i don't know what that feature is, but i do know you don't have to use it, and it's trivial without it :P 11:55:31 nah, but it means one less pointer redirection 11:55:36 err whatever 11:56:34 well, if you care about stuff like that 11:56:36 i don't :D 12:00:08 whoa, circular dependencies in headers sucks 12:00:46 * AnMaster adds a incomplete type to get around it. 12:20:42 Real = { Orig -> { §int -> Orig; 12:20:43 §+ N -> Orig + (int N) } }; 12:20:43 ((real 7) + 4) + (1 + (real 3)) 12:20:48 works 12:20:50 yay 12:20:57 already owns java then 12:23:05 1 + n always calls int(n) 12:23:29 4 + 2.0 = 6, which might confuse some 12:25:51 oklokok, wtf are you doing? 12:27:47 Destroying mathematics as we know it 12:43:37 AnMaster: only bases up to 36 are supported, I think it reflects if you give it something like that 473 12:43:57 BAD: { transfers cells incorrectly 12:43:58 10 0 0 Stopping due to fear of corrupt stack stack 12:44:03 Deewiant, I can't find what I do wrong 12:44:51 I looked at how you do it, and I debugged output of stack before and after and it looks correct to me 12:44:54 make a test proggy with just that 123456{ snippet (or whatever Mycology uses) and see the diffs 12:45:06 maybe the stack stack is messed up 12:45:23 Deewiant, I can't read mycology, it's too dense :( 12:45:37 n29*y is meant to be 0 12:45:43 why should it be 1 12:46:01 ah, wait a minute 12:46:19 because isn't the value checked before y does any popping and pushing? 12:47:09 note that values 10-14 are vectors 12:47:19 so they're 2 cells each 12:47:22 yes but 29* = 18 12:47:24 not 14 12:47:40 yes, so it does y and then takes the 18th cell 12:47:48 but values 10-14 contain 10 cells in themselves 12:48:03 indeed and? 12:48:03 18. size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip) 12:48:04 Stack sizes are pushed as if they were measured before y began pushing elements onto 12:48:04 the stack. 12:48:12 that's not the 18th cell 12:48:14 there is just a single stack 12:48:27 Deewiant, ok that's stupid -_- 12:48:34 it's what the spec says 12:48:50 and that's how it has to work in order to work as a pick instruction :-) 12:49:16 Deewiant, but that breaks adding new pick entries in newer versions of the specs 12:49:17 err 12:49:21 new y entries 12:49:22 I mean 12:49:37 no it doesn't, if you add them at the end 12:49:58 if you add them at the beginning it'd break anyway 12:50:03 yes, you add them at the end indeed 12:50:10 but that breaks pick instruction 12:50:18 I mean, breaks y working as pick 12:50:32 how's that 12:50:41 you have to run y first to get the size of the stack it pushes anyway 12:50:54 hm 12:50:55 since the length of y isn't predetermined 12:51:01 y is silly IMO 12:51:02 consider command line args and envvars 12:51:08 the way it is done I mean 12:51:15 this is an esoteric language, it's supposed to be silly :-P 12:51:26 * AnMaster suggests a sane esoteric language 12:51:34 not esoteric then, any more :-) 12:51:49 btw, the mycology readme has a step-by-step explanation of what should happen with 101-{} 12:51:58 yes it can be, anything with a 2D IP = esoteric 12:52:00 maybe that'll help with your { woes 12:52:16 Deewiant, it fails earlier than that 12:52:24 on the very first {-test 12:52:35 BAD: { transfers cells incorrectly 12:52:36 10 0 0 Stopping due to fear of corrupt stack stack 12:52:38 yeah, but if you say you can't see why that fails maybe you can see why that fails 12:52:42 Deewiant, what does that 10 0 0 mean? 12:52:55 probably something that shouldn't be there and is printed accidentally 12:53:01 you know, corrupt stack stack and all :-P 12:53:31 from mycouser: 12:53:35 UNDEF: BASE fingerprint not loaded, won't check I. 12:53:38 and 12:53:39 UNDEF: STRN fingerprint not loaded, wo those look weird to me 12:53:58 are those how they should be output if those fingerprints are missing or? 12:54:18 yeah, it just says your interpreter doesn't support BASE and STRN 12:54:20 I mean, It's "I won't check" in English 12:54:26 and then the < in the second message 12:54:28 oh, right 12:54:36 read it as "won't check the instruction 'I'" :-) 12:54:43 I can't remember what the < is about 12:54:55 in some interpreters it's output and in others not 12:55:01 possibly to do with how you implement k 12:55:06 I see 12:55:15 Deewiant, I do k as you do mostly 12:55:55 >;#"BAD: { transfers cells incorrectly"an< < < < < < v780>'_,#! #:<"GOOD: { transfers cells correctly"aw0w5w4w3w2w1< 12:56:05 that is where the problem happens I guess 12:56:15 if I replace the ( with r CCBI prints "won't" and not "wo but when I check in gdb my stack looks like that 12:56:33 Deewiant, ah thanks 12:56:45 find out which w causes the messup 12:56:55 and then find out why the stack is messed up at that point 12:56:57 * AnMaster uncomments trace output 12:57:42 ok, not easy to parse my trace output though 12:58:50 v<1w>^1<< < < < < < 12:58:59 so the very first one fails 12:59:19 so what was your stack at that point and why :-) 12:59:37 * AnMaster looks 13:00:20 call StackDump(newStack) 13:00:20 0=5 1=4 2=3 3=2 4=1 5=0 6=0 <-- that is how it looks when { is just done 13:00:35 what's with the two zeros 13:00:42 that's storage offset right? 13:01:00 The { "Begin Block" instruction pops a cell it calls n, then pushes a new stack on the top of the 13:01:01 stack stack, transfers n elements from the SOSS to the TOSS, then pushes the storage offset 13:01:01 as a vector onto the SOSS, then sets the new storage offset to the location to be executed next 13:01:01 by the IP (storageo f f set ↠position + delta). It copies these elements as a block, so order is 13:01:01 preserved. 13:01:02 ", then pushes the storage offset as a vector onto the SOSS" 13:01:03 from standard 13:01:05 the SOSS, not the TOSS 13:01:13 Deewiant, aha 13:03:03 BAD: { doesn't set storage offset correctly, or p doesn't use it <-- right, time to fix that 13:03:07 * AnMaster changes p 13:14:06 Deewiant, p should push at (offset + requested position) right? 13:15:02 aye 13:15:41 -!- oerjan has quit ("leaving"). 13:18:39 in retrospect, the best way to write Mycology would have been to, write after the Befunge-93 stuff, test {}pg and storage offsets, and then the code could be written modularly 13:18:44 err 13:18:47 s/write/right/ 13:18:59 how did that happen O_o 13:19:27 Rampant illetrism sweeping the nation? 13:20:36 sumthin like thät 13:23:07 Deewiant, your ccbi binary btw: 13:23:08 UNDEF: Y says pow(2, -7) is 0.007812 (0.007813) 13:23:19 a bit off is it? 13:23:19 AnMaster: that's FPSP probably? 13:23:30 FPDP 13:23:38 darn 13:23:39 ah well 13:23:43 and FPSP too 13:23:44 it's floats, what do you expect :-) 13:23:58 Deewiant, still :P 13:24:08 oh, come on 13:24:49 why is BASE totally UNDEF? 13:24:58 looks like it's the same on windows btw 13:25:16 2^-7 is 0.0078125 13:25:41 so if that comes out as 0.0078124999999 it'll be 0.007812 which is probably the problem 13:25:54 or then my CCBI output does truncation and not rounding 13:26:04 I don't care, the answer is correct enough :-) 13:26:20 Deewiant, CNCBI ? 13:26:33 it's not defined anywhere what should be done in that case 13:26:36 same with the BASE 13:26:42 have you looked at the RC/Funge-98 docs? they /suck/ 13:26:46 ah 13:26:51 and the source is worse 13:27:07 AnMaster: you complained about having to reverse engineer my code. I had to reverse engineer code that doesn't work. :-) 13:27:18 * AnMaster sighs 13:27:34 eventually I decided to write the tests based on the spec only 13:27:49 then I'd run RC/Funge there and more often than not it'd fail early 13:27:49 I still can't get it to think that p does the right thing when it pushes at (offset + requested position) 13:27:56 so something somewhere is wrong 13:28:05 possibly { is wrong 13:28:24 the storage offset is correctly set, I verified 13:29:08 maybe you've got your y and x mixed up at some point 13:29:44 well the StackPopVector is correct, or the code would fail when mycology tests x hm 13:30:08 maybe you're adding the wrong storage offsets 13:30:22 or setting them incorrectly 13:30:22 ipForward(1, ip, fspace); 13:30:23 pos.x = ip->position.x; 13:30:23 pos.y = ip->position.y; 13:30:23 ipForward(-1, ip, fspace); 13:30:34 that is how you get the new vector right? 13:30:38 the new offset I mean 13:30:58 err, sec 13:31:20 * AnMaster notes ccbi tend to reverse instead, and can't go backwards in one function call :P 13:31:25 yeah, looks like 13:31:33 somehow, that feels like a small win there :) 13:31:34 ;P 13:31:37 :-P 13:31:47 it's not like it'd be difficult to make a function that does that :-P 13:31:50 void ipForward(int_fast64_t steps, instructionPointer * ip, fungeSpace *space) 13:31:50 { 13:31:50 ip->position.x += ip->delta.x * steps; 13:31:50 ip->position.y += ip->delta.y * steps; 13:31:51 fungeSpaceWrapInPlace(space, &ip->position); 13:31:53 } 13:31:55 indeed 13:31:57 :) 13:32:17 CCBI isn't optimized at all 13:32:24 or a bit, but not much really 13:32:26 Deewiant, nor is mine in most places 13:32:37 Deewiant, look, your k is optimized in strange ways! 13:32:39 in most cases I just went for the easiest-to-write code 13:32:49 yeah, k was one I prematurely optimized :-) 13:33:04 so that 9999***k> doesn't loop needlessly 13:33:10 and such 13:33:20 but I'm off to eat now, have fun with your debugging o) 13:33:27 * AnMaster sighs 13:43:16 Deewiant, btw, on }, where do you get the storage offset from? 13:43:40 do you always restore the previous offset or? 13:49:40 corresponding } "End Block" instruction pops a cell off the stack that it calls n, then pops a vector off the SOSS which it assigns to the storage offset 13:50:01 it's not necessarily the original offset although it usually is 13:54:53 right 13:55:42 * AnMaster wish mycology code wasn't so dense 13:56:04 it could use a rewrite, yeah 13:56:13 but I'm not going to do that, sorry :-) 13:56:41 FWIW the code gets better later on, at least in my opinion 13:56:53 the 'y' stuff is probably worst 13:57:20 but the fingerprint stuff is almost sane 13:57:51 there's some intentional obfuscation somewhere, though - just ask if you get totally confused :-) 13:58:04 after all, it's Befunge, it's not supposed to be easy to read ;-) 13:58:29 the storage offset is correctly calculated at least 13:59:04 as in, the right x and y value is stored in ip->storageOffset 13:59:48 you might want to try something simple like zzzzz{00g,'0,@ which, I think, should print 00 13:59:51 oh I got it, it wraps things 13:59:52 hah 14:00:03 the "set with offset" wraps things 14:00:09 * AnMaster changes order of calculation 14:02:11 * AnMaster implements } too 14:04:17 yay segfault 14:04:25 yay C ;-) 14:04:59 Deewiant, can't you get segfaults in D? 14:05:04 you got pointers after all 14:05:10 it's less likely 14:05:15 since you usually don't use pointers 14:05:30 arrays are built-in which helps a lot 14:05:42 so are C ones partly 14:05:47 FUNGEDATATYPE entriesCopy[count + 1]; 14:05:49 only static arrays 14:05:56 that one is dynamic 14:05:58 C99 feature 14:06:03 yeah, C99 has VLAs 14:06:07 but they're a bit clunky 14:06:12 Deewiant, and my code is C99 14:06:34 Deewiant, and memory managment: not an issue, I use boehm-gc 14:06:47 that helps a lot :-) 14:07:17 of course, realloc code to extend/contract stackstack pointer array to stacks is a bit hariy 14:07:30 since it use the "dynamic arrays at end of struct" thingy 14:07:59 typedef struct {// Top stack and current stack 14:07:59 size_t current; 14:07:59 // Array of pointers to stacks 14:07:59 fungeStack * stacks[]; 14:07:59 } fungeStackStack; 14:08:10 err, messed up newlines in paste 14:08:29 what's "current stack"? 14:08:38 TOSS and top also 14:08:40 oh, you just use it to hold the stack size 14:08:55 Deewiant, yep, as size and TOSS are the same for stack stack 14:09:04 I contract the thing when I pop stack stack 14:09:09 unlike normal stacks 14:09:20 where I keep a size counter and a "top" counter 14:09:30 and reallocates to add 10 in a bunch if more are needed 14:12:41 yay 14:13:11 stacks[0] and stacks[2] are valid, but stacks[1] = NULL 14:13:13 * AnMaster looks 14:16:14 GOOD: { transfers cells correctly 14:16:15 GOOD: { sets storage offset correctly, and p uses it 14:16:15 Program exited normally. 14:16:18 Deewiant, any clue? 14:16:20 heh 14:16:27 nope 14:16:29 * AnMaster can't see where it would do that 14:16:39 but something tells me "normally" isn't quite right :-P 14:16:48 that is what gdb says 14:16:52 ie, exit code = 0 14:17:10 x=87 y=72: # (35) 14:17:10 x=89 y=72: } (125) 14:17:10 Program exited normally. 14:17:11 interesting 14:17:26 :-) 14:17:39 aha, missing break in case lol 14:17:52 so fell through to next, that was @ 14:18:00 :-D 14:18:05 nop, not that 14:18:18 now it quits in another way 14:18:30 * AnMaster removes trace output to be able to see what mycology said 14:18:48 BAD: } reflects, hrrm 14:18:52 I suggest making that a command-line switch :-) 14:19:11 Deewiant, yes, right, when I implement proper command line parsing 14:19:28 GOOD: } resets storage offset 14:19:28 GOOD: } transfers cells correctly 14:19:28 Segmentation fault 14:19:29 bbl 14:19:35 how about right now just test if args[2] is -t or something 14:28:44 heh indeed 14:32:19 -!- RedDak has joined. 14:37:09 yay fixed it 14:54:00 Deewiant, there? 14:54:02 "If n is negative, |n| zeroes are pushed onto the SOSS." 14:54:10 isn't that a typo for TOSS in that case? 14:54:36 maybe it is but it says SOSS :-) 14:55:18 doesn't that match with: "If the SOSS contains k elements, where k is less than n, the k elements are transferred as the top k elements and the remaining bottom (n-k) elements are filled in with zero-value cells." 14:56:43 is there no matching GOOD for BAD: 101-{} doesn't leave stack top as 0 and next as 1 ? 14:56:52 no :-/ 14:56:53 at least mine doesn't print anything for that test when I corrected it 14:56:56 so confusing 14:57:00 Deewiant, that is bad :( 14:57:00 aye :-/ 14:57:06 FIX! ;P 14:57:06 I agree :-/ 14:57:12 easier said than done :-D 14:57:18 BAD: fedcba0{05-} doesn't leave 15 on stack 14:57:23 explain that one please 14:57:24 wow, that's rare 14:57:31 well, self-explanatory? 14:57:31 Deewiant, tell me about it 14:57:36 no I don't get it 14:57:41 I think I've only seen one other interpreter that does that 14:57:43 well 14:57:46 well mine does 14:57:47 fedcba0{05-} was executed 14:57:52 ok 14:57:57 and the top of the stack should be 15 after that, but it isn't 14:58:02 or wasn't, whatever 14:58:29 so my handling of negative counts for } is bad in other words? 14:58:35 probably 14:58:52 If n is negative, |n| cells are popped off of the (original) SOSS. 14:58:57 that means they are discarded? 14:59:09 well that's what it says isn't it :-) 14:59:18 that's an easy fix 14:59:42 GOOD: 1y and 5y do not disagree about = 14:59:42 No reliable cross-platform method of testing: assume = works 14:59:48 indeed, both says it doesn't exist 15:00:07 yep 15:00:09 * AnMaster thinks that second message is wrong with y says = doesn't exist 15:00:16 meh 15:00:18 it doesn't work! 15:00:21 read it as "works as intended" 15:00:26 ok 15:00:36 it doesn't use it anywhere 15:00:38 Deewiant, btw, could I invent my own = system? 15:00:52 that is an own operating paradigm? 15:00:54 not really since there's no standard :-/ 15:01:09 Deewiant, but I could make my own operating paradigm right? 15:01:15 y does allow that 15:01:17 "an implementation may support one of several standardized ways of interpreting the string, and which routine it uses can be determined by querying y" 15:01:23 the standardized ways are given 15:01:27 as long as it's one of them it's okay 15:01:42 This value is included so the program can have a reasonable idea of what = will do. The 15:01:43 values shown here are only the most basic set available at the time of publication. See the 15:01:43 Registry for any late-breaking headway into further Operating Paradigms. 15:01:45 from y 15:01:48 yep 15:01:54 but there is no registry 15:01:57 so that means you could make a new one 15:01:57 so we're screwed :-) 15:02:03 Deewiant, ah, so no libffi then :( 15:02:03 basically yes 15:02:06 but the problem is 15:02:13 because that's what I would want to do 15:02:16 what if your interpreter uses 16 for what you do 15:02:16 call libffi :) 15:02:22 and another interpreter uses 16 for something else 15:02:32 Deewiant, indeed, so we got to start a new registry 15:02:34 since there's no central registry, that can't be controlled 15:02:50 Deewiant, look, I want to use libffi to call C functions using it! :P 15:02:51 that's up to you :-) 15:03:09 just to be a pain in the **** for everyone else 15:03:20 I'd just call that 2 actually 15:03:21 "Equivalent to interpretation by a specific shell or program " 15:03:25 or even 3 15:03:30 since yours is a C program 15:03:33 haha 15:03:42 or no, scratch that 15:03:47 3 refers to the command-line shell 15:03:52 2 is what it'd be 15:04:00 heh 15:04:14 no, I'm not likely going to do libffi 15:04:18 too painful 15:04:44 Deewiant, the push on other stack then pop back thing for y = really painful :( 15:05:08 it's bad for performance 15:05:09 somewhat, yes 15:05:15 and coding style too 15:05:27 I just push all the things and then, at the end, check if some need to be popped 15:06:28 on a temp stack? 15:06:47 no, on the real stack 15:07:08 if you got 2y, that means 3y will also end up on stack? 15:07:10 but below it? 15:07:21 no, they're removed as well 15:07:41 then you need to shift items if you push onto real stack 15:07:48 I think what I do is push all, then pop up to 2, remember that cell, pop the rest that were pushed, push the remembered one 15:07:53 not sure though 15:08:03 that is even messier 15:08:15 actually it's quite clean in the code 15:08:34 as far as performance goes, it's not the best option though :-) 15:08:57 btw if I get this: 15:08:57 GOOD: ] turns flying IP right 15:09:01 and then lockup 15:09:07 what is the likely cause 15:09:12 can't remember 15:10:25 got to love this "mutex" in concurrent befunge: 15:10:26 <@Zaba> >#vt' 'o'l'l'e'H,,,,,,'>21p@ 15:10:27 <@Zaba> ><'!'d'l'r'o'w,,,,,, ^ 15:10:47 yep, I use that 15:10:58 not that I will implement that I think 15:10:59 in Mycology that is 15:11:07 concurrent that is 15:11:13 meh 15:11:23 you're making this too easy for yourself :-) 15:11:35 might as well just implement Befunge-93 ;-) 15:11:38 at least I want to finish everything that is required in funge98 before I start on optional things 15:11:46 aye, sure 15:14:39 StackStackTransfer(FUNGEDATATYPE count, bool inOrder, fungeStack *TOSS, fungeStack *SOSS) <-- yay, that should be reusable 15:14:59 Deewiant, btw what data type does ccbi use for the cells? 15:15:04 64-bit or 32-bit? 15:15:06 32-bit int 15:15:10 I think 15:15:12 or no, wait 15:15:15 its int_fast32_t 15:15:22 hah, mine use 64-bit, and should be easy to make 128-bit 15:15:30 using int128 thing for amd64 15:15:31 so it depends on what the library defines that as 15:15:43 Deewiant, ah mine is int_fast64_t heh 15:15:55 but easy to change in a header 15:15:57 AnMaster: so good luck compiling that on 32-bit? :-P 15:16:05 Deewiant, oh? should work still 15:16:16 64-bit values does exist on 32-bit 15:16:20 long long is such a value 15:16:24 oh yeah, C99 15:16:28 Deewiant, :D 15:16:34 ah well 15:16:35 C99 rocks 15:16:38 good luck /running/ on 32-bit ;-) 15:16:49 Deewiant, it will run on 32-bit, just slower 15:16:55 exactly, quite a bit slower :-P 15:17:15 anyway just open src/global.h and redefine: 15:17:16 #define FUNGEVECTORTYPE int_fast64_t 15:17:20 #define FUNGEDATATYPE int_fast64_t 15:17:24 to something else 15:17:32 yeah, just change alias int_fast32_t cell to alias long cell in CCBI, too :-) 15:17:53 for example I had it as char when I debugged play field loading 15:17:55 why don't you use typedef 15:17:59 because that makes print sane 15:18:08 Deewiant, no real reason 15:18:19 it hardly matters though 15:19:04 but upper case = defines normally, so changing it would mean a sed if I want to keep good coding style 15:19:34 Deewiant, btw, following ccbi's style of using weird build systems: I use cmake 15:19:35 :) 15:19:48 oh and I use POSIX specific stuff 15:19:59 so it will only run on real OS I bet 15:20:07 rebuild/DSSS is pretty much standard for D 15:20:20 D isn't terribly much standard though 15:20:21 and meh 15:20:27 no, but I like using real languages ;-) 15:20:43 C is more real 15:20:52 what language is the D compiler itself written in? 15:20:57 I bet answer is: C 15:20:59 C++ I believe 15:21:03 ok or C++ 15:21:04 :) 15:21:08 and C++ compiler is in C 15:21:10 so well 15:21:15 no, more likely that's in C++ as well :-P 15:21:30 Deewiant, not the gcc one I think? 15:21:31 but why the POSIX stuff, what do you need it for? 15:21:32 or maybe it bootstraps 15:21:38 I'm not sure about GCC actually 15:21:42 DMD and DMC are both C++ 15:21:48 Deewiant, simply because it's standard 15:22:13 any OS not being POSIX.1-2001 isn't worth coding for IMO :P 15:22:15 that's debatable 15:22:18 but what do you need it for 15:22:33 nothing really, just cases of easier to use / better functions 15:22:46 for example, for some reason random() is often more random than rand() 15:22:53 well, you do know that Linux and most BSDs aren't fully POSIX-compliant ;-) 15:22:58 random is POSIX, rand is C89/99 15:23:09 Deewiant, indeed, I test my app on both freebsd and linux 15:23:24 I'd just use the mersenne twister if I were you 15:23:26 Linux tux.lan 2.6.24-gentoo-r2 #1 Mon Feb 11 16:14:47 CET 2008 x86_64 AMD Sempron(tm) Processor 3300+ AuthenticAMD GNU/Linux 15:23:30 for that example, for instance 15:23:50 Deewiant, for ? instruction 15:24:15 it's just that I don't see the advantage in locking out Windows, I don't think the POSIX-only stuff is /that/ good 15:24:20 nothing in the funge standard says about what type or random 15:24:32 of* 15:24:34 nope, you could alias it to > if you want :-P 15:24:42 although that'd infinite loop in mycorand.bf 15:24:47 Deewiant, err no, that would be stupid 15:24:48 yeah 15:25:00 Deewiant, no, but it doesn't say it has to be 100% uniform i what I mean 15:25:02 better, you could iterate over >v<^ always in the same order :-) 15:25:21 long int rnd = random() % 4; 15:25:28 is good enough I think 15:25:35 :S 15:25:41 of course with % it may not be random 15:25:42 why not rand() % 4 and support windows on top, then :-P 15:25:54 unsigned char rnd = random() % 4; // OPTIMIZED 15:25:55 Deewiant, oh I do call srandom(time(NULL)) before :P 15:26:11 faxathisia, hah, but then gcc complains about a cast needed 15:26:13 seems a bit pointless to lose windows support just for that ;-) 15:26:15 and I use -Werror 15:26:16 :P 15:26:25 O-o 15:28:00 -std=c99 -Wall -Wextra -Wformat=2 -pedantic -Wstrict-aliasing=2 -Wfloat-equal -Wwrite-strings -Wshadow -Wcast-align -Wcast-qual -Wbad-function-cast -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wundef -Wnested-externs -Wdeclaration-after-statement -Wmissing-include-dirs -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -W 15:28:00 redundant-decls -Werror 15:28:02 in fact 15:28:22 nice 15:28:32 I use -funroll-loops 15:28:38 and no other flags 15:28:43 look it is for debugging! 15:28:50 to code good code 15:29:16 I use -ggdb3 -O0 15:29:18 -_- 15:29:23 -!- Tritonio_ has quit (Remote closed the connection). 15:29:25 hhehe 15:29:36 for this app that is 15:31:07 and stuff like __attribute__((nonnull,warn_unused_result)); (of course I #define away __attribute__ for non-gcc) to make sure I don't forget return values and so on 15:35:48 BAD: u with a negative count transfers cells incorrectly 15:35:49 hm 15:35:52 * AnMaster looks again 15:37:11 yay 15:39:27 Deewiant, BAD: after y the top cell is greater than 15 15:39:45 hm 15:46:09 unclear? 15:46:13 no 15:46:41 -!- RedDak has quit (Remote closed the connection). 15:46:45 just how I indicate how to follow 08 draft *adds a compatibility mode to be selected with parameter* 15:50:03 Deewiant, interesting: 15:50:04 That the command-line arguments were: [ "/" null "jÿ" null ] 15:50:15 :-) 15:50:16 * AnMaster pushes two null atm until he fixed some things 15:50:28 \0\0 = end of list 15:50:29 so? 15:50:37 so? 15:50:44 why does it not realize it is just a case of an empty list? 15:50:56 it should 15:50:56 after all, it is valid to not have command line arguments 15:51:02 no it's not 15:51:05 The first string is the name of the Funge source program being run. 15:51:16 Deewiant, that could be hard coded into an array into the interpreter :P 15:51:18 so it should always be mycology.b98 15:51:43 it's not the interpreter name, it's the Funge program name 15:51:55 Deewiant, or it may be a case of downloading, say a funge that can execute urls 15:51:58 or streams 15:52:01 where it won't know 15:52:12 it can push the URL then 15:52:15 nothing says the funge program has to be loaded from a file does it? 15:52:41 well, it talks about "Funge-98 source files" a lot :-) 15:52:45 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php 15:52:46 Deewiant, :) 15:52:52 93, but still 15:53:01 yep, I know :-) 15:53:06 or: 15:53:08 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php 15:53:09 I haven't run those on Mycology to see if they work 15:53:22 Deewiant, mycology would be too large 15:53:29 to fit inside it as well 15:53:41 you do realize that the first 80x25 chars are valid Befunge-93 :-) 15:53:45 and test the whole Befunge-93 spec 15:53:50 yep I do 15:53:53 I know that 15:54:06 and that Befunge-93 interpreters should only load the first 80x25 chars anyway 15:54:09 but I like to point out those programs load themself into the befunge93 space too 15:54:10 so 15:54:19 so they're not valid :-) 15:54:33 Deewiant, btw what is this minifunge thing? 15:54:36 or whatever it was called 15:54:59 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/dynafing.txt 15:55:15 unfortunately I implemented RC/Funge-98's version and not that one 15:55:22 but it shouldn't require many changes 15:55:29 if someone wants me to implement that one instead :-P 15:56:47 why not? 15:56:53 do they differ much? 15:57:05 not IIRC 15:57:09 Deewiant, what is hover mode? 15:57:15 and such 15:57:20 defined in MODE fingerprint 15:57:29 as it says there :-) 16:02:02 * AnMaster wonders if it would be nice to make HRTI take advantage of HPET on linux when available 16:02:14 en.wikipedia.org/wiki/High_Precision_Event_Timer in case you don't know what it is 16:02:28 isn't HPET exposed in any of the standard C lib 16:02:38 it isn't afaik? 16:02:46 I mean, just in the form of a higher CLK_TCK or whatever 16:02:51 * AnMaster guess doing some stuff on /dev/hpet could work 16:03:00 of course with some fallback 16:03:09 as only one of my computers got hpet 16:03:38 Deewiant, but maybe 16:03:51 anyway use NO_HZ so... 16:03:51 heh 16:08:33 * AnMaster writes functions to push and pop C string to/from 0gnirts 16:13:29 -!- RedDak has joined. 16:57:29 -!- RedDak has quit (Remote closed the connection). 17:15:32 #>:#_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y 17:15:33 Deewiant, ^ 17:15:38 that is the infinite loop 17:15:53 'the'? 17:15:59 that my code get into 17:16:15 f8+y doesn't work then apparently 17:16:24 what is f8+y supposed to be? 17:16:35 I don't know, what does CCBI output there 17:16:52 a sec 17:17:43 GOOD: ] turns flying IP right 17:17:44 GOOD: : on empty stack makes stack size 2 according to y 17:17:47 hm 17:17:49 the second one 17:17:54 so it's trying to get the stack size 17:18:06 TOSS size to be exact 17:18:11 * AnMaster checks 17:18:29 Deewiant, why don't it print BAD or such then? 17:18:54 I didn't expect that y would reflect after y having worked all the way up to there :-) 17:19:17 Deewiant, maybe add that check? :) 17:19:21 I can't check for reflection every time I try an instruction :-P 17:19:37 Deewiant, you can, 98 doesn't have a size limit so it's easy 17:19:44 ;P 17:19:53 except that much of the later code uses hard-coded y-coordinates 17:19:58 so adding lines breaks the whole program 17:20:12 interesting 17:20:21 just let it expand outwards to x? 17:20:24 hence what I said earlier about testing {}pg first and then using {} 17:20:31 that doesn't work either due to the tests on # edge jump 17:20:47 the line there has to be the longest line in the file 17:20:56 well just make that even longer? 17:20:59 of course I could just make that one longer 17:21:07 but then there's also the check for what y pushes for maxX/maxY 17:21:08 simple really 17:21:13 which would also have to be changed 17:21:18 and possibly something in the fingerprints as well :-P 17:21:22 too much trouble really 17:21:49 it looks like there's plenty of free space there though 17:21:52 Deewiant, does mycology test nested { and } btw? 17:22:02 not sure 17:22:16 Deewiant, you wrote it! you should know ;P *runs* 17:22:39 it's over 100 KB of Befunge, I can't be sure :-P 17:23:22 * oklopol wants to write something in befunge 17:23:36 oklokok, simple really 17:24:14 AnMaster: i'm not saying i don't have the skill 17:24:22 i'm saying god i wanna do it 17:24:26 what should i use? 17:24:31 for the interp 17:24:34 a text editor? :-P 17:24:36 CCBI, of course 17:24:53 ccbi is what? 17:24:59 my interpreter :-) 17:25:03 for what os? 17:25:17 oklokok, ccbi 17:25:17 for now 17:25:17 :P 17:25:20 tested on windows and linux, might work on bsd if you can get it to compile 17:25:34 oklokok, ccbi is coded in d though 17:25:38 so a bit hard to compile 17:25:38 http://iki.fi/matti.niemenmaa/befunge/ccbi.html 17:25:46 AnMaster: but fortunately, I provide a linux binary now :-) 17:25:49 i'm using windows then, prolly 17:25:51 AnMaster: thanks for testing it ;-) 17:25:52 oklopol: RE: your question earlier. . . Think 'Eb above middle C'. 17:25:55 (painful) 17:25:57 Deewiant: you finnish? 17:26:01 oklopol: aye 17:26:12 oklopol, he got a linux binary as well yes 17:26:27 Deewiant: BSD can be binary-compatible with Linux. 17:26:33 Deewiant, not linked from site though 17:26:35 add the link there 17:26:37 AnMaster: yes it is 17:26:59 Deewiant, then your servers send something bad with cache headers? 17:27:01 pikhq: i can do octave over C 17:27:10 AnMaster: or you don't see it. :-P 17:27:10 although i'm not sure what question you were answering :P 17:27:12 Deewiant, had to do Ctrl-R 17:27:16 to make it show up 17:27:16 AnMaster: I don't know, they're school servers 17:27:18 interesting 17:27:47 and octave below G below middle C 17:27:51 Deewiant, the "befunge98 SVN r11" linked from your site, link is broken 17:28:01 Deewiant, on test results page 17:28:07 bah 17:28:10 maybe do a "local source" thing like for rcfunge? 17:28:12 AnMaster: i prefer my windows machine 17:28:18 it seems he's redesigned his site 17:28:25 oklopol, sure, just install linux on it 17:28:30 Deewiant, correct link then 17:28:35 not worth it 17:28:43 AnMaster: the only difference is a slash at the end >_< 17:28:44 oklokok, to get a real OS I mean 17:28:58 oklopol: I ave a *low* range, not a high range. ;) 17:29:04 (I'm in high school) 17:29:04 not much difference 17:29:06 oklopol: design and testing is done on Windows XP, so it's more likely to work there anyway :-) 17:29:50 oklokok, in the future compiling cfunge may be a simpler choice :) 17:29:56 when I get it done 17:30:22 pikhq: how low do you get? 17:30:29 -!- timotiis has joined. 17:30:45 oklokok, cfunge can be set to use 64-bit stuff easily, in fact it is optimized for 64-bit ABI (I've read AMD64 ABI specs, so I optimize parameter order to pass as much as possible in the registers!) 17:30:51 AnMaster: want to try iki.fi/deewiant/mycology.b98, it should have a test for that f8+y now 17:31:12 Deewiant, I fixed my y for that, so can't test that 17:31:19 AnMaster: undo the fix :-) 17:31:22 oklopol: At *least* to low C. . . 17:31:31 what's low c? 17:31:37 what are the names of the octaves? 17:31:38 C below bass clef. 17:31:48 ERm. 17:31:53 I might have screwed that up. 17:31:59 * pikhq imagines scale, labelling notes. . . 17:32:03 low C, some C, middle C 17:32:04 ? 17:32:13 like, two octaves down from that 17:32:46 i can do F quite easily too, but i'm a tenor really 17:32:48 well 17:33:03 as i'm not really a singer, i don't have a clear range like that 17:33:26 what are the ranges officially? 17:34:58 Deewiant, anyway should nf8+y return 0 or 1? 17:35:02 Ah. The note I'm thinking of is called 'E2'. E below bass clef. 17:35:11 http://www.library.yale.edu/cataloging/music/vocalrg.htm 17:35:14 oh 17:35:26 C3 C2 C c c2 c3 17:35:30 and c is middle c? 17:35:33 AnMaster: 0. 17:35:41 Yeah. 17:35:44 ah 17:35:54 then wtf is up with: 17:35:54 same as in finnish then 17:35:55 BAD: \ on empty stack doesn't make stack size 2, says y 17:36:00 well 17:36:06 because, according to gdb 17:36:07 it does 17:36:09 That range chart is a bit bad, though. . .I know all those parts have wider ranges. 17:36:10 Deewiant, ^ 17:36:16 Granted, not *much* wider. 17:36:21 AnMaster: well, according to a Befunge program, it doesn't. :-) 17:36:35 Deewiant, also BAD: i not implemented according to 1y - cannot test it <-- why is that "BAD"? 17:36:41 it is fully valid to not have i and o 17:36:52 AnMaster: I disagree 17:37:00 Deewiant, the standard says so 17:37:10 AnMaster: does it? 17:37:14 # Bit 1 (0x02): high if i is implemented. 17:37:14 # Bit 2 (0x04): high if o is implemented. 17:37:19 i can do all those, but i think i prefer the highest 17:37:23 AnMaster: sure, it says that 17:37:35 oklopol: My *comfortable* range is the bass clef. ;) 17:37:36 "Also, any of the instructions t (concurrent execution,) = (execute,) i (input-file,) and o (output-file) may be unavailable in different interpreters for many reasons, and are routinely bound to (i.e. act just like) r as well. However, they may also act like r when they fail to execute. To test if they are actually supported, execute 1y and examine the cell it produces." 17:37:39 AnMaster: but that doesn't mean that a fully conforming implementation doesn't have to implement them :-) 17:37:39 Deewiant, that too ^ 17:37:54 section "Instructions" 17:37:55 :P 17:37:57 AnMaster: alright 17:38:02 so yes it is fully valid to not have those 17:38:14 Did I say anything about '='? Was that UNDEF or nothing? 17:38:42 darn, not much space there 17:38:48 what you say is: 17:38:49 BAD: i not implemented according to 1y - cannot test it 17:38:50 BAD: can't test o without working i, might overwrite some existing file 17:39:03 Deewiant, your test suite isn't conformant! :P:P 17:39:08 hm, the second is kind of tricky 17:39:12 AnMaster: I never claimed it was :-P 17:39:29 pikhq: you didn't answer the question of wether it was a composition of yours 17:39:32 Deewiant, anyway, I don't implement either i or o 17:39:36 nor do I plan to yet 17:39:39 as they are optional 17:40:28 Deewiant, so far: http://rafb.net/p/AA3KEd72.html 17:40:32 yes I know y is broken still 17:40:39 and so is some wrap parts 17:42:36 oklopol: Nope. 17:42:46 *whether 17:42:49 Just something I have to perform for my (fairly good) high school choir. 17:43:02 * pikhq damns the fourth movement of the Easter Cantata to hell. 17:45:01 AnMaster: there' 17:45:06 s a new Mycology up 17:45:13 should say UNDEF at those two places now 17:46:17 did you update test results? 17:46:19 :P 17:46:26 no, can't be bothered now 17:46:41 some of the programs are outdated, too 17:47:01 it's mostly "on hold" for now, I'll update it all later 17:47:11 Deewiant, add a change log entry on that page for your change? 17:47:33 Deewiant, http://users.tkk.fi/~mniemenm/files/befunge/mycology/mycology.zip is the right thing to download I assume? 17:47:39 yep 17:48:27 ok, interesting why CRLF btw? 17:48:43 to make sure people support it :-) 17:58:47 Deewiant, what about systems with multiple chars for path separator? iirc such systems existed that had two chars 17:58:52 don't remember name 17:58:58 but befunge won't work on those 17:59:00 AnMaster: the standard specifies it's one cell 17:59:07 can't be helped 17:59:13 Deewiant, so befunge breaks on such systems 17:59:14 I see 17:59:21 on such a system, the interpreter could push a reserved value 17:59:28 which it translates to the path sep on output 18:11:51 reserved hm? 18:12:11 like, say, it could say that cell sizes are 7 bytes 18:12:28 and then reserve all higher values for stuff like that 18:12:38 Deewiant, what file in CCBI does wrapping? 18:13:16 ip.d probably 18:14:40 yeah, IP.move 18:14:42 bah, CLOS is lame 18:14:53 no it's not 18:15:07 Have you used other object systems? 18:15:26 for lisp or in general? 18:15:31 In general 18:15:53 lament, what is CLOS? 18:15:58 some befunge fingerprint? 18:16:09 object system for common lisp 18:16:14 faxathisia: i just don't like (method object) 18:16:33 huh? 18:16:49 because it's namespace clutter 18:16:57 you'd rather write method(object) ? 18:17:08 no, that's still namespace clutter 18:17:15 object.method() is not namespace clutter 18:17:23 there's no "method" in the global namespace 18:17:41 i understand the issues with multiple dispatch 18:17:43 You can use packages 18:18:47 that doesn't really help, you just clutter the package namespace instead of the global one 18:19:06 as opposed to not cluttering anything 18:19:12 what way do people usually do functions in befunge? 18:19:17 I don't really know why you are saying 'clutter' when actually you are defining a method 18:19:40 if you didn't want it, don't write it 18:19:41 or they usually don't? 18:19:53 AnMaster: :-D, not everything 4-char is a Befunge fingerprint ;-) 18:19:54 faxathisia: because in clos, this method is in the global namespace, and in python/c/c++/java/c# it's local _to the object_ 18:20:17 which is where it belongs 18:20:18 Lisp is different .. embrace it :) 18:20:39 it's not just different, it's worse 18:20:42 the change is better in this case, especially reading something like AMOP 18:20:46 oklokok: they usually don't, I guess 18:20:52 pretty simple to do for n-dimensions with (n-1) dimensions used in a function 18:20:58 so that you use one direction as a mapping level 18:21:15 like, you have every second level be one that just redirects the turtle in the right slow 18:21:26 based on function coordinates pushed on the stack 18:21:28 oklokok: one way is to reserve one line/column of Funge-Space for a return address stack 18:21:31 faxathisia: good management of namespaces is one of the nicest things a language can do for you 18:21:38 oklokok: and then use pg 18:21:47 when you have 20000 symbols in your namespace, it's hard to keep track of stuff 18:22:00 AnMaster: :-D, not everything 4-char is a Befunge fingerprint ;-) 18:22:01 hehe 18:22:09 yay wrapping now works 18:22:15 i'm fairly sure i can make callable functions with something like this, although you need to push a lot of stuff when you call a function 18:22:17 non-cardinal I mean 18:22:42 Deewiant: that sounds slow 18:22:47 Deewiant: 18:22:50 UNDEF: 1k # does nothing at k or jumps at k and doesn't move past # 18:22:53 oklokok: Befunge isn't fast :-P 18:23:07 Deewiant, can you explain that one to me, and what way is "best" 18:23:38 Deewiant: no reason to make slow programs, quite the opposite! 18:23:43 AnMaster: this is the thing that was discussed between myself and, IIRC, Lee Houghton 18:23:53 AnMaster: I changed it in february to be UNDEF 18:24:22 AnMaster: in short, k followed by a space is very poorly specified 18:24:33 AnMaster: read the spec however you will 18:24:38 yes indeed, it should not execute the space 18:24:40 that is clear 18:24:56 but after that, there are at least 3 options 18:25:00 1) reflect 18:25:07 2) ignore it and do nothing for 1 tick 18:25:19 3) find the instruction after the space and exec that 18:25:20 and third? 18:25:41 Deewiant, what one would you recommend? 18:25:46 CCBI does 2 18:25:53 some do 1, some do 3 18:25:59 Deewiant, and the one I did? 18:26:03 up to you really, based on the spec all can be justified 18:26:09 I mean, the result 18:26:26 "1k # does nothing at k" means 2 18:26:37 "jumps at k and doesn't move past #" means that k doesn't move past the instruction it executes 18:26:37 Deewiant, so it ignores the #? 18:26:46 no, it means it ignores the space 18:26:51 and then moves onto the # on the next tick 18:27:25 -!- jix has joined. 18:27:29 err how can you know about tick for non-concurrent funge? 18:27:30 or, in that latter case, that it executes # at k 18:27:41 well for non-concurrent funge it doesn't make a difference 18:27:58 I'm just saying "next tick" to clarify that it happens sequentially like that :-) 18:28:03 Deewiant, my k function just calls return on space 18:28:13 and reflects on 1) ", ; and nested k 18:28:26 err not the , instruction that is 18:28:28 why reflect on "? 18:28:35 " toggles stringmode 18:28:43 Deewiant, because standard says " isn't allowed in k 18:28:51 it does? 18:29:02 or rather indicates 18:29:09 :-P 18:29:09 "The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;)" 18:29:10 how's that 18:29:20 I would suggest " is a marker 18:29:29 no, it's not 18:29:32 it's an instruction 18:29:43 The instruction " "Toggle Stringmode" toggles a special mode 18:29:47 Deewiant, so what should 2k" do? 18:29:54 nothing 18:30:06 and 3k" ? 18:30:12 same as 1k" 18:30:16 or just " 18:30:20 Deewiant, turn string mode on that is 18:30:23 the only two markers are space and ; 18:30:26 ok, that's stupid 18:30:27 AnMaster: yep 18:30:29 why 18:30:40 I'm sure I could find a use for it if I try hard enough :-) 18:30:41 Deewiant, k" doesn't make any sense :( 18:30:56 say you've got two-dimensional code 18:31:01 you need to skip over some code 18:31:08 you've got semicolons in the middle so you can't use ; 18:31:28 you're trying to move east and the code at that point looks like k"asdf 18:31:28 j instruction 18:31:37 you don't have enough room to turn to the east 18:31:51 before hitting that k, that is 18:31:55 hm ok 18:31:58 so you put 1 on the stack and turn right 18:32:00 relocate your code 18:32:05 :-) 18:32:09 that's not what befunge is about :-P 18:32:26 to me anyway 18:32:31 Deewiant, and you get a lot of crap on the stack right? 18:32:35 -!- ais523 has joined. 18:32:42 do n afterwards 18:33:01 or ask y for the current stack size and then use k$ 18:33:01 Deewiant, I would relocate the code to fit in a j instruction if needed 18:33:39 if you can relocate like that, might as well not use j at all :-) 18:34:19 but my point is, there can be a use for it 18:34:19 I always write PIC code in befunge :P 18:34:22 it's not /completely/ pointless 18:34:36 to me that's somewhat self-defeating, might as well use brainfuck or whatever :-) 18:35:16 * AnMaster ponders a befungelint until he realizes it would be impossible to find what direction you enter a instruction without running it and seeing what happens in some cases 18:35:23 yep 18:35:52 Deewiant, anyway nasty thing that you check if ( that reflects pops things :P 18:36:05 * AnMaster could have managed further without that check 18:36:11 as I don't implement ( yet 18:36:25 an easy way to implement ( is just to make it pop a value then pop that many cells 18:36:30 and reflect, of course 18:36:52 but you do realize that if you're that far you've done pretty much everything else :-) 18:36:55 wait, so ( isn't popping a 0gnirts? 18:37:07 nope 18:37:10 Deewiant, well my y is still seriously broken 18:37:38 heh, looks like 18:37:48 http://rafb.net/p/OqbNQJ59.html 18:37:51 there ^ 18:38:17 also, my fungespace field is a mess, until I replace it with a sparse array 18:38:31 a mess of 800x2500 cells heh ;P 18:38:41 :-P 18:38:56 just to do some things for now until I wait for some idea for sparse array 18:39:13 anyway the interface for fungespace is clean 18:39:13 Befunge98 used an octree I think 18:39:19 so easy to replace with something else 18:39:46 Deewiant, look, I'm in what equals last year of high school, I don't know the computer science stuff yet! tell me what a octree is :) 18:40:14 when I started with CCBI I was, too :-) 18:40:20 hahahah 18:40:51 can't you guess from the name - octree i.e. octal tree i.e. a tree where each node has eight children 18:41:01 uhu 18:41:05 right 18:41:10 so basically, each funge-space cell has pointers to each immediate neighbour 18:41:42 I see 18:42:05 Deewiant, must be slow to traverse if you want to not just go to next cell 18:42:14 I don't know to be honest 18:42:17 but say, get cell at 0,5 while you are at 374,57 18:42:30 Deewiant, how does ccbi do it? 18:42:31 he might have partitioned it 18:42:37 AnMaster: D has built-in hash tables :-) 18:42:41 :( 18:42:48 Perl too.. 18:42:53 AnMaster: cell[cellidx][cellidx] space; or something 18:43:08 well bash got sparse arrays hm 18:43:14 but not matrixes 18:43:31 so no point in looking at bash source 18:43:46 there're libraries 18:43:55 don't know what but there're bound to be some :-) 18:44:46 Deewiant, I found some for floating point, some with bad license, some that was just 1D arrays and some that lacked any comments in code and said "buy this book to get documentation" 18:45:03 and obfuscated source 18:45:07 http://www.google.com/search?q=hash%20table%20library 18:45:22 Deewiant, for C++ there are plenty, but not for C 18:45:22 looks like a decent amount of results :-) 18:45:31 the first one there is for C 18:45:36 hm yes 18:45:37 * AnMaster looks 18:45:53 the one referenced on the wikipedia page is also for C 18:46:09 I looked at the ones listed there 18:46:17 they were not 2D 18:46:32 they don't have to be 2D 18:46:35 oh? 18:46:44 you have two options basically 18:46:52 go on :) 18:46:53 1) what I do, have a hash table containing hash tables 18:47:06 mhm 18:47:15 2) use, as the key, something which contains 2 integers 18:47:40 either a struct or just a 128-bit integer with the higher bits as the y-coordinate and the lower as the x-coordinate or whatever 18:47:59 ok, that makes "SunriseDD" look good, assuming license works with GPL3, because it works with boehm-gc 18:50:24 CFUN eh 18:50:34 Deewiant, er yes? 18:50:37 is it in use? 18:50:47 don't think so 18:51:02 most use BEF or something instead of FUN 18:51:15 FUN as in FUNGE 18:51:20 yep 18:51:20 but true it is just 2D 18:51:50 Deewiant, does handprint have to be 4 chars? 18:51:58 no 18:52:03 it has to be a cell 18:52:08 in your case it could be up to 8 chars 18:52:15 since you have 64 bits 18:52:38 I wonder, what about BIGNUMs? 18:52:46 in that case it could be anything 18:52:52 indeed 18:53:15 because it doesn't matter whether other interpreters can represent it 18:53:45 Deewiant, does mycology only test befunge or trefunge too? 18:53:51 befunge only 18:53:59 would be really hard to make it work for both befunge and trefunge 18:54:00 and does it handle running under trefunges gracefully 18:54:04 no, not at all 18:54:08 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 18:54:15 or unefunges ;-) 18:54:17 Deewiant, it should check size of vectors :) 18:54:29 tricky in 80x25 chars 18:54:32 because if it does that, it can run under any funge > 2 18:54:38 Deewiant, well I mean for funge98 18:54:45 it'd have to be done for funge93 too 18:54:52 oh? 18:54:58 Deewiant, 80x25xwhat? 18:55:02 funge93 has p and g 18:55:04 which use vectors 18:55:17 for trefunge93 I mean 18:55:26 beats me 18:55:41 but I guess you're right in that way, -93 didn't specify anything other than 2D 18:55:42 does trefunge93 exist even? 18:56:05 but still, it'd be tricky for funge98 as well 18:56:14 since it'd have to be done /every time/ a vector is pushed/popped 18:56:27 unless you mean just branching and saying "not befunge" the first time 18:56:35 nah, not at all 18:56:48 you check it once, then do some self modifcation 18:56:56 to change all p/g instructions 18:56:59 err 18:57:07 there are a lot more instructions than just p and g that use vectors :-P 18:57:07 you should leave place around 18:57:09 of course 18:57:14 Deewiant, yes all those twoo 18:57:15 too* 18:57:16 it's too difficult 18:57:19 intractable in fact 18:57:28 Deewiant, but not inpossible 18:57:30 once again, since you can't tell what direction an instruction is entered from 18:57:32 it's impossible 18:57:41 and consider y for instance 18:57:48 yes? 18:57:49 it pushes 5 vectors 18:58:05 you do y once, to find out whatfunge it is 18:58:15 how would you programmatically modify anything that uses y to deal with arbitrary-sized vectors 18:58:20 since the code would be very spread out 18:58:29 then you go into self modification mode, and add the needed code around each place 18:58:32 using p 18:58:39 to change the mycology program itself 18:58:41 how would you find 'the place' 18:58:48 'each place' that is 18:58:55 it's impossible, I tell you 18:58:56 Deewiant, store it as incomplete vectors? 18:59:12 and then add the extra 0 needed :) 18:59:21 how would you store it like that 18:59:29 here's some code: aa+y 18:59:44 -!- slereah__ has joined. 18:59:46 modify that to work under a dimensionality given on top of the stack :-) 18:59:51 yes then you store say 53 or wherever it is at 19:00:07 the position of that aa 19:00:15 haha 19:00:25 for every use of vectors, store the position somewhere? :-D 19:00:36 no thanks 19:00:44 Deewiant, yep, and then once you find out the dimension count, change those places 19:01:02 pad the vectors to p that change them with 0 19:01:12 as needed 19:01:22 it'd probably be easier to check the dimensionality separately at each place :-D 19:01:22 Deewiant, look, it isn't impossible 19:01:23 ! 19:01:32 it's impossible programmatically 19:01:40 you need to change the original code beforehand 19:01:45 err no? 19:01:53 yes, because you need to store all those places 19:01:56 just leave some spaces around that you can fill out 19:02:15 to support a fixed set of n dimensions 19:02:42 exactly 19:02:55 so first of all that limits you to a static number of dimensions 19:03:01 no wait, you don't need to 19:03:08 and second, that's changing the original code 19:03:13 all you need is a sub routine 19:03:25 simple you told someone here yourself how to 19:03:28 jump and so on 19:03:54 it's not that simple 19:04:02 there are instructions that do X, then pop a vector, then do Y 19:04:07 or s/pop/push/ 19:04:20 you'd need a subroutine for each such instruction 19:04:25 not just p/g 19:04:37 just a make vector subroutine 19:04:38 :) 19:04:50 that you can use for p/g/whatever 19:05:04 even for x 19:05:21 but still, this is all changing the original source 19:05:25 Deewiant, also vector isn't hard, in that case, all you need is 0 in the extra dimensions right? 19:05:31 what I mean is that you can't tractably do the following: 19:05:35 so if stack is empty after vector 19:05:49 then all will be + 19:05:50 eh 19:05:51 0 19:05:55 write befunge code that loads mycology.b98 and modifies each vector use to work for any number of dimensions 19:05:59 without changing mycology.b98 19:06:06 beforehand 19:06:13 Deewiant, no I didn't say that 19:07:19 that's what I was thinking when I said impossible 19:07:31 of course, if you can rewrite the whole code, it's possible 19:07:35 just ugly :-P 19:07:40 and overly tricky 19:07:54 it's much easier for the interpreter to allow specifying dimensionality 19:08:06 since nobody's going to write a Funge interpreter which doesn't execute Befunge ;-) 19:08:41 Deewiant, err what about unefunge? 19:09:12 s/Funge/greater-than-2-Funge/ 19:09:14 nitpicker :-P 19:09:19 hah 19:09:37 also what about "extra dimensions on demand" style funge 19:09:44 that would be nice 19:10:20 Deewiant, wouldn't it? 19:10:21 Deewiant: aren't all Befunge programs also legal Trefunge programs? 19:10:28 ais523: nope 19:10:32 (although they'll get the number of elements in a vector wrong) 19:10:35 ais523, nop, because of vector size 19:10:38 so that won't work 19:10:48 ais523: consider 102p 19:10:54 of course they are legal 19:10:56 that should put 1 at the position (0,2) 19:10:58 just won't do the same thing 19:11:06 Deewiant, assuming befunge 19:11:10 in trefunge, it'd put whatever was on the stack beforehand at the position (1,0,2) 19:11:35 ais523, Deewiant: still legal, just won't do the same 19:11:36 clearly, dimension-independent vectors are needed 19:11:37 AnMaster: yes, of course. Always assume Befunge unless I say otherwise :-) 19:11:41 ais523, yes 19:11:42 so that we can have Hilbert-space-funge 19:11:49 ais523, err what? 19:11:56 AnMaster: infinitely many dimensions 19:12:06 AnMaster: university stuff ;-) 19:12:07 ais523, yes, but how do you indicate end of vector 19:12:12 ah got an idea: 19:12:14 AnMaster: just give the size 19:12:16 only finitely many of which are allowed to be anything other than 0, so that it's possible to store coordinates in finite size 19:12:20 ah yes 19:12:35 Deewiant, first in vector: size of vector 19:12:38 rest is vector 19:12:41 yep 19:13:10 Deewiant, now that would need some substantial redesigning or a fingerprint of some kind 19:13:35 ais523, err? 19:14:04 AnMaster: you can specify vectors by giving a number of coordinates and listing the first few 19:14:16 because as only finitely many can be non-zero, there must be some highest non-zero coordinate 19:14:27 AnMaster: INDV/PNTR supports arbitrary-dimensional vectors 19:14:40 AnMaster: I think. 19:14:42 at least some fingerprint did. 19:14:49 Deewiant, interesting 19:14:57 it would be easy enough to have a fingerprint that supports G and P as arbitrary-dimensional g and p 19:14:59 not in this way, I don't think, but in some way. 19:15:14 ais523, also need X too 19:15:33 it wasn't INDV. 19:15:33 does y return any vectors? I can't remember offhand 19:15:33 or you couldn't jump into those dimensions 19:15:34 ais523, it does 19:15:38 oklokok: you were asking about functions: there's the SUBR fingerprint 19:15:40 so Y too 19:16:11 Deewiant, hm fingerprints got to fit in a cell? 19:16:14 they don't do they? 19:16:17 nope 19:16:24 or yep, actually 19:16:26 or wait 19:16:29 not sure 19:16:32 read the spec :-P 19:16:45 can I make fingerprints that would only work on 64-bit funges is the question 19:16:50 AnMaster: JSTR is the fingerprint I was thinking of 19:17:10 Deewiant, modified rcfunge right? 19:17:19 yep, jesse van herk's 19:17:22 btw, the rcfunge with SGNL didn't compile 19:17:29 had to remove SGNL thing 19:17:31 quite possible 19:17:36 and this is unix 19:17:45 so it should work 19:17:46 like said, POSIX is a bad thing ;-) 19:17:55 Deewiant, it isn't 19:18:00 I'm on cygwin so I think I removed SGNL and WIND 19:18:10 or rather, I tested it on cygwin 19:18:13 Deewiant, anyway WIND is just a crappy idea 19:18:29 I agree, which is why I didn't implement it :-) 19:18:32 it should be QT of course 19:18:33 :D 19:18:38 baah 19:18:42 or maybe XLIB or GTK+ 19:18:48 I think using Funge for GUIs is just worthless :-P 19:18:52 because those two would fit into 4 chars 19:19:03 AnMaster: and yes, a fingerprint has to fit in a cell 19:19:11 Deewiant, according to that principle, funge is worthless 19:19:15 Deewiant: are you aware of Deltaplex 19:19:20 s/$/?/ 19:19:23 ais523, what is it? 19:19:36 it's a fungeoid designed for GUIs, graphics, etc. 19:19:41 AnMaster: no, I just think GUI programming isn't Funge's forté ;-) 19:19:46 it even has 3-D graphics commands and mouse support built in 19:19:48 ais523, eww 19:19:50 AnMaster: http://www.esolangs.org/wiki/Deltaplex 19:20:12 Deewiant, then you should drop TURT too :P 19:20:14 * ais523 has the Esolang Firefox search widget 19:20:30 AnMaster: nah, TURT isn't for GUIs, it's for drawing pictures 19:20:33 drawing pictures isn't Funge's forté 19:20:53 Deewiant, tell me what is Funge's forté? 19:21:09 AnMaster: obfuscated code :-) 19:21:20 it is an /esoteric/ language after all 19:21:27 yes 19:21:35 not drawing pictures then! 19:21:41 true 19:21:49 I just liked the idea of TURT 19:21:52 seemed to fit the theme 19:22:13 * ais523 was under the impression that Befunge was originally invented to be hard to compile 19:22:25 ais523, indeed 19:22:26 yes, I believe so 19:22:29 and it is 19:22:45 I wouldn't even try to, even without anything like p 19:22:54 it's probably harder to compile than Unlambda, which is itself traditionally hard to compile 19:22:55 essentially impossible to compile for modern arches, unless you count embedding the interpreter into the executable 19:23:03 since it relies on self-modifying code so much 19:23:06 or can rely 19:23:09 Deewiant, you know W^X/NX/PaX/misc/other/names 19:23:11 ? 19:23:20 * ais523 is working on a language that Unlambda compiles to, and that can be compiled to C 19:23:31 AnMaster: the data execution denial bit or whatever? 19:23:38 No Execute thing, either pages are write or execute, but not both at same time indeed 19:23:44 well that would break for funges 19:24:00 so you can't compile it 19:24:04 yeah, that effectively disallows all self-modifying code I believe 19:24:08 and run it on any sane system 19:24:15 Deewiant, well JITs does work around it 19:24:36 and pure interpreters too 19:24:54 * AnMaster ponders NX bit for funge, per-cell 19:25:00 :-) 19:25:00 as a fingerprint 19:25:01 :) 19:25:12 best make it possible to set an area in one instruction then 19:25:19 yep indeed 19:25:24 anyway I won't do that yet 19:25:53 also, following style of how hardware NX works, it shouldn't just reflect, but instead terminate current IP 19:25:54 :D 19:26:08 that'd work too 19:26:13 it's to protect against bugs, after all 19:26:51 so you'd set the NX bit on code after executing it once, and then if it ever goes there again it'll fail gracefully 19:27:02 err no 19:27:05 ah yes 19:27:11 :-P 19:27:13 and NoWrite bit too 19:27:15 as well 19:27:21 well, not necessarily 19:27:24 you can use it for scratch space 19:27:26 yes both are useful 19:27:33 NX for scratch space 19:27:35 sure, const :-D 19:27:38 and NW for code space 19:27:43 Funge++ 19:27:46 NX? 19:27:53 ais523: http://en.wikipedia.org/wiki/NX_bit 19:27:53 ais523, No eXcute 19:28:01 eXecute* 19:28:16 Deewiant, we need a NoRead bit too of course 19:28:22 for write only data 19:28:26 no idea about use 19:28:29 :-D 19:28:33 INTERCAL has a setting that can be placed on a command to prevent it running more than once 19:28:35 but I'm sure someone could make one 19:28:39 (it becomes a NOP after it runs, but can be reset) 19:28:46 ah, there's an idea 19:28:59 Deewiant, also, what about vectored IO for funge? :D 19:29:04 it's used for multithreading synchronisation, and also a convenient way to write an if statement 19:29:08 AnMaster: a fingerprint that sets a mode, so that whenever an instruction is executed it becomes the given instruction 19:29:17 like zM - after that, all executed instructions become zs after executed 19:29:25 'zM rather 19:29:35 yes I know that 19:29:38 you'll end up inventing Malbolge at that rate 19:29:42 :-) 19:30:09 anyone up for the task of writing a malbolge interpreter in befunge? 19:30:46 how about a befunge/malbolge quine 19:30:49 one generates the other 19:31:10 Deewiant, not going to try that 19:31:12 I'm not insane 19:31:23 writing a malbolge interpreter however, isn't as hard 19:31:27 :-) 19:31:36 ... as writing any program in malbolge 19:31:37 malbolge interps are quite easy, normally 19:31:38 the point about malbolge isn't to write interpreters, it's to try and write programs 19:31:51 Deewiant, it is about saneness 19:31:55 although I think it might be impossible to write one in Befunge-93 without some sort of extra storage 19:31:58 I'm not going to write in malbolge 19:32:04 ais523, indeed 19:32:25 maybe someone should invent a 2D version of malbolge 19:32:25 ais523, err what? 19:32:26 no 19:32:34 -93 sucks 19:32:36 that combines the worst aspects of malbolge and befunge 19:32:40 you can load files into befunge98 19:32:59 so just use 98 19:32:59 -_- 19:33:01 * ais523 agrees with Deewiant about -93's lack of storage, or indeed, TCness 19:33:01 AnMaster: as he said, Befunge-93 19:33:01 of course you're fine in -98 19:33:06 true 19:33:09 or well no 19:33:13 you are insane still 19:33:14 :P 19:33:28 (not that I'm claiming to be sane myself in any way!) 19:33:34 AnMaster: any Befunge-98 implementation should easily be able to fit 59049 10-trit words into the playfield memory 19:33:51 ais523, indeed 19:33:51 yes, 'should'. Might not, though. :-) 19:34:08 case in point: a few interpreters crashed on loading mycology 19:34:11 and Malbolge itself is basically an evilly twisted version of assembler 19:34:21 Deewiant, oh? what ones? 19:34:37 AnMaster: can't remember... befunge98 at least 19:34:39 Deewiant: interfunge does that, but to be fair it's designed as a Befunge-93 implementation and doesn't like strings longer than 80 characters on the input 19:34:46 Deewiant, interesting 19:34:55 ais523, err no 19:35:04 ais523, it should discard the extra data 19:35:05 :P 19:35:10 AnMaster: basically here was a bug in his octree code and he 'fixed' it by enlarging the default size :-) 19:35:14 s/here/there/ 19:35:23 Deewiant, lol 19:35:23 AnMaster: CLC-INTERCAL requires you to know the length of a string before you can input it 19:35:43 ais523, then you can't write a conforming interpreter in that language 19:35:44 sorry 19:35:49 not even 93 one 19:35:53 although interfunge is written in C-INTERCAL and therefore should be able to handle line-ends with extra code 19:36:02 ais523, there you are then 19:36:12 you also need to type two newlines at EOF because INTERCAL can't detect an EOF; it errors out instead 19:36:38 ais523, well you would need to pre-process your code then 19:36:39 although I have cunning plans to get around that which involve multithreading 19:36:49 oh god 19:36:59 look, intercal is even more insane than befunge 19:37:10 Befunge always struck me as relatively sane 19:37:18 but then I have a nonstandard set of things to compare it to 19:37:46 btw didn't someone from this channel prove that something was turing complete and win some kind of price for it? 19:37:54 must have been a few months ago 19:38:09 AnMaster: that was me 19:38:14 oh 19:38:29 I looked at the proof pdf or whatever it was, and didn't understand it 19:38:38 there isn't anything very difficult in there 19:38:42 it just goes on and on and on 19:38:43 ais523: what did you prove 19:38:45 me neither :D 19:38:49 I will read it again 19:38:52 that a particular Turing machine was Turing-complete 19:38:55 ais523, how much money= 19:38:57 was it 19:39:00 $25000 19:39:05 although that comes to less in pounds 19:39:13 that is quite a lot I think *coverts to SEK* 19:39:14 ais523: is this on the 'Net somewhere? 19:39:23 http://www.wolframprize.org/ 19:39:26 what did you do with the money? :P 19:39:27 oh, that one 19:39:32 faxathisia: put it in the bank 19:40:12 ais523, still a LOT 19:40:14 although I used a small amount of it to buy this laptop 19:40:16 25 000 U.S. dollars = 152 887.432 Swedish kronor 19:40:18 indeed a lot 19:40:27 enough to buy a car 19:40:40 (small car that is) 19:40:45 or, in my case, just about cancel out my student loan 19:40:54 ah nice 19:40:55 of course, the dollar was much more valuable 6 months ago :-) 19:41:06 bad luck 19:41:20 or rather, good luck that he got the money then and not now 19:41:30 assuming he did get the money back then, and not now :-P 19:41:32 ah maybe? 19:41:33 yes 19:41:35 right 19:41:50 was thinking in reverse 19:41:53 too much befunge 19:41:57 heh 19:42:19 Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time 19:42:42 ais523, err? 19:42:48 it wasn't very efficient 19:42:52 I'm sure mine isn't that effective 19:42:52 I actually thought about that competition when I first saw it, but then I figured it'd be too tedious :-) 19:42:55 at least not the way I programmed it 19:43:15 probably wouldn't have bothered to finish it if I did start it 19:43:19 ais523, ? 19:43:22 kudos for getting it done :-) 19:43:36 AnMaster: the input program is ridiculously long and repetitive 19:43:37 AnMaster: he's talking about wolfram's turing machine 19:43:47 ah 19:43:50 he said befunge too 19:43:53 Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time 19:43:53 (in fact, infinitely long, but finitely many characters can run a program for any finite time) 19:44:10 ais523: yes, where "some turing machine" is wolfram's 2,3 turing machine :-) 19:44:12 err 19:44:13 AnMaster: ^ 19:44:17 ah 19:44:19 right 19:44:45 ais523, wouldn't emulating P'' be the best option? 19:44:50 ais523: but wasn't there something about the proof being flawed? 19:44:57 AnMaster: I emulated cyclic tag systems 19:45:05 ais523, that is? 19:45:10 and as for the argument about the proof, the original concern was based on a misconception 19:45:30 although new concerns emerged as a result which basically demonstrated that nobody is entirely sure exactly what Turing-completeness is anyway 19:45:47 ais523, err, indeed I'm not sure of that 19:45:55 and although my proof is correct, it lead to an argument about whether what it demonstrated was useful or not 19:46:11 ais523, as long as you got the money! ;) 19:46:12 as in, whether the definition of TCness I used was appropriate and/or interesting 19:46:33 but the argument died down suddenly in the middle when the list moderator went on holiday, and never resumed 19:46:39 :-D 19:46:45 (that is, the argument, not the moderator) 19:46:51 heh 19:46:58 ais523, so well was it useful or not? 19:47:02 I think it was 19:47:47 anyone who actually followed through the entire proof - that is, me and at least one of the judges, and possibly other people - realises that I emulate all features of the cyclic tag system in the original Turing machine 19:47:52 s/realises/realised/ 19:47:57 so it's definitely a valid emulation 19:48:10 however, most mathematicians prefer to take a black-box approach to Turing-completeness 19:48:21 which means that you need to be very careful with definitions 19:48:30 and my proof hit the gray area that nobody was sure about 19:48:39 in terms of a black-box approach 19:50:23 ais523, oh? 19:50:30 what does black box mean in this case 19:50:54 that you deduce whether something is TC by applying certain tests to an emulation 19:50:58 rather than seeing how the emulation works 19:51:08 mhm 19:51:31 I don't really aprove of the approach myself, but mathematicians like it because the other method is often hard to define rigorously 19:52:26 Deewiant, wtf is the point of the fingerprint TOYS 19:52:44 AnMaster: like it says, it's toys - random stuff 19:52:55 btw, I'll take this moment to ask 19:52:59 and most pointless, and with silly names 19:53:05 (incidentally, a number of other esolangs came out of the proof. 1cnis came out indirectly, and I invented certain other languages which qualify as esolangs as stages in the proof, although system 5 is probably the only interesting one) 19:53:12 Deewiant, ...where you can get my code? 19:53:16 does anybody know what 'the result of a "butterfly" bit operation' is?! 19:53:27 AnMaster: it's in tribute to INTERCAL character names 19:53:32 Deewiant: yes 19:53:42 aha 19:53:46 you take the sum and the difference of two numbers, then multiply the differenceby a constant 19:53:56 ais523: and what's the constant 19:53:58 it's an operation in Fourier transforms 19:53:59 B ('pair of shoes') pops two cells off the stack and pushes the result of a "butterfly" bit operation. 19:54:09 how am I to understand that 19:54:11 hmm... maybe it's a different operation 19:54:24 because you have to provide the constant in the butterfly operation I know about 19:54:29 and besides, mine isn't bitwise 19:54:31 Deewiant, what does CCBI do for that? 19:54:43 the same as !Befunge 19:54:50 and what does it do? 19:54:54 which has a "/* Guess what this is meant to be... */" comment in the code :-P 19:54:58 umm, befunge actually doesn't have an operator that digs up n deep in the stack and pushes that on top? 19:55:01 it's the only one that implements anything at all 19:55:09 oklokok: nope. only the FRTH fingerprint has something like that 19:55:18 oklokok, of course not 19:55:20 lame :< 19:55:24 AnMaster: of course? 19:55:43 AnMaster: it pushes the sum and then the difference of the values and then reflects 19:55:47 oklokok, of course as it would make coding much easier, and we already used all ASCII chars below 127 19:55:48 :P 19:55:52 that are printable 19:55:53 AnMaster: and outputs a warning if in warning mode, etc. 19:56:06 Deewiant, interesting 19:56:14 mine doesn't reflect but otherwise does the same 19:56:17 Deewiant, who wrote the TOYS thing? 19:56:22 k could be replaces 19:56:24 *replaced 19:56:26 it's useless 19:56:27 the specs I mean 19:56:29 I'm guessing it reflects because the constant wasn't provided...? 19:56:31 oklokok, it isn't! 19:56:37 yeah it is 19:56:39 AnMaster: since it's part of the standard, probably chris pressey 19:56:49 oklokok: Underlambda is going to have a very similar combinator 19:56:49 Deewiant, then, why not ask him? 19:56:53 ais523: possibly 19:57:08 AnMaster: he posted back in 2000 or so that he's 'not very interested in befunge' anymore or something like that :-) 19:57:26 ais523: i'm sure it has a use in underlambda 19:57:26 AnMaster: I figured I'd take the route of implementing everything I can find currently 19:57:28 Deewiant, aha, that explains why I got no answer on my license mail 19:57:31 AnMaster: or choosing not to 19:57:38 AnMaster: and then just leave it at that. 19:57:50 it's just befunge doesn't have many operators worth iterating alone. 19:57:57 AnMaster: yeah, maybe he automatically filters everything with 'befunge' in it ;-) 19:58:01 oklokok, yes it does 19:58:04 like what? 19:58:08 * / \ : and a few more 19:58:09 :) 19:58:15 $ for instance 19:58:22 2222222222222222 88+k* 19:58:24 $ and , are the ones I use 19:58:28 what does that result in? 19:58:30 pop makes sense in some cases 19:58:32 yes , too 19:58:43 but unfortunately using k, turned out to be a bad idea 19:58:48 since interpreters implement k differently 19:58:51 so the output becomes b0rked 19:59:04 Deewiant, well thanks to mycology it won't any more 19:59:23 AnMaster: but I still can't use it in mycology itself :-) 19:59:32 and I probably won't be writing much more befunge :-D 19:59:41 Deewiant, why not? 19:59:47 -!- faxathisia has quit (Connection reset by peer). 19:59:48 are you also no longer interested in the language 19:59:49 :( 20:00:03 I've written more befunge than all others on this planet put together :-D 20:00:22 you are sure? 20:00:23 I was interested in implementing it and then writing that test suite, for fun 20:00:32 of course not 20:00:35 but probably 20:00:35 ah 20:00:38 indeed 20:00:51 Deewiant, however that guy with the crazy domain name comes close I think 20:00:55 but yeah, I never felt like I'd /use/ Befunge for something 20:01:10 AnMaster: not necessarily 20:01:20 Deewiant: I wrote a few Befunge programs as anarchy golf entries 20:01:26 befunge would be nice for mission critical stuff, because it won't crash, it just reflects instead 20:01:27 but I'm not very good at Befunge golfing 20:01:34 so you can know your program won't end 20:01:38 unfortunately it only supports Befunge-93 20:01:46 Mycology is over 100K of Befunge 20:01:48 AnMaster: it could get stuck in an infinite loop easily 20:01:52 ais523, yes indeed 20:01:57 a quick look at J^4 suggests he's written around 30K, maybe 20:01:59 but it wouldn't actually end 20:02:01 or published, at least 20:02:13 if you count nonpublished then I go up to over 200K probably 20:02:27 Deewiant, he likely written more, backspaced written more backspaced again 20:02:34 considering how hard it is 20:02:35 :) 20:02:36 AnMaster: so have I :-) 20:02:51 heh true 20:04:01 the Befunge-93 section of Mycology has been fully rewritten 4 times, I believe 20:04:13 the first time it was much more readable 20:04:19 but it didn't come even close to fitting in 80x25 20:04:25 hah 20:04:40 it looked a bit like the befunge code you showed me you wrote :-) 20:04:42 Deewiant, it isn't readable at all now 20:04:43 although not quite as sparse 20:04:49 yes, because it has to fit in 80x25 20:04:59 and nor is the rest of the code -_- 20:05:03 Deewiant: how much do you cross code over itself? 20:05:06 yes, because I was naïve :-S 20:05:14 ais523: too much, I'd say :-) 20:05:25 ais523, way to much for Deewiant 20:05:26 -!- Hiato has joined. 20:05:33 I avoid doing it when possible 20:05:43 have you seen SNUSP? 20:05:49 ais523, what is that? 20:05:57 http://www.esolangs.org/wiki/SNUSP 20:06:01 it's basically a cross between Befunge and Brainfuck 20:06:08 urgh? 20:06:13 befunge with ] and [ 20:06:13 but with procedures added in (in Modular SNUSP) 20:06:17 and # 20:06:27 and something weird 20:06:29 Deewiant, err befunge got # 20:06:30 which looks like !j 20:06:35 making it really elegant to write constants 20:06:37 AnMaster: err, brainfuck not befunge 20:06:58 Deewiant, and brainfuck got [ and ] 20:07:10 AnMaster: not befunge's ] and [ :-) 20:07:21 SNUSP doesn't use either 20:07:30 just ! as a trampoline 20:07:31 Deewiant, true 20:07:37 and ? as a maybe-trampoline depending on the current tape element 20:07:59 ais523: which I think is equivalent to !j 20:08:14 * ais523 tries to remember what j does 20:08:33 jumps ahead a given number of cells 20:08:58 in that case, yes it's equivalent, apart from only taking up one funge-space cell 20:09:15 yep 20:11:00 Modular SNUSP is the most interesting part of it, though, in my opinion 20:11:10 especially the base-Fibonacci constants 20:11:19 that work using recursive procedure calls 20:25:01 Deewiant, 20:25:03 BAD: ( should have reflected trying to load nonexistent fingerprint 0 20:25:10 does it say anywhere it can't exist 20:25:16 what if I make one with that number? 20:25:40 AnMaster: then Deewiant will add it to Mycology and change the number of the nonexistent one 20:25:50 exactly :-) 20:25:53 now, an interp which had a fingerprint for /every/ 32-bit number might be interesting 20:26:01 ais523, heh :) 20:26:01 AnMaster: but actually, many interpreters define 0 as some sort of internal fingerprint 20:26:12 Deewiant, so that could be a problem then 20:26:25 anyway now mine reflects on any fingerprint 20:26:31 doesn't the spec say that all fingerprints have to be registered? 20:26:33 I haven't coded fingerprints yet 20:26:33 AnMaster: it's part of the reason I chose that fingerprint :-) 20:26:39 so just the y mess left :D 20:27:00 and the sparse thing 20:27:11 so you get to the end? 20:27:18 -!- Hiato has left (?). 20:27:21 Deewiant, I do 20:27:25 not bad :-) 20:27:26 Deewiant, http://rafb.net/p/SNzhKr58.html 20:27:37 still a few BAD around y stuff though 20:29:38 Deewiant, so still some stuff needed to be done 20:29:43 yep 20:29:55 oh and I think mycouser works 20:30:20 Deewiant, no longer the < in mycouser 20:30:26 got no idea what I changed 20:30:30 heh 20:30:39 Deewiant, still the horrible grammar though 20:30:40 :( 20:30:45 UNDEF: BASE fingerprint not loaded, won't check I. 20:30:52 it's absolutely correct 20:30:56 that's just not correct English 20:30:56 I is the instruction that isn't checked 20:31:01 ah 20:31:12 it looks like it's horrible grammer 20:31:16 not to me 20:31:21 since "I won't check" would be equally horrible 20:31:23 adding quotes of some kind around would work 20:31:25 because check needs an object 20:31:28 maybe 20:31:32 but I'm really tight for space already 20:31:45 Deewiant, it doesn't need to fit in 80x25 does it? 20:31:53 I'd prefer it did 20:32:10 since strictly speaking I guess it's valid for a befunge-93 to error out on seeing a file bigger than 80x25 20:32:12 why? 20:32:22 is it? 20:32:31 well, it's probably unspecified 20:32:41 it only says "programs are 80x25" or something probably 20:33:18 * AnMaster notes: add support for stuff like command line parameters 20:33:29 command line parameter parsing is easier to do in bash than C :/ 20:33:38 heh 20:33:43 "Befunge-93 programs have a maximum size of 80x25 total commands and data bytes" 20:33:45 since you're going posix, use getopt, right 20:33:57 implying that any program that's larger isn't valid Befunge-93 20:33:59 yeah, so strictly speaking a befunge-93 program /should/ error on seeing 80x25 20:34:04 er, bigger than 80x25 20:34:26 * ais523 guesses that those dimensions are because they're the standard dimensions of characters on the screen in DOS 20:34:38 Deewiant, getoptlong though :/ 20:34:48 is gnu only 20:34:52 AnMaster: beats me, haven't used getopt 20:35:02 * AnMaster checks gnulib for a getoptlong version 20:35:10 I use the good old way of writing help strings manually and iterating over argv :-) 20:35:28 Deewiant, and that is silly 20:35:39 works fine for me 20:35:41 I would never do that in C 20:35:49 well, in C it sucks a bit more 20:35:52 if windows doesn't have getopt, it can 20:35:52 since you have to use strcmp 20:37:35 C-INTERCAL uses getopt if it's available, but provides its own minimal-but-good-enough version for if it isn't 20:37:51 and autoconf detects whether it's available or not and selects the right version 20:38:09 ais523, autotools :( 20:38:09 -!- oerjan has joined. 20:38:11 * AnMaster use cmake 20:38:21 brb 20:38:22 AnMaster: it only uses autoconf, not the other autotools 20:41:13 I won't use that either 20:43:12 I even wrote some special INTERCAL-specific tests 20:43:33 (one of them tested for the presence of undocumented behaviour in yacc that some of the pre-existing program depended on) 20:51:15 Deewiant: I just noticed that Mycology uses the string 2+2 for testing the PERL fingerprint 20:51:23 aye 20:51:34 that string's a palindrome, so if 0gnirts communication fails by getting the string backwards, you won't notice 20:52:03 true 20:52:31 8/2 would be one way to solve that problem without modifying anything else 20:52:53 I was thinking 3-1 20:52:59 hmm, is that problematic 20:53:11 er, 5-1 of course 20:53:15 it's unlikely to be a problem in practice 20:53:27 but then, most of what Mycology tests is unlikely to be a problem in practice 20:53:33 ;-) 20:53:44 it's just that various interps fail at various different points 20:54:00 multiple things each of which is unlikely to fail, together may be likely for /something/ to fail 20:56:00 ais523: mind if I credit you with your realname on my website? 20:56:07 Deewiant: no 20:56:32 although you may want to use my actual realname, not the one I use on IRC 20:56:40 which is obviously not a real realname 20:56:41 :-) 20:56:50 (it doesn't matter in here, but it does matter in some other channels) 20:58:04 hah, mr. This Is, that's just something you _say_ 20:58:27 another point: ccbi fails Mycology's tests for K in FPSP, at least on my computer, by giving 0 for ln(2) 20:58:41 but it's sneakily marked as UNDEF: on the actual test due to issues with rounding 20:58:46 of course 20:58:57 it may be a case where single-point precision simply can't hold the actual value 20:59:02 strangely the FPDP version is correct 20:59:10 that's double-point precision 20:59:15 so it is more likely to be correct :-) 20:59:17 and I'm sure that 0.693 can be held more accurately than 0 in single-precision floating point 20:59:27 I am checking 20:59:48 UNDEF: K says ln(2) is 0.693147 (0.693147) 20:59:51 works fine here 21:00:03 must be something at my end, then 21:00:23 and also on a school linux comp 21:13:09 ais523, what arch? 21:13:23 Ubuntu 7.10 21:13:27 running on x86 21:14:31 hm 21:14:50 I just got a nice idea 21:14:56 Linux iruel.hut.fi 2.6.20-16-generic #2 SMP Thu Jun 7 20:19:32 UTC 2007 i686 GNU/Linux 21:15:03 use SSE vector instructions for delta and such 21:15:03 ais523: worked on such 21:15:10 Deewiant, what do you think? 21:15:18 as a #ifdef 21:15:26 Linux dell 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux 21:15:35 using gcc intrinsics of course 21:15:38 AnMaster: well, you'd have to benchmark to see if they're actually faster 21:15:42 but it's likely just a misconfiguration of gdc or tango or something at my end 21:15:46 Deewiant, they probably aren't 21:16:09 Deewiant, anyway it finishes mycology fast enough without using -O even so... heh 21:16:38 real 0m0.367s 21:16:38 user 0m0.076s 21:16:38 sys 0m0.022s 21:16:47 Deewiant, how would ccbi do with no fingerprints? 21:16:56 of course, you realize it's only executing a fifth or so of mycology :-) 21:17:02 beats me 21:17:15 Deewiant, I'm aware of that, and it is compiled as 64-bit 21:17:17 real 0m4.975s 21:17:17 user 0m0.718s 21:17:17 sys 0m0.104s 21:17:19 for ccbi 21:17:27 but note! 21:17:35 amd64 got more registers than x86 21:17:43 about twice as many CPU registers iirc 21:17:56 AnMaster: pipe output to /dev/null, how about then 21:18:19 also, and this may be a disadgantage, my code is compiled as -fpic for some reason (blame cmake!) 21:18:21 real 0m2.236s 21:18:21 user 0m0.707s 21:18:21 sys 0m0.050s 21:18:22 for ccbi 21:18:35 real 0m0.243s 21:18:36 user 0m0.073s 21:18:36 sys 0m0.017s 21:18:37 for cfunge 21:18:47 damn, that's slow 21:18:51 real 0.66 21:18:51 user 0.58 21:18:51 sys 0.04 21:18:56 for CCBI on a school linux comp 21:19:01 and /dev/null 21:19:17 os[Linux 2.6.24-gentoo-r2 x86_64] distro[Gentoo Linux (stable)] cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz] mem[Physical : 1.5GB, 46.7% free] disk[Total : 92.82GB, 29.40% Free] video[nVidia Corporation G73 [GeForce 7600 GS]] sound[EMU10K1 - SB Live 5.1] 21:19:36 128 kb cpu cache 21:19:42 odd 21:20:00 well, I dunno 21:20:02 sempron 3300+ 21:20:47 -!- GregorR has quit (Read error: 113 (No route to host)). 21:21:06 well, okay 21:21:10 these are apparently Intel Celeron 2.4 Ghz 21:21:25 so beats me 21:22:49 Deewiant, well a 64-bit version of ccbi would likely be faster 21:22:55 let me try mine with -O 21:23:15 AnMaster: yeah, but I doubt it'd make that big a difference 21:23:22 or maybe it does, then, whatever 21:23:56 -O3 21:23:57 real 0m0.216s 21:23:58 user 0m0.047s 21:23:58 sys 0m0.019s 21:24:05 with cfunge of course 21:24:06 Deewiant: -O2 tends to be much better than -O 21:24:07 wait 21:24:13 AnMaster: that was for you 21:24:15 sorry 21:24:17 -O3 is only really an advantage over -O2 on embedded systems IME 21:24:27 I was compiling in background another thing now 21:24:28 real 0m0.170s 21:24:28 depends on the system and the code in question 21:24:29 user 0m0.045s 21:24:29 sys 0m0.020s 21:24:36 when I abort that compile 21:24:37 Deewiant, ^ 21:25:02 I'm surprised that there'd be a 4x performance penalty for running 32-bit code 21:25:19 Deewiant, depends on register usage 21:25:20 although hmm 21:25:24 real 0m0.234s 21:25:25 user 0m0.065s 21:25:25 sys 0m0.019s 21:25:27 I wonder if the linux ccbi one is compiled with optimizations :-) 21:25:28 with -Os 21:25:38 all these are average on 5 runs 21:25:40 Deewiant, ^ 21:25:54 AnMaster: your numbers mean nothing to me :-P 21:26:02 Deewiant, why not? 21:26:17 it is the normal way 21:26:17 mainly due to the 32/64-bit schism 21:26:21 and secondly, because I don't care much 21:26:39 well I'd try with -m32 except I got no 32-bit boehm-gc installed :P 21:27:13 yes, it seems that the ccbi binary has been compiled without optimizations 21:27:34 Deewiant, even with -O0 mine was fast 21:27:38 real 0m0.243s 21:27:42 * AnMaster points to that 21:27:48 AnMaster: one big difference between the two is how we do instructions 21:27:55 AnMaster: you probably have a big switch in a main loop, right? 21:28:14 Deewiant, well not in main loop no but in a ExecuteInstruction function 21:28:22 so I can call same from k 21:28:26 aye 21:28:29 and I got a if case first for string mode 21:28:34 I have hash tables containing function pointers 21:28:35 in execute instruction 21:28:43 which is immediately a huge performance penalty 21:28:48 Deewiant, I plan doing that for extensions 21:29:13 Deewiant, also I try to flattern out any structures 21:29:15 so rather: 21:29:16 aye, but especially with as good a compiler as GCC you're bound to get a huge performance boost over such 21:29:25 struct whatever { fungevector foo; .... } 21:29:44 than 21:29:44 struct whatever { fungevector * foo; .... } 21:29:50 not a huge difference 21:30:10 and there are two reasons for that I do so: less memory managment needed 21:30:22 faster theoterically 21:30:30 theoretically* 21:30:50 AnMaster: unless you need to make shallow copies of the objects inside 21:30:59 ais523, indeed 21:31:21 typedef struct { 21:31:21 FUNGEVECTORTYPE x; 21:31:21 FUNGEVECTORTYPE y; 21:31:21 } fungePosition; 21:31:21 typedef fungePosition fungeVector; 21:31:32 the reason for that is self documenting code partly 21:31:50 as in, I use the name vector when I mean a vector, and position when I mean a absolute position 21:31:58 makes it easier to read the code 21:34:11 AnMaster: there's a new CCBI binary up which may or may not be faster, but it's compiled with -O this time :-) 21:34:20 Deewiant, link? 21:34:28 iki.fi/deewiant/befunge/ccbi.html 21:34:41 Deewiant, page fails in lynx :/ 21:34:47 O_o 21:34:48 it shouldn't 21:34:50 and I don't want to start firefox 21:35:05 looks good here 21:35:13 ok, maybe lynx version then 21:35:29 Lynx Version 2.8.5rel.1 (04 Feb 2004) 21:35:47 Deewiant, you got a issue 21:35:55 $ ls -l 21:35:55 total 261 21:35:55 -rw-r--r-- 1 arvid arvid 263164 11 mar 2008 ccbi 21:35:55 -rw-r--r-- 1 arvid arvid 1508 7 jan 17.46 license.txt 21:36:04 you may want to set +x on binary in archive 21:36:04 issue? 21:36:09 I'm on windows 21:36:09 I don't know if zip can do it 21:36:10 impossible 21:36:13 but well tar can 21:36:16 tar.bz2 21:36:20 quite possible 21:36:22 is what I recommend for linux binaries 21:36:24 but like said, I'm on windows 21:36:28 where such distinctions don't exist 21:36:32 Deewiant, you crosscompiled? 21:36:38 Deewiant, I think cygwin does +x flag 21:36:39 no, I compiled it on a linux box 21:36:47 but I use UPX to compress it on windows 21:36:54 $ time ./ccbi ~/bashfunge/trunk/mycology/mycology.b98 > /dev/null 21:36:55 real 0m2.418s 21:36:55 user 0m0.542s 21:36:55 sys 0m0.050s 21:36:56 that website seems to work fine for me in w3m 21:37:04 although I haven't tried to download any of the binaries from it 21:37:04 Deewiant, upx is bound to slow it down 21:37:05 AnMaster: heh, slower 21:37:10 as it need to uncompress binary 21:37:11 AnMaster: yeah, but it should be a small cost 21:37:22 AnMaster: the original binary is 1.3 megabytes 21:37:26 optimized that is 21:37:27 Deewiant, depends, it won't be if system enforce NX bit 21:37:29 like mine does 21:37:30 unoptimized it's 0.8 megabytes 21:37:39 AnMaster: ah, that can be a problem 21:37:51 Deewiant, in fact I suspect it will have to create a temp file to run on hardened systems 21:37:53 AnMaster: if you have upx, you can decompress it in place 21:37:59 Deewiant, I don't have upx 21:38:07 AnMaster: portage probably does 21:38:15 Deewiant, nor is it available for amd64 in a stable form 21:38:20 ah, darn 21:38:20 * app-arch/upx 21:38:21 Available versions: *1.25 ~2.02 ~3.00 21:38:26 * AnMaster tries to avoid running ~arch 21:38:33 though sometimes I have to 21:38:54 like for boehm-gc to get some stuff called "Extensible cords" 21:39:14 if you want, try iki.fi/deewiant/ccbi2 21:39:17 uncompressed 21:39:19 "Extensible cords are strings that may be destructively appended to. They allow fast construction of cords from characters that are being read from a stream." 21:39:22 sure 21:40:12 real 0m1.755s 21:40:12 user 0m0.520s 21:40:12 sys 0m0.055s 21:40:13 better 21:40:26 damn, that was a big difference 21:40:28 almost a second 21:40:37 op 21:40:46 and maybe the remaining second can be attributed to 32/64-bit differences 21:40:49 .4 + .3 != 1 21:41:06 0.7 ~= 1 21:41:11 Deewiant, it can't I tried mine as -m32 21:41:12 if you want, "over half a second" instead 21:41:14 it is almost as fast 21:41:23 well whatever 21:41:34 real 0m0.307s 21:41:34 user 0m0.076s 21:41:34 sys 0m0.015s 21:41:35 with 32-bit 21:41:51 if I could be bothered to get GDC running this might end up being a lot faster 21:41:57 but I can't, so. :-) 21:42:18 Deewiant, gdc is faster than dmd? 21:42:28 maybe 21:42:29 -!- RedDak has joined. 21:42:31 Deewiant, anyway function pointers in hash map is slower 21:42:35 with GCC 4.x, probably 21:42:40 of course, that's what I said 21:42:47 Deewiant, a static array index by char would be faster 21:42:48 it's much slower than whatever GCC compiles a switch to 21:43:06 yes, it would be 21:43:16 and a switch statement would be even faster :-) 21:43:28 Deewiant, tried that? I guess something on the lines of instructions[127] would be all that was needed 21:43:44 if you can do such stuff in D 21:43:58 AnMaster: would have to have extra checking for unimplemented instructions like control chars 21:44:04 and it'd have to be 255, of course 21:44:10 ok 21:44:25 so 21:44:36 and I might have to rewrite the way fingerprints are done, not sure 21:44:38 put the r instruction in the rest of the slots 21:44:39 :) 21:44:43 for control chars 21:44:53 aye 21:44:59 and why 255? 21:45:14 hmm, never mind actually 21:45:20 if (opcode < 127) { use array here } else { reflect here } 21:45:21 :) 21:45:27 there's a fingerprint that allows rewriting instructions 21:45:30 err actually 21:45:32 < 128 21:45:40 * AnMaster sucks at off by one issues in arrays 21:45:40 but it's implemented separately, doesn't modify the main instructions array 21:45:56 -!- olsner has joined. 21:46:04 Deewiant, anyway fingerprints, yes you would need some way to layer them 21:46:04 true 21:46:19 so for A-Z you would need something slightly different 21:46:20 they're done separately though 21:46:25 so it shouldn't matter 21:46:26 Deewiant, btw, want to see my switch case? 21:46:57 it's "inlined" mostly 21:47:04 http://rafb.net/p/Ry1n7736.html 21:47:07 XD 21:47:21 just k and y are outside 21:47:25 because they were so complex 21:47:31 ew, messed up indentation 21:47:33 and y is still broken 21:47:36 Deewiant, what? 21:47:39 I like that style 21:47:40 :) 21:47:44 O_o 21:47:47 do { 21:47:47 ipForward(1, ip, fspace); 21:47:47 } while (fungeSpaceGet(fspace, &ip->position) == ' '); 21:47:55 err that is pastebin messup 21:48:01 thought so :-) 21:48:14 do { 21:48:14 ipForward(1, ip, fspace); 21:48:14 } while (fungeSpaceGet(fspace, &ip->position) == ' '); 21:48:17 is how it looks here 21:48:33 Deewiant, and so it does on pastebin in firefox I notice 21:48:51 "show as plain text" looks smart 21:49:10 Deewiant, non-plaintext looks ok in konq and firefox 21:49:40 actually I wonder 21:49:50 I may have a off by one issue with ; 21:49:51 I'm on firefox 3 beta 3 21:49:59 Deewiant, firefox whatever the stable is on gentoo 21:50:07 2.0.0.12 prolly 21:50:09 [I] www-client/mozilla-firefox (2.0.0.12@2008-02-15): Firefox Web Browser 21:50:11 indeed 21:50:15 64-bit version 21:50:32 do { 21:50:33 ipForward(1, ip, fspace); 21:50:33 } while (fungeSpaceGet(fspace, &ip->position) != ';'); 21:50:39 doesn't that have a off by one issue? 21:50:49 as I forward at end of main loop once 21:50:52 or? 21:51:04 wait it doesn't 21:51:05 no, shouldn't be a problem 21:51:06 it's fine 21:51:08 as you forward up to the ; there 21:51:10 and then past it 21:51:47 Deewiant, anyway bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge08 21:51:51 if you want the whole thing 21:51:58 my bzrweb is currently broken 21:52:03 haven't had time to look at problem 21:52:13 so just go to bazaar-vcs.org 21:52:17 and get your copy today :) 21:52:22 :-) 21:52:23 maybe later 21:52:28 the best distributed version control system IMO :D 21:52:36 I like mercurial myself 21:52:38 * AnMaster ducks for git and mercurial dans 21:52:40 fans* 21:52:48 Deewiant, mercurial isn't too bad 21:52:50 it is git I hate 21:53:01 I don't like git because it doesn't work on windows :-) 21:53:07 or didn't, I guess it does now 21:53:09 http://changelog.complete.org/posts/698-If-Version-Control-Systems-were-Airlines.html' 21:53:13 err remove ' at end 21:53:14 yes, I saw that 21:53:24 ah? 21:53:35 * AnMaster saw it posted in #friendly-coders recently 21:53:43 I don't normally read blogs 21:53:49 I saw it on reddit myself 21:53:53 on what? 21:54:00 http://reddit.com/ 21:54:02 slashdot, dig and such: I don't do them 21:54:07 or digg or whatever 21:54:14 your loss :-) 21:54:19 although in the case of digg, maybe a win ;-) 21:54:26 hah :) 21:54:42 I got better things to spend my time on 21:57:46 * AnMaster wonders how a license like http://www.sunrisetel.net/software/devtools/sunriseDD/LICENSE can be GPL compatible 21:58:30 that library would otherwise provide the perfect hash table 21:58:57 "The Sunrise Data Dictionary is a library for lock-free hash table storage of arbitrary data objects with built-in reference counting and guaranteed order iteration for the C programming language. It can be used with the Boehm garbage collector, participate in external reference counting systems or use its own built-in reference counting. It comes with a variety of built-in hash functions and allows t 21:58:57 he use of runtime supplied hash functions via callback." 21:59:00 looks very nice 21:59:08 and it says license is GPL2 compatible 21:59:13 but what about GPL3? 22:00:04 * oerjan recalls GPL2 containing an "or any later version" clause 22:00:36 yep you can do "gpl2" or "gpl2 or any later" 22:00:49 but you don't need to do the later version bit 22:00:49 oh it's author's choice? 22:00:55 oerjan, it is 22:01:23 oerjan: much GPL stuff is licensed with an or-later 22:01:43 but there's no legal requirement to put that clause in if you don't want to 22:01:43 but or-later is is the most common way 22:01:47 GPLv3 also allows an 'or later, but only if such and such a person says so' 22:02:03 ais523, ah nice didn't know that 22:02:08 * AnMaster will change his to that 22:02:45 as in, you get to choose who says a license is a version of the GPL, in case you don't trust the FSF to keep the spirit of the license the same 22:03:18 ais523, indeed I often wondered if GPL4 is where RMS will go mad 22:03:30 he tried to in the early drafts of gpl3 22:03:36 in what ways? 22:03:55 ais523, I can't see the "such and such person" clause in gpl3 document? 22:04:04 search for the word 'proxy' 22:04:27 what exact wording should I use in my files for that? 22:04:39 I don't know offhand 22:04:46 it doesn't say 22:04:48 not being a lawyer, or an expert on GPLv3 22:05:56 I'd suggest using the same wording as the license itself 22:06:20 as in, " is a proxy who can decide which future versions of the GNU General Public License can be used." 22:06:29 but that's just a guess 22:14:01 wow this looks good 22:14:16 POSIX.1-2001 got some hash functions built in 22:14:17 Deewiant, ^ 22:14:18 :D 22:14:25 thought it might :-) 22:14:27 hcreate, hdestroy, hsearch 22:14:37 no idea about preformance though 22:14:50 AnMaster: if you feel like more benchmarking, CCBI uses a static array for instructions now 22:15:02 Deewiant, got a download? 22:15:43 iki.fi/deewiant/ccbi2 as before 22:16:15 might make some difference but probably not very much 22:16:40 Deewiant, btw even that version wants executable stack 22:16:53 hm, wonder why 22:17:13 might be something in the compiler runtime 22:17:17 $ scanelf -txebS ccbi2 22:17:17 TYPE PAX STK/REL/PTL TEXTREL BIND SONAME FILE 22:17:17 ET_EXEC PeMRxS RWX --- RW- - LAZY ccbi2 22:17:21 that is how it looks 22:17:30 looks greek to me :-D 22:17:38 wants executable stack 22:17:43 that is the bad part 22:17:46 STK 22:17:48 and under it 22:17:49 I suppose there's no way of figuring out why 22:17:50 RWX 22:17:55 Deewiant, no clue 22:18:07 Deewiant, at least *I* can't 22:18:16 you would need to look at your linker 22:18:17 and such 22:18:23 yeah, and that's tricky 22:18:28 closed source, written in asm :-P 22:18:34 or no, actually 22:18:37 on linux it uses ld I think 22:18:43 $ scanelf -txebS cfunge08 22:18:43 TYPE PAX STK/REL/PTL TEXTREL BIND SONAME FILE 22:18:43 ET_EXEC ---xe- RW- R-- RW- - LAZY cfunge08 22:18:47 much saner 22:18:58 non-executable stack 22:19:17 any performance difference between this version and the last? 22:20:02 real 0m1.743s 22:20:02 user 0m0.515s 22:20:02 sys 0m0.063s 22:20:15 so not much 22:20:20 indeed 22:20:44 have a look at iki.fi/deewiant/asdf 22:20:44 Deewiant, and PaX really doesn't like executable stack! 22:20:49 does it claim to want executable stack 22:21:02 Deewiant, it does 22:21:08 AnMaster: it's hello world :-/ 22:21:31 AnMaster: how about this one, same file 22:21:48 I got no idea why, but I can't paste output, pasting just broke it seems 22:21:56 into my irc client only 22:22:00 heh 22:22:31 AnMaster: so what about that one 22:22:38 Deewiant, current version of that file also wants X stack 22:22:44 that's just an empty main function 22:22:49 so it looks like it's the compiler's fault 22:22:55 then blame the compiler for being crappy 22:23:00 :-) 22:23:09 rather, written in a time when this wasn't an issue 22:23:12 maybe there's something in the frontend 22:23:23 tried gdc? 22:23:34 would require recompiling gcc 22:23:39 to install it 22:23:41 you got gcc don't you? 22:23:44 Deewiant, true 22:23:56 and I'm on a school comp, can't be bothered to pull out my gentoo laptop 22:23:56 and why I have no plans on getting a newer version 22:24:05 ah you run gentoo :D 22:24:33 Deewiant, still when I implement finger prints mine will be slower 22:24:36 I will do a few 22:24:39 I won't do them all 22:24:49 that's what I thought at first, as well ;-) 22:25:01 Deewiant, you didn't do them all 22:25:05 WIND and SNGL 22:25:09 all but 2 or 3 22:25:17 SGNL can't work on windows so it's out for not being portable 22:25:21 and WIND is just crap :-D 22:25:32 Deewiant, and I think TURT is silly too 22:25:49 is there any *stream IO* fingerprint 22:25:54 unlike i/o instructions 22:26:02 that hardly would work on binary streams well 22:26:02 there's FILE 22:26:14 which implements fopen/fread-instructions and such 22:26:29 Deewiant, so just write a PNG/SVG writing routine in befunge? :P 22:26:32 using FILE 22:26:53 yeah, you could :-) 22:26:58 TURT is just silly 22:27:07 Deewiant, how do you create svg files btw? 22:27:12 in your D app I mean 22:27:23 you use some library for it? 22:27:26 no, manually 22:27:29 it's all in the source 22:27:36 I read the SVG spec a bit 22:27:39 isn't svg xml-o-crap? 22:27:41 it's pretty simple actually 22:27:50 * AnMaster prefers S-Expressions 22:27:50 if all XML is crap to you, then yes :-P 22:27:53 but it could be worse 22:27:56 * Deewiant also 22:28:02 ever played supertux? 22:28:05 nope 22:28:07 mario like open source game 22:28:13 side scrolled platform jump 22:28:20 * AnMaster is one of several developers on it 22:28:30 AnMaster: I got somebody to compile a GDC version for me, iki.fi/deewiant/test4 22:28:34 it uses S-Expressions for data files, and thanks to it I learnt to love S-Expressions 22:28:35 see if that needs executable stack 22:28:40 (I don't have scanelf) 22:28:55 Deewiant, it doesn't need it 22:29:01 okay 22:29:24 * AnMaster wonder WTF is up with pasting in xorg 22:29:38 yesterday middle mouse button paste into lyx died 22:29:50 now it's emacs running my irc client 22:30:21 Deewiant, ever used lyx? 22:30:37 LaTeX with WYSIWYM (what you see is what you meant) 22:30:37 nope 22:30:40 very nice 22:30:58 you just take care of the structure it does the formatting 22:31:07 it works very well 22:31:52 Deewiant, if you want to see my (still not allowed with copyright though!) funge08 specs I can DCC the generated pdf that looks awesom 22:32:02 and allow you to give some input on my changes if you want 22:32:16 AnMaster: one last one, iki.fi/deewiant/foo 22:32:29 AnMaster: I don't really have time now 22:32:50 Deewiant, no executable stack in that one, but unlike test4 it doesn't have sane PaX flags 22:33:03 sane? 22:33:17 insane: as in PaX flags being PeMRxS 22:33:24 how's that insane 22:33:31 sane: as in ---xe- 22:33:31 like said it's all greek to me :-) 22:34:05 so what does PeMRxS mean 22:34:27 Deewiant, because it basically means that PaX (hardened kernel thing for NX) would allow lots of things 22:34:28 a sec 22:34:46 or rather, what are the differences to ---xe- 22:35:14 Deewiant, I can't paste into irc client atm so... 22:35:22 got a link or something? 22:35:33 PAGEEXEC EMUTRMAP MPROTECT RANDMMAP RANDEXEC SEGMEXEC 22:35:36 those are the flags 22:36:10 so it's got more protections enabled 22:36:25 less 22:36:37 chars mean those are disabled 22:37:05 or "BAD" 22:37:05 as you would say in mycology 22:37:05 :P 22:37:36 apart from the e there 22:37:40 it is actually good 22:37:50 aye 22:38:05 there's no way for you to disable PaX temporarily or anything, to see if CCBI runs faster? 22:38:19 the x is bad, but you need compile and link with -fpic -fpie -pie to make that work 22:38:29 Deewiant, not without recompiling kernel and rebooting 22:38:29 :P 22:38:33 meh :-P 22:38:36 shouldn't take too long :-P 22:38:49 Deewiant, I got a blender render running now 22:38:58 huge size very slow 22:39:10 guess 24 hours from now or so 22:39:10 maybe 22:39:15 meh, cancel it, this is more important >_< 22:39:27 Deewiant, also another thing: I like my uptime 22:39:38 meeh 22:39:44 had it at 180 days at most 22:39:57 currently at 19 due to power outage :( 22:40:01 heh 22:40:06 so it's not a big loss anyway ;-) 22:40:10 it is 22:40:20 and I don't want to disconnect from irc 22:40:42 currently on 397 channels spread over 23 networks 22:41:11 O_o 22:41:32 I see, that's why you don't have time for things like slashdot ;-) 22:42:29 heh 22:42:39 I'm ircoper on some smaller networks 22:43:59 night 22:44:05 night 22:49:15 -!- Deformative has joined. 22:49:55 -!- Deformative has left (?). 22:56:12 -!- ais523 has quit ("too tired to concentrate"). 22:58:13 -!- RedDak has quit (Remote closed the connection). 23:07:23 http://www.vjn.fi/oklopol/befunge.txt 23:07:29 -!- Deformative has joined. 23:07:34 http://www.vjn.fi/oklopol/befunge.txt 23:07:49 god it took long to get intuition for that 23:08:16 * oerjan laughs and points 23:08:29 now if i just understood it as well... :D 23:09:48 it's a simple copypaste solution 23:10:14 i'll make something real when i have time 23:13:45 i didn't even have time to obfuscate it 23:14:08 also, it's heavily commented :o 23:14:12 This is the stack 23:18:35 i noticed that, after a while. first i thought those were some strange commands... 23:18:47 hehe 23:35:53 hmm... 23:36:10 might be fun to make something that executes english sentences 2008-03-12: 00:05:57 -!- BMeph has joined. 00:07:30 -!- RodgerTheGreat has joined. 00:07:41 hey guys, quick question- 00:07:47 -!- Corun has joined. 00:07:59 I feel like I'm taking crazy pills, because I just *KNOW* there must be an easy way to do this: 00:08:27 I want to take a 2d component vector and generate a unit vector representing the same angle. my approach is as follows: 00:08:40 double vx = blah; 00:08:48 double vy = blah; 00:09:01 double max = very close to zero, like .00001; 00:09:29 just divide by length 00:09:31 but do go on 00:09:40 if (abs(vx) > abs(vy)) {max = vx;} else if (vy != 0) {max = vy;} 00:09:57 double uvx = vx/max 00:10:03 double uvy = vy/max 00:10:06 like that 00:10:20 -!- timotiis has quit ("leaving"). 00:10:25 i don't get how that does it 00:10:40 perhaps i'm misunderstanding you 00:10:54 the length of that will most definately not be one 00:11:07 because one of those will be 1, and the other nonzero 00:11:11 I understand that 00:11:24 but that works? 00:11:26 so "unit vector" was probably unclear 00:11:32 probably 00:11:33 that does essentially what I want 00:12:07 i see :P 00:12:07 you're using the max (L^infinity) norm... 00:12:14 umm 00:12:31 ah 00:12:31 right 00:12:33 heh :D 00:12:40 but since calculating the length of one of these vectors would involve an application of the pythagorean theorem, it doesn't seem like that approach is necessarily any faster or simpler 00:13:45 I suppose a better way to phrase this question is "is the way I'm currently doing this astoundingly stupid?" 00:14:01 well, as oerjan said, it's not the cartesian unit vector 00:14:02 um what kind of length do you want to be 1 in the final vector? 00:14:09 so it's not stupid, it's wrong 00:14:13 -!- sebbu has quit ("@+"). 00:14:27 or is cartesian the superset for n-norm? 00:14:32 i don't really know anything. 00:14:57 also even if you did want L^inf, (cartesian = L^2) you would want to divide on abs(max), not max 00:15:25 hm. 00:15:29 ah, right 00:16:14 does this mean infinity is even? :D 00:16:26 ah yes, it appears I'm already doing it that way in my code. I simply forgot some abs()es in my example above 00:16:41 (don't you need abs for odd exponent norms only) 00:16:58 (i'm not sure about anything, and i have my math matriculation exams tomorrow :DDDDDDDDDDD) 00:17:14 (i guess i should sleep, it's 1:16 or soemthing) 00:17:54 RodgerTheGreat: especially for 2d, you need the unit vector anyway for most things 00:18:03 so why not calc it 00:18:14 I just know a modicum of trig, physics and calculus that I really absorbed during school and stumble my way through the math with a pencil and graph paper when I need to do things for games and the like 00:18:37 wouldn't my result be off by a constant multiple this way? 00:18:48 well, not really 00:18:58 because you could just divide by that constant otherwise 00:19:12 and have a non-pythagorean unit vectorizer 00:19:15 er, your _original_ vector is off by a constant multiple 00:19:31 er, scalar multiple 00:19:43 yes 00:20:01 i thought constant meant... constant 00:20:10 and to get a unit vector you have to find that multiple (the length) and divide by it 00:20:43 good start, oerjan, now to confuse him with awesome math :-) 00:21:06 ...not gonna? :< 00:21:09 my approach represents the correct angle, but is clearly longer than the unit vector 00:21:29 RodgerTheGreat: as was the original, ofc 00:21:45 yeah, I follow you 00:21:52 if you only need a _canonical_ vector in the same direction, any length will be fine 00:22:18 so what's computationally cheaper- the pythagorean theorem, or my if-then-else? 00:22:29 oerjan: yeah, that's why it's working for my purposes 00:22:35 in fact it might be simpler to use L^1: abs vx + abs vy 00:22:38 RodgerTheGreat: yours, but i don't really see its point 00:23:00 RodgerTheGreat: in that case, i suggest Identity 00:23:14 oerjan: ah- that's an excellent idea 00:23:30 RodgerTheGreat: what do you need this for? 00:23:50 oklokok: I do calculations of this form in several places for a game I'm working on 00:24:00 for what purpose? 00:24:13 if you have a java compiler installed, I can show you the source 00:24:25 oklokok: just for fun. I'm on vacation, so I'm entertaining myself 00:24:26 preferably tell me quickly, for i should go :P 00:24:29 -!- GregorR has joined. 00:25:06 RodgerTheGreat: i'd say just calculate the square root, you can get a nice approximation with a constant number of steps 00:25:07 it's kinda a cancer simulation, although it's not biologically accurate at all 00:25:33 there are tricks for getting accuracy up to a one hundreth with just a few divisions 00:25:36 * oklokok searches 00:26:29 hmm, actually i don't have any recollection where i saw that 00:27:11 essentially, it simulates a large pile of cells that can move around, bounce off one another and do the usual physics-engine stuff, and you control a swarm of infected cells that can capture healthy cells, all while being harassed by immune-system cells. 00:27:51 well, l^1 looks very *square*, in at least two meanings of that word 00:28:18 what do you use the unit vector for? 00:28:27 yeah it's the taxicab metric 00:29:04 in one case, I'm positioning the nucleus of a moving cell based on its current velocity 00:29:14 ah 00:29:21 you don't want l^1 then 00:29:33 (although that's actually a poor example, because there I divide by the defined terminal velocity of the cell) 00:29:46 because the thingie will move on a square around the cell 00:29:51 *the nucleus 00:29:57 I just run into this type of calculation from time to time 00:30:10 the velocity is a vector - you don't need to turn it into a unit vector to add it to position 00:30:30 oerjan: i guess the cell can move at any speed? 00:30:40 RodgerTheGreat: just store the damn unit vector 00:30:45 I store and manipulate vectors in unit format, not polar 00:30:49 you'll need it for everything anyway 00:31:09 i am talking cartesian format 00:31:12 polar isn't that useful for games 00:31:23 we're all talking cartesian 00:31:26 new_pos = old_pos + time_diff * velocity 00:31:27 oklokok: really depends on the game 00:31:47 oerjan: yes, that's how I do it 00:31:48 RodgerTheGreat: if there's drawing / moving, cartesian is the way to go. 00:32:08 I have a fairly good understanding of this stuff in an applied sense 00:33:05 oh, god, i really need to go 00:33:14 but have fun with your cells! -> 00:33:27 yeah, I 00:33:42 I'm going to have to get going myself, but thanks for the suggestions, guys 00:34:18 -!- RodgerTheGreat has quit. 00:57:41 -!- Quendus has joined. 00:57:45 \o/ 01:03:33 -!- oerjan has quit ("Good night"). 01:33:53 -!- Corun has quit ("This computer has gone to sleep"). 01:37:42 -!- jix has quit ("CommandQ"). 01:39:25 -!- CakeProphet has joined. 02:50:42 -!- calamari has joined. 02:50:51 hi 03:59:41 -!- CakeProphet has quit ("haaaaaaaaaa"). 04:16:05 pikhq: how's your os project going? 04:21:18 -!- immibis has joined. 04:26:26 calamari: Going decently. 04:26:30 Although not much has happened yet this week. . . 04:26:30 -!- ohgrfilth has joined. 04:27:06 -!- ohgrfilth has left (?). 04:32:21 -!- immibis has left (?). 04:32:21 -!- immibis has joined. 04:32:22 -!- immibis has left (?). 06:16:59 -!- adu has joined. 06:41:56 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:02:48 -!- BMeph has quit ("calls it a night"). 08:43:19 -!- adu has quit (Remote closed the connection). 09:27:27 -!- oerjan has joined. 09:32:56 -!- slereah_ has joined. 09:32:56 -!- slereah__ has quit (Connection reset by peer). 09:36:15 -!- olsner has quit ("Leaving"). 09:41:00 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 09:41:15 -!- slereah_ has joined. 11:22:08 Deewiant, changed to a hash library, no idea if it is the best one, but licence is nice and it's simple to use, still faster than ccbi at mycology though 12:45:22 Deewiant, also the ccbi from you, is broken it seems, it does not pass mycoterm 12:45:29 "\E[H\E[2JC was called, the screen should have cleared." 12:45:36 and no clearing 12:45:51 NCRS work however 12:45:55 yeah, the curses stuff is messed up 12:45:59 I don't know how it should be done 12:46:10 or rather, it doesn't use curses 12:46:15 but the ECMA-48 CSI sequences 12:46:32 they worked on cygwin, I think 12:48:16 well.... 12:48:24 Deewiant, you should use terminfo 12:48:27 AnMaster: btw, there's a GDC-compiled version of CCBI up at iki.fi/deewiant/ccbi 12:48:35 I don't know how that stuff works 12:48:43 man 5 terminfo 12:48:59 I just copied RC/Funge's implementation 12:49:05 and, just use curses to do it 12:49:06 :) 12:49:11 curses will use terminfo databse 12:49:13 database* 12:49:15 yeah, that's probably the best option 12:49:29 Deewiant, not sure about that, but it is the *easiest* 12:49:47 there is some libtermcap if you want to do it yourself iirc, or maybe it was libterminfo 12:50:00 anyway termcap is older name for same thing iirc 12:50:13 there probably aren't D bindings for that and I can't be bothered to do that since I've got working curses 12:50:30 Deewiant, you need special bindings? 12:50:41 nothing 'special', no 12:50:43 you can't just use a C header file like you can in C++? 12:50:45 just define extern(C) function 12:50:48 nope 12:50:54 D doesn't use .h files 12:50:58 terminfo is an improved system on termcap iirc 12:51:04 oerjan, something like that 12:51:11 AnMaster: anyhoo, what are the timings like for that GDC-compiled one 12:51:15 I never messed with terminfo/termcap other than from bash anyway 12:51:18 just to see if PaX makes that big a difference 12:51:24 and in bash I just use the tput command 12:51:27 i don't think they are particularly backwards compatible 12:51:41 Deewiant, iirc slightly less as I told you? 12:51:48 wasn't a big difference 12:51:51 AnMaster: you haven't run that one 12:51:57 err link then? 12:52:02 AnMaster: I said it above 12:52:11 ah 12:52:13 right 12:52:52 hmm, I can't use curses, right 12:52:53 real 0m1.623s 12:52:53 user 0m0.477s 12:52:53 sys 0m0.053s 12:52:59 Deewiant, you can't? 12:53:04 -!- atsampson has quit (Read error: 104 (Connection reset by peer)). 12:53:14 Deewiant, so about 0.1 second difference 12:53:17 AnMaster: curses needs to init itself 12:53:24 AnMaster: that was with GCC 4.1.2, -O3 12:53:25 -!- atsampson has joined. 12:53:31 but PaX markings are good anyway, because it allows things to be more secure :) 12:53:36 when running under a hardened kernel 12:53:56 AnMaster: so since curses needs to init itself, I'd have to init it for the whole program and then use curses for all output 12:54:06 less risk for stuff like buffer overflows and such 12:54:15 Deewiant, ah ok 12:54:19 because TERM doesn't have any "initialize" instruction, but NCRS does 12:55:40 hmm 12:55:49 tput uses curses it seems 12:56:15 but it doesn't clear the screen at the start or such 12:56:21 like NCRS do 12:57:00 initscr() does that 12:57:13 ok, I guess tput doesn't do that part of ncurces 12:57:32 hrm, you can't really do anything if you haven't done initscr 12:57:47 -!- oerjan has quit ("dnorf"). 12:57:55 well it just gets terminfo stuff and outputs capability 12:58:03 "The initscr() function also causes the first refresh operation to clear the screen." 12:58:13 Deewiant, well, no idea then 12:58:22 tput doesn't clear the screen 12:58:24 man tput 12:59:07 hmm, term.h 12:59:49 /usr/include/ncursesw/term.h ? 13:00:04 probably 13:00:38 $ diff /usr/include/term.h /usr/include/ncursesw/term.h 13:00:38 47c47 13:00:38 < #include 13:00:38 --- 13:00:38 > #include 13:00:38 heh 13:01:28 Deewiant, btw can a fingerprint be loaded several times? 13:01:32 sure 13:01:40 say 1) load fingerprint 2) load some other 3) load it again 13:01:47 and for ccbi, would that call intscr() again 13:01:48 or even just 1) load fingerprint 2) load it again 13:02:00 for NCRS 13:02:07 yes, it probably would 13:02:17 Deewiant, it probably shouldn't 13:03:11 so what should one do after endwin()? 13:03:20 and hmm, actually it won't 13:03:32 AnMaster: since initscr() is only called when the instruction I is called 13:03:38 nothing happens when loading NCRS 13:05:07 * AnMaster notes having one malloc / cell is stupid, but, oh well 13:05:56 it's still about twice as fast as ccbi even for apps without fingerprints. 13:05:57 :) 13:06:27 weird, now pasting started working in irc client again 13:06:30 * AnMaster shrugs 13:06:44 Deewiant, btw, does D use a garbage collector? 13:06:58 yes, built-in 13:07:30 not boehm then when using gdc? 13:07:37 no 13:07:44 Deewiant: what age are ya? 13:07:49 oklokok: 20 13:07:54 considering boehm is used for the gcj thing iirg 13:07:56 iirc* 13:08:21 Deewiant: math matriculation exams were just now, so i was just checking whether you happened to do that too 13:08:57 nope 13:09:55 prolly not, programmers tend not to fail enough to be at high school at the age of 20 13:10:02 heh 13:10:14 * oklokok hopes he's not insulting too many here 13:11:51 is this thue-day, unlambda-day or brainfuck-day? 13:12:06 mycotemp.tmp: ASCII text 13:12:06 mycotmp0.tmp: DBase 3 data file (590422062 records) 13:12:13 Deewiant, wtf did it write to mycotmp0.tmp 13:12:27 oh? looks like part of a funge program 13:12:28 AnMaster: just some binary 13:12:31 I think 13:12:34 can't remember 13:12:48 Deewiant, also should mycotemp.tmp have a ending newline? 13:13:06 I don't know, probably not if it doesn't have one and Mycology is happy :-P 13:13:08 mycotmp0.tmp got an ending newline, mycotemp.tmp does not 13:13:10 they're just tmp files 13:13:19 Deewiant, that it doesn't remove afterwards heh 13:13:27 yeah, because it can't be done portably 13:16:35 whoo down with 0.2 seconds thanks to some tricks :) 13:16:57 (not really fair to compare, as it's a trick you can do on any binary) 13:17:03 called prelinking 13:17:16 oh wait this is a debug build 13:18:15 ok down with another 0.2 now, almost as fast as with static array for fungespace 13:18:21 real 0m0.348s 13:18:21 user 0m0.108s 13:18:21 sys 0m0.020s 13:18:24 cfunge :) 13:18:37 * AnMaster goes to fix y instruction now 13:19:24 AnMaster: how do you do output, btw 13:19:28 I mean just basic , 13:19:42 , = putchar((char)a); 13:19:48 . = printf("%ld ", a); 13:20:03 and I flush after each put char 13:20:07 I probably shouldn't do that 13:20:18 would make it faster to just flush at input or newline 13:20:22 probably 13:20:35 Deewiant, what do you think? 13:20:35 I need to have an if branch at each ',' because of the TRDS fingerprint 13:20:45 that fingerprint really BURNS MY ASS 13:20:54 Deewiant, oh? why? I don't understand what TRDS is really 13:20:57 stupid fool had to write the spec for it and didn't implement it even half properly 13:20:59 travel in time it says 13:21:01 aye 13:21:08 but what does it mean 13:21:10 so you can go back in time, say, 200 ticks 13:21:16 then modify funge-space there so stuff happens differently 13:21:31 ah 13:21:57 sounds like that think ais[0-9]+ (can't remember actual nick) talked about 13:22:00 for intercal 13:22:03 MAYBE statement 13:22:07 that was such a mess in C 13:22:14 using setjmp and what not 13:22:39 Deewiant, so I'm not going to implement TRDS then 13:22:42 :) 13:22:53 I suggest you don't 13:23:00 it's /hard/ 13:23:05 to get it to work properly 13:23:10 I will do null, but anyway first I'll get y correct 13:23:18 I have 50-line comments in CCBI explaining some TRDS-related stuff 13:23:21 and proper command line parsing 13:23:23 and I'm still not sure I've got it right 13:23:26 using getopt of course 13:23:35 heh, null is just the default 13:23:45 Deewiant, indeed, but I got a question 13:23:46 say: 13:24:16 you load "PRINT", then load NULL, then unload NULL 13:24:27 should instructions now map to PRINT again 13:24:28 ? 13:24:39 yep 13:24:55 so you need to keep some special instruction stack for each char to get loading right 13:25:01 yep 13:25:19 also, is it possible to do load PRNT, then QUUX then unload PRNT 13:25:24 that is unload out of order 13:25:35 and what should happen in such cases 13:27:03 just what you expect 13:27:14 Deewiant, I got no idea what would happen then 13:27:15 if PRNT defines ABC and QUUX defines ABCDE 13:27:20 yep 13:27:22 then after that DE are bound to QUUX and ABC to PRNT 13:27:39 and then if you unload QUUX 13:27:47 DE are bound to PRNT 13:27:49 err 13:27:51 what? 13:27:55 :-P 13:28:00 go over it, draw a diagram or two if it helps 13:28:26 1) load PRNT 2) load QUUX 3) *UN*load PRNT 13:28:38 you must have misunderstood what I meant? 13:28:43 no, I believe I was quite correct 13:28:46 err 13:28:48 okay 13:28:53 PRNT defines A, B, and C 13:28:55 yep 13:29:00 QUUX defines A, B, C, D, and E 13:29:05 you load PRNT 13:29:12 A, B, C are bound to PRNT's funcs 13:29:18 you load QUUX 13:29:19 so far I'm with you 13:29:24 ABCDE are bound to QUUX's funcs 13:29:28 yep 13:29:30 that I got 13:29:31 unload PRNT 13:29:36 so, unload ABC 13:29:43 so DE remain bound to QUUX's funcs 13:29:51 so wait, it unloads ABC even though those are bound to something else? 13:30:01 ABC become bound to PRNT's functions because that was what they were bound to before 13:30:07 yep 13:30:07 i.e. 13:30:10 A has a stack 13:30:15 aye 13:30:17 [PRNT, QUUX] 13:30:24 with the top on the right 13:30:29 so you unload PRNT 13:30:30 yep 13:30:33 you pop one off the stack 13:30:37 you're left with [PRNT] 13:30:50 DE still have a stack of the form [PRNT, QUUX] 13:31:07 because when unloading PRNT, you only popped from ABC. 13:31:13 then the stack should end up as [, QUUX] possibly? and then getting compacted to be just [QUUX]? 13:31:43 following the stack of A: 13:31:44 [] 13:31:48 load PRNT: [PRNT] 13:31:52 load QUUX: [PRNT, QUUX] 13:31:56 unload PRNT: [PRNT] 13:32:07 unload anything that defines A: [] 13:32:10 unload PRNT: [PRNT] <-- that is where I'm not sure you are right 13:32:19 I am right 13:32:28 when you unload PRNT, what happens is essentially: 13:32:34 "aha, PRNT defines A, B, and C" 13:32:46 "let's go pop 1 off the instruction stack from A, B, and C" 13:32:57 it doesn't matter whether the instruction on top of the stack is the one defined by PRNT 13:33:16 Deewiant, is that what the standard says? 13:33:17 we could add a third fingerprint, FOOB 13:33:20 which defines A 13:33:28 so back at load QUUX: [PRNT, QUUX] 13:33:32 unload FOOB: [PRNT] 13:33:39 Deewiant, sorry bbl, phone 13:33:46 and yes, that's what the spec says. 13:45:14 Deewiant, but you can't unload a non-loaded fingerprint right? 13:45:34 sure you can 13:45:43 it should reflect then shouldn't it? 13:45:58 nope 14:00:08 meh, now I'm using term.h functions and it's still not working 14:04:34 -!- Corun has joined. 14:12:04 man, this sux. I'm going to just comment out the TERM fingerprint on Posix. 14:17:01 Deewiant, nah :/ 14:17:17 AnMaster: figure out how to make it work, I can't and won't bother. 14:17:19 if I do TERM I will do it the right way 14:17:30 but I got other issues to fix first 14:17:32 what's the 'right way'? 14:17:38 I'd love to know :-P 14:17:40 Deewiant, using terminfo 14:17:46 yeah, that's what I tried 14:17:51 I will research how tput does it 14:17:58 -!- timotiis has joined. 14:19:21 it's a part of ncurces 14:19:29 err spelling 14:20:43 Deewiant, if you want I'll wgetpaste tput's source 14:20:53 nah, can't be bothered now 14:20:55 http://rafb.net/p/v2UBD448.html 14:20:56 there 14:39:05 -!- whice has joined. 14:39:24 hi all 15:04:00 -!- RedDak has joined. 16:01:04 Deewiant, yes now cfunge is definitly faster than ccbi even when I compile to 32-bit code 16:02:46 I realized that one thing is slowing me down by about 33% for all accesses to funge-space, and that is mini-funge 16:03:03 because then each IP needs to keep a pointer to know what its funge-space is 16:03:14 instead of all using the same global 16:06:14 and that can't really be helped without removing mini-funge entirely :-/ 16:26:03 Deewiant: 16:26:05 BAD: 0y pushes wrong stack size 16:26:09 what exactly does that mean 16:27:04 it called 0y and expected to find the correct stack size in the heap of stuff that y pushes 16:27:17 I suspect that you push nothing for 0y 16:27:21 which would be incorrect 16:27:34 * AnMaster checks, I do push things for 0y 16:27:44 then you might be pushing the new stack size instead of the old one 16:28:13 ah very likely, I push the stack size at the point of pushing stack size 16:29:03 because then each IP needs to keep a pointer to know what its funge-space is 16:29:03 instead of all using the same global 16:29:04 hm 16:29:18 * AnMaster does pass fspace around a lot, but that could be fixed 16:29:26 yes I'll make it a global 16:29:29 nice idea 16:29:30 I tested, having them all refer to the global fungespace instead of dereferencing a pointer speeds some stuff by about 30% 16:30:46 Deewiant, anyway another thing that will slow down 32-bit code: normal calling convention passes arguments on the stack 16:30:59 AMD64 ABI pushes quite a few in the registers 16:31:18 aye 16:31:54 and of course the function pointer thing for instructions doesn't allow them to be inlined 16:32:04 yes, that's the biggest performance penalty 16:32:13 practically everything goes through a pointer 16:32:13 oh and y breaks all my abstractions for stackstack 16:32:39 I need to code some way to access non-top stacks from the y code :( 16:32:41 * AnMaster sighs 16:32:49 messes up my clean interface 16:33:14 another thing, 16:33:15 1 vector containing the least point which contains a non-space cell, relative to the origin (env) 16:33:22 is that relative to storage offset? 16:33:29 or relative to (0,0)? 16:33:38 I'm not sure... 16:33:47 Deewiant, what does ccbi do for it? 16:33:49 but the storage offset at that point should be (0,0) anyway 16:33:51 and does mycology test that 16:33:55 Deewiant, yes of course 16:33:56 can't be bothered to check, and no, probably not 16:34:06 but it is undefined in the standard? 16:34:10 probably not 16:34:14 * AnMaster wonders 16:34:24 just check the spec yourself :-P 16:34:48 I looked at them 16:34:50 That the time is 00 : 08 : 1128682830 16:34:59 'woops' 16:35:04 I wonder, why does passing a dummy value of 0 cause that 16:35:09 Deewiant, I know, it's // TODO 16:35:10 :P 16:35:27 it's still odd 16:36:51 probably because the befunge expects 2 values there 16:37:01 if you're pushing only one zero that is 16:37:13 # 1 cell containing current ((year - 1900) * 256 * 256) + (month * 256) + (day of month) (env) 16:37:13 # 1 cell containing current (hour * 256 * 256) + (minute * 256) + (second) (env) 16:37:14 ? 16:37:23 I push one for each of those 16:37:27 then beats me 16:37:36 ah, no, obvious? 16:37:40 err? 16:37:46 or no 16:37:48 for the date it might have been 16:37:54 That the year is 1900 16:38:03 yeah, that makes sense 16:38:04 yes right, but the time I don't get 16:38:33 don't know, read the befunge to see what it does and figure it out :-P 16:38:41 Deewiant, I'm not that mad 16:38:45 I just ask the author 16:39:00 I don't care why it does that 16:39:09 you give it incorrect values and it produces incorrect output :-P 16:40:48 \f1+:*/:f1+:*%\f1+:*/ 16:40:53 looks like the code that calculates it 16:43:27 mhm 16:43:56 Deewiant, I stopped passing fungespace pointer around, no noticable speed difference 16:44:46 still around 0.5 seconds both before and after (for debug version, I guess optimized build could make a difference 16:47:58 and around 0.3 with debug info 16:59:25 That the day of the month is -244 16:59:25 That the month is -253 16:59:25 That the year is 109 16:59:26 wtf 17:02:33 ah better 17:02:59 Deewiant, a bug in mycology: 17:03:01 That the environment variables are: 17:03:01 ÿÿ´ 17:03:07 it is valid to run with a clean env 17:03:16 you can do it using env -i in front of the program 17:03:41 err wait 17:03:46 wtf 17:04:02 I think mine does something strange on outputting \0 17:06:06 Deewiant, another question: should time in y be local time or UTC= 17:06:09 s/=/?/ 17:06:16 not specified, I don't think 17:06:39 ccbi does UTC heh 17:06:44 easiest indeed 17:06:45 yep 17:06:50 just time and gmtime needed then 17:07:02 there's a fingerprint which allows both UTC and local 17:07:06 TIME I think 17:07:14 (negative year problem, turns out the result of tm is already in years since 1900....) 17:14:02 That the command-line arguments were: [ null "/home/arvid/bashfunge/trunk/mycology/mycology.b98" "./cfunge08" null ] 17:14:05 that looks wrong 17:14:08 hehe 17:14:12 indeed it does :-P 17:14:12 * AnMaster changes order 17:14:25 ./cfunge08 isn't supposed to be there btw 17:14:38 oh? 17:14:57 only mycology.b98 17:15:20 That the command-line arguments were: [ null "./cfunge08" "/home/arvid/bashfunge/trunk/mycology/mycology.b98" null ] 17:15:23 slightly saner 17:15:37 Deewiant, with full path I assume? 17:15:50 doing path splitting would be insane 17:16:13 because it was called with full path 17:16:24 with whatever it was called, I guess 17:16:40 Deewiant, no ending null? 17:16:43 I guess the idea is that if you open the file with the given name then it should be the same file 17:16:53 That the command-line arguments were: [ "/home/arvid/bashfunge/trunk/test/mycology.b98" null ] 17:16:53 well, you've got too many nulls there :-P 17:16:56 is from ccbi 17:17:07 only with env -i 17:17:17 and I'm not going to figure out why 17:17:19 Deewiant, ? 17:17:31 weird 17:17:39 AnMaster: if you run without an empty environment there won't be an ending null there 17:18:09 actually, depending on how D pass stuff to main() that may make sense 17:18:23 how's that 17:18:36 because, both these are valid main() prototypes in C: 17:18:40 int main(int argc, char *argv[]) 17:18:40 and 17:18:49 int main(int argc, char *argv[], char*envp[]) 17:18:55 uh, no 17:18:56 not sure of name for the latter 17:18:58 the latter is only posix 17:19:05 if that 17:19:11 I don't know what it is but it's not standard C :-P 17:19:16 ah 17:19:19 well 17:19:43 anyway possibly if they follow each other in memory that could mean some off by one error on the part of D 17:19:54 D is fine, it's not that 17:20:03 because D doesn't use null-terminated strings 17:20:17 D arrays are (length,pointer) pairs 17:20:22 and main is int main(char[][] args) 17:20:24 * AnMaster sighs 17:20:45 well popping and pushing 0gnirts are harder then 17:20:49 it's really easy in C 17:20:58 not really, no 17:21:03 or, well 17:21:06 harder, yes 17:21:08 but not hard :-P 17:21:15 for (ssize_t i = len; i >= 0; i--) 17:21:16 StackPush(str[i], stack); 17:21:22 that is my StackPushString 17:21:52 void pushStringz(char[] s) { 17:21:52 ip.stack.push(0); 17:21:52 pushString(s); 17:21:52 } 17:21:52 void pushStringz(char* s) { 17:21:54 if (s) { 17:21:57 while (*s++){} 17:21:59 while (*s) 17:22:02 ip.stack.push(cast(cell)*s--); 17:22:04 } else 17:22:07 ip.stack.push(0); 17:22:09 } 17:22:13 AnMaster: you're missing the calculation of len, which is a call to strlen 17:22:13 hum? 17:22:24 Deewiant, it is passed as a argument to the function 17:22:25 that's mine, since you were obviously asking :-P 17:22:30 to allow pushing several in one row 17:22:33 AnMaster: ah 17:22:39 one go* 17:23:15 Deewiant, and allows potential for cashing string length in case I push the same several times or such 17:23:18 ;P 17:23:32 I only use pushStringz with fingerprints, though 17:23:41 nowhere in the normal code 17:23:49 mhm 17:23:58 my pop string is more complex 17:24:10 it uses some nice fast extensible strings things from boehm-gc 17:24:26 mine just uses normal D strings :-P 17:24:32 http://rafb.net/p/nZCGyC10.html 17:24:47 but hey, if you feel like more benchmarking, http://users.tkk.fi/~mniemenm/files/befunge/interpreters/ccbi/ccbi_linux.zip 17:25:01 Deewiant, what's new in that one? 17:25:02 CORD_ec? ew 17:25:16 Deewiant, yes? what about it? nice thing from boehm-gc 17:25:19 AnMaster: for one thing it has a --disable-fprints command line argument :-) 17:25:27 AnMaster: what does it mean? looks like too many abbreviations in one :-P 17:25:27 Deewiant, hahaha 17:25:42 (/* Extensible cords are strings that may be destructively appended to. */ 17:25:43 err 17:25:52 the ( was mispaste 17:25:52 right 17:26:03 * Cords are immutable character strings. A number of operations 17:26:03 * on long cords are much more efficient than their strings.h counterpart. 17:26:07 from cord.h 17:26:32 Deewiant, cord isn't an abbrev 17:26:46 cord and string are both think long objects :P 17:26:51 yeah 17:26:56 just wondering why it's called cord and not just string 17:27:03 because it isn't a string 17:27:04 since, after all, "cords are [...] strings" :-P 17:27:07 it's faster in some cases 17:27:22 they look like strings to me 17:27:30 * The following are reasonable applications of cords. They would perform 17:27:30 * unacceptably if C strings were used: 17:27:30 * - A compiler that produces assembly language output by repeatedly 17:27:30 * concatenating instructions onto a cord representing the output file. 17:27:44 look like D strings to me, then 17:27:45 it is such a case I do here, adding one char at a time 17:28:02 nop 17:28:22 typedef struct CORD_ec_struct { 17:28:22 CORD ec_cord; 17:28:22 char * ec_bufptr; 17:28:22 char ec_buf[CORD_BUFSZ+1]; 17:28:22 } CORD_ec[1]; 17:28:54 I really don't care how they're implemented 17:29:02 they're convenient abstractions to avoid having to mess with strcat and co 17:29:07 that's all I need to know :-P 17:29:09 yep 17:29:14 and uses boehm-gc 17:29:26 I think they wouldn't work without boehm 17:30:52 so how does the new CCBI run for you 17:31:06 mycology piped to dev/null takes 0.36 seconds on my laptop 17:32:19 real 0m1.602s 17:32:21 better 17:32:50 odd that it's that slow 17:35:10 how about without fingerprints? :-) 17:35:24 replace all ( with r? 17:35:33 won't it fail then due to no popping? 17:36:21 no, I mean use ccbi -P 17:36:26 or ccbi --disable-fprints, same thing 17:36:52 real 0m1.110s 17:36:53 then 17:38:46 alright, you can do some profiling for me 17:39:05 iki.fi/deewiant/ccbi, run it on mycology piped to dev/null and send me gmon.out :-) 17:39:06 why? I'm busy 17:39:16 I want to win over you 17:39:17 so no 17:39:19 :-D 17:39:20 not yet 17:39:23 you've already won 17:39:28 I can't be bothered to optimize any more 17:39:33 unless there's an obvious bottleneck on your machine 17:39:49 at this point, all I can do is remove features or make the code so fugly that it's not worth it 17:40:08 heh I'll see 17:41:03 thing is that there's nothing obviously slow that I can find 17:41:19 hm 17:41:38 it's just that some things are called 300 000 times - through function pointers, even 17:41:51 and if they take 1 microsecond each then yes, it'll take 0.3 seconds :-P 17:41:57 * AnMaster got time down for cfunge another 0.05 seconds using -fbranch-probabilities 17:42:05 17:42:16 profiled to match mycology 17:42:17 ;D 17:42:20 :-P 17:42:38 Deewiant, I'm sure I can optimize hash function I use for mycology performance too 17:42:40 I think GLFunge98 was already faster than CCBI, actually 17:42:49 AnMaster: how've you implemented funge-space now? 17:42:49 and even, my k isn't as optimized as yours is 17:42:55 hah, k :-D 17:43:06 none of those extra-optimized k ones are called in mycology 17:43:12 so it's actually a slowdown 17:43:13 Deewiant, using a hash library, key is a position struct 17:43:16 to have that switch case there 17:43:36 AnMaster: I see 17:44:01 AnMaster: I once tried that thing I was talking about, have the upper 32 bits of a 64 bit int be the y coordinate and the lower the x coordinate 17:44:10 AnMaster: it was quite a bit slower than my current hash table of hash tables -thing 17:44:12 Deewiant, I allocate the data for the cells (as it uses pointers for both position and data) in chunks of 512 entries 17:44:21 may mean some overhead but faster at load time 17:44:29 yeah, that helps 17:44:38 CCBI's runtime on mycology is mostly load time 17:44:43 at least on my computers, don't know about yours 17:44:51 Deewiant, initial entries in hash table is set to slightly more than mycology needs 17:44:52 maybe PaX isn't friendly to function pointers 17:44:53 about 1000 more 17:44:54 or so 17:45:04 Deewiant, no clue, read about PaX on wikipedia 17:45:37 Deewiant, that is I call hash creation with initial size set to slightly more chars than is in mycology 17:45:57 I have no control over that 17:46:07 heh, your problem 17:46:09 D probably allocates in much smaller chunks internally 17:46:20 well, I could argue that that's a huge waste of memory on most befunge programs 17:46:43 everywhere where I have constants in CCBI, they're set to 'typical' values and not 'mycology' values :-P 17:46:45 Deewiant, also, mine is definitely optimized for AMD64, it is slower at x86 but not much, but parameter order is optimized to pass as many parameters as possible in the registers 17:47:37 of course, most functions can pass all parameters in the registers here :) 17:47:43 with any order 17:47:45 yep, that helps 17:48:08 Deewiant, and I use gcc __attribute(())__ sometimes 17:48:19 mostly because it allows me to get better warnings 17:48:20 meh, overoptimization 17:48:34 like __attribute__((warn_unused_result)) 17:48:35 :P 17:48:41 to ensure correct code 17:48:57 some other both gives better warnings and better code, like nonnull 17:49:07 and probably allows it to optimize better 17:49:12 as well as give good warnings 17:49:45 well, the DMD compiler frontend sucks, so any D-specific optimization is pretty much out of the window for my code 17:49:53 any optimization that GCC does will be done at asm level 17:50:07 any significant optimization, that is 17:50:16 hehehe 17:50:25 you have a huge advantage there 17:50:30 * AnMaster goes to mark some pure functions 17:50:30 even though we use the same backend 17:50:32 :P:P 17:50:56 I honestly don't care 17:51:05 Deewiant, anyway if you use gdc you would get same backend 17:51:09 of course, if you're performance tuning as much as you are, and writing in C, you will be faster :-P 17:51:12 AnMaster: that was GDC 17:51:13 and should get about same level of optimization 17:51:16 AnMaster: like I said, same backend 17:51:21 but no, it's not the same level 17:51:31 think about stuff like const, which I suppose you use somewhere 17:51:35 or all those __attribute__ things 17:51:41 they're completely lost when translated to asm 17:51:49 Deewiant, hm now it is faster, down at 0.9 seconds for ccbi 17:51:49 weird 17:52:06 that blender render completed? ;-P 17:52:16 Deewiant, nah, that finished around noon today 17:52:38 Deewiant, anyway I do NOT use __attribute__ for gaining speed 17:52:43 I use it for correct code 17:52:47 it doesn't matter 17:52:48 warn about unused results 17:52:50 just like const 17:52:51 that kind of stuff 17:53:00 Deewiant, yes doesn't D have const? 17:53:00 const is used for correctness of code 17:53:06 AnMaster: not in the same way C does 17:53:14 AnMaster: only for compile-time constants 17:53:16 I'm using const when I can, for correct ness 17:53:21 correctness* 17:53:21 but my point is 17:53:26 you use it for correctness 17:53:30 no idea if gcc optimize on it 17:53:33 but of course it's a potentially big optimization help as well 17:53:50 Deewiant, as is the C99 restrict keyword (that I'm not using, yet) 17:53:56 yep 17:54:08 though not sure about correctness for restrict 17:57:31 Deewiant, also, no idea if you can use out parameters in D? 17:57:34 like say: 17:57:40 void x(out int x) 17:57:42 void changemyparameter(char * foo); 17:57:48 so it opterates on the thing in place 17:57:52 operates* 17:58:31 like said above, 'out' exists 17:59:00 out and in? or just out? 17:59:53 out, in, and inout 18:00:12 -!- jix has joined. 18:00:37 ah 18:02:19 -!- jix has quit (Client Quit). 18:02:49 -!- jix has joined. 18:03:47 Deewiant, real 0m0.374s 18:03:48 :D 18:04:14 -!- jix has quit (Client Quit). 18:04:14 * AnMaster changes back to debug version to work on fingerprints 18:04:50 -!- jix has joined. 18:12:47 Deewiant, by the way my debug build takes about 0.6 seconds at mycology 18:14:19 AnMaster: got a copy of your binary? to see how fast it is here 18:34:55 Deewiant, I think I know about ccbi's env -i problem 18:35:00 or maybe rather mycologys 18:35:04 consider the stack 18:35:18 with env -i, it's null null null null 18:35:18 it would push \0\0 at the end of the environment right? 18:35:22 I think 18:35:26 Deewiant, exactly 18:35:33 and mycology fails to handle that 18:35:43 is that ambiguous, though 18:35:47 it is 18:35:50 because you can't know 18:35:59 indeed 18:36:06 so complain at the spec 18:36:23 Deewiant, if you were to redesign that bit, what would you suggest? 18:37:05 I'd suggest losing 0gnirts and using gnirts instead 18:37:13 hm interesting 18:37:14 never ambiguous 18:37:19 and then you can have nulls in strings 18:37:20 not backwards compatible 18:37:23 Deewiant, indeed 18:38:50 BAD: : on empty stack doesn't make stack size 2, says y 18:38:50 GOOD: \ on empty stack makes stack size 2 according to y 18:39:00 both push 2 according to gdb 18:39:01 :/ 18:39:12 then y fails 18:39:25 do you get the stack size value differently? 18:39:29 as usual, all I can say is trace it and find it 18:39:37 * AnMaster sighs 18:39:38 I can't remember, probably f8+y or whatever 18:40:50 Deewiant, you are not testing that size of stack works as it should btw 18:40:57 it says one cell for each stack 18:41:04 just saw my code just push for the top stack 18:41:04 heh 18:41:40 huh? 18:41:47 oh, right 18:41:51 That the stack sizes are [ 57 ] from top to bottom 18:41:52 sure 18:41:58 should be [ 0 ] 18:41:58 (though not correct either) 18:42:01 indeed 18:46:36 Deewiant, what exactly does this one mean: 18:46:37 UNDEF: the empty string wrapped around the edge of space contains 1 character(s) (hopefully spaces) 18:47:32 Deewiant, btw I found a real bug in your code now 18:47:33 That the command-line arguments were: [ "mycology.b98" ] 18:47:34 That the environment variables are: 18:47:34 =/home/arvid/bashfunge/trunk/std08/interpreters/ccbi/ccbi_linux/ccbi_linux/ccbi 18:47:34 TERM=t 18:47:40 on env -i TERM=t 18:47:49 mine at least does the right thing on that :) 18:48:02 That the command-line arguments were: [ "/home/arvid/bashfunge/trunk/mycology/mycology.b98" ] 18:48:02 That the environment variables are: 18:48:02 TERM=t 18:48:13 Deewiant, any idea about that? 18:49:05 actually it does that in any case 18:49:11 That the command-line arguments were: [ "mycology.b98" ] 18:49:11 That the environment variables are: 18:49:11 =/home/arvid/bashfunge/trunk/std08/interpreters/ccbi/ccbi_linux/ccbi_linux/ccbi 18:49:15 and so on 18:49:42 doesn't do that with mi 18:49:44 err 18:49:45 me 18:49:58 env -i ccbi mycology.b98 18:50:01 That the environment variables are: 18:50:03 and nothing 18:50:27 yes 18:50:29 but try setting one 18:50:35 env -i TERM=t ccbi mycology.b98 18:50:38 like that 18:50:38 it goes through extern char **environ for the environment variables 18:50:40 see what you get 18:50:46 Deewiant, I use **environ too 18:51:20 AnMaster: I don't get that 18:51:22 only TERM=t 18:51:26 Deewiant, weird 18:51:28 very weird 18:51:38 env -i TERM=t ./ccbi mycology.b98 18:51:41 is the exact line I used 18:51:54 as it both are in current dir 18:52:22 using the exact same line, only TERM=t 18:52:35 hm? 18:52:59 env -i TERM=t ./ccbi mycology.b98 18:53:04 TERM=t, nothing else 18:53:25 Deewiant, the binary you sent me (the last that is, will check this for earlier ones) produces that "fake" env variable, even without anything else, then the rest of the variables 18:54:10 Deewiant, however mine produce another line your doesn't: 18:54:12 _=./cfunge08 18:54:14 with at _ there 18:54:23 maybe you mess up with space and _ ? 18:54:44 or wait you do that one too, just differently sorted 18:54:53 but mine doesn't do that empty variable name one 18:55:06 neither does mine, here :-P 18:55:17 Deewiant, your older ones does too 18:55:35 your machine is weird :-P 18:55:53 something is weird 18:57:45 -!- olsner has joined. 18:58:07 Deewiant, ok you are right, something is odd, I don't get it on my other amd64 18:58:18 nor do I in another xterm 18:58:21 wtf 18:58:23 :-D 18:58:30 that's crazy 18:59:54 actually I do get it in another xterm, in some 18:59:54 wtf 19:00:17 also I didn't get it before 19:01:35 Deewiant, found out about: BAD: : on empty stack doesn't make stack size 2, says y 19:01:42 Deewiant, reason is simple, very simple 19:01:45 I peek and then push 19:01:49 not pop and push twice 19:02:04 and my stack dumping had a off by one in one case 19:02:09 I thought you said gdb claims it has 2 :-P 19:02:12 hah 19:02:36 however, would this difference affect any program? 19:02:54 you will always get 0 from an empty stack 19:03:07 Deewiant, right? 19:03:32 the difference is what f8+y pushes :-) 19:03:42 it's the only way of measuring it :-P 19:03:43 so if you say do: n: you will always get the same result, for instructions except for what y says 19:04:10 so, does it matter really? peak and push is logically faster than pop and push 19:04:38 the spec says : is equivalent to pop and two pushes 19:04:43 it might matter to some fingerprints 19:04:52 so I'll do some #ifdef for FULLY conforming vs. some slight optimizations 19:04:55 :D 19:05:03 Deewiant, err how? 19:05:05 you're an optimization freak 19:05:09 AnMaster: I don't know 19:05:15 how would it matter 19:05:34 they use : to quickly get the stack size up to 2 for some freakish extension that they provide which cares about that :-P 19:05:45 err whatever 19:06:02 I don't know, like I said 19:06:06 but the spec says what it says 19:06:15 extensions still won't have access to the array I use for stack 19:06:26 so, doesn't matter 19:07:07 because it isn't a straight simple array, it's dynamically malloced in chunks, and keeps a size value and a top pointer. extends with 10 entries every time the array needs to grow, but doesn't actually ever contract 19:07:15 just moving top pointer downwards 19:07:26 yes, that's what I do as well 19:09:44 ah this should be faster unless stack actually is empty: 19:09:46 if (stack->top == 1) 19:09:46 StackPush(0, stack); 19:10:01 still not as good as just peek and push but 19:10:27 you optimize too much :-P 19:10:46 nah 19:11:22 I plan to make this the fastest befunge interpreter on 64-bit when I'm done, and with a changing some values in a header it should perform well on 32-bit too 19:12:03 it's already the fastest from the sound of it 19:12:26 heh, fastest with some fingerprints please :) 19:12:45 I may need to replace hash array if it turns out to be bad, but the way I coded it replacing is easy 19:12:53 it's all hidden under an abstraction 19:13:06 that's how you should code everything, goes without saying 19:13:14 yep 19:13:30 stack, ip and fungespace are all quite hidden under abstractions 19:14:09 Deewiant, http://rafb.net/p/Uk3wTE20.html 19:14:33 restrict :-P 19:14:43 yes because I had to beat you 19:14:47 :P 19:14:55 you optimize too much, like said 19:14:59 it really doesn't matter :-P 19:15:04 Deewiant, not really, look at memcpy 19:15:09 it uses restrict 19:15:34 yes, I am well aware of the fact that the STANDARD LIBRARY has to be well optimized 19:15:43 but your program doesn't have to be fully micro-optimized :-P 19:22:15 -!- sebbu has joined. 19:24:42 o/ 19:25:35 Deewiant, hehehe :D 19:26:50 AnMaster: where do I get libcord 19:27:18 doesn't come with latest stable boehm-gc 19:28:01 Deewiant, uh? 7.x? 19:28:16 AnMaster: latest stable in portage is 6.8 19:28:45 Deewiant, yes I know, I think it is a mistake by portage in some way, because even for 6.8 it installs the *header files* for cord 19:28:48 just not the library 19:28:57 a bit confusing that 19:29:43 Deewiant, I'm well aware of that my cmake checks are incomplete, and I plan to extend them 19:29:44 I thought you said you don't run unstable packages :-P 19:29:57 Deewiant, I avoid them mostly 19:30:02 this is a special case though 19:30:18 I already had to get unstable bzr as well :-P 19:30:34 Deewiant, oh? yes I don't think there is a stable bzr in portage is there? 19:30:43 not a 1.x one at least 19:30:45 sure, 0.17 :-) 19:30:53 Deewiant, that is so old and crappy 19:31:16 Deewiant, 1.0 was released several months ago, like November or something like that 19:31:28 0.17, about a year ago at least I guess 19:31:31 not 100% sure 19:31:47 Deewiant, anyway you could have used 0.92 :P 19:31:56 (why you would want that I don't know) 19:31:58 AnMaster: 0.17 and 1.1 are the only two in portage 19:32:06 Deewiant, 1.1 is great 19:32:18 AnMaster: on my machine, CCBI is faster than cfunge08 in bzr 19:32:28 does cmake build with optimization? 19:32:35 Deewiant, two things 19:32:39 ccmake 19:32:47 change build type to RELEASE 19:32:55 that will get optimzing 19:33:01 the second (if on 32-bit) 19:33:01 how 19:33:07 Deewiant, how what? 19:33:12 do I change it to RELEASE 19:33:19 ccmake . 19:33:28 use arrow keys to select CMAKE_BUILD_TYPE 19:33:32 pres enter to edit option 19:33:33 bah, GUIs... 19:33:38 make sure it says RELEASE 19:33:49 Deewiant, you can do it with cmake, but I don't remember how! 19:34:04 ccmake is ncurses anyway 19:34:28 Deewiant, ok, second thing (if on 32-bit), open src/global.h 19:34:43 aye, fast32_t 19:34:55 and change FUNGEDATATYPE and FUNGEVECTORTYPE indeed 19:35:25 alright, now we're talking 19:35:31 Deewiant, better speed now? 19:35:39 still got some issues with y 19:35:42 working on those 19:35:56 0.08 for cfunge08, 0.13 for CCBI 19:36:09 you get better speed than I do, for both of them 19:36:11 hehehe 19:36:39 -!- RedDak has quit (Read error: 110 (Connection timed out)). 19:36:51 with output, 0.10 and 0.14 19:36:56 -!- Dagide has joined. 19:36:58 i.e. not piped to devnull 19:37:30 I can accept being 50% slower for using a language which is much more fun to code in :-) 19:37:45 + for supporting all kinds of crap that cfunge08 doesn't ;-) 19:37:53 hehe 19:38:01 Deewiant, I will add fingerprints 19:38:13 and those may be slower 19:38:19 but the core should be faster :D 19:38:22 AnMaster: I get some warnings from compiling your code, mostly stuff like %ld being used to print 19:38:38 Deewiant, ah, that's related to you changing FUNGEVECTORTYPE 19:38:40 and such 19:38:49 AnMaster: no, I got it even without changing them 19:38:49 -!- Corun has quit ("This computer has gone to sleep"). 19:39:09 AnMaster: warning: format '%ld' expects type 'long int', but argument has type 'int_fast64_t' 19:39:16 AnMaster: or int_fast32_t, both result in warnings 19:39:26 AnMaster: you should use inttypes.h 19:39:28 Deewiant, err right, on x86 that should be long long gah 19:39:34 Deewiant, I use stdint! 19:39:40 it's more C 19:39:43 iirc 19:39:50 AnMaster: no, you should use inttypes.h instead of %ld I mean 19:40:03 AnMaster: inttypes.h has corresponding printf/scanf specifiers for stdint.h's integer types 19:40:07 AnMaster: both are C99 19:40:35 aha 19:40:37 what you want is PRIdFAST64 instead of '%ld' 19:40:44 and PRIdFAST32 for fast32_t 19:40:45 I see forgot that 19:40:45 I think 19:40:54 or didn't know ;-) 19:40:57 Deewiant, well fast32_t is not really supported 19:41:06 alright, then 64, whatever 19:41:13 anything but hardcoded '%ld' :-) 19:41:14 Deewiant, how slow was it with 64-bit btw? 19:41:23 Deewiant, I agree I should fix that indeed 19:41:27 AnMaster: 0.38, without optimizations and with 64-bit 19:41:35 AnMaster: so about 2.5 times slower than CCBI 19:41:36 interesting 19:41:42 or more like 3 times 19:41:43 actually 19:41:48 since 0.39 would be 3 times 19:41:50 Deewiant, about as fast as it gets on my cpu when mine is at it's best 19:41:56 :-) 19:41:59 :/ 19:42:05 your cpu is faster it seems 19:42:05 AnMaster: also, there are other warnings 19:42:16 Deewiant, I'm aware of some yes 19:42:16 yeah, my laptop's cpu is faster than my main computer's :-) 19:42:24 /home/arvid/src/cfunge08/src/interpreter.c:422: warning: function might be possible candidate for attribute 'noreturn' 19:42:25 stuff like that 19:42:33 hash library got a few too 19:42:42 AnMaster: comparison between signed and unsigned, cast discards qualifiers, unused params 19:42:46 but it's third party and I haven't had time to look at it' code 19:43:04 I had a fun idea for an esoteric programming langue. 19:43:05 AnMaster: support.c:118 has 'signed and unsigned type in conditional expression' 19:43:07 language 19:43:20 Deewiant, I know about those yes, lib/*, the "noreturn", the one in support.c (it's a function from gnulib!) 19:43:33 Deewiant, because getline isn't portable I used the gnulib one always 19:43:35 AnMaster: alright 19:43:38 heh 19:43:47 and means boehm-gc too 19:43:56 Deformative, tell us! 19:44:20 Continuation based, no return values. 19:44:22 Functional. 19:44:41 ew, no return values 19:44:47 I will explain more later, I kinda wanna take a nap, 19:44:59 Deformative, interesting 19:45:11 Deewiant, oh and I found a bug in gdb today 19:45:12 :) 19:45:17 I managed to do the factorial sequence. 19:45:23 it can't print the extern **environ 19:45:28 it just shows 0x0 for it 19:45:31 for unknown reason 19:46:08 I don't use debuggers so I can't help you with that 19:46:34 AnMaster: It is quite a bit of fun. 19:46:55 Should theororetically be far faster too. 19:47:11 Deformative: I want to see a spec 19:47:12 Deewiant, how do you fix bugs then? 19:47:13 Forth might be faster. 19:47:25 AnMaster: I find them and I fix them as normal. :-P 19:47:51 I will make up a spec in the next few days maybe. 19:47:52 AnMaster: to find them - CCBI has its debugging mode which I found really handy 19:48:01 AnMaster: if that wasn't enough, liberal printf sprinkling in the code helps 19:48:05 Maybe publish it. 19:48:48 Deewiant, heh 19:48:55 It is really weird at first, but the more you use it, it gets easier. 19:49:02 And knowing forth helps a lot. 19:51:22 I really should learn some factor 19:51:28 Nah,. 19:51:34 Factor is nothing, learn forth. 19:51:36 Forth is real. 19:51:41 heh 19:51:52 well, to be honest, any concatenative language would be fine 19:52:06 Forth, the origional. 19:52:31 on my first try with Forth I got lost somewhere around loops and recursion 19:52:41 and the alternative stack 19:53:06 need to try again at some point 19:53:10 Ah. 19:53:17 I don't remember forth that much. 19:53:22 :-D 19:53:22 But I did finish the book, I remember that much. 19:53:55 Joy is nice too, I hear 19:54:06 Yeah. 19:54:11 But again. 19:54:13 It is nothing. 19:54:19 :-) 19:54:20 and the alternative stack 19:54:26 well after befunge that's NOTHING 19:54:26 :P 19:54:39 * AnMaster still thinks his stack stack code is uggly 19:54:41 except that befunge isn't supposed to be easy 19:54:45 Forth has some real implementations and there has been real programs made in it. 19:54:47 forth is :-P 19:54:52 Factor and joy have nothing, 19:55:09 Forth is rather beautiful. 19:55:41 A colored stack language has real potential, but I don't think that moore did it right with colorforth. 19:56:01 Deewiant, also if I ever implement = it will be in some unusual way, maybe running the string "under a specific shell or interpreter" as in befunge XD 19:56:09 or doing libffi to call C functions with it 19:56:54 Deformative, colored stack!? 19:56:57 wtf is that 19:57:04 (Yay libffi) 19:57:15 AnMaster: Color as part of the syntax 19:57:32 Red does one thing blue another. 19:57:51 Deformative, err, then you load it as an image? 19:57:57 No. 19:58:00 how then? 19:58:16 latex code using colors? 19:58:28 The editor puts apropriat char in plazced.' 19:58:40 Wow, soprry trying to type with one hand. 19:58:42 you mean ANSI escape codes? 19:58:45 Cheetos. 19:58:55 It can be implemented like that. 19:58:59 I do not know how colorforth does it. 19:59:04 that's messy :/ 19:59:17 program source should work in mono color 19:59:22 Colorforth is the only colored language that I know of. 19:59:24 as in black and white 19:59:28 I am sure there are more. 19:59:38 I like it because it results in less characters. 19:59:42 Less characters = better 19:59:49 but there are downsides too 19:59:52 Easy to read too. 19:59:58 Unless you are colorblind. 20:00:00 like impossible to syntax highlight automatically 20:00:15 Why would you need syntax highlighting? 20:00:20 Deformative, impossible for color blind, won't work on non-color terminals, and several more 20:00:48 You can make an editor put some char in place of the color. 20:02:05 Deewiant, also would need a special editor 20:02:13 wouldn't work in your standard editor 20:02:22 vim/emacs/kate/kdevelop/whatever 20:02:45 Some color can be evaluate, another push to stack, another comment, and maybe another can be for labels or conditional compilation. 20:05:27 Deewiant, how do you make ccbi print instructions as it executes them 20:06:01 because I found an obscure program a friend made that works in ccbi but not in cfunge 20:06:10 http://rafb.net/p/642T6v69.html 20:13:18 AnMaster: it has nothing like that, only the debug mode 20:13:40 :( 20:14:02 the debug mode is better, just use that 20:15:16 Deewiant, I can't set several breakpoints!?? 20:15:31 AnMaster: one global one and one for the current IP, so 2 at most 20:16:07 * AnMaster ponders writing some interface in his for attaching an external debugger 20:16:18 -!- ais523_non-admin has joined. 20:16:25 AnMaster: and then the 'cbreak' which breaks the next time it hits a given char 20:16:41 which is global 20:16:46 err 20:16:53 cbreak 20:16:53 Enter cell value to break on: j 20:16:53 'j' is invalid. 20:17:01 did I misunderstand you? 20:17:02 j isn't a value 20:17:03 you need a number 20:17:19 sorry, I was too lazy to implement ASCII translation 20:17:19 oh it can't convert can it, right 20:17:30 because you do need to support arbitrary values 20:17:42 Undefined command 'cbreak j'. See 'help'. 20:17:44 * AnMaster sighs 20:17:48 :-) 20:17:58 Breaking on every cell with value 106 (0x6a), character 'j'. 20:17:59 lol 20:18:02 the other way you did 20:18:08 well because that's trivial 20:18:10 that's just cast(char) 20:18:48 * ais523_non-admin is worried that they can translate 0x6a to 'j' in their head 20:19:10 ais523_non-admin: what's with the non-adminness 20:19:24 Deewiant: it's my Wikipedia alternate account 20:19:30 for use when I'm at a public computer 20:19:37 ah 20:19:37 which I don't want to know any of my super-secure passwords 20:19:48 I'd pick a shorter nick :-) 20:19:53 this is an unregistered nick 20:20:07 and I'm using it because I don't want to teach this client my Freenode password 20:20:33 it's still long 20:20:44 the reason I'm using this account, incidentally, is to use some Windows software (under Wine, as it happens) 20:21:13 I install software under Wine in separate accounts, because I don't trust trial-period software to not mess up my system 20:21:22 but running on a non-root non-wheel account, it's hard to see what could happen 20:21:48 I can always just wipe out the account and start afresh, and the software has no memory of previous trial periods 20:22:12 (the ironic thing is that the software is GPL anyway, so I just looked at the code, saw how the trial-period check was implemented, and added a workaround) 20:22:25 WTF? 20:22:27 (shareware GPL was an ingenious idea but doesn't survive contact with people like me) 20:22:41 (and the GPL means it's legal to remove the trial-period restruction) 20:22:43 That makes less than zero sense. 20:22:46 s/restruction/restriction/ 20:22:57 it's a compiler for an embedded system that's based on gcc 20:23:30 the people who wrote it distribute a shareware precompiled version in the knowledge that most of their customers won't even try to recompile it to remove the shareware restriction, and will pay them instead 20:23:30 I admire the effort, but that's just sort of silly :P 20:24:07 Deewiant, actually that program I posted shows a tricky corner case related to jumping backwards with j and wrapping at the same time 20:24:08 :/ 20:24:10 I think that's the way it should be done - you open your source and thus are a good guy, but you still get money from 90% of your clients 20:24:11 If this was the customers of a game, maybe, but I have to imagine that most programmers can figure out how to compile GCC ... 20:24:17 Deewiant, may be interesting to test in mycology 20:24:17 I tried to recompile it but couldn't, so I'm in the silly situation of running a GPL version of gcc under wine 20:24:23 (I can recompile gcc, just not their version) 20:24:39 AnMaster: it tests wrapping with # and x, I can't expect that you do j differently :-P 20:24:57 Deewiant, hah 20:27:20 AnMaster: for j, just save the delta, call x, move once, and reset the delta ;-) 20:27:40 Deewiant, hmm, less elegant (and less performant :/) 20:27:46 but I guess you are right 20:28:04 I'd argue it's more elegant, because that's essentially what x is 20:28:07 er, what j is 20:28:19 it's the simplest solution 20:28:54 -!- Dagide has quit (Remote closed the connection). 20:28:56 hrrm 20:28:57 given that you have a working x of course :-P 20:29:39 yes i do 20:29:52 are you /sure/? ;-) 20:29:59 -!- Judofyr has joined. 20:30:00 Deewiant, the problem is how it wraps based on delta rather than jumps in j case 20:30:02 one thing mycology doesn't test is wrapping both edges at once 20:30:04 and hard to avoid that 20:30:13 Deewiant, hm you mean double wrap? 20:30:22 AnMaster: I mean wrap x and y at the same time 20:30:25 ah 20:30:37 it doesn't test wrapping x twice in one instruction either does it? 20:30:45 no, probably not 20:30:45 as in a VERRRY long jump 20:31:17 Deewiant, until you test those I'm fine, though wrapping x and y should work as my current copying code for non-cardinal is same as yours basically 20:31:22 same algorithm 20:31:31 err wrapping not copying 20:31:34 * AnMaster is tired 20:31:34 and mine is just verbatim what the spec says :-P 20:31:59 Deewiant: it isn't possible to wrap twice round one coordinate in one instruction in Funge-98, due to the nature of Lahey-space 20:32:04 Deewiant, so if your fails at x and y at the same time, you got to fix your twice 20:32:11 ais523_non-admin, err? 20:32:13 at least, that's how I understand it 20:32:17 ais523_non-admin: well, depends on how you think about it really 20:32:39 if you would jump out of bounds, instead you don't and go backwards until you would go out of bounds, then go forwards again 20:32:55 so if the delta is larger than the playfield width, you just get stuck at the same point for all eternity 20:33:06 hrm 20:33:32 hmm, with x that's probably right 20:34:03 of course, with j you can wrap round more than once 20:34:13 because the delta is small, but the number of steps is large 20:34:15 yes with j it's an issue 20:34:29 implementing j as I said above still works, though 20:34:38 Deewiant, anyway I copied both your wrapping code and your j code now and I still don't get it right 20:34:40 the wrap doesn't change your position and then you just move as normal 20:34:41 wtf 20:34:43 :-P 20:35:11 oh wait 20:35:21 you actually move with a while loop :( 20:35:27 that's ineffective 20:35:37 ? 20:35:42 while (n--) 20:35:42 ip.move(); 20:35:46 your j code 20:35:48 in j, yes 20:35:56 doing what I said above would be faster :-) 20:36:01 hm true 20:36:18 but I'm not sure if it's the same 20:36:34 Deewiant, but I need to calculate how the delta should look like with j then 20:36:38 The j "Jump Forward" instruction pops a value off the stack, and jumps over that many spaces. 20:36:49 wait it is current delta times jump in each dimension right? 20:37:04 hmm, no, that is right, nevermind 20:37:14 Deewiant, oh? it should only work on space instructions? :P 20:37:29 AnMaster: "e.g. 2j789. would print 9 and leave an empty stack. " 20:37:31 AnMaster: so no. :-) 20:37:49 you could interpreter that sentence as it should only jump over spaces but not other instructions 20:37:50 ;) 20:38:03 hence the example which clarifies it 20:38:07 yeah 20:38:07 :/ 20:38:36 -!- timotiis_ has joined. 20:38:53 Deewiant, you won't need to same delta even I think 20:38:56 not sure yet 20:39:01 s/same/save/ 20:39:03 but you would get new delta with: 20:39:07 and yes, you do, if that's what you do 20:39:12 ip->delta.y *= jumps; 20:39:12 ip->delta.x *= jumps; 20:39:13 right? 20:39:21 then you could get old again using / 20:39:23 :D 20:39:29 (probably slower though) 20:39:32 well, sure, but the / slows it down :-P 20:39:33 AnMaster: as long as there wasn't integer overflow 20:39:42 hah true 20:39:42 and that 20:39:54 bloody corner cases :-P 20:40:22 hmm, this is the culmination of beautiful code 20:40:24 void noOperation() {} 20:40:38 hm if I run a program more than once / second I get same randomness 20:40:47 I guess time() isn't a good idea ;/ 20:40:52 as srandom 20:40:53 I mean 20:41:06 guess not 20:41:16 mersenne twister for teh win \o 20:41:21 hmm, this is the culmination of beautiful code 20:41:21 void noOperation() {} 20:41:22 hahaha 20:41:31 you know, some languages complains about such 20:41:33 bash is one 20:41:39 screw bash, then 20:41:43 it syntax errors on an empty function 20:42:00 mersenne twister for teh win \o <-- hm, does libc have that? 20:42:09 no, probably not 20:42:25 screw mersenne twister, then 20:42:30 (whatever it is) 20:42:32 heh 20:42:40 wtf is a "mersenne twister" 20:43:03 just google it 20:50:06 -!- timotiis has quit (Read error: 113 (No route to host)). 20:51:19 AnMaster: it's a randomisation technique 20:51:24 pseudo-randomisation, that is 20:52:01 you'll probably get enough randomisation by using a few bytes from /dev/random as a seed (if on a POSIXish system) 20:52:11 with the nice properties of being really fast, really random, and having a huge period 20:53:01 srandom(tv.tv_sec % tv.tv_usec); 20:53:03 what about that one 20:53:05 is it a good idea 20:53:06 ? 20:53:16 at least it gives different results each time now 20:53:24 anyone suggest a better way for srandom? 20:53:29 why not just usec directly 20:53:33 AnMaster: adding is likely better than taking the modulus 20:53:45 or using usec directly will perform much the same 20:54:02 (note that x % 0 = SIGFPE on many systems) 20:54:11 ais523_non-admin, ok, however if you run them exactly one second after each other you get issues 20:54:24 AnMaster: is anyone that accurate? 20:54:35 ais523_non-admin, probably not when multi tasking 20:54:35 AnMaster: why is it an 'issue' that two different calls can result in the same randoms? 20:54:50 AnMaster: since you're going posix anyway, just read from /dev/random like he said :-) 20:54:55 Deewiant, hm 20:55:09 cryptographically secure random seed right there 20:55:14 Deewiant, hm true 20:55:20 note: only read a few bytes from it so as not to run the system out of entropy, and use them as a seed 20:55:22 but very short supply of it 20:55:28 ais523_non-admin, yes exactly 20:55:36 4 bytes? 20:55:41 would that be enough 20:55:41 whatever srandom takes 20:55:46 sure 20:55:56 Deewiant, unsigned int 20:56:01 depends on platform then 20:56:11 so then read sizeof(unsigned) 20:56:13 on both x86 and x86_64 it would be 4 bytes 20:56:26 Deewiant, but it will slow me down on mycology :( 20:56:31 opening a stream I mean 20:57:13 AnMaster: on every initialization, CCBI populates the function pointer arrays for all instructions and fingerprints 20:57:14 AnMaster: you could just use open() and read() to save on stdio overhead 20:57:25 ais523_non-admin, that is true 20:57:33 Deewiant, hahaha 20:57:35 AnMaster: in addition, it initializes the randomizer by finding the current clock time, and other things 20:57:40 Deewiant, don't you have static arrays? 20:57:43 AnMaster: so I wouldn't worry 20:58:06 AnMaster: yes, I do, but I haven't bothered to do it like that 20:58:24 * AnMaster prefers his switch case 20:58:26 this way, the fingerprints can be removed simply by not compiling it in 20:58:31 you don't have to modify any code 20:58:39 just not pass the corresponding .d file on the command line 20:58:58 Deewiant: weak linking? 20:58:58 Deewiant, true, I plan to do fingerprints using some array indeed 20:59:08 ais523_non-admin: module constructors 21:00:47 Deewiant, anyway I got some ideas for optimizing this app even further, they are: 1) avoid using -fpic -fpie -pie that cmake adds for some reason (means non PIE binary, not as good for hardened but slightly faster), 2) use -combine -fwhole-program 21:00:49 :D 21:01:01 no idea if there will be a noticeable change 21:01:04 well, sure, using better optimization flags will speed stuff up 21:01:07 of course profiling info too 21:01:08 profile-guided optimization as well 21:01:11 and whatever 21:01:22 Deewiant, can't you do profiling with ccbi? 21:01:27 err D I mean 21:01:30 sure 21:01:47 nothing automated in the compiler for optimizing based on the resulting info, though 21:01:53 except maybe GDC, I don't know 21:02:11 like said, I can look at the results and just see that something is called 300 000 times and it takes 1 microsecond each time 21:02:15 can't optimize that much 21:02:32 gcc uses profiling data for branch predicition IIRC 21:02:56 so it works out which branch of an if is more likely to be taken, because not jumping is normally faster than jumping on a conditional jump instruction 21:03:29 gcc uses profiling data for branch predicition IIRC 21:03:30 indeed 21:03:34 that's what I'm doing 21:03:42 when speed testing against ccbi 21:03:49 it might depend on the program you're running as a test 21:04:00 and it does 21:04:02 ais523_non-admin, I use same that I speed test on 21:04:03 :D 21:04:08 so in fact, you could have an optimised-for-Mycology conforming Funge-98 interp, for instance 21:04:12 so you get a program that's ultra-tuned for Mycology 21:04:15 ais523_non-admin, exactly 21:04:16 but sucks for everything else :-P 21:04:24 Deewiant, yes right :D 21:04:42 but well I can ultra-tune it for anything 21:04:50 just rerun with profiling 21:04:52 to get that 21:05:03 well sure, but the idea is to have a well-rounded program for running Befunge scripts, not one which is really fast on one specific one :-P 21:05:20 Deewiant, then don't compile it with profiling info 21:05:25 just normal -O 21:05:32 you get something average 21:05:34 actually, any profiling info is likely to be better than no profiling info IMO 21:05:38 AnMaster: exactly, that's what I'm telling you ;-) 21:05:40 ais523_non-admin, oh? 21:05:46 ais523_non-admin: you're probably right 21:05:48 because some of your interp will be program-independent 21:05:54 ais523_non-admin: but don't tell him that! ;-) 21:05:55 ais523_non-admin, indeed 21:06:00 that's true 21:06:04 anyway the source is GPL3 21:06:14 you can compile it with any flags you want 21:06:19 it's your choice 21:06:29 I don't make binaries for downloads for any program I write normally 21:06:50 or you could do branch prediction by hand if you're using gcc; there's some compiler-specific thing (can't remember if it's a __builtin_ or a __attribute__) that lets you specify which branch you think is more likely 21:07:01 ais523_non-admin, yes I know about that 21:07:03 AnMaster: neither do I 21:07:17 even the Windows version of C-INTERCAL comes only in source form 21:07:30 but info page notes that "programmers are notoriously bad at guessing how their programs will perform" 21:07:33 so :P 21:07:46 I maintain a separate autoconf script for it and two separate shell scripts for if you can't get make to work 21:07:52 (one is written for bash, the other for cmd.exe) 21:08:06 the main autoconf script is for the POSIX build 21:08:13 ais523_non-admin, only place it is useful would be in, say, a library where you first has profiled for common usage, then you build that into the library source on "hotspots" 21:08:19 I think boehm-gc does that 21:09:09 and there is both a attribute (for hot/cold functions) in gcc 4.2 and later, and even in earlier a __builtin__ for branch prediction 21:09:56 ais523_non-admin, what irritates me is that it seems impossible to combine profiling info from several different runs :( 21:10:13 it overwrites instead 21:11:07 Deewiant, anyway even with -ggdb -O0 my interpreter is slightly faster than your with -O 21:11:26 D isn't good for speed is it? 21:11:29 ;P 21:11:30 AnMaster: yes, highly-optimized C beats lowly-optimized D. 21:11:36 this is not news. :-P 21:11:40 * ais523_non-admin was under the impression that -g doesn't slow down a program, only inflates its size 21:11:44 D is good for speed, if it's highly optimized. 21:11:48 Deewiant, yep indeed, however I do think D (partly) got a nice syntax 21:11:55 not fully however 21:12:08 of course, given the same degree of optimization, C will be faster 21:12:09 ais523_non-admin, yes but -O0 slows things down 21:12:15 yes 21:12:16 but the D will take 10% less time to write ;-) 21:12:28 ais523_non-admin, and also technically loading the larger program will be slower 21:12:38 if it's only 10% better I'll stick to C for that sort of thing 21:12:40 Deewiant, hum, I started at sunday and got this far 21:13:03 AnMaster: you've been working on it 24/7 judging from your posting here :-D 21:13:10 Deewiant, a lie 21:13:16 besides, I'm writing embedded system code at the moment, where C is too high-level for some things and so I've had to resort to assembler 21:13:17 Deewiant, I could have coded one in C# in about 1/3 of the time 21:13:24 it would have been LOADS slower 21:13:27 and larger 21:13:31 yep 21:13:43 you could have done the same in D, and it wouldn't have been that much slower or larger ;-) 21:13:45 AnMaster: and nonportable 21:13:54 ais523_non-admin, I'd use mono not .NET 21:14:03 so not as non-portable as it could be 21:14:07 but not very portable still 21:14:24 I'd argue .NET is more portable than Posix-only C :-P 21:14:51 Deewiant: most modern OSs are better at POSIX-C than at .NET 21:14:57 Deewiant, no because mono doesn't work on all POSIX 21:15:05 and I even have a sort-of-POSIX implementation for DOS 21:15:06 and even windows can do some POSIX I bet 21:15:18 AnMaster: Windows is actually POSIX-certified 21:15:19 given the number of machines that use Windows, Windows-only code is arguably more portable than anything else ;-) 21:15:27 ais523_non-admin, it doesn't have fork iirc? 21:15:27 yes, and Linux isn't :-) 21:15:32 but you have to download all sorts of weird expansions from Microsoft to get the full effect 21:15:42 ais523_non-admin, I see 21:16:03 * ais523_non-admin likes the definition of fork() on DJGPP (my POSIX-like compiler/environment for DOS) 21:16:20 it amounts to pid_t fork() {errno=ENOMEM; return -1;} 21:17:10 Deewiant, if you want a cfunge with a fixed j wrapping, run bzr pull 21:17:27 ais523_non-admin, -_- 21:17:37 ais523_non-admin, then no program will be able to run another one 21:17:50 ais523_non-admin, wait a second, you made DJGPP!? 21:17:53 wow 21:18:27 I'll always been thinking that DJGPP = cygwin gone insane 21:19:30 DJGPP predates cygwin, no? 21:19:38 maybe it does 21:19:40 or is cygwin older than I think 21:19:45 but did ais523_non-admin actually make it? 21:20:53 I doubt it, if he's alex smith 21:20:53 AnMaster: no I didn't 21:20:59 AnMaster: what did you imply that from? 21:21:22 AnMaster: it does handle system() and exec() OK 21:21:40 ais523_non-admin, err exec would replace current process 21:21:46 and system would lock it up 21:21:54 oh, I see, I was loose in my wording. I meant I used a copy often, not that I wrote it in the first place 21:22:05 aha 21:22:11 I had a tendency to get sh-sick when using Windows... 21:22:53 and DJGPP is a maintained target for C-INTERCAL, so that it runs on DOS and Windows too 21:23:06 ais523_non-admin, anyway the normal way on *nix for many programs is doing something like: vfork() if (return code from vfork whatever) { exec(whatever); } 21:23:11 and trapping SIGCHILD 21:23:17 AnMaster: I know 21:23:29 those would not work under DJGPP 21:23:31 BTW, what's the difference between fork and vfork? 21:23:47 ais523_non-admin, see man pages, but on linux, basically none iirc 21:23:54 it may matter on some *nix 21:24:05 where vfork is faster 21:24:16 -!- oerjan has joined. 21:24:16 as it suspends parent until it has run exec 21:24:44 ais523_non-admin, linux got "copy on write" pages or something like that for all forks however 21:24:57 yes, which is why Windows is DOG SLOW for forking 21:25:04 ais523_non-admin, vfork and setjmp are some of the few instructions that can return twice :) 21:25:04 and multiple processes in general 21:25:29 ridiculous that not even vista got the smart process model 21:25:36 Deewiant, heh 21:25:45 $ ps aux | wc -l 21:25:46 156 21:25:50 my linux runs fine 21:26:08 and I remember it was such a issue they merged several system services in xp into a single process 21:26:12 with different threads 21:26:14 heheh 21:26:42 Deewiant, windows wouldn't handle 156 processes would it? 21:26:43 yes, it's ridiculous 21:26:45 AnMaster: I have 119 by that ps count 21:26:51 sure it could handle a billion processes 21:27:11 creating a process just takes a second or two 21:27:11 whereas on linux, it's more like a millisecond or two 21:27:11 the only one that actually slows things down really, is virtual box when I run it 21:27:40 mostly when I run windows under virtualbox 21:27:52 for some reason linux and *bsd are nicer to the system 21:30:06 Deewiant, weird isn't it? 21:30:22 ? 21:30:30 ais523_non-admin, oh btw, I got everything between 78 and 156, depending on what user I run it under 21:30:41 information hiding++ 21:30:42 :) 21:31:13 $ ps aux | wc -l 21:31:14 4 21:31:16 su - 21:31:20 $ ps aux | wc -l 21:31:20 182 21:31:28 * AnMaster nods, on his freebsd server 21:32:05 but I thought the a meant it was irrelevant which user you were 21:32:25 or is it that on freebsd some users don't have permissions to determine the existence of other users' processes? 21:32:56 hmm... how come that su - didn't change your shell to # anyway? 21:44:18 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 21:44:39 -!- slereah_ has joined. 21:57:41 -!- slereah__ has joined. 21:57:45 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 21:59:53 or is it that on freebsd some users don't have permissions to determine the existence of other users' processes? 21:59:54 indeed 21:59:57 with the right sysctl 22:00:01 ais523_non-admin, as for $ and # 22:00:06 it depends on the PS1 I set 22:00:09 in my .bashrc 22:00:13 I change other things instead :) 22:01:04 ais523_non-admin, and you can do that on linux with some hardening kernel patchsets 22:01:38 ais523_non-admin, and with the sysctl set on freebsd you can only see your own processes unless you are root 22:05:22 ais523_non-admin, the 4 on freebsd as a user were: ssh, bash, ps and wc 22:05:23 :) 22:07:26 hmm... I wonder if it's possible to use ps as an esolang, by starting and ending processes according to what it outputs? 22:08:07 However, that would just be using ps as a data store, unless each of the processes that was created as a result itself did something or other interesting, which would make for an interesting language where each datum is also a thread that does things 22:22:12 -!- slereah__ has quit (Read error: 110 (Connection timed out)). 22:28:26 -!- slereah__ has joined. 22:33:42 -!- slereah_ has joined. 22:34:03 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 22:44:26 ais523_non-admin, huh? 22:45:10 basically you would have processes that communicated by starting other processes (of much the same nature as themselves) and reading ps to see what data was available 22:45:20 it would be horrendously inefficient and tricky to program, of course 22:45:55 ais523_non-admin, and, also concurrency issues 22:46:14 even on single cpu 22:46:24 programs could end before they got read and so on 22:46:40 that would just make programming it all the more interesting 22:46:51 it wouldn't work 22:47:10 not unless threads sleep for quite some time 22:47:18 but sure, go ahead and design it 22:47:27 there must be worse esoteric languages out there 22:48:18 -!- RedDak has joined. 22:59:26 -!- RedDak has quit (Remote closed the connection). 23:02:53 -!- jix has quit ("CommandQ"). 2008-03-13: 00:04:12 -!- olsner has quit ("Leaving"). 00:10:46 MRyaaaaaaaaaaaaaaaaaaa 00:10:53 that is alll 00:12:13 -!- timotiis_ has quit ("leaving"). 00:14:20 * pikhq is a cruel bastard. . . 00:14:43 In the FRC: should you become temporally disjoint from the bus, you should calculate G while waiting for the bus to find you again. 00:14:46 >:D 00:15:09 shall i dare to ask what G is? 00:15:20 indeed i shall. 00:15:23 what is G? 00:15:30 Graham's number. 00:15:38 oops 00:15:52 * oerjan was hoping for the gravitational constant 00:16:09 Sorry, but I like the up-arrow notation. :p 00:20:23 -!- ais523_non-admin has quit ("Bye!"). 00:20:42 knuths arrays are basically the hyper operator? 00:21:14 oklokok: Pretty much. 00:21:19 Different notation for the same. 00:21:33 i invented the hyper oerator as a kid, thought it was a new idea until like last year :P 00:21:36 *operator 00:22:07 It's a fairly trivial concept to *grasp*. 00:22:09 i guess there's not much to invent 00:22:14 But a bit harder to use *usefully*. ;) 00:22:15 / grasp 00:22:48 well, i was mainly trying to find the hyper operations for reals as well 00:22:53 * pikhq should have done A(G, G). . . 00:23:03 but it seems it hasn't been done yet in a meaningful way 00:23:04 You were. . . Trying to extend hyper to the reals? 00:23:08 Bastard. 00:23:12 yeah, hasn't everyone 00:23:13 :D 00:23:50 Not I. 00:23:57 But, then, I'm only in high school. ;) 00:23:57 "The family has not been extended from natural numbers to real numbers in general for n>3, due to nonassociativity in the "obvious" ways of doing it." 00:24:10 well, this was when i was in elementary school 00:24:12 i'm your age 00:24:15 Ah. 00:24:31 it's not like i was a super math genius or anything 00:24:43 i just have a lot of weird ideas 00:25:05 hmm 00:25:15 I'm only a *moderate* genius at math. ;p 00:25:30 heh 00:25:37 i'm not practical enough for math 00:25:46 requires perfection, unlike say programming 00:26:37 * pikhq wonders what the derivative of ^{x}e is. . . 00:26:44 what does that mean? 00:26:49 Tetration. 00:26:51 lambda x : e? 00:26:54 oh. 00:27:04 Or e\uparrow\uparrow x. 00:27:07 * pikhq is a LaTeX junky. 00:28:33 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 00:29:09 -!- Judofyr has joined. 00:29:16 what's x^x? 00:29:18 umm 00:29:21 D(x^x) 00:29:55 well, x^f(x) really, then just extend that 00:30:07 oh, right 00:30:32 hmm, i think i should wait until i'm *not* watching something 00:30:42 i'm not good at multitasking really 00:31:21 umm 00:31:22 what 00:31:28 e up up x? 00:31:44 right, i misparsed you still 00:31:44 Not familiar with Knuth's up-arrow notation? 00:31:53 In it: e^x = e\uparrow x. 00:31:58 yeah 00:32:02 Ah. 00:34:08 i think i got it, not derivable :P 00:34:44 e upup x where x = real doesn't exist, right? 00:34:49 Sure it is! It's a smooth curve and everything. 00:35:01 http://en.wikipedia.org/wiki/Image:Real-tetration.png 00:35:06 ah. 00:35:19 that's a matter of definition then, lessee 00:35:40 hmm 00:35:44 Just because it's not derivable in terms of elementry functions does *not* make it not derivable. ;p 00:36:03 it cannot be derivable if it does not have a definition for reals 00:36:12 it seems it does, but where is it? 00:36:17 :P 00:36:38 e upup x. 00:36:49 What part of that says it's *not* defined on the reals? 00:37:01 what't e upup 0.5? 00:37:03 *what's 00:37:17 e^{1/4}. 00:37:27 I think. 00:37:48 Nope. 00:37:52 i doubt that 00:37:56 It's not. 00:38:07 That's e^{{1/2}^2}. :p 00:38:42 the fact you can possibly extend the array-notation definition using your intuition doesn't make it a real definition. 00:38:59 the array-notation only works for integers with the definition there 00:39:46 well 00:39:49 You're confusing e^^x and hyper(e, x, x). ;P 00:40:06 i am not 00:40:25 e^^x = e^e^...^e where e is there x times 00:40:41 if x isn't an integer, that makes no sense 00:40:42 Yes. What about that definition prevents e^^x from being defined on the reals? 00:40:58 what is e^^0.5? 00:41:30 you can definitely define it for reals, i'm just saying the page doesn't do that. 00:41:58 for instance, you can just define e^^x where x isn't an integer to be zero. 00:42:32 exponentiation does real exponents using the inverse operation 00:42:48 perhaps that could also be created for the array notation 00:43:32 i'm just saying i'm physically not seeing a definition for real arrow-exponent 00:43:41 hmm 00:43:47 have i been saying "array"? 00:43:49 Repeated multiplication doesn't define, say, e^0.5, yet it still exists as a real. 00:43:52 Yes. 00:44:05 pikhq: as i said, defined via the inverse for reals 00:44:07 -!- BMeph has joined. 00:44:22 because you can use the inverse function for the denominator of the exponent. 00:44:48 Having trouble finding an *exact* definition, but it's *about* 1.5. 00:44:57 and define reals to be the limit of doing that where the rational number representing the exponent ...gets closer to the real exponent 00:45:15 that doesn't help at all 00:45:24 you could define it in many ways 00:45:44 Likewise, you could define 1+1=50. I fail to see how that's relevant. 00:45:59 Blargh. 00:46:11 it's relevant in that if it doesn't have a definition, the derivative doesn't have a definition 00:46:18 That Wikipedia page says there's no commonly accepted solution to extended tetration to the reals. 00:46:26 thought so 00:46:59 but it could prolly be done using something like the inverse function way exponentiation uses, as i already said two times i guess 00:47:10 i'll look into that after this episode 00:47:23 Yeah, I think I like the super-logarithm solution. 00:47:54 super-logarithm solution? 00:48:03 exponentiation uses the other inverse :) 00:48:30 True. 00:48:48 The problem being: the super-logarithm on the reals is not defined, either. XD 00:48:55 the only obvious equation to start with would seem to be e^^(x+1) = e^(e^^x) 00:49:25 oerjan: doesn't help, we still need e^x where x in [0..1] 00:49:28 eh 00:49:32 e^^x 00:49:51 hm... 00:51:16 there might be one solution that was particularly nice in some way 00:52:30 Define it in terms of the square-super-root. ssrt(x) = e ^ {W(ln(x))}, where W is the inverse of f(w)=we^w. . . 00:52:43 (can't prove: Wikipedia claims it to be so) 00:54:32 :) 00:54:52 Anyways, that provides a fairly *elegant* extension to the reals. 00:54:56 oerjan: You agree? 00:55:07 i do, that's what i suggested right away 00:55:12 hmm 00:55:25 is there a nice way to compute w? 00:55:33 Taylor series. 00:55:39 myah 00:55:48 i'm too lazy to google, sry :P 00:55:56 The Wikipedia page gives some C source code for W(x). ;) 00:56:31 aye 00:56:58 -!- Corun has joined. 00:57:51 -!- pikhq has set topic: - From Brainfuck to extending tetration to the reals.. 01:00:24 -!- oerjan has quit ("Good night"). 01:00:30 nightie 01:00:31 s 01:21:34 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 01:21:58 -!- Judofyr has joined. 01:33:01 -!- sebbu has quit ("@+"). 01:38:16 -!- calamari has joined. 01:39:15 pikhq: I was curious, so I got the free HTML version of the posix spec and convereted it to PDF.. thousands on pages.. wow 01:39:19 on->of 01:39:40 calamari: Wow. 01:40:01 But that's specifying the behavior of all of UNIX. . . 01:40:18 I think there's a hidden spec out there 01:40:19 Just my collection of *man pages* would probably cover a thousand pages. 01:40:26 undefined of course 01:40:41 "what's good enough to get gcc working with configure scripts?" 01:40:45 (info pages? Hell, that's probably got the POSIX spec in there two times over) 01:41:13 probably a lot less strenuous a goal 01:41:26 Of course. 01:41:51 btw you mentioned that porting gcc over wasn't a big deal.. what's the process? 01:41:51 You need a shell, make, gcc, and libc. 01:42:32 Assuming you use an executable format that GCC supports? Port libc. Compile a GCC cross-compiler. Use that to make a GCC native compiler. 01:42:45 The 'port libc' part is the hard one. 01:43:41 thus newlib 01:43:53 * pikhq can't wait to one day do uname -a and get 'i686-pc-mykernel-newlib' 01:44:10 oh so you're doing it for your regular pc? 01:44:17 Yeah. 01:44:23 I was hoping this was some custom system you built out of parts or such 01:44:26 Although my *regular* PC is actually x86_64. 01:44:36 That makes it a bit harder. 01:44:42 You then have to retarget GCC. 01:44:48 A royal pain. . . 01:44:49 yep 01:45:04 But at least GCC just does RTL->assembly. . . 01:45:12 (for the architecture-specific stuff, that is) 01:45:16 it'd be a new backend 01:45:30 and assembler 01:45:36 Well, yeah. 01:45:55 I'm mostly saying 'Thank god GCC has all the frontends go to the same language.' 01:46:06 yeah 01:52:49 -!- Corun has quit (Read error: 110 (Connection timed out)). 02:07:36 http://www.atmel.com/dyn/products/product_card.asp?part_id=3755 02:07:50 ARM, so gcc is ready to go 02:08:58 -!- oklokok has quit. 02:21:22 Anyone up for a seemingly np complete problem? 02:32:19 -!- Tritonio_ has joined. 02:39:38 -!- Sgeo has joined. 02:40:53 Deformative: Sure. 02:41:01 Just because its NP doesn't mean it can't be solved. 02:41:09 Just that it can't be solved efficiently. ;) 02:41:39 Oh hi all 02:43:10 pikhq: You have a block of memory, and a new order, some locations are duplicated, some are no longer used, but they refill the same block, design an algorithm to find the least number of movements needed. 02:43:54 So you have [a b c d e f] and it needs to be transformed to an arbitrary new order, for example: [a b e e f c] 02:44:14 You have access to extra space. 02:44:29 Sorting algorithm. Lower bound is O(n log n). 02:44:41 It is _not_ sorting. 02:44:49 'Some locations are duplicated' 02:44:53 Whaddya know. It's not. 02:45:12 some are no longer used 02:45:20 Why would you need the minimum amount of movements? 02:45:40 It is a compiler that needs to generate optimal code. 02:46:08 Sorting does not need to remain in the same memory block. 02:46:22 The thing is: you don't necessarily need to generate *optimal* code, if that's too hard to do. What you need to do is produce *pretty good* code. . . 02:46:31 Which is usually a much easier problem. 02:46:42 Less fun. 02:46:59 And besides: finding the lower bound of your movement algorithm there won't help because *you still don't have said movement algorithm*. ;) 02:47:24 Huh? 02:47:30 Reread that. 02:47:38 So, a more *useful* question is "How can I efficiently move things around like this: ..." 02:47:55 I need the least number of movements. 02:48:06 Why do you need that? 02:48:20 Because it stays in the same block... 02:48:29 What you're asking for is the lower-bound of the efficiency of an algorithm that does that. 02:48:38 What you need is the algorithm itself. 02:49:15 Just like asking "How many steps does it take to sort a list?" is useless when you actually want to sort. 02:49:18 The algorithm does not need to re-arange, the algorithm generates code that will re-arrange. 02:50:17 Which is not that much different, algorithmically. . . 02:50:37 Yeah it is. 02:50:51 I still have no clue why you need to know the efficiency of such an algorithm, but not the algorithm itself. 02:50:53 Because you can bruteforce until you find the algorithm that has the least movements. 02:50:54 ;) 02:51:03 Oh. 02:51:07 You're doing it wrong. 02:51:08 ;) 02:51:18 Or you are understanding me wrong. 02:52:01 I suspect, though, that you could trivially adapt a sorting algorithm to that. 02:53:44 Alright, a language privative is to convert [a b c d] to [a a b d] the code generated should not do the same ineffective algorithm every time, the compiler should do a lot of work once so that it has a perfect algorithm every time it is run. 02:53:48 Does that make sense? 02:55:14 Are those two orders always the same between calls to the same language primitive with the same argument? (that is, would "transform(abcd, aabd)" do the same thing every time?) 02:56:09 Yes. 02:57:14 Hmm. 02:57:16 And the only allowed operation of movement? 02:57:33 * pikhq is still tempted to say 'sorting algorithm'. . . XD 02:57:41 It is manipulating arguments. My language is capable of using the same memory block to keep args in for every function, but a function has many of the same args as the function that called it. 02:58:40 So lets say foo( a b c d) calls bar(a a b d) 02:58:41 Deformative: Is the only allowed operation is a[i] = a[j]? 02:58:44 The compiler should optimize that. 02:58:46 Doing it wrong. . . Use the C calling convention on your system of choice, for crissake. 02:58:56 Dude. 02:59:11 That would take the whole esoteric part out of it. 02:59:24 Is this for tail recursion? 02:59:25 cherez: I am trying to generate optimal asm. 02:59:44 If I ever did PEBBLE->assembly, I'd use the C calling convention. . . 02:59:48 And movl is really the only call that should be needed. 02:59:56 That doesn't remove the esotericness of language. . . 03:00:05 It just makes your *compiler* purely insane. 03:00:06 cherez: Sortof, not exactly. 03:00:13 pikhq: Indeed. 03:00:14 Your implementation doesn't have to be esoteric. ;) 03:00:21 cherez: The language does not have return values. 03:00:25 And therefor the stack does not change. 03:00:26 Well, if every operation must overwrite, it's only possible if it's the same output or no variables are dropped. 03:00:47 cherez: He allows temporary storage. 03:01:03 My language is purely continuations. 03:01:09 No returning, no stack frame. 03:01:16 Ah. 03:01:21 Well, the C calling convention won't work. 03:01:23 Carry on. 03:01:29 So reordering the stack then jmp? 03:01:33 So c calling is hardly even feasible, and possibly the least optimal thing imaginable. 03:01:35 :D 03:01:39 cherez: Yes 03:01:51 I need the compiler to generate perfect algorithms that reorder the stack. 03:02:18 Once again: you need the compiler to generate *good* algorithms that reorder the stack, not perfect ones. 03:02:23 :p 03:02:28 yes. 03:02:35 But perfect is preferable. 03:02:42 Brute forcing should be possible. 03:02:49 So it should be able to find the perfect algorithm. 03:03:20 I think that you're going to have a max of however many arguments you have to each function. . . 03:03:25 I *think*. 03:03:34 s/max/min/ 03:03:50 -!- Tritonio_ has quit (Remote closed the connection). 03:04:02 No, a b c d ~> a b c d has no movements 03:04:10 The compiler needs to be able to figure that out. 03:04:23 True. 03:04:43 But it's obvious that the compiled code is going to be doing that in O(1). . . 03:05:21 Genetic algorithm? Stable sorting algorithm? 03:05:52 It should be like O(0) 03:05:54 With O(n) temporary storage, I'd think this is probably O(n) or O(n^2). 03:05:59 It is JUST a goto then. 03:06:17 No movement. 03:06:33 Deformative: O(0) means that nothing happens at all. ;p 03:06:40 If anything at all is done, then it's O(1). 03:06:43 Nothing does happen. 03:06:45 Nothing does happen. 03:06:46 No movement? 03:06:52 No jump? 03:06:52 It happens at compile time, not runtime. 03:06:55 A jmp is damn well something. 03:06:57 Just 'hlt'? 03:07:04 You can try to convince your program counter otherwise. 03:07:13 Well, I suppose it depends on the processor architecture. 03:07:16 jmp is not part of the translation algorithm. 03:07:37 The compiler does not generate any translation if it is not needed. 03:07:43 So yes, O(0) 03:07:51 Remember, the indexes DO NOT CHANGE 03:08:11 indices 03:08:25 It is all compile time. 03:08:35 So the program directly knows what to do. 03:09:22 * pikhq tosses Deformative "The Art of Computer Programming" 03:09:28 Have fun; I'm sure you can figure it out. 03:09:36 Heh. 03:09:44 I told you it is a weird problem. 03:10:12 The hard part is showing a solution is optimal. 03:10:16 Because you are not trying to solve the problem exactly, you are trying to design the perfect solution given limitless time. 03:10:41 I can think of quite a few ways to generate good algorithms, but I can't think how you could prove optimal. 03:11:02 Least number of movl ? 03:11:38 I can't think of a polynomial way that I can prove has minimum movl. 03:12:08 If you cannot even count them, how do you generate the code? :) 03:12:52 Well, I can easily see how you could write an O(n) algorithm to produce O(n) movl. 03:13:05 That's certainly countable. 03:13:21 But I'm also certain there are more efficient ways. 03:13:50 Let me try to get some of my ideas into words. 03:14:02 First, make a list of indices no longer needed. 03:15:19 Next make a list of indices that are at the same place in beginning and result. 03:16:54 Then generate every possible combination to reach the result, and in each combination count the movls. 03:17:21 To generate the combinations, you need to check over every single index and see where they need to go. 03:17:29 Eh, and here is where I am stuck. 03:17:55 Data can be moved to places where that data is no longer needed without any negative effects. 03:18:19 So that is constant in all of the possible combinations. 03:18:26 cherez: See where I am trying to go? 03:18:52 That is roughly the NP algorithm I came up with. 03:19:18 I'd say it's probably NP-Complete, but I'm not certain. 03:20:11 Yes, I just need to find an algorithm for generating all possible combinations. 03:20:33 Even if it is npcomplete, it will generate perfect code, so that is not a problem if the algorithm I come up with is bad. 03:20:53 It also risks *never completing*. 03:21:06 NP-complete algorithms take quite a bit of time. ;) 03:22:02 An algorithm is easy. 03:22:47 Make a queue of operation sets, put an empty set of instructions on it. 03:23:55 While the operations do not produce the desired result, for every possible action that can be taken, add a new operation set that is the one retrieved, plus the new possible action. 03:24:19 Basically just enumerating the possible actions and executing them in sequence. 03:25:22 Hmm... 03:26:22 http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm 03:27:53 Actually, I think that might be polynomial. 03:28:36 A huge polynomial, but polynomial all the same. 03:30:18 No, that's nonpolynomial. 03:30:42 O(((n^2)^n)^2) 03:30:52 Jebus. 03:31:06 Oh well. 03:31:25 The generated apps should be ridiculously fast. 03:31:30 Let's see, at each step there are O(n^2) branches, and there are at most O(n) steps. 03:32:51 So O(n^(2n)) total branches. 03:33:01 Thus as many vertices. 03:33:14 The search is O(v^2) 03:34:33 -!- adu has joined. 03:35:25 Well, I have exams tomorrow, so I should sleep. 03:35:44 I'll be back tomorrow or such. 03:35:57 hi 04:31:19 -!- andydude has joined. 04:31:41 -!- adu has quit (Connection timed out). 04:32:17 -!- andydude has changed nick to adu. 05:06:01 -!- Sgeo has quit (Remote closed the connection). 05:21:09 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 05:55:24 -!- adu has quit (Remote closed the connection). 05:57:29 -!- adu has joined. 06:08:06 -!- calamari has quit ("Leaving"). 06:34:30 -!- adu has quit (Remote closed the connection). 07:15:32 -!- Judofyr has joined. 07:37:15 -!- Judofyr has quit. 07:38:24 -!- BMeph has quit ("calls it a night"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:31:32 -!- oerjan has joined. 11:55:53 err, wtf, looks like *code* memory is corrupted, anyway the output makes no sense 12:09:49 Deewiant, there? 12:09:51 BAD: the top of the stack after y isn't equal to what 1y pushes 12:09:55 wtf does that one mean 12:10:00 isn't it obvious 12:10:01 it does y 12:10:03 and then it does 1y 12:10:10 and it expects the top 2 elements of the stack to be the same 12:11:59 hm 12:12:23 I'm trying to fix my y and I end up with heap or stack corruption :/ 12:12:32 * AnMaster fixed that part at least 12:12:33 isn't it fun to program in C ;-) 12:13:01 aha got it 12:13:15 ==12040== Conditional jump or move depends on uninitialised value(s) 12:13:15 ==12040== at 0x40565E: ExecuteInstruction (interpreter.c:197) 12:13:15 ==12040== by 0x405EBB: interpreterMainLoop (interpreter.c:440) 12:13:15 ==12040== by 0x405FC7: interpreterRun (interpreter.c:472) 12:13:15 ==12040== by 0x404C9D: main (main.c:121) 12:13:22 yay for valgrind :D 12:13:54 yay for not initializing variables by default 12:15:02 -!- oerjan has quit ("leaving"). 12:15:32 Deewiant, well no that wasn't the issue 12:15:45 it was an array index off by one issue 12:15:52 or rather 12:15:55 yay for not having array bounds checks ;-) 12:15:56 of by a lot 12:16:06 basically unsigned int 12:16:17 wrapped, and ended up with 71634721834 or something like that 12:16:23 whatever you say, I can spin it into a pro-D anti-C argument if I try hard enough :-P 12:16:28 (gdb) print tmp->top - request 12:16:28 $1 = 18446744073709551610 12:16:29 :D 12:16:34 Deewiant, indeed I know 12:16:38 still I'm slightly faster 12:16:41 fortunately, I don't have to try very hard ;-) 12:16:43 my y is not optimized 12:17:16 I'm convinced by now that the only significant difference is the function pointers versus switch-case 12:17:42 consider the noOperation function that I showed yesterday :-P 12:17:50 it's called through a function pointer every time z is hit 12:17:54 even though it's just {} 12:18:29 yes, and that's just silly 12:18:31 and I suspect PaX does some sort of checking related to function pointers, which results in extra slowdown on your comp 12:18:39 I think the code is cleaner this way 12:18:41 Deewiant, I don't think it does 12:18:51 PaX just does NX and such 12:18:55 AnMaster: I read some docs on PaX design and they mention something to that effect 12:19:03 my gcc does stack smash protection though 12:19:10 -fstack-protector-all 12:19:15 likely slows things down 12:19:22 something like that, anyway 12:19:59 real 0m0.610s <-- debug build 12:21:53 Deewiant, btw for ccbi mycology list command line arguments backwards 12:22:03 is it supposed to do it that way? 12:22:24 say ./ccbi mycology.b98 some other things 12:22:35 That the command-line arguments were: [ "things" "other" "some" "mycology.b98" ] 12:22:46 hrmh 12:23:00 not sure whether that's a CCBI or Mycology issue ;-) 12:23:03 while mine do: That the command-line arguments were: [ "mycology.b98" "some" "other" "things" ] 12:23:16 might be CCBI then 12:23:17 lessee 12:23:24 Deewiant, so I want to know if I should push them in the other order or not 12:23:42 I got no idea what one is correct on this thing 12:23:46 well it's an interpretation issue I think 12:23:51 The first string is the name of the Funge source program being run. 12:23:59 does "first" here mean topmost or the one that was pushed first 12:24:38 Deewiant, good question 12:24:42 so it's a UNDEF? 12:24:49 I'd say so, yes 12:25:00 most of y is strictly speaking UNDEF 12:25:08 maybe mycology should test it in "Here's how your interpreter deals with some possibilities unmentioned in the specification..." section? 12:25:28 (if you got room there) 12:25:41 naw, because that's uncontrollable - would need the user to pass some command line args 12:25:48 ah true 12:25:51 and to be frank there's a lot of "possibilities unmentioned in the specification" 12:25:59 oh yes 12:26:01 that was more like a roundup of stuff that is likely to crash/infinite loop your interpreter 12:26:14 aha 12:26:19 GOOD: y acts as pick instruction if given large enough argument 12:26:20 yay 12:26:26 or that was the original intention, anyway :-) 12:26:52 Deewiant, currently my interpreter may be slightly slower, due to a non-optimized y instruction heh 12:27:00 I actually create a second stack atm 12:28:14 what do you push for team number btw :-P 12:28:22 0 I think 12:28:30 because I got no idea what to do there 12:28:35 yeap 12:29:03 I think it's a remnant of Befunge-97 but I'm not sure 12:29:12 -p, --disable-fprints Run as if no fingerprints were implemented. 12:29:14 -p, --print-fprints List all supported (and knowingly unsupported) 12:29:16 err 12:29:22 you got that messed up in ccbi --help 12:29:29 yes, I know, I updated that 12:29:36 you've still got the old version :-) 12:31:31 yay (while maybe slower atm, don't know): all good or undef 12:31:34 \o/ 12:31:42 no fingerprints yet of course 12:38:09 actually there is one thing left, but mycology doesn't test it 12:38:23 that the size of stacks for y actually pushes a value for each stack 13:23:56 -!- faxathisia has joined. 13:37:28 Deewiant, on 64-bit it actually runs slightly faster with int_fast64_t than int_fast32_t, but almost the same speed 13:38:06 Um ... on a 64-bit environment, shouldn't int_fast32_t == int_fast64_t? 13:38:30 GregorR, hm likely 13:38:44 fastX = the type at least this large that's fast on this system, which on a 64-bit system should always be 64-bit. 13:38:47 gcc -std=c99 -fbranch-probabilities -D_GNU_SOURCE -Isrc -combine -march=k8 -pipe -O3 -fwhole-program -Wl,-O1,--as-needed,--hash-style=gnu -Wall -Wextra -o cfunge08 lib/libghthash/*.c src/*.c src/*/*.c src/funge-space/b98/funge-space.c -lgc -lcord 13:38:53 that line rocks anyway :D 13:39:04 profile based optimizing 13:41:04 GregorR, you are right 13:41:18 Of course I am :P 13:41:20 with int32_t I get faster actually 13:41:30 $ time ./cfunge08 mycology.b98 > /dev/null 13:41:31 real 0m0.266s 13:41:31 user 0m0.074s 13:41:31 sys 0m0.017s 13:41:38 GregorR, madly optimized 13:41:44 for mycology 13:41:45 :D 13:42:18 way faster than ccbi 13:42:45 $ time ./ccbi --disable-fprints mycology.b98 > /dev/null 13:42:45 real 0m0.513s 13:42:45 user 0m0.173s 13:42:45 sys 0m0.005s 13:42:48 hehe 13:43:01 of course the latter is the binary Deewiant provided 13:43:12 as I can't compile ccbi successfully here 13:43:30 -!- Slereah has joined. 13:43:42 GregorR, CCBI being written in D btw 13:44:35 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!"). 13:45:10 That explains why you can't compile it *haw haw haw* 13:45:30 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 13:52:50 GregorR, haheh :D 13:52:53 haha* 13:56:48 got it down even more 13:56:59 real 0m0.132s 13:56:59 user 0m0.078s 13:56:59 sys 0m0.021s 13:57:08 gcc -std=c99 -fprofile-use -D_GNU_SOURCE -Isrc -combine -march=k8 -pipe -O3 -fwhole-program -Wl,-O1,--as-needed,--hash-style=gnu -Wall -Wextra -o cfunge08 lib/libghthash/*.c src/*.c src/*/*.c src/funge-space/b98/funge-space.c -lgc -lcord 13:57:12 is my final command line 13:57:13 :D 13:57:18 for gcc 14:08:28 real 0m0.127s 14:08:38 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 14:08:55 -!- Slereah has joined. 14:14:15 -!- slereah_ has joined. 14:15:47 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 14:26:07 bbl 14:36:17 * slereah_ received "From Frege to Gödel" 14:36:23 650 pages of logic :o 14:37:27 Heh. Begriffsschrift is funny looking. 14:38:48 Ah yes, "Building blocks of logic", by Schönfinkel. 14:38:48 Full of combinators :D 14:48:57 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 14:49:09 -!- slereah_ has joined. 14:59:55 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 15:01:57 -!- slereah_ has joined. 15:20:12 -!- sekhmet has quit (Remote closed the connection). 15:24:53 AnMaster: your month in y is off by one 15:29:17 -!- sekhmet has joined. 16:03:20 -!- timotiis has joined. 16:22:09 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 16:23:50 Deewiant, ok possible 16:25:57 * AnMaster fixes 16:31:32 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 16:31:57 Deewiant, pushed fix (as well as make cmake nicer, to actually check for existence of boehm 16:32:01 and so on 16:32:23 -!- sekhmet has joined. 16:33:02 AnMaster: btw, if you want to fix a typo in Mycology, change line 188 column 110 (should be a space just to the left of a <) to a ; 16:34:10 Deewiant, what does that typo do? 16:34:39 it's a typo, not a bug 16:34:42 i.e. it only affects output 16:34:45 ah 16:34:49 Deewiant, in what way? 16:35:14 AnMaster: run cfunge08 on the unmodified mycology and there should be a messed-up message where it tests k with a negative argument 16:35:15 "a space just to the left of a <" 16:35:16 err 16:35:18 there is a > there 16:35:21 not a < 16:35:26 right, my bad 16:35:29 -!- slereah_ has joined. 16:35:37 see how easy it is to make typos? ;-) 16:35:59 heh 16:36:09 anyway can't see anything about negative k in output? 16:36:31 AnMaster: at the place where it's testing stuff unspecified, right before fingerprints 16:36:43 ah now I see it 16:37:23 right 16:37:31 Deewiant, you want to upload a fixed version 16:37:35 already did 16:37:46 just thought it'd be easier to tell you to fix it than to have you unzip it :-P 16:37:54 now I got like 5 copies of mycology around in different places all different versions 16:37:59 probably 16:38:00 heh 16:38:03 just keep one copy 16:38:08 well yes 16:40:05 Deewiant, btw does the standard say if months should be 0-indexed or 1-indexed 16:40:10 in the y result 16:40:40 BTW, if I remove the fflush(stdout)s from cfunge08, it's consistently 25% faster than CCBI. otherwise, CCBI beats it when not outputting to dev/null 16:40:54 AnMaster: don't think so, but all the interpreters agree that they're 1-indexed ;-) 16:41:03 Deewiant, heh indeed 16:41:22 Deewiant, ok I'll change that to only flush at newlines or something 16:41:42 and IMHO that should be the default if unspecified anyway, only programmers use 0-indexed values 16:41:42 isn't that was ccbi does? 16:41:46 yes 16:42:01 Deewiant, well who would use befunge, except programmers? 16:42:25 gmtime that I use to split the date up, uses 0-indexed month 16:42:30 just FYI ;P 16:43:18 which is messed up IMO 16:43:18 because it has a 1-indexed day 16:43:39 indeed 16:47:28 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 16:47:36 -!- slereah_ has joined. 16:51:28 Deewiant, btw using 32-bit versions on 64-bit platforms make it *EVEN* faster ;P 16:51:37 as in using 32-bit data types 16:51:43 but compiling for 64-bit 16:54:57 Bullshit. 16:56:54 pikhq, what? 16:56:58 I did profiling :P 16:57:00 ... 16:57:05 on my app 16:57:06 Comparing what to what? 16:57:39 pikhq, same program compiled to use 32-bit data types and 64-bit data types. However of course the code was 64-bit still in either case 16:57:44 Ah. 16:57:59 AnMaster: are you talking about int_fast32_t versus int_fast64_t? 16:58:09 That makes sense, then. . . I think. 16:58:12 Deewiant, int_fast64_t vs. int32_t in fact 16:58:13 :) 16:58:21 because int_fast32_t = 64-bit on amd64 it seems 16:58:25 thought so, because int_fast32_t should be the same 16:58:43 Try it in assembly, though. 16:58:47 anyway I'm making some ifdef for them 16:58:58 pikhq, no way I'm going to write a befunge98 interpreter in asm 16:59:00 just no way 16:59:17 AnMaster: That's just to satisfy my curiosity about what the hell is making it faster. 16:59:36 pikhq, try gcc -S to make it output asm 16:59:39 pikhq, anyway: 16:59:40 Reading a few chunks of assembly code doing the equivalent thing with its data types would help that. 16:59:55 gcc -std=c99 -fprofile-use -funsafe-loop-optimizations -Wunsafe-loop-optimizations -fvisibility=hidden -D_GNU_SOURCE -Isrc -combine -march=k8 -pipe -O3 -fwhole-program -Wl,-O1,--as-needed,--hash-style=gnu -Wall -Wextra -o cfunge08 lib/libghthash/*.c src/*.c src/*/*.c src/funge-space/b98/funge-space.c -lgc -lcord 16:59:56 :D 17:00:27 -ffast-math made it *slower* in fact 17:00:28 no idea why 17:00:38 that's just overkill :-P 17:00:46 Deewiant, the line? 17:00:48 nah 17:00:53 I'm not talking 'all of Befunge', just "mov %eax, $foo" vs. "mov %rax, $foo". 17:00:53 ;p 17:01:06 AnMaster: For the love of God, don't do -ffast-math. 17:01:08 pikhq, very likely it is due to how I handle them 17:01:16 It's almost as bad as -funroll-loops. 17:01:19 pikhq, I don't do any floating point maths at all 17:01:27 Still: don't. 17:01:37 pikhq, and I do optimizing with profile feedback 17:01:47 and that *DOES* activate -funroll-loops, based on profile data 17:01:51 see man page 17:01:55 Just stick with -O2, for the love of God. 17:02:04 pikhq, normal is -O0 -ggdb3 :P 17:02:12 True. 17:02:19 just working on beating Deewiant's CCBI :D 17:02:23 at speed 17:02:24 -O2 is the most optimization you can do sanely. 17:02:27 Oh. 17:02:35 pikhq, yes but I'm the author of cfunge 17:02:40 so I know what I can do safely 17:02:41 Well, in that case, don't distribute those binaries without saying 'stupidly optimised', and carry on. 17:02:42 :P:P 17:02:46 Oh. 17:02:50 In that case, just carry on. 17:02:54 pikhq, heheh 17:03:06 And beat everyone else that tries that without grokking his/her code. 17:03:08 pikhq, of course I'm well aware of that things may break 17:03:25 and indeed likely will if I'm not 100% sure of what I'm doing right now 17:03:33 and verifying result with test suite 17:03:45 pikhq, the normal way I compile it with is -O0 -ggdb3 after all :D 17:03:49 * pikhq grabs an assembler. That's how we optimise code. . . 17:03:56 And I walked up hill both ways! In the snow! 17:03:58 pikhq, nah, I let gcc or whatever do it 17:04:00 haha yes 17:04:11 pikhq, work 25 hours / day? 17:04:15 Of course! 17:04:26 having to clean out the lake you live in before you woke up? 17:04:33 But, on a more serious note: as cool as assembly is, x86 assembly makes it such a pain that you damned well better not. 17:04:41 I'm in Colorado. What lakes? 17:04:44 * AnMaster remembers that mony python thing 17:05:20 pikhq, I thought it was a reference to a Monty Python sketch (spelling?) 17:05:31 * pikhq returns to reality. . . 17:05:33 anyway, no way I'm doing x86 asm 17:05:52 I think -ffast-math makes the floating point code go through the x86 FPU. . . 17:05:55 1) I'm on x86_64, 2) I only done some ams for PIC 17:06:03 pikhq, aha, I see 17:06:09 The problem being that, by default, and floating point code goes through SSE2, which is faster. 17:06:14 s/and/any/ 17:06:41 aha 17:06:47 pikhq, thanks for that information 17:07:47 Well, that is, that's the default on x86_64, since every x86_64 chip does SSE and SSE2. 17:08:06 pikhq, so I should do -mfpmath=sse then? 17:08:14 as well as -ffast-math :D 17:08:17 * AnMaster runs 17:09:42 No, you shouldn't do either... 17:09:56 Since gcc is compiling for x86_64, it does SSE2. 17:10:20 That's the fastest you can guarantee your floating point code is running, unless you can assume SSE3. 17:10:32 In which case, just do -msse3. 17:11:23 pikhq, I do have sse3 in my sempron in fact 17:11:42 If you're on Gentoo, add -msse3 to your CFLAGS and recompile your stuff. ;) 17:11:44 anyway I use a old gcc, 4.1.2 17:11:54 gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.2) 17:11:54 no idea if it makes use of it 17:11:56 So do I. 17:12:00 pikhq, yep I got it in CFLAGS 17:12:03 Mmkay. 17:12:08 gcc (GCC) 4.1.2 20070214 ( (gdc 0.24, using dmd 1.020)) (Gentoo 4.1.2 p1.0.2) 17:12:35 Yeah, GCC newer than 3.something uses -msse3. 17:14:04 I wonder, should I use gcc __builtin__ stuff for vector addition 17:14:07 only x and y 17:14:12 probably not worth it 17:14:55 real 0m0.107s <-- and that is with profile generation code heh not using the profile feedback 17:15:20 real 0m0.104s using profile data 17:15:32 oh and this is using the flush the way ccbi does it 17:15:58 Yeah, add -msse3 to your CFLAGs. 17:16:04 Should make your vector code faster. 17:16:11 (read: single operation. ;p) 17:16:44 pikhq, well I actually do it like this now: 17:16:55 ip->delta.x *= -1; 17:16:55 ip->delta.y *= -1; 17:17:06 or 17:17:12 ip->position.x += ip->delta.x * steps; 17:17:12 ip->position.y += ip->delta.y * steps; 17:18:16 real 0m0.097s 17:18:17 yay! 17:18:23 Hmm. 17:18:23 slightly less than 0.1 second 17:18:27 \o/\o/ 17:18:28 Spiffy. 17:18:40 pikhq, for the required part of mycology test suite 17:18:48 average is still around 0.104 or so 17:20:48 pikhq, btw this is using 32-bit data types 17:21:03 Mmm. 17:21:30 still "very fast" with 64-bit 17:21:56 I bet caching is a bit harder with 64-bit data types or something. . . 17:21:58 AnMaster: I'm just happy that I'm only about 25% slower given that I implement much more than you do :-) 17:22:04 pikhq, probably 17:22:19 Especially since you're on a Sempron. 17:22:20 Deewiant, well that is with reflecting on fingerprints I assume 17:22:26 -!- slereah__ has joined. 17:22:26 Those usually have somewhat small caches. 17:22:39 cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz w/ 128 KB L2 Cache] 17:22:43 indeed :( 17:22:54 with 64-bit data types: 17:22:55 real 0m0.159s 17:23:02 still fast I'd say 17:23:03 My Sempron is a 2800+. 17:23:08 AnMaster: sure, but there's still a lot of overhead just from the fact that fingerprints and mini-funge exist at all, whether they're enabled or not 17:23:11 256KB L2 cache. 17:23:18 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 17:23:25 AnMaster: and don't forget that I still do file IO there, since I have i and o. and then there's concurrency. 17:23:27 Deewiant, not the way I plan to do it, if they are not enabled, do not check 17:23:33 Deewiant, hm 17:23:44 Deewiant, I know my hash table isn't very efficient 17:23:54 and wrapping with cardinal could be made faster 17:24:09 considering that I think mine still has potential 17:24:12 :) 17:24:28 I just use what's built-in to D, it's hardly optimal 17:24:32 Deewiant, I'll do some gprof analysis later 17:25:06 just I find gprof output exceedingly hard to parse 17:25:35 bbl food 17:29:38 you do realize there are frontends to gprof :-) 17:32:22 Deewiant, tried kprof 17:32:35 know any good frontend? 17:32:42 no, haven't used gprof much 17:34:38 Deewiant, I got an idea for how to make support for fingerprints almost as fast as without fingerprints when they are disabled 17:34:48 instead of mapping each to reflect I got a better idea 17:38:17 Deewiant, how does the last version perform for you now 17:38:36 ccmake should now show a use 64-bit option 17:39:06 -!- sekhmet_ has joined. 17:41:04 -!- sekhmet has quit ("Reconnecting"). 17:41:50 -!- sekhmet_ has changed nick to sekhmet. 17:42:55 looks like it's about twice as fast as CCBI 17:49:30 Deewiant, currently yes 17:49:40 of course file IO would make it slower 17:49:49 and so on 17:50:32 Deewiant, and I know the hash library I use is not very performant indeed 17:50:46 and there is room for lots of optimizing in wrapping code 17:50:54 AnMaster: it's probably more performant than the D internal one, which I know to be quite poor 17:51:03 ah ok 17:51:25 Deewiant, problem is, interally, the hash library mallocs once for each cell, to store some data 17:51:43 if you compile with debug, you can see that from gdb, by doing: call GC_dump() 17:51:50 A LOT of output of small allocations 17:54:06 the D one probably does that too, although it might be smarter in that it allocates in blocks 17:54:10 don't know 17:56:01 Deewiant, well the values I allocate in blocks, but the key data it does internally into small blocks 17:56:21 I know a better hash library, but I think it may have license issues 17:57:28 speaking of licenses, I don't see CCBI's license anywhere in cfunge08, although you've even copied a comment directly from it ;-P 17:57:49 Deewiant, yes but isn't it BSD? 17:57:56 you said that before 17:58:02 yes, and what does the license say 17:58:15 that means it is leegal to relicense it under GPL in fact, afaik? 17:58:17 "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer." 17:58:21 hm 17:58:34 Deewiant, I'll change the comment if you want though 17:58:37 so just slap CCBI's license.txt in COPYING and you're good from my point of view 17:58:49 -!- sekhmet_ has joined. 17:59:23 Deewiant, it is the 3-clause BSD license? 17:59:33 yep 17:59:43 the one with the advertisement rule? 17:59:49 * AnMaster changes the comment 17:59:55 no, that was the 4-clause one 17:59:58 ah 18:00:25 AnMaster: just cat COPYING license.txt > COPYING :-P 18:00:39 Deewiant, afraid there may be an issue with doing that 18:00:45 how's that 18:00:46 -!- sekhmet has quit ("Reconnecting"). 18:01:05 Deewiant, would be confusing and probably not ok according to either your license or GPL 18:01:17 AnMaster: no, that's exactly how it's done 18:01:31 Deewiant, show me some other software doing that 18:01:34 -!- sekhmet_ has changed nick to sekhmet. 18:01:42 AnMaster: just say "cfunge08 uses some parts of stuff based on CCBI, which is licensed thus:" 18:01:45 AnMaster: windows, for instance :-P 18:01:51 AnMaster: it has parts of BSD's network stack 18:01:53 Deewiant, well open source software doing it 18:02:31 you want me to go through random src projects looking for something which uses multiple projects' code? 18:02:36 s/src/open src/ 18:02:45 heh ok no 18:03:59 google finds some stuff 18:04:05 AnMaster: http://www.j-dom.org/download/README for instance 18:04:12 don't know what that is but it has it the way it should be 18:04:16 "The Hypersonic SQL license means that we must include the following, which applies only 18:04:20 to the files in hsql.jar: 18:04:21 Deewiant, just rewrote comment locally anyway before you mentioned it her 18:04:22 and such 18:04:33 it's shorter now 18:04:38 // The weird stuff below, is, as described by CCBI: 18:04:39 // Instruction executes *at* k 18:04:39 // If the instruction k executes, changes delta or position, we are finished. 18:04:39 // If it doesn't we should jump to *after* the instruction k executed. 18:04:45 AnMaster: but you've still been reading my source and basing much of your stuff on it :-) 18:04:59 Deewiant, yeah, true, and will even more for fingerprints 18:05:28 Deewiant, problem is, it's hard to pinpoint where exactly is steeling your stuff 18:05:40 a line or algorithm here and there 18:05:49 AnMaster: so just say "some of this stuff, you don't need to care what" 18:06:08 ok good idea 18:09:55 -!- slereah_ has joined. 18:09:55 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 18:14:20 Deewiant, pushed change. Hope you are now happy 18:15:22 yeh, looks good to me :-) 18:16:18 Contents of section .data: 18:16:18 606128 00000000 00000000 00000000 00000000 ................ 18:16:18 606138 305e6000 00000000 0^`..... 18:16:21 * AnMaster wonders what that is 18:16:36 almost all is .rodata 18:16:45 heh 18:16:54 I guess some static variables 18:17:13 Yeah. 18:17:16 And string constants. 18:17:26 pikhq, nop they are .rodata 18:17:29 s/constant/literal/ 18:17:34 so are literals 18:17:41 Hmm. 18:19:12 pikhq, btw I looked at the gcc -S output for the optimized binary and compared with the -O0 one 18:19:23 -!- sebbu has joined. 18:19:28 in the optmized almost all lines are just register operations 18:19:48 in the -O0 one, there is a lot of push and pop 18:19:48 heh 18:27:05 does anyone compile befunge 18:27:05 ? 18:27:11 or anything 18:27:40 I found a reference to a "real" befunge compiler on google but the page is gone 18:28:06 it might be quite simple, but you need to do compilation at runtime too 18:28:34 do making a native compiler would basically require you to include something like gcc 18:28:44 in every runnable prog that is 18:28:58 *so 18:32:20 oklopol, JIT should be possible 18:33:24 oklopol, indeed, do one if you want 18:33:32 you would be even faster than mine :) 18:33:43 of course you need to pass mycology as well 18:34:32 "MCBC is an MS-DOS only Befunge-93 compiler" 18:34:34 there was ajti befunge compiler 18:34:36 jti 18:34:38 jit 18:34:42 somewhere 18:34:44 hm 18:34:58 Deewiant, I doubt it supports p 18:35:33 without p (or in 98, s as well) it would be doable 18:35:34 AnMaster: all the pages which link to it say it's fine 18:35:43 AnMaster: for almost all programs, there will be no compilation at runtime. 18:35:43 hm 18:35:47 oklopol: the wiki page actually talks about compilation 18:35:55 it's just programs that require it can always be writen 18:35:58 *written 18:36:02 "The Betty compiler, for example, treats every possible straight line of instructions as a subprogram, and if a p instruction alters that subprogram, that subprogram is recompiled." 18:36:06 oklopol, I use p a lot in my code 18:36:07 that's JIT 18:36:16 lament, yep 18:36:19 sounds nice 18:36:23 AnMaster: do you change code at runtime? 18:36:27 i was going to write a befunge compiler like that 18:36:32 but, lazy 18:36:35 that appears to be the only reference to betty, though :-/ 18:36:43 that Google can find, anyway 18:36:43 oklopol, yes in befunge I would 18:37:24 i see 18:37:29 -!- faxathisia has joined. 18:37:50 http://quadium.net/funge/tbc/ 18:37:52 there is that I find 18:38:07 doesn't count 18:38:25 hm true just standalone interpreter/code bundler 18:38:33 with befunge you can do either threaded code or JIT 18:38:44 -!- ehird has joined. 18:38:53 lament, threaded code would be same as interpreter? 18:39:00 i just came up with awesome ideas for the underload compiler \o/ 18:39:02 AnMaster: no 18:39:08 no? 18:39:11 AnMaster: interpreter is a main loop that looks at individual instructions 18:39:16 lament, aye 18:39:26 AnMaster: threaded code is each instruction is a piece of executable code, that executes and then passes control to the next instruction 18:39:27 like ccbi and cfunge does it 18:39:37 lament, sounds weird 18:39:41 not really 18:39:43 AnMaster: not weird 18:39:49 hm 18:40:00 AnMaster: forths uses it 18:40:03 the firs tforth, for example :) 18:40:07 so it dates back to at least the 70s 18:40:11 so, maybe weird 18:40:15 but not in the 'new and crazy' sense 18:40:19 it's the normal way to compile forth, and it's how my brainfuck to smetana compiler worked :) 18:40:21 actually you don't need to compile befunge, you can just make a CPU that executes befunge 18:40:25 try one in VHDL 18:40:26 or whatever 18:40:28 :D 18:40:30 AnMaster: why do you think forths are really, really damn fast? 18:40:35 because of threaded code, mainly. 18:40:37 ehird, no idea that they were 18:40:43 (and the whole 'damn minimal semantics' thing) 18:40:52 forth is such a lovely language. i wish it were usable. 18:40:55 http://www.forthfreak.net/index.cgi?BashForth 18:40:56 slow? 18:40:58 :P 18:41:07 AnMaster: gosh, I wonder 18:41:17 lament: insert oblig. factor propaganda here 18:41:25 * ehird reads reddit too much, mind b0rken :( 18:41:31 :-) 18:41:35 hmm 18:41:38 StringThreadedCode 18:41:56 that sounds AWFUL 18:41:56 :D 18:41:56 ehird: http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=bigforth&lang2=gcc 18:41:58 oh my god 18:41:59 ehird: i have looked just a little at factor, and it seems to be much less lovely 18:42:00 you just basically store the code 18:42:01 :D 18:42:13 lament: well duhhhh 18:42:15 i mean traditional forths 18:42:23 and also never compare anything to gcc 18:42:29 ehird: uhhhhh? 18:42:31 gcc has millions of people micro-optimizing it 18:42:35 Deewiant, I'm working on fingerprints atm, well mine will be virtually as fast when they are disabled, and even virtually as fast as long as no finger print is loaded, but it will be slower if they are loaded, then on same speed as CCBI I guess 18:42:36 it will always win :) 18:42:39 bigforth is on optimized compiler 18:42:42 yes 18:42:44 you don't need that 18:42:47 i mean traditional, old forth compilers 18:42:48 besides forth is really low-level 18:42:50 are blazing 18:42:53 so for benchmarks 18:42:59 you should be able to hand-optimize 18:43:02 AnMaster: all depends on what fingerprints you implement. :-) 18:43:06 lament: not the point 18:43:08 bad compiler choice. 18:43:13 i don't understand 18:43:22 Deewiant, yes indeed, but I mean fingerprint mechanism in general 18:43:27 i am talking about old, traditional forths 18:43:30 they -are- blazing 18:43:34 ehird: you're saying biforth is worse than those? 18:43:38 lament: Yep. 18:43:44 you're ntus 18:43:50 and i'm not even gonna correct that typo 18:44:08 lament: it doesn't even use threaded code 18:44:10 from what i can see 18:44:48 bigforth website is amazing 18:44:56 it was created in 1997 and the design was never changed 18:45:03 so in that way, it's like Factor :) 18:45:11 lament: factor had a redesign like a year ago 18:45:12 :p 18:45:26 ehird: http://factorcode.org/slava/ 18:45:56 lament: oh, yes, that. 18:46:04 (i am assuming you know that was created *recently* :p) 18:48:05 also 18:48:11 translating functional stuff to a c-style syntax is amusing 18:48:15 U[] map(U(T) func, T[] lst) 18:48:40 * AnMaster is still wondering about a befunge CPU 18:48:41 as in 18:48:45 coded in VHDL 18:48:49 or something like that 18:49:01 AnMaster: not very interesting, really 18:49:08 you'd need to translate it to 1d before execution 18:49:15 to 1d? 18:49:18 1-d 18:49:24 ehird, why? 18:49:39 it could represent memory as 2D 18:49:43 not impossible 18:49:50 for befunge93 at least 18:50:09 you could make a custom computer architecture for it 18:50:53 Deewiant, what is the point of the NULL fingerprint? 18:51:48 AnMaster: easy unloading of whatever's currently loaded? 18:51:57 behh, I have to write a b98 interp now 18:52:04 Deewiant: is it painful or just tedious :( 18:52:04 Deewiant, but whatever is currently loaded would be loaded under 18:52:17 ehird, why do you want to write one? :/ 18:52:17 ehird: I found it quite fun, actually 18:52:22 ehird: but some of the fingerprints were painful 18:52:25 AnMaster: why do you? 18:52:29 Deewiant: TIME TRAVEL! 18:52:32 AnMaster: I mean load whatever, then unload NULL 18:52:35 ehird: yeah, that one in particular. 18:52:43 Deewiant: it'll be a fun day with \8, I guess. Or do you really need ncurses? 18:53:05 only if you implement the NCRS fingerprint :-) 18:53:24 ehird, and yes quite fun apart from three things 1) stack stacks 2) wrapping 3) y instruction 18:53:27 those are painful 18:53:32 Deewiant: hmm. doesn't that require interpreter support? 18:53:36 fingerprints I'm working on atm 18:53:39 Deewiant: like, you can't just ad-hoc add it 18:53:42 you must design for it 18:53:54 ehird, you could ad-hoc NCRS I think 18:54:09 ehird: ncurses, or fingerprints 18:54:10 CCBI certainly does 18:54:31 Deewiant: nc 18:54:39 -- also jeez, befunge 98 needs a gc? 18:54:44 this'll be tons of fun ;) 18:54:50 (of course I will write my own! :p) 18:54:56 ehird: the interface is such that the befunge program starts up NCRS, so it can be added "ad-hoc" 18:55:01 ehird: and no, you don't need GC 18:55:02 ehird, however two things I can see would require redesign: time travel, and the hover mode stuff, 18:55:15 ehird, why would you need a gc? 18:55:17 and IMAP 18:55:19 and possibly others 18:55:22 it is just that a gc is so much easier 18:55:27 Deewiant, what is IMAP one? 18:55:38 AnMaster: remap instructions, like swap 5 and 4 for instance :-) 18:55:49 Deewiant, ok won't do that one then 18:56:02 AnMaster: but "redesign" is a bit overstating it, I think 18:56:10 AnMaster: I thought you hated gc 18:56:16 Deewiant: eh, that's not too hard 18:56:19 just more indirection! ;) 18:56:19 ehird, I hate it with GUI apps 18:56:26 they just need adding data to the IP structure and some extra handling in all instruction execution 18:56:30 AnMaster: change of heart 18:56:50 ehird, or rather, I love it when it works, and hate it when it doesn't 18:56:50 :P 18:57:19 Deewiant, anyway anything requireing any exensive core change I won't do 18:57:39 and "extensive" is a bit pushing it, as well :-) 18:57:50 MODE is somewhat extensive for queue and insert mode 18:57:55 TRDS is definitely extensive 18:58:00 yes 18:58:01 the rest, I don't think so 18:58:03 and IMAP would be too 18:58:04 can't recall anyway 18:58:10 not IMO 18:58:14 as I use a switch case 18:58:28 and I will continue to do that for anything but A-Z 18:58:32 AnMaster: basically it's "instruction = ip.mappings[instruction];" 18:58:45 before you head in the switch-case 18:58:47 Deewiant: how many fprints does ccbi implement? 18:58:52 Deewiant, yes and that would make it slower :/ 18:58:57 ehird, lots 18:58:59 almost all 18:59:04 ehird: all that I know of except WIND and SGNL 18:59:11 Deewiant, and FNGR 18:59:11 Deewiant: what does TURT use? 18:59:12 and TERM on non-Windows, unfortunately 18:59:12 :) 18:59:14 or whatever it was 18:59:22 AnMaster: FNGR? 18:59:28 ehird: outputs an SVG file 18:59:28 Deewiant, RC/Funge crap 18:59:34 AnMaster: oh yeah, that one 18:59:36 Deewiant, you said it in your readme 18:59:42 Deewiant: oh sheesh 18:59:43 that sucks 18:59:43 :D 18:59:46 AnMaster: crap indeed, it contradicts the spec 18:59:53 ehird: I found it the easiest option actually 18:59:56 mine will be EXTENSIVEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 18:59:58 I don't plan to do TURT 18:59:58 ehird: it's up to you 19:00:06 Deewiant: mine will do SDL, SVG, PNG, ... :D 19:00:10 :-P 19:00:10 configurable! 19:00:26 ehird, just FILE and let befunge program output those themself 19:00:38 ehird, however do NOT change specs for TURT 19:00:43 you need some variant 19:00:45 totallyfreakingawesomebefunge98 --fprint=TURT,--sdl 19:00:52 AnMaster: ehm, why would i need to 19:00:54 ah that would work 19:00:56 just a command line op as you see there :D 19:01:01 of course --fprint will be a horrible hack 19:01:05 ehird, allow the program to set output type? 19:01:09 --fprint=NAME,FOO... 19:01:12 replaces , with ' ' in FOO 19:01:14 ehird, eww 19:01:17 parses the options 19:01:22 and sends them off to NAME finger print 19:01:22 you can't use getopt then :( 19:01:27 AnMaster: thank god 19:01:30 ehird, getoptlong is evil 19:01:33 yes 19:01:34 it is GNU only 19:01:36 so is getopt 19:01:38 and 19:01:41 AnMaster: that's ridiculous 19:01:42 ehird, I use getopt :) 19:01:45 bsds implement it nowadays 19:01:47 gnu is evil!!! 19:01:56 lament, hah not sure about that 19:02:03 ehird, what language will you code yours in? 19:02:10 I want Aquarius :( 19:02:11 ehird: malbolge? :-) 19:02:15 AnMaster: writing one in python with numpy for fungespace at first 19:02:17 then, C. 19:02:21 micro-optimized, of course. 19:02:25 ehird, haha 19:02:27 ehird, C99? 19:02:28 you're all insane :-) 19:02:31 i hope to have the ugliest sprawling mass of befunge interpreter that exists 19:02:34 AnMaster: K&R represent! 19:02:36 I mean, C89. :) 19:02:46 --fprint=TURT,--svg=foo.svg,--sdl # MULTIPLEXINGF 19:02:50 ehird, offers some nice restrict keywords to ehird for further micro-optimizing 19:02:52 :P 19:02:56 C99 feature 19:02:59 :P:P:P 19:03:02 AnMaster: __asm__ represent 19:03:07 ehird, not portable 19:03:11 ehird: how about fortran-77 19:03:11 AnMaster: x86 represent 19:03:16 ehird, if it doesn't work on amd64 as welll 19:03:23 AnMaster: 286 represent 19:03:28 ehird, look my current one can use 32-bit numbers if you want 19:03:39 AnMaster: NIH represent 19:03:43 NIH? 19:03:47 Not INvented Here 19:03:56 -_- 19:04:33 Deewiant, anyway I'm wondering about a 128 bit integer mode, iirc there is some __int128 type of gcc? 19:04:39 would be slow of course 19:04:43 but just as an alternative 19:04:53 beats me, and go ahead 19:05:01 hmm 19:05:06 does the spec permit bignums? 19:05:07 :D 19:05:11 ehird, they do 19:05:13 not very well 19:05:16 Deewiant: damn 19:05:20 ehird, as long as you can say how many bytes it is 19:05:20 there are some grey areas 19:05:22 so like all programs would break? 19:05:26 AnMaster: -1 19:05:26 but it is explicitly said that it's allowed 19:05:36 Deewiant: will programs break, though 19:05:36 ehird, well that's my plan as well 19:05:44 no, wait 19:05:50 extend the numbers 19:05:51 pushing -1 would kinda suck for programs that test for a minimum size of 6, for instance :-) 19:05:51 ehird, for funge08 standard 19:05:52 so you can say infinity 19:05:52 :D 19:05:53 or maybe 09 19:05:55 I'll see 19:06:12 ehird, hah 19:06:12 Deewiant: but seriously -- do programs tend to assume infinite bitsize? 19:06:30 ehird, they tend to assume 32-bit or better I think 19:06:33 I guess most programs would be happy with 16-bit integers :-P 19:06:55 Deewiant, not sure, you would need to store handprints and such in one 19:07:09 ehird: I'm not sure what you mean by 'tend to', since there aren't that many written programs ;-) 19:07:11 ehird, btw, the handprint CFUN is in use 19:07:14 by mine 19:07:18 just so you know 19:07:22 and don't try to use the same 19:08:01 there's already been a fingerprint overlap, two different SOCKs 19:08:04 ehird, in my funge08 specs that I'm working on I decided to allow trinary funge or in fact n-nary funges 19:08:10 Deewiant, ouch 19:08:24 Deewiant, we really need a new register 19:08:28 maybe you want to host it? 19:08:29 AnMaster: but fortunately the only difference is that one includes SCKE and the other doesn't 19:08:43 AnMaster: mine was called cfunge before yours : 19:08:44 Deewiant, SCKE? 19:08:44 :| 19:08:48 AnMaster: another fingerprint 19:08:49 ehird, it wasn't 19:08:55 i named it while tyou were just considering bash 19:09:01 AnMaster: adds a few funcs, meant to be used in conjunction with SOCK 19:09:02 so nyah, CFUN is miiine :D 19:09:10 ehird, nop, I already had planes on cfunge back then 19:09:13 meh, awfully creative names there :-P 19:09:19 AnMaster: welp, sorry, i'd already had a directory up 19:09:21 so HAH 19:09:21 ehird, anyway mine is released 19:09:31 bah 19:09:31 ;) 19:09:31 ehird, and CFUN is my handprint 19:09:36 tough. :p 19:09:41 for you yes 19:09:52 no.. i had the directory tree and handprint before, just not released 19:10:05 ('tough for me' -- I guess the befunge police are going to raid my house) 19:10:15 handprints & fingerprints are broken anyway. 19:10:21 they're centralized and overlaps are too easy. 19:10:21 ehird, well they are indeed 19:10:30 ehird, well just call your CBEF 19:10:33 a URI would be nicer 19:10:37 AnMaster: nooo, you do that :D 19:10:41 ehird, I don't 19:10:46 http://elliotthird.org/b98/cfunge 19:10:51 I plan to provide unefunge version 19:10:52 AnMaster: I agree with ehird, the whole handprint/fingerprint mechanism is a bit messed up, shouldn't need centralization 19:10:52 as well 19:10:57 but I don't know if it can be solved well 19:11:00 AnMaster: well, I am supporting N-dimensionals 19:11:00 Deewiant, indeed 19:11:03 ehird, 404 19:11:07 AnMaster: 404, gosh really 19:11:09 that was an example URIprint 19:11:10 duh 19:11:17 ehird, yes that would be a good idea 19:11:36 AnMaster: anyway, since i support any N dimensions, I have the right to CFUN 19:11:38 :) 19:12:00 bbl food 19:12:41 Deewiant: URIprints might be a bit verbose though 19:13:14 and they can overlap as well, just takes time 19:13:30 Deewiant: no, that's not the point 19:13:42 URIs specific purpose are unique, global identifiers 19:13:43 :) 19:13:58 what's better, sometimes they're URLs. then humans can utilize them -- like loading it via http 19:14:02 yes, they should be that, but they aren't always :-P 19:14:14 Deewiant: sure, but it is far better than the current system 19:14:21 agreed 19:14:26 besides, the odds of clashing and then someone else doing a different ext --- it is just far too unlikely :) 19:14:40 here is what would cause a clash 19:14:46 - someone releases an ext under a uri 19:14:57 - it is a very very common uri 19:15:00 - someone else thinks it's good 19:15:05 now I dunno about you but that seems HIGHLY unlikely 19:15:06 ehird, good idea, one for my funge08 specs 19:15:08 thanks 19:15:12 in the case where it's a URL: 19:15:18 - someone has a URL probably on a domain 19:15:20 - releases ext 19:15:33 - the domain expires --NOTE AT THIS POINT THE URI IS STILL FINE! It's not a URL, even if it's identical. 19:15:53 ehird, along with gnirtsn (string with size in front) 19:15:53 - someone else gets it, also a befunger 19:15:53 - they make another fprint 19:15:53 - and release it under the same uRI 19:15:55 that's what I was thinking 19:15:57 both of those will basically never happen 19:15:58 ever 19:15:58 :) 19:16:02 because, in 99% of cases, they will be URLs. 19:16:05 Deewiant: yes. 19:16:08 but even so 19:16:13 the likelyhood of the above 19:16:18 is .. 19:16:19 yeah. 19:16:24 :-) 19:16:37 ccbi.d:319: Error: cannot implicitly convert expression ((helpRegex.test)(s)) of type int to bool 19:16:38 whut 19:16:38 :D 19:16:53 old compiler, old tango? 19:16:59 Deewiant: 4.1 19:17:02 and dsss'd tango 19:17:07 lunix, x86 19:17:17 4.1 doesn't mean anything, which version of GDC is it :-) 19:17:29 and is that all it says? 19:17:44 gdc (GCC) 4.1.3 20070831 (prerelease gdc 0.25, using dmd 1.021) (Ubuntu 0.25-4.1.2-16ubuntu1) 19:17:49 could be too new a tango, actually 19:17:51 Deewiant: it had some ncurses foobar but that doens't happen now 19:17:51 so. 19:17:54 and yeah 19:17:55 I'll have a look see 19:17:55 the tango is the latest 19:18:15 ehird, cfunge 0.1.0 released, just making a tar ball for it 19:18:16 nope, test should return bool still 19:18:22 AnMaster: tough. CFUN is mine 19:18:25 :) 19:18:27 ehird, no it isn't 19:18:50 AnMaster: because denying something i said on irc will cause the befunge police to come and get me? :) 19:18:57 ehird, nop 19:19:03 ehird: that's /all/ it says? if so, just put cast(bool) before it and hope it works :-P 19:19:03 just because I released first 19:19:50 AnMaster: Well, just because you're an ass and didn't ask the channel if anyone had used the fingerprint before using it, won't stop me using it.. 19:19:57 ehird, I did 19:20:00 you weren't here 19:20:12 well then, now i am 19:20:20 and now it's too late 19:20:20 also, sorry for not being present 100% of the time 19:20:24 and no it isn't 19:20:32 it takes about 10 keypresses to tap over a string literal. 19:20:40 it does for you 19:20:44 but release is made 19:20:54 AnMaster: release is made!12121 19:21:03 it is now set in stone, and i will just have to weep, because i wasn't there. 19:21:07 * ehird = horror and shame 19:21:43 what's with all the trolling :-P 19:21:51 Deewiant: reactionary trolling 19:21:53 to trolling 19:21:54 :) 19:22:28 welp, i'll keep using CFUN, because i've been using it for longer than AnMaster has, and just because i wasn't there on one specific date doesn't mean that he now has the right to it 19:22:43 if AnMaster would like to complain, maybe he could move to a fingerprint that wasn't in use when he chose it 19:22:50 timestamps or it didn't happen 19:22:58 -!- olsner has joined. 19:23:14 except that the damn things can be falsified, d'oh 19:23:27 Deewiant: I don't think thoughts can be timestamped. however, if he had asked earlier, I would have been happy to tell him that yes, it was in use. 19:23:52 http://rage.kuonet.org/~anmaster/cfunge/ 19:24:10 AnMaster: 'my heart has been ripped out and filled with dread. I think I will cry myself to sleep.' 19:24:15 i am not sure what kind of response you are aiming for. 19:24:41 ehird, that no one complained when I announced I would use CFUN 19:25:00 AnMaster: because I wasn't here. does this kind of thing not process for you? 19:25:01 Deewiant (iirc, or maybe ais, even said it was a good choice) 19:25:09 i can hardly say it was in use when I wasn't there 19:25:17 and expecting me to and using that as justification is ridiculous 19:25:44 ehird, same is expecting me to believe you actually had selected than handprint before 19:25:58 AnMaster: uh, yes i did 19:26:14 (other response that you seem to expect: 'YES! It is a befunge conspiracy of epic proportions. how did you figure me out?!') 19:26:14 expecting me to and using that as justification is ridiculous 19:26:15 as well 19:26:36 AnMaster: I grepped the logs, a quick check suggests he's said nothing of the kind 19:27:07 Deewiant: that is correct. 19:27:10 Deewiant, who? ais? 19:27:25 Deewiant: I do not see why I would mention it when the question of usage was not asked. 19:27:42 AnMaster: anybody :-P 19:28:04 mar 11 18:50:24 CFUN eh 19:28:04 mar 11 18:50:33 Deewiant, er yes? 19:28:04 mar 11 18:50:36 is it in use? 19:28:04 mar 11 18:50:47 don't think so 19:28:04 mar 11 18:51:02 most use BEF or something instead of FUN 19:28:05 mar 11 18:51:14 FUN as in FUNGE 19:28:22 yeah, I said I don't think it's in use 19:28:35 and no one else complained 19:28:50 you can't expect people to be watching IRC all the time 19:28:53 ehird, you haven't announced the handprint before either btw 19:28:57 [18:28] you can't expect people to be watching IRC all the time 19:28:58 exactly 19:29:27 and there is absolutely no way I can prove that I had CFUN before you, because that's physically impossible 19:29:44 the only thing you can do is make the assumption that i'm not lying for the fun of it, and believe it 19:29:51 or.. decide that i must be lying 19:29:57 for some crazy reason 19:30:02 ehird, but you got a suggestion for other handprint 19:30:04 that is as good? 19:30:24 and would still work with the name cfunge 19:30:35 AnMaster: no it's not. you suggested CBEF 19:30:42 it is an N-funge interpeter. 19:30:54 ehird, and I don't like that much, because I will add more dimensions 19:30:59 besides, CFUN is fine and I was using it prior to you. 19:31:09 why should i have to change the fingerprint that I already used? 19:31:45 same for me 19:31:47 ehird: for what it's worth if it's only in your head, I'd suggest it was in fact AnMaster who "was using it" 19:32:03 Deewiant: well, no. it is probably somewhere on my harddrive 19:32:15 Deewiant, but released *shrugs* 19:32:18 still, the point is -- if I was there when he asked, I could have honestly answered 'yes. it's in use.' 19:32:32 AnMaster: sticking a tarball on http is not a way to seal your ownership of something.. 19:32:38 -!- jix has joined. 19:36:36 ehird, see what Deewiant said 19:37:27 and in any case, I'd say whoever releases something first is the one who can claim rights to the name 19:37:37 but whatever, fight it out amongst yourselves :-P 19:37:45 Deewiant, I'm not going to fight 19:38:11 ehird: since you're going bignums why not just make the handprint "CFUNGE", nobody's claiming they have to be 4 bytes :-) 19:38:15 I don't simply care of ehird wants the name, he didn't announce it, nor release it, first 19:38:29 Deewiant, create idea! 19:38:31 greate* 19:38:32 great* 19:38:37 AnMaster: I'll just state that I was going to use CFUN before you even started working on Bashfunge, and will continue using it. there is nothing to do with 'wanting the name' because I'll just release with it. 19:38:46 You can argue with that if you'd like; fin 19:38:47 e 19:39:20 ehird, anyway I'm also using the name cfunge for the interpreter, or cfunge08, both are valid names for it 19:40:24 AnMaster: Why not use CF08? 19:40:39 Since you're not implementing strict Funge-98, you indicate that it's your standard. 19:40:56 ehird, maybe, I will implement strict 93, 98 and 08 19:41:02 as standard modes 19:41:08 I already got some code in place for it 19:41:13 just not functional yet 19:41:20 AnMaster: well, the interpreter is called cfunge08 is it not? 19:41:24 therefore, CF08 is a good fingerprint 19:41:28 handprint 19:41:39 ehird, it is, but well ehird: for what it's worth if it's only in your head, I'd suggest it was in fact AnMaster who "was using it" 19:41:45 ehird, and in any case, I'd say whoever releases something first is the one who can claim rights to the name 19:41:54 you don't accept those arguments of Deewiant ? 19:42:11 it's obvious he doesn't care 19:42:33 Hi all. 19:42:45 Deformative: got a spec written yet? 19:43:03 I have it started. 19:43:18 AnMaster: so even sayiung that CF08 is a good handprint, you don't want to use it because.. 19:43:30 ehird, because I'm convinced of what Deewiant said 19:43:44 ehird, CF98 would be good for your one in that logic 19:43:51 AnMaster: hardly.. 19:43:57 yes it would 19:44:04 because all currennt fingerprints are funge-98 ones 19:44:09 so yours is the one that needs explicit clarification 19:44:13 besides, mine isn't called cfunge98 19:44:15 ehird, anyway 98 is the standard mode for me 19:44:16 yours IS called cfunge08 19:44:18 mine* 19:45:04 bbl implementing fingerprints 19:45:46 Deewiant: http://deformative.hosting.arsfides.com/upload/files/1/spec.txt 19:46:53 "ignored args" - ah, of course, I was wondering how that'd look otherwise :-) 19:54:57 Heh. 19:59:02 Reordering the args is quite an interesting problem. 19:59:19 Discussed it for a long time yesterday if you have logs. 20:15:34 CHALLENGE 20:15:34 # define UL_DISCARD foo = UL_stk->prev; free(UL_stk->top); free(UL_stk); UL_stk = foo; 20:15:40 write that without the temp var'foo' 20:15:41 :D 20:15:54 impossible i think 20:17:16 ehird: Did you see the challenge from yesterday? 20:19:48 Deformative: No, 20:20:10 ehird: if you're feeling lucky, just remove foo and then do UL_stk = UL_stk->prev at the end ;-) 20:20:21 Deewiant: haha 20:20:33 it'll probably work in most cases 20:20:39 and crash the program in others ;-) 20:21:02 * ehird is rewriting the Underload2C prelude 20:21:09 ehird: Want me to post it? 20:26:25 -!- slereah__ has joined. 20:28:21 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 20:35:03 Deformative: k. 20:35:15 http://members.iif.hu/visontay/ponticulus/images/szovegek/begriffsschrift.jpg 20:35:16 Heh. 20:35:34 For some reason, this notation was never used again, as far as I know! 20:39:25 hmmmm 20:39:31 ' Please insert your fruit here.' 20:39:37 that's what i'm putting in the prelude for the compiler to replace 20:39:38 :D 20:39:57 it'll probably work in most cases 20:39:57 and crash the program in others ;-) 20:39:58 indeed 20:40:19 Deewiant, it would crash in cases where the system mmap mallocs 20:40:35 like both glibc (for larger objects) and openbsd (for all objects) does 20:40:51 it will unmap it on free 20:41:09 hmm, that IS one thing the world needs... 20:41:18 symntax for template sin c commands 20:41:18 ehird, what? 20:41:19 err 20:41:19 comments 20:41:20 like 20:41:25 / foo 20:41:28 //foo 20:41:30 I mean 20:41:30 yes 20:41:31 /*$ foo */ 20:41:36 ehird, err what? 20:41:41 AnMaster: 'templates' 20:41:45 syntax for templates in c commands 20:41:50 i.e. a widely accepted way to do it 20:41:56 ehird, there are no templates in C afaik? 20:42:00 it's a C++ feature 20:42:07 AnMaster: not C++ templates you dummy 20:42:09 /*$ foo */ means 'replace this comment with the value of foo' 20:42:15 err 20:42:25 ehird, see: #define 20:42:30 AnMaster: haahahahahaha 20:42:34 I mean for interpolating from EXTERNAL sources. 20:42:38 hm 20:42:40 Like the underload compiler does its compiler 20:42:42 *compiling 20:42:44 then stuffs it into the prelude 20:42:46 at the right place 20:42:53 I could put /*$ blimps */ in the prelude 20:42:59 yes? 20:42:59 Then, it would do something like: 20:43:05 launch the missiles 20:43:08 and blimps fall from the sky 20:43:12 interpolate textOfPrelude [("blimps",compiledCode)] 20:43:23 and then that marker would be transformed into the compiled blimps 20:43:29 we 20:43:30 w/e 20:43:31 * 20:43:50 AnMaster: 'i am going to tell you to use #define and be confused about your idea, then just say "whatever" when it is complained' 20:44:12 ehird, no, I just gave up trying to understand it 20:44:21 interpolate textOfPrelude [("blimps",compiledCode)] 20:44:22 let's say 20:44:31 textOfPrelude = "void foo() { /*$ blimps */ }" 20:44:31 ehird, you replace text at a marker? 20:44:34 and 20:44:38 compiledCode = "foobar" 20:44:40 that would return 20:44:46 "void foo() { foobar }" 20:44:50 so, just a regular template language 20:44:55 BUT, it's in c comment syntax 20:44:57 mhm 20:45:03 ehird, interesting 20:45:03 so its highlighted correctly 20:45:06 and is still valid C etc 20:45:16 AnMaster: it's just like how /** ... */ is accepted as docs 20:45:18 and highlighted thus 20:45:30 ehird, bah /** */ is for doxygen iirc? 20:45:35 AnMaster: no, everything 20:45:42 emacs highlights /** */ differently 20:45:43 try it 20:45:48 ehird, yes I know it does 20:45:53 it could do something similar for interpolation stuff 20:46:00 the only problem is, /*$ ... */ is ugly 20:46:00 :) 20:46:10 ehird, but I only seen it used for doxygen comments 20:46:17 /*$ blimps $*/ could work I guess 20:46:25 use /*/ ... */ and confuse people 20:46:36 Deewiant: heh 20:46:44 Deewiant, hah 20:46:44 hmm 20:46:46 /*< blimps >*/ 20:46:49 is highlighted differently by gcc 20:47:02 gcc? O_o 20:47:02 by gcc? 20:47:06 errr 20:47:07 emacs 20:47:08 XDDD 20:47:10 lol 20:47:11 what's this for? 20:47:12 ehird, hah :D 20:47:16 faxathisia: the underload compiler 20:47:21 same author.. 20:47:29 all the compiled blimps need to be stuffed into the right place in the prelude 20:47:36 ehird, yes but why does emacs highlight /*< >*/ differently? 20:47:37 i'm just devising a nice way for templating in C 20:47:37 :) 20:47:40 AnMaster: I have no goddamn idea 20:47:44 ok cool 20:47:44 but it works out nicely 20:47:46 hmm 20:47:50 I could be even more fancy, 20:47:51 ehird, it is probably used for something else 20:47:57 you risk a collision 20:47:57 and let the templating language do the numbering 20:47:58 Like thus: 20:48:26 7 20:48:35 /*< foreach blimps blimp >*/ case /*< blimp.num >*/: /*< blimp.code >*/ break; 20:48:36 :D 20:48:37 6 20:48:37 err 20:48:40 and an endforeach 20:48:41 heh 20:48:57 why is it inside comments o_o 20:49:04 faxathisia: so it stays valid c. 20:49:05 duh. 20:49:05 :) 20:49:09 well my example isn't valid 20:49:09 hehe 20:49:10 but still 20:49:10 doesn't look like valid C 20:49:14 it SCANS as valid c 20:49:18 heh 20:49:22 and editors highlight it OK 20:49:23 I see 20:49:27 Yeah cool 20:49:28 also indent it ok 20:49:32 It's a good idea 20:49:36 ehird, anyway the reason for /*< >*/ by emacs, is PROBABLY it is already used 20:49:42 AnMaster: who cares 20:49:43 :) 20:49:47 ehird, I suggest you check so there won't be a collision at least 20:49:56 ehird, then just use /** */ for it :P 20:50:03 it's more likely a bug in the hilighting 20:50:29 then I will report that to emacs ppl so they fix it for next version :D 20:51:05 embeddedness 20:51:07 /*< foreach blimps as blimp: 'case $blimp.num: $blimp.code break;\n' >*/ 20:51:08 haha 20:51:15 i should just embed lua in there 20:51:59 ehird, my emacs highlight it the same way btw 20:52:04 using emacs-23-pre 20:52:47 emacs-22 does it differently though 20:53:14 ehird, err wait, emacs-23 does it differently to, had wrong major mode 20:53:30 ehird, I think I know what it is 20:53:35 ehird, one line comments 20:53:39 for doxygen 20:53:46 I've seen it in structs 20:53:47 like 20:53:57 /*< blah blah */ 20:54:23 /*< for i=0,blimpc do out("case ", i, ":\n", blimps[i], "\nbreak;") end >*/ 20:54:25 hee 20:55:14 ehird, anyway (real world example): 20:55:16 typedef struct { 20:55:16 size_t i_items; /**< The current number of items in the table */ 20:55:35 ehird, so just as a warning < already got a meaning in start of comments 20:55:47 AnMaster: nuh uh 20:55:50 /**< 20:55:52 not /*< 20:56:03 ehird, yes, but I think I've seen /*< too 20:56:07 not sure though 20:56:15 and emacs highlights /** the same way as /*< 20:57:55 Deewiant, there? 20:57:56 ehird: http://deformative.hosting.arsfides.com/upload/files/1/spec.txt Sorry it took so long, I sorta fell asleep. 20:58:09 Deewiant, should fingerprints be local to ip in concurrent funge? 20:58:25 Deewiant, and, should they inherit over t? 20:59:58 all specified in the spec 21:00:05 070100002c0000000000000000000000000000000000000000000000000000000000dd8fff010000dd8f27000000fb02ef07000000fb01ef070000000000bc8f8800040000bc012f65746300 21:00:15 hex of a VAX program to rename /tmp to /etc 21:00:47 AnMaster: actually, the latter is unspecified 21:31:10 Hmm. 21:31:23 Looks like you guys are re-inventing Objective C. :p 21:42:06 pikhq: Eh? 21:43:35 Objective C is implemented as a fairly thin templating system over C. ;) 21:43:46 pikhq: Heh. 21:43:53 CFront! 21:44:03 (Though, of course, Objective-C doesn't actually compile into C..) 21:44:25 You can implement Objective C with just a preprocessor into C. 21:44:32 (GCC used to do just that) 21:44:53 pikhq: Same with anything. 21:44:54 :p 21:44:58 what more is a compiler? 21:45:03 Touche. 21:45:36 Objective C is, interestingly, a strict superset of C. . . 21:45:43 pikhq: Not interestingly -- sanely. 21:45:47 True. 21:45:52 Objective-C is really well designed like that. 21:45:58 Unlike C++. 21:46:01 Bingo. 21:46:15 higher order C 21:46:27 faxathisia: hee 21:46:39 int lambda (int x) { return ++x; } 21:46:42 I'm actually working on a little language which is the marriage of C and functional stuff 21:46:44 be very afraid 21:46:58 faxathisia: in mine that's: (x) => { return ++x; } 21:46:59 for now 21:47:03 -!- oerjan has joined. 21:47:18 :) 21:47:28 or 21:47:29 typed: 21:47:33 does it compile to ML or something? :P 21:47:38 int (int x) => { return ++x; } 21:47:46 faxathisia: naww 21:48:06 faxathisia: I managed to find a anice way to represent generic types 21:48:07 ehird: You could actually probably get GCC to handle anonymous functions with ease. . . 21:48:11 Here's id :: a -> a: 21:48:14 Already, they support *scoped* functions. ;) 21:48:16 T id(T a) { return a; } 21:48:25 That is, UpperCase = generic type. 21:48:31 Looks C-ish, which is a Good Thing. 21:48:42 Also, I decided that for passing around functions, Declaration Is Usage failed miserably. 21:48:43 So: 21:48:46 int main(){int foo(int *bar){++*bar;};int baz=0;foo(&baz);} 21:48:58 ^ Perfectly valid GNU C, does what you expect. 21:48:59 U[] map(U (T), T[]) 21:49:10 U[] map(U (T) func, T[] lst) // with arg names 21:49:17 not sure about that function type syntax yet 21:49:17 -frnested-functions is needed though 21:49:19 but it seems good 21:49:26 faxathisia: Or -std=gnu99. 21:49:28 yeah, really first class closures requires GC 21:49:33 oerjan: yes 21:49:41 oh, also.. 21:49:45 I have both 'void' and 'unit' :-) 21:49:52 mostly you use 'void' - for IO-only functions etc 21:50:00 unit is just there for.. mathematical nicety, I guess. 21:50:22 Oh yeah, and algebriac data types in da house. 21:50:25 void = False, unit = True 21:50:49 data LL { nil, cons(a, LL) } 21:50:50 hmmm 21:50:55 that raises problems with generic types 21:51:00 But I don't want to use 'a 21:51:01 that's ugly 21:51:02 :S 21:51:04 * oerjan considers that Haskell could have used Void instead of () for things like IO () if Void had been thought of at the time 21:51:08 what is <..>? 21:51:21 faxathisia: that's the new syntax for parametized types 21:51:24 :S 21:51:26 data LL a = Nil | Cons a (LL a) 21:51:29 translated to haskell 21:51:29 can't you do bettec? 21:51:33 than C++ 21:51:35 faxathisia: precedent in C-alikes: C++, Java 21:51:42 it looks alright, anyway 21:52:20 however, I do need to solve that generic thing 21:52:34 data list_t { nil, cons(a, list_t) } 21:52:36 that would work 21:52:37 but.. 21:52:47 hmm 21:52:51 data list_t { nil, cons(a, list_t) } 21:52:54 err 21:52:55 data list_t { nil, cons(T, list_t) } 21:53:00 that would produce 21:53:06 list_t nil 21:53:06 and 21:53:12 err wait 21:53:13 list_t nil 21:53:14 and 21:53:21 list_t cons(T, list_t) 21:53:23 so, just right 21:53:35 faxathisia: I haven't figured out 'T a' vs 'T a()' yet. 21:53:44 and the most elegant way to do it 21:53:49 I considered: 21:53:59 'T a = b;' is short for 'T a() { return b; }' 21:54:08 and zero-arg functions don't need () to call 21:54:39 GregorR: Convince him to stop. 21:54:45 Show him the ways of D. 21:54:56 Heh, hardly. D is nothing like the thingy I'm making. 21:55:05 And I've used D, thankyouverymuch. I didn't like it, really. 21:55:14 I did not like D either 21:55:33 faxathisia: Yes. 21:55:35 also I beat a D coder in some contest using C... 21:55:44 For a start, and completely unrelated to all the other, more significant problems -- 21:55:47 the syntax is awkward. 21:55:56 It's like Perl, but with less symbols, making it even uglier 21:56:31 * pikhq goes off to try to install D 21:57:06 pikhq: 'Tell him that D is so much better!' 'Hm, D, I should try that.' 21:57:10 so many people like that :) 21:57:25 ehird: I was mostly joking, really. 21:57:31 ;) 21:57:40 pikhq: Good. Well that was to GregorR anyway. :P 21:57:49 But, seriously, I should try D. 21:57:51 faxathisia: any comments on T vs T()? 21:57:53 cwcrntcc 21:58:02 from :P 21:58:10 But something a bit more important. 21:58:16 I should make interrupts. 21:58:16 faxathisia: heh, hardly.. :) 21:58:22 faxathisia: dunno if I'll do continuations. 21:58:34 OCaml doesn't! :P 21:58:40 :o 21:58:48 (OCaml being the FP language that most resembles this one -- i.e. not pure, but not Lispy) 21:59:15 faxathisia: Maybe I'll do it the dumb way (stack smashing) 21:59:25 Also, the preprocessor is gone. # is still used though 21:59:34 #import cont /* it would probably be this */ 21:59:47 well if anyone wants to use cpp they can do just that 21:59:47 '#foo ...' at the start of a line means 'compiler directive foo: ...' 21:59:58 which makes the distinction between code that will be compiled 22:00:01 and meta-data 22:00:08 faxathisia: They should not -- this handles re-imports 22:00:15 and you don't need to write a header file 22:00:19 just: #export a b c d 22:00:35 and when compiling it'll optionally generate an 'interface file' which gets installed 22:00:44 which is like a header file, but far more compact 22:00:48 and not valid code, of course 22:00:51 and #import looks for them 22:00:55 it goes: 22:01:18 IF in $INCLUDEPATH (., , system dir), code file in $INCLUDEPATH 22:01:27 & if the code file is not compiled it does it for you 22:01:33 faxathisia: So yeah, down with cpp :p 22:02:07 faxathisia: also, it would be 'T callcc(T (cont_t))' 22:02:24 ehird: You could actually probably get GCC to handle anonymous functions with ease. . . <-- as long as it doesn't use trampolines in GCC, that needs executable stack iirc 22:02:25 where cont_t = 'void (T)' 22:02:34 so in full 22:02:40 T callcc(T (void (T))) 22:03:04 faxathisia: Not a bad callcc signature I must say. 22:03:11 In Haskell-style types that looks like 22:03:18 plz call it cwcrntcc 22:03:24 callcc :: ((a -> ()) -> a) -> a 22:03:28 which is far less easy to understand 22:03:31 faxathisia: no 22:03:35 it's C-style but not C-ugly 22:03:35 :) 22:03:36 :((( 22:03:47 faxathisia: this will have support for declarative programming 22:03:48 if that helps 22:03:56 afk 22:21:23 * oerjan finds himself browsing the logs at 1 page per second 22:24:43 -!- Quendus has quit (Remote closed the connection). 22:26:26 -!- Quendus has joined. 22:26:55 redrawerredrawers is a word 22:26:56 that's great 22:27:50 i find that slightly hard to believe 22:28:23 i didn't think English was quite that permissive 22:32:08 -!- atsampson has quit (Remote closed the connection). 22:32:20 -!- atsampson has joined. 22:37:18 -!- oklokok has joined. 22:37:36 ehird: parsed how exactly? 22:38:22 oklokok: what parsed where what what and what and what 22:38:52 is that a noun meaning "those who draw that red, which describes those who draw red" 22:39:02 that word you said was a word 22:39:21 oklokok: I don't know 22:39:23 ubt it's in a word list 22:39:29 and it can be typed on the left hand 22:39:35 it is the REAL longest word that you can do that with 22:39:37 qwerty ofc 22:39:49 it's in a word list? :D 22:39:52 what word list? 22:40:10 Lol. 22:40:17 I think I just solved my problem. 22:40:21 Without brute force. 22:41:15 oklokok: dunno 22:41:17 Moby something 22:41:21 that abcdef -> bdeefa or whatever problem? 22:41:58 i also got a sense it might be easier than it looked at first 22:42:05 wwwhat problem 22:43:07 oklokok: The one from yesterday. 22:43:12 http://deformative.hosting.arsfides.com/upload/files/1/np.txt 22:43:58 Hmm, never mind. 22:44:05 I still need to implement swapping. 22:45:36 definitely not np 22:45:40 i'm thinking O(n) 22:46:02 ah 22:46:15 Yeah, make sure you read the whole thing. 22:46:16 actually the trivial solution is O(n^2) 22:46:49 ... 22:46:52 Totally not. 22:47:18 go through the list as I, for each element go through the result list as J and if J should have I, put it there 22:47:29 rrright= 22:47:30 = 22:47:33 ..? 22:47:37 isn't this the edit distance problem? 22:47:41 No. 22:48:00 Yours fails on [a, b] to [b, a] even 22:48:02 :P 22:48:35 And that would _not_ make optimal solutions. 22:48:39 Read the whole file. 22:48:41 oh, minimum space? 22:48:44 didn't know that 22:48:47 ...file? 22:48:51 You should read Shin-Cheng Mu and Silvija Seres approach to the edit distance problem and other combinatoric optimization problems 22:49:09 [21:42] pikhq: You have a block of memory, and a new order, some locations are duplicated, some are no longer used, but they refill the same block, design an algorithm to find the least number of movements needed. 22:49:09 oklokok: No minimum space. 22:49:09 [21:43] So you have [a b c d e f] and it needs to be transformed to an arbitrary new order, for example: [a b e e f c] 22:49:09 [21:43] You have access to extra space. 22:49:13 Minimum mov 22:49:24 Deformative: minimum space as in O(1) spae 22:49:26 *space 22:50:13 Well, I don't think you quite get the goal. 22:50:21 So uh, you should read the whole txt file. 22:50:30 Because no one really got it until the end. 22:50:37 i guess, just thought that was the complete description 22:50:39 wait a mo 22:51:36 I like this ciphery thingy: 22:51:39 oklokok: You misunderstand the goal, the goal is to create a program that generates a perfect set of instructions to reorder a block of memory to a new order. 22:51:43 abcdef -> acefdb 22:51:47 what are the exact space and time? ordo bounds on the permutator and the algorithm creator? 22:51:49 abcdefg -> acegfdb 22:51:52 *permutator creator 22:52:07 it makes most text look like line noise but *kind of* resembles the original text 22:52:38 hmm 22:52:41 s/?/ 22:52:47 ? 22:52:54 ehird: in my sentence 22:53:48 oh 22:53:56 Deformative: or is the goal to optimize for each? i'm fairly sure that cannot be done 22:54:01 ah 22:54:16 the actual permutator must be *perfect* 22:55:07 hmm 22:55:35 it's still not clear to me, can the permutator access any amount of space? the task is trivial if it can 22:55:59 I will try to explain. 22:56:04 my intuition says it's O(n) 22:56:10 Try not to have preconceived notions. 22:56:25 and with at most one extra temporary location used 22:56:45 You are writing a program that outputs a set of instructions. 22:56:51 The instructions it outputs must be perfect. 22:57:00 Deformative: yes, but what's *perfect*? 22:57:03 The instructions it output does one thing. 22:57:09 copy instructions, as few as possible, i take it 22:57:10 oklokok: Least movl 22:57:15 Yes. 22:57:26 there will be exactly n moves with what i said right away 22:57:28 or does swap count as a single instruction? 22:57:29 so it's perfect? 22:57:45 ah 22:57:46 Swap is NOT single. 22:57:46 which is here http://citeseer.ist.psu.edu/468298.html 22:57:59 ofc not, you don't always have to do even that 22:58:44 ok so then my guess is you need a temporary location iff no letter disappears, in which case this is a permutation (oh, and not being the identity) 22:59:01 otherwise you can use any disappearing letter as scratch 23:00:03 ideally you want all copies to be a letter moved to its final location, if possible 23:00:10 i'm fairly sure it's not *np*, at least 23:00:24 oklokok: I am starting to agree. 23:00:32 Because my program is almost done. 23:00:59 my encoding mehtod, if anyone didn't immediately get it 23:01:04 I just need to figure out how I want to optimize for swapping, if I just use pure mov on the memory, then I am done. 23:01:14 when do you _have_ to move a letter other than to its final destination? when there is a permutation cycle 23:01:24 enc a:b:xs -> [a]++enc xs++[b] 23:01:34 oerjan: You never move the letters. 23:01:38 you must do this once for each cycle 23:01:40 You generate code that will move the letters. 23:01:46 Deformative: i mean copy 23:02:01 "Schönfinkel himself contrives a more drastic but very curious reduction of C, S and U. He adopts a new function J, interpreted as having U as value for C as argument, C as value for S for argument. Then he defines "S" as "JJ", "C" as "JS", and "U" as "JC". This trick reduces every closed statement (of logic and set theory) to a string of "J" and parenthesis." 23:02:06 Old timey Iota :D 23:02:22 Deformative: um generating code is trivially equivalent to finding out how to do it with copying 23:02:42 oerjan: The only time you need to move other than the final destination is a swap. 23:02:49 And that would move to the temp space. 23:02:58 cool slereah 23:03:10 Unless I decide to use a register instead. 23:03:36 Deformative: yes. and i think you only need one swap per permutation cycle in the problem 23:03:52 faxathisia: I bought the fucking 650 pages specially for that article 23:03:59 haha 23:04:00 Though the rest is pretty cool too. 23:04:25 although that might not be quite well-defined. hm. 23:04:47 This is quite confusing, but really not that complicated once I put it in code. 23:04:54 Confusing, but not that complicated. 23:04:55 Heh. 23:06:06 I was trying to see by hand what that function is doing 23:06:10 -!- adu has joined. 23:06:17 But I must be retarded, since I created a language for that. 23:06:18 how do you do it? i think my current solution is perfect in terms of moves, but it uses a call stack 23:07:09 oklokok: um the call stack is irrelevant to the final generated copies? 23:07:25 oerjan: i meant the programs generated need a call stack 23:07:29 or do they... 23:07:33 actually not, of course not 23:07:34 lol :P 23:07:40 second order programming is confusing 23:08:34 how about infinite order programming where the result program is the fixed point? 23:08:37 yeah, think about tht 23:08:39 *that 23:08:43 i'll get some coffee 23:08:44 -> 23:08:49 what's second order programming? 23:09:04 lisp macros? 23:09:21 faxathisia: functions taking/returning functions that take/return functions 23:09:44 N-order functions are functions taking/returning (N-1 order functions). 23:09:53 so like, Haskell for Dummies? :) 23:10:06 sounds like common practice in haskell 23:10:14 hi all 23:10:20 hi 23:10:22 faxathisia: i'm using lisp! this sucks. 23:10:40 my guess is that the number of copies required = n + (number of cycles length > 1) - (number of letters that remain at their original place) 23:10:46 * faxathisia isn't much interested in what langs people don't like 23:11:03 faxathisia: I like Fortress 23:11:13 but it's still vague in my mind 23:11:14 what's that? 23:11:40 http://fortress.sunsource.net/ 23:11:55 its like Fortran+OCaml+Mathematica 23:12:03 actually optimizers can be done with something like a fixed point of an infinite order program 23:12:16 faxathisia: i meant generating code 23:12:29 n-order code generates (n-1)-order code 23:12:48 oklokok: What in n-order code? 23:12:59 :D 23:13:00 like 23:13:45 hmm, wonder if i should actually explain something 23:13:55 say you write a program that does task T 23:13:58 that's first order 23:14:05 ah yes sure 23:14:07 if you write a program that writes a program to solve T 23:14:11 that's second order 23:14:15 Is there anywhere that has short descriptions of programming languages? 23:14:30 ooh wait a complication - if some letter of a cycle is duplicated, you don't need to use swap for that cycle 23:14:33 I tell people, stop wastingt your time with that silly task you write the same program with different variables every weex 23:15:08 and tell him just write a script to generate your program, and this guy is like O-o why don't you write a program to write for me 23:15:16 as if this kind of task is impossible :P 23:15:22 :D 23:15:33 so make that number of totally isolated cycles 23:15:57 in a good language, you can usually just do the metaprogramming in the same program 23:16:04 and just separate the conceptual levels 23:16:08 using magic or soemthing 23:16:14 adu: wikipedia? 23:16:53 oerjan: what? 23:17:07 o descriptions 23:17:22 you ever wrote your own macro system in lisp? 23:17:27 I think it's very similar to that 23:18:27 Deewiant: you said a hash table is a good choice for fungespace 23:18:30 hmm, basically, i think the problem of permutating the variables basically comes down to a topological sort (in our case we're not sorting an acyclic graph, that's where we need the extra variable) 23:18:34 what about an N-dimensional sparse array? :D 23:18:56 faxathisia: are macroexpansion rules written in lisp? 23:19:00 FungeSpace doesn't resemble a hash table AT ALL 23:19:01 I like that Schönfinkel. He's got the eso spirit. 23:19:15 adu: why not? 23:19:30 well it depends on what the indexing domain is 23:19:42 if anything FungeSpace could only be indexed by polynomial-like objects 23:19:52 like... arrays? 23:19:58 adu: CCBI uses a hash table. 23:19:58 IIRC. 23:20:01 because (1, 0) == (1, 0, 0) 23:20:12 adu, just omit zeroes in the end 23:20:12 duh 23:20:20 also, funge uses a fixed dimensino 23:20:23 *dimension 23:20:24 oklokok: but thats not how arrays work, thats how polynomials work 23:20:43 adu: i don't see your point 23:21:23 Deewiant: away again? :p 23:21:31 [22:21] [Away] Deewiant is away: Zzz. 23:21:32 sheehs 23:21:32 :) 23:21:36 but yeah, true, polynomials are great for addressing an n-dimensional position, in case you don't have a fixed number of dimensions 23:21:46 adu: what about a sparse N-dimensional array 23:21:49 does that sound like a good fungespace :) 23:22:07 (I am supporting N-funge :D Just need to figure out how to represent N>2 in text, eh.) 23:22:12 oklokok: my point is thhat (1, 0) and (1, 0, 0) are clearly distinct both in the array view and the vector view, but they are equivalent as FungeSpace indexes, and because they are only place they have this uniqueness is in FungeSpace, the only conclusion that makes sense is that they are an innapropriate metaphor for FungeSpace indecies 23:22:14 Well, N>0 funge 23:22:15 ehird: sparse array is a loose concept 23:22:22 oklokok: your mom is sparse 23:22:26 and a loose concept 23:23:08 hmm 23:23:12 maybe I should use a Judy Array 23:23:12 :D 23:23:17 adu: okay, a hashtable is bad for FungeSpace in case the implementer has no idea what dimensions are, true. 23:23:24 ??? :D 23:23:51 http://judy.sourceforge.net/doc/JudyL_3x.htm 23:24:25 Polynomials: 1 + 0x == 1 + 0x + 0x^2 both mathematically, and in FungeSpace, so it is quite appropriate 23:25:05 adu: true, i never said it wasn't, i'm just saying it's very irrelevant 23:25:15 ok 23:25:35 adu: but yeah. sparse N-dimensinoal array == good fungespace? 23:25:44 well, i guess it was a good point polynomials are perfect indices for n-dimensional arrays 23:25:50 ehird: pretty much 23:26:21 polynomials of degree <= n = tuples of length n 23:26:41 ehird: but isn't "sparse array" just a term specifying the problem, not a solution? 23:26:49 oklokok: I think numpy has something for it. :| 23:26:58 but just as with arrays, there are mathematical constructs that limit the degree/length... o well 23:26:59 And also when I do my C impl 23:27:04 Judy arrays seem interesting: http://judy.sourceforge.net/doc/JudyL_3x.htm 23:27:38 faxathisia: not in reals! 23:27:54 adu: any thoughts on judy arrays? 23:27:55 It's a fundamental theorem in vector spaces 23:28:08 ehird: i'm reading 23:28:11 (I just can't remember the name of it :S) 23:28:14 faxathisia: but i'm guessing you need to be doing it (mod something) 23:28:17 ? 23:28:44 oh 23:28:47 "<=" 23:28:53 i'm a bit dyslexic 23:29:00 http://www.mathreference.com/top-ban,rn.html 23:29:18 faxathisia: basis theorem perhaps? 23:29:47 hm I don't know that 23:30:00 although i may have made up that name on the spot 23:30:04 hehe 23:30:40 i think Glib hash tables are slightly more useful 23:30:42 http://library.gnome.org/devel/glib/stable/glib-Hash-Tables.html 23:30:56 oerjan vaguely knows everything 23:31:10 * oerjan vaguely knew oklokok would say that 23:31:52 adu: fungespace consists of 0-255, right? 23:32:10 ya one byte per index 23:32:17 or rather there is something like invariant basis size property - it is true for vector spaces but not for modules over all more general rings 23:32:44 although i think it is allowed to grow past 255 during computation, the 255 restriction is on source files iirc 23:33:25 adu: oh, okay 23:33:29 adu: up to what value? 23:33:34 the general befunge 'word'? 23:33:59 "What size exactly is left up to the implementer. 32 bits is typical." 23:34:48 it's like two years since i coded in a language without bignums :< 23:34:51 'alf a bit, and a trit hand a half 23:35:00 well, except java, but i don't count that as a language, or as programming 23:35:12 lolol 23:35:15 surely java has bignums... somewhere 23:35:18 oklokok: why do you say that? 23:35:42 oerjan: sure, but you can't overload operators, so they're not that fun to use 23:35:48 adu: because i hate java 23:35:52 oklokok: amen 23:35:58 i'm less productive in it than i am in befunge 23:36:08 and i've written one befunge program, and about 200 java progs 23:36:32 well, naturally that was helluva overstatement, but considering what befunge is, it's too true. 23:36:43 both Java and C# would be so great if they were designed and developed by opensource ppl from the beginning 23:37:03 (the productivity thing was an overstatement, that is) 23:37:19 adu: fungespace consists of 0-255, right? 23:37:22 eh no 23:37:25 depends on version 23:37:29 98 allows much more 23:37:50 but alas the great giants have spoken, and now we must suffer or use C 23:38:10 Funge-98 source files are made up of Funge characters. The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.) The Funge character set is 'display-independent.' That is to say, character #417 may look like a squiggle 23:38:10 on system Foo and a happy face on system Bar, but the meaning is always the same to Funge, 'character #417', regardless of what it looks like. 23:38:14 from 98 standard 23:38:24 is D open source? 23:38:36 oklogdc tes 23:38:39 and the spec is free 23:38:48 and so is dmd/s frontend 23:38:50 oklogdc tes? 23:38:51 oklokok, the frontend yes, the backend no, but someone took the frontend and made it usable with gcc 23:38:53 so yes 23:38:53 but the backend contains e.g. code form other sources 23:38:56 so it cannot 23:39:03 oklokok: 'gdc yes' 23:39:11 ah yeah 23:39:14 AnMaster: yep - that's gdc 23:39:19 ehird, indeed 23:39:20 oklokok: but since ther eis a formal spec.. 23:39:26 and a free implementation 23:39:32 the only non-free bit is the dmd backend. 23:39:42 & it can't legally BE free atm 23:40:24 although i think it is allowed to grow past 255 during computation, the 255 restriction is on source files iirc 23:40:28 that doesn't exist 23:40:38 0-2,147,483,647 23:40:41 in source files 23:41:15 I think we should reimplement all UNIX in D or Factor or Haskell 23:41:23 adu: haskell 23:41:25 typesafe unix! 23:41:39 you don't have to do any command line checking -- you know the file you get will be correct 23:41:40 :D 23:41:50 lol 23:42:11 -!- jix has quit ("CommandQ"). 23:42:29 ehird, no more crashes, because crashes are side effects, they wouldn't be allowed in haskell XD 23:43:04 AnMaster: Well presumably you'd have the IO monad somewhere. :P 23:43:07 anyway I'm getting fingerprints working in cfunge now 23:43:12 But it is true that haskell should not crash. 23:43:20 But when you get low-level.. 23:43:23 all bets, off. 23:43:35 ehird, yet the most unstable irc bot I've seen, is one written in haskell, it is crashing a lot 23:43:58 called lambdabot iirc, used in #friendly-coders 23:44:02 proof that haskell is rubbish! 23:44:03 :P 23:44:05 perhaps you should see oklobot 23:44:16 don't have time 23:44:19 it's in C++, and it doesn't hide it! 23:44:28 debugging wtf is going on with loading and unloading fingerprints in cfunge 23:44:35 haha, lambdabot is great 23:44:38 AnMaster: lambdabot is great 23:44:40 AnMaster: dude, lambdabot is really solid code 23:44:40 ... 23:44:41 maybe 23:44:51 lambdabot is probably the most useful bot in existence 23:44:59 AnMaster: its Cale's fault 23:45:00 maybe other than XDCC ones.... 23:45:02 he sucks at keeping it up 23:45:02 ehird, ok, the one with the nick lambdabot however seems to crash a lot 23:45:02 :) 23:45:07 no idea why 23:45:11 whut 23:45:13 :o 23:45:16 AnMaster: Cale. 23:45:23 ehird, who/what is cale? 23:45:24 He also breaks random things. :) 23:45:36 AnMaster: the nick 'lambdabot' on freenode host 23:45:42 ehird, yep 23:45:43 that one 23:46:15 AnMaster: yea. blame cale 23:46:22 yeah lambdabot does crash :( 23:46:24 and who is cale 23:46:24 -!- adu has quit ("Computer went to sleep"). 23:46:35 AnMaster: THE NICK LAMBDABOT ON FREENODE'S HOST 23:46:36 it does .. very often 23:46:38 ah 23:46:49 ehird, so the bot crashes because of the bot? 23:46:50 it did so long before cale took over recently though 23:46:51 ????? 23:47:03 AnMaster: The bot crashes because of the guy who runs the instance that goes on freenode 23:47:04 damnit 23:47:07 aha! 23:47:13 thanks for making that clear 23:47:32 oerjan: still not really lambdabot code's fault in most cases ;) 23:47:36 and who is cale AnMaster: THE NICK LAMBDABOT ON FREENODE'S HOST <-- sounded to me like the bot was cale 23:47:48 instead of cale being the owner of the bot 2008-03-14: 00:00:00 -!- BMeph has joined. 00:01:13 ehird, yay cfunge just got it's first fingerprint! 00:01:22 working 00:03:24 -!- olsner has quit ("Leaving"). 00:09:32 AnMaster: cfunge is mine 00:09:35 :/ 00:11:24 are you both writing befunge compilers? 00:13:02 lament: not compilers 00:13:04 interpreters 00:13:04 * oklokok is writing a befunge compiler, at least :P 00:13:08 befunge-98 interpreters 00:13:14 oh 00:13:21 because we decided that one conforming interpreter was just not good enough 00:13:25 undersaturated market 00:13:25 :) 00:13:32 oklokok: in what language, to what language? 00:13:37 python, to python 00:13:44 threaded? 00:13:48 or jit 00:13:50 AnMaster: i'll pay you moneys if you rename your interp 00:13:51 actually 00:13:54 nm renaming the inter 00:13:57 lament: are those options? 00:13:58 just let me have CFUN 00:13:59 :D 00:14:08 i'll let you have CFNG 00:14:09 haha 00:14:11 oklokok: what do you mean? 00:14:16 what do you mean threaded, threaded as in am i going to implement befunge threads? 00:14:19 *funge 00:14:25 no 00:14:33 ah 00:14:33 what's your compilation strategy? 00:14:58 how are you making it different from just bundling an interpreter with initial source state? 00:15:18 compiling to a stack-based form, with gotos, then compiling that to python's loopie structures, i have some ideas for self-modifying code, but i'm not putting that in this version 00:15:33 umm 00:15:34 oh, so you're ignoring self-modifying code? 00:15:38 there will be no stack 00:15:40 that's... pretty pointless :) 00:16:13 although i remember there was a guy who made a brainfuck interpreter that didn't do loops 00:16:22 lament: yes 00:16:24 BestFriends.js 00:16:26 that's ver very different, though 00:16:28 *very 00:16:29 only handles one level of nested loops 00:16:41 befunge is usable without self-modification 00:16:45 AnMaster: if you use int_fastest32_t or whatever 00:16:48 oklokok: true 00:16:51 how do you make sure stuff doesn't exceed 32 bits? :| 00:17:10 actually i might even say it's better without it. 00:17:19 err... 00:17:22 easier to compile, certainly :) 00:17:40 oklokok: so wait 00:17:41 55+ 00:17:43 i haven't done a lot of befunge, just generally don't see many uses for self-modifications 00:17:44 compiles to 5+5? 00:17:49 i.e. you do total stack removal 00:17:50 ehird: sure 00:17:52 if so, that's cool 00:17:53 well 00:17:56 not entirely 00:17:58 oklokok: befunge-93? if so that's not TC :( 00:18:06 but where it's possible. 00:18:10 AnMaster: i'll pay you moneys if you rename your interp 00:18:11 nop 00:18:13 I won't 00:18:25 ehird: sure is, you can do "p" 00:18:25 I was first to release 00:19:11 ehird: befunge-93 is not tc without modification? 00:19:17 lament: of course.. 00:19:31 lament: when the code is modified, it's trivial to fix the stack+goto based form, compilation to python can be done jit then. 00:19:31 ehird, I even plan to rename it to just cfunge, as it isn't just one version 00:19:34 ehird, :) 00:19:37 AnMaster: you're sitting there whining 'RELEASE' every 2 seconds like putting a tarball on http:// is some magical ritual 00:19:38 :) 00:19:41 so it's not like it's hard to add later 00:19:51 i'm just not planning it in this version, because i don't see how that's important 00:19:53 ehird, hehe, but it is indeed 00:20:30 Befunge-93 is NOT tc 00:20:40 `` 00:20:40 Because Befunge-93 programs are given an explicit limit of 80x25 cells on the size of their playfield, but are also given a working stack, any Befunge-93 program should be simulatable by a push-down automaton. 00:20:40 However, the converse is not true; there surely exist some push-down automata which cannot be simulated by any Befunge-93 program (because they contain more states than can be encoded in the 80x25 playfield). 00:20:41 '' 00:20:42 MUNUS SIGSIGGA TAR BALLA YE... 00:20:56 oerjan: E J F 00:21:05 ESS CEE PEE 00:21:19 ehird: anyway, even with the limitation that the stack cannot grow, it is tc with an infinite grid. 00:21:24 * oerjan does not understand 00:21:36 ehird: obviously i meant with an infinite grid 00:21:37 in case that was your point with the " oklokok: befunge-93? if so that's not TC :(" thing 00:21:47 ehird: with the 80x25 grid, it's not TC with or without self-modification 00:21:52 -!- timotiis has quit ("leaving"). 00:22:08 lament: except with bignums 00:22:28 (i make such useful points!) 00:22:32 indeed 00:22:37 lament: Befunge-93 specifies 80x24. 00:22:49 oklokok: ehird has you beat :) 00:22:56 hehe :P 00:22:56 ehird: indeed. :) 00:23:04 thanks, ehird! 00:24:08 oklokok: I decided to do something like yours 00:24:08 :D 00:24:18 using a dict and lambdas for the instruction table 00:24:18 :D 00:24:22 '+': lambda: '(%s+%s)' % take(2), 00:24:28 take(N) is the magic 00:24:36 it gives you a sequence of the N top elements of the stack 00:24:46 [TOP, ...] 00:26:23 ehird: cool, i was thinking our tradition of stealing each others' ideas was over :P 00:26:29 oklokok: no way! 00:26:30 :D 00:26:30 i was pretty sad 00:26:36 just like the good ol' days 00:26:39 yay! 00:27:23 oklokok: take(N) will be pretty crazy when you can't remove a stack 00:27:28 it'll include destructive function calls 00:27:28 :P 00:27:52 i'm not sure how exactly you use that 00:28:15 oklokok: in the compiler, take(N) will give you a list of strings, length N 00:28:26 each string will be some python code that when evaluated, will give a stack element 00:28:26 sure 00:28:30 the stack element of this number: 00:28:33 mmmmmyeah 00:28:33 [top, top-1, ...] 00:28:39 so, take(2) givse you: [top, top-1] 00:28:45 where the elems are python strings of python expressions 00:28:52 well, that part i guessed 00:28:54 which, when evaluated, give you the top and second-top expressions relatively 00:29:04 oklokok: so in: 00:29:08 "122+-" 00:29:18 +'s take(2) will get it ["2","2"] 00:29:30 then -'s take(2) will get it ["(2+2)","1"] 00:29:51 oklokok: I am just doing 1-dimensional non-TC funge so I can prove I can eliminate a stack 99% of the time 00:29:51 heh 00:30:07 ehird: the problem is really when you start having loops 00:30:27 rpn -> infix is fairly simple otherwise, seems yours just does that 00:30:51 oklokok: oh, wait, yeah, it is equivilent to that 00:30:52 goddarn 00:31:05 but i'm fairly sure it's pretty simple once i actually get on it, currently just looking at my code and thinking about unicorns 00:31:26 unicorns 00:32:06 unicron 00:32:09 universal cron 00:32:40 AnMaster: Challenge. If you cannot give my C-funge interpreter a good name, you must change yours. 00:33:13 cefunge 00:33:29 seafunge 00:33:38 fudgerbudger 00:34:04 sorry, AnMaster, i'm not helping :< 00:35:05 man, it's impressive how similar forth and lisp are 00:35:14 (reading the hyperspec, low-level reader details) 00:35:35 is it the same, but all sentences are reversed? 00:35:38 lament: hahah 00:35:42 lament: R5RS! R5RS! 00:35:51 ehird, what is special with your one 00:36:05 AnMaster: it supports N-funge for all N>1 00:36:10 and is really fucking cool 00:36:11 ehird: r5rwhat? 00:36:15 ehird, but I know two good handprints: R2D2 and C3PO 00:36:16 * AnMaster runs 00:36:23 ehird: i'm not talking about scheme :) 00:36:25 lament: Revised^5 Report on the Algorithmic Language Scheme 00:36:28 expanded out: 00:36:34 besides, r6rs > r5rs 00:36:37 Revised Revised Revised Revised Revised Report on the Algorithmic Language Scheme 00:36:43 ehird, what do you think of those? 00:36:46 lament: r6rs is bloated 00:36:53 AnMaster: totally not as cool as cfunge 00:37:13 ehird, anyway I won't change mine, that's final, but well what about NFUN? 00:37:16 for nfunge 00:37:17 ? 00:37:21 AnMaster: call yours "an funge" 00:37:27 oklokok, nop 00:37:37 ehird can call his ehfunge 00:37:37 ? 00:37:40 that would be a fun inside joke on a channel 00:37:41 ehird: yermom 00:37:43 anyway NFUN sounds cool 00:37:50 why not just all use tha same name? 00:37:50 not here, but at least i would laugh! 00:37:50 ehird: it's not bloated, it _has a standard library_ 00:37:55 lament, yay! yermomafunge! 00:37:58 that's a good one 00:38:05 AnMaster: I can call mine ehfunge if you call yours anfunge. 00:38:11 Anfunge is a pretty cool name actually. 00:38:18 If I were you I'd probably call mine that. 00:38:20 ehird, AnMaster: duel! 00:38:21 ehird, what about youmomoafunge? 00:38:33 * AnMaster runs 00:38:33 AnMaster: don't you think anfunge is a cool name :| i do 00:38:36 okay, whoever's interp is faster wins the name? 00:38:41 ehird, hm I'm thinking of it 00:38:59 AnFunge imo 00:39:06 oklokok, currently mine is very fast, about twice as fast as CCBI or, on my system 3 times as fast 00:39:10 oklokok: capitalization is hardly important :) 00:39:29 ehird: well, so is hardly your mother 00:39:42 ehird: you could use the same name, differently capitalized. :D 00:39:48 CFunGe 00:40:28 CfungE 00:40:34 (the E is for ehird) 00:41:58 unfunge since it will remain unfinished at this rate 00:42:10 Compiler for unbounded n grid, Ehird 00:42:28 or was that interpreter 00:42:36 i'll call mine Oklonge 00:43:17 ehird, anyway I already registered this on freshmeat, so hard to change 00:43:18 did that a few hours ago 00:43:46 * oklokok is trying to incorporate "your mother", "long kok" and "coming from" in the same pun 00:43:49 AnMaster: not hard to reregister 00:43:49 heh 00:44:03 too hard 00:44:09 My long kok is coming from your mother. 00:44:21 Oklounge 00:44:22 oh, right, so obvious! 00:44:41 onge 00:44:41 ofunge 00:44:46 but it could be Ok-lounge 00:44:56 *Bk-Lounge 00:45:16 ehird, anyway as I said it is kind of too late then :/ 00:45:38 -!- olsner has joined. 00:45:48 AnMaster: I said, no it's not 00:45:56 AnMaster: re-registering is not hard. 00:48:54 hmm 00:48:59 what is the befunge terminology for a word? 00:49:06 ehird, a cell? 00:49:31 the b word 00:52:58 ehird, also, sf.net project request 00:53:17 AnMaster: don't use sourceforge. 00:53:23 ehird, why not? 00:53:35 AnMaster: 1. sourceforge is ironically closed-source, and costs big moneys 00:53:43 2. its interface &co. are really inferior to alternatives 00:53:50 3. the requests take ages. wtf. 00:53:51 sourceforge kind of sucks 00:53:52 ehird, it is the largest one still 00:54:00 but it's free webspace isn't it? 00:54:09 faxathisia, indeed, and a nice url for it 00:54:13 AnMaster: oh, it's large. that means it's good. Obviously. 00:54:17 and a good mirror system 00:54:23 ehird, yes high google ranking 00:55:20 * pikhq recommends the GNU Savannah 00:55:33 -!- Sgeo has joined. 00:55:41 pikhq, I will do source code hosting myself 00:55:44 * ehird recommends google code 00:55:44 as I prefer bzr 00:55:45 pretty good 00:55:48 not perfect, but. 00:55:54 and then only alternative would be sucky launchpad 00:56:04 AnMaster: high google ranking? why do you care about that for a befunge interp 00:56:06 sheehs 00:56:12 you'll get more traffic from the esolang wiki 00:56:48 On a side note: PEBBLE is in DMoz. :) 00:57:41 eek 00:57:42 dmoz 00:57:42 :D 00:57:47 the dead internet 00:57:57 It still lives. 00:58:35 Google's Directory mirrors it. ;) 00:58:39 -!- Slereah has joined. 00:59:16 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 00:59:30 pikhq, 1) what is PEBBLE and 2) what is DMoz? 00:59:40 ehird, as for esolang wiki, already added there :) 00:59:56 http://pikhq.nonlogic.org/pebble.php 00:59:59 * Slereah goes to der esowiki 01:00:01 what is dmoz 01:00:01 lawl 01:00:07 official name is now cfunge without 08, as I'm implementing 93 and 98 as well 01:00:07 DMoz is the Open Directory Project. 01:00:10 ehird, I know what dmoz is 01:00:20 Then why did you ask? 01:00:33 lol 01:00:43 What was added to the fantasmesoteric wiki? 01:00:44 err wait 01:00:46 I'm tired 01:00:47 pikhq: So he can retroactively claim he knows after being told. 01:00:51 ehird: LMAO 01:00:55 hahaha 01:00:57 ehird, right! :D 01:01:01 I'm just tired 01:01:09 I had a faint memory of DMoz 01:01:19 didn't remember what it was exactly 01:07:39 i didn't know about dmoz OR freshmeat 01:07:44 oklokok: Mutant. 01:07:58 :P 01:08:02 i'm not into popular culture 01:08:15 Hmm. If I'm on Freshmeat, too. . . 01:09:13 * oklokok did know about sourceforge! 01:09:21 not that i've ever used it 01:10:11 never downloaded from it? 01:10:19 dunno, perhaps i did 01:10:24 just don't remember 01:10:37 hmm... i probably have downloaded something from there 01:12:10 and launchpad (as I actually use bzr) 01:16:23 -!- oerjan has quit ("Good night"). 01:17:25 -!- Deformati has joined. 01:18:25 Are Haskell's book good? 01:21:09 I heard it was not read it myself though 01:21:54 I'm thinking of buying "Combinatory logic" 01:22:00 And there's no review on Amazon. 01:22:25 I just bought Sets for Mathematics 01:22:32 The Schönfinkel article leaves too much mystery for me :o 01:23:17 -!- sebbu has quit ("@+"). 01:26:56 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 01:26:58 -!- Slereah has joined. 01:32:41 [02:17:14] Are Haskell's book good? 01:32:42 [02:19:59] I heard it was not read it myself though 01:32:52 took me quite a while to parse these 01:33:10 perhaps i'm a bit too tired 01:33:14 more coffees -> 01:33:24 night 01:33:36 nnnight? 01:33:39 -> 01:37:08 hmm, the powder has fossilized because i've been eating it with a spoon 01:37:17 hope it tastes the same -> 01:37:22 -!- GregorR-L has joined. 01:38:44 -!- slereah_ has joined. 01:38:45 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 01:38:59 GregorRL(1) 01:39:21 -!- Deformative has quit (Read error: 110 (Connection timed out)). 01:39:24 (i actually both misread and mistyped your nick's suffix) 01:39:57 (lölled.) 01:41:06 -!- oklokok has changed nick to oklo. 01:41:37 Hahaha 01:41:57 Better than my previous GregorRead-Write (GregorR-W) 01:43:33 GregorReally-Awesome 01:44:17 Price: US$ 122.48 01:44:21 Aaaaaaaaaaaaaaaaaaaah 01:45:13 slereah_: i'm willing to pay that, when can you come? 01:45:20 is that for one night, or what? 01:46:07 Depends, do you have the work of Haskell Curry tatooed on your penis 01:46:22 no, i just drew a smiley face on t 01:46:24 *it 01:46:32 Well, I guess it's good too. 01:46:54 that's actually true, quite coincidental you should ask that on the only day ever i have something written on it. 01:47:08 THIS IS A HAPPY PENIS 01:47:11 :D 01:47:45 i feel so small and cute with this nick <3 01:47:51 coool 01:47:53 I want a small nick 01:47:56 :d 01:48:05 err 01:48:07 I meant dick 01:48:08 obviously 01:48:33 The only day... 01:48:33 ...SO FAR 01:48:34 obviously. 01:48:52 Well, oklo has one. 01:48:53 oklo: draw a penis on your penis 01:48:57 And it is adorable 01:49:16 Draw the ASCII value of a smiley face on your penis 01:49:20 "i have recursion on my penis" must the greatest pick-up line ever 01:49:22 on 01:49:23 no 01:49:25 the ascii penis smiley 01:49:27 on your penis 01:49:31 it has both sexual predator AND geeky loser 01:49:47 What's the ASCII value for a penis? Is it the value of 8===D? 01:49:57 we neeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed qdb.eso-std.org 01:50:05 [00:49] "i have recursion on my penis" must the greatest pick-up line ever 01:50:05 [00:49] it has both sexual predator AND geeky loser 01:50:07 quote #5 01:50:07 :D 01:50:12 :P 01:50:19 What are #0 through #4 ! 01:50:21 what are the first? 01:50:26 oklo: what is the Big-O complexity of your penis? 01:50:27 what's #4+3i 01:50:47 hmm 01:50:54 slereah_: #0 is how the qdb is open, and someone saying that them saying a line including the word 'dick' was sure to find its way onto there sooner or later 01:50:55 :D 01:51:19 And boy, were they right! 01:51:28 #1 is someone saying how the qdb's second quote ought to be one not including the word 'dick', to keep its integrity up. 01:51:32 Seems like that idea flopped. 01:51:47 #2 is this conversation. 01:52:06 #3 is the discussion that we will have later about how meta this conversation is. 01:52:18 And #4 is my 'I want a small nick/dick'. 01:52:21 slereah_: Satisfied? 01:52:45 Well, I'm naked and we're discussing penis. 01:52:48 So I guess. 01:53:09 slereah_: And thus quote #6 is born. 01:53:45 Why don't you just dump the logs on the qdb? 01:53:58 :P 01:54:01 slereah_: heh 01:54:07 not many false positives, you're rihgt 01:55:03 Still. $120 for a book, I hope it's made out of fucking gold. 01:56:05 slereah_: are you reading this stuff just for fun? 01:56:17 I sure don't need it to do physics. 01:56:31 heh 01:56:31 Problem with those books is, they're all referencing each others. 01:56:44 That's how I got here. 01:56:55 I tried to read the Principia Mathematica, and bam 01:56:59 The machine was on! 01:57:09 well, just perform a topological sort, book referencing graphs are always dags 01:57:54 slereah_: Goedel won the PriMat battle! 01:58:05 oklo: a mutually-referenced set of books would rock 01:58:13 yeah :D 01:58:38 Well, he only proved it incomplete, not false! 01:59:30 slereah_: He defeated its war against recursive sets though 01:59:45 What, x={x}? 01:59:54 Yes 02:00:05 I have a shameful picture. 02:00:06 http://membres.lycos.fr/bewulf/Divers2/Set.jpg 02:00:08 :( 02:01:41 I love you 02:03:26 'Recursion: see recursion.' 02:03:27 Oh crap.... 02:03:37 My funge may have to be in C++ for *convenience*. Yeah you heard that 02:03:40 Reason: Boost's array libraries 02:03:48 :) 02:03:49 :-( 02:04:05 "And by recursive, I of course mean defined by recursion." 02:04:05 Grr. 02:04:06 c++ has a nice name 02:04:18 Incr Tcl has a better one. 02:04:21 pikhq: Yeah, please show me a nice sparse N-dimensional array for C. I would really be happy :( 02:04:32 pikhq: And [incr Tcl] isn't exactly a speed demon. 02:04:51 ehird: we are only discussing names here 02:04:55 I didn't say it was a good bit of code. . . I just said it had a better name. 02:05:02 pikhq: Oh. 02:05:06 pikhq: Well plz halp :( 02:05:07 SNIT is a fairly speedy bit of code, though. 02:05:08 like i have a better name than any of you 02:05:10 *nick 02:05:11 (SNIT's Not Incr Tcl.) 02:05:18 Anyway, ADD ONE TO COBOL GIVING COBOL wins 02:05:22 but i'm still not better than you as a coder 02:05:22 BUT back to my question 02:05:23 :( 02:05:44 ehird: Just a sec while I pull my N-dimensional array code out of my pocket. 02:05:49 Ooops, my pocket is imaginary. 02:05:51 or better coded, whatever the analogy should be 02:05:52 As is that code. 02:06:10 pikhq: Well, just point to me a resource for C. 02:06:19 pikhq: Or at least feed me propaganda to convince me not to use C++ for it! 02:06:43 I mean, I would use a nicer thing with a nicer thing for that, but ofc C++ will be blazes faster 02:07:08 hmm, I think it's actually a sparse matrix I want 02:07:34 http://www.boost.org/libs/numeric/ublas/doc/matrix_sparse.htm 02:07:34 Bahh 02:07:39 i once owned a guy in speed, python vs. c++ 02:07:41 i was the python 02:07:58 i was like, lol you suck 02:08:05 :D 02:08:16 well yeah, so his code sux 02:08:17 :P 02:08:30 hmm 02:08:39 oklo: Know any algorithms for sparse N-dimensional arrays? :( 02:09:06 what do you need? 02:09:09 it's all about interface 02:09:55 basically, you can just do a hashmapping 02:10:08 you will need to access adjacent cells fast though 02:10:27 so, perhaps also do some linked-listing between executable cells, ignoring whitespace 02:10:28 dunno 02:10:28 oklo: exactly so a hashtable isn't nice 02:10:35 yeah 02:10:37 its hard 02:10:37 :( 02:10:58 well, i do python, nothing is hard 02:10:58 AnMaster: can I use AnFunge 02:11:12 oklo: how would you do a sparse Nd array then? 02:11:17 like what i said 02:11:18 i.e. fungespace 02:11:23 prolly 02:11:30 oklo: so (x,y) and (x,y,z) and (x,y,z,foogal) 02:11:30 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!"). 02:11:35 for 2,3,4d 02:11:45 yyyeah? 02:11:49 ehird, hah sure I guess, I wouldn't care 02:11:57 I don't name my software like that 02:12:05 just don't claim I made it :) 02:12:17 AnMaster: you *should* name your software like that 02:12:30 EgoBot, Anfunge. 02:12:32 it's awesome when people put parts of their nick in their software names 02:12:34 I need a prefix/postfix/substring. 02:12:41 Lio would work I guess 02:12:43 LioFunge 02:12:44 :| 02:12:53 oklo, comment taken on board, and will be thrown over as soon as we leave harbour 02:12:56 ;P 02:13:24 Is there anything up on ESO? 02:13:25 AnMaster: funny, but mean! 02:13:25 oklo, look is it gcc or rmsc? 02:13:25 :P 02:13:32 oklo, what? my Discworld quote? 02:13:56 slereah_: Not yet 02:14:14 * AnMaster is a Discworld geek (not fan, a geek) 02:14:25 oklo, you read any of those books? 02:14:54 ehird, err, it's emacs, not RMSmacs :P 02:14:56 just FYI 02:15:11 I used to be a fan. 02:15:17 But after reading them so many times! 02:15:19 AnMaster: most likely not, because i have no idea what you are talking about 02:15:34 slereah_, oh yes read and reread, Theif of Time is my favourite book 02:15:48 oklo, a fantasy/satirical fantasy series of books 02:15:50 oklo: or would you nest a hash table? 02:15:55 oklo, comment taken on board, and will be thrown over as soon as we leave harbour AnMaster: funny, but mean! 02:16:09 AnMaster: RMSmacs is the name for it when talking about it along with XEmacs 02:16:11 oklo, it was a quote from "The last continent" 02:16:14 ehird: nest a hashtable for each cell to get their neighbors? 02:16:16 also FSFmacs 02:16:22 ehird, what about sxemacs? 02:16:26 oklo: no for N dimensions 02:16:28 or µemacs 02:16:29 AnMaster: nobody uses that 02:16:49 ehird, actually I tried sxemacs, because a friend is a developer on it 02:16:56 * AnMaster think it is crazy 02:16:59 AnMaster: it sucks 02:17:03 ehird: like hashtable for each dimension? 02:17:08 ehird, as for µemacs: Torvalds use it 02:17:11 ;) 02:17:18 * AnMaster use gnu emacs 02:17:35 uemacs is nice 02:17:38 and yeah i know torvalds uses it 02:17:45 oklo: {x:{y:...}} or {(x,y):...} 02:17:51 the latter is more N-d 02:18:19 if befunge had infinite dimensions, and the "tree-structureness" of the FungeSpace was more easily accessible, i would most likely do that 02:18:54 hmm 02:19:01 i'm not sure what my logic was for that. 02:19:03 oklo, you would need some changes for that 02:19:09 infinite ones I mean 02:19:27 AnMaster: sure, you would need to change the operations. 02:19:45 AnMaster: name my funngeeee 02:19:46 like vectors as: {x,y.z.Ã¥,ä,ö,...} 02:19:46 it would be very different, and allow very different coding style 02:19:53 *a 02:19:59 ehird, no idea, what about nfunge? 02:20:04 nofunge? 02:20:17 funge? 02:20:25 noes 02:20:31 aleph-zero-funge? 02:20:44 ehird: {x,y:...} and {x:{y:...}} are both good 02:20:58 noes 02:21:01 Why only aleph zero! 02:21:03 i just don't like the latter as much, because it's less symmetric, even though it should conceptually be symmetric 02:21:04 oklo, for hash? I use vector as key 02:21:05 :P 02:21:16 AnMaster: so the first one 02:21:23 slereah_, aleph-aleph-aleph-0? 02:21:27 that would be interesting 02:21:32 Aleph 1 is enough! 02:21:50 awwwwww come onn 02:22:07 oklo, indeed 02:22:20 -!- slereah_ has changed nick to Slereah. 02:22:22 oklo, but my hash library should probably be ripped out and replaced 02:22:57 my fungespace will be a hash table with F_word[F_dimen] as the key 02:23:02 where F_ is my prefix, to be replaced 02:23:08 F_word is int32_t 02:23:09 ehird: the problem would be much more interesting if you needed to "find closest existing operation to point p" or something 02:23:16 hmm wait 02:23:18 but you don't need really anything for befunge 02:23:19 i need that done at runtime 02:23:20 heh 02:23:21 :D 02:23:23 just direct addressing 02:23:26 oklo: meh 02:23:45 hmm 02:23:50 shoudl I implement my own hash table? 02:23:52 I :D 02:23:54 *:D 02:23:58 wonder how I should hash the [N] 02:24:03 ehird, I would suggest n-dimensions, that can grow at runtime 02:24:11 so a redesign of vector system 02:24:18 AnMaster: hahah 02:24:19 what fun 02:24:25 F_vector_of_dimensions 02:24:26 ehird, my idea? yes 02:24:51 lol, my code has been one line away from ready for like 2 hours 02:24:52 :D 02:24:54 ehird, however, note that mycology only runs in funges with vectors of size 2 02:24:55 * oklo puts 02:25:36 ehird, so you need some compatibility mode to test those things 02:25:41 AnMaster: um hardly 02:25:46 just run with '-N 2' 02:25:46 ehird, ? 02:25:49 to get befunge 02:25:50 ah good idea 02:25:54 -N 1 is unefunge 02:25:57 -N 3 trefunge 02:26:01 ehird, -N -1 ? 02:26:03 and -N 938475 is memoryleakfunge 02:26:10 AnMaster: that's optionparsingerrorfunge 02:26:16 it has only one interesting program 02:26:22 and there are no uninteresting programs 02:26:23 :-) 02:26:28 ehird, -N sqrt(-1) 02:26:29 :D 02:26:43 AnMaster: ditto 02:26:43 that's headachefunge 02:26:44 ;) 02:27:03 -N integer>1 02:27:06 You can't have imaginry dimensions silly man. 02:27:16 How are you going to have a i-tuple! 02:27:18 Slereah, I know :D 02:27:39 hmm... 02:27:39 Slereah, at least it isn't pi-funge 02:27:45 AnMaster: How should I represent N > 2 in source files? 02:27:48 i.e. how should I parse them 02:27:54 You can do real dimensions. 02:28:04 You just need a set with aleph 1! 02:28:17 ehird, hm I think trefunge uses a form feed 02:28:25 to increment Z 02:28:30 apart from that I don't know 02:28:32 AnMaster: is that standard? 02:28:36 ehird, think so 02:28:42 not 100% sure 02:28:49 indeed, if you consider an n-dimensional space as a function from polynomials of order n to whatever that space holds, imaginary dimensions at least make *some* sense 02:28:52 but i'd need infinite chars to handle infinite dimensions 02:28:53 "In Trefunge-98, the Form Feed (12) character increments the z coordinate and resets the x and y coordinates to zero." 02:28:58 ehird, from http://catseye.tc/projects/funge98/doc/funge98.html#Quickref 02:29:00 err 02:29:00 AnMaster: wait, ^Z^Z is always invalid right? 02:29:02 oh wait no 02:29:04 not that section 02:29:07 it just means that that dimension is empty 02:29:07 damn 02:29:19 I thought: ^Z incrs Z, ^Z^Z incrs 02:29:20 etc 02:29:23 but that won't work 02:29:26 since ^Z^Z is well defined 02:29:43 ehird, hm: "The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.)" 02:29:46 so no infinite 02:29:59 of course 02:30:14 ehird, what I suggest: custom format for those extra 02:30:15 AnMaster: is there any unused funge character? 02:30:18 like that opengl thing does 02:30:22 ehird: you can only set values in positions with positive coordinates 02:30:28 for all X, Y and X 02:30:31 ... 02:30:32 Z 02:30:33 ehird, all from space to ~ are in use 02:30:34 in befunge 02:30:56 ehird, a sec for some info 02:30:56 AnMaster: I will use (char)dimension(char) 02:30:57 you cannot go up, but you cannot go left either. 02:31:01 where dimension is decimal 02:31:04 and shows how many to go up 02:31:05 kind of 02:31:06 like 02:31:13 (char)1(char) 02:31:19 means (4d's Z) 02:31:22 ehird, http://fluffy.ecs.soton.ac.uk/bequnge/examples/example5d.beq 02:31:40 by which I mean the 4d quiv of Z -- the axis it adds 02:31:40 (char)2(char) 02:31:42 will be 5d 02:31:42 and will up the axis that IT adds 02:31:44 but you can still use (char)1(char) and ^Z to do lower ds 02:32:06 ehird, a variant used by the very "wow"-effect opengl 105-dimension funge bequnge 02:32:06 http://fluffy.ecs.soton.ac.uk/bequnge/screenshots.php 02:32:11 ehird, fails mycology however :P 02:32:28 hm 02:32:29 11 02:32:30 vertical tab 02:32:39 maybe? 02:32:45 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 02:32:49 ehird, http://fluffy.ecs.soton.ac.uk/bequnge/examples/example5d.beq ? 02:32:58 it is a working way 02:33:32 eh 02:33:35 I don't like that idea 02:33:38 it's impure somehow 02:33:56 hm ok 02:34:02 so vertical tab could work 02:34:19 AnMaster: or 29 group seperator 02:34:50 say: {vertical tab, size of number describing size of numbers of dimension, dimension } 02:34:51 ? 02:35:21 because it may be hard to know how large the number would be 02:35:23 if infinite 02:35:27 or say 02:36:19 Graham's Number 02:36:21 :D 02:36:31 AnMaster: just do 02:36:36 vertical tab NUMBER veritacal tab 02:36:43 ehird, ok could work 02:36:56 ehird, how do you do vertical tab in emacs? 02:37:03 or form feed for that matter 02:37:04 AnMaster: hm \1 is start of heading 02:37:09 maybe something like: 02:37:13 at start of file: 02:37:21 \1DIMENSIONS\n 02:37:21 \1 is valid befunge code 02:37:28 AnMaster: eh what 02:37:29 :| 02:37:32 I mean the ascii char 1 02:37:34 ah ok 02:37:38 right 02:37:39 \1 DIMENSIONS \n 02:37:40 so like 02:37:50 ehird, wtf is the ascii char \1 btw? 02:37:50 '\1', '6', '\n' 02:37:57 AnMaster: http://www.asciitable.com/ 02:37:58 SOH 02:38:03 SOH being? 02:38:08 Start of Heading 02:38:08 goddamn 02:38:12 AnMaster: the byte value of the char!! 02:38:13 and what is that *used* for 02:38:14 ? 02:38:16 never used a programming language?! 02:38:20 AnMaster: uh, who cares 02:38:25 i'll interpret it as "start of header" 02:38:27 ehird, just wondering 02:38:28 and use it for headers 02:38:28 SO 02:38:31 at start of the file: 02:38:33 \1 DIMENSIONS \n 02:38:38 and then later on 02:38:42 \1 INCR \n 02:38:47 when INCR=1 02:38:54 it's an error 02:38:56 same with INCR=2 02:38:58 those make no sense :) 02:38:59 BUT 02:39:06 '\1', '3', '\n' 02:39:09 is also an error. 02:39:11 because there is ^Z 02:39:13 AND FINALLY 02:39:15 "The start of heading (SOH) character was to mark a non-data section of a data stream -- the part of a stream containing addresses and other housekeeping data. The start of text character (STX) marked the end of the header, and the start of the textual part of a stream. The end of text character (ETX) marked the end of the data of a message. A widely used convention is to make the two characters prece 02:39:15 ding ETX a checksum or CRC for error-detection purposes. The end of transmission block character (ETB) was used to indicate the end of a block of data, where data was divided into such blocks for transmission purposes." 02:39:17 '\1', '4', '\n' 02:39:18 from wikipedia 02:39:23 increments the d-4 02:39:27 (d-3 is Z, etc) 02:39:31 so, at start of file 02:39:37 \1, D, \n specifies the dimensions 02:39:38 ehird, so SOH 4 STX IMO 02:39:47 eh 02:39:53 I will think about it 02:39:58 Maybe actually something lightweight 02:40:01 who knows 02:40:04 will sleep over it 02:40:05 ehird, considering that was closed to how it was used :) 02:40:09 originally 02:41:11 lol, took me 3 hours to write my 59 line parser from befunge to a graph :D 02:41:33 perhaps i should close irc. 02:41:58 oklo, what is it? 02:42:18 irc is a chat protocol 02:42:23 no 02:42:25 I mean 02:42:28 the parser 02:42:30 what is it for? 02:42:42 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net). 02:42:42 AnMaster: eliminates the befunge-93 stack 02:42:47 just parses befunge to a graph from nodes to nodes 02:42:54 ehird: not yet. 02:43:00 interesting 02:43:16 oklo, very interesting, how will you support p however? 02:43:18 bye foir today 02:43:21 AnMaster: he won't 02:43:22 ehird, cya 02:43:25 ehird, night too 02:43:28 -!- ehird has quit ("Konversation terminated!"). 02:43:28 ofc i will 02:43:36 oklo, good for you :) 02:43:44 oklo, but it must run under NX 02:43:50 PaX and such 02:43:57 -!- lifthrasiir has joined. 02:43:58 if p is used on a command, it will just not change the semantics of the code 02:44:01 oklo, so JIT I assume? 02:44:17 oklo, um, it is valid to use p to set a non-command 02:44:19 basically, in this version you will just have a separate fungespace for storing data. 02:44:23 for say storing scratch data 02:44:37 (which in my opinion is much better, in practise) 02:44:38 oklo, and also, invalid instructions should be allowed, and reflect at runtime 02:44:57 oklo, so self modifying won't work? 02:45:02 that's a pitty 02:45:14 not yet, but it's just a matter of reparsing parts 02:45:32 oklo, need to pass b93 part of mycology :) 02:45:46 it can already trivially *detect* when code is modified, and what part of the code changes, it's just i haven't actually looked into how to do the reparsing 02:46:00 because parsing the whole program again would make no sense 02:46:12 but i'll think of something,. 02:46:23 oklo, heh 02:46:31 mycology was your deewiant's test suite? 02:46:33 or what was it 02:46:42 oklo, it's the best test suite around yes 02:46:47 it got a 93-only part 02:46:49 -!- Slereah has joined. 02:47:06 oklo, and what did "my deewiant's" mean? 02:47:12 hehe 02:47:15 ? 02:47:29 oklo, just he is damn useful to ask questions 02:47:33 as he knows befunge well 02:47:35 i was gonna write you test suite, then realized it was deewiant's 02:47:46 *yoru 02:47:49 *your 02:47:51 oklo, indeed, I can't write that complex code 02:47:55 in befunge 02:48:04 i know 02:48:09 * AnMaster wonders why cfunge now hangs at: 02:48:11 Testing fingerprint ROMA... loaded. 02:48:13 :/ 02:48:33 because you said "i would use self-modification in befunge", i assumed you haven't actually used it much 02:48:45 oklo, I used it some yes 02:48:53 because you would've either said "i use it" or "i don't use it, but it's CEWL" otherwise 02:49:08 oklo, but I have used it slightly 02:49:17 how exactly? 02:49:20 most I have written so far have been simplified test cases 02:49:32 oklo, oh with concurrent funge it is very important 02:49:42 hmm... maybe 02:49:57 can you help me get my brain started as to... why? 02:50:06 say: 02:50:07 #vt vectors here p 02:50:07 >< blah 02:50:13 that would form a mutex 02:50:26 so you could make the other ip wait for < to be removed 02:50:33 ah. 02:50:42 okay, i should've seen that 02:50:53 hmm... 02:50:54 oklo, there are loads of other examples, even in non-concurrent funge 02:51:29 i definitely need to look into this a lot more, i want everything that's commonly used to be compiled into something that requires no reparsing, you see. 02:51:46 mutexes should be compiled to something with flags. 02:51:52 oklo, t instruction for concurrency is optional of course 02:51:55 and b98 only 02:51:59 doesn't exist in 93 02:52:07 solving impossible problems is the best <3 02:52:21 oklo, look I could do: 02:52:25 > > 02:52:26 err 02:52:30 > < 02:52:30 or 02:52:32 v 02:52:33 ^ 02:52:36 for mutex 02:52:43 there are many ways to do it 02:53:16 oklo, and of course for storing scratch data, p/s is very useful 02:53:21 err 02:53:24 p/g 02:53:36 well, as i said that will ofc work already 02:53:52 oklo, oh yes another thing: 'vs r 02:53:55 in 98 02:53:57 :) 02:54:02 hmm 02:54:13 wuz that do? 02:54:15 push a v on stack, then set char after s to that, then reflect on r and hit the v 02:54:16 :) 02:54:24 the first time the v won't execute 02:54:27 ah 02:54:29 so you need to reflect once 02:54:33 forgot what "'" is 02:54:45 oklo, hehe, and s is set next char 02:54:51 ' is *get* next 02:55:00 oklo, oh and don't forget sudden x 02:55:02 to jump 02:55:06 hard to handle 02:55:13 hmm, stuff like that will be *very* hard to do without recompiling or interpreting, but i like a challenge 02:55:23 sudden x? 02:55:26 hmm 02:55:31 x = set absolute vector 02:55:38 as in, set delta to a vector 02:55:49 meaning jump to some place in code? 02:55:52 means suddely ip moves in a non-cardinal 02:56:16 set absolute ip position? 02:56:31 or what does "absolute vector" mean? 02:56:32 oklo, not position, but say set delta for instruction pointer to say: x=+5,y-2 02:56:38 as in how it moves 02:56:40 oh 02:56:41 fuck. 02:56:45 delta like in <^v> 02:56:48 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 02:56:49 that is 98 only of course 02:56:56 oklo, 93 doesn't have x 02:57:06 a 93 compiler is easy compared to 98 02:57:16 okay, okay, i won't even aim at 98 then, at first. 02:57:32 oklo, thats good, I did 93 first in cfunge too 02:57:39 can you do random *jumps* in 93? 02:57:44 because that's just as shitty. 02:57:48 oklo, you can do random direction changes 02:57:55 not hard 02:57:58 as in "select random of ^v<>" 02:58:00 with ? 02:58:01 ? 02:58:02 i know 02:58:07 not hard 02:58:13 oklo, but you can't do longer jumps I think 02:58:19 in 98 you can 02:58:21 if you have a constant number of places to jump randomly, it's trivial 02:58:29 oklo, there is # to jump over on of course 02:58:35 one* 02:58:47 if you have a constant number of places to jump randomly, it's trivial 02:58:53 in 98 there is also things like: 5j, will jump forward 5 spaces 02:58:59 and 05-j 02:59:05 jump backwards 5 spaces 02:59:09 much easier than x still 02:59:15 yeah 02:59:30 but still you can't know where the stuff for j comes from 02:59:33 it could be anywhere 02:59:50 like say randomly generated using some instructions with ? 03:00:03 oklo, I got a random number generator somewhere let me look 03:00:21 no need, it's fairly trivial :) 03:00:30 hmm... 03:00:33 oklo, wraps with j 03:00:37 http://rafb.net/p/6Trzmm34.html 03:00:46 lessee 03:00:53 oklo, a friend made it as a test case for my broken j handling when wrapping 03:01:22 oklo, due to use of j it isn't 93 03:01:33 oklo, oh btw ; in 98 is "jump over" as in comment 03:01:38 jump from ; to next ; 03:01:42 in current direction 03:02:07 oklo, can think of some evil using with ; and p to put it there or remove the ; 03:02:11 would be hard to handle 03:02:28 oklo, oh I seen programs that copies themself around fungespace btw 03:02:38 forever 03:02:54 copy from one place to the next and delete old copy and so on 03:03:16 yeah... i'm beginning to see uses for self-modification... 03:03:30 oklo, there are many in befunge 03:03:44 funges was made to be almost impossible to compile 03:03:49 basically i just didn't want to implement it, and decided it's useless. 03:03:59 without giving much thought 03:04:22 hmm 03:04:48 a befunge program looping by quining might be fun 03:04:52 probably many exist 03:05:06 oklo, some ideas: http://quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/#files 03:05:23 oklo, there are a few quines there iirc 03:05:43 Befunge-98 'TURT' fingerprint quine is my favourite, it draws itself :D 03:06:36 oklo, see "troll" programs 03:06:39 for copy and move 03:08:17 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 03:11:09 heh 03:11:24 oklo, as you can see, quite complex 03:11:50 oklo, if you could manage those without reparsing, I would be impressed 03:11:54 :DD 03:12:01 oklo, some are befunge93 btw 03:12:02 that will be one of my goals for life 03:12:05 so no way around them 03:12:23 * oklo starts a list 03:13:27 TODO before I die: 03:13:27 - make a befunge compiler without an existing program that needs jit compilation 03:13:46 -!- slereah_ has joined. 03:14:03 oklo, good luck 03:14:03 i'll add something easier there, so i won't feel like a loser on my deathbed 03:14:17 TODO before I die: 03:14:17 - make a befunge compiler without an existing program that needs jit compilation 03:14:17 - fuck a dude 03:14:19 :D 03:14:31 lol 03:14:32 oklo, you are female or male? 03:14:33 Interesting list. 03:14:37 and your preference? 03:15:03 slash aslpixplz 03:15:07 male searching for female 03:15:17 age 19, location finland 03:15:19 horny for ya 03:15:21 uh 03:15:23 oklo, so why a dude? 03:15:24 Hahaha 03:15:25 :P 03:15:27 LMAO 03:15:27 AnMaster wants some oklolove 03:15:33 slereah_, I don't 03:15:36 - fuck a dude 03:15:42 was just wondering about that 03:15:52 Stop your lies 03:15:58 ;P 03:16:11 well, it was a joke, but who says everything on that list should be something i *want* to do. 03:16:45 Soooooo, if it's not something you want to do per se, then presumably its your claim that homosexual sex is one of those necessary life experiences? :P 03:16:47 Am I on that list? 03:17:12 GregorR: sure :D 03:17:30 slereah_: yes, - slereah is the next line. 03:17:38 "- slereah" 03:17:48 :o 03:17:53 Hahahaha 03:18:59 "- kill someone"? 03:19:04 hmm 03:19:09 oklo, so you given up on befunge compiler or? 03:19:13 this list may not be such a great idea after all. 03:19:15 AnMaster: no 03:19:18 Become an ABORTIONIST 03:19:25 *SCATHING POLITICAL COMMENT* 03:19:25 oklo, but one without JIT? 03:19:31 it's just irc gets all my attention when i'm not in my coding mood. 03:19:39 if something happens there 03:20:03 AnMaster: well, i don't even have the possibility of jit in my current one 03:20:04 oklo, basically it is impossible to design a befunge compiler that does NOT need jit 03:20:15 sure for most common cases you can do reparsing/ijit 03:20:17 jit* 03:20:17 it's self-modification i'm not implementing right away. 03:20:37 or even some optimizing it to other ways 03:20:40 AnMaster: ofc it isn't possible, but it is possible to do for programs that don't explicitly prevent it. 03:21:10 oklo, indeed, if it doesn't execute the instruction, you don't need to reparse it 03:21:28 explicit prevention would be actually using the same algo to do the opposite of what it expects, well, you must know the halting problem. 03:21:40 oklo, wait, it may be possible for 93, just compile every 255 * 80 * 25 possible program in? 03:21:46 each an optimized version :D 03:21:55 actually larger 03:22:17 :) 03:22:20 well 03:22:25 256^(80*25) 03:22:31 but you were clse 03:22:33 *close 03:22:58 not much difference between 256^(80*25) and 255*(80*25) 03:23:00 80*25 = the B grid? 03:23:00 argh TI83+ says "out of range" on that one 03:23:38 * AnMaster tries maxima 03:23:38 i would paste it but it's two pages. 03:23:46 maxima locks up? 03:23:59 :/ 03:24:21 bc is faster 03:24:26 4817 digits 03:24:33 hmm 03:24:36 yep 03:24:37 that's not that much 03:24:39 too large 03:24:47 oklo, what about 32-bit? 03:24:58 :DDDDDDDDDDDDDDDDDDDDDD 03:25:17 19833 is what wc -c says, but well there are newlines in bc output 03:25:19 oh 03:25:20 right 03:25:28 just 4 times more digits 03:25:44 60446271881373363749686324996264600587316128857473138638394640922597\ 03:25:44 35662354247400297810424791071242476818152196097844289638570097624044\ 03:25:46 (256^n)^(80*24) = 256^(n*80*24) 03:25:48 output looks like that 03:26:05 nice of bc 03:26:07 what output? 03:26:15 echo "(2^32)^(80*25)" | bc 03:26:17 that output 03:26:18 :P 03:26:52 i don't know bc, just wrote len(str((256**4)**(80*24))) in python 03:27:03 * AnMaster don't know python 03:27:14 >>> len(str((256**4)**(80*25))) 03:27:14 19266 03:27:25 It be the length of the string defined by 03:27:45 AnMaster: you can read that if you know C 03:27:51 ** is exponentiation 03:27:51 oklo, I can yes 03:28:00 well, if you know *anything* really 03:28:01 but I don't like python 03:28:16 who does, it's just so goddamn nice to use <3 03:28:18 But, python is awesome! 03:28:31 You don't even have to know how to program! 03:28:33 oklo, and in C you would use snprintf to convert to string though XD 03:28:46 Hell, I barely can program and I wrote the Love Machine 9000 on it! 03:28:53 AnMaster: i'd use itoa 03:29:53 AnMaster: what languages do you use? 03:30:01 i wish i was an asm dude 03:30:06 oklo, C, bash 03:30:07 :D 03:30:07 but i just don't have the penis for that 03:30:18 oklo, some misc other things like awk too 03:30:43 what' 03:30:45 ... 03:30:53 awk ~ bash 03:30:54 elaborate. 03:30:58 awk != bash 03:31:00 very different 03:31:06 -!- calamari has joined. 03:31:07 good, good, continue. 03:31:12 oklo, got to sleep 03:31:21 "go to sleep"? 03:31:26 oklo, try man bash and man awk 03:31:27 :P 03:31:30 :D 03:31:36 i'm on vista now 03:31:43 get a real OS? 03:31:51 omg never! 03:31:53 :DDDDDDDDDDD 03:31:59 Get ESOS! 03:32:07 hi 03:32:12 hi callie 03:32:22 callie? 03:32:25 yes 03:32:31 haha ok 03:32:34 :D 03:32:37 slereah_, ? 03:32:41 i'm a bit goofy today, sorry 03:32:48 slereah_, ESOS? 03:32:49 * oklo is so whacky 03:32:51 The legendary esoteric OS! 03:32:58 That no one will ever write 03:33:03 slereah_, hah 03:33:10 slereah_, link for specs? 03:33:12 :D 03:33:22 -!- shinku has joined. 03:33:22 no I won't 03:33:24 What, writing specs? 03:33:26 someone do the imaginary pocket thing again! 03:33:28 People won't go that far! 03:33:32 that was so much fun 03:33:36 slereah_, just wondering how far it got 03:33:42 I dunno. 03:33:53 I think it was the "talking about it" phase. 03:34:22 it has been discussed many times before slereah_ even existed 03:34:33 unless slereah_ existed before me, dunno 03:34:42 tell me about it 03:34:46 what would it be? 03:34:50 written in befunge? 03:34:56 or what would the cool thing be 03:35:06 something about kernel being written in brainfuck 03:35:12 ah riht 03:35:15 right* 03:35:21 GregorR once said something like "i'll go write it ->", i've been waiting since 03:35:43 because at that point, i considered GregorR a god 03:35:47 slereah_, btw about python: http://xkcd.com/353/ 03:35:56 I know AnMaster. 03:36:01 It's pretty much that! 03:36:03 nowadays i know so many people better than me i don't deal out that many god positions 03:36:27 slereah_, "sampled everything in the medicine cabinet" yes 03:36:37 hmm, i have the graph, let's do something with it 03:36:59 Stop your liiiies 03:37:18 The only thing I don't like that much about Python is the mandatory indentation. 03:37:25 the second step would be splitting it into "goto domains", meaning i have to find all loops, and split code between all goto clauses and labels 03:37:33 slereah_, that is the single thing I like about it 03:37:36 I like my end programs to look like goddamn cubes. 03:37:54 http://membres.lycos.fr/bewulf/Russell/TTT3.4.c 03:37:55 :D 03:38:01 from future import __braces__ in case someone hasn't seennit 03:38:09 slereah_, your mad 03:38:15 you're* 03:38:18 or whatever 03:38:32 i never use that much shitespace. 03:38:43 " && ", wtf is that about 03:38:45 :D 03:38:57 oklo, "from future" lol 03:39:05 slereah_, that code is 1) unmaintainable 2) unreadable 3) a mess 03:39:06 lol 03:39:13 AnMaster: I know :D 03:39:14 AnMaster: from __future__ import braces ofc 03:39:19 I also removed all strings. 03:39:27 All characters are represented as integers. 03:39:29 oklo, oh? 03:39:46 slereah_, what does it do 03:39:50 Try it! 03:39:52 >>> from __future__ import braces 03:39:52 SyntaxError: not a chance (, line 1) 03:39:54 sorry 03:39:58 oklo, I'm not insane 03:40:20 oklo, hah. an easter egg 03:40:24 kinda. 03:40:39 Some guy had a programming assignment. The restrictino on that assignment were fucking stupid. 03:40:43 So I did this 03:40:46 oklo, interesting: SyntaxError: future feature makethiswork is not defined 03:40:52 wtf 03:41:27 what's interesting about that? 03:41:37 oklo, what does __future__ contain? 03:41:50 stuff that will be standard in the future, i guess 03:41:52 THE FUTURE 03:41:56 but i don't know anything, i just use it 03:41:59 oklo, I see 03:42:17 oklo, what thinks can you import from it 03:42:30 Flying cars. 03:42:35 Also, anti-gravity 03:43:19 -_- 03:43:42 AnMaster: don't remember any. 03:44:05 i just use what i have :-) 03:46:04 wtf, third time "today" i need a topological sort. 03:46:27 "today" as in this period of being awake, there really should be a word for that 03:46:55 night 03:47:15 i'm going to call that "perium" from period / peruneum 03:47:18 *perineum 03:47:28 the latter is just for fun 03:49:00 -!- GregorR-L has quit (Read error: 113 (No route to host)). 03:56:27 hmm... 03:56:54 it seems gotos+rpn isn't *that* trivial to compile to python 04:40:52 -!- atsampso1 has joined. 04:47:29 -!- atsampson has quit (Connection timed out). 05:03:40 -!- shinku has quit (Read error: 113 (No route to host)). 05:10:01 oklo: lol 05:10:13 hint: you don't need any gotos 05:10:57 use CPS! 05:12:18 i want to do this with while loops. 05:12:26 and breaks <3 05:12:29 and continues <3 05:12:41 and boolean flags! 05:12:49 awesome. 05:13:18 right now, i'm writing small specs for the two intermediate languages i invented for this :D 05:22:16 Well, G'night all 05:22:20 -!- Sgeo has quit ("Ex-Chat"). 05:40:12 http://www.vjn.fi/pb/p423454326.txt <<< see "Problem:" 05:40:55 i know it's a confusing spec, i only like designing languages, not explaining them :P 05:41:06 well, two confusing specs 05:41:23 loopit is kinda pretty 05:43:04 basically, this is the problem of compiling befunge to python, only removing the possibility of using something like interpretation or functions. 05:43:37 i'll tackle that tomorrow, right now i need to take a walk or something -> 05:44:38 tried to compile if c; a; if d; b; if e; c; d; e; if a; if b; if c; by hand, it's fairly hard 05:45:24 lament: what did you mean i don't need any gotos? i don't need gotos to compile gotos+rpn to python? 05:45:37 or that i don't need gotos to compile befunge to python? 05:45:45 i don't need them as an intermediate form? 05:45:50 yeah 05:46:13 i'm not that explicitly doing so, i just happen to have the graph representing all possible ip movements. 05:46:24 it's basically a program with gotos 05:46:57 do you happen to know a trivial way to convert that to a bunch of whiles, ifs, breaks and continues? 05:47:16 i have a verrrry complicated way :P 05:49:35 lament: did you read my specs? :D 05:49:54 they are like, hardcore 05:52:20 sleeps -> 05:59:10 * lament proceeds to write a stupid threaded befunge93-scheme compiler 06:13:23 -!- GregorR-L has joined. 06:15:30 -!- GregorR-L has quit (Client Quit). 06:20:17 -!- BlackMeph has joined. 06:23:41 -!- BlackMeph has quit (Client Quit). 06:24:03 -!- BlackMeph has joined. 06:24:47 -!- BlackMeph has quit (Client Quit). 06:28:11 bah, scheme is annoying, it doesn't have slime 06:31:26 ...or hashtables 06:35:48 -!- BMeph has quit (Read error: 110 (Connection timed out)). 07:06:49 damn, my compiler looks less and less like a compiler and more and more like an interpreter. 07:16:34 befunge will do that to you 07:16:58 -!- calamari has quit ("Leaving"). 07:17:08 ooh, i got a _really_ stupid idea! 07:17:29 wow this will be retarded. 07:20:03 wow i'm like the genius of retarded. 07:20:59 -!- slereah__ has joined. 07:21:19 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 07:22:56 -!- atsampso1 has quit (brown.freenode.net irc.freenode.net). 07:22:56 -!- olsner has quit (brown.freenode.net irc.freenode.net). 07:22:56 -!- oklo has quit (brown.freenode.net irc.freenode.net). 07:23:19 -!- atsampso1 has joined. 07:23:19 -!- olsner has joined. 07:23:19 -!- oklo has joined. 07:29:23 -!- Deformati has quit (brown.freenode.net irc.freenode.net). 07:29:23 -!- Quendus has quit (brown.freenode.net irc.freenode.net). 07:29:23 -!- whice has quit (brown.freenode.net irc.freenode.net). 07:29:23 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 07:31:24 -!- Def has joined. 07:31:24 -!- Deformati has joined. 07:31:24 -!- Quendus has joined. 07:31:24 -!- whice has joined. 07:31:24 -!- GregorR has joined. 07:32:49 -!- Def has quit (Read error: 104 (Connection reset by peer)). 07:33:13 -!- Def has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:02:02 -!- dbc has quit (Read error: 110 (Connection timed out)). 08:12:35 -!- dbc has joined. 09:42:53 -!- olsner has quit ("Leaving"). 09:46:43 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 09:47:03 -!- slereah__ has joined. 09:50:02 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 10:08:50 -!- slereah__ has joined. 10:11:36 lament, what did you do? 10:15:48 -!- faxathisia has joined. 11:46:52 -!- jix has joined. 11:57:23 -!- jix has quit (Nick collision from services.). 11:57:33 -!- jix has joined. 12:16:06 Deewiant, MODU NULL REFC ROMA implemented and working 12:17:08 -!- Slereah has joined. 12:17:28 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 12:29:43 -!- jix has quit (Nick collision from services.). 12:29:53 -!- jix has joined. 12:42:44 -!- jix has quit (Nick collision from services.). 12:42:54 -!- jix has joined. 12:50:14 -!- jix has quit (Nick collision from services.). 12:50:24 -!- jix has joined. 13:13:05 -!- sebbu has joined. 13:46:12 -!- jix has quit ("CommandQ"). 13:47:49 -!- jix has joined. 14:30:27 -!- faxathisia has quit (Read error: 113 (No route to host)). 14:30:42 -!- faxathisia has joined. 14:35:57 -!- faxathisia has set topic: http://tunes.org/~nef/logs/esoteric/ - From Brainfuck to extending tetration to the reals.. 14:47:20 -!- Corun has joined. 15:13:21 faxathisia, tetration? 15:13:41 I have no idea 15:14:03 pikhq hopefully knows 15:14:21 (wiki says it's an iterated exponential) 15:14:29 I see 15:15:05 wwwhat 15:15:16 http://upload.wikimedia.org/wikipedia/en/f/f5/Tetration_escape.gif 15:15:31 don't they teach tetration in like the first grade 15:15:33 anyway cfunge now does mycology (including the fingerprints it implement, just four of them) very fast, in average: real 0m0.096s 15:15:35 :D 15:15:53 specially compiled though: 15:15:55 gcc -march=k8 -msse3 -std=c99 -O3 -fprofile-use -fno-ident -fvisibility=hidden -freorder-functions -funsafe-loop-optimizations -Wl,-O1,--hash-style=gnu,--as-needed -DNDEBUG -Wall -Wextra -Wunreachable-code -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Winline -Wunsafe-loop-optimizations -pedantic -fwhole-program -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDE 15:15:55 D -DUSE32 -o cfunge.opt -Isrc -combine lib/libghthash/*.c src/*.c src/funge-space/b98/funge-space.c src/instructions/*.c src/fingerprints/*.c src/fingerprints/*/*.c -lgc -lcord 15:16:00 it should be taught as young as possible, cuz it's so cool 15:16:09 they should teach math in schools :D 15:16:16 faxathisia, looks like a fractal? 15:16:43 i like the crab in the middle 15:16:51 not Mandelbrot though? some other one? 15:17:04 looks like Satan to me 15:17:07 and the centipede turtle in the right middle 15:17:12 or is it centipurdle 15:17:46 -!- oklo has changed nick to oklofom. 15:18:04 i need to make a randomizer for my suffix 15:18:11 -!- oklofom has changed nick to oklofix. 15:18:42 oklofix, code it in befunge :) 15:18:58 what was that tetration escape btw? 15:19:05 AnMaster: currently playing with thue 15:19:13 thue is cool 15:19:18 oklofix, oh? gave up on compiler for befunge? 15:19:20 It's just markov model isn't it? 15:19:26 markov algorithm* 15:19:28 AnMaster: no, but i'm delaying it 15:19:32 hah ok 15:19:33 markov algorithm is TC anyway 15:19:39 and it feels like Thue 15:19:57 AnMaster: http://www.vjn.fi/pb/p423454326.txt 15:20:05 see "Problem" 15:20:14 oklofix, DNS failure 15:20:17 :o 15:20:27 oklofix, that is DNS timeout 15:20:38 is there a proof you can't have a superturing computer? 15:20:42 lol something wrong with the Provider 15:20:50 oklofix, ;; connection timed out; no servers could be reached 15:20:53 hyperturning whatever 15:21:04 faxathisia, hm? what would it do? 15:21:04 turing** 15:21:07 I don't know :S 15:21:14 faxathisia, being able to solve halting problem maybe? 15:21:24 AnMaster: happens rarely, but seems the page is down 15:21:26 i'll repaste 15:21:32 run some small class of programs not computable on a turing machine 15:21:34 oklofix, rafb is good 15:21:40 I don't care what those programs are 15:21:55 faxathisia, tell me if you find out :) 15:22:11 faxathisia, but, would quantum computers be turing or superturing? 15:22:14 I don't know 15:22:24 I guess they are still turing 15:22:35 http://pastebin.ca/942392 15:22:36 just that you can write algorithms in new ways 15:22:47 faxathisia, and can do some stuff very fast 15:22:47 AnMaster: pb.vjn.fi is better 15:23:17 i heard something about them possibly being superturing in some sense 15:23:20 oklofix, I may make some program that puts pastes on my gopher server 15:23:24 just to annoy ppl :D 15:23:32 gopher o_o 15:23:40 AnMaster: did you look? 15:23:47 faxathisia, just run it to shock ppl on irc :P 15:23:51 oklofix, looking 15:24:10 the analogies are, loopit is a subset of python, jumpit is the graph form of befunge i'm trying to compile 15:24:32 oklofix, Damnitall? 15:24:38 ;P 15:24:44 huh? 15:24:56 are you suggesting the name for my next language? 15:25:03 when it doesn't work it isn't jumpit or loopit, but damnit 15:25:08 or even damnitall 15:25:16 :D 15:25:17 ;P 15:25:44 the problem is, almost every program is legal in both those langs 15:26:01 oh? the problem being "almost"? 15:26:12 wwhat? 15:26:17 er? 15:26:25 i just specified a label cannot start with loop"" 15:26:29 *"loop" 15:26:33 ah right 15:26:38 so "loop " would not be any clause. 15:26:46 oklofix, and why is it a problem that "almost every program is legal in both those langs"? 15:26:48 because it's not a label, and it's not a loop clause 15:26:57 is the problem 1) too many are or 2) there are those that aren't? 15:26:58 AnMaster: problem as in Damnit makes not much sense! 15:27:16 oklofix, heh 15:27:17 not a serious problem, the serious problem is the one on the last line of the paste 15:27:29 oklofix, yes read that line, not sure I got it 15:27:34 Compile Jumpit(M = "Output label", N = "Jump if random(0..1)<0.5") to Loopit with the same parameters. 15:27:49 the parametrization is just for fun :D 15:28:19 you mean like: "label foo; if (random() % 2) goto foo; 15:28:20 ? 15:28:23 basically, i'm just putting in an M param for which you cannot just skip the compilation, because you can see program execution from the output 15:28:36 then a do while loop? 15:28:48 N is chosen to be a random choise so that you couldn't just always take the first argument of if 15:29:01 ...a do while loop? 15:29:07 do { 15:29:08 you cannot do that with that N 15:29:10 whatever 15:29:17 } while (random() % 2); 15:29:18 ? 15:29:33 or are you talking about something else? 15:29:44 do { foo; } while(random) would be foo; if foo 15:30:12 oklofix, I don't get the problem, can you express it in C? 15:30:24 while(random) { foo; } bar; would be if bar; foo if foo; bar 15:30:36 *while(random) { foo; } bar; would be if bar; foo; if foo; bar 15:30:57 "if label" means "if ( condition given by N ) jump to label;" 15:31:04 in Jumpit 15:31:24 "label" just marks a label, and has the side-effect given by M 15:31:27 that's all about jumpit 15:31:40 mhm 15:31:47 you can make it tc for some choises of M and N, most likely, but that is not the point here 15:32:00 we are basically compiling gotos to loops. 15:32:06 yes right 15:32:13 at least i tried to create languages where that must be done 15:33:42 do { foo } while(random); in Loopit would be loop; \t foo; \t if *; \t\t continue; \t break 15:33:45 i tihnk 15:33:46 *think 15:35:03 i need to go now, today is thue-day, i'll prolly tackle that problem next week 15:35:07 and kill it. 15:35:08 -!- jix has quit ("CommandQ"). 15:35:09 -> 15:35:41 I can't figure out how to code this without using streams/lazy-lists :S 15:35:54 faxathisia, this = ? 15:36:08 Prolog interpreter in a procedural language 15:36:13 (scheme) 15:36:17 (at the moment) 15:36:18 ok *backs away* 15:36:22 ? 15:36:35 prolog and scheme are both over my head :P 15:36:40 hardly 15:36:50 bbl 15:36:56 scheme is just C but you put the bracket before the function name 16:22:40 Deewiant, UNDEF: the empty string wrapped around the edge of space >' v>1> \v vv v\ >1>v > wtf? 16:22:48 * AnMaster was optimizing wrapping 16:22:53 it works until that happens now 16:23:09 and then an infinite loop with that message 16:24:59 well then I guess your optimizations are focked :-P 16:25:07 Deewiant, tell me what may cause that? 16:25:22 ie what are you testing 16:25:51 it puts a " at the eastmost location and westmost location in space, on the same line of course 16:25:56 and then goes there 16:25:59 hm 16:26:34 if I had to guess, I'd say the westmost " isn't hit 16:26:46 because it's at X coordinate -10 or so 16:26:58 aha 16:27:16 and yeah, that's probably what happens 16:27:24 because then the next " is immediately followed by a r 16:27:41 v>1> \v v"r 16:35:09 Deewiant, btw you may want to look at how I did fingerprints, I think I should be able to do a binary search on fingerprint for finding what one to load, not worth it yet but when the list of supported ones get larger it may be :D 16:35:36 binary search on fingerprints? why? 16:35:49 the list of supported ones: 16:35:50 if you're given "NULL" then you know NULL is the one to load :-P 16:35:56 static const ImplementedFingerprintEntry ImplementedFingerprints[] = { 16:35:57 // MODU - Modulo Arithmetic 16:35:57 { .fprint = 0x4d4f4455, .loader = &FingerMODUload, .opcodes = "MRU" }, 16:35:57 // NULL 16:35:57 { .fprint = 0x4e554c4c, .loader = &FingerNULLload, .opcodes = "ABCDEFGHIJKLMNOPQRSTUVXYZ" }, 16:35:58 like that 16:36:19 as they are sorted it should be easy to find the right one 16:36:19 :D 16:37:21 Deewiant, anyway I notice no difference in speed with and without fingerprints, even though I use function pointers 16:37:47 about 0.1 seconds in either case, no significant difference 16:38:02 of course complex fingerprints will be slower 16:38:51 Deewiant, src/fingerprints/manager.c :D 16:39:07 the .opcodes is another optimization? 16:39:20 not really, it is just a way to know what ones to pop 16:39:37 when unloading 16:39:38 I just loop from A-Z and check which ones aren't null :-P 16:39:40 only used then 16:39:50 hm? 16:40:02 each extension doesn't export any array of them or such 16:40:35 I use a global hash table of strings to arrays of function pointers 16:40:36 see src/fingerprints/MODU/MODU.c for example (yes I based it on your code) 16:40:48 Deewiant, I thought they were per-IP? hm? 16:41:02 one global one which is used for loading/unloading 16:41:07 ah right 16:41:10 and then IP just has 26 stacks 16:41:22 or something like that. 16:41:31 Deewiant, yes but I thought fingerprints was local to the IP? 16:41:38 as in what ones are loaded 16:41:40 like said, IP has 26 stacks. 16:41:45 ah right 16:41:46 :) 16:50:59 -!- Sgeo has joined. 16:51:39 Sometimes, I feel like I'm aleph_null, intellectually I mean. I'm smarter than almost everyone around me IRL, but there are a lot of people in here much smarter than me 16:51:51 heh 16:52:26 Sgeo, that's why I go on IRC.. almost everyone is smarter than me :D 16:55:06 -!- calamari has joined. 16:55:49 hi calamari 16:56:08 hi Sgeo.. having fun with your project? 16:56:30 Haven't touched it in a while, will work on it soon hopefully 17:05:06 -!- calamari has quit ("Leaving"). 17:10:31 Deewiant, I'm documenting my code now, to make it easier to understand :) 17:20:02 Deewiant, a question: why is the null fingerprint called: null_.d and not just null.d? 17:20:13 because null is a keyword, doesn't work 17:20:21 Deewiant, in D? 17:20:23 yep 17:20:25 ah 17:20:38 well I could create a file called if.c and it would compile 17:20:50 of course a variable called if wouldn't work 17:21:09 yes, because C doesn't have a module system, the preprocessor handles includes and such 17:24:29 indeed 17:33:33 Deewiant, don't claim you aren't a performance hunter too 17:33:50 your MODU fingerprint does some nice hackish abs optimizing :P 17:34:12 // http://graphics.stanford.edu/~seander/bithacks.html#IntegerAbs 17:34:12 auto mask = y >> (typeof(y).sizeof*8 - 1); 17:34:12 r += (y + mask) ^ mask; 17:42:33 I was probably reading the page at the time :-) 17:48:04 and hmm, that code is pretty stupid actually 17:53:22 or no, it is right after all. 17:53:57 it gives correct result 17:54:01 -!- timotiis has joined. 17:54:13 but I wonder if the gcc abs() builtin is better or not 17:54:55 Deewiant, anyway is it really faster? 17:55:15 I think that's what the gcc abs uses internally 17:55:30 just not the DMD abs, which is probably why it's there :-P 17:55:41 and no, the difference is probably negligible 17:55:51 AnMaster: consider that that function is called only once in all of mycology 17:56:08 Deewiant, indeed 17:56:18 so mycology isn't a good test for it 17:59:50 so compiling befunge in a non-stupid way is difficult. 18:00:29 lament, indeed? 18:00:38 -!- ais523 has joined. 18:00:38 what about that? 18:00:41 we know that 18:02:37 from which i conclude 18:02:47 that i should compile it in a stupid way instead 18:02:54 err 18:03:07 forsooth 18:04:28 -!- Corun has quit ("Leaving"). 18:09:29 Deewiant, I tried a simple loop for abs, and well it seems even with -O0 gcc optimizes most calls to abs away 18:09:51 yes, benchmarking isn't easy :-) 18:09:52 AnMaster: are you sure that abs isn't a macro in the header file? 18:10:01 ais523, I checked that 18:10:08 it is a __builtin__ 18:10:10 AnMaster: what I suggest is you just write two functions, one which uses that and one which does return abs(x) 18:10:18 AnMaster: and compare the asm of what they result in with -O3 18:10:38 good idea 18:15:15 Deewiant, different code 18:15:38 how different 18:16:26 not much 18:16:59 * AnMaster pastebins 18:17:20 http://rafb.net/p/TjTh3R65.html 18:19:17 Deewiant, doother is your variant 18:19:40 have a look at http://graphics.stanford.edu/~seander/bithacks.html#IntegerAbs and try both variants 18:20:50 the patented one? 18:21:05 ye 18:21:18 because from the asm, it looks like that's what GCC's using 18:21:34 with an extra mov for some reason 18:21:36 Deewiant, gcc abs is exactly the same as the patented one 18:21:47 thought so 18:21:55 wonder why there's an extra mov 18:21:58 Deewiant, eh both moves exist in both? 18:22:05 as in first and last move 18:22:15 doabs: mov sar xor sub mov 18:22:20 doother: mov sar add xor 18:22:35 and dopatent: mov sar xor sub mov 18:22:49 yeah, so I'm wondering why doabs/dopatent has an extra mov 18:23:08 Deewiant, may depend on system? 18:23:31 Deewiant, http://rafb.net/p/l08WdB82.html 18:23:38 looks like it needs the return value in EDI but it does the math in EAX 18:24:36 hmm, well whatever 18:25:00 Deewiant, no clue about that 18:25:05 AnMaster: I think if you do int donaive(int i) { return i < 0 ? -i : i; } it'll compile to the same as the others, too 18:25:17 I'll try 18:25:53 Deewiant, it does indeed 18:26:06 * AnMaster tries with 64-bit ints to see what happens then 18:26:09 which is why, if using GCC, it doesn't really matter what you do ;-) 18:27:13 Deewiant, with int64 they differ 18:27:39 AnMaster: compiling for your architecture? is it using %rax and co? 18:27:42 http://rafb.net/p/2znfY915.html 18:27:45 :) 18:27:57 Deewiant, I mean, donaive differs from abs then 18:28:51 well, of course 18:28:55 oh? 18:28:56 AnMaster: abs doesn't use 64-bit ints 18:29:02 Deewiant, aha 18:29:04 I see 18:29:10 it's int abs(int) 18:29:15 labs 18:29:22 yep, use that one 18:29:32 and it should look the same again 18:29:49 they do yes 18:30:00 gotta be careful with implicit conversions :-) 18:30:19 yes -Wall or something would have told me, if I had used it 18:30:35 probably 18:30:38 anyhoo, sauna -> 18:30:54 Deewiant, -fverbose-asm is nice 19:16:30 -!- Def has changed nick to Deformative. 19:48:24 -!- whice has quit (Read error: 113 (No route to host)). 19:49:02 * ais523 just came across this PDF: http://www.research.att.com/~bs/whitespace98.pdf 19:49:20 I think it's an old April Fool's joke, but they managed to define a C++-equivalent esolang at the same time 19:50:26 haha 19:50:29 that's horrible 19:53:59 Deewiant, there? BAD: G gets like g 19:54:05 how is ORTH get different? 19:54:30 -!- ais523 has quit ("going home"). 19:55:20 I think the param order was flipped or something 19:55:37 just google it, the ORTH specs are online 19:55:55 -!- oerjan has joined. 19:56:08 ah 19:57:06 noerjan 19:57:09 (no=hi) 19:57:26 Cannot test S reliably. If this line begins with "GOOD: ", it worked. 19:57:29 heh 19:57:36 Deewiant, so now newline after :) 19:58:21 evenlessgeo 19:59:23 Deewiant, one thing you don't test: ORTH instruction that set absolute x and y coordinates of ip, how do they work with wrapping? 20:01:05 if you're teleported outside of space then you wrap back into normal space, no? 20:01:23 Deewiant, depends, there are issues 20:01:32 even with your algorithms 20:01:55 if say, delta is as after a ^, then you teleport sidways, so there is no program above or below 20:01:58 then what should happen? 20:02:04 infinite loop, of course 20:02:19 Deewiant, in wrapping function yes 20:02:25 if you want to be smart you can check for that and reflect 20:02:31 at last that's what will happen for me 20:02:40 but IMHO that's just like writing for (;;) {} :-P 20:02:46 Deewiant, heh ok 20:02:49 "what did you expect?" 20:02:53 indeed 20:03:02 What's this about "GOOD: "? what langyage? 20:03:13 Sgeo, test suite for befunge98 20:03:18 * AnMaster is writing cfunge 20:03:35 http://rage.kuonet.org/~anmaster/cfunge/ 20:03:40 Sgeo: http://iki.fi/deewiant/befunge/mycology.html 20:03:45 the mycology test suite: http://users.tkk.fi/~mniemenm/befunge/mycology.html 20:03:53 Deewiant, err what? 20:03:54 * Sgeo stole some concept from befunge98 for use in PSOX iirc 20:04:03 different urls? 20:04:10 AnMaster: like it says in the corner... "please use this permalink" 20:04:25 isn't PSOX that network extensions stuff for brainfuck? 20:04:35 network extensions and file stuff 20:04:40 and other stuff can be added on easily 20:04:43 someone said it was crappyly coded, ehird I think 20:04:49 was weeks ago 20:04:49 -!- RedDak has joined. 20:04:49 of course, in IRC, it probably doesn't matter unless you're browsing the logs months later or something. 20:04:59 and it's not just for Brainfuck 20:05:13 Deewiant, I see 20:05:46 Deewiant, that's yet another url: "http://iki.fi/matti.niemenmaa/befunge/mycology.html" 20:06:29 Deewiant, anyway I pushed my ORTH extension, again reverse engineering your code 20:08:10 * AnMaster ponders making an extension for IMAP, (as in email) 20:08:22 just to mess up with IMAP as in instruction remapping :D 20:08:40 Deewiant, what do you think eh? 20:09:48 Deewiant, one thing, about REFC: 20:09:50 UNDEF: 12R34R56R pushed the scalars [ 0 1 2 ] 20:09:52 what is that about? 20:12:41 $ time ./cfunge.opt ~/bashfunge/trunk/mycology/mycology.b98 > /dev/null 20:12:41 real 0m0.096s 20:12:41 user 0m0.075s 20:12:41 sys 0m0.016s 20:12:42 Deewiant, :D 20:12:51 and that is with extensions 20:14:58 AnMaster: you implemented REFC, you should know :-P 20:15:23 Deewiant, yes but what it is trying to tell me? 20:15:34 nothing really 20:15:34 what series of numbers will returned or what? 20:15:54 I think it may come up with a BAD if two or more are the same, i.e. [ 0 1 0 ] or somethingh 20:15:58 s/h$// 20:16:05 aha 20:16:13 but no, it really doesn't matter 20:16:17 if the rest are GOOD 20:18:49 -!- oklofix has quit. 20:18:52 hm I think mine may return a different value if you try to reference it again 20:18:56 the same cell I mean 20:19:01 * AnMaster looks 20:19:13 both values will work 20:19:23 Deewiant, is it supposed to be like that? 20:19:25 you mean 12R 12R? 20:19:44 or what? 20:19:44 Deewiant, yep, will return 1 and then 2, both 1 and 2 will however point to the same cell 20:20:11 doesn't matter I guess 20:21:09 ok (potential memory leak though) 20:21:09 REFC is a bit annoying though, because it's always a memory leak 20:21:09 well if anyone complains I'll fix it :) 20:21:14 Deewiant, indeed 20:21:22 -!- ehird has joined. 20:21:23 you can't even garbage collect it 20:21:25 there's no defined way of removing old cells 20:21:31 Deewiant, exactly 20:21:39 ooh 20:21:41 what did i miss 20:21:52 ehird, that cfunge now does several fingerprints :) 20:21:54 -!- ehird has set topic: http://ircbrowse.com/cdates.html?channel=esoteric - From Brainfuck to extending tetration to the reals.. 20:22:00 meh 20:22:04 ehird, what? 20:22:05 ehird: the REFC fingerprint sucks because no matter how it's used, it creates memory leaks. 20:22:08 fungeh will be so superior 20:22:09 :D 20:22:13 Deewiant: refc=refcount? 20:22:15 ehird, that's a nice name 20:22:22 "referenced cells extension" 20:22:36 ehird, what handprint? FFUN? FUNH? 20:22:48 someone said it was crappyly coded, ehird I think 20:22:50 you bet :D 20:22:55 AnMaster: FGEH 20:22:57 i guess 20:23:01 ehird, interesting 20:23:08 it is pronounced 'fung-ehh' 20:23:10 or FEH? :-P 20:23:11 like 'fungy' 20:23:11 tell me when it's done 20:23:13 but without the ee 20:23:13 :p 20:23:45 ehird, anyway even if it is superior, I can make mine better 20:23:56 always possible 20:23:59 AnMaster: i care so much 20:24:00 :| 20:24:05 anyhoo, what does REFC do? 20:24:12 ehird, it does madness 20:24:19 allows you to reference a pair of cells with one value 20:24:20 ehird, like pointers to cells 20:24:28 so essentially what you do is you grow an array which contains pairs 20:24:35 yep 20:24:41 and you can't ever remove them 20:24:46 and give indices to the befunge program, with which it can access the array 20:24:49 there is no instruction for that 20:25:02 and hence the array just grows and grows until the program end. 20:25:03 so it's always a memory leak 20:25:07 hmm 20:25:09 from my todo: 20:25:11 -!- RedDak has quit (Remote closed the connection). 20:25:12 - FungeSpace is a hash table whose keys are vectors of length N where 20:25:12 N is the dimension. 20:25:18 i will really have to work out how to elegantly do that 20:25:19 :| 20:25:27 ehird, good luck :D 20:25:33 I think you can do it 20:25:37 bignum-lengthed vectors? aleph-null-funge? :-P 20:25:50 Deewiant, why not aleph-one? 20:25:51 Deewiant: BF_word 20:25:56 which is int32_t 20:26:04 Deewiant: AnMaster: you guys just have to support a few dimensions you have it easy 20:26:10 and Deewiant gets all that fancy auto-sizing D stuff too 20:26:12 ehird, so 2^31 -1 dimensions? 20:26:12 totally no fair 20:26:21 AnMaster: pretty much 20:26:21 ehird, why not uint32_t for dimension count? 20:26:33 AnMaster: 'cause BF_word is used for everything :) 20:26:36 I might add BF_uword 20:26:38 ehird: if you make things hard for yourself don't expect them to become magically easier :-P 20:26:41 and Deewiant gets all that fancy auto-sizing D stuff too <-- it's slower than the same done correctly in C :D 20:26:48 yes but easier 20:26:48 :) 20:26:51 true 20:26:57 but.. i don't think anyone will be using more than 256 dimensions 20:27:02 and even that as just a one-prorgam toy 20:27:05 like 'the biggest hello world ever' 20:27:05 ehird, but cfunge is very fast when compiled with right options 20:27:10 generated by a script 20:27:11 :-) 20:27:15 does this array fingerprint require the indices to be assigned in order? perhaps if you could make them strongly typed somehow... 20:27:35 AnMaster: I suspect that the top one people will do 'real' stuff in is 4d 20:27:37 oerjan: no, it doesn't. in fact, it doesn't even talk about arrays, as long as each pair gets a unique identifier. 20:27:39 and even that much less than 3d 20:27:44 ehird, indeed 20:27:51 ehird, and most in 2D 20:27:58 yes 20:27:58 1D would be more rare again 20:28:06 is unefunge even tc 20:28:07 :| 20:28:19 ehird, it is 20:28:26 ehird, at least I think it is 20:28:29 btw 20:28:33 the Hunt the Wumpus-93 20:28:36 does that work in 98 interps? 20:28:41 ehird, yep, works in mine 20:28:44 oklopol: I figured out how to do self-modifing code 20:28:46 very fast 20:28:56 hi ehird 20:29:05 oklopol: Bsaically, compile to machine code. Write the compiler as a function in C, and include the compiled function in your output. 20:29:05 ehird, even when not profiled for exactly that app 20:29:09 XD 20:29:09 oklopol: Also include a decompiler. 20:29:16 oklopol: Then 'p' compiles then MOVs to the codespace 20:29:18 'g' decompiles 20:29:20 faxathisia: hai 20:29:43 AnMaster: does your makefile already automatically profile against mycology and recompile? :-P 20:29:43 AnMaster: my makefile will be epic 20:29:48 you can choose which fingerprints you want 20:29:48 :D 20:30:02 mine can do that already 20:30:03 AnMaster: 20:30:04 ehird@ehird-desktop:~$ bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge 20:30:04 bzr: ERROR: Unknown branch format: 'Bazaar pack repository format 1 (needs bzr 0.92)\n' 20:30:04 ehird, err, bad idea about that compile at p, you can use p to put a value into scratch space 20:30:12 AnMaster: so what 20:30:14 ehird, what version do you have? 20:30:16 ehird: yes, needs bzr 0.92 or newer :-) 20:30:18 AnMaster: it will be decompiled when you 'g' it 20:30:26 ehird@ehird-desktop:~$ bzr --version 20:30:26 Bazaar (bzr) 0.90.0 20:30:30 that's the ewwbuntu version 20:30:34 if that's too old, feeking hell 20:30:39 ehird, point is, it may not be a valid instruction, so you can't compile it 20:30:42 canonical hate their own product :p 20:30:43 ehird, well I use bzr 1.1 20:30:46 AnMaster: uhh so you compile it to a nop 20:30:46 and bzr 1.2 is out 20:30:58 ehird, hm ok 20:31:00 AnMaster: you can always compile it to reverse at compilation time 20:31:13 Deewiant, hm true 20:31:17 ehird, indeed not a nop 20:31:29 you reverse on errors in befunge 20:31:33 like unknown instructions 20:31:33 * ehird update&upgrades 20:31:35 or whatever 20:31:37 AnMaster: yeah sure 20:31:39 AnMaster: compile it to that. 20:31:42 ehird, :) 20:31:43 ok then i _think_ you could make an implementation that could GC any REFC allocated cells as long as the befunge program makes no attempt to take its index apart as an integer. 20:31:47 AnMaster: if you put it in scratch space you'll never execute it anyway 20:31:51 ehird, http://rafb.net/p/vcgFCm27.html 20:31:52 :D 20:31:53 so, add oklopol's stack elimination 20:31:54 and whooosh 20:32:18 ehird, there are one major incompatiblity between 93 and 98, how to handle multiple spaces in strings 20:32:26 and how to divide by zero. 20:32:29 AnMaster: that thing screws up a bit 20:32:29 :) 20:32:37 ehird, 93 does it the normal way, 98 however, does it like xml 20:32:38 that's the only two, unless I forget something. 20:32:42 ie, drop duplicate spaces 20:32:50 Deewiant, indeed, possibly wrapping over edges too 20:33:00 Deewiant: how does ccbi handle wumpus 20:33:07 well, okay, the actual big difference is that -93 is 80x25 always. :-P 20:33:11 ehird: beats me, haven't tried 20:33:21 ehird: if cfunge works than CCBI probably does ;-) 20:33:22 ehird, iirc: well but loads about 0.1 seconds slower than cfunge does it ;) 20:33:36 or likely less 20:33:40 oh noes, teh slowness!!!!oneoneoneeleven1/9 20:33:48 Deewiant, heheh :) 20:33:53 AnMaster: you think wumpus.b is bad? 20:33:57 err 20:33:58 .bf 20:34:05 it's mainly interactive, so speed doesn't show up like in mycology 20:34:06 if so, you've obviously never written a brainfuck implementation... 20:34:12 ehird, I have 20:34:16 LostKng.b takes ~3 seconds to start up on a naive c impl 20:34:19 ehird, if you remember I wrote bashfuck 20:34:20 :P 20:34:27 you can get it down to less than 0.2 though iirc 20:34:28 took 5 minutes to load LostKng.b 20:34:28 :D 20:34:29 :D 20:34:48 I am fascinated by stack&tape removal 20:35:09 if LostKng's tape could be removed to a large degree, and constant folding performed, along with the regular optimizations 20:35:09 I actually added a pre-compile mode that stored information about matching [ and ] 20:35:13 I think it could be compiled to really really fast c 20:35:30 Deewiant, btw if you want to see bashfuck, bzr branch http://rage.kuonet.org/~anmaster/bzr/bashfuck 20:35:34 I think that's the url 20:35:37 it is slow 20:35:38 very slow 20:35:42 AnMaster: also, note that CCBI was my first D program (besides testing crap like hello world), so it's not exactly a paragon of design/good code :-P 20:35:59 Deewiant, heh ok 20:36:23 damn, the most annoying instruction in befunge-93 is " 20:36:29 you've been coding cfunge with speed constantly in mind, CCBI was just "let's see if this is fun" :-P 20:36:36 Deewiant, and well my incomplete bashfunge was very slow 20:36:39 still, it's been remarkably easy to optimize. 20:36:50 the latest CCBI runs in less than 0.2 seconds on mycology here. 20:36:51 lament: hardly 20:36:54 Deewiant, but true, ccbi is quite fast too, compared to what bashfunge was 20:37:00 ehird: really! 20:37:00 " -> stringmode=1-stringmode; 20:37:04 then in the mainloop 20:37:12 if (stringmode) {push(chr);}else{...} 20:37:22 we need to bring back c's =- 20:37:23 for this: 20:37:24 Deewiant, "UNDEF: # across left edge hits easternmost cell on line" took like 20 seconds in bashfunge from the line before 20:37:27 1 =- stringmode; 20:37:34 AnMaster: :-D 20:37:40 Deewiant, also it failed when it got to x, I gave up there 20:37:45 didn't do much of the rest 20:37:47 :-P 20:37:50 ehird: the most annoing for the retarded compiler i'm trying to write, not for a c interpreter 20:37:57 lament: oh 20:37:59 lament: trivial 20:37:59 Deewiant, but until that point it managed mycology 20:38:05 just getc until a " 20:38:11 then compile it into psuh instructions 20:38:36 Deewiant, anyway the "ask user" think for / and % by zero, that's just weird 20:38:53 AnMaster: it's an esoteric language, what did you expect :-P 20:39:05 AnMaster: it's amusing 20:39:08 indeed 20:39:58 AnMaster: i might use __asm__ for this 20:39:59 :-D 20:40:02 Deewiant, btw, I think PPC actually returns 0 on division and mod by zero in reality, I wonder, it should be possible to remove the code for check if zero if I compile cfunge for such an arch 20:40:03 hmm 20:40:03 :) 20:40:07 fungeh kinda sucks for a name 20:40:07 :P 20:40:20 AnMaster: catch the signal 20:40:21 XD 20:40:25 ehird, not really, reminds me of inspircd slogan 20:40:35 ehird, that's slower on other platforms 20:40:36 i don't like it 20:40:37 so meh 20:40:38 ehird: just call it "fungy" 20:40:46 AnMaster: #ifdef __PPC__ 20:40:55 Deewiant: #include "fungy/fungespace.h" 20:40:55 ehird, what about kung-funge? 20:40:56 naaaah 20:40:57 * AnMaster runs 20:40:58 err 20:41:10 lament: i guess the annoying thing would be that if a line contains " everything in it must be compiled _both_ as string and as ordinary command? 20:41:12 how do you spell it normally? material arts 20:41:12 frungy! frungy! frungy! 20:41:15 kung-fu? 20:41:19 something like that? 20:41:39 so just change the second word to funge? 20:41:46 "kung fu" 20:41:53 oerjan: vertical strnigs too 20:41:57 oerjan, not only that, but vertical too 20:41:59 or just 功夫 :-P 20:42:00 Deewiant, ah yes 20:42:09 oerjan: yes, although my compiler is too stupid to compile lines. 20:42:10 Deewiant, whoa, did you google for it? :P 20:42:18 AnMaster: wikipedia :-) 20:42:20 aww 20:42:22 /nick 功夫 20:42:23 fails 20:42:26 Deewiant, heh 20:42:30 i consider "line" as the geometric concept here ;) 20:42:30 ehird: realname works though 20:42:32 ehird, indeed, see IRC specs 20:42:38 AnMaster: nobody follows them 20:42:52 æßðððððððłe¶³€½ŧ¶â†Ä§Å‹nðŋe¶ŧ¢þøsð→e€½}]Ä‘jÆ°±J§Ãâ…›&⅛£Ãı→ 20:42:56 oerjan, lament: for funge98 you can have strings from other places, using x instruction 20:43:03 ehird, indeed 20:43:11 i don't care much about funge98 20:43:18 it seems overcomplicated 20:43:22 lament, well 93 isn't turing complete 20:43:29 AnMaster: eh? I don't think the IRC specs limit nicks to ascii 20:44:00 Deewiant, charset for channels and nicks are limited to a-zA-Z and {}[] iirc 20:44:04 or something like that 20:44:10 RFC 2812: "No specific character set is specified." 20:44:17 Deewiant, 2812, bah 20:44:17 Deewiant: ignore the irc rfcs 20:44:18 seriously 20:44:25 nobody follows 2812 20:44:29 lament: it is quite overcomplicated, but not superflously 20:44:39 lament: it's got more juicy topology theory 20:44:57 lament: also trefunge 20:45:00 "topology theory"? :-P 20:45:03 Deewiant, http://tools.ietf.org/html/rfc1459 20:45:04 Deewiant: used lightly 20:45:04 :D 20:45:15 'stuff that looks like mild topology theory from a long distance' 20:45:22 Deewiant, yes I wondered about having a mode with user specified wrapping 20:45:23 AnMaster: turing-completeness is overrated 20:45:25 but it LOOKS pointy-hat, so :D 20:45:30 AnMaster: RFC 1419: "No specific character set is specified." ;-P 20:45:34 er, 1459 20:45:53 Because of IRC's scandanavian origin, the characters {}| are 20:45:53 considered to be the lower case equivalents of the characters []\, 20:45:53 respectively. This is a critical issue when determining the 20:45:53 equivalence of two nicknames. 20:45:53 :) 20:45:53 (weird yes) 20:45:53 ehird: I mean the term "topology theory", no such thing in my experience 20:45:56 AnMaster: of course 20:46:04 Deewiant: it sounds pointy-hat 20:46:06 but I know historical background for it 20:46:14 AnMaster: I don't know how that's scandinavian but whatever :-P 20:46:32 Deewiant, ehird, back before 8bit charsets, they used to write åäö as those chars 20:46:43 that's what I've been told 20:47:03 AnMaster: correct 20:47:15 right, didn't know that 20:47:16 AnMaster: the swedish charset used the ASCII values of []\ for those 20:47:27 so iirc you couldn't type []\{}| in the swedish charset 20:47:27 :) 20:47:30 I'm too young 20:47:35 Deewiant: ditto 20:47:37 Deewiant, so am I 20:47:41 i think everyone here is 20:47:41 :) 20:47:42 but I like computer trivia 20:47:50 then why do you know stuff about 7-bit charsets??! :-P 20:47:55 (and I don't) ;-) 20:47:59 ehird, where are you from btw? (as in what country?) 20:48:37 google suggests hexham, england 20:49:22 Deewiant, btw, this I can't measure, but my feeling of it is that the time for wumpus to load and get ready in cfunge is so fast it seems directly after I press enter on the command line, for CCBI it is a very very small fraction of a second before it shows up 20:49:27 hardly noticable 20:49:31 and I may very well be wrong 20:49:38 you're probably right 20:49:45 before it hits the main function: 20:49:51 gc initialized 20:49:55 command line arguments parsed 20:50:02 module constructor run for each fingerprint 20:50:07 some buffers allocated 20:50:18 Deewiant, remember I use a GC too, initialized on very first line of main() 20:50:37 command line arguments are parsed in main() using getopt 20:50:47 I'm on EFNet, a private network, wikkedwire, and DarkMyst 20:50:48 constructs I don't have though 20:51:01 This is the only one that won't allow SgeoServ 20:51:09 AnMaster: I am from england 20:51:13 We have rain and mud 20:51:14 Sgeo, I think it bans *serv 20:51:15 And a queen 20:51:22 ehird, hehe, I know where UK is 20:51:23 AnMaster, but only FreeNode does, it seems 20:51:24 :D 20:51:30 AnMaster: uk!=england 20:51:33 Sgeo, nop, lot of other networks too 20:51:41 ehird, indeed, it's a part of uk 20:51:45 AnMaster: bingo 20:51:47 Not EFNet, not Sine, not Wikkedwire, and not DarkMyst 20:51:57 AnMaster: I mean stuff done by the D runtime 20:52:08 AnMaster, ehird, this? http://qntm.org/?uk 20:52:12 Sgeo, apart from efnet (that doesn't have services), I have never heard of those networks 20:52:13 AnMaster: converts int argc, char**argv to char[][] args, stuff like that. 20:52:14 Sgeo: Yes, that. 20:52:19 AnMaster: mostly it's the module constructors which take time. 20:52:44 Deewiant, hehe 20:52:55 Deewiant, anyway it is hardly noticeable 20:52:56 AnMaster: allocates a bunch of hash tables with pointers to functions. 20:53:03 and then possibly I/O is slower. 20:53:15 Deewiant, well I do allocate a hash table too, after main(), before I load program 20:53:20 ehird@ehird-desktop:~$ bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge 20:53:21 bzr: ERROR: Unknown branch format: 'Bazaar pack repository format 1 (needs bzr 0.92)\n' 20:53:23 i just FSCKING UPGRADED 20:53:25 :| 20:53:28 if I'd want to test, I'd take Mycology and insert a line containing "@" right at the beginning. 20:53:32 AnMaster: downgrade your repository 20:53:38 ehird, impossible 20:53:42 AnMaster: also, because of TRDS I need to make a copy of the entire funge-space. 20:53:42 you can't do it afaik 20:53:56 Deewiant, aha I see, so you need two fspace 20:54:02 AnMaster: use a vcs which doesn't enjoy breaking compatibility fully every 0.02 versions and being slow 20:54:09 AnMaster: yep, one is the currently running one and one is the original. 20:54:18 AnMaster: with --disable-fprints the copy might not be done though, I'm not sure. 20:54:24 Use assembla! 20:54:27 ehird, just get last release? :/ 20:54:30 ehird, well a sec 20:54:41 ehird, maybe the one mirrored by lauchpad works better 20:54:49 * Sgeo hosts PSOX on Assembla 20:54:58 (VCS is SVN) 20:55:02 ehird, they may downgrade format i their mirror 20:55:26 ehird, try bzr branch http://bazaar.launchpad.net/~anmaster/cfunge/main cfunge 20:55:46 Sgeo: i love how you suggest bzr->svn 20:55:55 that's the only direction which is even worse 20:56:01 cvs is not that bad :) 20:56:08 ehird@ehird-desktop:~$ bzr branch http://bazaar.launchpad.net/~anmaster/cfunge/main cfunge 20:56:08 bzr: ERROR: Unknown branch format: 'Bazaar pack repository format 1 (needs bzr 0.92)\n' 20:56:11 brilliant! 20:56:11 ehird, not very last version, there, they mirror every 4 hours or so 20:56:20 ehird, ok, go complain in #ubuntu? 20:56:25 launchpad ship all their repositories in a format that nobody using their official OS and their official repositories can use 20:56:26 :D 20:56:49 ehird, well try #launchpad and #ubuntu 20:56:54 I use gentoo and freebsd :P 20:57:07 yes, and gentoo provides bzr 0.17 if you recall 20:57:16 anything newer is unstable 20:57:27 so ubuntu has it better, and even theirs is too old :-P 20:57:49 ehird, also for cfunge you need boehm-gc 7.x, but it seems that is a problem on for example freebsd so I plan to allow a "memleak mode" where it uses libc malloc, and may leak a lot 20:58:03 memleak mode xD 20:58:14 AnMaster: you know one thing c++ got right was its scoped pointer stuff 20:58:24 ehird, and no way I'm doing c++ 20:58:28 my code is very very much C99 20:58:29 far more convenient than free() 20:58:33 but yeah. 20:58:37 unfortunately, there's the rest of c++ 20:58:38 :) 20:58:44 ehird, exactly 20:59:21 AnMaster: but even if you wanted something not to last the scope of a function 20:59:26 you can just do the bare { ... } trick 20:59:40 ehird, indeed I do that for non-pointers sometimes here 20:59:44 in my C code 20:59:51 basically I think C++'s lifetime&memory stuff is right, but the rest of it is sadly tremendously misguided 20:59:58 ehird, exactly 21:00:49 * Sgeo should probably learn C(?:\+\+)? sometime 21:01:00 ehird, anyway ask in #ubuntu or #launchpad about bzr version issues 21:01:12 ehird, can't you just select an unstable version for that single package? 21:01:38 it's very easy to mix and match in gentoo 21:02:02 Sgeo, that makes no sense if it is PCRE? 21:02:14 or is it some other regex dialect? 21:02:24 PCRE? I'm using the RE syntax that python uses 21:02:30 aha 21:02:45 Sgeo, PCRE = perl compatible regex 21:02:50 AnMaster: no such thing as 'unstable ubuntu' 21:02:51 well 21:02:55 the bleeding edge distro 21:02:56 : 21:02:57 ehird, oh yes there is 21:02:57 :) 21:02:58 http://docs.python.org/lib/re-syntax.html 21:02:59 AnMaster: sure it makes sense 21:03:02 ehird, all is 21:03:10 Deewiant, the ?: bit doesn't? 21:03:13 (?:...) 21:03:13 A non-grouping version of regular parentheses. Matches whatever regular expression is inside the parentheses, but the substring matched by the group cannot be retrieved after performing a match or referenced later in the pattern. 21:03:17 AnMaster: it's a PCRE extension 21:03:37 Deewiant, ok maybe, I use perl regex style with PCRE library normally 21:03:51 that is exactly a perl regex 21:03:55 fungy is a kinda sucky name 21:03:55 :p 21:03:56 hm 21:03:58 I guess it doesn't make a diff as to whether or not it's grouping, so C(\+\+)? 21:04:10 if you use just grep's normal regex or posix regex, it won't accept it 21:04:12 ehird, what about "kung funge"? 21:04:15 -!- oklokok has joined. 21:04:20 I should learn C(\+\+)? 21:04:29 ok 21:04:39 Sgeo, I suggest C 21:04:44 or objc maybe 21:04:49 C(?:[+]{2}|#)? 21:04:50 Why C as opposed to C++? 21:04:56 Deewiant, not # 21:04:56 AnMaster: please don't tell Sgeo to learn C/C++ 21:05:01 ehird, why? 21:05:09 everybody should know C... 21:05:10 Here comes the insults 21:05:13 AnMaster: i don't want to have to deal with the horror :( 21:05:18 ehird, err what? 21:05:19 Sgeo: you're quick on the uptake ;) 21:05:30 AnMaster: too much time seeing sgeo ask stuff about python.. 21:05:54 * oklokok hasn't seen him ask much about the language 21:06:06 ehird, look, I wrote horrible code to begin with, like using a static array instead of malloc that was very large (one of my first programs iirc) 21:06:36 today I write rather okish code (I hope) 21:06:37 :) 21:06:40 AnMaster: Sounds like Knuth 21:06:45 TeX uses no dynamic memory allocation 21:06:55 It has its own memory management routines based on static arrays 21:06:57 heh, it doesn't? 21:07:14 ehird, no, I didn't even do memory management 21:07:17 -!- RedDak has joined. 21:07:22 (It is also written in a restricted dialect of Pascal from the 70s with TeX around it using his WEB literate system. It looks ugly.) 21:07:26 ehird, but that's interesting why does TeX do it that way 21:07:37 (Also, it is always translated to dumb C before being compiled nowadays.) 21:07:38 AnMaster: portability 21:07:45 knuthtex was, after all, written in the 70s 21:08:00 ehird, err wait a sec, modern TeX doesn't do it that way do they? 21:08:00 doing that was the only way to get stability 21:08:03 you couldn't trust your system 21:08:07 like say tetex 21:08:12 or pdftex 21:08:15 AnMaster: Well TexLive and XeTeX and all are written in C (iirc) in a modern fashion 21:08:16 So no. 21:08:21 But knuthtex rawx0r my b0x0r 21:08:35 ehird, I still use tetex not texlive though 21:08:45 I use XeTeX. Mac OS X represent! 21:08:49 * AnMaster waits for it to become stable on gentoo before switching 21:08:53 Plus its font support is amazin'. 21:08:54 (hehehe) 21:08:55 Plus UNICODE 21:08:57 UNICOOOODE 21:09:36 ehird, well you still do it as \inf, or do you put a unicode infinite symbol in the latex file? 21:09:49 AnMaster: i think \inf just translates to the latter 21:10:00 mhm 21:10:02 ehird, do you think my code is horrendous? 21:10:13 Sgeo: how will you react if i say yes 21:10:24 heads will roll 21:10:27 I'd ask you to point out what exactly is bad about it 21:10:37 Sgeo: i guess you've never looked at it 21:11:10 Can you tell me what I could have done better? 21:11:23 * AnMaster watches with interest 21:11:38 Sgeo: ehird just told me the other day, that my oklotalk interp *made no sense*! 21:11:49 granted, it didn't, but i mean don't feel bad, he does that! :D 21:12:12 Sgeo: learnt python 21:12:13 :| 21:12:58 um, you're saying I did some unpythonic things in my code? Can you point them out? 21:13:23 Deewiant, btw, can't you use profiling data in D? 21:13:35 Sgeo: it looks horrendous 21:13:36 :| 21:13:38 Deewiant, and also, -fwhole-program? 21:13:48 for use with -combine 21:14:18 ehird, I think Sgeo want you to give some specific examples 21:14:24 where's sgeo's code? 21:14:26 like "like x" 21:14:32 lament, I wonder that too 21:14:43 http://trac2.assembla.com/psox/browser/trunk 21:14:49 http://trac2.assembla.com/psox/browser/trunk/impl 21:15:21 $blimps:{b|case $b.id$:$\n$ $b.code$$\n$ break\;};seperator="\n"}$ <-- epic 21:15:47 ehird, wtf is that 21:15:49 what the fuck is that 21:15:51 I don't know python 21:15:52 AnMaster: StringTemplate 21:15:54 and that's not python 21:15:55 :D 21:16:00 ehird, what is it then? 21:16:04 AnMaster: stringtemplate 21:16:10 ehird, and, what is that? 21:16:18 AnMaster cannot use google 21:16:20 it shoots him 21:16:44 ehird, examples? 21:16:47 ehird, look I tried to search with veronica on gopher and it didn't find it, what more did you expect? 21:16:48 * AnMaster runs 21:17:39 ehird, ok found it 21:17:40 hm 21:17:50 Sgeo, $blimps:{b|case $b.id$:$\n$ $b.code$$\n$ break\;};seperator="\n"}$ <-- epic 21:17:56 that was one I think 21:18:07 dude 21:18:09 that is unrelated to sgeo 21:18:15 :| 21:18:15 ah ok 21:18:19 why is everyone trying to link it to sgeo 21:18:20 hehe 21:18:38 ehird, you said his code was horrible, we asked for example, you posted that 21:18:39 that is why 21:18:52 AnMaster: what country do you live int? 21:18:53 *in 21:18:58 oklokok, Sweden, why? 21:20:08 ehird, examples? 21:20:43 "our page was down this morning" "really? i'm fairly sure it was just you" "a swedish guy couldn't access it either" 21:20:57 it may be it wasn you and that it wasn't this morning, but that's beside the point 21:21:26 oklokok, oh yes dns was down 21:21:56 why didn't you contact them when it was happening? 21:23:41 AnMaster: i tried contacting the guy responsible for contacting them ;) 21:23:59 ah 21:24:47 also, we don't really have that many visitors, and i can wait a few hours. 21:24:57 AnMaster: what is your fungespace? 21:25:14 a hash table? 21:25:14 ehird, yep that's how I do it atm 21:25:20 but it's hidden behind an abstraction 21:25:29 so can be replaced with something else if needed 21:25:31 ehird, no examples? 21:26:17 ehird, I already got an alternative 80x25 static array version (probably broken atm as it's unmaintaned 21:29:04 AnMaster: make your boehm less versionful 21:29:05 :( 21:29:21 ehird, indeed I know the issue, I plan to include the part I want 21:29:22 Version: 1:6.8-1ubuntu2 21:29:37 as it got issues installing it on freebsd too 21:29:44 and thats a platform I care about 21:29:51 so somehow, I plan to bundle parts of it 21:30:21 AnMaster: have you heard my WEB GARBAGE COLLECTION idea yet? 21:30:28 ehird, err what? 21:30:43 ehird, you got 64-bit? I can send you a static binary if you do 21:31:35 AnMaster: 32-bit 21:31:39 damn :/ 21:31:41 AnMaster: -m32 or something 21:31:49 AnMaster: also, this is the idea 21:31:56 ehird, I don't have boehm installed in 32-bit version 21:31:56 if you have a short urlservice and want to expire links eventually 21:31:56 ok 21:31:58 every gc, 21:32:06 you go through every page on the internet 21:32:15 ?? 21:32:16 and set the mark flag on every link you find to one of your links 21:32:22 then you delete all the unmarked ones. 21:32:24 XD XD XD XD XD 21:33:06 oh a garbage collector for internet? 21:33:36 ehird: sounds awesome 21:34:18 AnMaster: for a short url service 21:34:24 :-D 21:34:31 ehird, not doable however 21:34:33 in reality 21:34:42 AnMaster: sometimes i wonder if you're intentionally dnse 21:34:45 it's called a JOKE 21:35:00 ehird, "intentionally dnse" <-- nop, but intentionally dense, yes 21:36:09 ehird, anyway I'm working on a 32-bit binary for it 21:37:25 hmmmm why do all webservers suck 21:38:59 hmm 21:39:01 cherokee seems OK 21:39:36 ehird, lighttpd :) 21:39:45 AnMaster: sucks 21:39:48 the config gets all sprawling 21:39:53 hm 21:39:56 and its fastcgi 'lets try and spawn it myself' sucks 21:39:59 because itnever works 21:39:59 ehird, thttpd? 21:40:01 an dyou have to do it manually 21:40:17 AnMaster: latest release 2002. That's not a problem, though -- it's so rock solid. But it only supports cgi. 21:40:22 ehird, I blame ubuntu, fcgi "lets try and spawn it myself" works perfectly here 21:40:37 Hmm 21:40:40 no 21:40:41 ehird, err, thttpd doesn't do cgi does it? 21:40:43 AnMaster: It's a known problem 21:40:46 and yes thttpd does cgi 21:40:48 i think 21:40:57 AnMaster: besides i mainly use os x 21:40:59 also a problem there 21:41:07 ehird, I have used lighty on freebsd with fcgi spawning without problems 21:41:11 no problems whatsoever 21:41:19 hmmmm 21:41:23 i wonder if php can run as scgi 21:41:33 scgi&cherokee is the exact setup that nobody uses 21:41:37 and thus i should use it for eso-std.org 21:41:38 ehird, I use trac.fgci and php-fgci 21:41:39 err 21:41:41 fcgi 21:41:57 fcgi is kinda overcomplicated and stuff 21:42:01 the scgi spec is just a few screenfuls 21:42:59 ehird, ok I'm building a 32-bit boehm for you now 21:43:46 AnMaster: http://python.ca/scgi/protocol.txt 21:43:47 check it out 21:45:01 ok, but I don't care much 21:45:36 AnMaster: i hope that eso-std.org will be a mishmash of mostly python and some php 21:45:39 and hopefully all running on scgi 21:45:46 ok 21:46:11 AnMaster: including the most immediately useful to #esoteric things -- the pastebin and the QDB 21:46:18 the qdb will probably be the first thing going live 21:46:34 since i'm an elitist, i'll probably hack up my own qdb 21:47:15 AnMaster: the qdb will probably be prototyped on this box :-) 21:51:07 -!- oklokok has quit (Remote closed the connection). 21:51:20 -!- oklokok has joined. 21:55:10 ehird, http://rage.kuonet.org/~anmaster/cfunge/cfunge_r65_static_32_64.tar.bz2 21:55:17 one 32-bit and one 64-bit binary 21:55:31 32-bit is -march=pentium3 -mtune=k8 21:55:40 64-bit is -march=k8 22:00:15 ehird, does it work for you? 22:00:32 of course you would get best result optimizing for your arch 22:05:19 AnMaster: works 22:05:26 $ uname -a 22:05:26 Linux ehird-desktop 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux 22:05:29 there's optimizations tuffs 22:05:29 :P 22:05:46 ehird, ? 22:05:52 that doesn't say much 22:06:24 ehird, grep -E '(vendor|model|flags)' /proc/cpuinfo 22:06:25 :P 22:07:13 ehird, anyway here even the 32-bit one is real 0m0.096s 22:08:29 vendor_id : AuthenticAMD 22:08:29 model : 12 22:08:29 model name : AMD Sempron(tm) Processor 3100+ 22:08:29 flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow up ts fid vid ttp 22:08:30 and yes 22:08:31 ehird, of course I recommend building and profiling your own 22:08:33 i know this box suxx0r 22:08:37 its the crap one 22:08:37 :) 22:09:26 ehird, ah, could be much better then, --march=athlon-xp -msse2 I think 22:10:02 ehird, but I can't do the profiling bit really, it's individual based on your system 22:10:06 :/ 22:12:38 ehird, btw this is what I use: http://rafb.net/p/AeLEvc11.html 22:12:42 AnMaster: think of a funny name for the eso-std.org qdb's software. 22:13:23 -!- Corun has joined. 22:22:38 AnMaster: no? ;) 22:22:45 err? was busy 22:22:54 ehird, no I can't think of one 22:23:07 * AnMaster never really cared about qdbs 22:24:11 i mgiht call it 'busy' 22:24:13 :) 22:24:34 How do I make my code readable? 22:24:51 Sgeo, ask ehird 22:24:53 he knows 22:24:59 ehird? 22:42:47 -!- RedDak has quit (Remote closed the connection). 22:42:57 yeah he's bribed us all to refer you to him 22:43:04 whoops, did i say that? 22:43:32 hehe 22:45:08 who's alive and gives a rat's ass about the qdb? 22:45:35 huh it seems GCC 4.1 and later have an undocumented -O4 mode 22:45:46 interesting 22:45:48 * Slereah gives ehird a rat's ass. 22:45:58 You can do whatever you want with it. 22:46:01 No questions asked. 22:46:19 oklokok: /oklopol maybe i guess# 22:46:20 :P 22:46:22 Slereah: heh 22:46:25 * AnMaster notes it shaves another 0.08 seconds off runtime for mycology without breaking stuff 22:46:28 Deewiant, ^ 22:46:31 \o/ 22:46:32 :P:P 22:51:16 the ratsass quote database has a certain ring to it 22:51:39 although it might be taken 22:54:02 oerjan: better than 'busy' 22:54:22 slogan: 'gives a rats ass about your quotes' 22:54:52 oerjan: i am thinking of user stuff 22:54:59 oerjan: i am not sure whether users are really needed 22:55:01 beyond admins 22:55:46 oerjan: i mean, what can you display about a quote submitter 22:55:49 number of quotes 22:55:51 that's about it 22:55:59 and if you store submitter *name* optionally, you can still do that, really 22:57:25 oerjan: and you don't care. presumably. 23:00:35 ehird, how goes your turky bomb interpreter? 23:00:45 * oerjan was busy in #haskell 23:01:37 oerjan: well, evidently you're not now :P 23:01:53 although i must admit i don't care terribly about the details 23:02:04 :) 23:08:11 oerjan: start caring! ;) 23:08:41 * oerjan thiddles his fumbs 23:08:54 NAOO 23:09:00 Slereah: okay, you then :P 23:09:13 D: 23:10:16 Slereah, D: ? it's a variant of D? 23:10:19 * AnMaster run 23:10:20 runs* 23:10:52 Slereah: OH COME ON <_< 23:12:44 Slereah: very simple question: are users needed apart from admins (i.e. you can log in and submit a quote), or: just have an optional 'submitter' name field, OR no submitter info 23:12:53 that affects the user experience 23:12:56 so you must be interested 23:12:56 <_< 23:13:34 :S 23:13:39 Well, I usually don't care about the name of the submitter. 23:14:03 And user contributing is a good idea 23:14:04 Slereah: OPINION NOTED 23:14:08 hm wait 23:14:11 when user contributing 23:14:13 i meant: 23:14:13 strange bug.... how is it possible to have append/3 member/3 etc.. permutation([a,b], X) work but not permutation([a,b,c], Y). %?? 23:14:15 user accounts 23:14:21 log in and submit 23:14:27 Nah. 23:14:31 'user submitting' how you seem to mean it is just the standard 'submit' page 23:14:34 which is just a text box 23:14:38 oh 23:14:40 and a last of tags 23:14:45 and maybe a note fiel 23:14:45 d 23:14:46 It's not like we risk much trolling 23:14:54 Are we making custom qdb software? :( 23:14:55 Slereah: quite true 23:14:58 Sgeo: yes, yes we are 23:15:01 WHY? 23:15:19 because there's none written in python 23:15:25 & eso-std.org is going to run on python 23:15:31 python????? 23:15:39 -!- ais523 has joined. 23:15:44 It can't be a hybrid site 23:15:45 ? 23:15:47 Hi ais523 23:15:55 Hi Sgeo 23:16:02 Sgeo: i don't want it to be :P 23:16:04 ais523: hey there 23:16:08 faxathisia: convenient. 23:16:12 Hi ehird, as well 23:16:24 ehird, if it's python you can get Sgeo to help 23:16:25 :D 23:16:27 * AnMaster runs 23:16:29 ais523: the eso-std.org QDB is being the first part to be made (judged so because it's the most pointless part, thus most likely to be used by #esotericians) 23:16:32 AnMaster: hee 23:16:36 spot the bug http://rafb.net/p/aLPQ0C26.txt :( 23:16:40 qdb? 23:16:50 ais523: quote data base 23:16:55 ehird, write it in befunge 23:17:01 with SOCK extension 23:17:04 since #esoteric is far too nsfw to keep off the web a lot of the time 23:17:04 :P 23:17:06 use PSOX 23:17:13 or maybe make a SCGI extension 23:17:29 faxathisia, nah, fast c based interpreter for befunge :D 23:17:45 I really should work on b1 at some point 23:17:52 FILE, DATA and SCGI, the first extension already exist 23:17:53 hmm 23:17:59 rash just has a text field :) 23:17:59 the second would be sqlite interface 23:18:02 or some other databse 23:18:02 hmm 23:18:05 database* 23:18:05 will tags on quotes really be useful? 23:18:08 i doubt it 23:18:12 but i'd like the 'note' field 23:18:16 just for, well, adding a note 23:18:26 also i hope to make all the timestamp removal etc. automatic 23:18:30 unless explicitly disabled 23:18:33 ehird look at my horrible code 23:19:12 ehird: http://pastebin.ca/943024 http://pastebin.ca/943026 23:19:22 (where I'm at with Underlambda ATM) 23:19:50 ais523: my god, you are a perlist 23:19:52 truly :) 23:20:15 well 23:20:16 not really 23:20:17 ...but the spec's based on rewrite rules.. 23:20:18 you use the ($$) stuff 23:20:30 ais523: i was thinking more things like $" 23:20:30 :D 23:20:46 ehird: the sort of thing that confuses pastebin.ca's syntax higlighting 23:21:07 yes 23:21:08 never seen a good perl syntax hilighter 23:21:08 hmm 23:21:18 bash.org etc seem to score 'up' and 'down' differently 23:21:21 faxathisia: Kate's is pretty good 23:21:22 instead of one combined score 23:21:23 good/bad? 23:21:35 seems kinda overcomplicated to me 23:21:38 ais523, what are these tires? 23:21:41 but maybe it makes stuff more balanced 23:21:49 ais523, I mean, tiers 23:21:56 AnMaster: the idea is that an implementation can implement more or less of the spec 23:22:04 the lower-numbered tiers are the ones it's more important to implement natively 23:22:07 hm 23:22:19 1 and 1a are TC and Brainfuck-complete, respectively, so you can compile anything into those in theory 23:22:41 but the stuff in tier 2 requires bundling an interp with the program to compile into Tier 1, practically speaking 23:22:42 ah 23:22:51 the stuff in tier 3 requires you to use reflection on the data structures 23:22:56 tier 5 requires a preprocessor 23:23:03 what about tier 4? 23:23:16 and tier 4 contains serious optimisations without which the language is unusable 23:23:31 (e.g. it allows an interpreter to make addition O(1) rather than O(n)) 23:23:34 hm 23:23:36 (by special-casing p) 23:23:43 i think the qdb may be the first unicode aware one 23:23:51 ais523, can you stick tier 4 on tier 2? 23:24:01 what do you mean by that? 23:24:06 or does it need tier 3 as well then? 23:24:11 it's possible to compile a tier 4 program into a tier 2 program, quite easily in fact 23:24:21 some of the tiers need some lower-numbered ones, but they're mostly independent 23:24:25 hmm 23:24:28 possibly last qdb question: 23:24:30 do we need approval? 23:24:31 or.. 23:24:34 I suspect I'll use < and > a lot later on because they're pretty useful 23:24:45 ehird: it's a publically logged channel, you could always link to the logs 23:24:49 if you couldn't get approval 23:25:14 ehird, one question: why do we need a qdb? 23:25:23 AnMaster: everyone needs a qdb 23:25:26 they just don't know it yet 23:25:27 no? 23:25:31 -_- 23:25:35 -!- Corun has quit ("Leaving"). 23:26:04 ais523: approval as in 'admin approves all quotes' 23:26:06 every site has it 23:26:20 AnMaster: because too many ridiculous things are said here. obviously. :) 23:26:38 ehird: either manual approval, or just do it wiki-style by deleting quotes that are voted down too much 23:28:32 ais523: i think manual approval 23:28:39 + maybe later a report button 23:28:51 basically, when an admin is logged in, each quote will have a delete button 23:28:56 and there'll also be two extra pages 23:29:01 'awaiting approval' 23:29:08 which will contain loads of quotes, and a 'yep' and 'nope' 23:29:13 and a 'reports page' which will be the same 23:29:28 very simple 23:31:14 AnMaster: another interesting point in the tiering system is that with different definitions of the commands (note that the 'as if' rule exists in Underlambda, although I haven't stated that explicitly yet), tier 5 plus () and ^ is Turing complete 23:31:21 because you can embed lambda calculus in it 23:31:38 (the rules with / are basically rewrite rules for translating lambdas into tier 1) 23:32:32 (it took me ages to get them working) 23:32:37 (and I meant \ not /) 23:34:14 whee 23:34:15 all the models are done 23:34:17 for the qdb 23:34:20 apart from reports, which can come later 23:34:43 ais523, hm 23:41:26 -!- algol has joined. 23:42:02 -!- algol has quit (Client Quit). 23:42:11 you know 23:42:21 naming a quote system ratsass after one line someone said in irc is probably not a good idea 23:43:46 stupid infinite stack of zeros in befunge 23:44:19 lament: I was wondering about whether to use an infinite stack of ones in Underlambda 23:44:24 lament: are you doing stack elimination? that's coooool 23:44:38 but I decided to only implement them for the > instruction 23:44:50 ehird: the infinite zeros thing is annoying 23:44:57 because the number of stack elements is otherwise too useful to discard like that 23:46:05 for instance, the only way to determine the length of a list within the tiers so far is to make a continuation and store it somewhere safe, then replace the stack with your list, pop it until it's empty, count how many times you have to do that, and then use your continuation to restore the original program context 23:48:04 there'll be an optimised command to do it in one of the later tiers, which I'll probably number 6 or 7 23:49:02 (BTW, there should be division in tier 4 as well, but I haven't yet figured out the rewrite rule to express it; most likely it could just be done by translating Church division from lambda calculus and special-casing 0 (I want x/0 to equal 0 in Underlambda so that 1/x = 1 iff x=1, 0 otherwise)) 23:50:17 ais523: make x/0 return a new type 23:50:19 the DivideZero type 23:50:24 with x as its internal data 23:50:24 :D 23:50:26 * lament hates cpressey for the infinite zeros thing 23:50:51 +1 would result in a special object saying that its that dividezero+1 23:50:53 hehe 23:50:55 how am i supposed to efficiently compile befunge when it has to check the stack every time! 23:51:00 equality would work too 23:51:00 so hah 23:51:04 and printing would too 23:51:25 lament: you think that wasn't intentional 23:51:49 it's only a minor annoyance, it doesn't actually make it much harder to compile, just more annoying 23:51:55 it's p that makes it hard to compile :) 23:53:06 lament, there are befunge programs that copy themself around fungespace 23:53:17 and delete the old copies of themselves 23:53:53 that's fine 23:56:21 ehird: the exceptional conditions for maths operations in Underlambda are based on what has the most uses for other purposes 23:56:34 so subtraction saturates at 0 so it can be used as greater-than 23:56:38 and likewise, 0^0 = 1 23:59:00 ais523: butvbut :(# 23:59:23 i want my divzero type 23:59:47 ehird: it isn't typed anyway, numbers are just Church numerals 2008-03-15: 00:00:18 although I strongly suggest that numbers are optimised; that's possible in Underlambda because there's no way to distinguish two data if they do the same thing in all cases 00:00:22 (and all data are functions) 00:00:58 ais523: underlambda->c compiler: dibs on it 00:01:13 ehird: it's specifically designed to be compilable 00:01:21 and also so that Unlambda can be compiled into it 00:01:27 thus allowing an Unlambda -> C compiler 00:01:33 dibbsss 00:01:40 if you can handle the C command, you're well on your way to writing the compiler 00:02:00 (it looks so simple on the rewrite rule, but I put a lot of thought into that one; it can be used to implement call/cc, for instance) 00:02:28 cool 00:02:40 include landarins J 00:02:43 :D 00:03:42 ehird: what's that? 00:04:51 ais523: hard to explakin 00:05:00 c/cc on steroids 00:05:31 ehird: C captures the entire state of the program, in such a way that it can be edited to some extent (but not enough to make compilation impossible) and then run 00:05:54 you can use it to implement call/cc by simply editing the result of C a bit and then using it as your continuation 00:06:20 it would be great if it could implement J too, whatever it is 00:07:09 ais523: does it have variables? 00:07:20 ehird: not exactly 00:07:25 but there are various ways to simulate them 00:07:30 :/ 00:07:57 For instance, all Brainfuck programs with no comments become legal Underlambda programs if you add the magic line and | at the end 00:08:07 although I haven't put [],. in the spec yet 00:10:23 the stack is good to use for temporary variables 00:10:27 and you can use lambdas as well 00:11:00 I might also implement some sort of 'variable storage' at some point which allows you to store and retrieve functions in a hash table, exactly like global variables work in imperative languages 00:11:13 and I might make each of them a STASH like in INTERCAL so you could have scoping 00:11:23 if I do that, it would probably go in Tier 3 00:22:12 ais523: I feel like spceifying a minimal concatenative language based on rewrites. 00:22:13 So I will. 00:23:06 ais523: Hmm 00:23:09 What about one with no [...]? 00:23:18 The only way to get a quotation is 'dei' 00:23:21 (de-i) 00:23:31 which [...]s the last execution step 00:23:37 but of course you have to execute it first 00:23:39 making stuff tricky 00:24:10 -!- BMeph has joined. 00:24:25 [...] is what makes a language concatenative, generally speaking 00:24:34 although I suppose you might just about be able to create one without it 00:24:39 ais523: well, what i mean is 00:24:45 foo dei => [foo] 00:24:47 but it would probably end up just being lambda calculus or something like that 00:24:49 but since 'foo' executes first... 00:24:54 so like 00:25:02 2 dup dei => 2 2 [dup] 00:25:08 so you'd have to do 00:25:16 2 dup dei swap drop => 2 [dup] 00:25:30 dup a dei doo dah 00:26:04 Whatcha talking about? 00:26:18 Factor? 00:26:23 Deformative: no 00:26:35 Then what? 00:26:43 this 00:27:28 * Deformative is waiting. 00:28:42 ehird: so dei's like ' in Underlambda, but its argument gets evaluated anyway? 00:28:56 hmm... manipulating deis would be fun 00:29:00 ais523: pretty much 00:29:06 2 dei dei swap drop => [dei] 00:29:09 basically, it's like this: 00:29:18 after each word is executed, you save it in the 'last' variable 00:29:28 'dei' just pushes a quotation of the last word 00:29:34 you'd also have 'compose' of course 00:29:36 so: 00:29:38 ehird: there'd be no way to get [quit] 00:29:48 ais523: but of course 00:30:06 2 dei dup dei compose drop drop => [2 dup] 00:30:09 being able to write (Q) (or 'Q) is needed for Underlambda to be able to do call/cc 00:30:13 cooooooooooool :D 00:30:21 ais523: meh, i'm thinking about it in a purely functional manner right now 00:30:35 Q and A are sort of opposites in Underlambda 00:30:42 Q deletes the program, A deletes the stack 00:30:44 ais523: like my idea though? :D 00:30:51 ehird: it's interesting 00:31:03 not sure it'll lead to a very usable language, but somehow I don't think that was your aim 00:31:19 What language has [...]? I thought I came up with that all on my own. 00:31:20 Heh. 00:33:06 ais523: dips rewrite rule is simple :D 00:33:07 [X] Y dip => X Y 00:33:21 ehird: eys 00:33:24 s/eys/yes/ 00:33:27 dip is _ in Underlambda 00:33:39 but I haven't written it into the spec yet, or the reference interp, so it only exists in my head 00:34:06 you can implement _ as ~a*^ 00:34:59 so what's simpler? _ => ~a*^ or (x)(y)_ => y(x) 00:35:24 (are the X and Y the wrong way around in your rewrite rule, actually?) 00:35:56 and no, ais523 00:35:57 it's ... TOP 00:36:00 err 00:36:00 wait 00:36:02 you're right 00:36:22 X [Y] dip => Y X 00:36:45 I have a vision of somewhere (maybe Tier 5) of being able to write your own rewrite rules at the start of the program, sort of like Lisp macros 00:37:38 ais523: wrote a spec for my thing 00:37:43 ais523: also, have user-definable synta 00:37:43 x 00:37:43 :D 00:37:57 ehird: that's pretty much what that rule would do 00:37:59 http://pastebin.ca/943111 00:38:08 i am going to work on a factorial 00:38:11 err wait 00:38:13 i need compose 00:38:17 ais523: btw 00:38:21 [X] dei => http://en.wikipedia.org/wiki/Special:Search?go=Go&search=X 00:38:24 err. 00:38:25 well 00:38:25 :D 00:38:29 [X] dei => [ [X] ] 00:38:34 but 00:38:36 you can't do that literally 00:38:36 so. 00:38:50 so i need a special 'curry; 00:38:55 are you implementing wrap? 00:39:01 ais523: guess so 00:39:01 heh 00:39:31 ais523: http://pastebin.ca/943115 00:39:32 new spec 00:39:40 ehird: it looks like you're implementing negative numbers. Stop it. 00:40:03 Negative numbers don't exist except in reversible languages, because you can't do something a negative number of times 00:40:03 ais523: haha, why 00:40:03 :P 00:40:08 hmm 00:40:09 true i guess.. 00:40:16 ais523: but they're just atoms 00:40:20 and there's no "do n times" thingy 00:40:39 ehird: in Underlambda the number n is the function that transforms a function into that function composed with itself n times 00:40:43 ais523: not in this. 00:40:49 ais523: anyway, hm, recursion is hard with this language 00:40:51 maybe impossible.. 00:40:57 since you have to do it to dei it 00:40:57 ehird: but then you have more than one data type 00:41:04 ehird: what about implementing sii? 00:41:05 * ehird adds a 'while' to simplify things 00:41:08 ais523: ooh, good idea 00:41:40 ais523: wait 00:41:42 what would that do 00:41:42 :| 00:41:50 hm 00:41:51 [X] sii => [X] X 00:41:54 it's :^ in Underlambda/Underload 00:42:01 so [X] sii => [X] X 00:42:05 heh, snap 00:42:11 ais523: maybe I should do Y 00:42:11 :D 00:42:15 wait, impossible 00:42:16 xD 00:42:52 ais523: dup drop dei => [drop] 00:42:53 useful 00:43:10 ehird: all reversible combinators can be deid easily 00:43:31 ais523: yeah 00:43:48 but i'm having trouble dei'ing [1 - swap sii] 00:43:52 for certain values of reversible 00:43:54 i'm trying to implement this 00:44:04 : make0 dup 0 = [drop] [1 - make0] if ; 00:44:07 for instance, a 'invert order of stack' combinator would be hard to dei 00:44:19 because your [invertstack] would end up on the /bottom/ of the stack 00:45:03 ais523: invertstack dei dup dip 00:45:05 wait, no 00:45:08 you'd need another dip 00:45:09 arrgh 00:45:42 the problem is, to dip around the invertstack, you need a dei'd invertstack, so you have a chicken-and-egg problem 00:45:49 ais523: any ideas on my make0 btw? 00:46:04 you have to write the function, remove the recursion, dei the whole thing, then sii it i guess 00:46:07 no, I'm trying to concentrate on something else in RL 00:46:12 but i'm stuck on writing the function :) 00:46:24 ais523: think this is TC? 00:46:24 i don;t 00:46:44 ehird: it's probably TC but probably hard to write programs in 00:46:55 ais523: probably tc? really? 00:46:59 i wouldn't think s 00:46:59 o 00:47:00 if you can implement s, k, and apply, you're done, after all 00:50:53 I think it's possible to implement s and k, and i=apply, but you'd have to write the program in the first place using deis 00:51:44 hmm... it's possible to get [wrap], [drop], [dup], [swap], [i], and [compose] easily enough 00:51:55 so all you have to do is get some TC Underload program 00:52:23 then flatten it so that it never quotes more than one combinator in a row (which is easy with a few rewrite rules) 00:52:35 then just dei each of the combinators, and you're done 00:52:41 e.g. (:^):^ 00:52:58 would be [dup] [i] compose wrap [dup] compose [i] compose 00:53:25 and [dup] and [i] are both easy to dei onto the stack 00:53:34 so the language is TC, I've just informally proved it 00:54:18 maybe I'll write an Underload-minus-S (i.e. Underlambda Tier 1) to your language compiler, it wouldn't be too hard 01:00:07 ais523: interesting 01:00:07 :) 01:02:57 ehird: http://pastebin.ca/943140 01:03:21 a 'flattener' for your language that takes a program using [] and Underlambda-tier-1 combinators and transfers it into one using dei 01:03:22 -!- timotiis has quit ("leaving"). 01:04:24 ais523: woo 01:04:24 :D 01:04:33 see, I told you it was TC 01:04:46 ais523: I think that could be regexpable actually 01:04:46 :P 01:04:54 (caveat: you need at least one element on the stack to start with unless it magically fills itself, but you could just write 0) 01:05:08 ehird: using recursive regexen (like Python and Perl5.10 have), yes 01:05:12 otherwise, no 01:05:36 -!- ais523 has quit ("it's past midnight"). 01:12:19 -!- oerjan has quit ("Good night"). 01:59:49 well, bye everyone for today 01:59:54 see you all tomorrow :) 02:00:02 -!- ehird has quit ("Konversation terminated!"). 02:24:40 -!- Deformati has quit (SendQ exceeded). 02:45:27 -!- GregorR-L has joined. 02:50:28 Fastest way to get the integral square root of an integer with no FPU? 02:51:55 -!- Tritonio_ has joined. 02:57:34 binary search? 02:57:41 dunno 02:57:50 lotsa ways 02:57:53 probably just iterate newtons methods 02:57:57 -s 03:02:46 -!- Corun has joined. 03:04:19 -!- calamari has joined. 03:19:13 -!- Tritonio_ has quit (Remote closed the connection). 03:51:27 -!- Corun has quit (Read error: 110 (Connection timed out)). 05:01:11 * oklokok made his first thue program! 05:01:15 ski interp 05:01:30 not sure it works yet, just tried some simple examples 05:11:49 `````s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk``s`kki``s`kk`ki``s``s`ks``s`kk`kk`kiski evaluates correctly, i'm convinced 05:11:52 :D 05:25:35 -!- GregorR-L has quit ("Leaving"). 05:40:20 http://www.vjn.fi/oklopol/thue.txt 05:40:50 i'm fairly sure that's all i'm ever going to do with thue without code generation :D 05:42:01 perhaps i should do that brainfuck self interp 06:00:42 http://video.google.com/videoplay?docid=-7974828993993586658 06:03:02 * pikhq performed that earlier today (not that recording, though) 06:07:19 oklokok, in PSOX? 06:07:33 anyways, g'night 06:07:38 Goodnight all! 06:08:40 -!- Sgeo has quit ("Ex-Chat"). 06:22:15 -!- calamari has quit ("Leaving"). 06:57:19 -!- BlackMeph has joined. 06:57:23 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 06:57:32 -!- BlackMeph has changed nick to BMeph. 07:02:01 -!- BlackMeph has joined. 07:03:57 -!- BMeph69 has joined. 07:13:31 -!- adu has joined. 07:16:22 -!- BMeph has quit (Connection timed out). 07:20:30 -!- oklokok has quit (Remote closed the connection). 07:20:58 -!- oklokok has joined. 07:21:01 -!- BlackMeph has quit (Read error: 110 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:24:46 -!- adu has quit (Remote closed the connection). 10:17:24 Deewiant, what is this from strn.d about: static assert (cell.sizeof == 4 && cell.min < 0, "Need more than 11 chars here"); 10:35:38 real 0m0.085s 11:00:24 -!- sebbu2 has joined. 11:08:12 -!- sebbu has quit (Read error: 110 (Connection timed out)). 11:08:12 -!- sebbu2 has changed nick to sebbu. 11:14:13 AnMaster: it probably (I don't have the code here, at school) uses a static buffer of 11 chars 11:14:27 AnMaster: which means that if you have a 64-bit int, for instance, it won't fit. 11:14:35 ah I see 11:14:44 * AnMaster is wrestling with cmake atm 11:15:36 ah that's fixed 11:15:52 -!- faxathisia has left (?). 11:16:32 Deewiant, now cfunge compiles with no warnings here, using either 32-bit or 64-bit data type, I got no idea if that is also the case on 32-bit platforms. I still get a single warning when using -DNDEBUG however 11:18:19 wtf *looks again* 11:26:51 -!- oklokok has quit (Remote closed the connection). 11:37:34 -!- oklokok has joined. 11:42:50 Deewiant, I admit, doing it in D is simpler: That the size of the stack stack is 0 11:42:51 BAD: should be at least 1, assuming 1 11:42:51 That the stack sizes are [ 41 ] from top to bottom 11:42:51 That the command-line arguments were: [ "â–’" "/mycology/mycology.b98" ] 11:42:54 * AnMaster debugs 11:43:39 now, everything pushed on stack seems ok, so would be useful to have ccbi print each instruction as it runs it so I can compare 11:57:42 -!- ais523 has joined. 12:37:10 -!- Hiato has joined. 12:44:31 Deewiant, the stack matches for ccbi and cfunge in the interesting part, so that's not the problem, but they show different output for time, up to and including date everything is fine in mycology 12:44:59 after that y output is more or less garbled for cfunge, until environment variables 12:45:02 * AnMaster wonders wtf 12:45:46 AnMaster: is it possible that you're pushing the wrong number of elements onto the stack? 12:46:16 that way all the ouput would be displayed in the wrong section in the wrong format, leading to that sort of problem 12:46:18 ais523, I dumped stack from both ccbi and cfunge, they match in size for elements 12:46:35 up to, and past the section we are discussing 12:46:38 are any of the elements themselves a count of elements? 12:47:30 ais523, well yes, items of stack and such, but I verified those, the only ones that differ are handprint, interpreter version, exact time, and supported features 12:48:21 wtf 12:48:47 ais523, when I build with -fstack-protector-all it works, when I don't it fails, and this is -O0, so it isn't due to optimizing too much 12:49:42 actually now it works without -fstack-protector-all too, but I did make clean before, so it can't be due to broken build before 12:49:43 w t f 12:50:27 AnMaster: you might have run an old executable by mistake. I've been doing that quite a lot recently due to cross-compiling and transferring the resulting executable from computer to computer by USB stick 12:50:46 ais523, err, I didn't do that, I use cmake, and I ran make 12:50:54 and I run on same computer 12:51:20 OK, that makes it substantiatlly harder to get things wrong 12:51:27 ais523, indeed 12:51:37 and now it refuse to fail for the moment 12:51:55 odd thing is, I had about same problem yesterday, for a while, then it started working again 12:52:03 * AnMaster wonders if he maybe should run memcheck 12:52:11 or memtest or whatever it is called 12:52:20 it's the default on valgrind, anyway 12:52:31 ais523, no I mean on computer memory 12:52:35 thing you boot into 12:52:48 I think your memory is very unlikely to be the problem 12:52:55 ais523, and I did do valgrind on the failing binary before, it reported nothing 12:53:03 -!- Hiato has left (?). 12:53:07 some memory leaks yes, because I had to build without garbage collector 12:53:09 but that was it 12:53:15 no invalid reads or such 12:54:49 ais523, anyway it did have some issue before, because it reported random garbage in the first field of command line arguments, like: 12:55:04 That the command-line arguments were: [ "" "mycology/mycology.b98" ] 12:55:59 * AnMaster checks one thing 12:56:05 AnMaster: most likely the stack somehow got out of sync 12:56:46 as it first failed at time value, *tries to make it push same time value as before to see what happens* 12:57:11 hmm... maybe it's a current-time-dependent error, that would explain why it suddenly started working 12:57:11 ais523, hah, when I push old time value it fails 12:57:17 StackPush((FUNGEDATATYPE)668196, pushStack); 12:57:20 that one breaks it 12:57:27 what type is FUNGEDATATYPE? 12:57:45 ais523, int_fast64_t, depending on compile time options 12:57:54 the normal line is: 12:58:00 StackPush((FUNGEDATATYPE)(curTime.tm_year * 256 * 256 + (curTime.tm_mon + 1) * 256 + curTime.tm_mday), pushStack); 12:58:25 where curTime is returned from gmtime 12:58:35 * ais523 is amused at seeing the int_fast64_t; I wonder how long it'll be before there's a computer that's faster at >64-bit numbers than 64-bit numbers? 12:58:50 ais523, heheh :) 12:58:54 128-bit anyone? 12:59:05 actually gcc got __int128_t if you want to try 12:59:09 horribly slow here 12:59:29 ais523, anyway it can be set to use int32_t or int_fast64_t 12:59:30 :) 12:59:34 cfunge that is 13:00:18 actually the line I meant above that was normal push was: StackPush((FUNGEDATATYPE)(curTime.tm_hour * 256 * 256 + curTime.tm_min * 256 + curTime.tm_sec), pushStack); 13:00:30 copied wrong one first 13:03:28 ok... this doesn't make any sese 13:03:31 sense* 13:03:57 what data type is curTime.tm_hour? 13:03:58 11 * 256 * 256 = 720896 13:04:03 ais523, int, so 32-bit 13:04:07 is it possibly overflowing before you cast it to FUNGEDATATYPE? 13:04:10 668196 < 720896 13:04:17 2^32 > 720896 13:04:19 no, can't be in this case 13:04:23 should not overflow? 13:04:37 * ais523 has been working on a 16-bit embedded system, and as a result is somewhat jumpy about overflows 13:05:07 ais523, well man gmtime says it's int 13:05:17 * AnMaster checks header file 13:05:37 header file agrees 13:05:46 so it's not an overflow, at least not there... 13:05:56 what's 668196 in hex? 13:06:16 ~$ printf %x\\n $((668196)) 13:06:16 a3224 13:06:18 $ echo $(( 0x668196 )) 13:06:18 6717846 13:06:18 ? 13:06:29 AnMaster: you converted in the wrong direction 13:06:35 ah right 13:06:36 true 13:06:54 ais523, but 668196 is value I printed using %d 13:07:00 I don't see anything particularly unusuable about that bit pattern 13:07:01 in my stack dump routine 13:07:22 (I was wondering if it ended with lots of 0s or something) 13:09:39 ais523, how do you find out the hours, minutes and seconds from 668196 13:09:43 * AnMaster can't think of how atm 13:10:04 hour = 668196 / 65536 13:10:13 minute = (668196 / 256) % 256 13:10:21 second = (668196) % 356 13:10:35 % 356? 13:10:36 s/356/256/ 13:10:50 10:50:36 13:11:01 yep that matches when I dumped stack I think 13:11:01 or you could just look at the hex output; the hour is 0xa, the minute is 0x32, the second is 0x24 13:11:33 hmm... does ccbi have the same problem when run at that precise time? 13:11:36 or actually 11:50:36 because I found out hour was off by one 13:11:40 if so it's likely a bug in Mycology 13:11:43 ais523, hard to check :/ 13:12:02 agreed 13:12:20 I run some time dependant stuff that would scream is I set clock back, and I can't compile ccbi myself 13:12:24 I use binary from Deewiant 13:12:43 so checking will be hard, then 13:12:49 ais523, yep 13:13:19 Deewiant, can you check what happens when you push 668196 as time in ccbi? ie. hard code that value in and test what happens 13:13:25 or rather 13:13:32 hard code the value of 10:50:36 13:14:18 ais523, now it correctly says: 13:14:20 That the time is 13 : 14 : 05 13:14:43 local time hm 13:14:56 * AnMaster changes to UTC 13:17:08 -!- olsner has joined. 13:24:29 ais523, btw I'm happy there isn't any way to get phase of moon in befunge XD 13:24:39 (unless you calculate it from date) 13:24:50 AnMaster: there should be a fingerprint for that 13:24:53 also the date of Easter 13:25:25 ais523, god, that's complicated, well in that case we should do non-western holidays too 13:25:55 * ais523 has an Easter-calculating algorithm in C which they translated from an example in an Algol-68 textbook 13:25:57 like say, Ramadan or whatever it is the Muslims do (of course it would be classed as terrorist software in US if it did that)! 13:26:58 maybe also convert between calendars of different cultures 13:27:07 hm 13:27:21 ais523, year of the pig? 13:27:39 do the Western zodiac as well in that case 13:27:50 oh, and also convert to sidereal and Darian just in case 13:27:50 such a fingerprint would get extremely complex 13:28:00 ais523, what about Discordian dates? 13:28:23 just do as many calendary things as you can until you run out of capital letters 13:28:26 you know there is some unix program for that called ddate 13:29:02 ais523, nah, it could be C for convert, that pops type of calender to convert from, type to convert to and date 13:29:05 all in one 13:29:34 $ ddate 13:29:34 Today is Prickle-Prickle, the 1st day of Discord in the YOLD 3174 13:29:59 * AnMaster wonder why someone added that to util-linux 13:30:04 sys-apps/util-linux (/usr/bin/ddate) 13:30:39 that's like me wondering why factor is in GNU coreutils; I think there must be more to it than ehird`'s claim that it's because GNU is horribly bloated 13:30:51 at least tsort makes some kind of sense 13:31:21 ais523, well no ddate on my freebsd :) 13:31:58 factor: `42233453345345233256' is too large :/ 13:48:13 $ factor 9223372036854775807 13:48:13 9223372036854775807: 7 7 73 127 337 92737 649657 13:48:13 $ factor 9223372036854775806 13:48:13 9223372036854775806: 2 3 715827883 2147483647 13:48:34 so it can handle signed 64-bit ints 13:48:48 at least in the implementation I have here 13:48:54 still no idea why it's in coreutils, though 14:26:10 Deewiant, btw I'm down around 0.78 seconds when I disable boehm-gc, also currently just 8 bytes leaked memory without boehm-gc, though there is a lot valgrind says is "still reachable" 14:39:21 (which means that there's a pointer to it available somewhere, but that you don't necessarily know you're going to have to free) 14:50:08 -!- Corun has joined. 14:56:57 ais523, indeed 14:57:06 and quite a few "possibly lost" 14:57:14 meaning, pointer to somewhere inside object 14:57:29 reason is that I allocate data cells for fungespace in chunks of 512 cells 14:57:57 so that *will* be a memory leak if there is no cell referenced inside such a block, when not using a garbage collector 15:02:54 -!- oklopol has quit (Read error: 110 (Connection timed out)). 15:16:52 -!- timotiis has joined. 15:58:16 Deewiant, apart from the time issue mentioned above, I got another question, why does it seem that ccbi's SUBR only allocate a call stack of 8 calls? 16:09:48 -!- Sgeo has joined. 16:18:19 Deewiant, AAAAAAAAAAAAAAAAARGH! at rcfugne fingerprint docs, and I fail to understand wtf you are doing in subr.d 16:23:46 AnMaster: fixed the bug with mycology's time output 16:23:59 ah what was the issue? 16:24:20 a 'a' instead of a '9' lead to the leading zero 16:24:24 and then there was a misalignment 16:24:29 should have hit a space but it hit a 'y' 16:24:31 ah 16:25:17 and subr, what about it 16:25:38 the call stack is initialized to 8, yes. but it can grow. 16:25:43 ah right 16:25:44 (first two lines of push) 16:25:59 Deewiant, why not create a normal temp stack? 16:26:13 'normal'? 16:26:20 it needs to be persistent, no? 16:26:21 err don't you have some stack class? 16:26:34 Deewiant, it does? anyway is it local to ip or not? 16:26:40 the D stdlibs don't have any containers like in C++ 16:26:46 not at the time of writing, anyway 16:26:48 I think they might nowadays 16:27:12 * AnMaster points to his stack struct 16:27:27 but anyhoo, sure I've got the stack class 16:27:35 Deewiant, but anyway should it be local to ip, and, what do you mean persistent? 16:27:40 but it's different 16:27:51 'cause this one doesn't pop zero when it's empty, for instance. 16:28:00 hm true 16:28:04 I don't know, I can't remember what the fingerprint does. 16:28:17 Deewiant, RC/Funge subroutine 16:28:26 call, jump, ret. 16:28:43 hmm, maybe it should be local to IP. 16:28:44 see ret, the return address is on the main stack, no? 16:29:02 so call stack should be local to function? 16:29:03 yeah. 16:29:33 to function? to IP, certainly, I think. 16:29:46 although strictly speaking these are all UNDEF when it comes to multiple IPs. 16:30:01 since RC/Funge-98's docs suck and it doesn't implement concurrency. 16:30:22 err, as far as I can see, you don't need to store call stack, as you get return address from ip's stack 16:30:54 look at what's happening 16:30:58 in call(), it pops n 16:31:09 and then it moves n cells from IP's stack to the callstack 16:31:17 in ret, it puts them back 16:31:28 or wait, what? 16:32:03 it pops n, then it puts the ret address, then it puts them back again. 16:32:15 I guess you're right. 16:32:31 so it's just an optimization to avoid needless heap activity. 16:32:39 huh, auto is a C keyword!? 16:32:44 * AnMaster wonders what it does in C 16:32:53 nothing 16:33:04 what is it for then? 16:33:07 AnMaster: you know 'register'? 16:33:13 yes 16:33:17 auto is basically the opposite 16:33:20 i.e. let the compiler decide 16:33:25 but auto is also the default for all variables 16:33:31 so it's unnecessary 16:33:45 err that's volatile? 16:33:45 maybe in the old days you wanted to be explicit about auto vs. register or something 16:33:51 that's the opposite of register 16:33:56 err 16:33:59 auto would be default middle value 16:34:01 I'm using the term 'opposite' loosely 16:34:04 ie, let compiler decide 16:34:09 register -> put it in register 16:34:12 yep 16:34:13 auto -> let compiler decide 16:34:21 volatile -> always read the value from wherever it came from 16:34:27 indeed 16:34:36 therefore register is opposite of volatile 16:34:38 ;P 16:34:52 I'd disagree 16:35:07 I'd say none of these are opposites of each other, strictly speaking 16:35:16 but anyway, that's 'auto' for ya. 16:35:16 well strictly speaking indeed 16:38:51 * SimonRC wonders what is up with ddate's man-page 16:39:29 actually, "auto" variables are those with automatic allocation 16:39:32 i,e, stack allocation 16:40:06 but for some reason, my less thinks that the ddate manpage has ~6500 lines just befor the "EXAMPLES" subtitle. 16:40:12 when it blatently doesn't 16:41:54 #\884***+1#<;#_ -! #_ bb*01- x>".dedaol">:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_$a,Testing fingerprint SUBR... loaded. 16:41:54 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx 16:42:03 * AnMaster sighs at infinite loop 16:42:25 ah, usefunge 16:42:27 *une 16:42:30 no 16:42:35 just debug output 16:42:41 from my befunge interpreter 16:42:46 ok 16:43:04 printing each instruction as it runs, at trace level 3, (at 4 it would print like: x=165 y=210: x (120) ) 16:44:55 ok 16:47:20 Deewiant, help, what could cause that error on SUBR loading? :( 16:47:24 it makes no sense 16:47:29 dunno 16:47:33 >0" tnirpregnif gnitseT">:#,_00p410p310p210p110p>:;^p1p00:+1g00:;# _ " ...",,,, 41g:!#^_>31g:!#^_>21g:!#^_>11g 00g #^(22p33pv>".dedaol">:#,_$a, 0655**- \ ef* - x 16:47:34 do you get to (15, 725) 16:47:39 it fails at the x at the end 16:47:45 somehow it pops 0,0 16:47:50 so something is messed up 16:47:53 so ip end up not moving 16:48:01 because that's the standard fingerprint loading routine 16:48:03 used for every fingerprint 16:48:09 Deewiant, yes, and it works for other fingerprints 16:48:23 at the end, it hits an x and jumps to (15, y) where the y-coordinate is pushed at the fingerprint 16:48:27 in this case it should be 725 16:48:41 Testing fingerprint SUBR... loaded. 16:48:41 Testing fingerprint SUBR... loaded. 16:48:42 huh 16:49:26 Deewiant, that is odd eh? 16:49:32 why would it load it twice wtf 16:49:44 something's going wrong in that first x I guess 16:49:55 yes 16:50:13 Deewiant, but considering it is generic loading and works for other fingerprints, I don't get it 16:50:52 * Sgeo is about to die of boredom 16:50:57 what's that '5' after the first x 16:51:02 where is it at 16:51:18 err? 16:51:28 2008-03-15 17:41:54 ( AnMaster) 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx 16:51:31 x5xtx 16:51:35 good question a sec 16:51:36 what's the 5 16:52:23 * AnMaster traces in gdb to be able to catch the output 16:52:42 because even without optimizing it takes just a fraction of a second to fill the scrollback with x 16:52:58 how about teeing the output? 16:54:56 Deewiant, http://rafb.net/p/mz4t6B40.html 16:55:25 x=15 y=0? fail :-P 16:55:58 Deewiant, yes, looks like something jumped way too far 16:56:19 looks like your math goes wrong somewhere 16:56:46 it's your program, you debug it :-P 16:57:20 (gdb) print ip->delta 16:57:20 $1 = {x = -150, y = -210} 16:57:23 yes indeed 17:01:19 Deewiant, ok J is broken, if I make J reflect i do get BAD but it doesn't lock up 17:02:02 aha, missing a setting of delta in J I think 17:02:20 Deewiant, yes that was it ^ 17:02:25 J? I thought that died before getting to J 17:02:35 Deewiant, nop 17:02:47 What is this SUBR fingerprint? 17:02:54 Deewiant, but J didn't set delta, you may want to test for that 17:02:59 SimonRC, sub routinesa 17:03:03 routines* 17:03:14 I thought '98 already did those 17:03:18 err no? 17:03:25 oh 17:07:01 Deewiant, pull to get my SUBR, not yet optimal 17:07:10 (in sense of speed I mean) 17:07:15 -!- Corun has quit ("This computer has gone to sleep"). 17:07:44 Deewiant, still around 0.075 seconds here for it :D 17:08:20 hmm, odd indeed 17:08:40 I must have been confused by j in combination with u and {} 17:08:55 SimonRC, those are different indeed 17:09:19 but really, SUBR is quite possible to emulate using befunge 17:09:34 Deewiant do that in mycology really 17:10:12 sure, you just have to manually push the return address 17:10:23 I make things easier by hard-coding the return x-coordinate as 15 17:11:27 indeed 17:12:06 * SimonRC considers a C->Befunge compiler 17:13:30 actually a Forth might work quite well 17:14:15 SimonRC, err what? 17:14:20 C->forth? 17:14:24 sure, but why? 17:14:32 oh wait, C->befunge would be nice 17:14:47 because then I could run cfunge under cfunge 17:14:53 heh 17:15:02 SimonRC, note that cfunge is very much C99, so would be quite a bit of work 17:15:13 Aren't there enough befunge terps out there already? 17:15:26 SimonRC, very few standard conforming ones 17:15:37 CCBI and mine are all standard conforming ones I know 17:15:41 and CCBI is in D 17:15:46 so a pain to compile 17:15:50 what about fbbi? 17:15:58 SimonRC, not conformant iirc 17:16:53 SimonRC, http://users.tkk.fi/~mniemenm/befunge/mycology-comparison.html 17:17:04 see chart at end 17:17:28 Deewiant, btw for mycology fix of date, you didn't update webpage it seems? 17:17:33 ie, no changelog entry 17:23:36 only on the main page 17:23:53 can't be bothered to put it all there 17:24:06 because they're mostly of the type "fixed typo" like that one. 17:25:53 zzzz 17:26:16 * Sgeo is dead tiredbored 17:26:38 SimonRC, anyway cfunge: http://rage.kuonet.org/~anmaster/cfunge/ 17:43:02 Deewiant, it is weird that my interpreter seems to get no slower for each fingerprint I add 17:43:20 it is basically same speed, around 0.78 seconds in super-optimized mode 17:43:39 I found that gcc 4.1 and later actually got an undocumented -O4 17:43:40 * ais523 has just proved Splinter to be a push-down automaton 17:43:49 ais523, what is splinter? 17:43:57 I found it on Keymaker's website 17:44:06 not sure if it's on esolangs 17:44:14 ais523, how much do you win for that? 17:44:21 nothing 17:44:23 it was just for fun 17:44:29 link to it? 17:44:35 but it was an interesting task, because Keymaker thought it was just a finite-state machine 17:44:54 http://koti.mbnet.fi/yiap/splinter/splinter.html 17:46:00 ais523, contact him/her about it? 17:46:15 I may do at some point 17:46:53 * ais523 pastes their pushdown automaton to Splinter compiler 17:47:24 Deewiant, is adding concurrency hard? 17:47:47 http://pastebin.ca/943809 17:48:09 AnMaster: dunno... potentially 17:48:19 AnMaster: if you've just copied all my algorithms then probably not ;-P 17:48:30 Deewiant, I have designed with concurrency in mind 17:48:35 ie, passing around ip pointer 17:48:49 using ip->stack instead of some global stack stack variable 17:48:59 err actually the latter I do but it's quite hidden 17:49:01 and easy to fix 17:49:08 the definition of a push-down automaton requires it to accept input, but I simulate that by using a separate splinter N whose only purpose is to provide input every time it's called, so the input is entirely separate to the program 17:51:03 Deewiant, but I didn't copy your algorithms for core code, wrapping and fingerprints yes, but I didn't look at ccbi before I got stuck at wrapping 17:51:09 splinter is cute 17:51:20 Deewiant, the reason being I thought D was so different I wouldn't understand it, heh 17:51:47 http://esolangs.org/wiki/Splinter works too (although Esolang was down a few minutes ago, apparently due to 'too many connections', it's back up again) 17:52:19 ais523, the whole program looks like a > heh 17:52:25 * AnMaster wonders why 17:52:43 ais523, that pastebin link, it may not exist forever 17:53:00 AnMaster: it's meant to, but I still have the original file, just nowhere more permanent to put it 17:53:15 there are a few pastebin links on Esolang for before things can be moved to a proper home 17:53:18 hrm 17:53:31 and because pastebin.ca keeps things around forever, it's likely to last longer than many esolang sites 17:55:11 when ehird's website is up, that would likely be a better place 17:58:46 ais523, well I got launchpad to mirror cfunge and sf.net for download hosting 17:59:07 it's more of a serious project than a proof-of-concept compiler, though 17:59:39 ais523, true 18:13:52 -!- Corun has joined. 18:29:08 -!- oklokok has quit (Read error: 113 (No route to host)). 18:31:55 -!- oklofok has joined. 18:34:55 -!- shinku has joined. 18:52:42 -!- shinku has quit. 18:58:11 -!- sebbu2 has joined. 19:02:04 Deewiant, btw about concurrent IP, would you do it as a linked list? 19:02:22 considering this with inserting and removing IPs it seems like the best way 19:02:30 a double linked list 19:02:42 I did that once, it ended up slower than arrays 19:03:23 Deewiant, true not good for CPU cache 19:03:34 aye, memory locality is likely the reason 19:04:19 Deewiant, but adding a new one, or deleting an old one becomes O(n) with array, right? 19:04:26 as you need to insert 19:06:34 Deewiant, what file is IP *list* in? 19:06:36 it's O(1) + memory allocation costs 19:06:39 IP.d 19:06:42 it's a global at the top 19:06:47 ah 19:06:53 IP[] ips; 19:07:11 Deewiant, how can it be O(1) if you need to insert an entry in front of another you will need to move all later ones 19:07:17 unless you use some hash map for it? 19:07:32 allocate new array which is 1 bigger 19:07:38 "It causes the current IP to be duplicated, and this duplicate is added to the IP list such that it is executed for the first time before the parent IP is next executed." 19:07:41 copy old_array[0..i] to the beginning 19:07:49 of the new array 19:07:55 insert new IP at position i 19:08:03 copy old_array[i+1..end] to the end of the new array 19:08:16 Deewiant, ok true, yes I get that bit, but that isn't O(1) 19:08:17 :/ 19:08:40 it's something like O(n) for number of elements in array 19:08:48 the memory allocation costs make it O(n) in practice 19:09:02 Deewiant, yes and you can't copy all in one go 19:09:04 but the copying can basically be done by sharing 19:09:09 Deewiant, err what? 19:09:18 or hmm, actually only half of it can be done by sharing. darn, so it becomes O(n/2) 19:09:21 which is O(n) anyway. 19:09:50 err? *thinks* O(n/2) == O(n)?? 19:09:57 yep 19:10:04 then O maths are strange 19:10:05 O(constant * n) == O(n) 19:10:08 :-P 19:10:18 if you know the definition it makes sense 19:10:21 Deewiant, that would only be true if n is treated as infinite 19:10:30 ah, but O isn't a function 19:10:32 O is a set 19:10:33 mathematically speaking I mean 19:10:42 Deewiant, ok hm 19:11:12 the notation is a bit crap, but it makes it easier to talk about stuff 19:11:35 haven't got to set theory much in school yet, we done some basics like discuss N, Z, Q and R and such 19:11:44 for instance, it's not really "f = O(n)", it's "f ∈ O(n)" 19:12:18 UNCHANGING = 0, 19:12:18 STOPPING, 19:12:18 QUITTING, 19:12:22 state hm? 19:12:27 aye 19:12:39 what does those means? they aren't same as mode 19:12:41 -!- ais523 has quit ("might be back soon, might not be"). 19:12:50 STOPPING - hit an @ 19:12:55 QUITTING - hit a q 19:13:01 UNCHANGING - normal. 19:13:04 ah 19:13:13 then there's the one or two for TRDS. 19:13:46 Deewiant, why those? I think q = call to exit, @ = some call to destroy current ip, and exit if it's the only one 19:14:05 because of TRDS. 19:14:08 -!- sebbu has quit (Read error: 110 (Connection timed out)). 19:14:17 Deewiant, err all of those are for TRDS? 19:14:29 as you say, they wouldn't be necessary if it weren't for TRDS. 19:14:31 oh god sounds like a real mess (yes it is) 19:15:13 I don't think, anyway. 19:18:59 think what? 19:19:03 at all? ;P 19:19:05 * AnMaster runs 19:19:20 (sorry, considering ccbi's code, you *DO* think) 19:19:54 I'm not sure they're necessary even now. depends on how the states get set. 19:20:03 mhm 19:20:09 I won't do TRDS 19:20:22 Deewiant, in: 19:20:24 IP[] ips; 19:20:29 is that a C style array 19:20:34 A spam email that sends to a malicious IP belongs to ucsd.edu 19:20:40 or some D interal to make it sparse? 19:20:43 no, C style arrays are static. :-) 19:20:55 Do I forward the email to the technical contact, or should I send to abuse@ucsd.edu ? 19:21:03 Deewiant, so it's a sparse array= 19:21:08 s/=/?/ 19:21:11 -!- ehird has joined. 19:21:15 it's essentially a struct __someinternalname { whatever_the_type_is *data; size_t length; } 19:21:28 it's flat, just dynamic 19:21:29 ooh 19:21:31 what's this about 19:21:31 ah ok 19:21:38 it sounds interestermating 19:21:38 ehird, ? 19:21:40 ehird: dynamic arrays in D 19:21:47 oh ah 19:21:49 and it's not like that 19:21:52 the actual thingy is: 19:22:02 struct __foo { size_t length; void *data; } 19:22:03 iirc. 19:22:06 ;) 19:22:14 but that is, of course, post-compilation 19:22:14 * Sgeo pokes urgently 19:22:15 yes makes sense to store length first 19:22:22 also i found a silly little thing 19:22:28 imagine this structure for a string 19:22:29 it doesn't matter, really 19:22:33 struct { size_t length; char first; } 19:22:36 means less indirectly addressing to access first element of a struct 19:22:37 you get to the data by: 19:22:40 &foo->first 19:22:44 and since D do range checking 19:22:45 i think that would work 19:22:45 cute 19:22:46 it makes sense 19:22:49 Deewiant, ^ 19:23:05 oh, wait 19:23:10 the __foo includes size_t allocated; too 19:23:20 AnMaster: it makes no difference whether you're accessing address FOO or FOO+x. that's implemented at the hardware level. 19:23:40 Deewiant, yes at hardware level it (used to at least) make a difference 19:23:41 * Sgeo sends 19:23:43 ehird: that's for the GC, not in the struct itself, I don't think. 19:23:51 Deewiant, in how many cycles the access took that is 19:23:53 Deewiant: no, i mean how much it has been allocated 19:23:58 not always == length. 19:24:10 btw, how to allocate my structure thingy: malloc(sizeof(string_t) + (sz ? sz-1 : 0)) 19:24:59 Deewiant, I got an idea to make it faster for first time anyway, you can just realloc then, if you consider "before in exec order" == "after in array" 19:25:07 ie, you execute counting downwards 19:25:14 should make the first split faster 19:25:15 ehird: yes, I know what you meant. 19:25:29 it looks like it's defined as void** data actually. 19:25:37 ehird, is that a struct that can grow at the end? 19:25:38 Deewiant: that would make sense 19:25:40 if obj = void * 19:25:46 then the replacable array ref is obj* 19:25:51 thingy 19:25:56 AnMaster: yepp 19:26:00 AnMaster: but transforms into a char* 19:26:03 ehird, if it is, see how I do stackstacks in my code 19:26:18 * AnMaster use C99 flexible struct members 19:26:21 or whatever the name is 19:26:25 AnMaster: the cool thing about it is that you don't need two pointers 19:26:31 ehird, indeed 19:26:33 if one is always going to be in one place -- the struct -- it's pointless 19:26:39 so just have one that can pretend to be both :D 19:26:47 typedef struct { 19:26:47 size_t size; /**< This is number of elements in stacks. */ 19:26:47 size_t current; /**< Top stack and current stack */ 19:26:47 fungeStack * stacks[]; /**< Array of pointers to stacks */ 19:26:47 } fungeStackStack; 19:27:01 stackStack = cf_realloc(*me, sizeof(fungeStackStack) + ((*me)->size + 1) * sizeof(fungeStack*)); 19:27:07 that is how I grow it 19:27:36 initial alloc is just: stackStack = cf_malloc(sizeof(fungeStackStack) + sizeof(fungeStack*)); 19:27:44 AnMaster: i like c89 19:27:52 ehird, well that's your choice 19:27:54 but i think there is a place for a langugae like c99 19:28:01 just not as the latest c :) 19:28:10 ehird, hehe, tough luck 19:29:18 AnMaster: http://pastebin.ca/943924 19:29:20 string_t! 19:29:22 :p 19:29:42 ehird, god, are you doing C99 feature in C89 19:29:43 -_- 19:30:02 -!- ais523 has joined. 19:30:04 ehird, you know, the original gopher client had something like that 19:30:27 AnMaster: you got the timing on that message so precise you beat the welcome message from ChanServ 19:30:40 ais523: same happened when i came in 19:30:48 ais523, err? it was 2 seconds later 19:30:48 :P 19:30:50 maybe Chanserv is just being slow today 19:30:51 AnMaster: and no, i'm not 19:31:03 * SimonRC thinks that big-O notation would be better as a partial ordering on functions than the current wibbliness 19:31:10 that's just a structure which is allocated past its size and the rest is used as char * 19:31:11 :D 19:31:25 ais523: I am splitting my dei language into two 19:31:27 littledei and bigdei 19:31:32 littledei will be the minimum to do your rewrites 19:31:35 and bigdei will have IO 19:31:41 but you can redirect input and output to 'sinks' to it will work 19:31:50 and you can catch signals so [quit] is possible 19:31:50 etc 19:31:53 ehird, yes, ie, something likehttp://pastebin.ca/943925 19:31:54 * ais523 came across (on Wikipedia) the fact that there were algorithms that ran in O(n*alpha(n)) time, where alpha is the inverse of the Ackermann function 19:31:56 err add space 19:32:00 so very very slightly worse than O(n) 19:32:12 AnMaster: no, not really 19:32:15 but eh. 19:32:24 ehird, it works the same *shrugs* 19:32:26 ais523: link to your rewrites again? 19:32:28 AnMaster: so does two pointers 19:32:42 ehird, no, that is one more level of indirection 19:32:59 * ais523 tries to find it 19:33:00 and therefore likely slower 19:33:22 ais523, wtf link to that? 19:33:46 AnMaster: for dei 19:33:50 which is turing complete 19:33:54 * ais523 came across (on Wikipedia) the fact that there were algorithms that ran in O(n*alpha(n)) time, where alpha is the inverse of the Ackermann function 19:33:56 for that 19:34:00 ho 19:34:03 oh 19:34:27 AnMaster: it's apparently one of the algorithms for solving the [[Minimal Spanning Tree]] problem 19:34:36 mentioned in some of the pages around there 19:34:45 none of them said explicitly what the algorithm was, though 19:35:00 ok 19:35:09 ais523: hmm, i need a special value to put at the start of the program 19:35:10 maybe []? 19:35:25 ehird: that's the most obvious option 19:35:28 ehird, is this TURKY BOMB, your funge or what? 19:35:41 AnMaster: it's a concatenative language without the [] operator 19:35:48 ah ok 19:36:15 * ais523 is still trying to find the link 19:36:30 http://pastebin.ca/943140 19:36:58 it's how to translate programs written in terms of [] into programs written in terms of dei 19:37:11 which is, of course, scary :) 19:37:25 (assuming the semantics for i dei are to evaluate TOS, then push [i]; that isn't clear from the spec) 19:37:47 where is Dei defined? 19:37:51 ehird: did you see my proof that Splinter was a PDA that I linked in #esoteric earlier today? 19:38:06 SimonRC: this: 19:38:07 well 19:38:08 in my spec 19:38:16 which ais523 will now find and give a link, maybe ;) 19:38:17 SimonRC: ehird's most recent spec was http://pastebin.ca/943115 19:38:25 ehird: way to cross messages... 19:38:32 hehe, indeed. 19:38:36 and no, ais523, I didn't 19:38:47 SimonRC: basically, `X dei` is `X [X]` 19:38:50 but before X is executed 19:38:55 `dup dei` => `dup [dup]` 19:39:02 so the top element of the stack is duplicated, then [dup] is pushed 19:39:10 "Firefox can't find the server at www.pastebin.ca." ! 19:39:22 SimonRC: there isn't a www at the start of the name 19:39:24 Okies: 19:39:25 www is so 1990s 19:39:27 http://pastebin.ca/943935 19:39:29 That's minidei 19:39:38 the smallest dei that is turing complete, as far as I know 19:39:40 also, more formally specified 19:39:55 I will now do the noble thing and write an interpreter using s/// 19:40:04 ais523: before I start, what's the "and redo" trick? it looks useful 19:40:12 well firefox is putting it there 19:40:21 ehird: it jumps back to the start of the {} block you're in 19:40:30 if the command succeded 19:40:48 when combined with s/// it gives you Thutu-style replacements: start the block again if you make a change 19:41:11 SimonRC: can you ping pastebin.ca? 19:41:23 ais523: hm damn i don't think i can implement this 19:41:38 because of [...] 19:41:42 can't do that with regexps 19:41:46 ehird: learn to write recursive regexps 19:41:50 ais523: scared 19:41:54 the syntax was improved a lot for Perl 5.10 19:42:12 but the 5.005 syntax is to declare a part of a regexp with $variable=qr/regexp/ 19:42:23 and to access it with (?{{$variable}}) 19:42:24 ais523: i have 5.10 19:42:36 in that case, (?R) will do the entire regexp 19:42:47 as in, it recurses the whole thing 19:43:01 ping can't see it either 19:43:01 there's also syntax to recurse into one group which I've forgotten right now, but is very simple 19:43:12 SimonRC: can you access other websites? 19:43:15 ais523: hmm, how does kate highlight: 'whatever / 25 ; # / ; die "this dies!";' 19:43:15 yes 19:43:20 cperl-mode highlights it as divide+Comment 19:43:25 perl-mode too 19:44:18 Kate interprets it as divide+comment 19:44:32 "Ping request could not find host pastebin.ca. Please check the name and try again." 19:44:35 hmm# 19:44:37 ais523: my $q = /(\[(?:(?:R)|[^ ]+)+\])/; 19:45:16 ehird: if you change the whatever to the reserved word split, then it higlights it as regexp + die because it knows that split takes arguments 19:45:23 sorry, not reserved word, built in function 19:45:38 ais523: hmm, I want $q to match 'foo [bar baz]' in [foo [bar baz]] 19:46:07 /\[((?:(?:R)|[^ ]+)+)\]/ 19:46:09 think that's right 19:47:25 SimonRC: can you navigate to http://208.68.18.97/ 19:47:38 that's how you write pastebin.ca as numbers, according to ping 19:47:48 (i.e. by IP rather than by domain name) 19:48:13 nope, can' do 19:48:13 ehird: you want to put \[ and \] inside your character class [^ ] 19:48:17 *can't 19:48:40 SimonRC: that's strange, it seems like bits of the internet are inaccessible to you for some reason 19:48:45 weird 19:48:56 ais523: thanks 19:49:03 What does "(qmail 11842 invoked from network)" mean? 19:49:06 ok now i need to know how to debug this :p 19:49:09 Sgeo: qmail, eww 19:49:19 what does it mean? 19:49:26 where was it? 19:49:34 In a Received: header in some spam 19:49:35 ehird: putting a print; just inside your block that you're redoing into is generally useful for debugging, I find 19:49:41 Received: (qmail 11842 invoked from network); Mon, 10 Mar 2008 11:30:46 +0530 19:49:47 ais523: oh and i want * 19:49:48 not + 19:50:02 well, it is just giving the PID of the qmail process that invoked it 19:50:07 oops 19:50:07 ehird: only the outer + 19:50:17 I mean the PID of the one that processed it 19:50:20 or you could have zero-character combinators, HOMESPRING-style 19:50:20 ehird@ehird-desktop:~$ echo 'i'|perl minidei.pl 19:50:20 0 19:50:25 veeeery odd 19:50:46 ehird: are you using $_ for your s///s? 19:50:53 Received: from unknown (HELO forki) (28.116.40.228) 19:51:04 weird 19:51:10 Is that Received: line reliable, even with the Received: with the qmail above it? 19:51:15 ais523: http://pastebin.ca/943947 19:51:28 Sgeo: qmail is a program 19:51:29 a sucky one 19:51:31 does that help? 19:51:43 What is it doing in the header like that? 19:51:51 Sgeo: advertising itself to the world 19:51:56 what it is saying is: 19:52:09 And could that line be used to fake wahtever's below it? 19:52:12 'I am qmail with PID 11842. I was invoked from the network (i.e. not used locally from the box Im running on)' 19:52:22 And you can always fake every part of an email. 19:52:33 ehird: you need to write my $q = qr/\[((?:(?:R)|[^ \[\]]+)*)\]/; and so on (note the extra qr) 19:52:40 ehird: not all 19:52:42 EVERY part? 19:52:44 ais523: okies. why? 19:52:47 I trust this: 19:52:48 Received: from 210.211.190.168.bb-static.vsnl.net.in ([210.211.190.168]) 19:52:48 so that the regexp is evaluated when it's included, rather than when you declare it 19:52:48 by mx.google.com with SMTP id 13si12968233fks.8.2008.03.09.23.02.19; 19:52:48 Sun, 09 Mar 2008 23:02:24 -0700 (PDT) 19:52:49 SimonRC: most that matter :) 19:53:01 at some point the email must have finished passing through untrusted computers 19:53:03 it's like writing '(list) rather than (list) in Lisp 19:53:12 ais523: still the same 19:53:27 and almost any trusted computer will tell you if it detects it is being given bogus headers 19:53:41 like, computers that lie about who they are 19:53:52 is 0 all the output you're getting? 19:54:09 or is there other output first? 19:54:17 The only line that looks like it might have been used for forging earlier stuff is the qmail one 19:54:35 ais523: that;s it 19:54:48 $_ = "[] "+<>; 19:54:50 i guess that is wrong 19:54:59 yep 19:55:02 it gets it as .. 19:55:03 oh of course 19:55:05 + ain't concat 19:55:07 . is 19:55:13 * ais523 feels stupid for not noticing that 19:55:57 ehird@ehird-desktop:~$ echo 'wrap'|perl minidei.pl 19:55:57 [] wrap 19:55:57 [[]] 19:56:04 hm 19:56:05 dup doesn't work 19:56:12 oh 19:56:14 i didn't implement it 19:56:14 XS 19:56:15 XD 19:56:35 oh dear 19:57:05 ais523: i think $e is broken 19:57:05 :( 19:57:08 oh wait 19:57:09 of course 19:57:18 $e should match the whole [..] 19:57:34 and $w needs to exclude square brackets 19:57:38 ais523: wait a second.. 19:57:43 the only time $e will be used is for dei 19:57:49 since otherwise all we have are quotations 19:57:56 since the words to the left have been executed 19:57:57 right? 19:58:06 yes 19:58:09 and.. 19:58:12 dei only needs to match on words!! 19:58:18 yes 19:58:31 but your implementation of i is wrong 19:58:40 it needs to remove the outermost set of square brackets 19:58:47 ais523: it does. [..] does 19:58:47 :) 19:59:07 ehird@ehird-desktop:~$ echo 'dup dei i'|perl minidei.pl 19:59:07 [] dup dei i 19:59:07 [] [] [dup] i 19:59:07 [] [] dup 19:59:07 [] [] [] 19:59:09 because the [] are /inside/ the () in $q. That's clever 19:59:16 ais523: yep. and sorry for the flood 19:59:20 everything looks so much smaller in the terminal window 19:59:25 why is there a "dei" instruction? 19:59:37 SimonRC: because [] isn't allowed in input programs 19:59:38 SimonRC: because there's no [..] instruction 19:59:42 so you have to do everything with dei 19:59:44 which i should fix, actually 19:59:44 ah, ok 19:59:52 technically the spec allows [...] in the program just as a word 19:59:57 but i'll just die if i find [..] 19:59:57 it's ehird being deliberately difficult 20:00:01 which is the nature of esolangs, after all 20:00:04 ais523: that is one way of saying it 20:00:04 :) 20:00:05 ok 20:00:50 ais523: can i use <> multiple times? 20:00:59 ehird: yes 20:01:02 you get one line each time you do 20:01:13 if you set $/=undef you get one file each time you do instead 20:01:19 ais523: hmm 20:01:23 what's the easiest way to just slurp all of stdin? 20:01:27 well 20:01:28 (that is, one file from the command line, and stdin when they run out) 20:01:30 ruby's ARGF 20:01:33 command line OR stdin 20:01:42 ehird: $/=undef; $something=<> 20:01:55 that gives you the first file on the cmdline, or stdin if there weren't any 20:02:31 although if you're aiming for encapsulation saying local $/=undef will localise the change on <>'s effect to the entire program 20:02:54 the golfing variant of this is $/=$] 20:03:04 [] found in input at minidei.pl line 3, <> chunk 1. 20:03:05 huh? "localise the change ... to the entire program"? 20:03:06 it sets the line separator to the Perl version number, which is unlikely to be in the input 20:03:11 i love how perl puts useufl crap at the end of your message 20:03:40 SimonRC: if you were using multiple program files, which is how Perl does object-orientation, or you were writing a module 20:03:49 blither 20:03:50 sort of like static in C 20:03:53 * Sgeo wishes there was a way to determine if he's doing a good job of sending abuse reports 20:04:44 Sgeo: Presumably, a program that could do that could just find abuse itself. 20:04:49 ais523: http://pastebin.ca/943963 minideiii! It works. 20:05:05 It's public domain because it's so trivial that I couldn't bring myself to even MIT it 20:05:19 that is also my first perl program beyond 'hello world', really 20:05:26 it's far too readable, i guess 20:05:39 ehird: I write like that too 20:05:51 although I suspect the reason the program looks like that is that you were copying my style 20:06:14 Well, the email listed as the Registrant in the whois for vsnl.net.in doesn't exist 20:06:26 ais523: yeah, i probably was.. 20:06:30 ais523: :) 20:07:20 ais523: hm 20:07:22 that's buggy 20:07:24 need to fix up whitespace 20:08:12 ehird: as for the whatever line: Kate correctly marks the // stuff as a regexp whenever I change whatever to a builtin function that takes at least one argument 20:08:20 and otherwise treats it as a division 20:08:21 you said that 20:08:21 :) 20:08:35 ehird: I was trying even functions which don't normally take regexps as arguments, like log 20:08:39 ais523: http://pastebin.ca/943970 20:08:40 upgraded it 20:08:44 made it do deis in steps 20:08:45 and fixed [] etc 20:09:05 You know what this channel needs? 20:09:10 A more fleshed-out topic. 20:09:12 I wonders if pastebin.ca have a reguler customer discount scheme... 20:09:15 :-) 20:09:41 -!- SimonRC has set topic: FLESH http://ircbrowse.com/cdates.html?channel=esoteric FLESH - From Brainfuck FLESH to extending FLESH tetration to the reals FLESH.. 20:09:59 ais523: 'drop dei dup i' is a program worth trying 20:10:13 i love how you can see it expand the is out D: 20:10:14 *:D 20:10:22 pikhq: Would the qdb count? :p 20:10:45 ehird: I get similar joy watching similar things in Underlambda 20:10:55 which is implemented and debugged the same way ATM 20:11:12 #esoteric - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/ 20:11:12 it's great to see it collapse a whole line of lambdas 20:11:16 ? 20:11:18 ehird: Does it work? 20:11:26 pikhq: Sooooooon. 20:11:28 <___< 20:11:34 We can add it once it works. 20:11:41 How can "no reply" exist in tracepath? 20:11:48 Meanwhile, if that's a sufficient topic, then I'm changing to it. 20:11:50 Is tracert or whatever more reliable? 20:12:05 -!- pikhq has set topic: - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/. 20:12:06 pikhq: I like our topic 20:12:08 It's crazy 20:12:21 -!- pikhq has set topic: #esoteric - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/. 20:12:23 ais523: Hmm, I'm going to implement your flattener and use it to write an infinite loop 20:12:24 :D 20:12:30 (:^):^ -> [dup i] dup i 20:12:32 hmm 20:12:34 i can do that manually 20:12:48 Seems like this spammer just sent from their computer directly to Google's computer.. 20:12:59 Received: from itlxx ([92.81.128.73]) 20:12:59 by mx.google.com with SMTP id g1si18349881muf.5.2008.03.15.03.37.47; 20:12:59 Sat, 15 Mar 2008 03:37:48 -0700 (PDT) 20:13:04 ehird: there's actually a much better way to dei an i than I used in the flattener, that I thought up more recently 20:13:07 No Received:'s after that 20:13:09 wrap i dei 20:13:09 * pikhq curses at OpenVPN 20:13:15 dup dei swap drop dup swap dei i dei swap drop compose dup i 20:13:26 hmm 20:13:29 that doesn't wooooork 20:13:29 :( 20:13:31 So did they just connect to mx.google.com or wahtever? 20:13:36 ais523: wanna post a new spec so i can retest? 20:13:39 hmm... 20:14:08 ehird: it's the same, just with the rule for [i] changed to [i] => wrap i dei 20:14:21 ehird: how do you get arbitrary stuff inside brackets? 20:14:33 Actually, what is mx.google.com ? 20:14:35 SimonRC: http://pastebin.ca/943140 20:14:43 SimonRC: that's all the underload functions, sans S 20:14:46 ehird: no good, pastebin is still fail for me 20:14:50 so, that's all you NEED to get in brackets 20:14:57 Sgeo: Main eXchange 20:14:58 and by 'coincidence' ;) that's all there is in the spec 20:15:04 SimonRC: MAIL exchange 20:15:08 named after MX DNS records, I assume 20:15:18 um, yeah, I meant to type Mail 20:15:34 SimonRC: http://rafb.net/p/e3X6O830.html is the same as what ehird just linked 20:15:40 I just repasted it elsewhere so you could see it 20:15:59 So how does one connect directly to gmail's server? 20:16:51 Sgeo: Just how your mail client does it. 20:17:02 ais523: Hmm. How does that handle, e.g. [X [wrap]]? 20:17:04 I think I meant server-to-server 20:17:05 that is, when the second isn't a word 20:17:08 The same way, I'd bet 20:17:10 Because I think that's what the spammer did 20:17:24 ehird: it splits it into [X] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=wrap compose 20:17:36 um, wow 20:17:40 a whole url? 20:17:41 :-) 20:17:53 SimonRC: my client expands [[ ]] into links to Wikipedia 20:17:58 which is sometimes useful, and sometimes not useful 20:18:17 I'll write it as (X) ((wrap)) compose to prevent that happening 20:20:10 How do I get the mx record for gmail.com? 20:21:10 ehird@ehird-desktop:~$ echo '[dup i] dup i' | perl flatten.pl 20:21:12 runs forever 20:21:12 :( 20:21:28 it goes into a huuuge compose chain 20:21:31 ais523: maybe your order is wrong 20:21:39 [dup i] dup i 20:21:39 [] [] compose dup i 20:21:39 [] [] compose compose dup i 20:21:39 .... 20:21:42 is how it goes 20:21:44 Sgeo: dig gmail.com MX 20:21:49 with the host command? oh 20:22:08 ehird: are you making sure that the [] splitter insists both halves are positive-length 20:22:16 you may be accidentally using * rather than + 20:22:17 host is easier to read 20:22:21 But I should learn the dig stuff 20:22:51 ais523: http://pastebin.ca/943984 20:22:54 newest version of both scripts 20:23:55 ehird: you need capture parens around the $w in the [$w $w] rule 20:24:23 aha 20:24:44 ais523: now it thinks it should be: 20:24:45 [dup]]]]]]]]] [[[[[[[[[i] compose compose compose compose compose compose compose compose compose dup i 20:25:09 ehird: you still haven't banned [ and ] in $w 20:25:15 ah 20:25:41 why isn't it working? 20:25:49 sgeo@ubuntu:~$ telnet gmail-smtp-in.l.google.com 25 20:25:49 Trying 72.14.205.27... 20:26:01 ais523: Well now it converts 20:26:04 but runs in finite time 20:26:04 :) 20:26:13 ehird: what does it convert to? 20:26:13 Sgeo: you didn't say HELO 20:26:19 dup dei swap drop wrap i dei compose dup i 20:26:32 sgeo@ubuntu:~$ telnet alt1.gmail-smtp-in.l.google.com 25 20:26:32 Trying 72.14.221.27... 20:26:32 HELO sgeo 20:26:32 that looks right to me? 20:26:35 what goes wrong? 20:26:41 so: 20:26:42 dup [dup] swap drop wrap i [i] compose dup i 20:26:43 (I don't have 5.10 installed over here) 20:26:46 so let's run through that 20:26:54 [] dup [dup] swap drop wrap i [i] compose dup i 20:26:58 [] [] [dup] swap drop wrap i [i] compose dup i 20:26:59 and how do I make sure the proper line endings are being used? 20:27:02 [] [dup] [] drop wrap i [i] compose dup i 20:27:06 [] [dup] wrap i [i] compose dup i 20:27:10 Sgeo: dunno 20:27:10 [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i 20:27:15 [] [dup] [i] compose dup i 20:27:22 [] [dup i] dup i 20:27:30 [] [dup i] [dup i] i 20:27:33 [] [dup i] dup i 20:27:34 so yes 20:27:36 it should work 20:27:40 it is minidei.pl's fault 20:27:48 minidei stops at 20:27:49 [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i 20:27:54 so, i have a bug 20:28:20 ais523: Think I got it 20:28:24 $q doesn't handle nested 20:28:30 Is (?:R) wrong? 20:28:33 Does (?R) make a group? 20:28:50 waiiiit 20:28:52 i [i] compose 20:28:54 hehe 20:28:56 that's what it sees 20:28:59 ehird: I'm not too sure about the new recursion syntax 20:28:59 so, I need to fix $q 20:29:07 seeing as I can't use it over here, I never learnt it 20:29:09 Sequence (?R...) not recognized in regex; marked by <-- HERE in m/\[((?:(?R <-- HERE )|[^ \[\]]+)*)\]/ at minidei.pl line 9. 20:29:15 ais523: (?:R) is just matching R. 20:29:16 :P 20:29:22 This is perl, v5.8.8 built for i486-linux-gnu-thread-multi 20:29:22 hah 20:29:30 ehird: try (??{$q}) 20:29:34 it's ugly, but it works 20:29:59 Sequence (??:...) not recognized in regex; marked by <-- HERE in m/(?:(??: <-- HERE {})|[^ \[\]]+)*/ at flatten.pl line 7, <> chunk 1. 20:30:00 darn 20:30:01 hehe 20:30:02 i will fix 20:30:24 now it dies at [] [dup i] dup i 20:30:36 but.. 20:30:40 there's no reason for that to fail 20:30:42 other than.. 20:30:43 $q failing! 20:30:51 my $q = qr/\[((?:(??{$q})|[^ \[\]]+)*)\]/; 20:31:59 sgeo@ubuntu:~$ telnet alt1.gmail-smtp-in.l.google.com 25 20:31:59 Trying 72.14.221.114... 20:31:59 HELO [24.191.104.202] 20:32:14 ais523: hmm yours is kinda b0rken 20:32:18 ehird@ehird-desktop:~$ echo '[[[dup [i] dup]]]' | perl flatten.pl 20:32:18 [[[dup [i] dup]]] 20:32:18 [[[dup wrap i dei dup]]] 20:32:19 and it stops there 20:32:24 SO, in conclusion: 20:32:26 $q is broken. 20:32:38 yes 20:33:43 ais523: Does (??{x}) make a group? 20:34:30 ehird: no 20:35:07 ais523: ok, so it's not that 20:35:09 ehird: does $q allow spaces between items in a group? 20:35:15 ais523: HEY wait a second.. 20:35:19 I can't see where you explicitly allow them 20:35:32 qr// + (??{$me}) == ? 20:35:43 ehird: it works 20:35:46 I've done it many times before 20:36:02 ais523: ok minidei works now 20:36:03 BUTT 20:36:08 my $q = qr/(?:(??{$q})|[^\[\]]+)*/; 20:36:10 doesn't work, for flatten 20:36:19 maybe because of my missing out of \[\] 20:36:20 maybe I need +? 20:36:24 that is '+?' 20:36:46 ehird: you want my $q = qr/(?:(??{$q}) *|[^ \[\]]+ *)*/ 20:37:00 so that you can have spaces between bracketed groups, and between words 20:37:06 ais523: If you look, it can 20:37:09 actually, that's equivalent, ignore me 20:37:16 I don't disallow spaces in the group any more 20:37:43 ehird: I noticed, but for some reason thought it prevented you putting spaces between two [] groups. It doesn't though 20:38:00 and yes, you need [] around the (??{$q}) 20:38:16 my $q = qr/\[(?:(??{$q})|[^\[\]]+)*\]/; 20:38:21 isn't working 20:38:24 not there 20:38:27 stops at: [[dup wrap i dei dup]] wrap 20:38:29 ais523: and no 20:38:31 that's from minidei.pl 20:38:34 sans group 20:38:35 y $q = qr/(?:\[(??{$q})\]|[^\[\]]+)*/; 20:38:38 no, look 20:38:41 mine works fine 20:38:43 because I fixed $e too 20:38:46 oh 20:38:48 my $e = qr/$w|($q)/; 20:39:03 ais523: aha 20:39:05 it's [a b c] 20:39:09 i.e. more than two elements 20:39:12 because you just have $w $w 20:39:17 so, it never matches in the first place 20:39:22 I need: 20:39:24 hmm 20:39:24 ehird: one of them is meant to be able to match multiple elements 20:39:24 well 20:39:30 i need to ignore the rest of the block thingy.. 20:39:41 s/\[$w $w\]/[$1] [$2] compose/ and redo; 20:39:43 that's the problem 20:39:57 so change the second one to ( $w)+ 20:40:19 ais523: third one. actually. 20:40:23 and * 20:40:42 I mean s/\[$w( $w)+\]/[$1] [$2] compose/ 20:40:47 although that has minor whitespace problems 20:40:49 oh 20:40:50 good point 20:41:00 dup dei swap drop dup] compose compose] wrap 20:41:03 not so good point 20:41:05 I know a solution though.. 20:41:16 s/\[$w((?: $w)+)\]/[$1] [$2] compose/ and redo; 20:41:17 hmm 20:41:19 that doesn't work either 20:41:38 ais523: wait... 20:41:49 (GROUP)+ is like ((?:GROUP)+) 20:41:50 ?? 20:41:54 maybe not 20:42:05 but the ((?:GROUP)+) is what I meant 20:42:36 [[dup wrap i dei dup]] wrap 20:42:36 [[dup] wrap i dei dup] compose] wrap 20:42:39 that is the broken transition 20:42:52 s/\[$w((?: $w)+)\]/[$1] [$2 compose/ and redo; 20:42:53 that works 20:42:54 :) 20:43:01 but is scary 20:43:04 WTF? 20:43:10 ais523: don't ask me.. 20:43:11 how did the closing ] get into $2 20:43:15 and i don't know. 20:43:22 ehird: are you banning ] in $w? 20:43:26 yes 20:43:28 that's the only explanation 20:43:29 oh wait 20:43:31 $w has a group 20:43:49 hm 20:43:50 still no luck 20:43:57 ehird: paste what you have so far? 20:44:31 yep 20:44:31 doing so 20:44:41 http://pastebin.ca/944013 20:44:44 commented out version doesn't work 20:44:55 i'll paste the new minidei.pl once flatten.pl works 20:46:07 ais523: also, yours can't dei-ify [] 20:46:12 -- which will be very hard indeed 20:46:24 ehird: deify [dup drop] 20:46:30 which means exactly the same thing 20:46:35 i guess so 20:47:12 ais523: 'nother bug 20:47:14 ehird@ehird-desktop:~$ echo '[dei i]' | perl flatten.pl 20:47:14 [dei i] 20:47:14 [dei] i compose 20:47:46 another one 20:47:47 [i i i i i i i i i i i] 20:47:48 [i] i i i i i i i i i i compose 20:47:48 wrap i dei i i i i i i i i i i compose 20:48:19 ehird: the flattener wasn't designed to handle dei 20:48:39 and the square-brackets quickfix obviously didn't work, we'll have to find out what the problem actually was 20:49:34 ais523: was it not? okay :P 20:49:45 but [i i i i i ii i ] is definately broken 20:50:30 yes 20:50:41 and I'm pretty sure it's for the same reason as the square-bracket mismatch is 20:51:09 okay 20:53:03 ais523: i'm truly not sure 20:54:26 ehird: the [$w $w] rule isn't allowing nested []s 20:54:31 it needs to for the flattener to work 20:54:42 but that doesn't sort out the [i i i i i i i i] problem 20:56:55 ais523: so.. $e $e 20:57:23 ais523: and, it does solve the i i i i i problem 20:57:29 albeit wrongly 20:57:31 it does: wrap i dei [] compose 20:57:43 [i i i i i i i i i i i] 20:57:43 [i] [] compose 20:58:23 [i i i i i i i i i i i] 20:58:23 [i] [] compose 20:58:23 so 20:58:27 it isn't being captured right 20:59:33 personally, I never put capture brackets in the qr// quotes, because it makes things too confusing to follow on occasion 21:00:41 s/\[\[((?: ?$e)*)\]\]/[$1] wrap/ and redo; 21:00:44 new wrap rule 21:04:41 * Sgeo blinks at the existance http://museum/ 21:04:46 *existence of 21:05:28 Sgeo: congrats, you discovered firefox's auto search 21:05:31 welcome to 2003 21:05:37 ehird, um, that's not autosearch 21:05:40 Sgeo: that's a bad URL, so it's either autosearch or a local DNS entry 21:05:47 Sgeo: yes it is 21:05:56 ais523, are you saying that you didn't try it? 21:05:59 there are some local DNS entries at my university which can only be accessed from there and have invalid URLs 21:06:01 try this 21:06:03 http://gogle/ 21:06:06 -> google.com 21:06:12 Sgeo: I did, I just get 'Unknown host' 21:06:16 yes -- gogle 21:06:18 not google 21:06:19 ergo. 21:06:34 ehird, I said http://museum/ not anything else 21:06:38 ah, wait, no 21:06:43 Sgeo: firefox sees http://foo 21:06:47 and turns it into http://www.foo.com 21:06:52 BRB 21:07:23 museum actually points to 195.7.77.17 21:07:37 back 21:07:56 what tejeez said 21:08:08 ehird, try it in links2 or something 21:08:34 Sgeo: fails for me in both Konqueror and w3m 21:08:43 ehird@ehird-desktop:~$ ping museum 21:08:43 ping: unknown host museum 21:08:45 end of discussion 21:08:49 maybe it's one of the national DNSes? 21:08:57 sgeo@ubuntu:~$ ping museum 21:08:58 PING museum (195.7.77.17) 56(84) bytes of data. 21:08:59 ais523: museum is a tld 21:09:05 Sgeo: uhh, what does the page say 21:09:08 ISTR one of them allows people to register invalid URLs 21:09:12 and will resolve them 21:09:47 ais523: that's cool 21:10:05 can't remember which one, though, and the resulting URLs aren't portable to other DNSes 21:10:14 so you can only access them in a limited geographical region 21:10:43 `dig @4.2.2.1 museum` 21:10:46 Note the A record 21:11:02 Sgeo: if there isn't an AAAA record it'll become obsolete soon 21:11:19 hmm 21:11:25 I am going to piss someone off: 21:11:31 Brian D Foy. Brian D Foy. Brian D Foy. Brian D Foy. Brian D Foy. 21:11:34 mwahahaha 21:11:35 ais523, why doesn't google have an AAAA record? 21:11:37 you cannot silence me, Brian D Foy! 21:11:47 Sgeo: ipv6.google.com does 21:11:50 Sgeo: ipv6.gooogle.com 21:11:52 oh 21:11:55 ais523: they said that in 1995 21:11:57 they put it up recently 21:12:13 So, A will become obsolete when IPv4 does? 21:12:18 * Sgeo won't hold his breath 21:12:20 ais523: I meant, 'obsolete soon' 21:12:25 And for one -- Sgeo is totally right. 21:12:27 *once 21:12:30 lol 21:13:01 there is probably people in here younger than ipv6 21:13:02 :p 21:13:19 and since ipv4 was going to be 'obsolete soon' as soon as ipv6 was discussed... 21:13:29 .. we've been waiting a long time :p 21:13:33 more than DNF 21:13:35 * Sgeo wonders if http://museum./ works better 21:13:51 compared to ipv6 arc was quite zippy 21:13:51 ehird: IETF went and turned off IPv4 access from their conference to see what would happen 21:13:58 ais523: i know 21:14:04 ais523: that means nothing 21:14:08 Deewiant, there? 21:14:11 that just means the ietf are fooling themselvse about ipv6 21:14:20 ehird: it means that ipv6 is becoming usable 21:14:26 it's the default on Vista, by the way 21:14:27 Deewiant, I got a question: wtf should 4kt do in concurrent funge 21:14:29 * Sgeo pokes people to try museum. instead of museum 21:14:37 I had to tell it to actually look at museum. 21:14:44 Deewiant, because I think k + t will break *horribly* here 21:14:52 or about.museum 21:14:57 AnMaster: spawns 4 threads which all start execution at k 21:14:59 or? 21:15:13 tejeez, about.museum doesn't have the same kind of "that's ALLOWED?" as museum or museum. 21:15:19 Deewiant, yes they will all follow the same path? right? 21:15:27 ais523: have you seen this: http://www.livejournal.com/doc/server/bml.index.html? 21:15:30 it's horribly 1996 21:15:33 AnMaster: aye, since they're all just reversed from the original 21:15:37 w3m works for http://museum./ for me 21:15:41 Deewiant, I suspect order may get messed up heh 21:15:57 Deewiant, ie, thinks *will* break here for that 21:15:57 ehird: no 21:16:04 ais523: look at the examples 21:16:20 Sgeo: yeah, but it shows if the used dns server allows .museum domains 21:16:22 AnMaster: why's that? all are just prepended 21:16:25 hmm 21:16:31 ais523: they tried to make it look more modern 21:16:31 try: http://bradfitz.com/bml/ 21:16:36 tejeez, shouldn't they all allow it? 21:16:44 Deewiant, appended to end in fact, and traversed backwards 21:16:55 AnMaster: same difference 21:17:02 i don't know 21:17:06 Deewiant, I'll test both models to see what one is fastest at mycology :) 21:17:18 AnMaster: appending to end is faster 21:17:29 Deewiant, yep, that's what will happen first time 21:17:32 ais523: one of the gems: 'H1=>{D}

%DATA%' 21:17:44 Deewiant, but if original IP spawns again... then it would be slower 21:18:00 ehird: it looks like obfuscated HTML 21:18:01 ie if all splits happen from main thread, or if all happens from each new child 21:18:18 ais523: well, that is html 21:18:21 ais523: with template crap around it 21:18:41 MediaWiki markup probably does much the same thing and looks much better than that 21:18:43 Deewiant, oh another thing, should the thread ID reported by y stay unique? as in, should it just be index into thread array, or some soft of unique index? 21:18:47 the html is also amusingly 1996 21:18:52 ais523: it was developed for livejournal 21:18:55 & lj still uses it. 21:18:55 Deewiant, that persists during the entire program 21:19:05 ais523: in fact, the architechture of lj is very simple.. 21:19:11 ais523: there are lots of perl files 21:19:12 ehird: wouldn't that been it was full of tags, frames, and weird JavaScript designed to look flashy? 21:19:16 s/been/mean/ 21:19:17 ais523: but the actual webpages are php-style bml 21:19:21 ais523: with embedded perl 21:19:25 AnMaster: not sure, it might have mattered for some fingerprint or something 21:19:30 the site may look modern nowadays 21:19:32 but it's just a skin.. 21:19:42 Deewiant, yes but what one do CCBI do? standard doesn't say anything about it 21:20:02 AnMaster: I think with CCBI they're 64-bit and unique... but I'm not sure 21:20:29 ais523: oh, and the livejournal software requires ROOT ACCESS to set up 21:20:33 ais523: it's almost as fiddly as slashcode 21:20:38 Deewiant, err, 64-bit? I thought data typed used was 32-bit, so if you spawned 2^31 you would get issues? 21:20:45 ehird: why? 21:20:53 ais523: you know I have no idea 21:20:55 ais523: but it does, officially 21:20:59 Deewiant, as y couldn't return it in a single data cell 21:21:13 AnMaster: beats me, okay? look at the source. :-P 21:21:24 Deewiant, heh ok 21:21:35 ais523: it's really crazy 21:22:09 http://code.sixapart.com/trac/livejournal/browser/trunk 21:22:16 Deewiant, btw what does ! mean in D? as in new Stack!(Semantics); 21:22:23 there is a directory named 't' 21:22:23 :D 21:22:29 AnMaster: Stack!(foo) -> Stack 21:22:30 in C++ 21:22:31 it's generics 21:22:34 or teamplates 21:22:36 oh I see 21:22:37 or whatever you wish to call em 21:22:52 ehird, I've used generics in C# yes so I know what they are 21:23:06 just used foo syntax there 21:23:14 ais523: whoaaa.... livejournal uses INLINE C! 21:23:15 http://code.sixapart.com/trac/livejournal/browser/trunk/src/utf8.pl 21:23:41 ehird: C's a compiled language usually, so I'm not sure if that even makes sense 21:24:09 ais523: Inline::C 21:24:14 ais523: it compiles it out from a string 21:24:16 very popular.. 21:24:20 i'm suprised you don't know of it 21:24:23 it's very useful 21:24:29 but ... yeah. in a blog software?! 21:24:45 * ais523 's mouse just came apart 21:25:05 ais523: btw, heres the big glob of bml http://code.sixapart.com/trac/livejournal/browser/trunk/htdocs 21:25:05 but I've snapped it back together; the battery cover keeps coming off 21:25:05 ehird, wait, does it compile it once in a temp dir or what? 21:25:06 AnMaster: pretty much 21:25:08 AnMaster: it's clever 21:25:09 ehird, ie, how does it work, does it fork() to run the code? 21:25:16 http://search.cpan.org/~ingy/Inline-0.44/C/C.pod 21:25:22 AnMaster: no 21:25:23 it's clever 21:25:24 http://search.cpan.org/~ingy/Inline-0.44/C/C.pod 21:25:25 ehird, I can't read perl :( 21:26:07 AnMaster: that's documentation 21:26:08 :| 21:26:16 ah 21:26:18 (And now on People Who Comment Before Clicking Links..) 21:26:34 ehird, I clicked, but dns server is slow today 21:26:42 so it's still loading 21:26:52 [22:24:04] ehird, I can't read perl :( 21:26:52 [22:24:46] AnMaster: that's documentation 21:26:55 quotelicious :D 21:27:17 heh 21:27:23 oklofok: that'll be on the qdb :p 21:32:33 ais523: umm, crap, i'm starting to want to code stuff in perl 21:32:37 ais523: WTF did you do to me 21:32:54 ehird: maybe that should be in the qdb too 21:33:05 ais523: ironically the thing i'm wanting to code in perl is the qdb. 21:33:06 :| 21:33:22 Perl is good for some things, bad for others 21:33:38 it's my first choice for anything rewriting-related, unless Thutu would be a resonable choice 21:33:51 ais523: of course, i'm not being silly and reusing perl webdev stuff 21:33:53 -!- RedDak has joined. 21:34:03 the most i'll use is CGI/CGI::Fast and some DB stuff 21:34:03 :-D 21:34:07 oh, and a template engine 21:34:12 Is it just me, or is the Internet rather centralized? 21:34:18 Sgeo: just you. 21:34:39 ais523: hmm, does perl have anything built on DBI so i don't have to use SQL? 21:34:40 I mean, there are root servers, and there also has to be some organization assigning IP addresses at the top 21:34:43 python has stuff like: 21:34:51 db.select("users", name="foo") 21:35:01 and you get a hash back 21:35:12 there's also ORMs but i'm not sure about any of perl's oo systems 21:35:46 Doesn't IANA basically control IP addresses and domain names? 21:39:23 boo 21:39:28 ? 21:43:17 * AnMaster stabs his code 21:43:29 infinite fork 21:43:33 for unknown reason 21:44:27 AnMaster: within the program, or did you just forkbomb your computer? 21:44:40 ais523, within the interpreter 21:44:43 just ttttttttttttttttttttt 21:44:45 like that 21:44:47 on mycology 21:44:49 * AnMaster debugs 21:48:00 ais523: eso-std.org should use shell scripts. 21:48:08 durable! ;) 21:48:18 oh god... cgi.sh library :D 21:48:45 forces your script to take parameters like ?a;b;c because sh doesn't have hashes :) 21:49:56 ehird: not that surprising, really 21:50:02 although they could emulate them 21:50:17 anything that has eval and allows arbitrary variable names that can escape the eval can emulate hashes ;) 21:51:25 ais523: i meant, it would be hilarious to have a module like that 21:51:31 and yeah 21:51:34 oh, you mean it doesn't exist yet? 21:51:36 using md5?! :D 21:51:44 stores in $GET__sdfs98dfu98su4knjfd 21:52:00 usage: $(hash GET foo) 21:52:01 :D 21:52:17 ehird: hashing using an actual cryptographic hash function strikes me as a neat mix of concepts 21:52:28 header () { echo -n "$1: $2\r\n" } 21:52:30 ais523: quite 21:52:41 the reason i said it is because you can trivially get an md5 from the shell 21:52:58 ehird: why not just header () { echo "$1: $2\r" } 21:53:06 that saves the need to use -n, which is nonportable 21:53:14 ais523: true 21:53:27 i need to write cgi.sh now 21:53:28 :D 21:54:02 ehird: your projects seem to require writing other projects in order to be able to start 21:54:15 it would be nice to get something up and running on eso-std.org sometime soon 21:54:23 a pastebin would have been useful, for instance 21:54:32 uh, i love java, reading a file to a string is like 6 lines <3 21:54:40 ais523: indeed 21:54:50 ais523: well, the pastebin is going to be Really Advanced(TM) ;) 21:54:53 And I like reinventing the wheel. 21:55:03 However, hopefully i only need to get the wheel right *once*. :p 21:55:21 md5 () { echo "$1" | md5sum | sed 's/ .*//' } 21:56:11 that won't distinguish between $1=--help and $1=the help text for GNU echo, if that's what's being used 21:56:44 ais523: huh? 21:56:50 md5sum outputs: "sum -" 21:56:59 $ echo "foo" | md5sum 21:56:59 d3b07384d113edec49eaa6238ad5ff00 - 21:57:05 I mean they're the same text, so they'll hash to the same thing 21:57:24 ais523: show me what you mean 21:57:24 not that this matters at all, but echo "x$1" would avoid that problem 21:57:30 '--help' is not equal to 'the help text' 21:57:35 oh wait 21:57:35 i see 21:57:40 ais523: better fix: 21:57:42 echo -- "$1" 21:57:49 but ... everyone uses the shell builtin 21:57:51 i mean seriously :) 21:58:01 echo will actually echo -- if you give it as an argument 21:58:07 oh jeez 21:58:37 * ais523 seems to remember a system (was it SunOS?) on which echo was deprecated in favour of printf 21:58:57 hah 21:59:18 maybe because it's command-line parameter processing was so inconsistent 21:59:22 s/it's/its/ 22:00:02 ais523: case/esac is portable, rihgt? 22:00:06 I think so 22:00:12 it's in POSIX sh IIRC 22:00:28 after all, nobody would use that syntax otherwise ;-) 22:02:14 _hash_"$1"_$(md5 "$2")="$3" 22:02:16 that's my 'set' 22:02:16 :D 22:02:30 ehird: why do you keep putting $1, etc., in double quotes? 22:02:32 Deewiant, I broke it so hard when adding concurrency it even fails mycology/sanity.bf when compiling with -DCONCURRENT_FUNGE *debugs* 22:02:36 ais523: hmm. good point 22:02:37 paranoia :| 22:02:42 i keep thinking about it in terms of rewrites 22:02:51 Deewiant, XD 22:02:52 because if they contain embedded spaces you're going to be in trouble anyway 22:02:57 AnMaster: :-) 22:03:16 Deewiant, I got no clue why it only prints sanity up to 7 atm 22:04:59 ais523: hmm i actually need no hashtable initialization 22:05:09 ais523: since it's purely virtual and there is no 'hashtable object' 22:05:10 coool 22:07:17 eval "echo \$"$(echo _hash_$2_$(cgi_md5 "$3")) 22:07:20 i'm sure that could be prettier 22:08:05 eval "echo $"_hash_$2_$(cgi_md5 "$3") 22:08:08 that's the nicest i can get it 22:08:31 ...why am I wasting my time on this? 22:08:44 * ais523 asked you that a while ago 22:12:21 wwwwwwwwwwwwwwwwwwwwwwwwtf 22:12:29 AnMaster: what 22:12:43 ehird, I'm adding concurrency to cfunge 22:12:46 I have some problems 22:13:55 in unrelated parts 22:13:57 -_- 22:14:33 AnMaster: your problem is clearly insufficient setjmp 22:14:48 ais523, harhar 22:14:53 because C-INTERCAL's threading works fine, at least on the programs that people have managed to think up so far 22:15:25 really, it seems I get some memory corruption somewhere or something, because something totally unrelated breaks 22:15:34 ie, funge-space 22:15:38 although half the times I think up a new and unusual way to use it it segfaults, normally in a way that left me wondering why it worked on everything else because I'd made an obvious typo 22:15:43 not changed, yet it breaks by concurrency 22:15:54 and well. it isn't actually threading after all 22:16:04 just looping instruction pointers 22:16:12 likewise on C-INTERCAL 22:16:14 it's not looked I threaded the interpreter itself 22:16:25 but that has several complications the way I've done it 22:16:34 because a simple straightforward INTERCAL interpreter is no fun 22:16:44 ais523, it even breaks on single threads now :/ 22:16:56 what about 0 or a negative number of threads? 22:17:06 ais523, current IP = 0 22:17:14 I checked that 22:17:22 that bit works, the issue is elsewhere 22:20:20 -!- RedDak has quit (Remote closed the connection). 22:23:10 ais523: so as it turns out trying to glue peices of software together to make a semi-framework isn't pretty 22:23:18 and actually using stuff is pretty 22:23:21 how suprising 22:30:21 i'm shocked that nobody else is suprised. 22:30:42 ehird, huh? 22:31:09 * AnMaster was afk 22:34:03 AnMaster: :) 22:34:23 what about it? 22:34:27 * AnMaster lacks context 22:37:30 * AnMaster ponders the irony of having a stack allocated on the heap 22:41:08 oh found it, I referenced once too many times 22:42:59 -!- oerjan has joined. 22:44:38 Deewiant, wow, this is pretty 22:44:52 Assuming that instructions without any particular concurrency-related behaviour, such as ^>v<#, take one tick. 22:44:52 Will continue to produce textual output, so strings must work correctly where concurrency is concerned: "a b" should take 5 ticks, 'a should take 1. 22:44:52 GGGGGGOGOGOGOGOGOGOOGOOGOOGOOGOOGOODGOODGOODGOODGOODGOODGO:ODGO:ODGO:ODGO:ODGO 22:45:01 Deewiant, that's good I assume? :D 22:45:02 ;) 22:47:21 BABABABDBDBABABBDBBABBDBABDDD 22:49:03 ehird, found it, ip didn't move correctly after split 22:49:11 so it split and split and split and so on 22:49:25 one thread stayed on t spawning new threads all the time 22:49:26 :) 22:49:49 cfunge: /home/arvid/src/cfunge08/src/stack.c:89: StackPush: Assertion `stack != ((void *)0)' failed. 22:49:53 * AnMaster looks 22:50:31 aha 22:50:47 it goes on to execute after thread finished :/ 22:51:20 ais523: how come perl manages to all look the same 22:51:28 especially when all I've learnt about it I've learnt from your pastes <.< 22:51:38 low barrier to entry i guess 22:51:58 ehird: because people are so unused to seeing anything that looks like perl, except maybe shell-script 22:52:26 it's like seeing people from a culture you aren't used to; they're all so different from you in terms of appearance, you find them hard to find apart whereas they can tell themselves apart quite easily 22:53:00 ais523, now you are just being weird :P 22:53:06 about all perl alike 22:53:12 I'm no racist, but all Malbolge programs look alike to me 22:53:16 I've seen readable perl 22:53:27 ais523, but indeed most perl looks like line noise 22:53:30 ais523: well hey, a quote management system as my second perl app may be... a little ambitious 22:53:43 ehird, to it in python 22:53:48 or C 22:54:02 ehird, or do it in perl but use Inline::C 22:54:05 * AnMaster runs 22:54:27 AnMaster: I was doing it in python, the first two times 22:54:37 First with a DIY framework, then with Spyce 22:54:40 ehird, that failed? 22:54:47 I was going to try Pylons, web.py &co but cba because I don't like frameworks like that 22:54:50 AnMaster: You betcha 22:54:52 ehird, try twisted? 22:55:02 AnMaster: Can I say 'please die in a fire' here? :< 22:55:09 ehird, I never used it 22:55:12 twisted for a web app is the most awful idea i've heard of 22:55:12 ever 22:55:27 ehird, I thought there was twisted HTTP or something? 22:55:38 or is twisted for writing http servers? 22:56:38 ehird, ? 22:56:56 ehird, look try php or python 22:57:07 or just use an existing software 22:58:06 AnMaster: php heh 22:58:16 and I just told you I tried Python *twice* 22:58:26 and twisted.web does exist, but eek. 22:58:34 and using an existing software is so not cool ;) 22:59:14 ehird, "PTTH"4( 22:59:50 is that a fingerprint? I thought it was SOCK 23:00:15 ais523, not an existing one no 23:00:25 ais523, SOCK does exist 23:00:40 but why not an HTTP server framework for befunge? 23:01:10 why not indeed 23:01:22 there was a CGI script written in INTERCAL, after all 23:01:28 * ais523 wonders if it's still online 23:01:38 ais523, some nice ideas btw: BOOP = Befunge Object Object Orientated Programming Extension 23:01:46 ais523, what do you think? 23:01:58 AnMaster: interesting 23:02:02 ais523, no idea how 23:03:12 ais523: Hmm, why is OOP in perl ugly as hell 23:03:16 sooo much boilerplate 23:03:23 ehird: I don't like Perl OOP either 23:03:40 ais523: Though this looks interesting 23:03:41 http://search.cpan.org/~stevan/Moose-0.40/lib/Moose.pm 23:03:57 ehird: http://www.muppetlabs.com/~breadbox/intercal/ins/insstart.html 23:05:40 ais523: when I saw the intercal spec 23:05:47 it was so extensive that i thought it would be pretty substantial 23:05:49 if esoteric 23:05:56 but it really has very little stuff.. 23:05:58 just fancy syntax. 23:06:04 ehird: have you seen my improved spec? 23:06:12 It's linked from http://intercal.freeshell.org 23:06:22 support for things like multithreading, operand overloading, and so on 23:06:31 CLC-INTERCAL, linked from the same site, has even more 23:06:43 its spec is simply a delta from INTERCAL-72 and yet still fills several pages 23:08:01 INTERCAL has come along a long way from the old days 23:08:13 (I challenge anyone to understand WHILE at the first attempt, for instance) 23:12:32 yarg, that INTERCAL CGI script stores information in the /names/ of elements 23:12:45

23:13:54 'use RatsAss;' is a vaguely disturbing line 23:13:59 ais523: yes, but even the basic stuff 23:16:43 ahh, how i love the fact that html 4.01 lets me omit / and other cruft 23:17:06 hello... 23:17:51 ehird: there are two schools of thought about HTML 23:18:04 one goes on to create XHTML, where a single typo blanks your page 23:18:10 the other goes on to create HTML 5 23:18:26 which has a DOCTYPE line of 23:18:36 is it ! or ?, actually, I can never remember 23:18:45 ais523, it is way easier to code an XHTML interpreter than a HTML one 23:18:53 but the point is it's the minimum number of characters needed to trip browser's compliance switches 23:18:54 because XHTML is more strict 23:19:04 AnMaster: I actually favour XHTML over HTML 23:19:09 ais523, good 23:19:42 ais523: not really 23:19:47 xhtml is step in the wrong direction 23:19:50 yes, it's more formal -- good 23:19:54 but it retains *cruft* 23:20:01 see, ehird, you belong to the /other/ school of thought 23:20:09 ais523: I used to be an XHTML weenie. 23:20:11 XHTML 1.1, even. 23:20:17 ais523, how was http://intercal.freeshell.org/ick-0.27/index.htm generated I wonder 23:20:25 seems familiar 23:20:29 INFO style? 23:20:29 AnMaster: texinfo 23:20:29 AnMaster: texinfo 23:20:32 aha 23:20:39 but with custom modifications 23:20:44 (also, you SHOULD serve xhtml as application/xml+xhtml, but IE dies on this) 23:20:44 try hovering the URLs, for instance 23:20:50 they're 8.3 format for DOS-compatibility 23:20:54 ais523, yeah doesn't look that the ones on gnu.org 23:21:02 and I'm using my own stylesheet 23:21:15 ais523, weird names yes 23:21:17 also, there's some custom hacking of the TOC and some of the headings 23:21:21 ais523, you made C-INTERCAL? 23:21:26 no 23:21:30 but I'm the current maintainer 23:21:33 aha 23:21:43 ais523, what is the weird filenames for 23:21:45 I mean, why 23:22:09 for DOS compatibility, of course 23:22:22 ais523, ok.... why DOS compatibility? 23:22:29 why on earth would anyone care about that? 23:22:37 AnMaster: c-intercal supports DOS. 23:22:40 because INTERCAL is compatible with a whole load of outdated technologies 23:22:47 DJGPP is one of the maintained targets for C-INTERCAL 23:22:56 which (apart from cygwin) is the only way to run it on Windows 23:23:02 ais523: I know at least one person who uses dos as his main system 23:23:08 know in a loose sense - internetknow 23:23:14 ais523, oh and what is the difference between CLC-INTERCAL and C-INTERCAL 23:23:21 ais523, what one is the "newest" 23:23:27 AnMaster: they're two different implementations 23:23:30 CLC-INTERCAL is newer 23:23:36 in terms of when it was created 23:23:42 but they're both actively maintained 23:23:44 ais523: uuurgh, I want a StrictWarningsIronFist 23:23:50 give it a package, it makes them all strict&warnings 23:23:55 ais523, who maintains CLC then? 23:23:55 so i don't have to type it all the goddamn time 23:24:31 AnMaster: Claudio Calvelli 23:24:42 ehird, -Wall -ansi -pedantic -Wextra -Werror 23:24:43 :P 23:24:55 ais523, not here in this channel? 23:25:01 not right now 23:25:07 ais523, also are CLC and your one compatible? 23:25:09 I don't think I've ever seen him here 23:25:14 AnMaster: to some extent 23:25:19 mhm? 23:25:21 each has features the other doesn't implement 23:25:32 but the ones that are implemented in both are mostly compatible 23:25:35 ais523: is CLC an abbreviation for his name? 23:25:38 the C-INTERCAL manual has a portability list 23:25:41 oerjan: not sure, but probably 23:26:07 and I comment on what each of the common commands does in each implementation 23:26:34 there were two INTERCAL-72 implementations that used different syntaxes (the Princeton and Atari implementations) 23:26:42 then C-INTERCAL, J-INTERCAL and CLC-INTERCAL 23:26:59 J-INTERCAL hasn't been updated in a while, and is just INTERCAL-72+COME FROM by label 23:27:00

Software error:

23:27:00
Quot.pm did not return a true value at index.cgi line 10.
23:27:06  I have to put a true value at the end of my module? :|
23:27:07  hah
23:27:35  yes
23:27:41  a Perl module traditionally ends 1;
23:27:56  also, I find the fact that I have to put @EXPORT etc in BEGIN disturbing
23:29:52  BEGIN {
23:29:52    use vars(@EXPORT);
23:29:52    @EXPORT = qw(quot);
23:29:52  }
23:29:57  faaar too verbose :D
23:31:02  err
23:31:18  add a qw in there
23:50:51 -!- sebbu2 has changed nick to sebbu.

2008-03-16:

00:30:08 -!- ais523 has quit (""Going home"").
00:35:54 -!- sebbu has quit ("je re").
00:41:28 -!- timotiis has quit (Remote closed the connection).
00:43:39 -!- slereah_ has joined.
00:44:38 -!- sebbu has joined.
00:46:52 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
01:12:51 -!- oerjan has quit ("Good night").
01:25:46 -!- calamari has joined.
01:30:16 -!- BMeph69 has changed nick to BMeph.
01:45:33 -!- Tritonio_ has joined.
01:45:41 -!- Tritonio__ has joined.
01:45:49 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
01:45:57 -!- Tritonio__ has quit (Read error: 104 (Connection reset by peer)).
01:46:13 -!- Tritonio_ has joined.
02:01:59 -!- RodgerTheGreat has joined.
02:08:12  Ugh, I just realized that if I do in fact make this language,  I am going to make my own profiler since it cannot use C calling convention. Sigh.
02:08:40 -!- ehird has quit ("Konversation terminated!").
02:08:44  Ugh.
02:08:59  Ugh.
02:09:23 * Sgeo has learned a LOT about DNS today
02:11:03  today, i pood, ate and coded java
02:11:19  (you figure out the parse tree.)
02:11:20  Heh,
02:11:35  I assume coding java and pooing are a single process.
02:12:17  cute, very cute
02:12:24  Eh, that doesn't make as much sense as it did in my head.
02:12:32  I apologize.
02:12:39  :D
02:13:01  sometimes i take the comp with me to the toilet.
02:13:13  if you have to ask
02:14:01  Well I was trying to make a simile between eating poo and coding java.
02:17:37  :D
02:17:50  i've made that multiple times
02:18:03  i mean
02:18:04  that simile
02:18:29  Except the words came out in senseless babble.
02:18:53  I guess that is the result of spending too much time writing a language spec.
02:19:16  My typing system is turning into a clone of C.
02:19:26  Pointers and such are exactly the same.
02:19:57  The only additional type I expect is a closure.
02:20:58  But every other aspect of the language is in no way similar to C.
02:20:59  At all.
02:22:15  is it esolicious?
02:22:57  What does that mean?
02:24:50  :)
02:25:01  ?
02:25:04  do you considered it esoteric?
02:25:24  Yes.
02:25:34  eso- is something you add when something is esoteric, -licious is just something you add when something is hot and steamy
02:25:49  the latter can also be a nop, depends on the situation
02:25:51  Heh.
02:30:50  I am trying to decide if I should even implement closures.
02:30:52  They are so slow.
02:31:24  And it isn't that much work to just create a function.
02:31:38  But it makes it even more confusing.
02:34:04  what kinda closures?
02:34:28  There is only one type of closure, no?
02:38:44  umm, closure = function copies surrounding namespace?
02:38:47  The US Government uses ZoneEdit?
02:39:09  oklofok: Basically.
02:39:46  Deformative: and that is slow because?
02:40:11  You need to stick all the local variables on the heap somewhere.
02:40:14  you just compile that into giving the params explicitly instead of taking them from the surroundings.
02:40:46  Yeah, but you need to malloc every single time you pass a closure.
02:40:57  And in my language they could EASILY become overused.
02:42:25  The user would likely end up creating a closure for the true and false of every single if statement.
02:42:34  And that is bad.
02:44:26  Plus it would massively uglify the syntax.
02:45:05 -!- Tritonio_ has quit (Remote closed the connection).
02:45:36  I am also trying to decide to have anonymous functions or not.
02:45:43  It is easily implemented.
02:45:46  But ugly.
02:50:38  anonymous functions are sex
02:50:48  you have them, and people will like you
02:53:10  Heh.
02:53:16  Yeah, I will implement those.
02:53:34  But I think closures are a nono.
02:54:43  Should I use <> or [] for function definitions?
02:54:59  I think <> so that i could use [] for arrays.
02:55:35  Even thought vice versa looks better,  [] for arrays will conform with all other languages.
02:56:52  Then I will use {} for structures.
02:56:56  And I do not know what for comments.
03:03:34  <> is cute
03:03:56  i use stuff with hyphens
03:04:04  <-- --> for oklotalk, -- for most
03:04:49  -- is from haskell, <-- --> is my own invention based on haskell + nopol, but it is also a html comment perhaps
03:05:00  not sure, i've never used comments in my html :)
03:07:18  Well I cannot use <> that is function definition.
03:07:45  I guess I could use /* */  but it is so difficult to type.
03:10:29  Heh, if I could make everything with more than 2 lines of indentation commented.
03:10:37  Because there will never be more than one.
03:10:38  Ever.
03:10:40  Which is nice.
03:11:34  s/if I could/if I was stupid I could
03:13:39  nono
03:13:44  make one indentation comment
03:13:47  0 and 2 are program!
03:13:59  xD
03:18:13  Maybe ~comments~
03:18:48  Or `comments`
03:18:59  Eh, the ` char is too small.
03:19:16  Not enough characters on the keyboard, seriously.
03:33:27  that's why they invented tokens
03:53:07  Hmm. ~comments~ would logically be not comments. :p
03:55:58  heh
03:56:05  "...colorForth can not help but be the one operating system in the world capable of being totally open and at the same time the most quickly understandable by children."
03:56:40  "...if you realize that this is possibly a once in a life time chance to make computing easier for the entire world in one project..."
03:56:49  (somebody wants to put colorForth on OLPC)
04:03:59  it's perhaps the most insane page i've ever seen. http://colorforthray.info/
04:20:42  I'm having difficulty understanding why colors are necessary or useful in FORTH.
04:23:29  and lament- if that's the most insane page you've ever seen, you should investigate http://www.timecube.com/
04:39:49  I like colorforth.
04:39:57  Could be better though.
05:04:33  That reminds me. . .
05:04:46  cherez: Going to do more of your dramatic readings of Time Cube?
05:06:25  Wow. The Time Cube stuff has even gotten worse recently. . .
05:07:14  The craziness goes up to eleven now.
05:09:11  the TimeCube page gets updated?
05:10:13  Yeah.
05:10:18  "Believer is far more EVIL than a False God, for Google
05:10:19  cut back my Site from 34,000,000 to 4,000,000 in 1 night
05:10:19  for the above Statement. 1 Day1God exists only as Evil.
05:10:19  I thought Google was free of such evil bias, predjudice
05:10:19   and shenanigans that block real truth from being known.
05:10:19  Once before, Google cut back my site from 89,000,000 to
05:10:21  34,000,000 in a single act for something I said, that/s Evil"
05:10:23  sorry
05:10:30  WTF is that supposed to MEAN?
05:10:41  He's now discussing +0- antipodes. . .
05:10:43  WTF is that?
05:11:18  http://uncyclopedia.org/wiki/Slime_Cube :D
05:11:39  BTW, a slime cube with a bunch of potions in it? *Dangerous*.
05:18:54  heh
05:19:23  I always figured it would digest any potions spilled within, but that could be interesting...
05:20:05  Potions activating at random.
05:20:08  *shudder*
05:24:04  knowing my campaigns, a couple random potions are instant, bottled hilarity
05:24:25  I was always proud of the "plaid potion".
05:26:24  ... Plaid potion?
05:26:33  Do I *want* to know what that does?
05:26:58  a particularly deranged alchemist made most of my players fear potions with odd, misspelled labels like the plague
05:27:05  pikhq: it does what it sounds like
05:27:59  ... it turns stuff plaid.
05:52:20  LMAO
05:52:45 * pikhq needs to know more of this campaign
05:53:35  I ran my D&D games very fast and loose, and there was a lot of comedy and running gags
05:54:25  "Melf" was a dangerously inept wizard/alchemist/probably pothead that made the craziest shit
05:55:23  sometimes my notes would be just a sheet of paper with "there are some caves, here's a random encounter table and here's a list of the insane magic items the players will find"
05:55:58  we could spend hours with them just figuring out what stuff did, fighting some goblins and solving a puzzle room or two
05:57:39  Even in the more serious adventures, it wasn't unusual to run across some "Melf's Acid Apples" or a deck of "Stinky Pete's Cards of Fortune"
06:00:09  the "bag-O-charisma" was a fun one. Strangle someone with it, and it steals a portion of their CHA, and then transfers it to the next person that dons the bag, temporarily. It took players a while to figure it out, and then caused trouble because nobody recognized the players afterwards until the effects wore off.
06:00:56  Fortunately one player, thinking quickly, beat himself in the face with a rock until he was ugly enough for the townspeople to recognize
06:01:21  good times, good times
06:04:56  y'know, I think if I could find my old notes to refresh my memory, I could make some pretty funny comics about our exploits back in the day
06:07:52  My God.
06:08:01  Hmm.
06:08:13  Of course, you need a few Decks of Everything.
06:08:27  Erm.
06:08:33  I forget the name of that again. . .
06:08:48  Deck of Many Things.
06:10:21 * pikhq goes off, sticks of Bag of Holding in a Bag of Holding.
06:10:57  Speaking of which. . .
06:11:05  RodgerTheGreat: You should have given out a bag of devouring.
06:12:09  One of my players sewed a bag of devouring into his pocket, hilariously slaying several pickpockets
06:12:46  LMAO
06:12:52  BRILLIANT!
06:13:07  and the books make it clear that storing bags of holding or portable holes in themselves or each other will tear a hole in existence and suck shit inside before disappearing
06:13:37  Fun to mess with magic objects.
06:14:41  I am *intimately* familiar with all the core rulebooks, particularly magic items. I'm good at memorizing these things, which is why I was a good DM. They're still all up here in my skull.
06:15:08  Damn.
06:15:10  After a year or two I never needed the books at all unless somebody had to roll up a character
06:15:26  Hmm. What's the funniest one you can think of?
06:15:30  just me, my notes, and dice.
06:15:37  uhm...
06:16:00  well, the hand and eye of Vecna aren't exactly funny, but they're interesting
06:16:26 * pikhq is not familiar with the magic items. . .
06:16:35  but you can't just sling those around willy nilly, because they're supposedly unique
06:16:36  Didn't come up much in campaigns I've played. ;)
06:17:14  I made loads of Vorpal quarterstaffs and intelligent +2 hafling skiprocks and goofy stuff like that
06:17:40  LMAO
06:20:19  hell, I could run an adventure over skype for old times sake someday if you can get a decent group together
06:20:44  If I can, sure.
06:21:08  what edition do you use?
06:22:02  I'm used to 3rd.
06:22:15  I might have a copy of 2nd around here, though.
06:22:20  good, good. Would you be up for trying 1st edition sometime?
06:22:30  the term "fucking brutal" doesn't do it justice
06:23:00  Sure, I'd be up for trying it.
06:23:01  I've always wanted to run an adventure for it, and I have a handful of classic modules I could snazz up
06:23:04  I lack rulebooks, though.
06:23:35  I can scan a couple pieces, explain the rest and preroll characters for people
06:23:49  I even have a table of pregenerated characters for this purpose
06:23:52  Mmkay.
06:24:12  Everyone will probably get 2 characters because they'll die like flies
06:25:08  example: in 1st edition, if you're disabling a poisoned lock and miss the DC, it stabs you. Fort save to resist poison. Fail the DC there, and your character is dead. period. stats are irrelevant.
06:25:53  Holy shit.
06:25:59  holy shit indeed
06:26:21  I wanna try that trick with the bag of devouring, though. . .
06:26:25  Hmm.
06:26:33  Something more unique would be nice, though.
06:26:36  in 1st edition a wizard's starting HP is lower than an average housecat. There is no difference between money and XP. Everything, EVERYTHING is fucking hardcore.
06:27:03  O.O
06:27:38  Melf's Acid apples are cool. Bite into one and it'll dissolve most of your head. They're best used as grenade-like things once you know what they actually are. Good for making holes in castle walls
06:27:55  (one of my inventions, btw)
06:28:34  I think the damage was like 2d10+5+ 1d4 CHA damage if you ate it.
06:28:44  but really, improvisation is key here
06:30:29 * pikhq discovers an online copy of the d20 ruleset. w00ts.
06:30:51  (and yes, I know there's a difference between CHA and Rifts-style P.B.- you're less persuasive and convincing when you don't have a lower jaw.)
06:31:21  A Cloak of Poisonousness. . .
06:31:22  Hmm.
06:31:31  That could actually be used as a deadly weapon.
06:31:36  did I mention that aside from encyclopedic knowledge of D&D I know about 6 other rulesets as well?
06:31:51  (put it on. Unless you succeed a fortitude check of 28, you die.)
06:31:53  Wow.
06:32:45  This all contributes to why I play with out books, and make up most stuff on the fly- I know how everything works, and I know all kinds of ways it *could* work.
06:33:45  eventually, you realize the books are just there to point you in the direction, and if you take enough of a running jump on your own, you can learn to fly.
06:35:21  Well, of course.
06:35:28  it's like the DM/GM equivalent of becoming "the one". The rules of a roleplaying game are just like the rules of a computer system- some can be bent. Others, broken.
06:35:38  The game is just a conduit for storytelling.
06:36:00  Most of the time, I'd play using nothing but my character sheet. . . The DM would look things up from time to time, but most of the time, it was just sheer amusement. . .
06:36:15 * pikhq remembers the final day of his first campaign. . . A giant chicken ended that. XD
06:37:25  The DM stuck a rubber chicken and some miniatures on the table and said 'There. You're fighting that.'
06:37:29  'I summon a giant bee.'
06:37:30  :D
06:37:41  A good DM knows the only rules necessary to play are the following: 1) Be consistent. 2) Be fair. 3) You want the players to succeed, but they don't have to know that. 4) keep 'em guessing.
06:37:44 * pikhq <3 druids, BTW. . .
06:38:14  follow those principles and you can have a grand time doing *anything*
06:38:18  Another campaign ended in apocalypse. For the hell of it, he was rolling an apocalypse check every time we did something really, really unlikely.
06:38:23  (3 20s in a row, for example.)
06:39:49  best moment for me as a player EVER "I rolled a 20! I succeeded" "No, you didn't" "What if he rolls a nat 20 too?" "Yeah, like that's gonna happen" (rolls a nat 20 without blinking) "... fuck you guys. It explodes."
06:40:38  "I rolled a 20. Thrice." "That. . . Can't die. . ."
06:41:11  new galleries on my site for games (http://rodger.nonlogic.org/games.php) and comics (http://rodger.nonlogic.org/comics.php), btw
06:41:13  "Fine. It dies. You see it again, behind you."
06:42:00  w00ts.
06:42:07  "I hide and make the sounds of a babbling brook to throw the owlbears off my trail" (critical failure) "BAAAASSS! BAAASSS!"
06:42:53  LMAO
06:44:24  and then there was the time my character used weighted dice and some insane bluff checks to win EVERYTHING the guards to this fortress OWNED while the other characters snuck in and locked them out.
06:44:51  http://rodger.nonlogic.org/comics/Comic019.png Brilliant.
06:45:27  "halt who goes there" "Flashbang, gnomish smith of great renown. Up for a game of chance? I have *shiny* things..."
06:45:54  I thought CL#24 would be topical
06:45:58  :D
06:47:45  have you tried out "Polyp", my new game?
06:47:50  http://rodger.nonlogic.org/comics/Comic011.png Sorry, but I won.
06:47:53  I'll have to in a bit.
06:48:09  that XKCD was so uncool.
06:48:20  I disagree.
06:48:35  I think The Game just became more positive.
06:49:30  I think ryan just has a less rigorous strain of the virus- mine is pretty explicit about what constitutes a win condition.
06:49:54  "A STRANGE GAME; THE ONLY WINNING MOVE IS NOT TO PLAY. *klick*"
06:50:40  and goddamnit why hasn't Aaron updated yet.
06:50:57  Because he must be executed.
06:51:10  Nice 'weekly' schedule, no?
06:51:25  s/weekly/semi-monthly
06:51:35  If we're lucky.
06:53:05  I gather you're starting to take my point of view on the matter
06:53:20  Yes.
06:53:28  It was one thing when he didn't update during the flu and moving. . .
06:53:40  "If you do a strip for a living, MOTHERFUCKING TREAT YOUR RELEASE SCHEDULE AS MORE THAN A VAGUE SUGGESTION"
06:53:46  But god dammit, it's halfway through March, and we've had one update in the past two weeks.
06:53:56  s/weeks/months/
06:54:08  there we go
06:55:00  at that rate, 6 strips per YEAR. Dresden Codak is well done, but I could draw something that well blindfolded if I had two months in which to make it.
06:55:29  http://rodger.nonlogic.org/comics/Comic001.png
06:55:41  that one's a classic
06:55:45  Truly.
06:55:53  I'll need to stick that one on my wall or something.
06:56:17  based on a true story no less
06:57:46  Wow.
06:57:56  I had a fun orientation week.
06:58:39  Heheh.
07:00:22 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
07:03:21  anyway, frickin' try Polyp before I go to sleep
07:03:42  Mmkay.
07:05:31  Brilliant.
07:05:48  thankoo
07:05:56  under 700 lines of code
07:07:31 -!- calamari has quit ("Leaving").
07:13:47  Damn.
07:14:42  feel free to download the source and fiddle. It's all WTFPLed
07:34:31  I'm out
07:34:41 -!- RodgerTheGreat has quit.
07:47:40 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:14:24 -!- RedDak has joined.
09:37:24 -!- Corun has quit ("This computer has gone to sleep").
10:20:03 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
10:25:04 -!- RedDak has joined.
11:32:46 -!- marshmallows has joined.
13:14:04 -!- slereah_ has quit (Remote closed the connection).
13:14:31 -!- Slereah has joined.
13:20:56  what is a "low-order copy"?
13:21:33  it's mentioned in some befunge fingerprint specs I'm trying to implement, but I got no idea what it is
13:26:16  C ('bracelet') pops three vectors off the stack and performs a low-order copy of Funge-Space.
13:30:49  IIRC the way I interpreted that is start from the end, not the beginning, or vice versa
13:31:00  i.e. go from top left to bottom right versus bottom right to top left
14:04:16  ah so not a high order byte copy?
14:08:03 -!- RodgerTheGreat has joined.
14:08:33 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
14:09:18 -!- bsmntbombdood has joined.
14:09:24  no, probably not
14:10:37  howdy
14:10:55  yo
14:11:16  AnMaster: if I recall correctly, !Befunge does it the same way - or at least tries to, the mycology test fails
14:11:36  heh
14:12:02  Deewiant, you need to update that chart, try my last version, it got concurrency
14:12:12  I need to update it anyway
14:12:16  Deewiant, pretty fast still with my super-optimize script
14:12:29  no idea if you *want* to see it
14:12:37  probably not ;-)
14:12:52  Deewiant, it's not that bad
14:13:09  Deewiant, http://rafb.net/p/ipoHrq23.html
14:13:18  need to be run from top checkout dir
14:13:25  ie, out of tree builds = not supported
14:14:12  Deewiant, also skipping GC = saves about 0.01 seconds or so
14:14:26 * AnMaster is down around 0.077 here so :D
14:14:35  with that script
14:15:20  Deewiant, anyway what do you think? try adding your own -march and such in CHOSTFLAGS
14:15:34  I think that's overkill :-)
14:15:35  I want to know how well it performs with that
14:15:47  Deewiant, yes but I want to see how fast I can get it!
14:16:04  you haven't compared startup times yet? i.e. just replace the first char of mycology with @
14:16:06  Deewiant, oh and you may want to add -DCONCURRENT_FUNGE to DEFINES variable
14:16:17  Deewiant, right, I'll test that
14:17:03 * AnMaster ponders optimizing if it can be determined that part of the program won't get loaded, ie, if first char is @ just quit :D
14:17:55  real    0m0.066s
14:18:03  Deewiant, hrrm, looks like loading takes most of the time
14:18:11  for cfunge at least
14:18:19  as I thought
14:18:40  the program is completely IO bound and you're optimizing CPU usage like crazy :-)
14:19:06  Deewiant, well without my optimizing it wouldn't be IO bound
14:19:19 * AnMaster goes to look at how to make loading faster
14:19:20  no, I still think it would be
14:19:41  if a program spends 90% of its time doing IO it's IO bound alright ;-)
14:20:00  Deewiant, because in CCBI the difference is much larger
14:20:19  how big?
14:20:28  real    0m0.188s for ./ccbi --disable-fprints ~/src/cfunge08/mycology/mycology.b98 > /dev/null
14:20:32  real    0m0.117s
14:20:35  and keep in mind that CCBI is always doing IO during mycology as well :-)
14:20:36  with it disabled
14:21:09  is that the latest CCBI?
14:21:29  Deewiant, well notice that I got it down from around 0.150 to 0.070 with my cpu optimizing, with -O0 -ggdb3 it takes around 0.500
14:21:54  Deewiant, no, not the very last, will download last
14:22:06  this one had the typo in --help
14:22:11  so we've got a program that used to take 0.2 seconds to run now takes 0.1 seconds to run, and it's doing IO for 70% of that :-)
14:22:23  Deewiant, for what is left yes
14:22:43  I don't know, optimizing such just seems like so much overkill :-)
14:22:53  I'd go optimize bashfunge instead
14:23:12  Deewiant, bah, it would fail at doing x
14:23:18  the way it was implemented
14:23:57  Deewiant, the last ccbi zip file from your site is slower
14:24:00  $ time ./ccbi --disable-fprints ~/src/cfunge08/mycology/mycology.b98 > /dev/null
14:24:00  real    0m0.179s
14:24:07  with @ at start
14:24:10  real    0m0.244s
14:24:13  without @ at start
14:24:14 -!- timotiis has joined.
14:24:15  heh
14:24:29  I don't know, it's about 50% faster for me :-)
14:24:37  Deewiant, probably CPU?
14:24:42  hence we see that optimizations are once again a bit... dubious
14:24:49  Deewiant, I downloaded the last ccbi_linux.zip
14:24:55  Deewiant, not if you do profiling!
14:25:04  I do do profiling
14:25:07  oh?
14:25:10  gcov?
14:25:17  that took the time for funge-space access down by 30% or so
14:25:21  here, at least.
14:25:41  Deewiant, yes indeed, changing to not pass fspace pointer around helped for me too
14:25:56  and it wouldn't be needed without TRDS I suspect
14:26:51  Deewiant, if I profile for a mycology with a @ at the start I can get time down to less than 0.06 seconds XD
14:26:57 * AnMaster runs (it was a joke!)
14:27:21  of course, what I don't do is profile-guided optimization. :-P
14:27:34  Deewiant, hehe indeed
14:28:25  I got an idea at least, hm can you get the size of a file without using stat *looks at man pages*
14:28:47  Deewiant, what I'm thinking about is doing some optimizing of initial allocation size
14:28:58  to select maybe 1.25 * program size
14:29:15  instead of hard coded defaults
14:34:34 -!- oerjan has joined.
14:54:57  Deewiant, it looks, according to gprof, like the bottle neck is inserting into hash table
14:55:09  yep
14:55:23  so, faster hash library then?
14:55:43  or admit you're at the limit :-P
14:56:06  Deewiant, nah, current hash library I selected because it was 1) lgpl 2) small 3) easy to use
14:56:34  I've seen better that are 1) custom GPL compatible  2) large 3) harder to use
14:57:04  http://www.sunrisetel.net/software/devtools/sunrise-data-dictionary.shtml <-- going to investigate that one
14:57:30  Deewiant, anyway I can speed up current hash library a bit
14:57:41  by hard coding it to handle FUNGEDATATYPE
14:57:51  instead of handling pointers to data
14:57:53  should help eh?
14:57:58  :-P
14:58:11  Deewiant, you don't think so?
14:58:37  I'm not going to say anything, I'm just going to sit here and laugh at your desperate attempts to squeeze every last bit of performance from a Befunge interpreter :-D
14:58:39  Deewiant, also it use a function pointer to a hash function, hard coding it to use one of the hash functions instead would also help
14:59:08  Deewiant, it's just a matter of seeing "how far can I take this"
14:59:28  Deewiant, it looks like most code in mycology only executes once, right?
14:59:34  so a JIT wouldn't help much
15:01:25  Deewiant, looks like gprof works sub-optimally on binaries with much inlining hrrm
15:05:17  Deewiant, without inlineing I see it is "search_in_bucket" private function of hash table that is slowest
15:10:05  here a GC function is the one that takes most time
15:10:23  AnMaster: what style of GC is the boehm one? generational, mark-and-sweep, what?
15:10:42  Deewiant, mark-and-sweep iirc
15:11:00  or some variant of that
15:11:41  yep mark-and-sweep
15:12:04  Deewiant, anyway that was a build without GC I tried to check what was going on in hash
15:12:21  looks like it does some generational collection as well
15:12:34  the search_in_bucket takes 80% of the time of running when mycology starts with a @
15:12:37  :/
15:12:48  and it already looks quite optimized
15:13:19  here gc.mark takes 30%, followed by input, followed by hashing, followed by input, followed by gc.fullCollect, followed by gc_calloc
15:13:31  Deewiant, calloc, hrrm
15:13:39 -!- slereah_ has joined.
15:13:45  Deewiant, anyway I did LEAK_MODE to check without gc
15:13:51  AnMaster: D always initializes all variables
15:14:03  might cause slowdown somewhere with arrays, can't be bothered to find where
15:14:06  Deewiant, aha, well I think boehm does too
15:14:54  the difference is that where you do int[40] x; D also does memset(&x, 0, 40 * int.sizeof);   or something :-)
15:14:54  at least you can safely do: #define calloc(x,y)  GC_MALLOC(x) * (y))
15:14:55  iirc
15:15:03  Deewiant, ah I see
15:15:19  but I don't really use static arrays much anyway
15:15:34  static arrays would not be initialized would they?
15:15:42  that was a static array
15:15:45  and yes, it would be.
15:15:46  nor ones allocated on the stack, right?
15:15:50  hm
15:15:52  yes, they would be.
15:15:56  everything is initialized to something.
15:16:02  they wouldn't in C I think
15:16:07  well static array might
15:16:08  depends
15:16:09  correct, they wouldn't.
15:16:22  C initializes nothing implicitly.
15:16:56 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
15:16:59  Deewiant, that still doesn't explain why an array on stack ended up as { 0, 0, 0, 0 } without initializing heh
15:17:11  dumb luck
15:17:20 -!- oklofok has quit (No route to host).
15:17:41  Deewiant, probably, anyway I filled it just one line after so didn't matter, but gdb told me every time I hit it that it was that
15:19:18 * AnMaster thinks DESCRIPTION and RETURN VALUE of man memcmp are somewhat redundant, telling the same info
15:20:02  aha, gcc does a __builtin__ for memcmp, explains why that instruction took so much
15:21:19  Deewiant, btw kprof is very nice
15:22:03  Deewiant, and it turns out according to it, the real problem isn't loading when running without @, but getting from hash
15:23:58  Deewiant, of the 0.8 seconds to run without the @, about 0.4 is spent searching in hash
15:23:59  :/
15:24:05  so not really IO bound
15:24:13  but hash table lookup bound
15:24:28  and of course insert on loading program needs to look up too
15:33:56 -!- slereah__ has joined.
15:40:31 -!- oklofok has joined.
15:40:50 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
15:44:50  Deewiant, for now I'm not going to try to optimize hash, but the way it is coded it should be easy to replace with another hash library later
15:53:53 -!- faxathisia has joined.
15:54:51 -!- marshmallows has quit (Nick collision from services.).
15:55:03 -!- faxathisia has changed nick to marshmallows.
16:00:37 -!- Slereah has joined.
16:03:30 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
16:13:28 * SimonRC curses his net connection
16:18:14  Should I have whitespace separate type and var name the way C does?
16:18:40  Deformative in what context?
16:18:42  That is the only relevant whitespace in my whole language if I do.
16:18:55  marshmallows: Function definition.
16:18:58  ?
16:19:06  what does the language look like
16:19:36  who are these two people?
16:19:49  Deformative: how about a colon
16:20:03  Uhm,  there is no other languages that have the same syntax as the one I am designing.
16:20:13  It has the C typing system.
16:20:16  But that's about it.
16:20:24  "var : type" is a common syntax for variable types
16:20:51  sigh, I still have no idea what the language looks like.....
16:21:07  It is the formal one, as well as the one found in Haskell, Pascal, ML-likes, etc
16:21:36  I don't think any of those languages does that..
16:22:08  haskell uses ::, Pascal uses whitespace (sort of like C), and ML don't have explicit type annotation....?
16:22:24  pascal uses :
16:22:29  var foo : integer;
16:22:31  functionName<..., type arg, type arg> continuation(..., arg, arg)
16:22:33  okt it does
16:22:36  things like "global foo : int"
16:22:46  That is the current syntax, and I don't really like it.
16:23:16  ok yeah get rid of the <> and do it like pascal
16:23:46  ?
16:23:53  ?
16:24:12  and Haskell and ML-likes just took the two alternatives to the dilemma of : or :: for cons and : or :: for type-annotation
16:25:27  I would rather use <> for arrays and [] for function definitions, but I figured it would be better to follow the conventions of C and such.
16:31:51  why not use -> for array indexing?
16:32:12  or >>, or !!, or !, or } or some other symbol
16:32:24  All of those are from actual languages
16:32:35  where's }?
16:32:35  except the >> I think
16:32:37  Uh.
16:32:47  They are ugly, heh. And i am using {} for structures/
16:33:09  }, or maybe it is {, is in J and K
16:33:32  Heh, J is fun.
16:33:35  I was thinking of esoteric languages and almost hit the mark ;-)
16:34:09  !! and ! are or course from Haskell, and I forget where -> is from
16:35:25  Hm
16:36:32  maybe Euphoria
16:37:55  So yeah, <> looks somewhat ugly, but I think I will use it.
16:38:15  Cannot decide for the types though.
16:43:06  Ah, I remember
16:43:24  -> and --> as indexing operators are out of Inform
16:43:42  -> is byte indexing and --> is word indexing
16:45:17  there's plain brackets, table(idx), too
16:46:19  Hmm, that is function call though.
16:51:39  hm
16:51:51  Deewiant, I think I'm close to the limit of speed with current design yes
16:52:02  so I'll concentrate on features instead
16:52:36  Deewiant, oh and I do have some idea for loading faster, the problem is the actual IO part isn't the slow bit, it is the hash table lookup that is
16:53:02  Deewiant, btw, anyone made some sort of coverage analysis for befunge?
16:53:02  yep, same here
16:53:11  all time is basically dominated for hash table + GC
16:53:17  what do you mean?
16:53:50  Deewiant, as in gcov style, shows how many time each line is executed, for befunge that would be instruction not line of course
16:54:28  I could do that right now by just compiling with -cov and running :-P
16:54:34  Deewiant, I plan to use gcov on my source to see how much of it mycology actually tests
16:54:48  Deformative: the same syntax for function calls and array indexing is fine.
16:54:51  I think I did, too
16:54:54  Deewiant, but I mean actual coverage on the befunge program itself
16:54:57  but not gcov
16:55:16  Deewiant, as in see how much of mycology is executed in CCBI for example
16:55:22  AnMaster: you mean not count how many times # is called, but how many times a particular # is called
16:55:30  Deewiant, yep
16:55:47 -!- Tritonio_ has joined.
16:55:50  basically easy to do by running your trace mode, for instance
16:55:53  After all, an array is just a function from the index to a mutable cell
16:55:56  and then just use a program which counts that
16:56:07  Deewiant, hm indeed
16:57:12  AnMaster: have you run the Fungus Befunge IDE?
16:57:20  Deewiant, err no?
16:57:41  AnMaster: it has a cool "show path that IP travelled" kind of feature
16:57:47  nice
16:57:55  it draws lines on top of the befunge program to show where the IP went
16:58:03  cool
16:58:06  by the way it seems CRC32 hash is faster than one-at-a-time hash, hm....
16:58:19  can it draw lines over all the boundaries that the IP didn't cross?
16:58:24  Deewiant, very nice, except for mycology fingerprints it would look like a mess
16:58:27  that is more comprehensible
16:58:29  as you use common loading code
16:58:30  I was thinking of implementing something like that for CCBI, and was thinking even of a protocol so that you could map any GUI onto it
16:58:37  well, not a mess
16:58:47  the same line is just drawn a bunch of times
16:58:54  hm
16:58:59  since it's always entered from the same direction etc.
16:59:07  SimonRC: I don't think so.
16:59:11  Deewiant, well yes should be useful for coverage analysis
16:59:23  however, how does it show the line over say:    #v  r
16:59:55  I guess I could upload a screenie of what it does with the parts of Mycology that it can handle
16:59:58  when annotating Hunt The Wumpus, I found that lines between code to show where the IP didn't go were much easier to read than lines the showed where it did go
17:00:00  Deewiant, hm fungus site gone?
17:00:03  it doesn't look /that/ great but it's handy
17:00:18  Deewiant, and only a windows binary on your site :(
17:00:20  AnMaster: yeah, only the web archive page exists
17:00:26  and only a windows binary was ever releaased
17:00:32  Deewiant, closed source?!
17:00:40  like I say, The only closed-source Befunge interpreter I’ve come across.
17:00:41  :-)
17:01:01  Deewiant, upload screenshot somewhere, say omploader or such a picture pastebin
17:01:08 -!- Corun has joined.
17:02:18  Deewiant, anyway when do you plan to update your mycology results page?
17:03:25  as soon as I can bother :-P
17:03:39  Deewiant, you used some script to generate that table?
17:03:55  yes, of course
17:04:11  in what language?
17:04:15  haskell
17:04:34  ah, was going to ask you to send them over so I can have a look, but if it is haskell forget it
17:04:43  :-P
17:05:08  http://users.tkk.fi/~mniemenm/fungus_running.png and http://users.tkk.fi/~mniemenm/fungus_end.png
17:05:14  I mean, I don't know D, but if I read your D code I can often guess what it is trying to do, same for C++, but well with haskell it is just weird
17:05:17  like said, it's nothing special
17:05:34  Deewiant, oh, I was hoping for some opengl stuff with arrows and such
17:05:43  nope
17:05:57  hence why I was thinking of some kind of standard-ish protocol
17:06:23  Deewiant, yes if you make one I'll be sure to implement it
17:06:39  Deewiant, something over unix sockets maybe?
17:06:42  i.e. interpreter outputs "IP with ID foo and mode bar is at pos x,y with delta a,b and offset f,g" or whatever and then a frontend can draw stuff given that
17:06:44  or just stdout/stdin?
17:07:05  doesn't matter really, but ideally text-based
17:07:11  hmm
17:07:13  Deewiant, I'd prefer a more compact and easier to parse for a program format
17:07:16  like say:
17:07:22  well, of course not literally like that
17:07:25  but I mean, not binary
17:07:50  foo bar x y a b f g
17:08:07  IP=5;MODE=STR;POSX=5;POSY=7;DELTAX ....
17:08:14  that would allow 3D too
17:08:20  just add POSZ
17:08:21  but not greater than 3D
17:08:22  hm
17:08:27  Deewiant, ÅÄÖ ;P
17:08:29  which is why something like pos={5,7} would be better
17:08:35  Deewiant, yep agreed
17:08:53  fscanf(sock, "%d %d %d %d %d %d %d %d", &id, &mode, etc etc etc
17:09:11  but sloooooow
17:09:13  Deewiant, but please make it easy to parse with scanf or such, and single line for each to parse
17:09:17  the trick is how to handle stuff like mode and fingerprints, and what kind of all info is needed
17:09:45  maybe indent following lines with whitespace?
17:09:52  Deewiant, for mode you could do some string constants, say CODE,STR for the two standard ones, and some more
17:10:07  Deewiant, support for transmitting TRDS info would NOT be needed
17:10:12  I'd suggest not allowing that
17:10:17  I was just about to say what about TRDS :-D
17:10:20  so you have an ID, pos, delta, and other fixed stuff, then an indented list of properties
17:10:31  Deewiant, it's horrible, and quite pointless
17:10:32  Deewiant: lol
17:10:37  it seems like we're rapidly moving towards JSON/sexps ;-)
17:10:45  s-expressions sure
17:10:45  yaml?
17:10:50  s-expressions
17:10:54  no, XML is the answer
17:10:54  whatever, but not XML ;-)
17:10:56  :-)
17:11:01 * AnMaster is a emacs user and is used to elisp
17:11:10  so I feel at home with S-Expressions
17:11:16  TRDS would be pretty easy to support actually
17:11:33  Deewiant, I even wrote some code in C# to seralize .NET classes to S-Expressions
17:11:37  all that happens is all the IPs suddenly move to a different place
17:11:42  and space is modified
17:11:43  or rather I wrote a substantial part of that code
17:11:58  the actual parser and tokenizer someone else coded
17:12:09  TODO: prolog in befunge via TRDS
17:12:11  :-)
17:12:27  SimonRC, ERR_TRDS_TOO_STUPID_NOT_SUPPORTED
17:12:30  :P
17:12:34  actually TRDS allows IPs to meet their younger selves
17:12:44  weird name TRDS
17:12:44  I think
17:12:51  I don't get what TRDS stands for
17:12:54  AnMaster: no, very mnuemonic
17:12:55  AnMaster: TARDIS
17:12:58  http://en.wikipedia.org/wiki/TARDIS
17:13:18  Deewiant, ah, never watched that TV series
17:13:44  you missed out
17:14:54  where is the TRDS spec?
17:23:43  SimonRC: in the RC/Funge-98 readme
17:25:17  Deewiant, I find it odd some even fail at sainty.bf
17:25:37  http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/!Befunge.txt
17:25:38  err?
17:25:51  output looks ok?
17:25:53 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
17:26:00  AnMaster: "*** Exited normally"
17:26:03  yet it is marked as bad
17:26:08 -!- Slereah has joined.
17:26:12  Deewiant, ah so it shows that at the end?
17:26:24  as you can see right there :-P
17:26:32  you can always compare to the expected
17:26:47  err but why is CCBI marked good, output doesn't match
17:26:51  CCBI shows a warning message
17:26:55  http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/CCBI.txt
17:26:59  because it can be removed
17:27:03  by not specifying -w
17:27:13  Deewiant, ah for me it is "enable warnings by -W"
17:27:49  that's why it says for !Befunge "irremovable exit code output" - it can't be removed
17:28:00  Deewiant, hm does http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/FBBI.txt contain something strange? I get a download box instead of it getting show inside firefox like the rest of the files
17:28:24  yeah, apparently firefox or the web server don't like txt files that contain null bytes
17:28:41  aha
17:28:53  or not null bytes, but control characters
17:29:23  and hmm
17:29:43  Deewiant, "# < jumps over <" in http://users.tkk.fi/~mniemenm/befunge/mycology-output/befunge93/BeQunge.txt why did that cause END?
17:29:50  or did it crash just after that?
17:30:04  ask BeQunge what happened :-P
17:30:13  no trace?
17:30:24  it's an IDE
17:30:37  ah probably trace then
17:30:37  and even if there were, I wouldn't bother to find out
17:31:02  Deewiant, ah but for !Befunge you would bother to check I suspect? ;P
17:31:09  but actually, no
17:31:13  # < is fatal
17:31:17  ah ok
17:31:20  as in, mycology quits afterward
17:31:32  AnMaster: yeah, if the interpreter is interesting in its own right, sure
17:31:39  but if it's just another crap implementation then no :-P
17:31:46  "BAD: 3k< takes more than two ticks" <-- hm is there no matching GOOD for that one?
17:32:11  expected.txt seems to have it
17:32:15  GOOD: 3k< takes two ticks
17:32:17 * AnMaster checks cfunge
17:32:30  oh yes it's there
17:32:30 * SimonRC realises something important about befunge...
17:32:34  SimonRC, yes?
17:32:39  that it is a bloated language?
17:32:44  that it's hard to compile?
17:32:46  You can't add new operators that look like the built-in ones
17:33:10  SimonRC, indeed, all chars between ASCII 32 and 127 are in use
17:33:23  127 isn't
17:33:24  In things like C, most stuff is in functions, and your functions look like the builtins
17:33:31  127 is a control char
17:33:35  Deewiant, sure? isn't 127 == ~?
17:33:37 * AnMaster checks
17:33:40  as SimonRC said
17:33:43  ~ is 126
17:34:10  ah yes
17:34:10  so what control char is 127 then?
17:34:15  it's called DEL
17:34:19  On my ASCII chart, it's some sort of house shape
17:34:22  aha
17:34:25  it is often typed as Ctrl-?
17:34:45  Deewiant, btw, the limit on chars in input is a bit odd for befunge
17:35:03  it is one of the two common bindings for backspadem, the other being ^H (BS)
17:35:09  "(and greater than 255 on systems where characters are stored in multiple bytes; but no greater
17:35:09  than 2,147,483,647.)"
17:35:27  seems reasonab;e
17:35:28  Deewiant, does that mean I have to handle chars greater than 255? Ie, handle utf8
17:35:35  currently I read files in assuming 8 bit chars
17:35:40  no, it doesn't
17:35:44  I originally read that so that you do
17:35:53  and made the mistake of assuming UTF-8 on input
17:36:02  hmm, on systems where there is a difference, are befunge files text or binary?
17:36:03  but note that it talks about /systems/ where characters are stored in multiple bytes
17:36:12  not about text encodings or anything like that
17:36:14  Deewiant, what such systems exist?
17:36:18  it makes a difference if you have (e.g.) Chinese strings as UTF-8
17:36:26  AnMaster: I have no clue
17:36:46  if you read further it's clear what is meant
17:36:48  That is to say, character #417 may look like a squiggle on system Foo and a happy face on system Bar, but the meaning is always the same to Funge, 'character #417', regardless of what it looks like.
17:37:32  Deewiant, also utf8 should work fine, say a char consists of {125 123}, assuming it is loaded on stack that way and the terminal interpreters it as such an encoding, it will work fine
17:37:33  so if you get 0xeb 0xbb 0xbf on input you're not to read it as char #65534
17:37:53  Deewiant, however that will depend on if you travel > or < or other direction
17:37:57  AnMaster: yes, just plain reading/writing in basic ways works if done correctly.
17:38:11  it may mess up columns
17:38:15  AnMaster: just as getting GOOD or DOOG depends on which dir you're moving in. :-)
17:38:33  yes, if you assume your editor's display is correct in that sense
17:38:35  and if you do say    "ö" you would get different results depending on what way you travel
17:38:48  and it would be a PITA to write in reverse
17:39:21  just do ;#"ö";# <
17:39:28  err what?
17:39:38  for reverse
17:39:38  oh I get it
17:39:55  Deewiant, however it would break say, ip going down over line later on it
17:39:57  or, if you've got the luxury of a working j or x
17:40:00  use them
17:40:09  personally, I would store each unicode code point in one cell
17:40:09              v
17:40:09      ö       >
17:40:17  that may not work as expected
17:40:18  AnMaster: like said, if you think your editor display is correct then you're mistaken.
17:40:26  Deewiant, heh
17:40:29  hmm
17:40:45   or, if you've got the luxury of a working j or x <-- yes but what is wrong with ; ?
17:40:49  SimonRC: yeah, such a mode could easily be implemented, but it'd depend on interpreter support.
17:40:52  ; is very nice for comments
17:40:57  AnMaster: if you've got more ;s
17:41:05  ; astusaddrfasdfasdfa ;#"ö";# < asdfsadfasd a;
17:41:07  doesn't work any more
17:41:10  ah true
17:41:20  Deewiant, I almost only use ; for comments
17:41:35  waitamo...
17:41:40  the few places where I comment I just put it next to the code :-)
17:41:41  how do # and space interact?
17:41:48  btw, does mycology test wrapping within ;  mode?
17:41:51  SimonRC: we just talked about it above, # jumps over space
17:42:00  SimonRC, jump over, ie, doing nothing either way
17:42:10  SimonRC: many interpreters get that wrong and instead jump over the next instruction after spaces
17:42:11  ok
17:42:24  AnMaster: probably not explicitly, but it uses it
17:42:34  brb phone
17:54:04 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
17:54:26 -!- RedDak has joined.
18:00:53  back
18:01:39  ok
18:02:07  brb nuclear war
18:02:27  lol
18:02:27  SimonRC, it was just because I was in a discussion so it would seem odd if I just left
18:02:32  ok
18:02:34  otherwise I wouldn't mention it :P
18:11:29 -!- RedDak has quit (Remote closed the connection).
18:17:41  Deewiant, btw mycology fails at testing greatest point of y well, I had two errors in it, that, for mycology's case, canceled out each other
18:17:57  what kind
18:17:57  Deewiant, 1) I pushed width and breath not absolute max point
18:18:02  2) I had a off by one error
18:18:14  and least point in mycology at that point is -1,-1
18:18:27  result: my error did not show up in mycology
18:19:21  well, if I make the least point -1,-2 somebody will have an off by one and off by two error ;-)
18:19:41  Deewiant, better check once, write to a new negative value and check again
18:19:50 -!- slereah_ has joined.
18:19:59  yeah, right, you fit that in there :-P
18:20:01  Deewiant, but at least in C off by one are rather common when working with array
18:20:02 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
18:20:08  arrays*
18:20:15  yeah, I know
18:20:25  ie, brain thinks in 1-indexed, computer doesn't
18:20:38  off by two or so is not as common
18:20:52  Deewiant, as for fitting in: I prefer PIC befunge
18:20:54  much easier
18:21:02  position independent code
18:21:16  like said, I would too
18:21:21  but I started it out like that and hence it became that
18:21:26  hm
18:21:28  but I'm not going to rewrite it either :-P
18:21:47  actually is it harder to write PIC in befunge than absolute code?
18:21:50  like I said, test {}gp first and then use {} to keep stuff PIC
18:21:54  yes, it is
18:22:05  maybe some fingerprint to help that?
18:22:05  but if you have a working { and }, not much
18:22:20  no need, { and } make it as easy as can be
18:22:22  SUBR is actually worse for PIC
18:22:54  it's not meant for PIC
18:22:58  it's meant for reusing code
18:23:25  yeah, but I would prefer a mode for finding such functions that was position independent
18:23:28  hm
18:23:45  maybe register function entry point, and then jump to that name or something?
18:24:23  actually there is one thing I'd like to add in a fingerprint, just because it would so totally NOT fit with funge
18:24:29  REGS
18:24:34  emulate CPU with registers
18:24:34  XD
18:24:44  that's REFC
18:25:13  Deewiant, hm but REFC got a problem: you can't know what it returns
18:25:22  ?
18:25:27  so if you could register something under a given index
18:25:40  because then you could hard code what entries to look up
18:25:58  Deewiant, oh you mean REFC = registers?
18:26:07  or REFC = register entry points?
18:26:19  REFC = variables, which is essentially equivalent to registers
18:26:38  hm
18:27:58  I would prefer something like A = push into %bax, B = Push into %bbx, C = Push into %bcx, maybe 2-3 registers more, then  have operations that multiply those and such
18:28:17  just to make it feel like registers :)
18:28:41  as befunge is a stack based language it would feel so totally wrong :D
18:30:17  is there a goot way to do a goto in befunge?
18:30:35  SimonRC, x, relative addressing to
18:30:45  or there is J from SUBR fingerprint
18:30:50  bah
18:30:54  that is jump to absolute coordinates
18:31:08  SimonRC, x sets delta
18:31:13  yup
18:31:16  so you got to reset delta after you jump
18:31:18  but it works well
18:31:21  as a goto
18:31:25  just about to say that myself
18:31:59  SimonRC, however, for "jump and go east", if you can depend on SUBR fingerprint, then I'd recommend J
18:32:02  but otherwise x
18:32:14  avoid depending on fingerprints if you can IMO
18:32:19  indeed
18:32:36  there's also j
18:32:43  well yes
18:32:43  darn, Forth rather relies on address = 1 cell
18:32:46  which is like x, but it moves once and doesn't change the delta
18:32:52  Deewiant, indeed
18:32:54 -!- oerjan has quit ("leaving").
18:33:09  actually it does, but then it changes it back again (in my implementation, or it breaks at wrapping)
18:33:32  only the semantics matter, not how it's implemented :-)
18:33:36  as I don't want to do like CCBI and run "one forward" 9999 or whatever times
18:34:06  optimizing CPU as I can't optimize hash more yet
18:34:07  ;)
18:34:24  Deewiant, btw cachegrind looks nice
18:34:43  part of valgrind
18:34:52  looks for cache miss situations
18:34:54  go ahead
18:35:05  not using it is because it's output is hard to parse
18:35:10  heh
18:35:11  maybe when everything else is doen
18:35:13  done*
18:35:25  there are frontends for cachegrind as well, you know :-)
18:35:28  I do run valgrind and mudflap every now and then
18:35:37  Deewiant, yep, kachegrind or something like that
18:35:45  or maybe they actually left the c in for once
18:36:49  Deewiant, btw ever tried mudflap?
18:36:56  nope
18:37:03  very nice pointer debugging thing, if you enabled the mudflap useflag for gcc
18:37:06  haven't programmed that much in C/C++
18:37:18  http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging
18:37:26  yes, I know what it is :-)
18:37:46  Deewiant, quite nice, at some things better than valgrind, at other things valgrind is better
18:38:07  oh and I've seen boehm-gc in leak check mode catch leaks neither of those two catched
18:39:23  Deewiant, btw I've been thinking of some kind of JIT for some things, but I think they may end up slower, ie. caching the matching ; for a ; and such
18:39:41  but likely to be slower as I would need to invalidate cache at p and so on
18:39:57  another thing, concurrency, ; takes 0 ticks right?
18:40:09  but how long does this take:       ;  blah blah;;blah blah;
18:40:14  0 ticks
18:40:17  hm
18:40:30  ;;;;;;;;;;;;;;;;;;                                                     ;;;;;;;;;;;;;;$   takes one tick
18:40:38  assuming the semicolons match
18:40:38  for $ yes
18:42:01  btw, when cfunge is done I think I'll try to write a fast brainfuck compiler, ie, optimize and convert to speedy C
18:42:07  then compile that optimized
18:42:27  I'm not that interested in brainfuck, it's too simple :-)
18:42:41  Deewiant, so what other esoteric languages are you interested in?
18:42:58  I don't know, I've been looking for something cool but haven't found anything that special
18:43:07  Rail or whatever it was called looked nice
18:43:46  looked? or was?
18:44:05  looked
18:44:15  haven't done anything with anything other than befunge, really
18:44:15  so what was the problem with it?
18:44:18  and a bit of whitespace once
18:44:21  beats me
18:44:24  don't remember :-P
18:44:40  Deewiant, a rail -> befunge converter maybe?
18:45:04  maybe I've just had enough of esoterica for now ;-)
18:45:42  Deewiant, one thing you could do, change wrapping to allow user defined topologies, ie, load klein-funge file into CCBI
18:45:49  I'm not going to
18:45:56  but could be a nice experiment
18:46:12  can't really be done
18:46:15  oh?
18:46:18  since the wrapping function can be arbitrary
18:46:26  Deewiant, indeed it can
18:46:32  so have a parser for it
18:46:57  something that can be JIT compiled or so
18:47:15  or compiled to a *.so/*.dll even
18:47:15  and loaded
18:47:15  would need to implement a whole language there
18:47:39  actually you could just dlopen a file, with a few basic functions
18:47:39  might as well leave it to the dynamic language people
18:48:03  except that that doesn't work on windows
18:48:12  Deewiant, there are *.ddl on windows
18:48:15  that could work the same
18:48:24  yes, there are dlls
18:48:28  don't remember functions names for windows though
18:48:33  but it would require writing a lot of code to make it work
18:48:55  something like LoadLibraryExWeDidn'tGetAPIRightFirstTimeSoHereIsAnExtendedOne
18:48:55  it's trickier in D than in C, with the garbage collection and all that
18:49:07  might be easier if only loading C code
18:49:19  but still, too much trouble
18:49:25 * AnMaster finds all the *Ex API functions of Windows sad
18:49:35  they can't even get their APIs right first time sigh
18:50:56  there's stuff like tmpfile in the C/POSIX APIs as well :-)
18:51:18  oh yes tmpfile/tempfile/mktemp/mkstemp
18:51:39  Deewiant, but hardly as common
18:51:46  and when you've got a million customers you usually can't just say "stop using what you have because this new stuff is better", you're burdened with backwards compatibility
18:52:01  but yes, I admit, the design of windows could have been much better from the start.
18:52:28  Deewiant, indeed, but windows got more *Ex functions than POSIX got updated functions
18:53:45  the windows stuff also supports a lot more stuff
18:53:54  not saying that it's a good thing to have all that built in
18:54:00  indeed
18:54:09  windowing routines belongs in X API
18:54:13  not in system API
18:54:25  from what I've heard the X API is absolutely horrid
18:54:53  Deewiant, very likely, xlib is
18:54:59  http://en.wikipedia.org/wiki/X11#Limitations_and_criticisms_of_X
18:55:00  I think that new xlib replacement is better
18:55:02  forgot it's name
18:55:30  libxcb
18:55:33  that's the one
18:55:51  yeah, isn't that like a big *Ex for all of X? ;-)
18:57:51  Nope.
18:57:52  X11 sucks.
18:57:57  Regardless of api.
18:58:12  that's arguable, as well
18:58:48  It is just the 11th protocol revision,  it is horrible,  no matter what api they use to wrap it, it still sucks.
18:59:33  Deformative, so use motif or QT or something
18:59:42  but POSIX API is great
18:59:45  X API isn't
18:59:59  ...
19:00:03  The X API is sheer insanity.
19:00:12  pikhq, agreed
19:00:16  Motif and qt still use the 11th protocol revision.
19:00:29  Deformative, is there any 12th?
19:00:34  Deformative: *Everyone* uses X11.
19:00:39  There's not an X12.
19:00:49  (although X.org is tossing around ideas for it, actually)
19:00:50  AnMaster: freedesktop is considering it.
19:00:55  nice
19:00:59  Not really considering it,  but they have a wiki with ideas about it.
19:01:01  hope they make the new API sane
19:01:10 -!- RedDak has joined.
19:01:32  really nice and sane, and provide backward compatiblity in some external library
19:01:52  I already said this,  the api is not the problem, the problem is the protocol that the server and clients must follow, the packets they must send.
19:02:32  Deformative: No, the API is the problem.
19:02:39  It is *fucking insane*.
19:02:42  You can wrap this protocol in an api to make it tolerable,  but it still would suck internally.
19:02:46  It makes Win32 look reasonable.
19:03:42  Deformative, nop, you could replace it with a 12th protocol revision
19:04:19  ...
19:04:28  and it would still suck.
19:06:24  If graphics contexts, window borders, and all the other useless garbage was removed from the protocol, the api would inevitably become more sane.
19:07:49  And I don't have a clue how they could fix the hell that is the icccm.
19:09:26  Or any IPC for that matter.
19:09:34  I don't know, maybe they could make a lib to handle that or such.
19:09:46  Hah, 1-bit icon pixmaps
19:10:31  Deewiant, *.xbm?
19:10:31  So, basically, "If the entirety of X11 were removed, then the API would become sane".
19:10:44  AnMaster: what the ICCCM specifies
19:10:50  ah
19:11:26  Deewiant, even back a few years that was useful, think of transparency in gif, you could threat that as a 1-bit pixmap acting as a mask
19:11:31  today we got alpha of course
19:11:49  AnMaster: sure, useful, but it's one hell of a limitation
19:12:20  Deewiant, but I can see 24-bit images or whatever it is on my screen, and I can see transparency, so I'm not sure I get the *current* problem
19:12:25  Perhaps just an *alpha channel*? ;)
19:12:45  pikhq, even they are 8-bit these days
19:12:53  AnMaster: Well aware.
19:12:54 * AnMaster doesn't use composite but...
19:15:44  AnMaster: Without using an extension to the protocol, the core protocol itself,  the most colors that you can use for many things is two,  for example, you can only use two colors to create a cursor using the core protocol.
19:16:17  Deformative, I see
19:16:27  but I got a 2-color cusor
19:16:28  so?
19:16:37  Are you sure?
19:16:38  I like the standard X11 cursor
19:16:41  Transparent is a color.
19:16:46  I wouldn't trade it for anything
19:16:46  That is three.
19:17:03  Deewiant, hm? so the standard cursor is 3-color?
19:17:09  Yes.
19:17:14  nah
19:17:23  only the bit's that arent the cursor are trasparent
19:17:34  Deformative, transparent and black as far as I can se?
19:17:35  see*
19:17:43  White outline.
19:17:56  hm true
19:18:00  marshmallows: Are you sure?
19:18:14  You may be right, now that I think of it.
19:18:16  Hrm.
19:18:24  not sure
19:18:32  however, wouldn't the cursor be a rectangular bitmap?
19:18:48  logically I mena
19:18:50  mean*
19:18:53  Yar.
19:19:03  so yes 3 colors then
19:19:07  It's probably stored interally as such...
19:19:16  I don't think that's relevant to how many colors it's made o
19:19:34  in that case you could probably even say it's 256 colors
19:19:53  Only if you use an extension.
19:21:47  I remember i always needed to use the xcursor extension in order to get > 2 colors.
19:22:01  If I remember correctly xrender could be used as well.
19:25:03  Hmm, you may be able to have 2 colors + a mask
19:25:05  Whatever.
19:26:00 * Deformative needs to go.
19:26:02  o/
19:32:41 * SimonRC reads up
19:33:37  Deewiant, there? why are some of the GOOD BAD boxes on the result page for the mycology tests not links?
19:33:53  actually mostly the GOOD ones
19:34:07  because there's no point in linking to anything, they're the expected output
19:34:19  Deewiant, still some GOOD are links?
19:34:20  it does say that right above the table you know :-)
19:34:27  because they have something UNDEF
19:34:30  ah ok
19:40:36  o
19:43:56 -!- Corun has quit ("back later, with pizza").
19:44:04  I recall there is a supposed X replacement called Y
19:44:10  It was on /. a few years back
19:44:14 * SimonRC searches
19:45:08  Don't bother.
19:45:10  It is the suck.
19:45:13  Written in sdl.
19:47:16 -!- RodgerTheGreat has quit.
19:49:11 -!- RodgerTheGreat has joined.
20:11:32   Written in sdl.
20:11:33  err
20:11:36  sdl uses X?
20:11:38  right?
20:13:47 -!- Sgeo has joined.
20:17:10  Not always.
20:17:26  It has other backends.
20:17:40  ah right, linux framebuffer
20:17:57  and wincrap
20:18:35  Yep.
20:19:05  oh and aalib it seems
20:19:06  haha
20:19:12       Installed versions:  1.2.11-r2(02.57.23 2008-01-05)(X alsa arts fbcon opengl xv -aalib -custom-cflags -dga -directfb -esd -ggi -libcaca -nas -noaudio -nojoystick -novideo -oss -svga -xinerama)
20:21:52  aalib is awesome.
20:25:40 -!- RedDak has quit (Remote closed the connection).
20:30:20 -!- oklofok has quit (Connection timed out).
20:39:06 -!- oklofok has joined.
20:40:19  UNDEF: H outputs 40 as (28
20:40:19  wtf
21:01:08  how do you in C convert an integer to a string in the given base, for decimal, octal or hexdecimal it is easy with printf, but for other ones? say base 2 or base 31
21:01:27  printf seems to only do base 8 10 and 16
21:01:32  nothing in std c does this
21:03:15  gah
21:03:34  marshmallows, so how should one do it, it is for an befunge fingerprint
21:03:43  some kind of loop on the value?
21:04:03  or what is the best way to get arbitrary base in C?
21:04:12  is there some "standard algorithm"?
21:04:40  void binary(int number) { if(number > 0) binary(number >> 1);
21:04:40                            putchar(number & 1 ? '1' : '0'); }
21:04:51  >> 1 just means divide by two
21:04:56  hm
21:04:57  you can do similar for any base
21:05:09  Gotta do it by hand.
21:05:14  marshmallows, need a look for a number larger than say 1 ;P
21:05:16  s/number & 1 ? '1' : '0'/number["0123456789"]/
21:05:21  right?
21:05:32  recursion is the loop
21:05:36  oh right
21:05:44 * AnMaster ponders how to convert to a while loop
21:06:01  :/
21:06:06  why on earth would you do that
21:06:07  or such
21:06:17  marshmallows, recursion mean function can't be inlined
21:06:22  O_o
21:06:42  whatever :)
21:06:42  prevents optimizing
21:06:59  marshmallows, look I'm aiming to make the fastest befunge interpreter out
21:07:02  out there*
21:07:41  you know what fast code is.. good algorithms
21:07:54  marshmallows, I know
21:08:21  not ultra optimizing a proc that only works on numbers < 65536
21:08:25  marshmallows, an recursion is not a good algorithm
21:08:31  bullshit
21:08:34  marshmallows, err, it only does that?
21:08:47  fingerprint are bigger than four chars?
21:08:59  xFFFF=65535
21:09:09  marshmallows, fingerprints names have to fit into four ASCII chars
21:09:20  but that doesn't affect the fingerprint routines themself
21:09:22  ?
21:10:15  xFFFF=65535 <-- yes but range is [A-Z0-9], or maybe even [A-Z0-9a-z], not [0-F]
21:10:36  2^32 - 1 I think is the number of possible fingerprints that can exist
21:11:04  ok.. I said that..
21:11:27  marshmallows, but that doesn't limit what the fingerprints can do
21:11:30  anyway you should stop thinking recursion is inefficient that's like poison
21:11:41  It's false and will limit you severly
21:11:44  0101000 leading 0 hm
21:11:49  (and yes I know C does not define TCO who cares)
21:12:00  TCO?
21:12:12  that's for monitors?
21:12:25 * Sgeo finds what looks like an IPv6 propaganda comic
21:12:28 * AnMaster is confused
21:12:37  Sgeo, heh?
21:12:44  xkcd map of ipv4?
21:13:01  "The adventures of Team ARIN"
21:13:02  http://www.arin.net/education/comic/index.html
21:13:13  ^_o
21:13:43  Sgeo, that's weird, like very weird
21:14:15  it sounds almost as bad as that "sorcefource" thing or of microsoft
21:14:37  At least I'm learning from this comic
21:16:39  marshmallows, your algorithm works for bases below 10, I can see that, but what about higher ones? I need to support up to 36 bases
21:16:53  up to base 36*
21:16:58  s/number & 1 ? '1' : '0'/number["0123456789ABCDEF"]/...then
21:17:04  hm
21:18:41  "Thank goodness I was able to ZING your hardware and stop your packets from moving and messing up the Internet!"
21:19:03  Sgeo, spare us from this
21:23:00  marshmallows: "01223456789ABCDEF"[number] looks cleaner to me. . .
21:23:24  I prefer it the other way, it's your code do you watn
21:29:07  pikhq: heh
21:54:22 -!- slereah__ has joined.
21:58:28 -!- Sgeo has quit ("Ex-Chat").
21:58:45 -!- Sgeo has joined.
21:59:43  Of course, we all know the real way is "mov eax, [hex_string + number]".
22:02:15  heh
22:06:23  pikhq, doesn't handle 64-bit values
22:06:52  %rax maybe on amd64, on 32-bit no idea
22:07:11  assuming bases above. say 2^32
22:07:13  :D
22:08:18  RodgerTheGreat: i know about timecube, but colorforthray.info is possibly more insane
22:08:32  lament, what is timecube?
22:08:42  AnMaster: timecube.com
22:08:43 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
22:09:10  the owner of colorforthray is actually on freenode.
22:09:21  -1x -1 = 1 IS STUPID AND EVIL >:|
22:12:11  slereah__, err, lets see that can be simplified to -1x = 2, means x = 2/(-1)       x =-1
22:12:13  er
22:12:15  x = -2
22:12:48  slereah__, how is it stupid an evil?
22:16:03 -!- slereah_ has joined.
22:16:20  "Read the time cube :o"
22:16:22  Was, I sayng
22:16:46 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
22:24:16  lament: I will have to read that site
22:24:27  ColorForth is great
22:24:58  but maybe only in the way unlambda is great
22:28:25  In the way that it is totally awesome?
22:28:45 -!- Tritonio_ has quit (Remote closed the connection).
22:29:19  ?unlambda
22:30:01  Unlambda!
22:30:01  It's pretty much the best known functional esoteric language!
22:30:06  Well, then again, that's still not very known
22:30:16  Heh\
22:30:33  I am trying to figure out if the language I am designing is "functional" or not.
22:30:50  Is it full of functions?
22:31:00  Well.
22:31:13  Define function.
22:32:43  are there first-class function-like things?
22:32:58  Is lambda a keyword?
22:33:12  I have lambda expressions.
22:33:22  And I could have closures, but I do not think I will.
22:33:22  Elaborate?
22:33:39  Functions typically need to return a value.
22:33:43  Deformative: Show me some code in it
22:33:46  And have no side effect.
22:34:03 * pikhq nods... In a purely functional language, of course. . .
22:34:14  I just got a nice idea from a language due to a typo I made in C:
22:34:23  bool bool somefunction(...);
22:34:28  marshmallows: loop<...>loop()
22:34:33  ie, a language where stuff can return several values
22:34:35  Erm
22:34:37  using such a syntax
22:34:38  marshmallows: loop<...>loop(...)
22:34:42  AnMaster: My god.
22:34:45  I mean a larger bit of code
22:34:49  pikhq, what?
22:34:53  Insane.
22:34:55  Me like.
22:34:56  did you write nothing about 20 lines yet?
22:35:12  AnMaster haha I like that
22:35:19  (technically, those are no longer functions, but rather *relations*. . . :p)
22:35:22  pikhq, no time to write specs, but basically you wouldn't have to do say bool (bool * foo); to return several values
22:35:33  but instead could return any number of values
22:35:37  marshmallows: main<...>add(..., print, 3, 4)
22:35:48  pikhq, heh? they are what?
22:35:59  marshmallows: Factorial is like 15 lines.
22:36:02  SimonRC: read it, it's fucked up.
22:36:03  But it is on the old spec.
22:36:05  AnMaster: Ignore, please.
22:36:05  cool show me that
22:36:06  I have changed it since hten.
22:36:15  pikhq, no?  what?
22:36:55  pikhq: quickly, tell us!
22:37:03  wonder how assignment syntax from such a function should look
22:37:06  maybe something like
22:37:19  foo,bar,quux = somefunction(); ?
22:37:20  AnMaster: what does it mean here to retu multiple values? do you return multiple times to the return continuation, or just return a pair, or..?
22:37:40  don't wanna be a killjoy, but if it's the latter, it's not that crazy :P
22:37:51  oklofok, well not sure, you can return several values, any given amount of values
22:38:10  oh and variable amount of returns
22:38:13  well, tuple then
22:38:15  foo bar = f();
22:38:23  marshmallows: http://pastebin.ca/945366  That is a snippet of the old spec.
22:38:30  oklofok, so:  int ... myfunc();
22:38:37  That is before anonymous functions and  before the syntax changed.
22:38:37  would return n number of integers
22:38:41  But same idea.
22:38:44  where n is unknown
22:38:59 -!- oerjan has joined.
22:39:40  hi oerjie!
22:39:41  why are there so many ...?
22:39:42  oklofok, like variable argument count in C, but instead variable return arguments
22:39:54  AnMaster: i know
22:40:00  AnMaster: You could have some very interesting calling conventions with that. . .
22:40:01  oklofok, would be a procedural language I think
22:40:01  hi okly
22:40:12  oerjan: oh, stop :)
22:40:26  pikhq, oh yes, at least when you do variable both ways
22:40:35  Deformative: What does ... mean?
22:40:36  marshmallows: Because, there are no return values.
22:40:37  i feel all stoppy
22:40:43  marshmallows: Ignored args.
22:40:45  pikhq, double ... floor(double ...)
22:40:46  For compatibility with the standard calling convention, have the first return value stuck in eax, and the rest get pushed on the stack.
22:41:09  pikhq, err not eax, would rather be rax right?
22:41:16  On AMD64, it would be rax.
22:41:21  I don't understand the code enough to decide, sorry
22:41:42  But most people don't have OSes that enable long mode, so the rax register won't exist for those people. ;)
22:41:52  marshmallows: Basically,  it has continuations only,  no return values.
22:41:54  pikhq, anyway I could not code this heh, anyway I don't know ASM
22:42:01  pikhq, however an interpreter should work
22:42:10  So you pass a function to execute next to every function.
22:42:10  and I probably won't code this, just a crazy idea
22:42:16  It'd be trivial to code up given a simple C compiler, actually. . .
22:42:23  pikhq, oh?
22:42:33  I use the word "function" but I do not believe they can be called functions.
22:42:41  Getting it to handle the syntax would be the pain.
22:42:57  But the actual *semantics*? Trivial.
22:43:07  pikhq, anyway if the first return value is larger than 32-bit it won't fit in %rax, or if it is floating point
22:43:23  s/rax/eax/
22:43:31  pikhq, yeah eax
22:44:12  The standard C calling convention returns the value in eax if it's 32-bit or less, and not a float. If it's a float, it's on the floating point stack instead. And, if it's just larger than 32-bit, then eax has a pointer to it.
22:44:31 -!- calamari has joined.
22:44:33  (IIRC)
22:44:40  hi
22:44:42 * pikhq should look up cdecl again
22:44:52  pikhq, amd64 calling convention doesn't do that, it returns floating point in SSE registers iirc
22:45:00  AnMaster: What is the point? Why not just return a structure?
22:45:10  Deformative, it could be interesting
22:45:29  and if you make this language has, first class functions
22:45:35  then it could be really interesting
22:45:40  AnMaster: The amd64 calling convention is different from the x86 calling convention.
22:45:41  rrreally
22:45:46  could you curry return values
22:45:52  curry?
22:45:54  not sure
22:46:36  AnMaster: Are you talking about my language or your's?
22:46:42  Deewiant, mine?
22:46:49  or rather my wild idea
22:46:58  Why not just return a structure?
22:46:59  I probably won't implement it, or write a spec for it
22:47:03  What is the point of multiple return values?
22:47:04  (x86's convention stores all arguments on the stack. x86_64 stores the first 6 arguments or so in registers.)
22:47:08  Deformative, would be cheating
22:47:23  Uh, mkay.
22:47:31  Deformative, why not ask yourself: what is the point of any esoteric language then
22:47:43  marshmallows: Still trying to understand my code or should I leave?
22:47:55  AnMaster: the prob is, what's the essential difference between returning multiple values and an n-tuple
22:48:43  oklofok, hm, also you could code this as returning multiple times, would need some kind of setjmp I suspect, but I suspect you would prefer such a way of doing it?
22:48:59  i prefer to know what you mean :)
22:49:06  oklofok, I'm not sure yet
22:49:12  Hmm. Well, you *could* define the calling convention so that it's equivalent to a C program returning a struct. . .
22:49:31  pikhq: stop being so hardware, i'm a pythonist nowadays! :D
22:49:38  oklofok, it all started as a typo I made when copy pasting a new prototype for a function into a header, and missed to remove the old bool
22:49:47 -!- oklofok has changed nick to oklopol.
22:49:49  oklofok: When discussing something C-esque, then you've got to be hardware. :p
22:50:00  i guess, i guess
22:50:07  AnMaster: i know
22:50:10  marshmallows: ?
22:50:13  i'm fairly omniscient
22:50:43  oklopol, so I ended up with: extern bool bool input_getint(FUNGEDATATYPE * value, int base);
22:51:04  however that would be even easier, as value is an out parameter here
22:51:15 * calamari made an 8 instruction assembly language today.. 3 bits for the opcode, 5 bits for a single arg
22:51:28  that could be written as bool FUNGEDATATYPE input_getint(int base);
22:51:35  wish I knew more about circuit design
22:51:58  me too
22:52:02  pikhq, also this should be supported:  bool ... int ... somefunction(),  that is several sets of varreturns
22:52:03  :D
22:52:09  AnMaster: Could be even worse, though.
22:52:10  pikhq, same for varargs
22:52:18  extern bool static bool input_getint(...);
22:52:33  starting to sound fun again! now support regexes
22:52:35  pikhq, oh why static in front of the second bool, what would that mean?
22:52:40  bool+ int{7,10}
22:52:54 * AnMaster rofls
22:52:54  That it would return different values depending upon the linakge.
22:53:01  s/linakge/linkage/
22:53:02  pikhq, XD
22:53:07  very nice
22:53:21  how, if I may ask, would the return statement look?
22:53:36  or would it be implemented as some sort of co-routine?
22:53:43  extern bool static bool linked_p() {return 0, 1;}
22:54:25  hm
22:54:42  pikhq, but for say extern bool ... static bool ... int ... then?
22:54:44  No *idea* how you'd make that calling convention work, though.
22:55:10  Except *maybe* by making the linker understand this language's conventions?
22:55:12  AnMaster: No clue.
22:55:20  Hmm.
22:55:26  and what about oklopol's regexes?
22:55:30  that could be nice
22:55:49  return(0,1,0,0,1)(1,0,1,1,0)(5,6,7,8,9,10);
22:55:49  ?
22:56:04  pikhq, ok and assignment from this function?
22:56:28  say /* what here*/ = linked_p()
22:56:38  bool foo,bool bar, bool baz, int qux, int quux = this_insane_function();
22:56:55  Well, for linked_p, it'd be easy.
22:57:00  bool foo = linked_p();
22:57:07  pikhq, err I mean for the "extern bool ... static bool ... int ..." one
22:57:11  It returns 1 value; that value is different based upon linkage.
22:57:12  Ah.
22:57:39  pikhq, ie, to an array?
22:57:54  or discard values not fitting into number of return variables?
22:58:11  and I still think oklopol's regex for return value looks cool
22:58:17  oh and same for arguments :D
23:01:03  (oklotalk does regex-like pattern matching, you can set an assert on lambdas to return a certain type pattern)
23:01:21  (all this done in such an unclean fashion you'll want to cry <3)
23:01:21  interesting
23:01:32  oklopol, mine at least is quite clean idea
23:01:42  with all the pointer hell of C too
23:02:45 * pikhq is in shock
23:02:52  pikhq, ?
23:02:56  why?
23:03:00  Window's calling convention does not allow variadic functions.
23:03:09  pikhq, stdcall is crap yes
23:03:26  btw what do you call "varadic return"?
23:03:35  The more I know about Windows, the more I hate it.
23:03:39  varun?
23:03:46  varurn even
23:03:49  Maybe.
23:03:50  lol
23:03:56  var urn
23:04:37  pikhq, windows "falls back" to cdecl for varadic functions I think
23:08:02 * Sgeo becomes obsessed with ViolaWWW
23:08:09  what is that?
23:08:21  AnMaster, old web browser, from before Mosaic
23:08:29  Sgeo, ah I forked mosaic btw
23:08:32  http://www.xcf.berkeley.edu/~wei/viola/violaCentral.html
23:08:42  make it be able to show xhml pages
23:08:55  cool
23:09:04  even tried adding garbage collector but didn't get that work finished
23:09:17  seems like ViolaWWW had AJAX-like features way before everyone else oO
23:09:19  if you got bzr 0.92 or later installed, you could check it out from *looks for url*
23:10:16  Sgeo, yes... "http://www.xcf.berkeley.edu/~wei/viola/vw/inset_chess.v" <-- wow
23:10:39  .v ? :S
23:10:57  Think ".js for ViolaWWW"
23:10:59  marshmallows, viola script it seems
23:11:08  WAAAAAAAAAY before JS ofc
23:11:40  does not really work
23:11:45  http://www.xcf.berkeley.edu/~wei/viola/vw/chessDemo.html
23:11:50  I guess I miss plugins.
23:11:55  marshmallows, -_-
23:11:59  you didn't read anything?
23:12:05  it's for some really old browser
23:12:14  of course it doesn't work in modern ones
23:12:38  AJAX(like) in 1994! http://www.xcf.berkeley.edu/~wei/viola/vw/monitor2.v
23:12:40  Sgeo, it looks very weird, parts of it look like C code
23:13:01  yes C code with some \latexstyle commands in it
23:14:30  If the Viola code was adopted for the WWW, how much more advanced would we be right now?
23:15:02  (I mean, if we made that decision way back when, not saying we should do that now)
23:15:28  3D
23:15:32  Wha?
23:15:41  it would have support for 3D
23:16:15  Sgeo, odd question
23:16:20  and one I can't answer
23:16:26  marshmallows, where do you see that?
23:16:33    If the Viola code was adopted for the WWW, how much more advanced would we be right now?
23:16:39  I am answering this question
23:16:44  oh
23:18:42 * Sgeo wonders if he can download ViolaWWW from somewhere and play with it
23:20:40  "All objects can be individually programmed using the scripting language. Each object is essentially its own interpretive environment, and each object is its own variable scope. So, an object only affects its own variable values and can not directly affect other objects' variables, thus minimizing side effects.
23:20:40  Having an encapsulated mini environment is useful not only for organizational purposes, but is also useful for enforcing security. This is particularly relevant in the Internet scaled World Wide Web context. "
23:20:52  /usr/include/gentoo-multilib/amd64/ctype.h:#define __isctype(c, type) \
23:20:52  /usr/include/gentoo-multilib/amd64/ctype.h-  ((*__ctype_b_loc ())[(int) (c)] & (unsigned short int) type)
23:20:53  nice
23:21:01  that is how isalpha and such are done it seems
23:21:22  I don't see how stopping one object on a page from interacting with others on the page improves security
23:21:35  It's OO
23:21:37  all hype :P
23:22:14  Sgeo, it does a lot
23:22:28  Sgeo, say bank login object
23:22:42  and simple game object
23:23:12  bank login object should not be reachable from either simple game object, nor trojan object
23:24:07  does not give you proof that it's not reachable though
23:24:22  marshmallows, ?
23:24:37  !
23:24:41  ??
23:25:00  what doesn't give proof?
23:25:55  objects
23:26:52  marshmallows, true but other security features exist I assume
23:26:57  or didn't but should
23:26:57 * Sgeo wonders if there are people who fans of ViolaWWW
23:27:01  I mean, today
23:27:07  Sgeo, I didn't fan mosaic
23:27:14  I just wanted to get it to work and try it
23:27:34  then I noted how much faster than, say, firefox it was
23:28:53  Historical Web Browsers
23:28:53  Active Worlds
23:28:58  http://www.livinginternet.com/w/wi_browse.htm
23:29:02  **facepalm**
23:29:56  Sgeo, btw I also forked original gopher client
23:29:58  :P
23:32:47 * Sgeo just wants to download VioletWWW right now

2008-03-17:

00:28:56  pikhq, there?
00:29:25  Nope.
00:29:50  pikhq, would you want to implement my extended C version? it would include regex for return and parameters as oklopol suggested
00:30:48 -!- timotiis has quit ("leaving").
00:32:52  Should I allow "define" ?  It opens up room for side effects.
00:33:01  Without "define" side effects are much harder to create.
00:34:14  define == global variable.
00:34:21  I am thinking of only allowing const globals.
00:38:21  are you writing a scheme?
00:38:45  No.
00:38:56  Just thinking about taking features from scheme.
00:41:36  in scheme, define is hardly responsible for side effects
00:41:56  yeah you use set!
00:42:20  But it can be.
00:42:28  no I don't think so
00:42:34  Without define there is no room for side effects anywhere.
00:42:37  it's probably not R5RS COMPLIANT
00:42:58  (let ((x '())) (set! x 3) ....)
00:44:13  (define x 3)  (+ x x) (define x 4) (+ x x) The define has a side effect, it causes a different result.
00:46:07  you don't know what "side effects" mean.
00:46:11  *means
00:47:17  Equivalent to doing nothing.
00:47:29  Defining alters the environment.
00:48:07  16:42  Without define there is no room for side effects anywhere.
00:48:12 * marshmallows doesn't have a precise definition of effects :S
00:48:19  lament: In my language.
00:48:31  apparently non-termination can be considered an effect
00:48:50  Eh, let me rephrase.
00:49:07  Define cause side effects, so I cannot decide to implement it or not.
00:49:21  the Recursion monad :)
00:49:39  lament: Touche regarding my previous statement.
00:49:58  data Rec a = Now a | Later (Rec a)
00:49:58  All books are 3 characters. Check syntax and try again
00:50:21  Sgeo, ?
00:51:31  So, Rec is now or later?
00:51:31  :p
00:52:00  non-termination is then indicated by Later (Later (Later ( ... :)
00:52:16  have you heard of sturctural recursion
00:52:29  (or the other thing I can't remember the name of)
00:52:35  codata?
00:52:43  no
00:52:45  (which is what this Rec should be)
00:52:51  general recursion
00:52:52  in scheme, only top-level defines are sideeffecting
00:52:53  it means you can't call yourself in general, but must use a specific combinator
00:53:04  eliminators
00:53:08  folds
00:53:19  wait, that's not true is it
00:53:19  e.g. those ^^
00:53:50  yeah, it's true
00:53:55  lament: i think define is equivalent to set! whenever a define of the same variable is in the same scope
00:54:08  1:=> (define (foo) (begin (define x 2) (display x) (define x 54) (display x)))
00:54:12  1:=> (foo)
00:54:12  5454#
00:54:15  the one I studued was for machines where everything was a Nat, and the only recursion was calling yourself with an argument decremented
00:54:28  oerjan: no, apparently it's only top-level.
00:54:31  you can do most stuff, but not (e.g.) Ackermann's
00:54:45  oh?
00:55:05  i didn't even realize scheme behaved this way. This is most odd.
00:55:09  define is the same as set! on the top level if the variable is bound
00:55:26  and not otherwise? i see.
00:55:33  marshmallows: you have to admit my example doesn't output what you expect it to output.
00:56:15  probably to make toplevel interactive mode not require any (less?) special treatment?
00:56:40  since in an interactive interpreter you definitely want to allow redefinitions
00:56:52  actually that's bigloo
00:56:56  zzzzzzzzzzzz
00:57:01  and PLT simply doesn't allow me to execute that statement
00:57:08  "define: not allowed in an expression context in: (define x 54)"
00:57:13  SimonRC: primitive recursion
00:57:24  oerjan: yup
00:57:24  lamet use let instead of begin
00:57:25  zzzzzzzzzzzz
00:57:36  sorry?
00:57:52  maybe that's wrong too
00:57:58  no, it doesn't matter what you use
00:58:00  i quote r5rs
00:58:12  "Definitions may occur at the beginning of a  (that is, the body of a lambda, let, let*, letrec, let-syntax, or letrec-syntax expression)"
00:58:20  the key phrase being "at the beginning"
01:00:15  scheme is annoyingly complicated for being supposedly so simple
01:00:17  but it's good complexity
01:01:14  there's a special case for allowing definitions inside a begin when that begin is your first statement
01:01:24  ie (begin (begin (define x 2)) (display x)) ==> "2"
01:01:40  so the begins get "folded"
01:03:41  (begin (begin (define x 1) (display x)) (define x 2) (display x))  ==> "12"  ; look, i'm redefining stuff!
01:04:30  (i don't actually get it, why is that allowed?)
01:07:12 -!- jix has joined.
01:07:34  ohh
01:08:05  the begins don't just get folded, they also get folded with the top level
01:08:16  so the definitions inside a begin on top level are top-level definitions
01:08:21  and work like set!
01:08:40  > (begin (define x 1) (display x) (define x 2) (display x))
01:08:41  12
01:08:49  but trying to put that in a function is an error
01:08:54  because you're no longer on top level
01:09:53  isn't that kinda stupid?
01:10:57 * lament thinks the top level environment should not be "magical"
01:13:11 * lament thinks some more and changes his mind
01:24:08  lament: Heh.
01:43:50 * Sgeo is bored
01:44:08  I'd be at a party right now if it weren't so far away or if dad wasn't working
01:53:20 -!- jix has quit ("CommandQ").
02:03:59  haha, party
02:07:39 -!- sebbu has quit ("@+").
02:37:13 -!- Corun has joined.
02:38:18  I feel like doing a random comic. Ideas, anyone?
02:38:55  frogs
02:39:11  dragons
02:39:12  ok
02:39:17  Hot dogs.
02:39:17  Umbrellas.
02:39:31  and a haunted castle
02:39:40  Skis.
02:39:40  Party hats.
02:39:40  Chimney sweeps.
02:39:45  hm. I'm pondering here
02:39:52  Emmanuel Kant.
02:39:55  slereah_: quality over quantity, dude
02:39:59 -!- Corun has left (?).
02:40:10  Well, what's the criteria for random quality?
02:40:54  10% Nobel prize quality, 10% Plan 9 from outer space.  Fill in the intermediates yourself
02:40:55  thought provoking, original and interesting.
02:41:16  something that sparks my interest and that I can build from.
02:41:29  Mad Science!
02:41:35  that sparks _my_ interest
02:41:55  and it could tie up all the other suggestions
02:42:26  hm
02:42:43  mad science and chimney sweeps sounds like a good candidate
02:44:38 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
02:44:53 -!- slereah_ has joined.
02:45:07  genetically engineered dragons used as chimney sweepers
02:45:08  INTERNEEEEEEEEEEEEETS >:|
02:46:34  I can already picture them.
02:46:34  Like hairy chinese dragons.
02:57:36   i love hot dogs
02:57:40  damn i'm hungry
02:59:19  See RodgerTheGreat? It's a story that just write itself!
02:59:46 -!- calamari has quit ("Leaving").
02:59:55  I'm already off and running on some steampunk
02:59:56 -!- calamari has joined.
03:23:11  'Conformance checkers must check that the input document conforms when scripting is disabled, and should also check that the input document conforms when scripting is enabled. (This is only a "SHOULD" and not a "MUST" requirement because it has been proven to be impossible. [HALTINGPROBLEM])'
03:23:46  ~http://www.w3.org/TR/html5/
03:23:52  http://www.w3.org/TR/html5/
03:24:24  Yes, let's also put in a spec "Conforming programs SHOULD try to make 1+1=3"
03:25:39  that's a strawman: it is probably only impossible for _some_ input documents
04:07:37  a small tidbit of things to come: http://www.nonlogic.org/dump/images/1205723239-preview.png
04:10:34  Oooh, steampunk.
04:15:35  indeed
04:17:43  Which reminds me, in case any of you haven't noticed, that Casey and Andy has resumed.
04:22:07  and as a bonus, some character designs: http://www.nonlogic.org/dump/images/1205724112-chars.png
04:24:13 -!- adu has joined.
04:33:55  1337.
04:35:33  I'm aiming for 2-3 pages for a quick story here over the course of the next week or so, and if It turns out well, I'll think about continuations
04:37:34  continuations are good.  i hear delimited ones are even better.
04:37:36  continuations?
04:38:07  I recently realized how to implement a tail-call on ppc
04:38:56  oerjan: whats a delimited continuation?
04:42:41  better ? :S
04:42:51  I thought they are equivalent
04:48:07  oh i'm a bit vague on that
04:49:50  I don't know what to do
04:55:24  i think it is something like, an ordinary continuation contains the entire rest of the program, while a delimited continuation only contains it _up to a point_
04:56:59  and then you can do some kind of manipulation of what happens once you reach that point
04:57:23  I see
04:57:26  combined with the usual use and even reentering of the continuation
04:59:21  O_o http://rosettacode.org/wiki/Rot-13#XSLT
05:04:27  i think we have different ideas about what a continuation is
05:05:03  what aspect of programming languages should I write about?
05:05:09  xslt is so lame
05:05:41  marshmallows: I think you should write about genaric datastructures and how they relate to binding environments
05:05:54  for example
05:05:58  I don't know what a genaric datastructure is
05:06:02  any other ideas?
05:06:19  a genaric "list of integer" would have only elements that are of type integer
05:06:33  I can't write about this topic though
05:06:41  what for? school?
05:06:55  because I'm bored
05:07:00  oh
05:07:28  then write about the most common 101 datatypes used in the industry today
05:07:40  :[
05:09:49  i would imagine the top 10 would be (int, string, bool, vector, list, float, hash-table, enum, exception, and possibly queues)
05:10:41  marshmallows: why are you asking if you don't want my ideas?
05:11:50  marshmallows: what do you want to write about?
05:11:58  I can't decide
05:12:48  then maybe the wisest option is not to write anything
05:13:12  perhaps reading would be a better idea
05:37:35 -!- olsner has quit (Read error: 110 (Connection timed out)).
06:31:54 -!- andydude has joined.
06:31:56 -!- adu has quit (Connection timed out).
06:32:50 -!- andydude has changed nick to adu.
06:45:06 -!- atsampson has joined.
06:46:41 -!- Sgeo has quit (Remote closed the connection).
06:52:36 -!- oklopol has quit (brown.freenode.net irc.freenode.net).
06:52:36 -!- cmeme has quit (brown.freenode.net irc.freenode.net).
06:52:36 -!- cherez has quit (brown.freenode.net irc.freenode.net).
06:56:53 -!- atsampso1 has quit (Read error: 110 (Connection timed out)).
06:58:20 -!- cmeme has joined.
06:58:41 -!- oklofok has joined.
07:02:31 -!- calamari has quit ("Leaving").
07:11:53 -!- oklofok has quit (Remote closed the connection).
07:12:11 -!- cherez has joined.
07:12:52 -!- oklofok has joined.
07:39:09 -!- andydude has joined.
07:40:25 -!- adu has quit (Nick collision from services.).
07:40:33 -!- andydude has changed nick to adu.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:24:11 -!- oerjan has quit ("Gooed knight").
08:55:28 -!- Tritonio_ has joined.
09:12:35 -!- adu has quit (Remote closed the connection).
09:32:55 -!- Tritonio_ has quit (Remote closed the connection).
14:08:42 -!- slereah__ has joined.
14:22:47 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
14:28:05 -!- slereah_ has joined.
14:41:52 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
15:09:19 -!- Tritonio_ has joined.
15:15:59  RodgerTheGreat: the comic looks good so far
15:16:12  but the blond guy's hair changes colour
15:16:20  everything changes color
15:17:37  alas using the standard technique of making everything capital letters prevents the full effect of something being called "the Apparatus"
15:17:48  (i.e. the capital A gets lost)
15:18:52  granted
15:19:27  keep us updated
15:22:21  I shall
16:04:30 -!- jix has joined.
16:23:18 -!- oerjan has joined.
16:58:24 -!- Sgeo has joined.
17:06:27  SimonRC, comic?
17:06:33  SimonRC, what comic?
17:06:47  (hm, could you make an esolang of it?)
17:12:10  http://www.nonlogic.org/dump/images/1205723239-preview.png
17:12:37  (by RodgerTheGreat unless my memory is like swiss cheese)
17:15:41 -!- sebbu has joined.
17:24:56 -!- ehird has joined.
17:25:37 -!- ehird has set topic: #esoteric - Extending tetration to the reals in Brainfuck. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/.
17:26:39  marshmallows = new?
17:26:47  hi ehird
17:26:47  [16:26] [Whois] marshmallows is an operator on channels: #ALGOL
17:26:49  well that does it
17:26:51  :-)
17:27:03  evidently; an agent of evil
17:27:07  :D
17:28:20 * oerjan has discovered marshmallows's secret, with the help of the mighty Logs
17:28:49  data Rec a = Now a | Later (Rec a)
17:28:50  All books are 3 characters. Check syntax and try again
17:28:52  brilliant
17:29:04  fix Later
17:29:04  :D
17:29:18  indeed o_O
17:30:09  lament: your scheme is broken, by the way
17:30:22  #;1> (define (foo) (begin (define x 2) (display x) (define x 54) (display x)))
17:30:22  #;2> (foo)
17:30:22  254#;3>
17:30:40  bigloo is not a scheme interpreter
17:30:43  not a conforming one at least
17:31:17  lament: however, remove (begin ...) and replace with ...
17:31:22  it's implicit in lambda-bodys
17:31:28  and your example becomes standard
17:31:59  thought provoking, original and interesting.
17:32:01  YOUR MOTHER
17:32:08 * ehird kicks self repeatedly as punishment
17:32:30  for what? o_O
17:32:50  oerjan: saying that :D
17:32:51  'Conformance checkers must check that the input document conforms when scripting is disabled, and should also check that the input document conforms when scripting is enabled. (This is only a "SHOULD" and not a "MUST" requirement because it has been proven to be impossible. [HALTINGPROBLEM])'
17:32:55  that's perfectly reasonable
17:33:02  ensuring validity is perfectly fine
17:33:14  the only time it would break is pretty much when a deliberately malicious script was there
17:35:38  02:25:51
17:35:38  I am trying to decide if I should even implement closures.02:30:50
17:35:38  They are so slow.
17:35:47  closures are slow, let's go writing micro-optimized languages
17:36:11  i mean jeez
17:36:12  its an esolang
17:36:13  :|
17:36:50  Deformative: "comment..."
17:36:54  that's what smalltalk does
17:36:58  and uses '...' for string
17:36:58  s
17:56:46  I don't know what to do
17:56:55  should I use haskell or scheme to write a WAM in?
17:57:05  (or C, or something else?)
17:59:09  Prolog. *ducks*
18:04:51  ehird: what's bigloo?
18:05:38  http://uncyclopedia.org/wiki/An_article_that_contains_nothing_but_a_cut-down_version_of_itself_that_does_not_contain_itself
18:05:43  lament: your scheme apparently
18:05:48  (i know what bigloo is. I just don't understand why everybody hates it so much when it seems one of the better implementations)
18:06:18  in general the scheme community is weird in that they hate stuff that's clearly good
18:06:18  lament: because it ISN'T a scheme implementation
18:06:29  it is broken.
18:06:37  so obviously not 'clearly good'
18:06:42  what do you mean it isn't? they say it's "mostly compliant"
18:06:52  which is as good as most things
18:07:18  lament: the reason your example gets that output is because bigloo is broken.
18:07:22  bigloo is also broken in countless other ways.
18:07:27  ergo, bigloo is not clearly good
18:09:10  is gcc broken because it supports single-line comments in C?
18:09:41  lament: look, bigloo is broken
18:09:58  but evidently you know more about scheme than me and #scheme and you must, therefore, be right when you claim that bigloo is 'clearly good' without justification
18:10:30  how's saying it's broken without justification any better than saying it's clearly good without justification?
18:10:42  When i said "clearly good", i mostly referred to r6rs, by the way :)
18:10:53  hahaha
18:10:54  which is an unrelated issue
18:11:11  R6RS is great!
18:11:22  it doesn't even matter if it's great or not so great
18:11:28  It's like eating mcdonalds everday
18:11:30  the amount of hate #scheme generates towards it is just unbelievable
18:12:17  marshmallows: why do you say that?
18:19:46  I can't produce a rational argument, I simply feel that way
18:19:54  This is funny though http://www.utdallas.edu/~ramakrishnan/Projects/GC_for_C/index.htm
18:20:00  gc for c is not funny...
18:20:08  well, that page is
18:20:10  I need a GC
18:20:15  but boehm's gc, for instance, is a good idea for real use
18:20:18  I don't really want to write one
18:20:21  marshmallows: boehm. it is great.
18:20:26  well tested, robust, very widely used..
18:20:32  just don't fuzz about with pointers too much ;)
18:20:34  PLEASE DON’T USE THE CONTENTS OF THIS PAGE FOR PLAGIARISM
18:20:34  It didn't compile for me
18:20:39  I'll try again
18:21:08  is that embedded INTERCAL code?
18:21:15  /*
18:21:15  <>
18:21:15  
18:21:15  */
18:21:21  /*
18:21:21  This is the source code of our collector. Save this file in the name "GC.h" and gothrough the "Read_me.pdf" and "User_Manual.pdf" file for more details.
18:21:21  */
18:21:32  also it has excessive whitespace and each stdlib include file is extensively documented
18:21:53  FOR EXAMPLE:
18:21:53  /*
18:21:54    This header file is included inorder to enable us to do string operations
18:21:54  */
18:21:54  #include 
18:22:25  lament: their malloc printf's when it can't allocate
18:22:27  if(gc_ptr == NULL)
18:22:27  {
18:22:27  /* return NULL */
18:22:27  printf("\nYour Request cannot be satisfied even after Garbage Collection \n");
18:22:27  return NULL;
18:22:29  }
18:22:40  and on incorrect calls, prompts the user
18:22:41  printf("\nGC_ERROR 1 : The argument for the GC_malloc function should always be positive");
18:22:41  printf("\nDo u want to exit or continue without allocation (y/n ) : ");
18:22:41  scanf(" %c",&gc_continue);
18:22:52  haha
18:23:24  lament: you could use that for the befunge 'ask on div 0' thing
18:23:24  :D
18:59:44 -!- oerjan has quit ("leaving").
19:13:15 -!- ehird`ii has joined.
19:13:28  testy
19:13:43  echo>foo sending to irc is a weird feeling
19:14:19  testy2
19:14:32  testy3
19:14:46  very amusing little thing.. gotta play with this some more
19:16:11  now... how do I quit?\!
19:18:22 -!- ehird`ii has quit (Remote closed the connection).
19:22:07 -!- ehird_ has joined.
19:22:11 -!- ehird has quit (Read error: 113 (No route to host)).
19:56:44  ehird_, err?
19:56:49   now... how do I quit?\!?
19:56:53  what were you doing?
20:01:13 -!- ehird_ has quit (Read error: 104 (Connection reset by peer)).
20:04:01  Deewiant, there?
20:04:28  if a befunge interpreter runs out of memory trying to push a value on stack, what should it do? call abort() or reflect with known broken state?
20:04:43 -!- ehird_ has joined.
20:07:23 * Sgeo had a lucid dream!
20:07:44  http://www.dreamviews.com/community/showpost.php?p=735756&postcount=104
20:08:23 -!- slereah_ has changed nick to slereah__.
20:11:26 -!- ais523 has joined.
20:13:06  Sgeo: do you want a medal? :P
20:13:11  hi, ais523
20:13:29  'You are dreaming. Do a reality check!' <-- no. I am not
20:13:43  I do not use a computer in my dreams, because that would be sad. :D
20:14:04  ehird_: hi
20:14:07 * Sgeo doesn't either
20:14:23 * ais523 doesn't remember having used a computer in dreams
20:14:25  (Strangely enough, because I'm on the computer ALL THE TIME irl)
20:14:32  But apparently some people do
20:14:34  but I often think about programming whilst trying to fall asleep
20:14:45  i'm heavy in lucid dreams
20:14:46  AnMaster: I'd say the best solution is to reflect, but at that point the befunge program can't really do anything about the situation so might as well abort
20:14:55  ehird_, what was " very amusing little thing.. gotta play with this some more" about?
20:14:59  like i'm carrying all the weight of my mind saying 'you're not meant to be able to do this in dreams, damnit' while walking
20:15:06  AnMaster: a file-system based FIFO irc client
20:15:13  Deewiant: context?
20:15:17  AnMaster: you cat to 'in' files and tail -f 'out' files
20:15:20  Deewiant, yes because I just replaced the stack array pointer will a null pointer anyway XD
20:15:22  and it has a directory tree
20:15:27  of server/entity/in,out
20:15:40  ehird_, link?
20:15:44  ehird_, coolness
20:15:50  does anyone here have code for a very simple IRC client, so that it could be translated into an esolang?
20:15:52  ais523: running out of memory when pushing a value on the on stack
20:15:58  er, s/the on/the/
20:15:59  AnMaster: http://www.suckless.org/wiki/tools/irc/irc_it
20:16:04  AnMaster: from the people who brought you wmii&dwm
20:16:10  ehird_, tried zsh irc? or was it zirc?
20:16:14  ais523: yes, yes i do
20:16:23  http://www.suckless.org/wiki/tools/irc/simple_irc_client
20:16:26  isn't that convenient? ;)
20:16:34  ais523: <250 lines of c
20:16:55  ehird_, anyway there is an irc client in *pure* zsh, no external commands called
20:17:03  AnMaster: yes i know
20:17:04  and you can work in your shell at the same time
20:17:05  i told you about it.
20:17:10  it kind of hooks into the shell
20:17:15  i told you about it.
20:17:32  ais523: be warned, sic isn't very nice to use
20:17:34  ehird_, nah you didn't, I remember it was someone on #gentoo-amd64 who did
20:17:41  ais523: it's bitchx-style - multiplexes everything into one stream
20:17:42  ehird_: I don't care particularly
20:17:44  so you get mixed up channels
20:17:46  etc
20:17:46  it's the proof of concept, really
20:18:00  and you can always just start two clients for two channels and use them with different nicks
20:18:07  ais523, what language? befunge?
20:18:14  AnMaster: INTERCAL
20:18:14  presumably befunge-98
20:18:17  ais523, ah
20:18:19  ais523: uhh, intercal has sockets?
20:18:27  you cannot use netcat: you need stdin for user input
20:19:03  INTERCAL + PSOX has sockets!@
20:19:14  because I just found out that CLC-INTERCAL added generalised networking support
20:19:14  (previously, networking could only be used to steal data from other INTERCAL programs)
20:19:15  Sgeo, -_-
20:19:16  Sgeo: yes
20:19:20  Sgeo: oh shut up.
20:19:29  especially since the overhead to using psox from intercal would be painful
20:19:34  I would have done it like that if it weren't for the networking library already present
20:19:38  (ditto in just about every non-brainfuck language. don't fool yourself :))
20:19:41  ehird_, oh why would it?
20:19:43  and ehird_: you could localise the overhead in a subroutine pretty easily
20:19:51  AnMaster: psox is basically brainfuck-centric.
20:19:57  Sgeo just says it isn't for marketing potential
20:20:16  at least in C-INTERCAL; CLC-INTERCAL would be harder because some ASCII characters are easier to produce than others
20:20:19  ehird_, bf centric? how+
20:20:22  s/+/?/
20:20:25  (because it uses Baudot as its character set)
20:20:26  AnMaster: try and use it, then see :)
20:20:35  brainfuck-centric sounds boring
20:20:40  ais523: hmm, is C-intercal modular/extensible/foobarbaz?
20:20:45  ais523: I might write a SOCKET foobar.
20:20:49  It was designed mostly from the point of view of using Brainfuck, but it doesn't actually force you to use Brainfuck
20:20:51  ehird_: pretty much
20:20:56  ehird_, a "foobar"?
20:21:03  although I'm writing an FFI for it at the moment, which would make it even more extensible
20:21:03  == intercallish for module?
20:21:12  AnMaster: pretty much :D
20:21:14  ehirdish
20:21:21  AnMaster: generally we just use library files which you literally copy into a program's source code
20:21:37  they're all kept with the distribution to avoid line number clashes
20:21:42  (it's sort of like CPAN, but lower tech)
20:21:53  ais523, couldn't be done for networking I think? would need some interpreter level support
20:21:59  There is a loopback mechanism making it usable (but not easily) in languages that take in lines and not individual characters
20:22:03  AnMaster: CLC-INTERCAL has that
20:22:26  you just need to write a specially crafted line with the line number 666
20:22:35  err
20:22:38  wtf
20:22:39  ?!
20:22:49  AnMaster: it's INTERCAL, what did you expect
20:22:50  I may implement it in C-INTERCAL some time soon, but I'd use the line number 1666 so as to use a line number already reserved for the compiler
20:22:55  ehird_, not that -_-
20:23:07  ais523: I just realised we've exausted all possible Unlambda/Underload/Overload/etc names
20:23:09  Oh wait
20:23:10  Overlambda
20:23:12  that's what's left
20:23:16 -!- olsner has joined.
20:23:26  ehird_, sidewayslambda?
20:23:30  ais523: I guess overlambda would be a 15-tier system
20:23:36  ais523: with things like an ffi at the very bottom
20:23:38  Underlambda exists?
20:23:43  ehird_: Underlambda is just a cross between Unlambda/Underload
20:23:44  ais523, did you say line number reserved for compiler, errrrrrrrr?
20:23:45  Sgeo: ais523's new language
20:23:45  Sgeo: yes
20:23:49  I'm working on the spec at the moment
20:23:52  so that tier-1 is a glorified ffi with tcness
20:23:56  AnMaster: lines 1000-1999 are for the syslib
20:24:02  :D
20:24:09  ais523, so your program must be shorter than 1000 lines?
20:24:13  AnMaster: no
20:24:16  AnMaster: you can use 2000-..
20:24:18  AnMaster: no, 2000-65535 are fine
20:24:25  so a LOT of whitespace lines?
20:24:25  and not every line needs a number anyway
20:24:32  AnMaster: no
20:24:35  AnMaster: your line numbers needn't be in order
20:24:36  just do '2000 foo'
20:24:38  or contiguous
20:24:41  ehird_: (2000) foo
20:24:43  err
20:24:44  yes
20:24:45  whatever
20:24:45  oh line as in 10 PRINT HELLO     GOTO 10
20:24:45  :D
20:24:45  ?
20:24:57  AnMaster: like that
20:25:02  but the numbers needn't be in order
20:25:04  ais523: hmm, is there a C-INTERCAL grammar that isn't yacc/lex anywhere?
20:25:06  like, a spec for it
20:25:09  *PRINT LOOK AROUND YOU
20:25:22  ehird_: you can deduce it from the C-INTERCAL manual
20:25:29  or there's an IACC grammar in CLC-INTERCAL
20:25:43  ais523: alternatively, how hard would it be to hack c-intercal to produce some simple output which gave start+end+token-type positions for intercal?
20:25:44 -!- sebbu has quit ("reboot").
20:25:49  ehird_: not hard
20:25:51  that would be syntax-highlighting sorted
20:26:31  ehird_: I'd planned that sort of thing already
20:26:43  you should see the grammar, though, it takes lexical tie-ins to a whole new level
20:26:52  ais523: maybe it should dump it as an INTERCAL program which constructs the data structure
20:26:53  :D
20:27:14  ehird_: you say such things in jest. Have you ever looked at CLC-INTERCAL?
20:27:18  it's full of that sort of thing
20:27:55  C-INTERCAL compiles to a non-esolang, therefore has to be saner
20:27:55  ais523: whoaa, wait
20:27:58  http://www-cs-faculty.stanford.edu/~knuth/programs/tpk.i
20:28:01  that gives me an ideaaaaaa
20:28:02  but CLC-INTERCAL compiles to custom bytecode
20:28:06  an ideaaaaaaaaaaaaa
20:28:10  TAOCP in INTERCAL.
20:28:16  There's already one in redcode, so..
20:28:18  TAOCP?
20:28:31  what is TAOCP?
20:28:37  ..
20:28:45  Knuth you people!!!
20:28:49  ?
20:28:58  The Art of Computer Programming!
20:28:58  I've bacronymed it into "The Art Of Computer Programming", but am not sure whether I am right
20:29:14  You know, Knuth's '70-Aleph0 work
20:29:18  ehird_, well since it is kuth, why not do TeX in intercal?
20:29:22  the origin of tex/
20:29:22  ?
20:29:27  AnMaster: ehh, taocp is in blocks
20:29:31  you can translate one algo at a time
20:29:34  but tex.. sheesh
20:29:37  http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web <-- tex82
20:29:40  hideous :D
20:29:47  ehird_, I mean a tex processor/interpreter/whatever in intercal
20:29:48  & is actually in an HTML document
20:29:49  which is hilarious
20:29:54  AnMaster: hideously complex.
20:30:07  ehird_, yes both are
20:30:14  ehird_: INTERCAL-72 acts block-structured and imperative, because all languages were back then
20:30:22  so it's not too hard to translate that sort of code
20:30:31  luckily, CLC-INTERCAL sorted out the problem by banning NEXT
20:30:35  AnMaster: um no..
20:30:41  and even in C-INTERCAL I consider using it for subroutines to be bad form
20:30:46  AnMaster: you can do TAOCP one at a time
20:30:46  sheehs
20:30:50  ehird_, err?
20:31:07  AnMaster: http://impomatic.blogspot.com/
20:31:10  that'st he redcode one
20:31:20  ehird_, I just said coding a a program in intercal that can process TeX
20:31:28  and produce, say, *.dvi
20:31:56  AnMaster: do you know how complex tex is?
20:32:00  and how quite primitive intercal is?
20:32:02  ehird_, rather complex yes
20:32:04  well, it has loads of stuff
20:32:04  I know that
20:32:07  ehird_: INTERCAL isn't primitive
20:32:09  that was why I suggested it
20:32:11  ais523: I meant it like..
20:32:17  it just looks that way from a read through the INTERCAL-72 manual
20:32:17  primitive as in very repetitive
20:32:20  to do even basic stuff
20:32:23  read a more modern manual, you'll get the hang of it
20:32:30  since although it has many instructions, they do not do much useful
20:32:49  AnMaster: 'implement tex' is like saying 'implement c'
20:32:55  except a little less horrific
20:32:56  err that http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web, got weird stuff in it
20:32:59  while p≠null do
20:33:02  wtf?
20:33:04  AnMaster: it's html...
20:33:08  "pâ‰"?!
20:33:09  save it as .html
20:33:10  then ctrl-a
20:33:16  and copy it into a .web file
20:33:21  have you not seen a backtracking, or multithreaded, or class-oriented, or overloading and enslaving-using INTERCAL program?
20:33:25  uhu
20:33:25  or are you stuck in 1972?
20:33:36  ais523: i'm trying to say that the basic operations like text transforming
20:33:37  ais523, "enslaving-using"?
20:33:38  are very tedious
20:33:45  AnMaster: like pointers, but in reverse
20:34:01  it's a CLC-INTERCAL concept that's kind of hard to explain and that I don't understand properly
20:34:02  in reverse... not sure I get what you mean?
20:34:10  AnMaster: neither do I
20:34:22  AnMaster: anyway, those chars are things like ≠
20:34:27  (=/= if you can't see it)
20:34:28  ais523, so what are they, you maintain a intercal implementation right?
20:34:31  so save as html!
20:34:34  AnMaster: I don't implement them
20:34:38  ehird_, I got utf8 here
20:34:43  ais523, ah
20:34:50  AnMaster: save tex.web as an html document damnit
20:34:50  so CLC does?
20:34:54  AnMaster: yes
20:35:09  it's the only INTERCAL implementation I know that actually handles the type system properly
20:35:24  ehird_, isn't it rather silly that it is on the internet as text/plain
20:35:34  C-INTERCAL's version is a statically-typed hack that usually works correctly, but with one exception that it's worth warning people against
20:35:34  tex.web proves that you can write good software with any tools
20:36:50  AnMaster: knuth's webserver is bugged, so what
20:37:05  heh
20:37:13  lament: or rather without... like dynamic memory allocation!
20:37:25 * ais523 remembers that Wikipedia refuses to serve any documents with the type text/plain because IE keeps trying to interpret it as JavaScript and running it
20:37:37  http://www.classnamer.com/
20:37:41  what's tex.web?
20:37:48  they use text/css, which in all commonly-used browsers does what text/plain ought to do
20:37:53  marshmallows: http://tug.org/texlive/devsrc/Build/source/texk/web2c/tex.web
20:37:55  marshmallows: source to tex, circa 82
20:38:01  lament: no, that's more recent
20:38:09  it's still tex.web
20:38:09  why is it in an HTML file?
20:38:15  3.141592
20:38:19  lament: Yeah someone linked it a while ago
20:38:22  because WEB is a literate programming system
20:38:25  marshmallows: who cares
20:38:28  lament: no, it's in a 
20:38:31  anyway
20:38:33  THE REAL REASON
20:38:38  is that knuth wanted to put tex.web on his website
20:38:38  ehird: me since I have NFI what it is
20:38:42  so he wrote an html document wrapping it
20:38:45  and uploaded it
20:38:49  lament: with an extra ! at the start of the program, TECO becomes a literate programming language
20:38:49  but he uploaded as tex.web
20:38:50  ok
20:38:55  and his webserver serves not-.html as text/plain
20:39:09  marshmallows: it's Knuth's TeX typesetting system, as it was in 1982
20:39:15  ais523: i'm not sure why i would be interested in TECO :)
20:39:27  lament: it's a classic esolang
20:39:29  ais523: I want to learn teco. :(
20:39:34  although it wasn't intended as such originally
20:39:45  IMO it's up there with BancSTAR
20:39:50  i don't think things like that qualify as esolangs
20:40:08  hmm
20:40:10  BancSTAR is clearly an esolang, despite the fact that it was intended as a serious language
20:40:13  its code looks like noise
20:40:17  I want a language that is pure-literate
20:40:18  but so does binary code
20:40:18  it's like Network Headache
20:40:27  lament: TECO is binary, more or less
20:40:31  hmm
20:40:34  what about nested literate
20:40:36  all the characters in the character set, including the control codes, have meanings
20:40:38  ais523: right. that doesn't make it an esolang.
20:40:42  comment>>
20:40:49  no wait
20:40:51  reverse that
20:40:53  ais523: it's not being unreadable that makes something an esolang
20:40:54  ehird_: TECO isn't !comment!code!comment!code!
20:40:56  comment>code>comment>code<<<
20:41:07  so like this:
20:41:07  but it amounts to that because the chances of the bits between the !s having any meaning is very low
20:41:17  This procedure does X, then does Y:
20:41:33  >X{y:int >our temp var< ...}$<
20:41:34  :D
20:45:53 -!- tola has joined.
20:49:34  ais523: perl global variable initialized to false
20:49:35  quick!
20:49:36  :D
20:49:38  no wait
20:49:44  initalized to true
20:50:09  ehird_: $]
20:50:18  it's the version number, which is not false, and therefore true
20:50:26  ais523: wow
20:50:27  :D
20:50:40  unless you happen to be using Perl version 0, which doesn't exist
20:51:17  ais523: multiple statements in one expression?
20:51:27  do{statement;statement;}
20:51:33  the last statement gives the value of the expression
20:51:53  oh, and those braces don't count as braces for any purpose but for delimiting the do
20:52:02  they can't be redo'ne, for instance
20:52:09  but you can put a real pair of braces inside them if you like
20:53:22  ais523: (??{$foo})
20:53:23  right
20:53:24  ?
20:53:28  yes
20:54:09 * slereah__ received this : http://membres.lycos.fr/bewulf/Russell/Ada2.jpg
20:54:10  :D
20:55:04  ais523: http://pastebin.ca/946562 this would be the ugliest perl ever if it actually worked
20:55:18  ehird_: you've never seen ugly Perl, obviously
20:55:51  uh... you can't /assign/ to the version number
20:55:53 * SimonRC likes classnamer.com
20:56:30  if you never use <> again, you could instead use $/ as a default-true global
20:56:35  (the line separator)
20:56:40  "RecursiveLolcatMonitor"  hehehe
20:56:47  I /think/ newline is true
20:57:14  no, newline is apparently false
20:57:16  ais523: i have to escape $/ in a regexp obviously
20:58:02  OK, then use $. which is the number of times you've called <> so far
20:58:11  it'll be 1 by that point in the program, and you're allowed to assign to it
20:58:38  ais523: wtf use does that var have
20:58:54  ehird_: writing line numbers in the margin of documents
20:58:58  and translating sed into perl
20:59:04  ais523: here is my error
20:59:07  Bareword found where operator expected at lit.pl line 4, near "s/[^@]*/print $.?"$0":"
$0 there are no Visitors, Listeners, Iterators, etc though  :-(
20:59:19  ehird_: the bareword is PRE
20:59:23  ais523: oh wtf
20:59:26  because you forgot to escape the / in 
20:59:40 be kind on yourself and use a different delimiter than / for the regexp 20:59:40 ais523: and $0 isn't interpolated, damn 20:59:43 :( 20:59:55 you can write s%[^@]*%print... for instance 21:00:01 what did you expect $0 to be? 21:00:09 ais523: whole-match 21:00:11 $& 21:01:16 E>1
0
1
0
1
0
1
0
1
0
1
0
1
0
21:01:18 that's what it does now 21:01:18 :D 21:01:25 s%[^@]*%print $.?$&:"
$&
";$.=!$.%e and redo; 21:03:37 ehird_: isn't that what it's meant to do? 21:03:53 ais523: um..no 21:03:56 it's meant to return the whole match 21:04:09 oh, it's because s%%e will insert the result of the expression into the original string 21:04:20 okay.. :p 21:04:28 put ;"" at the end of the expression 21:04:33 so you have no replacement 21:04:39 E>

so $& is broken 21:05:09 $& is my replacement, somehow.. 21:05:47 ais523: in s/foo/.../, performed on 'foo', group 0 = 'foo' 21:06:30 that should be $& 21:06:36 although I can't remember when it's assigned to 21:06:44 just do things the easy way, using parens and $1 21:06:58 $& is really inefficient, anyway 21:07:15 it slows down all the regexps in your program if you even mention it once 21:07:24 still does the same thing oddly 21:07:38 ehird_: you're using * not + 21:07:41 so you can make a zero match 21:07:45 and you don't mean that 21:07:58 Literate program

helloworldabcdef
21:07:58  
21:08:05 or you'll keep matching no chars at the start of the string... 21:08:08 my /e is broken 21:08:09 :D 21:08:48 hm 21:08:52 it now infiniloops 21:09:14 ahh i see 21:10:05 ais523: really, i just want to eval some code when i see some stuff 21:10:09 then remove that stuff from the document 21:10:24 use /eg, rather than looping 21:10:40 then you don't start from the start every time 21:10:51 ais523: but then my @ replacement doesn't work 21:11:06 since the rules have to be done one after another, in a 'try this, or this, or this' fashion 21:11:14 then advance how much it consumed 21:11:59 ehird_: you aren't replacing the @s 21:12:05 just the characters between them 21:12:14 s/@/$.=!$.;""/e and redo; 21:12:18 QED 21:12:56 hmm 21:12:59 I want ^@ 21:13:10 but then i get 21:13:11 Literate programhelloworldabcdef 21:13:11 21:15:25 ais523: !$. == $. 21:15:29 or: $. == 0 21:15:32 then !$. == 0 21:16:06 or rather 21:16:11 my $.=!$. in my replacement doesn't work 21:16:38 hmm... I've never used ; in an /e replacement before, but presumably it works (I can't think of what else it would do other than error) 21:18:12 ais523: http://collabedit.com/display?id=ae50449cf0ae8339cc7a28cf546ff29c cute. i'm going to put my code here as an experiment 21:18:33 ehird_: I'm too busy with other things right now to help, really 21:18:42 if you ask again on Thursday I'll be a lot freer 21:27:17 "Object-oriented programming is an exceptionally bad idea which could only have originated in California." -Djikstra, apparently 21:29:07 I'm not sure that objects have failed 21:30:34 Deewiant, should the interpreter abort() on any out of memory conditions or just on stack one? 21:31:23 AnMaster: I think you'll find that your interpreter will abort() by itself if it runs out of memory ;-) 21:31:27 Deewiant, on stack-stack the specs seem to suggest it should work as r, but it doesn't say anything about other routines 21:31:32 AnMaster: for { and } it should be r 21:31:33 yeh 21:31:53 Deewiant, I tried with ulimit -v, it didn't abort, it caused GC to print lots of warnings 21:31:57 and errors 21:32:01 but it didn't abort 21:32:33 right, C doesn't have exceptions. :-P 21:32:41 Deewiant, ok point taken 21:32:53 I forgot to check some return values of mallocs for NULL indeed 21:34:32 AnMaster: linux will kill a process -- any process -- if it runs out of memory 21:34:41 write a 4-line malloc wrapper that abort()s on NULL. 21:34:42 ehird_, yes I know that 21:34:44 use it everywhere. 21:34:55 ehird_, well that slows things down ;P *runs* 21:36:02 ehird_, and I would need one for calloc, and one for GC_MALLOC_ATOMIC and so on 21:36:04 realloc too 21:38:21 I dumped a trace from mycology, one instruction for each line: 21:38:23 $ wc -l trace.txt 21:38:23 125363 trace.txt 21:38:51 processing 125363 befunge instructions in 0.08 second, amazing what modern computers can do really 21:39:46 and most of that is IO reading file in 21:40:08 AnMaster: never use calloc() 21:40:13 calloc is a sign of lazy programming 21:40:14 -!- mib_ko3mgv8a has joined. 21:40:18 plus, it's slow, which matters to you so much 21:40:31 ehird_, hm? slower than malloc + memset to fill with 0 after? 21:40:46 AnMaster: that in itself is pretty slow 21:40:59 ehird_, needed that in that place hrrm 21:41:12 * AnMaster rewrites 21:41:13 AnMaster: fix that place 21:41:14 :D 21:41:48 anyway my tests shows than around 0.06 seconds = loading file, the rest two = run program 21:42:02 most time is spent in hash code in both cases 21:42:17 as funge-space = hash table 21:42:17 huh? hashing? 21:42:20 ah, ok 21:42:30 what's wrong with calloc? 21:42:55 well, for a start, funge-space must be initialised to 0 21:43:08 actually, to ' ', i.e. 32. 21:43:17 so assuming that 0.02 is spent at program running, my interpreter runs mycology at about 6 MHz, or slightly faster due to rounding 21:43:18 SimonRC: you can't initialize ALL Of fungespace. 21:43:20 um, yes, that was what I meant 21:43:29 SimonRC: you just use a default value on a hash table 21:43:35 yes 21:43:37 SimonRC, of course it isn't, default value == ' ' 21:43:47 we need a UniFunge 21:43:49 :D 21:43:51 so if no cell exist it returns space 21:43:57 there is a Unefunge already 21:43:58 it's like befunge, but abusing tons of unicode 21:43:59 ehird_, unefunge does exist 21:44:03 SimonRC: unifunge, dmanit 21:44:04 ah, unicode 21:44:06 ah 21:44:06 outch 21:44:08 ouch 21:44:23 well, there is ping-pong 21:44:38 I wonder why just 6 MHz :/ 21:44:42 or so 21:45:14 well, you are obviously using a few hundred real instructions for each virtual one 21:45:16 still pretty fast compared to bashfunge that was at most in the khz range 21:45:17 :D 21:46:12 AnMaster: write an asmfunge 21:46:15 :D 21:46:22 ehird_, forget that! 21:46:35 (ping-pong has a custom charset) 21:46:50 actually a faster hash library would help 21:46:56 I used gprof 21:47:05 most time is spent in searching hash table 21:47:41 AnMaster: you are using a perfect hash table, right? 21:47:42 :| 21:48:18 ehird_, err? I just took a hash library that was easy to use, had a compatible license, and didn't suck too much 21:48:22 probably far from best 21:48:25 AnMaster: xD 21:48:28 you have a finite set of keys. 21:48:32 ergo: http://www.gnu.org/software/gperf/ 21:48:39 a known set of keys, too 21:48:50 SimonRC: exactly 21:49:02 -!- ehird_ has changed nick to ehird. 21:49:21 ehird, anyway I don't know what my hash will contain, it could be any befunge program 21:49:22 :/ 21:49:34 AnMaster: you should learn about hash tables.. 21:49:40 you know exactly what keys you will have 21:49:45 -!- mib_ko3mgv8a has quit ("http://www.mibbit.com ajax IRC Client"). 21:49:51 ehird, yes I should learn about them 21:50:00 AnMaster: basically: 21:50:10 ehird, keys will be structs like { .x = ..., .y = ... } 21:50:11 if you have a finite set of keys and you know exactly what keys are possible, 21:50:13 at least they are now 21:50:16 ... 21:50:29 SimonRC: Please tell AnMaster his fungespace has a warped, terrible design. 21:50:37 ehird, it probably hash 21:50:39 has* 21:50:40 I agree 21:50:51 ehird, but I got an abstraction so easy to change 21:50:55 AnMaster: if you use a perfect hash functino like gperf will generate for you and stop using structs for the keys you will be great 21:51:05 you might have to throw out your abstraction for efficiency 21:51:28 hmm 21:52:01 ehird, hm it is just a case of get/set functions and load file and wrap 21:52:28 actually the most efficient representation for funge-space is a hard problem 21:52:45 SimonRC, well it is a 2D array that need to be sparse 21:52:52 yes, i know 21:53:05 oh and negative values are valid 21:53:10 like say, -4,-6 21:53:11 often the middle is very dense, so an array would be good 21:53:14 totally valid 21:53:58 but the program might store a value anywhere in funge-space, so you must be able to handle that without suddenly allocating a multi-PB array 21:54:06 SimonRC, indeed 21:54:21 some kind of trie would suck for the common case... 21:54:27 SimonRC, valid ranges here are, depending on compile time options, either int32_t or int64_t 21:54:40 for both x and y 21:54:49 and you will want to exploit high code locality 21:54:50 hmm 21:54:56 'mv *.pl *.py' should work :( 21:55:00 clever *-globbing. 21:55:06 as replacement 21:55:09 ehird: how would that work? 21:55:14 SimonRC: move all .pl to .py 21:55:22 there is usually a "rename" utility 21:55:23 ehird, it would need to be integrated into the shell 21:55:23 SimonRC: the * is taken as the 'common part' 21:55:32 AnMaster: yup 21:55:32 AnMaster: not if the shell was clever with * globbing 21:55:43 if you consider * to be a special variable-alike 21:55:48 ehird: um, then the shell would need to know about cp 21:55:51 SimonRC: no 21:55:53 autoload zmv 21:55:54 ehird, try rename like SimonRC said 21:56:01 marshmallows, zsher? 21:56:10 SimonRC: it would work for 'foo *.pl *.py' 21:56:14 it would just redefine what * means 21:56:23 ehird, why not write such a shell? 21:56:39 AnMaster: lazy 21:56:42 ehird, also how would it call it? call the function x times? 21:56:48 or program or whatever 21:56:54 AnMaster: not sure yet 21:56:55 use the right tool for the job 21:56:55 :D 21:56:56 man rename 21:57:14 ehird, or just a simple loop 21:57:19 AnMaster: shut UP, every time someone comes up with an idea, even if not intended to be made into practice, you yell at them for not using your preferred toolchain 21:57:19 :| 21:57:30 ehird: no he isn't 21:57:36 for file in *.pl; do mv "$file" "$(basename "$file" .pl).py"; done 21:57:39 NOT TESTED 21:57:49 so don't complain if that does the wrong thing 21:57:57 you could get rid of basename calll 21:57:58 call* 21:58:06 using parameter expansion iirc 21:58:22 left as an exercise to the reader ;P 21:58:47 ls >>= mv `ap` (s/*pl/*py/) 21:58:49 lol 21:59:00 marshmallows, is that zsh? 21:59:04 no 21:59:10 marshmallows, what shell? 21:59:16 none 21:59:22 oh what is it then? 21:59:30 AnMaster: that's haskell with the right functions 21:59:35 hmm 21:59:40 list-monad + IO i think 21:59:47 and... s/// :P 22:00:46 perl has lots of good quoting .. I wish more langs had 22:02:05 you can add regex functions to any language, but you have to use strings :/ 22:06:09 ehird, as far as I can see reading gperf docs, it seems to require a static data set, wouldn't that mean it would just match a single program, ie, mycology, or wumpus or whatever? 22:06:35 AnMaster: your data set is (x,y).. 22:06:36 0,0 22:06:37 0,1 22:06:40 yes 22:06:41 etc 22:06:41 true 22:06:46 ehird, and negative values 22:06:50 AnMaster: yes yes whatever 22:06:50 :) 22:07:02 AnMaster: Just use gperf for each data range you offer (32 and 64) 22:07:10 and use one or the other hash depending on the choice 22:07:15 hm 22:16:14 ehird, I'm still not sure I understand, from reading gperf docs it seems to be for strings only? :/ and where does it do ranges? 22:16:31 ie, -2^31 to 2^31 22:16:33 or whatever 22:17:13 I don't have disk space for a file with 2 * 2^64 lines 22:19:57 hmm 22:20:02 you could jit stuff 22:20:17 initially, interpret 22:20:45 if a region is executed a lot with no change, JIT it, but look out for changes to an "dependents" the region has 22:22:37 SimonRC, good idea, but considering mycology, most sections aren't executed several times 22:22:55 well there will be little speed penalty 22:23:23 SimonRC, JIT would mean compile to machine code? 22:23:29 yes 22:23:32 you know that fails on lots of OS 22:23:38 like openbsd that I'm on atm 22:23:40 'mv *.pl *.py' should work :( 22:23:42 well the JVM manages it 22:23:53 ehird: 'ren *.pl *.py' does work in DOS 22:23:58 and does what you wanted 22:24:03 because the shell does no globbing at all 22:24:06 SimonRC, memory pages are either writable or executable but not both 22:24:17 that is because DOS relies on the program to do globbing 22:24:23 SimonRC, important security feature of modern systems 22:24:34 AnMaster: so how to JVMs do JITting? 22:24:42 AnMaster: but self-modifying code is often useful! 22:24:58 SimonRC, they mark themself as needing writable stack/whatever 22:25:06 err executable and writable 22:25:13 however it is complex to do that 22:25:15 iirc 22:25:47 SimonRC, also compile to machine code, well what arch 22:25:55 x86? x86_64? ppc? ppc64? 22:26:00 whatever is supported 22:26:07 I want portable code, and I use all of those arches myself 22:26:15 note that I'm not good at asm either 22:26:28 AnMaster: then just use a portable asm 22:26:34 wait, you want me to do something 1000 JMV and .NET engineers can't and produce a protable JITter? 22:26:35 like C--, or an OISC 22:26:37 ais523, eh? 22:26:52 (C-- would be the 'serious' choice) 22:27:09 ais523, that would mean a compiler at runtime? 22:27:12 AnMaster: no 22:27:19 unless I misunderstood C-- 22:27:23 it just assembles into a range of different architectures 22:27:23 got a link for C--? 22:27:26 it's a programming language 22:27:38 ais523, right, but how would that work for JIT? 22:27:42 indeed 22:27:57 how to compile code not at runtime when the code is written at runtime? 22:28:04 http://www.cminusminus.org/ 22:28:12 hmm... for JIT you'd probably have to precompile some example asm 22:28:26 and then use the results of that as your asm for the target system 22:28:40 -_- 22:30:34 "Research on C-- and Quick C-- is supported by a generous gift from Microsoft Research and by the National Science Foundation under grant number 0325460." 22:30:38 heh 22:30:41 m$... 22:31:47 AnMaster: they probably need a portable asm for some reason 22:32:00 C-- is used by ghc as well, according to Wikipedia 22:32:20 anyway it doesn't make sense for a JIT as far as I can see 22:32:31 back 22:32:32 who said something 22:33:05 ehird: me, AnMaster, SimonRC 22:34:26 AnMaster: 22:34:33 ehird, yes? 22:34:37 'M$' is pretty immature 22:34:48 yes they are 22:34:50 * AnMaster runs 22:34:54 AnMaster: simon peyter jones -- Haskeller and one of the founders of GHC, the main haskell compiler -- is on MS research 22:34:58 and also made c-- 22:35:11 -!- oerjan has joined. 22:35:18 ehird: that would explain why ghc uses C-- and Microsoft funds it 22:35:22 yes 22:36:07 microsoft is evil!!!! 22:36:13 boycott ghc! 22:36:15 * ais523 thinks that there are all types of people at Microsoft; the company itself is completely self-serving and acts in a way most of its employees dislike, but the employees themselves aren't all bad 22:36:39 they're mostly just confounded by the company's rules to the point where they're not allowed to do nonevil things all that often 22:36:39 microsoft is, first of all, Big 22:36:52 yhc looks really cool 22:36:55 lament: and has Various Noodly Appendages 22:36:59 ehird, see what I said about gperf 22:37:12 ehird, care to explain my questions? 22:37:30 ehird check it out 22:37:59 ais523, their marketing is evil 22:38:01 marshmallows: meh 22:38:07 AnMaster: yes 22:38:09 ais523, just one word: "sourcefource" 22:38:14 it even fooled their own employees 22:38:16 or however they spell it 22:38:37 AnMaster: there is a Great War between God and Evil, and Linux is Good and M$$$$ and the $PEOPLE$ who use it SUCK and are EVIL!!! Why is everyone so STUPID to use it????? 22:38:39 (one of the MS high-ups related to Vista was fooled by a 'Vista Capable' sticker into buying a machine that basically couldn't run it) 22:38:46 * ehird is perhaps exaggerating to the point of stereotypes 22:38:56 but I have seen this stereotype around in a very literal form :) 22:39:17 yes indeed you are 22:39:27 I know there are good ppl at MS 22:39:33 but the company *IS* evil 22:39:41 * ais523 agrees with AnMaster 22:39:44 AnMaster: evil is such a funny term 22:39:45 define it. 22:39:46 well, it does nasty things 22:39:51 except I would have highlighted the word 'company' 22:39:52 ehird, ais523 can do that 22:40:03 but only to the extent that many companies would in that situation 22:40:08 i.e. natural dominance 22:40:45 AnMaster: outsourcing, eh? 22:40:47 and its software is comstimes dreadful 22:40:51 *sometimes 22:41:04 ehird, yes I would define evil as the microsoft company 22:41:13 ehird, I'm still not sure I understand, from reading gperf docs it seems to be for strings only? :/ and where does it do ranges? 22:41:20 ehird, care to answer? 22:41:36 AnMaster: the hash function for a range is the identity function. 22:41:44 assuming its result can fit in that range that is 22:41:55 err? 22:42:54 "# The gperf utility is tuned to execute quickly, and works quickly for small to medium size data sets (around 1000 keywords). It is extremely useful for maintaining perfect hash functions for compiler keyword sets. Several recent enhancements now enable gperf to work efficiently on much larger keyword sets (over 15,000 keywords). When processing large keyword sets it helps greatly to have over 8 megs 22:42:54 of RAM. " 22:43:21 that software must be old 22:43:25 or rather the docs must 22:44:25 AnMaster: not all computers have a lot of memory 22:44:45 although ehird laughed at the Emacs documentation for saying things like 'if you don't have a mouse' 22:44:48 ais523, true, yet I fail to see how gperf, after reading the docs, can do this 22:45:39 well, good night 22:45:40 I was using a computer which was too simple to run Emacs or even vim (I had to learn some minimal vi), and where I had to supply my own terminal (telnet or ssh) 22:46:06 hmm 22:46:17 what are vim's advantages over emacs? 22:47:15 SimonRC: no RSI 22:47:41 in particular? 22:47:55 SimonRC: smaller keystrokes feel like they do more 22:48:00 i.e. more of a wizard 22:48:14 + its range-thingy system is cool 22:48:20 apparently test show that it isn't much faster though 22:48:23 ehird: yes 22:48:28 if at all faster 22:48:34 because you have to tink more 22:48:48 SimonRC: most experienced vim users won't think about most of the keystrokes, I think.. 22:48:50 same with emacs 22:48:50 you can press arrow keys much faster than type complex movement commands 22:48:56 and hardly 22:49:02 4 words along: 22:49:06 M-> M-> ... 22:49:07 or 22:49:10 4w 22:49:16 Or.. 22:49:19 C-u 4 M-> 22:49:30 -!- oklofok has quit (No route to host). 22:52:09 ehird: I just noticed the command line of my IRC client: konversation -caption Konversation --icon=konversation 22:52:17 surely that's a bit more repetitive than would be needed? 22:52:35 ehird: M-4 M-> 22:53:28 no, not M->, that's end-of-document 22:53:31 maybe M-.? 22:53:41 no, M-f 22:53:44 err, I meant 22:53:44 --> 22:53:47 as in the arrow key 22:54:03 i would have said f, but SimonRC said 'you can press ARROW KEYS ..' 22:54:31 ah, yes 22:54:36 waitamo... 22:54:39 * SimonRC thinks 22:54:51 for speed purposes, vim has arrow keys 22:54:55 they're marked hjkl 22:55:08 they are just as fast as arrows to type 22:55:18 though switching modes will slow you down 22:55:19 SimonRC: vi was invented before arrow keys 22:55:20 deal with it 22:55:27 well yes 22:55:31 also, its easier to switch modes with hjkl because your hands are closer 22:55:38 you have to move your hands to the arrow keys. 22:55:51 plus at least one person -- me -- finds the layout of the arrow keys uncomfortable to use 22:55:55 and literally, as the i key is right next to them 22:58:16 SimonRC: soo... there's a couple advantages for you 22:58:17 :p 22:58:25 oh, and vim integrates with the unix way 22:58:28 filters, etc 22:58:41 you have probably seen the recent thing about using vi(m) for a hex editor 22:58:44 :!xxd -> to hex 22:58:49 :!xxd -r -> and back 22:59:00 err 22:59:03 :!%xxd 22:59:04 :!%xxd -r 22:59:05 it's M-x hexl-mode in Emacs 22:59:13 ais523: yes, but that's not the point 22:59:19 the point is that 'xxd' can know nothing about vi(m) 22:59:21 and still function fine 22:59:40 there's probably a way to do that in Emacs somewhere too 22:59:52 it's probably hardly ever used, though, because Emacs purists tend to resist using any non-Emacs programs 23:00:04 Emacs is often described as an OS. It isn't. It's a shell 23:00:18 * ais523 can imagine an OS that uses Emacs as a window manager 23:00:21 ais523: I am just demonstrating the vi philosophy 23:00:30 yes 23:00:35 I personally think the philosophy of filters etc. is a lot nicer than emacs' 23:00:37 I approve of the vi philosophy 23:00:46 and i would use vim if lisp&haskell weren't painful with it 23:00:54 vi and emacs are good for different things 23:01:14 emacs is very good with programming languages, for instance, but less good for conffiles and still less good for formatted text 23:01:43 it's irritating to have to type M-q regularly just to get lines to wrap properly (even with auto-fill-mode turned on) 23:02:21 ais523: i would say that vi is very good for programming languages too 23:02:24 we just need a modern vi 23:02:48 ehird: its main issue (also its main strength, but not in this context) is that vi doesn't know enough about the file it's editing 23:03:14 for instance, python-mode in Emacs can automatically move a line between all the correct possible indentations when you press tab, and tell you what they close 23:03:23 that sort of thing doesn't fit well in vi 23:03:24 ais523: you underestimate modern vim 23:03:29 yes 23:03:37 ais523: but, yes that issue needs some thinking 23:03:37 but IMO making vi more like emacs defeats the point of vi 23:03:58 ais523: indeed 23:04:03 we need a third option 23:04:03 like 23:04:04 vi 23:04:05 ^ 23:04:06 | 23:04:10 ---------> ??? 23:04:11 | 23:04:12 v 23:04:12 emacs 23:04:22 now, obviously linking the top and the bottom won't work 23:04:31 but if you can figure out ???, you can bend them both half-way 23:04:31 * ais523 thought ??? was what you did just before you profited 23:04:35 and maybe come up with something decent 23:04:39 ais523: may be so! ;) 23:04:52 ??? would be a great name for a program 23:05:00 you'd have to type it as \?\?\? in most shells 23:05:07 and you couldn't run it at all in Windows 23:05:15 (because it's an invalid filename in NTFS) 23:05:27 hehehe 23:05:39 I created a file called .url once somehow 23:06:02 $ ??? 23:06:02 /usr/bin/ld: dmd: No such file: File format not recognized 23:06:02 collect2: ld returned 1 exit status 23:06:07 windows wouldn't let me name other files similar things 23:06:28 * ais523 was curious to see what would happen 23:07:05 it seems that the first three-char filename in alphabetical order in my home dir was 'c++' (a directory), and I also had a program c++ on my system 23:07:17 but dmd was also a directory (me experimenting with D), and so c++ couldn't link it 23:08:04 * SimonRC goes (impending NFS downtime) 23:08:04 ais523: better - *** 23:08:09 $ *** 23:08:09 bash: Root.pm: command not found 23:08:13 you get fun error messages! 23:08:29 ah, capital R makes it come first alphabetically 23:08:52 incidentally, I've seen a shell-script used to implement init, which used shell globbing to run all the startup scripts in priority order 23:09:06 because the filenames encode the priority in ASCIIbetical order using numbers 23:09:13 echo "#!/bin/sh\nsudo rm -rf *" > ~ehird/\ \ \ \ \ .sh 23:09:15 * SimonRC goes (impending NFS downtime) 23:09:24 ais523: can you make cpan sane? :/ 23:09:33 like, NOT ask me about every single thing 23:09:34 SimonRC: you forgot to chmod it +x 23:09:42 ehird: I haven't seen how CPAN is implemented 23:09:44 and NOT spew out 9 pages of output that reads like a conversation with a child 23:09:47 but have only had trouble with it myself 23:10:01 (that was the time I tried, and failed, to install Perligata) 23:10:12 'I didn't find X! Ok, now I'm searching for it... found X in: (9 long directories). Initializing package bootup system... continue? [y]' 23:10:21 hah 23:10:24 ==> Auto-install the 67 mandatory module(s) from CPAN? [y] 23:10:28 after a list of 67 modules 23:10:31 with detailed version info 23:10:38 ehird: apt-get does that too 23:10:43 ais523: one per line. 23:10:46 ah 23:10:55 ais523: did i mention it listed all the files in the package i'm installing? 23:10:58 close to 1000 of them 23:11:00 one per line. 23:11:04 including all the tests. 23:11:39 ehird: I wonder if anyone's written a grep program (or sed if grep isn't powerful enough) that filters out all the useless stuff from CPAN? 23:12:28 ais523: I think it's called /dev/null 23:12:47 no, that wouldn't filter out anything 23:12:50 cpan () { yes | cpan $* > /dev/null 2>&1 } 23:13:12 /dev/dotstar might be more useful 23:13:32 but you'd have to create that device somehow 23:13:40 ais523: see my function 23:13:49 also, there should be a mkdev: 23:13:57 mkdev /dev/foo '...' 23:13:58 example: 23:14:11 mkdev /dev/foo perl -e "print 'ima /dev;\n'" 23:14:15 cat /dev/foo => ima /dev 23:14:27 mkdev /dev/rot13 rot13 23:14:37 echo "hi" >/dev/rot13; cat /dev/rot13 => 23:14:38 etc 23:15:25 -!- oklofok has joined. 23:15:47 there might be some way to rig one of those up out of mknod and some custom kernel modules 23:16:02 but I don't feel like trying right now 23:18:51 ais523: acme:: is fun 23:19:02 ehird: seen Acme::Bleach? 23:19:10 it predates Whitespace 23:19:53 my favorite is 'dont' 23:20:09 dont { foo } # foo is never executed 23:20:20 marshmallows: INTERCAL has that feature 23:20:27 ais523: many times 23:20:51 maybe(PROB) { foo } # foo is executed, probability PROB 23:21:00 maybe { foo } # foo is executed, with a random probability 23:21:06 ehird: but that isn't what MAYBE does in INTERCAL! 23:21:10 it should abuse ranges 23:21:15 maybe(1..0) { one out of ten times } 23:21:21 maybe { ... } then picks a random range, of course. ;) 23:21:58 an INTERCAL-named version would be double_oh_seven(PROB) { foo } 23:23:03 although emulating INTERCAL MAYBE would be great 23:23:17 maybe { ... } (store a continuation on a continuation stack, then execute ...) 23:23:29 go_ahead; (pop a continuation from the continuation stack) 23:23:44 ais523: you can apparently do continuations in perl 23:23:47 Jifty does it apparently 23:24:01 go_back; (if the top continuation on the continuation stack is not stale, go back to it except don't execute the maybe and mark it as stale; otherwise pop it) 23:24:18 (popping a continuation discards it) 23:24:22 there's the INTERCAL backtracking model in a nutshell 23:24:40 Could you do Prolog in INTERCAL? 23:24:52 marshmallows: I have a very unfinished Prolog-to-INTERCAL compiler somewhere 23:24:57 I don't see any technical reason why not 23:25:12 INTERCAL has all the features needed to easily implement Prolog 23:26:48 it even has a unification-like feature, but it turns out to be more confusing than useful to try to compile Prolog unification into it 23:27:03 mostly because INTERCAL doesn't support as many data types natively as Prolog does 23:28:00 but also because it isn't properly transitive like Prolog unification is 23:28:25 INTERCAL is crazy..... 23:29:05 marshmallows: really? that's an odd and unique opinion 23:29:23 lol 23:29:23 nobody has ever thought that before :) 23:30:33 many of the Acme:: modules appear to have no documentation 23:30:42 I found this in one of the READMEs: "If this is still here it means the programmer was too lazy to create the readme file." 23:31:25 http://search.cpan.org/~rjbs/Acme-Lingua-EN-Inflect-Modern-0.003/lib/Acme/Lingua/EN/Inflect/Modern.pm 23:31:50 hmm... the readme was added in a later version... I still don't understand, though, while I would need to prevent users accessing my web server on a full moon 23:32:29 ais523: http://search.cpan.org/src/GMCCAR/Acme-ManekiNeko-0.02/ManekiNeko.pm 23:34:10 haha: `use less 'memory';` 23:34:13 http://search.cpan.org/src/ADAMK/Acme-BadExample-1.00/lib/Acme/BadExample.pm 23:35:22 found in a BUGS section: "Any use of this module should be considered a bug." 23:35:37 CPAN Acme:: could have a whole qdb to itself 23:35:39 :) 23:35:40 probably does, for that matter 23:35:42 ais523: haha 23:35:48 ais523: what we need is a qdb-spawning site 23:35:58 you enter a name, click a button, and whooomp a qdb 23:36:12 and it could have All Time Tops For All QDBs 23:36:13 and similar 23:36:21 wow, Acme:: has a lot of esolangs in it 23:36:39 -!- tola has left (?). 23:36:58 ais523: I vow to get BadExample running! 23:37:02 ..sometime 23:37:51 * ais523 still wants to write revcat 23:37:59 a program that detects what's connected to its stdout and stdin 23:38:05 and then copies its /output/ to its /input/ 23:38:29 last I tried, though, I couldn't figure out how to do it 23:38:55 you should be able to do things like revcat < src.txt | revcat | revcat >> dest.txt copies dest.txt to src.txt, as long as src.txt exists 23:40:14 I think someone was trying to talk to me, but whatever it was is past my scroll buffer 23:41:34 RodgerTheGreat: nobody's mentioned your nick in the last 2 days in #esoteric 23:41:46 at least, not while I was here at the time (I checked my personal logs) 23:41:50 hm 23:42:04 checking clog's or cmeme's are likely to produce better results 23:42:16 well, it must've been between 10:30 am today and now 23:43:18 er i mentioned your nick 23:43:25 oh 23:43:43 but only to point out that i thought you were responsible for the recent comic link 23:44:05 oh, the "in progress" shot? 23:44:22 the mad science Apparatus one :) 23:44:44 yes 23:44:58 this http://www.nonlogic.org/dump/images/1205723239-preview.png 23:51:47 ais523: revcat is impossible 23:51:58 ehird: it's possible in some cases 23:52:01 but not all 23:52:11 e.g. yes | revcat | less doesn't make a whole lot of sense 23:52:46 AFAICT it would have to do something clever, and probably OS-dependent, to figure out what was connected to the other end of stdout and stdin 23:55:24 ais523: well, th pipe case is impossible 23:55:27 since shells manage that internally 23:55:42 the most introspection you could do is 'a process is ripping out my insides' 23:56:22 couldn't you get all revcat processes to check the process table to see which processes were other revcats? 23:56:34 and then send test data to see which order they were connected in? 23:56:40 ais523: maybe 2008-03-18: 00:17:09 wow, Acme::Everything is a clever idea 00:17:19 it autoloads any module in CPAN when the appropriate function is called 00:17:25 sort of like Emacs does automatically 00:17:43 sorry, methods, not functoins 00:17:49 s/functoins/functions/ 00:18:41 ais523: that should be Acme::Auto 00:18:46 Acme::Everything should load EVERYTHING 00:18:51 * ais523 agrees 00:19:13 it would be easy enough, just get a list of all CPAN modules and programatically convert those into use statements 00:19:26 hmm... should it also import everything that can be imported from all of them> 00:19:29 s/>/?/ 00:24:18 ais523: it should do everything 00:24:28 such that you could not pollute the namespace any more short of writing your own code 00:24:41 what do you do about clashes? 00:25:01 * ais523 worries that the right answer may be to adopt the INTERCAL solution: "Multithread and do both" 00:25:55 ais523: fix the clashes. :D 00:28:01 ais523: http://search.cpan.org/~stig/Acme-MemorableExit-0.28/lib/Acme/MemorableExit.pm 00:29:24 ais523: did you know you can do tail-recursion in python? 00:29:39 ehird: I didn't know that, but it seems a reasonable feature to have 00:29:44 after all, Perl can tail-recures 00:29:45 ais523: not natively 00:29:47 but through a Cunning Hack 00:29:49 s/recures/recurse/ 00:29:56 you write goto &subroutine; 00:29:59 rather than calling it 00:31:19 ais523: http://rafb.net/p/lvmYvk62.html 00:31:44 very clever little hack 00:32:10 changing recursion to iteration using exceptions 00:33:01 ais523: yep 00:33:08 ais523: and as the example shows, it handles mututal tail recursion 00:41:16 Acme::HaltingProblem's BUGS: "This code does not correctly deal with the case where the machine does not halt." 00:43:39 haha 00:43:47 http://search.cpan.org/~dankogai/Acme-Math-Google-0.02/lib/Acme/Math/Google.pm 00:44:35 * ais523 was looking at that /before/ you posted the link 00:44:51 ooh, scary 00:44:58 http://search.cpan.org/src/NWCLARK/Acme-Meta-0.02/Meta.pm 00:45:26 all this halting problem stuff is clearly getting us into a closed time loop 00:46:37 http://search.cpan.org/~ambs/Acme-Lisp-0.02/lib/Acme/Lisp.pm this should not be in CPAN. 00:46:42 it is, frankly, crap. 00:47:05 Acme::Pythonic is quite a clever idea, though 00:47:20 more like evil 00:47:23 now all I need is a Python module to grant me {} and semicolon 00:48:07 ais523: been done 00:48:10 as one of python's coding 00:48:11 s 00:48:14 which is used for utf-8 etc 00:48:22 ais523: python already gives you ; 00:48:24 it's just ignored 00:48:34 http://timhatch.com/projects/pybraces/ 00:48:40 does it let me write two commands on a line? 00:50:14 ais523: python already does that 00:50:15 a; b 00:50:30 that is actually really useful 00:51:18 ais523: perl is actually making stuff fun again 00:51:18 :D 00:51:33 -!- ais523 has quit ("it's very late, I have to go home"). 00:57:08 -!- BMeph has joined. 00:59:40 -!- jix has quit (Remote closed the connection). 02:02:45 -!- digital_me has joined. 02:28:14 -!- calamari has joined. 02:53:09 -!- theholyduck has joined. 02:53:18 -!- theholyduck has left (?). 02:57:07 -!- olsner has quit ("Leaving"). 03:04:40 -!- ehird has quit ("Konversation terminated!"). 03:54:49 -!- faxathisia has joined. 04:03:24 -!- marshmallows has quit (Read error: 113 (No route to host)). 05:20:58 I've finished more panels: 05:20:59 http://www.nonlogic.org/dump/images/1205814038-preview2.png 05:21:20 doing these in full color is really, really time consuming. 05:23:31 :D 05:23:34 to anyone who's interested in this project, what would you rather see? A) gorgeous color produced at an achingly slow pace or B) Black and white, much faster 05:23:42 Gorgeous color. 05:23:48 * RodgerTheGreat sighs 05:23:49 It works well with the feel of this comic. 05:24:05 Sorry, but it's damned well worth it. 05:24:24 alright, I'll keep plodding along like this 05:24:29 It's like the difference between a hacked together shell-script and a full REPL. 05:25:04 is the story interesting so far, at least? 05:25:14 Quite. 05:25:26 note that the digital workflow makes it really, really easy to tweak dialogue, which I adore. 05:28:06 http://www.nonlogic.org/dump/images/1205814448-panel6.png <- I may move bubbles around to make it more clear that purple and pink thing is a rocket. 05:29:17 and just for trivia, the original versions of these are all drawn at about 3000x1000 05:33:12 G'night all 05:33:13 does anyone else have any thoughts and/or opinions? 05:33:19 cya, Sgeo 05:35:00 -!- Sgeo has quit ("Ex-Chat"). 05:36:25 -!- digital_me has quit ("leaving"). 05:36:31 hm. I guess not many people are awake. 05:36:36 Course not. 05:37:54 and apparently these guys are offering me a summer internship: https://www.jnl.com/index.jsp 05:38:57 better than nothing, I suppose. IBM and MS haven't responded to my applications. :( 05:39:45 These guys are offering me an internship: http://www.tufts.edu/ 05:40:53 nifty 05:41:05 I know the head sys-admin there. . . 05:41:08 Makes it pretty easy. :p 05:43:56 So, yeah: I'll be paid to dick around on various *nixen. 05:45:13 I'd *much* rather do dev work than IT, which is one of the benefits of my offer 05:45:37 I don't really *mind* IT stuff that much. 05:45:55 But it'd be nice to be doing dev stuff. . . 05:46:26 honestly, if I'd wanted to do IT I could've landed a job out of high school. I'm getting a CS degree to prove I know how to code, design and implement complex projects, and innovate. 05:46:44 IT is akin to being an "internet janitor" 05:46:47 I *am* landing this internship out of high school. ;) 05:46:58 yeah, so in your case it isn't too bad 05:47:13 Especially since I'm going to college right afterwards. . . 05:47:26 But I would not want to do IT stuff as a career. 05:47:28 just don't lose sight of your objectives and drop that job like a sack of hammers when you have the qualifications to do something better 05:48:05 Yeah. 05:48:23 It's not like I'm going to one day think 'Fuck college, I could do this the rest of my life!' 05:48:41 It's a good first job and all, but honestly, it'd be much nicer to be paid doing interesting development. 05:48:41 heh. well, I know a couple people who made that decision. 05:48:50 (kernel development or something?) 05:49:32 I really think I want to make compilers. I wouldn't mind a job as a game designer/developer if that industry didn't completely suck to work in. 05:49:49 Yeah, doing compilers would be nice, too. 05:50:02 A bit of stuff on the grunt-work side, but not a bad thing to do at all. 05:51:03 well, I think I'm turning in. 05:51:10 Mmkay. 05:51:30 one factoid before I go about my steampunk adventure... there's a reason he's called "Mister Thompson". 05:51:43 Oooh. 05:52:03 -!- RodgerTheGreat has quit. 07:04:33 -!- BMeph has quit ("calls it a night"). 07:15:28 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:53:55 -!- oklopol has joined. 08:55:51 -!- oklofok has quit (Read error: 113 (No route to host)). 08:56:49 -!- olsner has joined. 09:02:47 -!- oerjan has quit ("Krnknhs"). 09:21:53 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 09:22:10 -!- oklofok has joined. 10:30:57 -!- olsner has quit ("Leaving"). 11:01:37 -!- SimonRC has quit (Read error: 110 (Connection timed out)). 11:11:42 -!- oklofok has quit (Read error: 113 (No route to host)). 11:15:57 -!- SimonRC has joined. 12:33:56 Deewiant, I added a sandbox mode that restricts what scripts can do, ie. no fileio (when I implement it), y reporting a subset of env variables only and some other things 12:35:22 by the way the # at x=8, y=122 is executed 11333 times in mycology 12:36:47 next is : at x=7, y=122 with a total of 5709 times 12:37:01 err 112 for both those 12:37:08 y I mean 12:46:58 -!- Slereah has joined. 12:48:20 AnMaster: that's the bit that prints out the environment variables 12:53:16 Deewiant, aha 12:53:31 well that explains it, gentoo seems to like setting a lot of env variables 12:53:43 $ env | wc -l 12:53:44 85 <-- gentoo 12:53:50 and that suggests that the total strlen of your envvars is around 5709 :-P 12:53:54 how about -c 12:53:58 $ env | wc -l 12:53:58 22 <-- free bsd 12:54:10 $ env | wc -c 12:54:10 5543 12:54:17 freebsd 12:54:19 $ env | wc -c 12:54:19 443 12:54:30 Deewiant, hehe :) 12:54:36 2641 here, on windows 12:54:57 Deewiant, well gentoo loves setting env variables that users don't need, I agree with that 12:55:06 CONFIG_PROTECT=/var/bind /var/gopher/gophermap /usr/share/X11/xkb /usr/kde/3.5/share/config /usr/kde/3.5/env /usr/kde/3.5/shutdown /usr/share/config 12:55:10 only portage cares about that 12:55:17 why set it in user env I wonder 12:55:33 possibly to make it easier for portage apps like eix 12:56:06 Deewiant, could be done in make.conf I'd suggest, though that would need some make.d, as different app should be able to install their own ones 12:56:19 like my pygopherd ebuild does XD 12:59:34 -!- slereah__ has quit (Read error: 110 (Connection timed out)). 13:06:31 Deewiant, it seems that most time in mycology is spend on printing env variables here hehe 13:06:58 apart from loading that is 13:07:42 it is in fact quite a bit faster, about 0.01 seconds(!) with just printing a subset 13:07:51 well sure, >:#,_ isn't exactly fast 13:07:55 at least it's not _,#! #:< 13:07:57 hm 13:08:04 * AnMaster parses 13:08:28 that's the problem with zero-terminated strings - if it was gnirts instead 0gnirts you could do k, instead 13:08:43 s/instead/instead of/ 13:08:56 Deewiant, yep, I have nothing against using gnirts 13:09:09 it makes allocating string less of a pain too 13:09:15 when popping value I mean 13:09:57 but on the other hand, this way you need to think a bit whenever you need to loop, so maybe it's better ;-) 13:10:22 er? 13:10:38 it's an esolang after all, can't be too easy 13:10:47 hah. true 13:11:46 Deewiant, one thing, would you think it was easy for a third party to write a new fingerprint for my interpreter? no minifunge yet, so it needs to be compiled in and added into an array, but apart from that I mean 13:11:54 ie, is interface well documented 13:12:48 one can always look at the already implemented ones, it's fairly simple unless you've obfuscated something :-P 13:20:07 -!- AnMaster_ has joined. 13:20:54 -!- lifthrasiir has quit (Remote closed the connection). 13:21:25 -!- AnMaster has quit (Nick collision from services.). 13:21:31 -!- AnMaster_ has changed nick to AnMaster. 13:21:48 one can always look at the already implemented ones, it's fairly simple unless you've obfuscated something :-P 13:21:51 * Disconnected (Connection reset by peer). <-- what did I miss? 13:22:16 AnMaster: Nothing 13:22:33 good 13:23:05 http://tunes.org/~nef/logs/esoteric/ 13:29:17 faxathisia, what bot or person captures those logs? 13:29:37 clog and cmeme 13:49:50 -!- sebbu has joined. 15:19:29 -!- sebbu has quit ("bye"). 15:21:03 # 15:39:43 Deewiant, you there? 15:40:28 aye 15:40:43 wtf should o do if the width or height of the area to write is negative? 15:40:51 output mirrored? 15:40:56 reflect? 15:41:11 or absolute value? 15:41:11 I think I thought about doing mirrored output but decided to just reflect 15:41:17 ah 15:41:30 // undefined behaviour 15:41:30 // could do something tricky here like mirror and flip the area copied 15:41:30 // or just do a normal copy from (ox-dx, oy-dy) to (ox, oy) 15:41:30 // but it's more likely it's an error 15:41:38 -> reverse(); return; 15:42:40 ah 15:42:53 -!- jix has joined. 15:45:37 Deewiant, "Also, note k will never, ever actually execute instruction #32, space, or ;." 15:45:41 but it's up to you :-) 15:45:47 how does #32 differ from space? 15:45:47 yeah? 15:45:58 probably a typo 15:46:08 or read it as "instruction #32, i.e. space, or ;." 15:48:33 "not re-entrant (feral extensions)" <-- in what sense of re-entrant? As in: calling it twice in a row gives same result? 15:49:10 it explains in the next paragraph 15:49:29 not clearly 15:49:42 to me it sounds like TRDS 15:49:58 yeah that is definitely feral 15:50:10 Deewiant, but would you consider MODE, or IMAP feral? 15:50:22 somewhat 15:51:03 FPDP? 15:51:16 don't think so, why? 15:51:21 after all it forces me to link with -lm 15:51:22 :P 15:51:26 :-P 15:51:46 actually I already do for BASE, because of log() 15:51:47 not my fault floating point math is considered so arcane on linux 15:51:54 Deewiant, and freebsd :P 15:53:15 Deewiant, for FPDP, how do you store them on stack, after all double > 32 bits iirc? 15:53:46 "Double precision, called "double" in the C language family, and "double precision" or "real*8" in Fortran. This occupies 64 bits (8 bytes) and has a significand precision of 53 bits (about 16 decimal digits)." 15:54:03 Deewiant, so how on earth does CCBI does it, it got 32-bit cells right? 15:54:26 union { double x; struct { cellidx a, b; } } 15:54:34 or something 15:54:43 Deewiant, right and that would make no sense with larger cell sizes 15:54:50 ie, 64-bit 15:55:01 a compile time option here 15:55:21 * AnMaster ponders adding a 128-bit mode just for fun, would be slow 15:57:09 what is the difference between SOCK and SCKE btw, they seem to both do sockets? 15:57:50 SCKE is two instructions added to SOCK 15:58:08 oh what ones? IPv6? 15:58:16 can't remember 15:58:22 certainly nothing that complicated ;-) 15:59:15 if not I may add a SCK6 ;) 15:59:23 later on I mean 16:37:59 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!"). 16:42:50 -!- jix has quit ("CommandQ"). 16:52:41 -!- RodgerTheGreat has joined. 16:52:55 hi everyone 16:54:30 -!- Sgeo has joined. 16:56:03 -!- sebbu has joined. 17:06:50 -!- timotiis has joined. 17:11:30 Yo. 17:12:29 oY 17:12:55 hola 17:20:26 -!- stefo has joined. 17:22:15 -!- oerjan has joined. 17:38:51 Deewiant, question about DIRF: what should happen if it tries to remove a directory that isn't empty? 17:39:43 prolly reflect 17:39:50 ok 17:40:00 -!- stefo has quit (Remote closed the connection). 17:40:05 the docs for it are so bad, rcfunge... 17:41:50 yep :-) 17:42:02 one thing you can do is run rcfunge and see what it does 17:43:29 Deewiant, another issue, general one, what should stuff do, in general, on a zero-length 0gnirts? 17:43:52 well if they pop a 0gnirts then all they'll get is a 0 17:43:57 so it's as though dealing with "" 17:44:03 hm 17:44:34 because "" is exactly a terminating null and nothing else. 17:44:37 but DIRF should likely reflect on that 17:44:46 * AnMaster do not wish to know what rmdir("") would do 17:47:37 another issue, what permissions should be set on a created directory using DIRF? 17:47:43 run it under some kind of chroot if you're scared :-P 17:47:59 since unspecified, I'd say don't mess with em 17:48:04 i.e. the defaults 17:48:12 if there are no defaults, pick some. 17:48:18 Deewiant, no defaults afaik 17:48:30 int mkdir(const char *pathname, mode_t mode); 17:48:52 so what does "mkdir foo" in the shell do 17:48:58 ah that is different 17:49:04 yes, I know 17:49:11 SYNOPSIS 17:49:11 mkdir [OPTION] DIRECTORY... 17:49:12 but it certainly does have defaults 17:49:13 -m, --mode=MODE 17:49:13 set file mode (as in chmod), not a=rwx - umask 17:49:29 777 & ~umask I suspect 17:49:31 yes, I can read man pages myself, thank you very much. :-P 17:49:38 so use that 17:49:46 -!- timotiis_ has joined. 17:49:46 why not S_IRWXU? 17:49:56 (man sys_stat.h) 17:50:01 it's up to you 17:50:04 do whatever you want 17:50:14 Deewiant, useful for temp dir creation you know 17:57:06 yay, first fingerprint that compiled correctly at first try and passed test suite at first try as well 17:57:09 \o/ 17:57:14 DIRF that is 17:58:02 here's a random thought: would Javascript with AJAX be a viable platform for distributed computation? "Fold proteins by idling at this page" 17:58:26 RodgerTheGreat, it would be completely esoteric 17:58:29 on one hand, it'd be slow as fuck. On the other hand, it would be easy to get machines running it 17:58:35 javascript got way too bad performance 17:58:45 yeah, that's what I figured 17:58:53 I just wondered if anyone had tried it. 17:58:54 java's a better idea for something like that 17:59:04 almost as widely available and much better performance 17:59:13 Deewiant: indeed. For some things Java's speed is comparable to C++ 17:59:13 likely a native compiled app on a i486 would beat a javascript on a p4 17:59:14 :P 17:59:29 depends on the browser 17:59:31 well, no, not quite. :-P 17:59:42 RodgerTheGreat, if it is number crunching I'd suggest FORTRAN 18:00:13 AnMaster: that's rather missing the point 18:01:12 -!- timotiis has quit (Read error: 113 (No route to host)). 18:01:52 -!- timotiis_ has changed nick to timotiis. 18:02:17 RodgerTheGreat, indeed 18:08:29 almost as widely available and much better performance <-- yeah I got java, but not for browser, as there is no such for linux amd64 yet 18:08:38 ie, only server jvm or whatever it is called 18:16:15 * SimonRC reads Garfield minus Garfield 18:21:54 -!- Tritonio_ has quit (Remote closed the connection). 18:27:38 -!- ais523 has joined. 18:36:38 btw now I got a script that generate template files for fingerprints 19:21:26 "template files"? 19:27:34 -!- ais523 has left (?). 19:29:45 #vt"drwolh">:#,_ @ 19:29:45 >"lo le">:#,_a,@ 19:29:46 yay 19:30:09 SimonRC, ie a .c file with empty functions but with right name to add a fingerprint to cfunge 19:30:25 ok 19:31:17 SimonRC, anyway tell me what the befunge program above does 19:31:18 :D 19:32:12 it's a hello world, of course 19:32:15 in parallel 19:32:20 very fragile, I think 19:32:28 but a good test of parallelism 19:33:35 SimonRC, not fragile if interpreter follow standard 19:33:51 SimonRC, impressive that you could decode it the way it was interleaved 19:34:00 um, not really 19:34:12 * AnMaster still have problems reading backwards in befunge 19:34:33 it's an obvious thing to say 19:34:38 hah 19:34:39 ok 19:35:42 unlike this version below it is "lock free" XD: 19:35:50 #vtf2*2+"olleH">:#,_'>11p> ><"dlrow">:#,_'>fb+0p@ 19:40:13 * Sgeo should learn Befunge at some point.. 19:40:30 Or brainfuck. 19:40:31 :D 19:41:10 Slereah, I assume he know it as iirc Sgeo wrote PSOX 19:41:28 And yet, I have heard things. 19:41:34 oh? 19:41:45 btw, not very original example: 19:41:47 "AMOR"4#v(MCM\-+LXXX+++IV\-++.)a,@ 19:41:47 @ 19:41:50 * Sgeo is no good with Brainfuck. Also, PSOX isn't meant to be Brainfuck specific 19:41:55 need ROMA fingerprint 19:51:08 PSOX is meant for any Esolang. 19:51:24 You could fairly reasonably get ORK or Glass to handle PSOX. 19:51:33 (even easier there; they do objects and strings. ;p) 19:53:37 Not so great for Taxi though, it expects input to come in line-by-line 19:53:49 THe loopback function means it's POSSIBLE, but it's not easy 19:58:19 -!- ais523 has joined. 20:07:17 AnMaster: there is a bug in that "locked" befunge 20:07:23 SimonRC, oh? 20:07:33 SimonRC, it works correctly under cfunge and ccbi here 20:07:38 the first line should end with q, not @ 20:07:47 I mean the second line 20:07:50 SimonRC, err, doesn't matter actually 20:08:00 otehrwise the first line doesn't quite finish 20:08:12 but that will make only a little difference to the program behaviour 20:08:48 there isn't enough time for the newline to be output 20:08:50 * AnMaster looks 20:09:09 oops 20:09:14 SimonRC, as far as I can calculate it should finish 20:09:17 I had my @ and q semantics backwards 20:09:21 if it doesn't the interpreter is broken 20:09:38 SimonRC, you are making some interpreter/compiler for befunge too? 20:09:47 not at the moment 20:09:58 I am contemplating Forth -> Befunge 20:10:07 Forth is a language that flexes on the other side 20:10:22 i.e. it flexes to fit your platform as well as flexing to fit your solution 20:10:40 oops, meant platform and *problem* 20:11:09 I don't know whether to make addresses be 1 or two cells in that case though 20:11:25 all sane forths have 1-cell addresses 20:11:41 but the sheer size of funge-space makes that tricky 20:13:35 Deewiant, ever tried http://catseye.tc/projects/befunge93/eg/life.bf in ccbi? 20:13:38 it is very slow 20:13:49 with optimized cfunge you hardly have time to see it 20:14:04 with debug cfunge it is still faster than your ccbi binary 20:14:04 hehe 20:14:05 "optimised" how? 20:14:22 SimonRC, -O3 -NDEBUG -profile-use 20:14:36 and profile data was generated on mycology 20:14:39 ok 20:15:04 the interpreter is optimised, rather than it optimising the befunge 20:15:10 indeed 20:15:56 SimonRC, a quick calculation of results on mycology shows my interpreter runs mycology at around 12.5 MHz, that is excluding time to load file (that takes 6/7 of the runtime on mycology) 20:16:27 ie loading is around 0.065 and total is around 0.076 20:16:43 ok 20:16:48 so about 0.01 second run time, most of which is hash table look up to get next instruction in fungespace 20:17:08 maybe you could cache the neighbours of each cell? 20:17:14 in that time it executes 125363 instructions 20:17:26 SimonRC, the way mycology runs it wouldn't help much 20:17:35 yea, but it would help on life I bet 20:17:38 but what about making the interpreter threaded and do some kind of prefetch? 20:17:49 threaded? 20:17:55 ie, -pthread 20:18:09 -lpthread at link time too 20:18:15 how would that help? 20:18:27 so one thread fetches instructions and another executes them 20:18:35 SimonRC, no idea, too tired really ;P 20:18:37 I doubt that would help 20:18:43 was thinking of CPU with pipeline 20:18:50 they would need to switch every befung instruction 20:18:50 or whatever 20:18:59 SimonRC, hm? 20:19:02 yeah 20:19:03 probably 20:19:28 maybe do some cache line thing? ie, cache lines into static arrays in some way 20:19:54 SimonRC, anyway I still beat CCBI by a LOT 20:19:57 :) 20:20:02 it is very slow on game of life 20:23:48 * SimonRC wonders how non-nested ( ) work in F98 20:24:20 AFAICT, weird shit happens 20:24:52 yes, it does, according to the spec 20:24:54 blech 20:34:13 SimonRC, err? 20:34:14 what? 20:35:46 -!- oerjan has quit ("Bus"). 20:36:33 SimonRC, how is it weird? 20:36:41 you just pop 20:36:53 my interpreter handles it :) 20:38:35 -!- olsner has joined. 20:40:14 AnMaster: but you get a funny mix of semantics of the overloaded instructions unless your pushes and pops match up to a certain degree 20:40:27 SimonRC, can be very useful 20:40:55 and if you pop one that isn't loaded, but others are, you will pop one from each of those it defines 20:40:56 :) 20:41:35 so if we got FOOO (provides A B and C) and BAAR (provides B C and D) 20:41:36 suppose you load a1, and b1 then load a2, then load a3 and b3, then unload a2, the sematics of a is a2 and the sematics of b is b3 20:41:40 which is just confusing 20:41:40 then you load FOOO 20:41:43 load BAAR 20:41:47 unload FOOO 20:42:02 how A, B and C are from FOOO and D from BAAR 20:42:04 :D 20:42:07 now* 20:42:08 so unloading something makes parts of it available where they previously weren't 20:42:17 argh, blither, wibble 20:42:20 SimonRC, it is how it works 20:42:29 SimonRC, called esoteric language for a reason 20:42:30 it's crazy 20:42:54 SimonRC, but way easier to implement 20:43:06 just a stack for each opcode 20:43:34 SimonRC, "NULL" unloading can be used to pop all stack once 20:43:39 ie unload all really 20:43:57 "LLUN"4( 20:44:00 err 20:44:01 at least the stack effects are reasonably sane 20:44:03 "LLUN"4) 20:44:04 I meant 20:44:16 SimonRC, yes that is what I said 20:44:22 load BAAR 20:44:23 unload FOOO 20:44:23 now A, B and C are from FOOO and D from BAAR 20:44:32 or rather, first load FOOO 20:44:36 then do those steps 20:44:48 I mean the main stack effects 20:45:07 ( pushes the fingerprint in a different form 20:45:15 err? 20:45:23 ( and ) does not affect normal stack 20:45:32 yes they do 20:45:39 yes partly truye 20:45:41 true* 20:45:52 they pop stuff, and ( pushes the loaded fingerprint back 20:46:03 yes 21:04:16 -!- ehird has joined. 21:04:39 foo bar baz bang quux zed 21:05:30 eki eki eki eki p'tang zoo pang! 21:09:18 -!- Tritonio_ has joined. 21:13:54 ooh ee ooh ah ah 21:13:58 ting tang walla walla bing bang 21:17:54 ehird, new development snapshot at http://rage.kuonet.org/~anmaster/cfunge/snapshots/cfunge_r95.tar.bz2 21:22:32 ehird, includes some examples 21:24:56 hmm. Quantum TriINTERCAL? :D 21:26:08 ehird, if I get my 08 standard finished then yes y got stuff for that 21:26:34 I actually already wrote it 21:26:45 that part I mean 21:26:53 quantum, and what n-nary 21:28:17 ehird: it isn't really quantum 21:28:24 just multithreaded a different way from C-INTERCAL 21:29:09 ais523, oh? got a link? 21:30:41 ais523: arc 2 was released recently, with the source code to the reddit clone 21:30:43 it is hilariously bad 21:30:51 i don't know why anyone would care about that 21:30:52 but there you go 21:31:02 AnMaster: look at CLC-INTERCAL's docs 21:31:06 it's one 1767 line file, the css is inlined into a string, 21:31:07 and this: 21:31:10 (= url-kill* nil 21:31:11 url-ignore* '("internetisseriousbusiness") 21:31:11 comment-kill* nil 21:31:11 comment-ignore* '("http://internetisseriousbusiness" 21:31:11 "http://www.internetisseriousbusiness") 21:31:11 ip-ban* nil) 21:31:19 intercal.freshell.org 21:31:28 http://intercal.freshell.org (making it clickable) 21:35:47 ais523, you typoed that url 21:35:50 forgot an e 21:35:54 yes 21:35:59 http://intercal.freeshell.org 21:36:01 so not very clockable 21:36:04 clickable* 21:36:05 ais523: could you implement twoducks ala timetravel in b98? 21:36:14 ehird: not really 21:36:21 ehird, you know how painful timetravel is? 21:36:26 you would be attempting an iterative method if you did that 21:36:30 ehird, and what is twoducks? 21:36:30 but it might not converge 21:36:40 AnMaster: an esolang based around time travel 21:36:47 ah 21:36:50 it can solve the halting problem, and is therefore uncomputable 21:37:23 (the spec isn't clear on what to do if there's a paradox, such as if you set a program up to solve its own halting problem) 21:37:53 (although it strikes me that it is probably possible to write a /conforming/ HOMESPRING implementation in TwoDucks) 21:38:28 "TwoDucks is an esoteric programming language by User:Zzo38 which allows you to go back in time and change things. It is uncomputable on a Turing machine; it even allows you to solve the halting problem." 21:38:34 so not possible to make one heh 21:38:40 yes BUT 21:38:48 http://esolangs.org/wiki/Talk:TwoDucks 21:38:56 it's possible to make an interp that emulates some TwoDucks programs some of the time 21:39:37 hmm... time travel is a monad, isn't it 21:39:47 only one where the chain is accessible and modifiable 21:41:01 ais523: ContT 21:41:10 ais523: or rather, Cont 21:41:13 Cont is the time-travel monad 21:41:23 but it uses metatime 21:41:23 this is why, given IOT, you can implement TwoDucks 21:41:31 TwoDucks = IOT Cont 21:41:37 rather than the "Everything is self-consistent"ness of TwoDucks 21:41:43 ais523: well, no 21:41:46 it uses the time of the program 21:42:03 Cont time travel: go back in time, kill your own father, you continue without a father but the future is changed 21:42:18 TwoDucks time travel: go back in time, you can't kill your own father because it would cause a contradiction 21:42:41 ais523: twoducks just specifies things to be paradoxes 21:42:47 not that you can't continue as Cont 21:43:27 TwoDucks can invert any function 21:43:33 I don't see how you can do that with Cont 21:46:00 ais523: true 21:46:05 but.. 21:46:07 IOT Cont 21:46:08 IS twoducks 21:46:19 because the IO forces Cont to become the 'real time' 21:51:26 -!- slereah_ has joined. 21:52:37 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 22:07:32 Haskell needs something like MultiMonad(IO Cont) 22:07:39 which can combine several monads together 22:18:05 ais523: um, yes 22:18:08 that's transformers 22:18:14 it's impossible to do it generically 22:18:21 just as it is impossible to give a Monad instance for everything 22:23:20 I specifically wanted it without a transformer 22:36:52 ais523: why? 22:36:54 it's the only way 22:38:20 ehird: because specifying a list of monads as an argument to some sort of type function feels more elegant than endless transforms 22:40:24 ais523: but is impossible 22:52:00 so? Make it possible! 22:52:32 * SimonRC admires TDWTF's forum's tag cloud 22:52:40 not one useful tag amonst them 22:54:08 # banana # Blame Canada # BoonDoggle # etc # Failing Flamer # Falming Failure # feeding the swampling # feeding the troll # Flaming Fa1ure # Flaming Failure # Flaming Faliure # FUCKING HELL WHY DOES IT DELETE TWO CHARACTERS WHEN I HIT BACKSPACE ONCE? # Gee-haw! # IWonderWhatHappensWhenYouUseAReallyReallyReallyLongTagLetsFindOutIfAnythingBreaksShallWe # Jam it! # Lorem ipsum dolor sit amet # MasterAsshatPlan got owned! # sort your life out SpectateSwamp # 22:54:21 ok that was a bit big 22:55:58 -!- slereah__ has joined. 22:55:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 23:00:36 damn, i don't get haskell's type system at all 23:00:42 what's the difference between types and values? 23:03:49 -!- oerjan has joined. 23:04:49 oerjan: what's the difference between types and values, in haskell? 23:05:28 Why do we need values at all? Can't we just simplify the syntax and do everything just with types? 23:05:33 since haskell is not a dependently typed language, they are completely disjoint 23:05:53 a value has a type, a type has a kind 23:06:23 iir/uc there are systems called pure type systems which do just that 23:06:44 data Color = Red | Green | Blue 23:06:45 All books are 3 characters. Check syntax and try again 23:06:49 or 23:07:04 however there is a technical problem. you want all values that are used as types to be terminating 23:07:20 data Red; data Green; data Blue; class Color a; instance Color Red; instance Color Green; instance Color Blue 23:07:21 All books are 3 characters. Check syntax and try again 23:07:34 Sgeo: you use that phrase a lot. i don't think it means what you think it means. 23:07:58 * Sgeo has a biblebot running for no good reason 23:08:05 I should rename the file so it won't autoload 23:08:10 in the first example, Red, Green, Blue are values 23:08:15 in the second, they're types 23:08:48 lament: note that while haskell's types are turing complete with a couple of flags, the type computations are very different from the value computations 23:08:53 in both cases we combine them together into a "type", which in the second case turns out to be a type class 23:09:05 but the distinction seems unnatural 23:09:13 * Sgeo unloads the bot 23:09:39 -!- Tritonio_ has quit ("Bye..."). 23:10:50 oerjan: from a description of pure type systems, my concerns seem justified 23:10:56 "PTSs are well suited as a basis for a functional programming language because they are at the top of a hierarchy of increasingly stronger type systems. The concepts of `existential types', `rank-n polymorphism' and `dependent types' arise naturally in functional programming languages based on the systems in this hierarchy. There is no need for ad-hoc extensions to incorporate these features." 23:11:10 so haskell has too much syntax 23:11:14 because it's not powerful enough :) 23:11:33 actually much of haskell's weirdness may be in order to support type inference 23:12:00 haskell's complexity is mostly superficial 23:12:09 which requires separating some things just in order to give the compiler enough hooks 23:12:16 right 23:12:18 it's ugly 23:12:24 not really 23:12:35 lament: it's ugly because you can write a compiler for it 23:12:38 excellent logic 23:12:38 the superficial complexity is suppsosed to make it beautiful 23:12:57 SimonRC: it doesn't. People keep extending the type system with more and more extensions. 23:12:59 e.g.: where versus let 23:13:03 haskell is made by grafting things onto the hindley/damas/milner type system, which has complete type inference 23:13:19 lament: but they are usually nice generalisations 23:13:23 oerjan: is HM the most general type system with complete inference? 23:13:33 and they aren't all put on at once 23:13:37 some contradict one another 23:13:39 nearly so, i believe 23:13:44 makes sense 23:13:53 and a typical compiler will only have a slight extension of '98 23:13:55 hard to imagine what else it could have 23:13:57 adding almost anything makes it undecidable 23:13:58 SimonRC: hardly :) 23:14:13 Haskell-fghc-exts is a whole new language, practically 23:14:15 oerjan: so type classes make it undecidable? 23:14:26 oerjan: not recursive types, i presume :) 23:14:27 no, type classes are decideable 23:14:29 lament: no. ALMOST anything 23:14:42 unless you turn on undecideable typeclasses 23:14:49 (for ghc at least) 23:15:13 lament: type classes have strange limitations though in order to keep it decidable 23:15:19 right 23:15:21 okay 23:16:22 it's kinda funny - turing-completeness is so easy to achieve by accident, and here you're desperately trying to avoid it 23:16:32 heh :) 23:16:59 i need to learn a pure type language 23:17:06 to get some perspective 23:17:32 the other day it was mentioned on #haskell how the generalized newtype deriving is inconsistent with some of the other extensions (type families, GADTs i think) 23:17:50 heh 23:18:05 it's like playing nomic 23:18:25 add more and more extensions until somebody successfully makes it undecidable without everybody noticing 23:18:59 hmm 23:20:38 (class ToInt x where toInt :: c x -> c Int or something like that breaks newtype deriving if c is something weirder than ordinary algebraic data types, iiuc) 23:22:42 you can use it to make arbitrary coercions 23:22:59 (exploit is on ghc bug trac) 23:23:44 ouch 23:25:07 eh 23:25:14 unsafePerformIO is more fun to make coerce with :-) 23:25:31 well yeah but that is intended to be unsafe 23:25:34 indeed 23:25:50 haskell is ugly :) 23:26:04 it is not getting prettier i guess 23:26:11 unsafePerformIO can have type (forall a. IO a) -> forall a. a 23:26:14 FAIL! 23:26:23 * lament reads thesis about pure type systems 23:26:36 or actually type families may be considered an improvement in some ways 23:27:25 A friend of mine is working on epigram (e-pig.org) where the typesystem has the same strength as the language: not-quite-TC-but-you-can-do-everything-sensible 23:27:56 SimonRC: does it have types as a separate concept from values? 23:28:11 not really 23:28:15 it has dependant types 23:29:51 so much stuff to learn. 23:31:06 ePig! 23:31:10 it's a PIG 23:31:12 on the INTERNET 23:32:21 -!- pikhq has quit ("Rebooting stuff."). 23:33:10 epigram looks shiny 23:34:24 -!- pikhq has joined. 23:34:27 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 23:35:58 -!- sebbu has quit ("@+"). 23:39:23 n : Nat; X : * 23:39:29 cute 23:46:12 heh 23:48:19 from what happens with haskell 23:48:34 it almost seems like people are trying to solve the halting problem 23:48:44 ie. they want an all-powerful type system 23:49:36 on one hand it's impossible, on the other hand people do want it 23:50:50 proposed solution: use an all-powerful type system. If compilation doesn't end, just deal with it and rewrite your program accordingly. 23:51:11 You still have a type-checked program if compilation does end. 23:56:25 lament: large projects take ages to compile 23:56:30 how could you tell the difference? 23:57:31 besides, compilation that never ends is not the route to sturdy software with well-defined properties that you can test 23:58:09 but the alternative is increasingly dirty hacks 23:58:23 when you have a non-TC system, you can always extend it to be more powerful 23:58:30 and people will continue doing this 23:58:40 because they want a more powerful type system 23:58:49 thus adding more and more hacks to the language 23:59:05 lament: solution - dynamic typing 23:59:06 ;) 23:59:46 waitamo... 23:59:53 probably better to start with a TC but clean type system, then add limits (such as max. recursion depth) to get guaranteed termination 2008-03-19: 00:00:01 how closely is the Halting problem related to Incompleteness? 00:00:14 olsner: actually yeah 00:00:31 SimonRC: not 00:00:31 well there is an implication at least one way i think 00:00:46 I mean, it is possible to create a program that enumerates all possible proofs until it finds one that proves that its input program halts... 00:00:53 halting problem implies incompleteness 00:01:16 that would proove that a program halts IFF it is possible with the given proof system 00:01:19 because a complete system could ask the question of whether a program halts 00:01:24 or wait 00:01:30 actually no 00:01:42 it could lie and say it halts even if it doesn't 00:02:01 huh? 00:02:10 because the halting time could be a non-standard integer, which doesn't actually exist 00:02:25 * SimonRC hasn't hears of NISs 00:02:28 *NSIs 00:04:24 every logical system with infinite models has even larger ones, and an element of an extension is called non-standard 00:04:59 there is non-standard analysis which uses this to add infinitesimal reals 00:06:09 but that may be overkill here. rather, if the halting problem for an algorithm is undecidable, then it is consistent to add the axiom that it _does_ halt, although it "really" cannot 00:06:54 and any model with that axiom must contain an element that is claimed to be the stopping time... 00:10:12 -!- timotiis has quit ("leaving"). 00:10:57 kewl: http://www.crabfu.com/steamtoys/r2s2/ 00:14:23 -!- BMeph has joined. 00:14:27 hi 00:14:29 WRU? 00:14:47 GNPE 00:14:52 oerjan: ?? 00:15:35 i just like to say things i don't know what mean :D 00:28:07 oerjan: me tooo 00:28:43 WRU = "Who Are You?", from the teleprinter code 00:29:08 some day someone who knows about teleprinters is just going to understand that one straight away 00:33:57 ic. now i just have to understand _why_ you would say "Who Are You?" 00:34:45 since i didn't see anyone unknown entering... 00:39:29 SimonRC: the probability of that happening is probably getting lower by the minute :P 00:45:48 -!- olsner has quit ("Leaving"). 00:48:30 -!- Corun has joined. 00:49:03 23:14:23 -!- BMeph [n=chatzill@adsl-76-212-192-106.dsl.sndg02.sbcglobal.net] has joined #esoteric 00:49:06 23:14:26 < SimonRC> hi 00:49:09 23:14:29 < SimonRC> WRU? 00:49:41 oh maybe BMeph hasn't been here before? 00:49:49 welcome to #esoteric :) 00:50:31 Hello - I channel hop a lot, so don''t mind me. :) 00:50:53 seen you in #haskell before 00:51:13 i don't - those are the only channels i'm in 00:51:37 and i can barely keep up with that sometimes :D 00:51:43 BMeph has been here for yonks.. 00:52:11 i am generally in #esoteric, #ESO, and various channels for my lingua franca of the month 00:52:22 Yeah - as soon as I started fiddling w/ FALSE, I started popping up in #eso more. :) 00:52:24 of the month? 00:52:46 whence Volapük? 00:53:34 oerjan: haha 00:53:46 right now, it's Perl 00:58:18 ais523: hi 00:59:02 -!- ais523 has quit ("Konversation terminated!"). 01:01:00 hah 01:23:37 -!- pikhq has joined. 01:54:44 -!- ehird has quit ("Konversation terminated!"). 02:18:14 -!- dbc has quit (Client Quit). 02:39:09 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 02:42:27 -!- slereah_ has joined. 02:48:02 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 03:00:18 -!- Corun has quit ("This computer has gone to sleep"). 03:17:29 we need a language with a good type system 03:17:36 do any esolangs have good type systems? 03:23:23 Explain good. 03:23:27 * oerjan considered something wicked with monads once. hardly got anywhere. 03:24:03 liMonadE = unlambda with monads 03:24:27 I think static typing is superior, so "good typing system" likely has a different meaning to me. 03:24:58 oerjan: monads are not good to have as a built-in feature of the type system 03:25:14 at least that part haskell got right :) 03:25:35 Deformative: turing-complete 03:25:51 ah but this was not a _sane_ monad system 03:26:39 is a type a boolean function on all possible values, or is it a way to generate new values? 03:27:30 i guess in haskell it's clearly the latter 03:28:57 to the programmer, it's the latter, but to the typechecker, it's more like the former... 03:32:24 we could have a value be represented by any sexpr, and have types be boolean functions on sexprs... sounds like XML validation 03:44:18 -!- shinku has joined. 03:52:54 lament: Define all types in terms of Lisp code. :p 04:13:54 -!- adu has joined. 04:36:29 pikhq: that's what i'm saying! 04:40:16 :) 04:40:22 :) 04:41:03 :[] 04:42:25 -!- adu has quit ("Computer went to sleep"). 05:08:09 -!- adu has joined. 05:13:03 :heh 05:26:07 -!- shinku has quit. 05:45:51 new panels: http://www.nonlogic.org/dump/images/1205901932-preview3.png 05:48:18 pikhq: attention 05:49:02 rather simple stuff today because I'm feeling really tired 05:54:10 -!- Sgeo has quit (Remote closed the connection). 05:56:41 heh, "All the prototypes had exploded at this point" :D 05:57:29 :D 06:03:21 incidentally, I think that last panel could make a nifty desktop: http://www.nonlogic.org/dump/images/1205902974-desk9.png 06:05:21 which reminds me, new xkcd and girl genius 06:05:41 I, too, am a reader of GG. 06:05:47 do you read Buck Godot? 06:06:00 no 06:06:18 you really should- it's every bit as good as Phil's other work. 06:07:52 Brilliant. 06:07:57 :) 06:15:15 well, another day, another three panels. I'm out, folks 06:15:49 -!- RodgerTheGreat has quit. 06:24:30 -!- adu has quit (Remote closed the connection). 06:33:01 -!- BMeph has quit ("calls it a night"). 07:49:26 -!- adu has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:08:04 -!- adu has quit (Read error: 104 (Connection reset by peer)). 09:10:31 -!- oerjan has quit ("leaving"). 11:19:57 -!- oklofok has joined. 11:52:00 -!- Tritonio_ has joined. 12:48:53 -!- oklofok has quit (Read error: 113 (No route to host)). 13:13:33 -!- oklofok has joined. 13:24:33 -!- RodgerTheGreat has joined. 13:24:45 howdy 13:34:40 hi 13:36:35 RodgerTheGreat: moar 13:37:06 moar wut? 13:37:11 comic 13:37:22 moar dis? http://www.nonlogic.org/dump/images/1205901932-preview3.png 13:37:27 and the hair colour in the second panel is still non-matching 13:39:30 I suppose I could do a little moar this morning 13:39:45 there will be at least 3 new panels by tonight, though 13:40:16 has anyone written a brainfuck interpreter in befunge? 13:40:24 assuming befunge98 of course 13:43:25 http://www.geocities.com/nthern/esolangs/brainfuck.bf.txt, but befunge-93, and requires bignum-sized cells 13:45:19 right, I guess BIGNUM would make befunge93 turing complete? 13:46:00 unbounded storage in a sense... I'd presume so 13:46:15 Deewiant, also wtf is "Befunge97"? 13:46:25 it's befunge-97, what about it 13:46:34 Deewiant, where is it's specs? 13:46:42 nowhere 13:46:50 oh? 13:46:58 not sure if it ever had any 13:47:14 so how did it differ from befunge98? 13:47:21 the few references to it I can find are from the esolang mailing list 13:47:39 -!- oklofok has changed nick to oklopol. 13:48:02 http://catseye.tc/projects/befunge93/eg/pi2.bf 13:48:12 says it is written in befunge97 in the file 13:48:18 it had some kind of header block 13:48:21 it runs under cfunge though 13:48:39 yeah, in terms of instructions it seems to be pretty similar to -98 13:49:06 ah, here we go, "befunge-97 directives" - lines starting with = 13:49:16 Deewiant, link? 13:49:22 http://www.nntp.perl.org/group/perl.perl6.internals/2004/10/msg26541.html 13:49:44 like said there's no spec, the best I can do is random googling 13:49:58 there was also a befunge-96 by the way 13:50:08 I know practically nothing about that 13:50:14 ah 13:50:47 Deewiant, why on a perl6 list of some kind I wonder... 13:51:01 The original Befunge-93 language implementation was developed by a small but dedicated user base; the result was Befunge-96 (with concurrency), and then Befunge-97, which added a batch of new features. By 1998, a new language was born: Funge-98, which took Befunge out of two dimensions and into Hilbert space. Development of Befunge-100 (presumably the victim of an un-patched Y2K bug) allegedly continues. 13:51:18 AnMaster: looks like interpreter development, beats me 13:51:45 anyway I'm soon ready for a new release I think 13:52:00 just trying to make make install work correctly, and maybe add a man page 13:52:08 It could be worse; proposals for basing a Funge derivative on the surface of a Klein bottle or hex net have been mooted, but never implemented. 13:52:13 AnMaster: how about that? ;-) 13:52:13 oh and update README and such 13:52:35 Deewiant, I know about those, mentioned in befunge98 specs, one of the latter apendixes 13:52:59 later* 13:53:02 "Other Topologies" 13:53:04 yeah 13:53:04 Other Funges, such as Honefunges (hex-net topology) and Kleinefunges (Klein-bottles) are certainly possible. 13:53:18 so how about implementing one or both? ;-) 13:53:41 Deewiant, nah, that's for CCBI ;P 13:54:12 it'd probably run too slow, I think you should do it ;-) 13:54:51 Deewiant, ever tried http://catseye.tc/projects/befunge93/eg/life.bf 13:54:56 quite amazing 13:54:59 in befunge93 even 13:55:01 yeah, it's nice 13:55:16 Deewiant, just with ccbi it is rather slow :P 13:55:20 * AnMaster runs 13:55:41 I can't be bothered to go scouting around for hash table libraries and garbage collectors 13:55:51 Deewiant, so that show IO isn't everything ;P 13:55:55 shows* 13:56:05 well, in a way it still is 13:56:08 because it's memory-IO 13:56:21 but indeed, I could probably speed mine up with a better hash library 13:56:59 most of the time is probably spent in page faults and the like 13:57:34 hm for ccbi or cfunge? 13:57:39 both 13:58:11 anyway I don't think it is, I mean cfunge + mycology fits into 12 MB RAM here when optimized, tested with ulimit -v 13:58:23 that doesn't matter 13:58:26 and since I got 1.5 GB I can't see why it would page fault a lot 13:58:31 the fact is that the program doesn't fit in your L2 cache :-P 13:58:37 it wouldn't be swapped out on disk 13:58:49 Deewiant, but that isn't same as page fault still, right? 14:00:26 it seems that CCBI generates 3854 page faults here 14:00:30 Deewiant, does mycology wrap a lot? except when testing wrapping I mean 14:00:33 or rather, generated as I just ran it. 14:00:44 oh? how do you check how many page faults are generated? 14:00:47 but of course that doesn't mean that it's swapped out to disk. 14:00:52 process explorer, on windows. 14:00:55 don't know about *nix. 14:01:09 hah 14:01:53 it looks like ps shows them 14:02:10 yes but the program quits so fast when mycology ends. 14:02:23 so pipe it into a file or something. 14:02:37 hm, ps? or cfunge? 14:02:53 what would you want with the cfunge output? :-P 14:03:21 nothing, but point is, how do you check number of page faults at the point just before cfunge exits? 14:03:42 ps's update frequency is too slow? 14:03:53 ps is a one time command, and cfunge is too fast 14:04:03 oh yeah, getting confused with 'top'. 14:04:17 and even top updates once / second or so iirc 14:04:31 cfunge finishes mycology in 0.078 seconds here 14:04:38 one simple option: add getchar() just before your return from main. 14:05:05 Deewiant, actually I don't return from main, I use exit() but I see what you mean 14:06:57 or compile with profiling. :-P 14:07:45 open("/home/arvid/local/emacs-cvs/lib/libcord.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) 14:07:45 open("/usr/lib64/libcord.so.1", O_RDONLY) = 3 14:07:47 interesting 14:07:49 from strace 14:09:31 it goes through your LD_LIBRARY_PATH or whatever the envvar is 14:09:37 not that I would gain a lot from unsetting LD_LIBRARY_PATH indeed 14:09:59 Deewiant, I know that but I wonder, how much could one save in 0.0000000whatever seconds on unsetting it ;D 14:10:33 you worry too much :-P 14:12:29 you know, it was a joke 14:14:35 yep, but even so, you do ;-) 14:20:58 weird, weird, under valgrind I enter an infinite loop after DIRF test, but under gdb or "freestanding" it works 14:23:30 ok... if I change a calloc to a malloc it works. weird 14:35:47 -!- Corun has joined. 15:05:54 -!- CakeProphet has joined. 15:11:55 Deewiant, a question: is memory mapped IO faster than stream IO? 15:12:37 I believe it depends, but I'm not sure on what. 15:13:19 -!- Corun has quit ("This computer has gone to sleep"). 15:13:23 hm 15:13:31 ....I wrong a poem in Python. 15:13:37 http://pastebin.org/24426 15:13:59 when you execute it... it outputs '("Love", "is", False)' 15:14:16 CakeProphet, rewrite it in befunge? 15:14:52 ....you couldn't do that. Not with English... words. 15:15:03 unless you just use comments for everything... but that's gay. 15:16:04 -!- oklopol has quit (Connection timed out). 15:17:45 CakeProphet: how about writing it in Shakespeare 15:18:11 Deewiant, ever tried running the mycology readme in ccbi? 15:18:16 quite interesting 15:18:19 no? :-P 15:18:37 Deewiant, at least in cfunge it prints a lot of "10" 15:18:44 in general, running on plaintext isn't necessarily a smart idea :-P 15:18:52 Deewiant, sand box mode of course 15:18:59 so wouldn't do any harm 15:19:23 if you still haven't implemented o I guess it's fine 15:19:43 Deewiant, indeed I haven't yet 15:19:56 Deewiant, and in sandbox mode it wouldn't be allowed 15:20:29 unless you're very unlucky with something like "FRID" 4 (0'/R) but... how likely is that 15:20:36 http://rafb.net/p/yZ3yEP70.html 15:20:40 Deewiant, see? 15:20:42 :P 15:20:56 I meant, without sandbox mode and o 15:20:57 Deewiant, well Frid is Swedish for peace so :D 15:21:13 yeah, but... 15:21:15 all caps 15:21:16 in quotes 15:21:19 followed immediately by a 4 15:21:21 not likely 15:21:23 followed immediately by a ( 15:21:28 exactly :-P 15:21:29 indeed not likely 15:22:16 Deewiant, by the way what should ( and ) do when the count parameter is invalid/silly, ie, say, -23 for fingerprint length 15:22:19 or 184753 15:22:47 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)). 15:23:00 currently mine checks it is reasonable range for what the interpreter support (1-8 items from the stack), otherwise reflects 15:23:06 uh, that's crap 15:23:14 maybe I should test that in Mycology :-P 15:23:22 Deewiant, so what should it do? 15:23:29 and what does CCBI do 15:23:30 it should pop the requested number 15:23:40 Deewiant, well you can't pop -2 items 15:23:47 no, negative is messed up of course 15:23:55 but anything > 0 is fine 15:24:03 Deewiant, and above 8 wouldn't work considering how fingerprints are done 15:24:05 afaik 15:24:07 yes, it would. 15:24:18 it's just a matter of wrapping the ints around correctly. 15:24:39 Deewiant, yes right you mean when the cell overflows? 15:24:44 yes. 15:24:45 that would break for bignum 15:24:52 which is valid 15:24:57 so you can't test it 15:25:04 sure, but what if it first checks with y that the cell size is exactly 4 15:25:07 then, it is valid 15:25:17 Deewiant, and if it isn't it can't test it ;P 15:25:26 + such a check would take a lot of time 15:25:32 I suppose it's possible to generate such strings 15:25:44 no it wouldn't, just find a 16-character string and use that 15:26:10 and if done correctly it could be easy to add more strings depending on y's value 15:26:21 for 4, 8, 2, 1, etc. 15:26:28 I added the range check because of a issue with unloading fingerprint, when I had not popped enough items from stack to get back to the original stuff ( pushed 15:26:31 took some time to debug 15:28:46 -!- oklofok has joined. 15:29:21 an easy way to test would be just something like 8aaa**k1aaa**;v(;# <;8wna"DOOG">:#,_ 15:30:04 Deewiant, what would that do? 15:30:16 also, it could reflect 15:30:18 just check if it popped 10000 values or not 15:30:28 if it lacks the fingerprint 15:30:33 Deewiant, ugh 15:31:28 that was the point - make sure it doesn't converge to a valid fingerprint 15:31:42 and then just check for the pops 15:31:47 hence, "easy way". 15:32:16 Deewiant, it could be a valid fingerprint 15:32:33 someone could make one 15:32:37 it all depends on cell size 15:32:47 yes, it could 15:33:02 so if you got bignums all fingerprint names are valid in length 15:33:08 in which case, replace one of the constants in the value tried 15:33:17 i.e. instead of aaa** use baa** 15:33:28 Deewiant, so you could implement that one too ;P 15:33:31 and say, "hmm, looks like you loaded this fingerprint, that wasn't supposed to happen" 15:33:55 AnMaster: yes, but fortunately we have loops, so we can loop through 222->fff 15:34:26 and theoretically an interpreter could implement them all 15:34:40 btw now I made mine just warn about it (assuming warnings are turned on) 15:34:56 in that case, na"UOY WERCS">:#,_ and move on 15:35:34 hahah 15:36:07 Deewiant, but what should happen at negative count I wonder 15:36:16 reflect. 15:36:18 undefined. 15:36:22 tested in mycology. 15:36:30 ah right yep 15:36:41 Deewiant, however mycology fails to test the case of length == 0 15:36:50 IMO that should reflect too 15:36:54 mine didn't before it does now 15:37:12 instead it entered a infinite loop due to while (i--) thing 15:37:19 or not infinite 15:37:22 just very very large 15:37:37 as i was int64_t or something like that 15:37:43 and testing for negatives didn't catch that? 15:38:09 Deewiant, there is a subtle difference between: 1) i < 0 and 2) i<=0 15:38:10 :P 15:38:24 it's called your brain - learn it, use it, it's your friend :-P 15:38:28 yep indeed 15:38:36 but IMO mycology should test it 15:39:02 seriously, if you have if (i < 0) followed immediately by while (--i) then I blame you :-P 15:39:20 indeed it is what I'd call a bug 15:39:44 anyway it was i-- not --i 15:39:48 but that hardly matters 15:40:05 and besides, ( with 0 /is/ tested. 15:40:14 sure it is? 15:40:16 i-- does matter. 15:40:22 Deewiant, ah hm 15:40:27 because while (i--) does nothing if i is zero. 15:40:49 the original tests for ( and ) popping correctly are both done with a zero count. 15:43:45 hm true 15:44:12 but why did checking for 0 fix the bug in that other program then... 15:44:22 I don't know... 15:46:52 -!- CakeProphet has quit ("haaaaaaaaaa"). 15:53:03 anyway while threading in mycology worked perfectly, my program managed to segfault on a simple threaded hello world before 15:53:19 #vt"drwolH">:#,_ @ 15:53:19 >"lo le">:#,_a,@ 15:53:59 when the IP that eneded first ended, cfunge ended up accessing the IP array out of bounds, (now fixed) 15:58:44 -!- timotiis has joined. 16:11:58 -!- vixey has joined. 16:12:00 Hi 16:12:12 Are there any esolangs based on Ï€-calculus? 16:12:34 not that i know of :\ 16:12:56 there are real languages based on it, though 16:13:02 http://www.esolangs.org/wiki/Pict 16:13:02 Joy, iirc 16:13:19 oh 16:13:28 it says it's not 'intentionally esoteric', though :-P 16:14:48 hmm, it seems joy is functional, i must be confusing names again 16:15:29 joy is a functional forth 16:25:14 yarrrr 16:44:24 -!- Tritonio_ has joined. 17:11:39 -!- jix has joined. 17:36:26 -!- Sgeo has joined. 18:07:20 factor is a functional forth 18:07:56 joy is "concatenative" 18:08:13 forth is concatenative. 18:08:27 as are factor and joy. 18:09:10 oh right, good point 18:09:19 i thought concatenative had something to do with lists 18:26:53 Deewiant, there? 18:26:55 size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip) 18:27:06 that one, should TOSS be at top or should BOSS? 18:27:20 the way I read "from a to b" is that a is at the top 18:27:48 hrrm 18:27:55 but I don't know. :-P 18:29:45 GOOD: y acts as pick instruction if given large enough argument 18:29:45 GOOD: ] turns flying IP right 18:29:50 wtf, I don't do flying ips?! 18:29:55 I don't implement MODE 18:30:18 uh? 18:30:25 oh wait, flying isn't one from MODE 18:30:29 hover is? 18:30:31 an IP is flying if its delta isn't (1,0) (0,1) (-1,0) (0,-1) 18:30:48 Deewiant, right, hard to keep flying and hovering and what not apart :P 18:31:33 no it's not ;-P 18:52:05 Deewiant, anyway I need some test case for y returing multiple stack sizes correctly :/ guess I code to code that myself 18:53:41 n{aa y9k$2w00p01pn00g01g2w0w 18:53:57 mhm 18:53:57 replace 9 with the correct index of the stack sizes in y 18:54:01 something like that 18:54:09 that probably doesn't work but it's a start :-P 18:55:52 * AnMaster tries 19:05:50 Deewiant, in any case, ccbi and cfunge give different results 19:06:17 you have working test code? 19:06:19 Deewiant, at the second w 19:06:22 Deewiant, not sure 19:06:27 probably not 19:06:29 :-P 19:06:37 as one goes up the other one down at the second w 19:06:50 that shouldn't matter 19:06:54 it should either be equal or not 19:06:57 indeed 19:07:07 as far as I can find out, we want cell 23, right? 19:07:08 the point being, test whether the stack size is equal to the expected. 19:07:44 Deewiant, yes and that is painful, and so is understanding your code, ie, what is all the p and g stuff in it for 19:08:05 just write your own code if that was so hard :-P 19:08:11 that was meant to help you, not confuse you >_< 19:08:14 true 19:08:27 AnMaster: the point was, get all the correct values with only one call to y. 19:08:34 so, call y. 19:08:40 pop the required number of cells to get to what we want. 19:08:46 yep 19:08:53 check that the stack stack size is correct, since it's first. 19:08:58 (it /is/ first isn't it?) 19:09:07 store the two stack sizes somewhere. 19:09:12 clear the rest of the stack. 19:09:19 make sure they're correct. 19:09:25 that's probably not necessary now that I think about it >_< 19:09:35 aha 19:09:54 I was thinking something about how it pushes the old stack size versus the new and wrote something overcomplicated 19:10:03 but yeah, the pg stuff is unnecessary. 19:10:09 I'm fairly certain, anyway. 19:10:21 (it /is/ first isn't it?) <-- that I got no idea about 19:10:34 AnMaster: it's in the spec 19:10:39 In this document, short stacks are generally notated left to right to mean bottom to top. The leftmost values listed in the documentation are the bottommost and the first to be pushed onto the stack. Long stacks are notated top to bottom, to mean precisely that, top to bottom.. 19:10:42 hrm 19:11:00 "size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip)" 19:11:05 that is a short one? 19:11:17 that would mean TOSS at bottom then? 19:12:20 shrug 19:13:04 makes sense in a way, then you can do Xk$ where X is the index of the stack size you want 19:13:22 Deewiant, looks to me like this is a... UNDEF ;) 19:13:31 or "NOT VERY DEF" at least heh 19:14:00 -!- sebbu has joined. 19:14:01 IMO, if every interpreter does it one way then that way is probably right 19:14:14 so finish the test code already :-P 19:14:30 anyway with a single stack it is the 23rd cell 19:15:44 that means f7+k$ to leave it at top, hrrm 19:16:00 the top one, whatever it is that is 19:17:55 alright, so here 19:17:55 1230{aaa0y2a*k$....a,@ 19:18:30 since it uses 'k' it prints one extra value due to the way some interpreters implement 'k' 19:18:44 Deewiant, err what? 19:19:13 so it prints or 19:19:14 as long as it works in cfunge and ccbi I'm happy, I just want a test case for my interpreter in fact 19:19:33 CCBI prints 2 3 5 as does !Befunge 19:19:55 $ ./cfunge tmp.b98 19:19:56 1184561 2 5 3 19:19:56 heh? 19:20:27 Deewiant, looks like k popped one to few? 19:20:37 * AnMaster looks 19:20:49 AnMaster: no, it popped the correct amount 19:21:01 if it popped the incorrect amount it'd be 2 5 3 19:21:04 oh so why leave time value in there? 19:21:13 because some interpreters pop the incorrect amount 19:21:19 and then we'd only get the latter two values from them. 19:21:27 oh god 19:21:36 FBBI prints 2 3 5 97 19:21:45 97 from? 19:21:55 first char of command line argument? 19:22:12 ok 19:22:16 like said, 19:22:17 :-P 19:23:37 yeah 19:23:51 Deewiant, well is the k of those other ones broken or not? 19:23:56 or is it a UNDEF case? 19:24:04 it's broken, of course 19:24:07 ah 19:24:17 since given 321 2k$ they return an empty stack 19:24:32 Deewiant, well in the test case for my interpreter I don't need to care about that 19:24:35 since they don't skip over the argument 19:24:39 it passes mycology so :D 19:24:54 AnMaster: whatever, I just wrote the generic code so I can quickly test it against all interpreters 19:25:01 true 19:25:15 and modifying it to be nongeneric is trivial so do whatever you want 19:25:41 -!- Corun has joined. 19:26:10 Deewiant, well I plan to add unit testing 19:26:27 ctest that comes with cmake look interesting 19:26:28 go ahead 19:26:34 I didn't bother, I just wrote mycology :-P 19:26:58 there are a few unit tests in CCBI but nothing major 19:27:01 Deewiant, true, but for those special cases that mycology doesn't notice, either becase bugs are unusual or it just for some reason didn't test it 19:27:12 $ ls tests/ 19:27:12 jumpwrap.b98 ystack-size.b98 19:28:11 Deewiant, actually you would need three stacks to test it correctly, hrm 19:28:23 as I store top stack before I start pushing things in y 19:28:36 why? do you expect 1 3 2 instead of 1 2 3 or 3 2 1? :-P 19:28:42 so I push size of topstack before, then in a loop all but top stack 19:28:59 StackPush(TOSSSize, pushStack); 19:28:59 for (ssize_t i = ip->stackstack->current - 1; i >= 0; i--) 19:28:59 StackPush(ip->stackstack->stacks[i]->top, pushStack); 19:28:59 break; 19:29:04 * AnMaster wonders if that is correct 19:29:13 ssize_t? 19:29:29 Deewiant, or gcc complains that i will always be >= 0 19:29:33 -!- Corun has quit (Client Quit). 19:29:35 ssize_t is signed size_t 19:29:37 sigh 19:29:43 GNU extension? 19:29:46 Deewiant, nop 19:29:48 see C99 19:29:48 ptrdiff_t is the standard 'signed size_t' 19:30:04 Deewiant, err, look at C99 19:30:19 I think it comes from there 19:30:22 and also, switching to signed is not the solution to that problem :-P 19:30:22 or maybe POSIX 19:30:37 sorry, ISO/IEC 9899:1999 doesn't contain ssize_t 19:30:39 it's POSIX 19:30:42 (probably) 19:30:48 ah yes 19:30:51 because freebsd got it 19:30:52 AnMaster: your code isn't standard :-P 19:31:09 Deewiant, It is POSIX probably 19:31:10 but anyhoo, the way to write that loop is 19:31:18 for (size_t i = ...; i-- > 0;) 19:32:09 ssize_t exists in man 0p for sys/types.h 19:32:11 so POSIX 19:32:12 :D 19:32:42 Deewiant, look someone said even windows was POSIX 19:32:44 so... 19:33:03 whatever, I'm not having this argument again :-P 19:33:13 in any case, ssize_t or ptrdiff_t or whatever is not a solution 19:33:22 Deewiant, I'm trying to avoid gnu extensions, I rely on C99 and POSIX 1003.1-2001 19:33:27 Deewiant, probably indeed 19:34:15 Deewiant, anyway would that loop push things in the correct order? 19:34:30 I don't know, depends on how your stacks are laid out 19:34:32 compile it and try 19:34:56 Deewiant, well it looks correct but problem is, it does the top stack separatly 19:34:57 :/ 19:35:11 why is that a problem? 19:35:13 so I'd need 3 stacks to check *changes* 19:35:36 it's trivial to make it 123 stacks if you want :-P 19:37:00 -!- tkr has joined. 19:37:21 hrrm 19:37:28 $ ./ccbi ~/src/cfunge08/tests/sysinfo-multi-stack-sizes.b98 19:37:28 3 3 4 5 19:37:29 $ ./cfunge tests/sysinfo-multi-stack-sizes.b98 19:37:29 3 5 3 116 19:37:33 indeed something breaks there 19:38:45 -!- oerjan has joined. 19:39:01 $ ./ccbi ~/src/cfunge08/tests/sysinfo-multi-stack-sizes.b98 19:39:02 3 6 5 4 19:39:03 hm ok 19:40:24 $ ./cfunge tests/sysinfo-multi-stack-sizes.b98 19:40:24 3 5 4 6 19:40:28 better but not perfect 19:40:29 hehe 19:48:30 Deewiant, btw I actually think TOSS should be at the bottom, opposite of how ccbi does it 19:48:39 considering the standard 19:49:11 Deewiant, so what do you think this should print: 120{1230{aaaaaa0y2a*1+k$....a,@ 19:49:27 assuming interpreter got k right 19:49:48 3 4 5 6 or 3 6 5 4 19:50:18 -!- Slereah has joined. 19:57:52 gah 20:00:32 Deewiant, no idea if you are still there, but if you figure out what version is correct of those two tell me, I got no clue 20:12:47 AnMaster: I tried 3 random interpreters including FBBI and they all do it the way CCBI does it 20:13:33 Deewiant, but what do you think the standard says about it? 20:13:55 I think it can be interpreted either way, like many other things 20:14:23 another undef sigh 20:14:35 well I'll add both versions, in #ifdef 20:14:35 the whole spec is an undef 20:14:43 since it's not written formally 20:14:50 Deewiant, oh? 20:15:04 you mean not some IEEE standard, indeed 20:15:06 it's written in english, and like all natural languages it's inherently ambiguous 20:15:20 Deewiant, C99 standard is also in English 20:15:44 there's no forth-like "$ (a b -- a)" notation or anything 20:15:53 AnMaster: and it's also ambiguous in some cases :-P 20:16:05 Deewiant, not as much as funge98 is 20:16:16 and C99 standard is way larger 20:16:31 not as much, because like most ISO/IEEE/ANSI/other standards it's written in as non-natural a manner as possible 20:16:50 whereas the funge-98 spec reads like an essay or something 20:16:59 indeed 20:17:12 so funge08 should read more like a real standard 20:17:24 or 09 considering much work it seems to be 20:43:59 -!- tkr has left (?). 21:29:29 -!- olsner has joined. 21:37:20 -!- jix has quit (Read error: 113 (No route to host)). 21:41:22 http://rage.kuonet.org/~anmaster/cfunge/snapshots/cfunge_r107.tar.bz2 <-- new snapshot, if everything goes well I will make 0.2.0 release next 21:41:39 * AnMaster looks for ehird 21:43:54 Deewiant, if you are there, tell me if things work for you using last revision 21:44:34 * Slereah is trying to do formal logic in iota 21:45:02 Slereah, can't remember what one iota is 21:45:06 The excluded middle should be something like ```J`J`J`JJ```J`J`J`JJ`JJ```J`J`J`JJ```J`J`J`JJ`JJ``J`J`JJ`JJ``J`J`JJ`JJ``J`J`JJ`JJ, if I'm not mistaken 21:45:17 Iota is the compressed unlambda. 21:45:32 With only one combinator 21:45:45 Although it's *ii in actual iota 21:46:15 ah 21:47:18 AnMaster: appears to 21:48:14 Deewiant, nice, with the binary from that snapshot? 21:48:22 even though I use -march=pentium2 when building it, I think my 32-bit glibc may be built with -march=k8 -m32 21:48:24 er, don't know about that 21:48:32 so I got no idea if it will actually work on non-amd64 cpus 21:48:37 I just did bzr pull, cmake, make 21:48:51 Deewiant, right, but even then I wonder about binary on older systems too 21:49:16 ideally don't use -march of any kind 21:49:25 in binaries you distribute 21:49:47 Deewiant, exactly 21:50:27 Deewiant, and I built low-march (i686) for static boehm-gc, but well static glibc is harder 21:51:08 you can just dynamically link :-P 21:51:19 Slereah: Iota looks expanded not compressed to me ;) 21:52:02 Deewiant, that causes issues as you can understand, I link statically to avoid those issues 21:52:18 but I guess some mix could work 21:52:30 with something as commonplace as glibc it should be fine 21:52:55 but yes, ideally static link everything 21:53:30 hope libm is ok then too 21:55:51 oerjan: In size maybe! 22:01:00 Would a language without loops or conditional jumps but able to add code to itself be TC? 22:04:23 you can't get far without conditionals... 22:04:27 Deewiant, I made a script to build all possible 4 variants 22:04:33 dynamic/static 32/64 22:05:52 Slereah: i think there is such a language on the wiki 22:07:23 http://esoteric.voxelperfect.net/wiki/SMITH 22:09:10 www.esolangs.org == esoteric.voxelperfect.net 22:09:12 oerjan, ? 22:09:28 ah yes 22:09:37 those are equivalent 22:40:25 -!- jix has joined. 23:13:38 cfunge 0.2.0 released 23:16:46 http://rage.kuonet.org/~anmaster/cfunge/ 23:51:13 -!- BMeph has joined. 23:57:25 -!- jix has quit (Nick collision from services.). 23:57:33 -!- jix has joined. 2008-03-20: 00:18:50 -!- olsner has quit ("Leaving"). 00:28:50 -!- timotiis has quit ("leaving"). 00:53:37 -!- Corun has joined. 00:57:15 -!- sebbu has quit ("@+"). 01:27:11 -!- shinku_ has joined. 01:28:39 -!- shinku_ has changed nick to shinkuzin. 01:33:40 -!- jix has quit ("CommandQ"). 01:46:46 -!- Corun has quit (Read error: 110 (Connection timed out)). 04:09:13 -!- Tritonio_ has quit (Remote closed the connection). 04:10:14 -!- calamari has joined. 04:52:03 -!- GreaseMonkey has joined. 05:19:35 -!- BMeph has quit ("calls it a night"). 05:21:11 G'night all 05:21:21 -!- Sgeo has quit ("Ex-Chat"). 05:28:32 pikhq: I'm sad to say I had an extremely busy evening with even more to finish before I sleep, so I don't think I'll be able to do an additional steampunk comic update tonight. To make amends, I offer your choice of one of the following- scanned concept art, the opportunity to name a future character to be worked in at my own discretion, or a canonically accurate answer to the question of your choice about the universe, characters or 05:29:27 RodgerTheGreat: I'll save those for later; need to see a bit more of the story to get a *good* question going. ;p 05:29:47 well, at least pick which one you'll want 05:29:52 Question. 05:30:22 and don't hold out on me for absurd lengths of time or it'll expire 05:30:38 otherwise, cool 05:31:53 If it's held onto for absurd lengths, I'll have comics to entertain me, anyways. :p 06:29:59 -!- pikhq has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- Deformative has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- Quendus has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- GreaseMonkey has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- calamari has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- shinkuzin has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- cmeme has quit (brown.freenode.net irc.freenode.net). 06:29:59 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 06:30:00 -!- vixey has quit (brown.freenode.net irc.freenode.net). 06:30:00 -!- oerjan has quit (brown.freenode.net irc.freenode.net). 06:30:00 -!- Slereah has quit (brown.freenode.net irc.freenode.net). 06:30:32 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 06:30:32 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 06:30:32 -!- lament has quit (brown.freenode.net irc.freenode.net). 06:30:32 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 06:30:34 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 06:30:34 -!- Overand has quit (brown.freenode.net irc.freenode.net). 06:30:34 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 06:30:34 -!- SimonRC has quit (brown.freenode.net irc.freenode.net). 06:30:34 -!- cherez has quit (brown.freenode.net irc.freenode.net). 06:30:34 -!- mtve has quit (brown.freenode.net irc.freenode.net). 06:31:11 -!- GregorR has joined. 06:31:11 -!- Quendus has joined. 06:31:11 -!- Deformative has joined. 06:31:11 -!- Deformati has joined. 06:31:11 -!- pikhq has joined. 06:31:11 -!- GreaseMonkey has joined. 06:31:11 -!- calamari has joined. 06:31:11 -!- shinkuzin has joined. 06:31:11 -!- Slereah has joined. 06:31:11 -!- oerjan has joined. 06:31:11 -!- vixey has joined. 06:31:11 -!- oklofok has joined. 06:31:11 -!- RodgerTheGreat has joined. 06:31:11 -!- SimonRC has joined. 06:31:11 -!- cherez has joined. 06:31:11 -!- cmeme has joined. 06:31:11 -!- bsmntbombdood has joined. 06:31:11 -!- sekhmet has joined. 06:31:11 -!- lament has joined. 06:31:11 -!- tejeez has joined. 06:31:11 -!- Deewiant has joined. 06:31:11 -!- Overand has joined. 06:31:11 -!- mtve has joined. 06:32:03 -!- AnMaster has joined. 06:36:23 -!- Quendus has quit (Read error: 104 (Connection reset by peer)). 06:36:28 -!- Quendus has joined. 06:39:55 -!- shinkuzin has quit (Network is unreachable). 06:43:52 -!- RodgerTheGreat has quit. 06:48:29 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:37:31 Slereah: iota is the compressed ski, unlambda has lots of weird shit iota cannot do 09:53:56 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 10:23:19 -!- slereah_ has joined. 10:27:40 -!- slereah__ has joined. 10:35:58 -!- Slereah has quit (Read error: 110 (Connection timed out)). 10:40:22 -!- slereah_ has quit (Read error: 110 (Connection timed out)). 11:58:34 -!- oerjan has quit ("Gah!"). 12:03:14 I just got a great(?) idea for a funge fingerprint: PTHR, ie, threading using pthread so it can run on several cores on multi-cpu systems 12:04:00 would have to provide split, mutex and/or semaphore, some atomic "compare and exchange cell" and a few such things 12:04:12 would not be a tame extension of course 12:06:46 most certainly do /not/ tie it to pthread 12:06:52 or it'll be like SGNL, and remain unimplemented. 12:07:03 Deewiant, well yes more generic 12:07:14 but probably would be pthread in my implementation 12:07:35 Deewiant, of course I know nothing of threading API under windows so I would ask for your input on it 12:08:18 neither do I 12:08:24 I'd use what Tango provides 12:08:30 the point is, just define it higher-level 12:08:31 hah ok 12:08:35 Deewiant, indeed 12:08:45 anyway this is just an idea 12:08:54 along with SCK6 and a few more I got 12:09:08 SCK6 = SOCK for ipv6 12:09:17 unless SOCK can already do ipv6 12:09:28 * AnMaster growls at rcfunge specs about that 12:09:29 possibly, in theory 12:09:36 not sure, can't remember the specs too well 12:10:00 indeed I'll see what I can do when I get to that point 12:11:31 Deewiant, and then there is the nightmare idea of a full featured FFI as some fingerprint ;) 12:11:40 >_< 12:11:47 don't like it? 12:11:50 nor do I 12:12:05 when you've got working implementation + hopefully some docs I'll see :-P 12:12:07 but just to prove that I'm mad I may do it 12:12:47 Deewiant, anyway I probably couldn't do it 12:13:32 Deewiant, that would allow using gtk you know ;) 12:13:51 anyway I may implement SGNL, not sure 12:41:49 -!- jix has joined. 13:06:42 -!- jix has quit ("CommandQ"). 13:20:52 -!- ais523_ has joined. 13:21:55 -!- ais523 has joined. 13:22:14 hi ais523 13:22:38 hi ais523_ 13:23:06 PIME TARADOX 13:23:47 -!- sebbu has joined. 13:25:59 -!- ais523 has left (?). 13:29:11 -!- ais523 has joined. 13:29:38 I'm currently joined to #esoteric using telnet 13:29:57 Huzzah! 13:29:59 This is being done entirely by typing raw commands 13:30:14 sounds like serious stuff 13:30:14 (whereas I'm on a real IRC client so I can see the results) 13:30:42 I'm trying to get an idea of how IRC works so I can write my own client 13:31:00 * oklofok just read the rfc 13:31:04 The main problem was actually connecting in the first place without timing out; you have to type pretty quickly 13:31:29 yeah 13:31:30 ais523, don't forget to PONG 13:31:48 ais523, and well irc is a rather easy protocol 13:31:50 luckily, freenode basically never pings 13:31:52 but soo many extensions 13:31:59 and twists 13:32:22 ais523, basically you have too look at how ircds does things, for example consider the 005 ISUPPORT numeric 13:32:30 not in any standard that I know of 13:32:32 i once had a bunch of bots here as ghosts like a day 13:32:50 ais523, yet parsing it is very useful tells you what modes are supported and so on 13:33:05 oklofok, indeed freenode does TCP timeout only I think 13:41:52 [CTCP] Received CTCP-PING reply from ais523: 105 seconds. 13:41:58 wow, that took me a while to figure out 13:42:54 my main problem is not being able to actually see the control-As which often fly around 13:44:35 * ais523 tests doing an ACTION 13:45:02 so it's just another sort of ctcp... 13:45:34 wow, I never realised that /ctcp #esoteric VERSION even made sense before today 13:45:57 let's all do it! 13:46:12 oklofok: you got that the wrong way round 13:46:16 [CTCP] Received Version request from oklofok to channel #esoteric. 13:46:40 ...? 13:46:43 you must have written /ctcp ais523_ #esoteric VERSION 13:46:44 what did i get wrong? 13:46:58 your client added my nick to the request, so it only went to me 13:47:03 errrr 13:47:08 you have to use #esoteric as the nick to send to 13:47:21 the server adds all users on this channel in the messages it sens 13:47:22 sends 13:47:29 [CTCP] Received CTCP-PING reply from ais523: 105 seconds. 13:47:30 hah yes 13:47:45 * AnMaster notes that /me == CTCP ACTION 13:47:56 you send \1ACTION jumps\1 13:47:57 iirc 13:47:58 ais523: doing that to a channel == doing it to each user separately 13:48:03 as a PRIVMSG 13:48:15 [CTCP] Received CTCP-PING reply from ais523: -76 seconds. 13:48:26 ais523, to reply you do a NOTICE 13:48:39 I figured that 13:48:56 ie, NOTICE ais523 :\1VERSION telnet\1 13:49:19 and also how to lie to Konversation about how recently I'd been pinged 13:49:28 ais523, also a CTCP can be embedded in a normal line 13:49:29 thus the negative ping time 13:49:34 most clients doesn't handle it 13:49:38 but some send it 13:49:49 like normal message with a CTCP at the end, or even in the middle 13:50:24 this message has a ACTION test CTCP in the middle 13:50:27 ais523, however I know some ppl trying to clean up this mess and create a new standard 13:50:39 ais523, indeed erc fails at it, and so does xchat 13:50:47 but it is allowed 13:50:52 apparently so does Konversation 13:51:13 grr... it's hard typing when someone else dumps a comment in the middle of your line 13:51:21 ais523, http://www.irchelp.org/irchelp/rfc/ctcpspec.html 13:51:30 ais523, hehe true 13:51:43 blame your client ;) 13:52:38 well, this client can almost handle it, but it's a little low-tech 13:52:39 ais523, this may interest you: 13:52:40 http://www.irc-standard.org/ 13:52:52 thanks 13:53:44 ais523, also: http://www.alien.net.au/irc/irc2numerics.html 13:56:02 ais523, oh and test it on different ircds, for example inspircd and unrealircd as well as freenode's hyperion 13:56:39 bbl 14:02:02 -!- ais523 has changed nick to ais523_testingni. 14:02:08 -!- ais523_testingni has changed nick to ais523. 14:03:06 -!- Tritonio_ has joined. 14:03:34 hello Tritonio 14:04:42 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/befc3.php 14:04:43 hm 14:09:36 Anmaster: I am receiving pings from Freenode, but so far I think I'm answering to them properly because I'm not being booted off 14:09:58 ais523, err, as I said above, freenode doesn't care about PING 14:10:04 it only uses tcp timeout 14:10:17 so even if you don't do PONG it won't drop you as long as you are active 14:10:36 it is /sending/ the PINGs, though 14:10:55 freenode is indeed 14:11:04 it doesn't care about PONG though 14:11:16 yes freenode's ircd is weird 14:11:20 I think it sends them only to inactive users 14:11:31 and allows any sort of reply as a response 14:11:46 ais523, maybe, but other ircds doesn't act like that 14:11:47 so 14:12:06 do it the right way in your client 14:12:43 * ais523 was going to 14:18:45 -!- ais523 has quit ("testing quitting"). 14:18:56 -!- ais523_ has changed nick to ais523. 14:26:57 -!- ais523_ has joined. 14:35:31 -!- Corun has joined. 14:36:02 hello, Corun 14:36:58 -!- ais523_ has quit (Nick collision from services.). 14:38:23 Arr. 14:38:25 Arr. 14:38:31 Corun: ? 14:38:41 Pirate! :-) 14:39:32 -!- ais523_ has joined. 14:39:38 -!- jix has joined. 14:39:48 it 14:40:11 it isn't Talk Like A Pirate Day already, is it? 14:40:20 * ais523_ forgot the colon 14:40:31 No, no. I'm always like this. :-) 14:41:08 okokokokokokokokokokokoko 14:41:32 hmm... a properly esoteric IRC client would have options to swap nicknames with someone else 14:41:47 ais523_, HAHA 14:42:05 which would be opt-out; anyone who forgot to add the required compiler switch could have their nickname changed without their knowledge 14:42:06 ais523_, in what language btw? 14:42:20 I'm currently writing this using telnet 14:42:33 but I intend to write an INTERCAL IRC client at some point 14:42:33 ais523_, so you mean CTCP SWAPNICK or something like that 14:42:42 I'd definitly suggest a CTCP for it 14:42:46 yes 14:42:58 and then both clients coordinate the required nickname changes 14:43:25 ais523_, one would have to change to a temp nick name first 14:43:33 ais523: i love the swap idea 14:43:48 perhaps my first unlambda project should be an irc client 14:44:20 it's funny, i've been toying with esolangs for ages, but i haven't actually written anything that large in any of them 14:44:22 ais523_, making a simple irc client is easy, making one that supports most common extensions, multiple servers and so on is hard 14:44:30 large as in, something you can actually call a program 14:44:50 I only want a simple one, really 14:44:51 i've just theoretically pondered how you'd use features of different languages 14:44:53 ais523_, oh and multiple channels 14:44:59 to get modularity and such 14:45:00 ais523_, consider NAMESX extension 14:45:02 very useful one 14:45:05 it would be kind-of hard to write anything copmlex in INTERCAL 14:45:05 ais523_, a sec for docs 14:45:12 * complex 14:45:25 ais523_, see description at http://www.inspircd.org/wiki/NAMESX_Module 14:45:43 and there is UHNAMES too 14:45:50 UHNAMES avoids un-needed who requests 14:45:59 by returning hostmask in /names 14:46:09 far from all ircds support it, but still very useful 14:46:30 http://www.inspircd.org/wiki/Modules/uhnames 14:46:32 -!- ais523_ has quit (SendQ exceeded). 14:46:39 no docs there 14:46:44 ais523, lol at that one 14:46:47 what did you do= 14:46:50 whoops 14:46:54 yes rate limiting is important 14:47:01 I accidentally sent a NAMES command to every channel on freenode 14:47:07 so it was more a ReceiveQ exceeded 14:47:25 ais523, err, wrong 14:47:31 -!- vixey` has joined. 14:47:31 SendQ from server view 14:47:33 and yes, I am laughing out loud at this point and getting some funny looks as a result 14:47:40 ais523, and how to every channel on freenode? 14:47:45 NAMES with no argument 14:47:54 ais523, sure that checks every channel!? 14:48:13 because it doesn't on other ircds 14:48:13 well, I got several screenfulls before I was killed for the reverse flood 14:48:20 maybe it's every non-secret channel, or something 14:48:33 ais523, even then most ircds doesn't do that 14:48:49 << NAMES 14:48:49 >> :quark.kuonet-ng.org 366 AnMaster * :End of /NAMES list. 14:48:57 that server runs inspircd 14:49:12 and as I'm oper on it, I can see every channe 14:49:14 channel* 14:49:35 "If no parameter is given, a list of all channels and their occupants is returned. At the end of this list, a list of users who are visible but either not on any channel or not on a visible channel are listed as being on `channel' "*"." 14:49:53 so presumably it's just a case of most IRC clients not being crazy enough to implement what the RFC suggets 14:49:56 * suggests 14:49:58 ais523, ah another case of most ircds not following things because it is so stupid 14:50:06 ais523, because I did /quote 14:50:09 s/clients/servers/ 14:50:13 to make sure I just sent a raw command 14:51:22 ais523: you probably get even weirder looks if people actually see what you're laughing at 14:51:42 wow, I'm still laughing out loud 14:51:51 this is probably a record for me laughing at computer stuff 14:52:21 it's either this, or those specs for the Canon printer they had on thedailywtf.com one time, which was also pretty funny 14:52:33 all the specs were in the wrong places and the wrong units 14:52:47 ais523, if your client lacks a /raw or /quote or some other command for it. you won't be popular 14:53:03 AnMaster: it isn't meant to be a popular client 14:53:06 but /raw is easy enough 14:53:22 ais523, suggestion: name commands like intercal does it 14:53:25 so silly names 14:53:59 not that I can think up such names 14:55:12 ais523: some client/network combination does/did do that 14:55:30 I remember falling off a network for typing /who 14:55:35 -!- vixey has quit (Read error: 110 (Connection timed out)). 14:56:24 Deewiant: I'm just surprised that freenode lets you even start doing that, on the basis that you would definitely be thrown off the network before it finished its output 14:56:32 Deewiant, some ircds will buffer such 14:56:41 unless someone decided to suddenly delete all the channels 14:57:01 for example: 14:57:02 * stitch.chatspike.net InspIRCd-1.1.10+HerefordHopExtraDry BGHRSWdinorswx CGIJKLMNOQRSTVabcefghijklmnopqrstuvz IJLabefghjkloqv 14:57:03 * WALLCHOPS WALLVOICES MODES=19 CHANTYPES=# PREFIX=(qaohv)~&@%+ MAP MAXCHANNELS=20 MAXBANS=60 VBANLIST NICKLEN=31 CASEMAPPING=rfc1459 STATUSMSG=@%+ CHARSET=ascii :are supported by this server 14:57:03 * TOPICLEN=307 KICKLEN=255 MAXTARGETS=20 AWAYLEN=200 CHANMODES=Ibeg,k,JLfjl,CGKMNOQRSTVcimnprstuz FNC NETWORK=ChatSpike MAXPARA=32 ELIST=MU EXCEPTS=e INVEX=I OVERRIDE SILENCE=32 :are supported by this server 14:57:03 * USERIP WATCH=32 SECURELIST SAFELIST NAMESX SSL=*:6668 :are supported by this server 14:57:21 ais523, you will need to parse 005 for features 14:57:29 005 = the three last lines 14:57:34 yes it can span multiple lines 14:57:47 to start with I might not try to parse numerics at all 14:57:53 ais523, that is bad :/ 14:57:55 very bad 14:58:09 I have to start somewhere 14:58:13 true 14:58:23 -!- ais523 has left (?). 15:04:41 -!- Tritonio_ has quit (Remote closed the connection). 15:09:16 -!- Tritonio_ has joined. 15:15:41 -!- ais523 has joined. 15:19:08 maybe an IRC client should also have a database of servers, and how to register with the equivalent of NickServ on all the servers that supported it 15:19:23 so you could create an IRC account in a more user-friendly way 15:20:01 (I know that some servers don't support nickname-registering, in some cases deliberately, but many do) 15:21:53 hmm... it's pretty hard to do an IRC client without some way to select() 15:22:14 maybe I should design C-INTERCAL so that if you have multiple threads, a WRITE IN in one thread doesn't block the other threads 15:22:29 although then I'll have to implement network connections in it 15:22:40 and multiple filehandles, like CLC-INTERCAL has 15:23:06 I don't think an IRC client is currently possible in either dialect without either requiring the user to repeatedly press newline, 15:24:17 or using an external program as a wrapper around the IRC client itself 15:24:49 you could split on colons to tell if a message came from the user or from the server, and merge the input streams together somehow, but output streams would need special handling 15:26:16 I like the nonblocking WRITE IN method, but that would lead to interesting behaviour if two threads tried to WRITE IN the same stream simultaneously 15:26:29 Deewiant, you are wrong about !Befunge having "irremovable exit code output" 15:26:35 Deewiant, try --quiet option it removes it 15:26:48 maybe an IRC client should also have a database of servers, and how to register with the equivalent of NickServ on all the servers that supported it 15:26:53 good luck with that 15:27:04 just provide some way to execute "on connect commands" 15:27:07 at least the more commonly-used ones 15:27:24 ais523, because there are so many different service type, far from all being called nickserv 15:27:30 account based systems 15:27:40 that's why you'd need a database in the client 15:27:40 for example /msg userserv login 15:27:53 ais523, that is why you need to be able to load on-connect commands from a file 15:28:03 I use such a system 15:28:09 as I often also need to set specific modes 15:28:12 that would require the user to know what the right commnds were 15:28:16 or on some networks, oper up 15:29:05 ais523, way better, and, anyone using a intercal based program is very likely computer literate. 15:29:18 yes, but not necessarily IRC literate 15:29:45 and anyway, you could compile the INTERCAL to an executable, so nobody would ever know it was INTERCAL-based without looking at the source code 15:30:07 ais523, right, still 15:30:33 ais523, anyway a single service package may offer different ways depending on configuration 15:30:50 for example atheme services that I use, can be configured to be either account or nick based 15:30:56 or a mix of them 15:31:05 * AnMaster goes with the mix way 15:32:18 I think I'll start with a client which just loads a network, logs on, joins one channel, and lets the user type PRIVMSGs to that channel and see PRIVMSGs sent to that channel and to the user, and password-identifies 15:32:27 and then I'll expand it from there 15:32:44 good idea 15:33:17 responding to PING commands, also, because it won't work on some servers otherwise 15:33:27 ais523, s/some/most/ 15:33:27 . 15:36:52 o 15:37:09 oklofok: ? 15:37:24 ais523: just oing 15:37:56 * ais523 doesn't understand the appeal 15:38:11 but then I don't understand a lot of Internet culture 15:39:01 i o i real life too 15:39:04 *in 15:39:36 you mean you say o out of nowhere for no apparent reason every now and then? 15:39:50 yes 15:39:57 but then, I'm connected to IRC using telnet, so I can talk 15:41:23 i also say "okofolor" and "ofokol" quite often 15:41:42 curiously, these have never been my nicks. 15:41:54 hmm... okofolor may have been 15:41:58 -!- oklofok has changed nick to okofolor. 15:42:02 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)). 15:42:33 hmm... an esoteric IRC client should have the ability to change its version string 15:42:47 maybe prompt the user for one every time it gets a version request, and use a default if there isn't an answer within a few seconds 15:43:52 or maybe place version information that changes each time; for instance, have the subsubsubrevision number increase continuously over time 15:44:06 hmm... an esoteric IRC client should have the ability to change its version string 15:44:09 most do 15:44:17 in xchat for example it is a /set 15:44:22 and so it is in irssi 15:44:33 in erc I think it is something in your .emacs 15:44:35 oklofok: do those words mean anything, or do you just say them for fun? 15:44:58 I just like the feel of being able to reply anything you like to CTCPs that you get in telnet 15:45:08 it's a liberating experience 15:45:16 ais523, except you took ages 15:45:29 AnMaster, you sent me three at once! 15:45:42 ais523: they don't mean anything 15:45:43 yes finger exist 15:45:45 i guess just fofun 15:45:47 *for fun 15:45:53 ais523, same as old unix finger heh 15:46:16 -!- jix has quit ("This computer has gone to sleep"). 15:46:36 ais523, hah forgot VERSION first time 15:47:11 CLIENTINFO not CLIENTINGO, is supposed to list supported CTCPs I think 15:47:15 * Ping reply from ais523: 30.32 second(s) 15:47:16 hahaha 15:47:45 grr, I should have changed the timestamp by more 15:47:59 copying the timestamp back literally doesn't strike me as a very interesting thing to do 15:48:00 ais523, far from all clients implement more than VERSION/TIME/PING 15:48:14 oh and ACTION of course 15:48:19 but that is special 15:48:34 AnMaster, is that better? 15:48:42 * Ping reply from ais523: 18446744063813.62 second(s) 15:48:44 well 15:48:50 I sent you a second reply to the ping dated further in the future 15:49:01 yes it seems to overflow 15:49:04 around 2038 I bet 15:49:06 unfortunately, your client seems to use unsigned arithmetic for pings 15:49:21 on Konversation I was able to get negative ping times 15:49:40 it doesn't have to be, but in practice it normally is 15:49:57 you know this convo looks odd to those not seeing all of it 15:50:46 err that was sent to #esoteric 15:50:48 -_- 15:50:55 and was a notice not a ctcp at all I think 15:51:05 it was a notice to #esoteric 15:51:07 but why a "CTCP conversation"? 15:51:11 that's what I was trying to do 15:51:21 http://www.irchelp.org/irchelp/rfc/ctcpspec.html 15:51:25 we had a conversation with invalid CTCPs, just for fun 15:51:35 heh 15:51:39 and they came up as errors on our IRC clients 15:52:01 I've never had a PING conversation before, though, not even sure if that's possible with most clients 15:52:13 "SOURCE 15:52:13 This is used to get information about where to get a copy of the 15:52:13 client. The request in a "privmsg" is simply 15:52:13 " 15:52:23 "and the reply is zero or more CTCP replies of the form" 15:52:28 "\001SOURCE #:#:#\001" 15:52:35 remove all quotes 15:52:42 "followed by an end marker 15:52:42 \001SOURCE\001" 15:53:03 "where the first # is the name of an Internet host where the client can be gotten from with anonymous FTP the second # a directory names, and the third # a space separated list of files to be gotten from that directory." 15:53:04 hahaha 15:53:24 you said 'zero or more', so that one's easy to respond to 15:53:29 yeah 15:53:36 ais523, and very few clients implement it 15:53:47 I don't think there is any source code to me, though 15:54:06 your DNA sequence? 15:54:15 I could look up the source code to telnet, I suppose 15:54:22 ais523, hehe no need 15:54:37 I wonder if any closed-source IRC clients implement SOURCE? 15:55:08 Deewiant, any replies? 15:55:15 2008-03-20 16:54:57 [freenode] CTCP ERRMSG reply from clog: unknown CTCP: SOURCE 15:55:21 haha 15:55:31 that's the only one I got :-P 15:55:43 Deewiant, oh btw, did you see the note about !Befunge above 15:55:49 aye, cheers 15:56:02 Deewiant, so you need to update all of those soon 15:56:20 Deewiant, current cfunge should be included though it doesn't yet do all fingerprints 15:56:35 it's a pain to do it 15:56:41 I'd rather postpone it as much as possible :-P 15:56:55 write a befunge script to update it 15:56:56 Deewiant, oh and I got a weird infinite look in TOYS with !Befunge if I used --concurrent 15:57:03 Deewiant, did not match your output 15:57:03 some parts have to be done manually 15:57:23 Deewiant, ./BefungeLyt --quiet --concurrent --98 --d=*,* --cellsize=32 ~/src/cfunge08/mycology/mycology.b98 15:57:38 in TOYS it start outputting stuff like: 15:57:40 D:2rltB:vlpgo tCidn rA To 15:57:40 NNNNNNNNNNNDFFFFFFFFF:00000002 rffflc 15:57:41 -!- Deformative has quit (SendQ exceeded). 15:57:43 very odd 15:57:43 you're missing --files 15:57:47 and --warn 15:57:51 Deewiant, yes but why those 15:58:04 hmm... even after reading the IRC RFC I'm still not sure what to reply to a PING command (not the CTCP, the one that comes from the server) 15:58:05 why should it change stuff 15:58:13 because they might explain differences to my output 15:58:19 with a PONG, obviously, but I'm not sure what the argument should be 15:58:32 ais523: the argument that the server sent 15:58:38 PING foo -> PONG foo 15:58:52 AnMaster: and did you apply the patches from the page 15:58:56 I'm not sure, because PING foo gives the name of the server 15:59:07 doesn't matter 15:59:14 but I'm not entirely sure whether the PONG should give the name of the server or of the client 15:59:21 you PONG with exactly what the server gives you 15:59:28 PING :irc.cs.hut.fi 15:59:28 >>> PONG :irc.cs.hut.fi 15:59:37 some output from my bot running in this screen :-P 15:59:55 and it seems to be up just fine 16:00:08 OK, that makes sense; I pinged freenode and got the same string back 16:03:02 hmm... cmeme didn't even bother to respond to my CTCP ping 16:03:33 it probably doesn't respond to CTCPs at all 16:15:27 AnMaster: and did you apply the patches from the page 16:15:28 I did 16:15:40 Deewiant, after converting them to LF 16:15:43 well I don't know 16:15:45 oh and finding right files 16:15:52 Deewiant, as you linked to lower case names 16:15:58 so it gave 404 on links 16:16:02 ?? 16:16:02 firk 16:16:04 I needed upper case B 16:16:23 thanks mod_dir_index or whatever it is called under apache 16:16:24 ;O 16:16:25 ;P* 16:16:31 Deewiant, wtf does "firk" mean? 16:16:39 look it up 16:16:46 Deewiant, what language 16:17:01 Did you mean: define:firm 16:17:01 No definitions were found for firk. 16:17:58 "firk ding blast 16:18:40 odd that google doesn't know it 16:18:41 Deewiant, ah 16:18:43 http://dictionary.reference.com/browse/Firk 16:18:52 Deewiant, found it in urban dict btw 16:18:53 but that's not the meaning I use it for, of course :-P 16:18:54 just an expletive 16:19:16 urban dict says: "something not very smart" 16:19:16 aye, but it's a real word as well 16:20:02 Deewiant, I prefer the webster definition ;) 16:20:11 the second one 16:20:43 AnMaster: fixed the patch links, cheers 16:20:56 Deewiant, try klinkchecker some time btw 16:21:21 err klinkstatus 16:21:35 there are many such tools 16:22:22 according to klinkstatus "http://web.archive.org/web/20070322234225/http://www.teepop.net/fungus/" fails 16:22:50 and it's wrong 16:22:56 because it works fine here :-P 16:23:08 Deewiant, it times out here 16:23:26 http://web.archive.org/web/*/http://www.teepop.net/fungus/ 16:23:51 http://dev.tokigun.net/esolang/program_en.php fails too, times out 16:24:16 Deewiant, from web archive: "Failed Connection. 16:24:16 We're sorry. Your request failed to connect to our servers. We may be experiencing technical difficulties and suggest that you try again later. 16:24:16 See the FAQs for more info and help, or contact us." 16:24:30 AnMaster: works fine here. 16:24:39 Deewiant, http://dev.tokigun.net/esolang/program_en.php too? 16:24:40 although pyfunge does seem to be down. 16:25:00 Deewiant, dns fails for pyfunge 16:25:18 google has a cache from 2 weeks ago 16:26:53 it worked like last week too 16:27:05 hopefully temporary 16:27:22 how's the download link for you, http://pandora.sapzil.info/dev/pyfunge/pyfunge-0.2-beta2-snapshot-20041227.zip 16:28:04 Deewiant, don't really care about pyfunge 16:28:26 so I guess you don't have a copy of that zip either 16:29:11 Deewiant, I don't 16:29:33 and that link seems to fail 16:30:57 $ file Turtle 16:30:57 Turtle: RISC OS Draw file data 16:31:03 Deewiant, how on earth do you view it? 16:31:54 the only programs I found were for RISC OS or the Amiga, IIRC 16:32:06 there might have been one with some form of *nix support 16:32:14 but I couldn't get it to work on cygwin, at least 16:32:30 Deewiant, so you couldn't verify that TURT worked then? 16:32:36 nope 16:33:16 http://quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/tquine.php 16:33:21 the only TURT file I've seen is from CCBI :-P 16:33:23 mentions some "Oak Draw" for windows 16:33:48 oh cool, didn't find that 16:33:50 lessee 16:34:07 Deewiant, closed source 16:34:15 yeah, so? 16:34:17 and likely to pollute the windows registry even more 16:34:22 than it already is 16:34:30 no, I think that's unlikely :-P 16:34:33 it can't get much worse 16:34:49 hmm, it's 16-bit 16:34:54 unsurprisingly 16:34:56 it /can/ get worse, the Windows registry is bad but is capable of getting almost unlimitedly worse 16:35:08 but the installer seems to have died 16:35:17 no window but the process is running 16:35:22 and it doesn't seem to be doing anything 16:36:23 unsurprisingly there's no info on the net about running oak draw on windows xp >_< 16:36:59 Deewiant, hah 16:37:05 are the details of the format published anywhere? Presumably, if Befunge can create files in a format, it isn't too hard to read 16:37:34 the source that creates the file is C, not Befunge 16:38:24 oh, of course, but reading that source should imply details about the format 16:38:27 still you could reverse engineer it 16:38:34 ;) 16:38:35 yeah, sure 16:38:44 or simplest would be to change the source to output something more commonplace 16:38:52 and it seems unlikely that people would pick a very complex format for a file to be output by a Befunge interp 16:38:54 or to install RISC OS :-P 16:39:04 ah, here we go, running in win95 compatibility mode worked 16:39:13 ais523, well Deewiant selected svg 16:39:19 and did it without any library 16:39:29 heh, it wants to install in "C:\Program Files" even though such a dir doesn't exist 16:39:36 AnMaster: yes, because I thought it'd be simplest 16:39:43 Deewiant, indeed most old windows app do 16:39:57 2002 O_o 16:39:58 Instead of c:\ 16:40:10 or, as it is here, D:\Programs 16:40:21 Deewiant, I never got it c:\Program but c:\Documents and Settings 16:40:27 in Swedish windows xp 16:40:29 it's in the %ProgramFiles% envvar... 16:40:36 why just use a localized name for one of them 16:40:48 why not c:\Användare och Inställningar 16:40:51 for the latter 16:41:04 beats me 16:41:10 the latter is much harder to change BTW 16:41:16 C:\Documents and settings is really hard to type into a shell 16:41:18 almost broke my Windows trying, and ended up failing 16:41:26 C:\D usually does it 16:41:27 Deewiant, btw do you come from the Swedish or Finnish speaking part of Finland? 16:41:36 finnish 16:41:40 ais523, cd /home :) 16:41:41 like most :-P 16:41:43 and is even more difficult with cmd.exe than it is on POSIXy shells 16:41:51 Deewiant, heh ok 16:41:53 C:\D works fine in cmd.exe 16:42:37 /home is a lot better, and Windows Vista picked a similar solution (C:\Users) 16:42:44 alright, I got a turtle file 16:42:45 ais523, hah 16:42:55 Deewiant, oh? does it looks right? 16:43:02 for !Befunge 16:43:06 nope 16:43:11 Deewiant, oh? 16:43:22 but then this program is really weird 16:43:35 I can't decipher the UI 16:43:39 could be it's just displaying it wrong 16:43:43 Deewiant, hm ok 16:44:32 but it does look like there's one square 16:44:36 and it's in the lower left corner 16:44:41 and nothing else 16:44:54 weird 16:44:56 food -> 16:45:55 -!- ais523 has quit ("bye!"). 16:49:41 -!- Corun has quit (Read error: 110 (Connection timed out)). 16:52:13 o. 16:52:23 okofolor, what? 16:54:28 nothing! can't a guy o here anymore without being asked for a reason :O 16:54:44 i'm not sure that's ever been possible 16:54:50 -!- RodgerTheGreat has joined. 16:55:18 okofolor, well what did it mean? 16:58:44 well what did it not mean 17:00:14 i, 17:00:17 it didn't mean that 17:08:53 it didn't? 17:22:18 heh 17:26:10 huh, why does BASE give null bytes in output 17:26:14 UNDEF: N outputs 40 in base 16 as ^@28 $ 17:26:15 like that 17:26:20 where ^@ = \0 17:27:31 * AnMaster fixes 17:29:12 done 17:43:01 -!- jix has joined. 18:12:32 -!- Sgeo has joined. 18:35:58 -!- timotiis has joined. 18:44:58 AnMaster: btw, you talk about that magic undocumented -O4 mode 18:45:05 AnMaster: have a look at http://gcc.gnu.org/viewcvs/trunk/gcc/opts.c?view=markup 18:45:19 AnMaster: 3 or greater are all the same 18:45:36 Deewiant, odd, I talked to a gcc developer that said otherwise 18:45:51 maybe he was just messing with you :-P 18:46:05 Deewiant, and I notice a speed difference in some cases 18:46:38 if (optimize_val != -1) 18:46:38 { 18:46:38 optimize = optimize_val; 18:46:38 optimize_size = 0; 18:46:38 } 18:46:39 err 18:46:54 looks like it set optimize to any level? 18:46:54 ? 18:47:02 yes 18:47:10 so you can give it -O9 if you want 18:47:13 but it's all the same as -O3 18:47:16 so it doesn't actually handle the values of -O there 18:47:20 no, lower 18:47:23 if (optimize >= 3) 18:47:28 it will set optimize == 9 or whatever 18:47:43 jep 18:47:56 but it only cares about >= 1, >= 2, >= 3, and nonzero 18:48:04 hm in that place yes 18:48:22 where is the variable optimize declared? 18:48:31 probably in opts.h 18:48:44 doesn't seem to 18:48:56 flags.h 18:49:09 Deewiant, anyway something could check for 4 or higher elsewhere 18:50:34 anyway *goes back trying to make i instruction work* 18:56:02 if you really want speed with gcc you have to mess around with the options for different optimization passes and things manually anyway 18:56:36 and/or use profiling but i have no experience with that 18:59:49 -!- ais523 has joined. 19:00:13 jix, I do use profile guided optimizing already 19:00:23 to see how fast I can get 19:00:33 currently working at -O0 -ggdb3 though :) 19:01:22 -g doesn't slow down programs by more than a constant AFAIR; but isn't debugging still easy at -O1? 19:06:33 -!- Corun has joined. 19:13:07 jix: i too made an ski interp in thue 19:13:12 -!- okofolor has changed nick to oklopol. 19:13:37 it was quite simple, although took like 2 hours for me 19:16:40 AnMaster: alright, so I grepped the whole GCC source. :-) 19:16:51 Deewiant, result? 19:16:53 AnMaster: a couple of instances of 3, none of 4 or higher. 19:17:00 interesting 19:17:12 this is 4.3.0 BTW. 19:17:59 Deewiant, that does not explain why cfunge is about 20 ms faster in average using -O4 than -O3 though 19:18:09 checked 10 times each 19:18:12 AnMaster: is there a difference between the binaries? 19:18:17 Deewiant, there is 19:18:44 compile all the files individually with -O3 and -O4 and look at the asm 19:19:01 Deewiant, I will when I got i working correctly 19:19:04 if you can bother, that is 19:19:26 you could just use diff to compare the asm 19:20:36 of course, what else :-P 19:21:42 hmm... are there ANSI/VT100 escapes to save the cursor position, scroll all the screen up one line except the bottom line, write something on the penultimate line, and then restore the cursor position? 19:21:45 BAD: writing to mycotmp0.tmp with o failed 19:21:55 Deewiant, currently my y says i is implemented and o isn't 19:21:59 so that should be UNDEF 19:21:59 :P 19:22:04 in that situation 19:22:14 y claims all of the following: 19:22:14 That t is implemented 19:22:14 That i is implemented 19:22:14 That buffered I/O is being used 19:22:14 That the number of bytes per cell is 8 19:22:17 and so on 19:22:38 there are legitimate reasons to allow i but not o, e.g. an interp running on a read-only file system 19:22:49 ais523, indeed 19:23:02 ais523, and in this case "because I haven't started work on o yet" 19:23:09 the other way round is less likely, but still possible (a write-only filesystem could be used, for instance, for security logging purposes) 19:23:41 AnMaster: Stop sending messages while I'm halfway through typing mine, it's really confusing! 19:23:59 ais523, stop using telnet 19:24:08 (this is of course why I was asking about the save-position-and-scroll codes) 19:24:16 but I like using telnet... 19:24:22 ais523, what code? 19:24:28 I'd use ncurses 19:24:40 curses doesn't have INTERCAL bindings ATM 19:24:53 although using curses might be a decent way to do it in Befunge 19:25:15 hardcoding VT100 strings fits better into the INTERCAL philosophy 19:25:17 ais523, create bindings? 19:26:26 AnMaster: changed. 19:26:53 Deewiant, the line that says "Hope the following isn't overwritten" 19:26:53 you could do it using the ffi I plan to write, but translating curses into INTERCAL would fit better into the INTERCAL spirit 19:26:54 it would be a library included with the distribution, just like the other libraries 19:26:54 after all, curses doesn't require capabilities that INTERCAL can't manage, it's just writing out various binary to the terminal 19:26:55 let me tell you 19:26:57 it wasn't 19:27:05 Deewiant, it is looping in overwritten 19:27:14 hah 19:27:20 rwrwrwrwrw 19:27:21 how'd that happen 19:27:29 Deewiant, no fucking clue 19:27:38 * AnMaster writes a dump funge space routine 19:27:41 can you give a... yeah 19:27:47 AnMaster: so you've accidentally implemented shred? 19:27:54 ais523, ? 19:28:14 AnMaster: a utility for repeatedly overwriting files to try to prevent them being undeleted 19:28:21 ais523, yes I know 19:28:26 but it didn't overwrite them 19:29:20 AnMaster: that comment is to the left of the space where mycorand.bf should be loaded 19:29:47 the Hope the following isn't overwritten,v +55<<<<< 19:29:47 or we hit an @ and exit >" redro eht ni detareneg erew snoitcer 19:29:53 Deewiant, so would an off by one error cause that to happen? 19:29:55 er, where'd that 'the' come from 19:30:00 Hope the following isn't overwritten,v +55<<<<< 19:30:01 or we hit an @ and exit >" redro eht ni detareneg erew snoitcer 19:30:22 AnMaster: I'm failing to see how you'd get that far, all the way to the w :-P 19:30:39 Deewiant, you know, so am I 19:30:46 since it is in between the two r 19:30:48 what does trace say 19:30:55 tix=0 tid=0 x=93 y=126: w (119) 19:30:56 tix=0 tid=0 x=92 y=126: e (101) 19:30:56 tix=0 tid=0 x=91 y=126: r (114) 19:30:56 tix=0 tid=0 x=92 y=126: e (101) 19:30:56 tix=0 tid=0 x=93 y=126: w (119) 19:30:57 are you sure it's that w? 19:31:03 hm no it isn't 19:31:08 it's not 19:31:16 it's the one in the string 19:31:17 tix=0 tid=0 x=94 y=126: (0) 19:31:28 O_o 19:31:32 your i is borked ;-) 19:31:45 Deewiant, nop, my load routine is 19:31:48 and that isn't in i 19:31:55 same difference 19:31:59 what does s do? I've forgotten 19:32:09 I figured you'd use the same routine as to load the main space 19:32:12 set 19:32:13 ais523: store character 19:32:22 at one ahead 19:32:44 Deewiant, I didn't use the same as the main one only can load at 0,0 19:32:47 "a"sb skips over the b and changes it to an a 19:32:53 oh dear, if it could change the IP direction it might have been because it was being hit from above or below somehow 19:33:06 AnMaster: so write a generic one and call that from main with the params 0,0 19:33:15 Deewiant, that is what I'm doing 19:33:19 it works fine at 0,0 19:33:22 but not otherwise 19:33:27 heh 19:36:53 oklopol: i made one? 19:37:32 jix: context? 19:37:45 "19:13:07 jix: i too made an ski interp in thue" 19:38:17 i think so, although may have been several months 19:38:19 Deewiant, err, bug no longer happens 19:38:24 didn't change anything 19:38:25 oklopol: how did you deal with the nesting of things like arguments to k? 19:38:30 oklopol: it might be 19:38:35 AnMaster: :-D 19:38:40 oklopol: you are right 19:38:43 at least i worked on one 19:38:48 Deewiant, will do valgrind after I fixed "BAD: i should have pushed (60, 119) as Va" 19:38:52 just convert everything to textual substitution. 19:39:14 it's easy to "go past a nesting" 19:39:18 but i have no idea whether mine is finished 19:39:20 Deewiant, should space be ignored in text mode only or in binary too? 19:39:25 oklopol: I thought of that, but dealing with things like `k`k`ki is not that easy 19:39:26 and "copy a nesting to a marked" 19:39:46 you can read it, well, probably can't, but i'll link anyway 19:39:49 Deewiant, aha, not ignoring space was what caused the problem 19:39:52 www.vjn.fi/oklopol/thue.txt i think 19:39:53 ah, a copy command would do it 19:40:11 also i have some my-interpreter-spesific stuff there 19:40:21 comments + it can't handle empty substitutions 19:40:37 -!- Sgeo_ has joined. 19:40:43 well, just the first is specific to the interp 19:40:54 Back all 19:41:02 -- ''kAB -> A 19:41:02 -- evaluating a k means skipping one expression, then removing an expression 19:41:02 >''k::=A 19:41:18 ki-interp took like 5 minutes 19:41:31 s needed some 15 states 19:42:06 i have two non working versions ^^ 19:42:14 AnMaster: never overwrite anything with spaces 19:42:22 binary or not 19:42:25 ok 19:42:35 Deewiant, anyway that was what caused the problem 19:42:47 jix: then i think i was faster 19:42:49 :P 19:42:56 you said it took you an hour 19:42:59 BAD: i should have pushed (90, 16) as Vb 19:43:07 Deewiant, you should show what value was pushed instead 19:43:14 then you said "hmm... it's not working fully yet" or something 19:43:19 i haven't heard from you since 19:43:30 yeah 19:43:34 AnMaster: you should have a debugger or some sort of IO capability in the language you use, which allows you to find out :-P 19:43:43 i stopped working on it that day... 19:44:11 Deewiant, yes of course I got a debugger 19:44:39 jix: how did you do it, i mean what was your strategy? 19:44:52 i don't remember 19:44:58 and i have no comments in my source 19:45:01 i was thinking making a macro language or something for thue 19:45:01 and it isn't working 19:45:02 so.... 19:45:04 hehe :D 19:45:25 thue basic ^^ 19:45:41 hmm 19:45:49 nargh i have to many projects right now 19:45:57 can't start to work on such a thing even tho i find it it interesting 19:46:10 i can't even handle all the stuff i'm doing right now 19:46:28 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 19:46:36 i have about 50 projects in my todo list 19:47:25 that's the problem with being a human, so many ideas, so slow typing speed 19:47:35 yeah 19:47:52 making a todo list would be one point on my todo list if i had one 19:47:59 well it wouldn't be then... 19:48:06 ouch 19:48:18 -!- ais523 has joined. 19:48:22 paradox-ad 19:48:23 ... 19:48:25 paradox-a-day 19:48:34 my Internet connection dropped 19:48:39 was it the telnet one 19:48:44 did I miss anything? 19:48:53 [20:46:22] i have about 50 projects in my todo list 19:48:53 [20:47:10] that's the problem with being a human, so many ideas, so slow typing speed 19:48:53 [20:47:20] yeah 19:48:53 [20:47:38] making a todo list would be one point on my todo list if i had one 19:48:53 [20:47:45] well it wouldn't be then... 19:48:54 [20:47:52] ouch 19:49:12 oklopol: I was using telnet, but it was my Internet connection (not just IRC) that dropped, so no client would have saved me 19:49:24 oh, right 19:50:54 Deewiant, what is the "| C K M V | " stuff about 19:51:20 ? 19:51:29 some fingerprint 19:51:36 "We'll be moving the 3x3 area starting at the 1" 19:51:37 where 19:51:39 TOYS 19:51:47 that's documentation 19:51:50 ah 19:51:52 I see 19:51:58 :-P 19:52:21 you get so used to reading Mycology code that seeing a comment confuses you now, eh? :-D 19:52:27 -!- Sgeo has quit (Connection timed out). 19:52:43 Deewiant, nah, I just use ; around all my comments 19:52:45 bts 19:52:46 btw* 19:52:48 "v<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" 19:52:54 what is those lines about 19:53:00 where 19:53:10 before fingerprints 19:53:13 hard to miss 19:53:19 several lines like that 19:53:24 ah, testing flying IP 19:53:29 and ] 19:53:41 hm 19:53:44 of course it's not necessary to fill the whole line 19:53:47 but might as well :-P 19:53:56 you never know what kind of bugs you'll run into 19:54:13 hahah indeed 19:54:13 just like in the first x tests 19:54:24 and there's similar in ORTH 19:54:33 ^^^^^^<^^^^^^^#^^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>"sllec fo rebmun gnorw eht drawkcab spmuj j-40 :DAB"1 ^ ee 19:54:42 for j too it seems 19:54:50 no, j just happens to be there 19:55:17 you'll note the arrows go to an x error message 19:55:39 around that place why are there a column of chars like "ll" 19:55:43 to the right side 19:55:52 ee 19:55:53 ll 19:55:54 and so on 19:55:55 it's just a string running in the vertical direction 19:56:33 <^^ 19:56:35 at the bottom 19:56:52 yes... 19:56:54 * AnMaster tries to figure out string direction 19:56:59 that mean string starts at top? 19:57:00 from top to bottom 19:57:08 yep 19:57:30 oh it's the "skip/hit easternmost" 19:57:34 Deewiant, but why vertical 19:57:35 yep 19:57:38 were you insane? 19:57:41 why not, saves a bunch of space 19:57:45 you were 19:58:01 AnMaster: the original reason was that at first I didn't differ between file/line 19:58:11 I noticed it later and had already written 50+ lines down 19:58:12 Deewiant, but true, now I only need to maximize my console for the gdb output from call FungeSpaceDump() 19:58:12 :P 19:58:25 so I needed to fit the line testing in the same place 19:58:31 ah 19:58:36 oklopol: what was that link to your Thue ski again? 19:58:38 so I figured that since there will be two fairly long strings I might as well put them vertically 19:58:45 Deewiant, and not PIC code? 19:58:54 I spent the intervening time learning how to write an HTTP GET over telnet 19:58:58 I've told you before, AnMaster :-P 19:59:09 PIC code would have been a good idea but I was young and foolish 19:59:09 Deewiant, the code there looks not too position dependant for jumps? 19:59:33 but telnet isn't very good in terms of backscroll 19:59:34 no, but there's a bunch of p and g going on there 19:59:46 Deewiant, err what is >"i sutats nruter eht fI .q htiw tiuq ot gniyrT"a doing near the top? 19:59:52 I thought that was at the end 19:59:58 it is at the end. 20:00:07 I can only find that on line 768, at least :-P 20:00:09 Deewiant, oh wait 20:00:12 right 20:00:22 missed that was the end of the previous funge space dump 20:00:25 hah 20:00:25 confused up and down? Befunge'll do that to ya. ;-) 20:00:40 >"i sutats nruter eht fI .q htiw tiuq ot gniyrT"a".enod yllacitcarp si etius tset 89-egnufeB ygolocyM ehT"a>:#,_f#^q 20:00:40 (gdb) finish 20:00:40 (gdb) call FungeSpaceDump() 20:00:46 20:00:49 more like that ;P 20:01:00 hard to see that in the messy dump 20:02:29 ok pushed i instruction, o not yet done 20:06:17 Deewiant, btw you don't list these changes to mycology anywhere? I can't find a change log in mycology either 20:07:09 heh, Slashdot puts random Futurama quotes in an HTTP header 20:07:17 ais523, oh? 20:07:21 AnMaster: nah, can't be bothered to list these minor changes. 20:07:51 ais523, looked with http live heardes 20:07:53 can't see it 20:08:07 it was in an X-Leela header for me 20:08:20 X-Bender: Boy, were we suckers! 20:08:23 maybe it only shows up if it detects telnet as your user agent 20:08:23 saw that 20:09:25 "X-Bender: Lick my frozen, metal ass!" 20:09:34 wow, Slashdot's HTTP output has a lot of vertical whitespace 20:09:36 ais523, where did you say those were from? 20:10:02 Futurama, based on the character names and the sort of quotes that are there 20:10:10 and what is Futurama? 20:10:17 O_o 20:10:45 if you really don't know, you can look it up on Wikipedia 20:12:04 * AnMaster looks it up 20:12:22 AnMaster lives in Nofuturamastan 20:12:36 oh some tv series 20:12:39 explains it 20:12:43 I hardly ever watch TV 20:12:50 sometimes news and thats it 20:13:04 ... or browse the Intertubes. :-P 20:14:22 if you didn't guess, I'm currently websurfing using telnet and less 20:14:40 ais523, you are mad 20:16:37 unfortunately, I have to do it via a temporary file, because otherwise less sets my keyboard to raw mode so I can't backspace over typos :( 20:17:05 ais523, -_- 20:17:10 why not do it in intercal? 20:17:46 an INTERCAL program's already been written, which basically just grabs a URL and dumps the web page there to stdout 20:17:52 ais523, a full browser in intercal with AJAX and all 20:17:54 like wget, but with less style 20:18:17 it's an interesting idea, but I'd hate to write an ECMAscript interp in INTERCAL 20:18:30 or even an HTML renderer, for that matter 20:18:46 yes and? 20:19:06 ais523, try to make it a google summer of code project *runs* 20:19:27 generally speaking, I don't like to embark on projects that are far too difficult, or just inappropriate 20:19:41 An INTERCAL IRC client is maybe possible, an INTERCAL web browser is just stupid 20:20:12 Deewiant, should o truncate and write or append? 20:20:31 the former 20:21:30 not stupid, the word you're looking for is fucking awesome shit 20:21:53 web browsers are ludicrously difficult to write anyway 20:21:54 ais523, you said ffi for intercal? 20:21:54 All books are 3 characters. Check syntax and try again 20:22:06 AnMaster: yes 20:22:15 I haven't written it yet, but I have plans 20:22:20 ais523, I have been thinking about doing one for befunge 20:22:23 as a fingerprint 20:22:34 which allow you to embed NEXT, COME FROM, RESUME, etc. in C programs 20:22:40 and link them to INTERCAL programs 20:22:46 ais523, so I would like to know more about how it would work, would it use libffi? 20:22:50 it would likely generalise to other languages as well 20:23:03 -!- oklopol has set topic: #esoteric - Extending Brainfuck to the reals with tetration. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/. 20:23:05 ais523, ah, not ffi at runtime then= 20:23:06 ? 20:23:07 I was planning to just link the programs together at compile time 20:23:18 oklopol, what did you change? 20:23:23 * Sgeo_ renames the biblebot script 20:23:25 ais523, aww not helpful for me then 20:23:34 they swapped the words 'tetration' and 'reals' 20:23:40 ah 20:23:54 what is tetration? 20:24:12 it's what comes next in the sequence addition, multiplication, exponentiation 20:24:17 ais523: no 20:24:31 no? 20:24:39 yes. 20:24:50 that is, not no. 20:24:52 i swapped "brainfuck" and "tetration", and changed "in" to "with" 20:25:00 oh, right. 20:25:10 Deewiant, so what is "tetration"... 20:25:11 that sequence thing was right ofc 20:25:17 AnMaster: what ais523 said 20:25:18 ^3? 20:25:21 no 20:25:23 I was comparing the topic to the last-but-two, from memory 20:25:28 oklopol, then what.. 20:25:44 5^^3 = 5^5^5 20:25:46 n^n^n^n^n... 20:25:49 ah 20:31:31 -!- Judofyr has joined. 20:31:35 maybe it would be easier to write an IRC client as two programs 20:31:42 one which handled input from the user 20:31:52 Deewiant, I don't get what the flag for o should do 20:31:54 and the other which handled messages from the IRC server 20:32:19 AnMaster: what part don't you get 20:32:26 then you wouldn't need a select-equivalent 20:32:26 Deewiant, ie, what it does 20:32:26 "any spaces before each EOL, and any EOLs before the EOF, are not written out. " 20:32:35 -!- Hiato has joined. 20:32:36 what's not to get 20:32:39 Deewiant, ah right, found it now 20:32:41 EOL means end of line, EOF means end of file 20:32:42 Deewiant, didn't see that part 20:32:49 that's the only part :-P 20:32:56 Deewiant, C standards are easier to read :P 20:34:09 "The first vectors popped by both of these instructions are considered relative to the storage offset. (The size vector Vb, of course, is relative to the least point Va.)" 20:34:21 mycology doesn't test it is relative storage offset 20:34:24 and no, that's not tested. 20:34:37 Deewiant, suggestion: test it? 20:36:00 yeah, because that's /easy/ 20:36:07 sure, let's just add a { here 20:36:14 oh, wait there was something on the stack, need to add a 0 first 20:36:21 oh, darn now the whole row is shifted 2 chahrs 20:36:28 firk, no space anywhere in the next 5 rows 20:36:36 gotta use x somewhere to jump to a temporary location 20:36:36 ... 20:36:37 Deewiant, right right, add a mycology 2 test suite? 20:36:37 no thanks 20:36:44 like said, rewrite mycology 20:36:48 by all means 20:36:52 a good idea 20:36:56 but I'm not in the mood for it :-P 20:36:56 Deewiant, or test out of order? 20:37:14 I'd prefer to keep it in somewhat smart an order - test an instruction and move on 20:37:24 there's already some deviation from that with some UNDEFs 20:40:53 * AnMaster muses over PIC with GOT (Global Offset Table, used in PIC code on linux at least) 20:41:16 as in gcc -fpic 20:44:04 -!- ais523 has quit ("going home"). 20:44:15 -!- Hiato has quit ("Leaving."). 20:48:12 Deewiant, odd is it really correct that flag meanings are inverted between i and o? 20:48:50 in a way, yes 20:49:01 oh? 20:49:02 all depends on how you think of what the flag means... after all it's not the same flag 20:49:28 Deewiant, do mycology test both kinds of output? 20:49:42 mycology quite verbosely says that it doesn't 20:49:48 ah ok 20:50:52 Deewiant, it could output it for later manual verification 20:51:21 true 20:51:22 but... 20:51:24 it doesn't. :-P 20:56:27 Opening mycotmp0.tmp... failed. 20:56:27 Trying to write to it with o... 20:56:27 UNDEF: writing to mycotmp0.tmp with o failed 20:56:28 Deewiant, err 20:56:52 if it says o is implemented it should probably be BAD 20:56:52 hey, you said it shouldn't be BAD :-P 20:56:52 but UNDEF when y says o is not implemented 20:56:56 Deewiant, I said: depending on y value 20:57:11 the developer knows whether o should work 20:57:23 besides, it could mean a read-only file system 20:57:26 as somebody pointed out 20:57:36 now, tell me the truth and say as it is: you can't fit it in 20:57:36 :P 20:57:54 I can, actually 20:57:58 I just can't be bothered to write it 20:58:03 but there's plenty of room there :-P 20:59:04 Deewiant, when did you write mycology and ccbi? I mean the main stuff 20:59:12 the 'main' stuff? 20:59:20 as in "not just maintainance" 20:59:43 currently all you do to mycology is bug fixes after all 20:59:57 beginning of 2006 for non-fingerprint stuff, I think 21:00:06 ah 21:00:34 or hmm 21:01:24 I'm inferring this from the fact that the first entry in CCBI's changelog says "everything should work" and is dated june 2006 :-P 21:02:09 no, I think most of mycology happened after that 21:02:42 or maybe I did have the core already then 21:03:00 fingerprints were definitely late 2006 - mid 2007 though 21:03:51 $ cat mycotmp0.tmp 21:03:51 #@>. 1#@vv"@.4"@#<.>$#v5#.< #>3.#@$ .^@^ 0@# 4.27. 21:03:53 * AnMaster sighs 21:04:11 doesn't look quite right :-P 21:04:18 missing newlines yeah 21:04:34 they went to stderr, instead, thanks code copying from dump function 21:04:39 :-D 21:05:35 anyway text file mode looks painful 21:05:41 ie, having to lookahead 21:05:45 aye, unless you implement it the lazy way 21:05:49 to find trailing whitespace 21:05:56 Deewiant, what? ungetc? 21:06:05 err, for i or o 21:06:21 Deewiant, for o 21:06:41 yeah 21:06:51 Deewiant, do mycology test binary input? 21:07:08 for i 21:07:17 so the lazy way is that if you're given a 1000x1 befunge area which contains line breaks, say, only test for trailing white space at the end 21:07:24 instead of testing in the middle as well 21:07:26 err wait ungetc is wrong 21:07:31 would need unputc 21:07:54 Deewiant, even then, how do I find where it ends 21:07:59 AnMaster: mycology does say what it tests in most cases :-P 21:08:01 ie, where is there only whitespace left 21:08:25 well, how do you know when your IP needs to wrap 21:08:33 Deewiant, check bounding box 21:08:34 :P 21:08:37 exactly :-P 21:08:42 no checking is done for space 21:09:00 Deewiant, yes but in text mode it says o should not print trailing whitespaces 21:09:11 yes... 21:09:17 so what's the problem 21:10:04 a sec 21:10:11 for (FUNGEVECTORTYPE y = offset->y; y < maxy; y++) { 21:10:11 for (FUNGEVECTORTYPE x = offset->x; x < maxx; x++) { 21:10:11 value = fungeSpaceGet(& (fungePosition) { .x = x, .y = y }); 21:10:11 fputc(value, file); 21:10:11 } 21:10:11 fputc('\n', file); 21:10:13 } 21:10:15 is how I do it 21:10:29 ah, of course you can't do that :-) 21:10:32 how can I know when I reached "trailing whitespaces" 21:10:34 .. 21:10:42 Deewiant, exactly 21:10:45 you need to take a copy and go through it 21:10:51 I never even considered outputting directly :-D 21:10:57 Deewiant, err what? 21:11:08 why not? 21:11:10 mallocate a buffer 21:11:17 Deewiant, if text mode yes 21:11:19 otherwise no 21:11:34 I don't know, never occurred to me 21:11:46 Deewiant, it works fine for binary mode this 21:11:50 just not for string mode 21:12:20 err text mode 21:12:47 * AnMaster puts in TODO for now 21:13:01 Deewiant, I will correct it either "later" or "when mycology tests it" 21:13:34 hmm, my binary output would be different 21:14:14 Deewiant, not according to diff 21:14:16 I checked 21:14:21 given (10000,10000) to (10010,10010) yours would output 10x10 spaces? 21:14:58 Deewiant, err, I compared mycotmp0.tmp from ccbi and cfunge 21:14:58 mine would output only 10 line breaks 21:15:02 Deewiant, not sure what you mean 21:15:15 Deewiant, err why would it? 21:15:16 AnMaster: as in, what happens when outside the space boundaries 21:15:26 Deewiant, well that is an UNDEF I bet 21:15:27 mine doesn't output anything in that case 21:15:31 of course it is 21:15:45 otherwise I'd say "you're wrong" and not "we differ" ;-) 21:16:06 if it was a DEF I would hit the standard author over the head for defining such a useless thing when he left way more important stuff out 21:17:13 you keep forgetting that funge is an esolang :-) 21:17:33 yes but there must be limits 21:18:16 // Sanity test! 21:18:16 if (*filename == '\0' || size.x < 1 || size.y < 1) { 21:18:16 ipReverse(ip); 21:18:16 return; 21:18:16 } 21:18:20 is that a good idea? 21:18:28 or does it break some standard? 21:18:40 UNDEF 21:18:45 ah.... right 21:18:48 for the latter two, that is 21:18:57 for the first? 21:19:04 *filename == '\0' is defined since that can't be opened, of course 21:20:37 Deewiant, I notice you don't keep vectors as structs in ccbi 21:20:43 what is the reason for that? 21:20:56 why should I? 21:21:22 well, I wonder about the design decision behind it 21:21:33 I got a struct fungevector after all 21:21:46 because it seemed logical 21:21:47 and why is it necessary? 21:22:18 not really, but IMO cleaner code 21:22:30 but I asked about your design decision 21:22:54 didn't feel it was necessary 21:23:02 for cleaner code or otherwise 21:28:08 -!- Corun has quit ("This computer has gone to sleep"). 21:33:06 Deewiant, BAD: ran out of temporary file names, can't test o 21:33:10 is that really a BAD? 21:33:17 just a question 21:33:37 yes, it's BAD, because it means mycology could test something but can't because of the environment 21:33:45 and hence you don't know whether it's GOOD/BAD/UNDEF/what 21:33:46 hm 21:33:54 ERR maybe? 21:34:15 several of the IO ones should be ERR on fail instead of GOOD/BAD/UNDEF 21:34:19 IMO 21:34:26 and what would ERR mean 21:34:28 just a suggestion 21:34:48 error due to environment that may indicate for example a read only FS 21:34:49 or such 21:35:25 so basically, "can't test" 21:35:29 yep 21:35:39 I guess that could work 21:35:40 and where that is not due to an optional feature 21:36:09 like y saying t/o/i/=/whatever is missing then thats an undef, or it seems in the case of t, nothing at all 21:37:02 * AnMaster runs valgrind and mudflap tests 21:37:13 just mudflap is horribly slow 21:37:35 like 30 seconds waiting after 21:37:37 Trying to quit with q. If the return status is 15, consider it GOOD... 21:38:52 * slereah__ goes ee SMITH 21:39:00 "ee SMITH"? 21:39:00 It seems neat. 21:39:05 see, AnMaster. 21:39:05 ee? 21:39:06 See. 21:39:07 ah 21:39:07 ok 21:39:09 right 21:39:49 __mf_violation: [0, 0, 0, 0, 0] 21:39:50 :D 21:49:51 Deewiant, pushed added o instruction. 21:49:53 * slereah__ looks at SMITH examples 21:49:59 IT'S MACHINE CODE 21:51:12 slereah__, it is? 21:51:34 Well, it looks like Assembly. 21:51:40 Full of move to register and stuff. 21:52:30 This can mean only one thing. 21:52:38 I must make a bracketless brainfuck! 21:53:14 slereah__, I think that is kind of what SMITH is 21:53:43 Yes. But I do not like how it looks. 21:54:01 I have this terrible phobia of assembly 21:54:33 To the text editor machine! 21:55:39 is a processor with atomic "compare and exchange" and one without any atomic operations or things that would work for locks in the same computational class? in a multi CPU system of the latter there is obviously things you can't do that you can in the first 21:56:35 slereah__, ^ 21:56:47 whut 21:56:52 see question 21:57:02 I barely understand it 21:57:05 or anyone else for that matter 21:57:08 slereah__, ok 21:57:09 Answering it would be pushing it! 21:57:24 you know about compare and exchange? or locks? 21:57:30 No. 21:57:39 ah you don't know about multi threading? 21:57:50 because the second CPU couldn't do it safely 21:57:50 Neither! 21:57:54 while the first could 21:58:01 so are they in same computational class? 21:58:12 Let me get a coin. 21:58:17 What should tail be? 21:58:19 ok forget it 21:58:24 Deewiant, you then? 21:58:40 slereah__: would you be more comfortable with a mathematical model of an assembly? 21:58:55 oklopol, ah you here? can you understand my question? 21:59:12 i'm not sure what that would be, but there must be something both theoretical and assebly-like for you to get going 21:59:22 i know how much you love that obscure math 21:59:38 -!- oerjan has joined. 21:59:43 AnMaster: i may be able to understand it, but i will have to read a few lines up to see it 21:59:45 wait a minute 21:59:45 The truth is, I mostly just like working on a tape. 21:59:50 oklopol, is a processor with atomic "compare and exchange" and one without any atomic operations or things that would work for locks in the same computational class? in a multi CPU system of the latter there is obviously things you can't do that you can in the first 21:59:53 there it is again 22:00:09 slereah__, I prefer a 2D array :) 22:00:30 I tried to do that 22:00:36 AnMaster: no, i don't get that 22:00:46 But infinite in all direction grid is hard to do without problems 22:00:49 although i'm fairly sure i could answer you right away if i understood it 22:01:04 oklopol, ok you know about compare and exchange or locks, like mutexes? 22:01:15 The Love Machine 9000 last version has something like that 22:01:23 oklopol, needed for two threads to be able to access same data 22:01:32 http://membres.lycos.fr/bewulf/Russell/Hello2.png 22:01:34 oklopol, and on a multi cpu system very important 22:02:23 oklopol, so if a system where say set and get memory takes a lot of more cpu cycles than other operations, and with no atomic get and set memory, you could not safely to threading over multi cpu 22:02:27 oklopol, with me so far? 22:03:06 oklopol, ? 22:03:17 oh, sorry 22:03:23 i'll read 22:03:28 . 22:03:58 no, i don't know exactly what mutexes are 22:04:12 oklopol, well then clearly such a system, without any way to do atomic memory changes and no way to do mutexes or such can not do some things that a system with those feature can 22:04:26 slereah__: how is it hard to make an infinite-in-every-direction array? 22:04:26 oklopol, mutex = a lock on memory so a single thread at a time can access it 22:04:46 oklopol: Mostly, it's bothersome to print a section of it 22:04:52 Well, for me at least 22:05:06 AnMaster: okay then i guessed right 22:05:07 For instance : http://membres.lycos.fr/bewulf/Russell/Hello.png 22:05:10 i'm with you i think' 22:05:16 The first line is for some reason printed too much 22:05:30 oklopol, therefore a system without atomic memory operation can not do the same stuff as one with them 22:05:46 oklopol, are those two systems in the same computational class? 22:05:51 depends on the definition of "being able to do something" 22:05:55 i mean 22:06:04 both can do anything computable within their memory limit 22:06:18 slereah__: what's in the bottom right corner of that pic? 22:06:23 we aren't talking "computational class" type abilities here 22:06:37 oklopol, two threads on a dual cpu system being able to transfer data between them using a queue 22:06:38 just features allowed for the programmer, and speed 22:06:51 oklopol, so one thread on each cpu 22:06:59 kind of like co-routines 22:07:05 yes 22:07:18 co-routines? 22:07:21 I dunno 22:07:26 i don't see what you men 22:07:27 *mean 22:07:29 oklopol, now you can't solve the problem "two threads on a dual cpu system being able to transfer data between them using a queue" problem one one of those systems 22:07:40 oklopol, agree on that? 22:07:44 sure 22:07:59 that has nothing to do with computational class of course 22:08:10 oklopol, ok what class or whatever has it got to do with? 22:08:19 features allowed for the programmer, and speed. 22:08:27 oklopol, hrrm 22:08:29 from a theoretical perspective 22:08:48 if you wanna be more physical, it's basically just the ability to do... well, do exactly what you said. 22:09:06 you gain nothing from multithreading when it comes to computation. 22:09:08 oklopol, yet something can be turing-complete without being brainfuck-complete, so is that another case of "features allowed for the programmer"? 22:09:11 ie I/O 22:09:20 except the fact the physical world lets you do things faster 22:09:33 well, that's another way to put it 22:09:36 processes are IO 22:09:46 oklopol, so being IO complete? :D 22:09:52 well, they are not exactly that... 22:09:55 hm 22:09:57 Hm. 22:10:12 I'm afraid just a "add the current cell at the end of the code" won't cut it 22:10:28 but... just as having a printer doesn't make you more powerful computationally, neither does threading, nor mutexes 22:11:03 also you can simulate the lock by having some sort of atomic boolean flags, i'm sure. 22:11:20 where atomic means fast enough to read not to need a lock themself 22:11:38 What would be a good idea for a extend-the-code-instruction? 22:11:40 oklopol, could you define the concept better? 22:11:45 Copypasting n instructions at the end? 22:12:27 also you can simulate the lock by having some sort of atomic boolean flags, i'm sure. <-- well memory would be so slow that wouldn't work 22:12:29 AnMaster: in a universal system you can simulate anything *internally*, so you can simulate the whole physical computer having atomic mutexes and whatnot 22:12:40 oklopol, hah ok 22:12:42 the only thing you cannot have is the actual physical processes. 22:12:47 i mean 22:12:57 the actual whatever queue sharing you were talking about 22:13:04 umm 22:13:26 weren't you originally saying something about not being able to share a queue between processes? 22:17:36 oklopol, indeed I were 22:17:58 well, can't you just have a lock to indicate which one can access the queue at given time? 22:18:00 *a 22:18:29 oklopol, or in fact "not able to atomically access any memory with respect another cpu of the same kind in the same system" 22:19:00 so a lock could not be acquired(sp?) atomically either 22:19:11 does that mean the memories are distinct? 22:19:22 oklopol, no of course they share same ram 22:19:31 just no way to prevent them from clobbering each other 22:19:44 there cannot be safe accesses to the ram? 22:20:01 oklopol, not if they try to access the same part of the ram no 22:20:21 if you write the programs that run on each cpu to access different parts, I guess it would work 22:20:45 well, you need to able to read / write *something* safely, or just be synchronized 22:20:46 say, making sure one cpu keep in the top 4 MB and the other in the lower 4 MB or whater 22:20:55 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 22:21:03 but you couldn't communicate between the cpus 22:21:09 oh he left 22:23:09 -!- okofolor has joined. 22:24:05 okofolor, wb 22:24:08 well, you need to able to read / write *something* safely, or just be synchronized 22:24:08 say, making sure one cpu keep in the top 4 MB and the other in the lower 4 MB or whater 22:24:08 * oklopol has quit (Read error: 104 (Connection reset by peer)) 22:24:08 but you couldn't communicate between the cpus 22:24:08 oh he left 22:25:10 if you have *one* boolean flag, or the processors are synchronized, you can communicate anyway you want 22:25:26 one safe boolean flag, or perfect synchronization 22:26:49 but indeed, if you can't have a bit of information both can access safely, there is no way to have communication 22:26:53 but isn't that a given... 22:27:20 i'm assuming you know what i mean by the sync thing, because you aren't asking. 22:27:44 I assume you mean instructions will take same amount of time 22:27:50 so they can know where each other is 22:27:58 like is done in concurrent befunge 22:28:06 yes 22:28:20 but of course, instructions may or may not take longer 22:28:26 due to cache issues and so on 22:28:33 cache hits and cache misses 22:28:44 oh and random access time random access ram ;) 22:28:45 all you have to know is how long they *took* 22:28:51 okofolor, ^ 22:28:51 not how much they will take 22:28:54 Ah shit. 22:29:01 also, they need to be *within some limit* 22:29:12 I was trying to use the BF constants from esolang, then I forgot I didn't have brackets anymore 22:29:26 if the access time can be *anything*, then you cannot have safe sharing. 22:29:39 okofolor, it can be anything 22:29:47 okofolor, within say 2^32 years 22:29:51 or even longer 22:30:02 because no matter how long you give for the other to read a certain place in the memory, they may collide, because the operation can have waited exactly enough to crash with the other one 22:30:14 okofolor, indeed 22:30:29 well, if we are not leaving any room for error, it is safe to say it's impossible to have safe sharing. 22:30:30 okofolor, it is however safe to write another byte of data on this mad system 22:30:47 say one byte from each other 22:31:01 they can exchange certain bytes? 22:31:07 okofolor, nop they can't 22:31:13 then what do you mean 22:31:18 "it is however safe to write another byte of data on this mad system" 22:31:21 but I meant, one cpu can write at 0x122 and the other at 0x123 22:31:28 without problems 22:31:36 well, i'm referring to any given cell of course 22:31:51 you don't need to keep "within another memory page" 22:31:57 or something like that 22:32:16 we can just consider one single memory cell 22:32:24 it is simple to see you cannot share even that 22:32:30 indeed 22:32:55 no use taking the whole memory into account, because none of its cells can be shared due to that. 22:33:06 okofolor, oh and reading while the other cpu is writing the same cell will result in a power spike that will kill the cpu 22:33:13 both of them 22:33:42 well, we can just consider all failures failures 22:33:46 -!- okofolor has changed nick to oklopol. 22:33:54 indeed, just trying to make it more interesting 22:34:05 so this system is not IO complete? 22:34:09 well, that is only interesting when we start calculating probabilities. 22:34:22 and "expected failure" 22:35:03 oklopol, it also has a 79.67% chance to explode the ram with the force of 2 tonnes TNT at two CPUs trying to *write* to the same cell at the same time 22:35:04 ;) 22:35:11 thereby killing the operator 22:35:19 you don't want to do anything that probably results in a power spike, whereas you can safely do stuff that, when failing, will just put a boolean flag up indicating a failure 22:35:39 okay, now how probable is it for a read-read to fail? 22:35:52 Well, I now have Bracketfuck. I hope the x instruction is enough for TCness 22:36:03 slereah__: l 22:36:12 wut? 22:36:15 link 22:36:27 I'm not giving you a link to my computer :o 22:36:50 252-1-82-215 <<< this your ip? 22:36:51 http://paste-it.net/7474 22:36:54 There. 22:38:02 okay, now how probable is it for a read-read to fail? 22:38:03 hm 22:38:10 very likely if they hit at the same time 22:38:20 result would be that too little current was generated 22:38:26 so it would register value as a 0 22:38:33 both cpus would that is 22:38:58 but again random access time random access memory (RATRAM) would make it hard to time that 22:39:04 *maybe* if they had well synchronized clocks it might still be able to do something safely. 22:39:13 so you couldn't say use that to make a cell the same value 22:39:18 slereah__: b in move-head is just for confusing? 22:39:22 oh random access time 22:39:28 RATRAM hehehe 22:39:34 * AnMaster loves that name 22:39:36 * oerjan declares this completely impossible 22:39:45 oklopol: I like my programs to be compacts like cement blocks 22:39:52 oerjan, aye, :) 22:40:00 Movehead is just a way of making the tape infinite 22:40:04 oerjan: yes, but we are considering probabilities here 22:40:12 although they don't look that promising... 22:40:17 oklopol, indeed not 22:40:18 :D 22:40:32 seems this machine is designed to kill people who like threading. 22:40:38 you cannot even use probabilities to repeat until you are sure 22:40:39 oklopol, aye that is the case 22:41:16 oerjan: does that make it not interesting to consider the probabilities? 22:41:48 oklopol, so this system is not safe for general use I understannd? 22:41:50 understand* 22:42:14 slereah__: x just adds a command in the end of the prog? 22:42:19 not tc 22:42:27 Well, any char. 22:42:39 How does SMITH do it? 22:43:34 slereah__: you can add at most one character each time you do an operation, and each operation uses a character 22:43:50 this means the only infinite program is one that only executes x. 22:44:01 and something else in the beginning, ofc 22:44:05 Heh. 22:44:21 Would 2 chars be enough? 22:44:23 YABC does something like that 22:44:28 i mean 22:44:50 similar, although you have goto, you have to build your jumps with +'s and -'s 22:45:16 Like a wang machine :o 22:45:17 2 chars that do what? 22:45:18 Heh. Wang. 22:45:20 you know, how comes funge seems sane compared to such systems? 22:45:40 Copypasting two chars at the end of the code 22:45:50 two same characters? 22:46:00 hmm, harder to declare non-tc at least. 22:46:01 Well, two adjacent cells 22:46:16 well 22:46:34 hmm 22:46:35 I guess it would be easier if I just used a language that handled strings 22:46:35 i doubt that you can set up which cells to copy with just one command 22:46:39 or two 22:46:46 I guess I could restart Lore 22:47:07 Lore? 22:47:21 in the beginning of the program, you can create anything in the memory, meaning you can probably at least make *some* non-trivial loops 22:47:21 Some stupid idea I have. 22:47:41 About a language in which you can declare any sort of data structure or something 22:47:46 And doing stuff in 'em 22:48:26 The structure 0 was the program itself 22:48:27 like graphica?!?!?!? 22:48:29 oh 22:48:38 you can *do stuff with them*, nevermind then. 22:48:50 Heh. 22:54:19 * Judofyr feels proud; has just written a JavaScript-only site: http://yr.judofyr.net 22:54:31 * Judofyr don't know JavaScript 22:54:45 jQuery helps a LOT! 22:59:46 Judofyr, I see "JavaScript required", and then a menu on the side 22:59:48 crap site 22:59:55 please make it work without javascript 23:00:04 It's a mashup with Google Maps 23:00:11 it DOES need JavaScript 23:00:20 Judofyr, make it work without javascript or it is crap, sorry 23:00:39 It's a mashup! If want to use, enable JavaScript! 23:00:49 I can't make it work without JavaScript 23:00:54 Judofyr, even when I enabled javascript it showed same message 23:00:57 so even more crap 23:01:01 which browser? 23:01:04 Judofyr, firefox 23:01:09 it's not completely done, yet.. 23:01:13 that's weird... 23:01:40 Judofyr, works in konqueror though 23:02:25 Judofyr, it just asks "where or what is this" 23:02:37 and when I enter the name of the city it just locks up 23:02:44 hm.. 23:02:52 name == Örebro 23:02:53 I hate client-coding :( 23:02:55 Swedish city 23:03:00 Should handle UTF-8... 23:03:12 what you write there doesn't matter :P 23:03:44 Judofyr, oh and well METAR tell me lot more 23:03:50 airport near Örebro 23:03:52 ESOE 202150Z AUTO 13010KT 9999 SCT052 M02/M06 Q0991 23:03:55 much more info 23:04:21 YES JUDOFYR YOU SUCK STOP DOING WHAT YOU'RE DOING AND LET THE PROS DO IT LOL 23:04:23 like wind, dewpoint, visibility, sky conditions, pressure 23:04:28 lol 23:04:28 23:04:31 oklopol, I didn't mean that 23:04:34 :P 23:04:56 I have access to some more variables, but I don't know if I got it for the whole world :P 23:05:10 it works very well with Norway 23:05:15 Judofyr, oh? 23:05:43 not in the mashup, but the raw-data I receive 23:05:48 ah 23:05:55 Judofyr, what do you get for Örebro then? 23:06:30 http://api.yr.no/weatherapi/locationforecast/1.4/?lat=LAT;lon=LON 23:06:47 just replace LAT and LON with the latitude and longitude 23:07:05 (should be in the URL: #Örebro,LAT,LON) 23:07:22 here's the "documentation": http://api.yr.no/weatherapi/locationforecast/1.4/documentation 23:08:01 -!- Corun has joined. 23:09:27 AnMaster: got it? 23:09:55 Judofyr, can't be arsed to mess with that 23:12:12 AnMaster: Make Örebro to the top of the list, type "javascript:void(window.location="http://api.yr.no/weatherapi/locationforecast/1.4/?lat="+data[0][1]+";lon="+data[0][2])" in the adressbar and press enter 23:12:27 then you'll redirect to a raw XML :) 23:12:37 (remove the other places) 23:13:24 Judofyr, "javascript: protocol not supported" 23:13:34 *sigh* 23:13:36 clients :P 23:13:47 programs* 23:14:01 Judofyr, in firefox it does nothing at all instead 23:14:02 why can't they all work identically :P 23:15:21 AnMaster: here is the XML for Örebro: http://api.yr.no/weatherapi/locationforecast/1.4/?lat=59.273755;lon=15.2075395 23:15:22 :P 23:15:53 thats a lot 23:16:31 I thought I found a place where it wasn't so much, but I don't know 23:16:39 it might have the same details for all places... 23:17:23 maybe I should add wind (direction & speed), fog, clouds and pressure too :P 23:18:09 it got the same details for the south-pole too: http://api.yr.no/weatherapi/locationforecast/1.4/?lat=-90;lon=-90 23:23:40 Judofyr, oh and other variables 23:23:48 like? 23:23:58 how much expected rain 23:23:58 :S 23:24:07 yeah, but that's a little tricky 23:24:23 I'm showing the data AT a time 23:24:27 Judofyr, visibility 23:24:49 Judofyr, ok show current rain value 23:25:12 Judofyr, basically show everything METAR would 23:25:27 what is the ICAO code for Oslo airport? 23:25:43 OSL 23:25:54 (I'm pretty sure) 23:26:01 Judofyr, http://rafb.net/p/WhxZZk11.html 23:26:04 if it's that three-letter digit 23:26:10 Judofyr, sorry ICAO are 4 letter 23:26:14 oh 23:26:16 hm.. 23:26:37 Judofyr, first char would be E for Northen europe, then some char for norway 23:26:45 then two chars for actual airport 23:26:46 ENGM 23:26:57 http://en.wikipedia.org/wiki/Oslo_Airport%2C_Gardermoen 23:26:59 INPUT: 2008/03/20 22:13 23:26:59 ENGM 202213Z 08006KT 050V120 7000 -SN FEW010 SCT017 BKN040 M03/M04 Q0986 TEMPO 2000 SN BR VV008 23:26:59 UNUSED: TEMPO 2000 SN BR VV008 23:27:01 a lot of data 23:27:02 :) 23:27:05 :) 23:27:32 Judofyr, here is same data in a non-flying geek format: http://rafb.net/p/tafC0e26.html 23:27:43 thx :) 23:27:50 are you a flying geek? 23:27:53 Judofyr, I'm a flightsim fan myself yeah 23:28:04 but I admit I can't fully read the METAR line 23:28:08 parts I can 23:28:19 -SN = light snow for example 23:28:31 FEW010 = few clouds at 1000 ft 23:28:56 M03/M04 = temperature -03 C, and dewpoint -04 C 23:29:01 M means minus 23:29:12 well, my idea with the site wasn't to make a kick-ass weather site, but make it able to get the weather everywhere at the Earth, without being limited to larger cities 23:29:21 08006KT is wind speed I think and 050V120 is wind direction 23:29:25 but, more data = better :) 23:29:26 V means variable direction 23:29:32 7000 = visibility 23:29:55 I think "TEMPO" is some kind of "temporary changes excepted in soon future" 23:29:57 not sure though 23:30:09 Q0986 is pressure 23:30:35 Rel. Humidity is calculated from pressure, dew point and temperature iirc 23:31:09 Judofyr, did I miss any part? 23:31:15 I'm not fast at reading METAR 23:31:17 but I can parse it 23:31:21 given enough time 23:31:43 anything after TEMP0 I don't understand 23:32:13 that's pretty much 23:32:37 Judofyr, oh wait, VV008 bit is, I think, vertical visibility 23:32:43 predicted in this case since it is after TEMPO 23:32:48 I *THINK* 23:33:39 KSFO 202156Z 27022KT 10SM FEW015 13/03 A3030 RMK AO2 PK WND 27027/2145 SLP261 T01330033 <-- american format, everything after RMK is US specific, RMK means remark 23:41:27 AnMaster: I'll see what I can do :P Thanks for the feedback. I'm going to bed now :) 23:41:40 heh ok 23:42:15 *gone* 23:44:25 -!- sebbu has quit ("@+"). 23:46:31 I think I have a bettar idea for the x. 23:46:42 Maybe adding the cells until it runs into a 0 cell* 23:48:47 wut? 23:51:11 For the adding of cells. 23:51:50 slereah__, 0-terminated cell adding? 23:51:53 from a stack? 23:52:03 Well, from a tape, since it's BF. 23:52:19 interesting 23:52:20 As I always say, around stacks, never relax. 23:52:30 err what? 23:52:36 slereah__, befunge uses stacks, it works great 23:52:45 much easier than brainfuck IMO 23:53:07 I'm not too used to stacks. 23:54:14 easier to think in than tape at least 23:54:22 slereah__: try programming something in a stacky language 23:54:24 C is way more stack based than tape based 23:54:43 you can pretty much get the same thinking going as you get with functional programming 23:54:43 oklopol, befunge is recommended stacky language IMO 23:54:57 AnMaster: well, umm, no :P 23:54:57 can't do functional though 23:54:59 Underload? 23:55:03 oklopol, why not? 23:55:16 AnMaster: you cannot have nested structures or functions in the stack 23:55:21 so it's basically a retarded tape 23:55:30 oklopol, in befunge? 23:55:32 Heh. 23:55:39 AnMaster: yes, in befunge 23:55:48 err you can have anything you want on stack 23:55:56 you could have references to cells 23:56:08 pushing vectors on stack 23:56:10 you can have any serialized structure 23:56:16 oklopol, aye 23:56:22 that is very different when it actually comes to *programming* 23:56:25 of course befunge is bloated and so on, but that was a design goal 23:56:42 computationally, serialization means nothing 23:56:53 but in a language without functions/macros, it means fucking everything. 23:57:11 befunge is fun, but i don't think it's the best language for getting used to stacks 23:57:14 oklopol, befunge got that "RBUS"4( 23:57:15 :P 23:57:34 hmm, what does that mean? :\ 23:57:41 oklopol, load SUBR fingerprint 23:57:42 :P 23:57:58 SUBR does subroutines 23:58:24 cool 23:58:39 oklopol, very simple minded ones 23:58:49 but handles a call stack, kind of 23:58:57 call stack is mixed with normal stack of course 23:59:02 in true befunge style :D 23:59:10 slereah__: i'd recommend false 23:59:12 hehe :) 23:59:15 sounds like fun 23:59:22 oklopol, oh and don't forget { and } 23:59:29 for stack-stack 23:59:33 means you can isolate code 23:59:38 uses storage offset 23:59:38 Isn't false obfuscated? 23:59:49 slereah__, most esoteric languages are 2008-03-21: 00:00:09 slereah__: obfuscation is something you do to code, you don't usually call languages that 00:00:10 Nah. 00:00:16 Most are just minimal 00:00:21 but false does nested functions, and suchamathing. 00:00:36 i have no idea what you mean by obfuscation here 00:00:54 I'll just read up False on the wiki 00:00:58 that it looks like line noise? ofc it does, if you want it to 00:01:10 i'll have to read too, ages since i did 00:01:16 -!- GreaseMonkey has joined. 00:01:20 slereah__: obfuscation is something you do to code, you don't usually call languages that 00:01:20 um 00:01:23 malbolge? 00:01:31 heh 00:01:50 that it looks like line noise? ofc it does, if you want it to <-- oh we are talking about perl? 00:01:54 malbolge might be an obfuscated language 00:01:56 Heh. 00:02:04 perl has an entry in esolang wiki, i think :) 00:02:10 :D 00:02:11 Yes, there is 00:02:18 http://www.esolangs.org/wiki/Perl 00:02:26 Although the follow up has not arrived! 00:02:34 Is there a good one for J or K? 00:03:23 Making substitution rules in Schönfinkel's combinator is hard. 00:03:47 It seems it's hard to replace variables when there aren't variables anymore :o 00:05:05 heh, what is that perl program? It just prints 30. 00:05:32 it's a metaphore, apparently! 00:05:55 lament, it actually works! 00:05:56 !?!?! 00:06:16 i don't know if it works or not, but it prints 30 00:06:35 plenty of stuff which prints 30 doesn't work. 00:07:18 Does Linux have a Perl interpreter? 00:07:34 I just typed that in the console shell, and it's doing nothing :o 00:07:38 Not even an error message 00:08:14 slereah@Vixem:~$ perl -wlne'END{print$n}eof&&$n++;/([^<]+)/i&&$n--' * 00:08:14 <slereah__> 929 00:08:16 <slereah__> D: 00:08:19 <slereah__> This isn't 30. 00:08:23 <slereah__> This isn't 30 at all! 00:09:01 <oklopol> i spot a regex matching the contents of the title 00:09:12 <oklopol> but i don't really know perl 00:09:51 <slereah__> And I really don't know Perl 00:10:00 <oklopol> i :) 00:10:04 <oklopol> ... 00:10:06 <oklopol> :) 00:10:22 <oklopol> i'm such an egoist i like to type an "i" and just look at it 00:10:28 <oklopol> sometimes i forget to delete it 00:10:47 * SimonRC grins at the censoring: http://answers.yahoo.com/question/index;_ylt=Ah4pBKeFFHxVdUWNrNoikqGIxQt.;_ylv=3?qid=20080320073519AA7zuRZ 00:10:55 <SimonRC> "What is moby-***** connection to romanticism?" 00:18:53 <oerjan> lament: i think that perl program counts the number of files in the current directory, minus the number of lines in those files containing something matching /<title>([^<]+)/i 00:19:37 <lament> oh! useful. 00:20:02 <oerjan> i'm sure someone has needed it at some point, since it was invented :) 00:20:24 <lament> not invented, discovered! 00:20:48 <slereah__> You don't write programs that you need to post them on the esowiki 00:21:17 <oerjan> slereah__: no parse 00:21:26 <oklopol> ditto 00:22:03 <slereah__> Wut? 00:22:25 <lament> oerjan: imagine somebody looking with a telescope into a vast universe of perl one-liners. "Hey! That one could be useful for something, one day! Let's write it down!" 00:22:32 <oerjan> slereah__: your sentence is hard to get the meaning of, and possibly ungrammatical 00:22:51 <slereah__> Program that you actually need XOR program that you post on the esowiki 00:23:06 <slereah__> Well, forgot the turnstile at the beginning of the sentence. 00:23:35 <oerjan> turnstile? is may client censoring characters i wonder 00:23:52 * oerjan brings up the logs 00:24:42 <oerjan> hm no, still incomprehensible in proper unicode 00:25:37 <oerjan> lament: sounds like Erdos's big book 00:25:50 <lament> erdos had a book? 00:26:12 <oerjan> no he had a metaphor of a Big Book that contained all interesting mathematics 00:26:48 <oerjan> "God has the Big Book, the beautiful proofs of mathematical theorems are listed here." . Paul Erdos 00:27:41 <oerjan> now for the Perl book we might want to ask the competition instead. 00:28:09 <SimonRC> That reminds me of the reasoning that people should be able to copyright numbers. 00:28:20 <SimonRC> large ones with no easy pattern, at least 00:28:37 <SimonRC> imagine a huge pile of sand... 00:29:08 <SimonRC> on one grain of that sand is enscribed a novel that will sell 100,000 copies, if published 00:29:34 <SimonRC> if you find that grain of sand and publish the novel, you should have the right to the money 00:30:07 <SimonRC> because though you didn't create it, you did a hell of a lot of work and society benefited from it 00:30:23 <SimonRC> the analogy with copyrighting the numbers that represent movies etc should be obvious 00:30:48 <lament> that's not a good argument for copyrighting. That's a good argument for _some_ form of compensation. 00:30:48 <oklopol> sure, but it was fairly obvious without the analogy too :) 00:30:59 <oklopol> it's just a number can represent anything 00:31:06 <SimonRC> lament: yes 00:31:20 <oklopol> this is why we always simultaneously copyright the way in which to interpret the number 00:31:41 <SimonRC> huh? 00:32:03 <oklopol> you can have an infinite number of numbers representing a certain book 00:32:14 <SimonRC> ah, ok 00:32:41 <slereah__> Heh. That reminds me. 00:32:57 <slereah__> I once saw one of those IQ-test type of question 00:33:09 <slereah__> With the following number of a sequence. 00:33:18 <slereah__> I then thought "This is fucking stupid". 00:33:30 <slereah__> And found a handful of numbers that fitted. 00:33:59 <SimonRC> indeed 00:34:22 <SimonRC> with polynomial curves, you can make any next number fit 00:34:39 <oerjan> A given IQ-test only works within a range of IQs i think. you mustn't be so smart as to overanalyze it... 00:34:51 <slereah__> The following number of <1,4,9,16> was then 27, 90, 27 again, 31, 17, 81, 20.25 00:35:01 <slereah__> Also "any number", "any set" 00:35:03 <slereah__> And 25. 00:35:50 <slereah__> The solutions were the following : http://paste-it.net/7475 00:35:59 <oerjan> now that is rather silly. 25 _is_ the obvious answer. 00:36:57 <slereah__> I was rather amused that p(n) + f(n-1) fitted the description :D 00:37:44 * oklopol is not 00:42:24 <oklopol> Not just toy programs have been written in False, the list of programs in the distribution includes various useful convertion utilities, a compression program, Life, an expression evaluator, a module ripper, queens, tic-tac-toe, a html-table generator, and, probably the biggest False program ever, a complete working BreakOut clone. 00:42:28 <oklopol> breakout :o 00:42:50 <oklopol> what are these people... 00:42:58 <oklopol> i should make something fun too 00:43:10 <slereah__> A party? 00:43:33 <SimonRC> Does false have anything that can model a TM tape? 00:44:27 <SimonRC> I thought it only had 26 variables and the stack 00:44:44 <SimonRC> though you can peek arbitrarily far down the stack, that isn't very nice. 00:44:44 <vixey`> I finished a Prolog interpreter in Scheme 00:44:52 <vixey`> anyone want it? 00:45:08 <slereah__> Sure, why not 00:45:14 <vixey`> http://paste.lisp.org/display/57253,6/raw 00:45:47 * vixey` failed at coding a WAM a couple times.. :( 00:47:13 <SimonRC> vixey`: "WAM"? 00:48:00 <vixey`> that's the typical VM people compile Prolog, the first Prolog compiler was VAM based 00:48:03 <vixey`> oops WAM 00:48:08 <vixey`> VAM is a vastly different beast 00:48:45 <SimonRC> ok 00:48:47 <vixey`> compile Prolog to* 00:49:08 <vixey`> this code is really slow for making magic squares :/ 00:49:36 <AnMaster> oklopol, make breakout in befunge! 00:49:59 <SimonRC> befunge lacks non-blocking input 00:50:02 <vixey`> you can actually do interactive realtime graphic stuff with befunge? 00:53:15 <AnMaster> vixey`, sure 00:53:21 <AnMaster> vixey`, use a fingerprint 00:53:34 <AnMaster> vixey`, there is one for ncurses 00:53:37 <AnMaster> should work well 00:54:50 <AnMaster> SimonRC, so with NCRS fingerprint you get non-blocking indeed :D 00:55:03 <AnMaster> SimonRC, and clients may have that anyway 00:55:09 <AnMaster> err 00:55:12 <AnMaster> interpreters 00:55:14 * AnMaster is tired 00:55:29 <AnMaster> look, 1y will tell you what kind of IO is used 00:55:44 <AnMaster> and NCRS will always be non-blocking 01:11:09 -!- BMeph has joined. 01:13:09 <SimonRC> BMeph: yo 01:13:32 <BMeph> SimonRC: Hey 01:35:11 -!- timotiis has quit ("leaving"). 02:01:45 * SimonRC goes 02:04:19 -!- vixey` has changed nick to vixey. 02:12:57 -!- jix has quit ("CommandQ"). 02:22:36 <vixey> an Algol implementation with the J operator would be cool 02:23:10 <vixey> has nobody implemented ISWIM yet? :S 02:24:38 <GreaseMonkey> " "90" "26* v 02:24:38 <GreaseMonkey> p < 02:24:55 <GreaseMonkey> ^ program to freeze fully-compliant befunge-98 interpreters 02:32:15 -!- puzzlet has joined. 03:30:00 -!- puzzlet has quit (Remote closed the connection). 03:30:05 -!- puzzlet has joined. 04:05:18 -!- Corun has quit ("This computer has gone to sleep"). 04:42:53 -!- olsner has joined. 05:36:24 <RodgerTheGreat> pikhq: http://www.nonlogic.org/dump/images/1206074168-preview4.png 05:42:10 <pikhq> :D 05:49:52 <oerjan> new page? 05:56:24 <RodgerTheGreat> possibly 05:57:01 <RodgerTheGreat> I'm thinking about going back and reorganizing the panel layouts a bit- I think the current format is a little too rigid and boring 05:57:16 <RodgerTheGreat> so, for now, all bets are off on page numbers 05:58:45 <RodgerTheGreat> anyway, goodnight folks 05:59:08 -!- RodgerTheGreat has quit. 07:03:09 -!- BMeph has quit ("calls it a night"). 07:10:05 -!- oerjan has quit ("leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:06:40 <Sgeo_> G'night all 08:07:13 -!- Sgeo_ has quit (Read error: 104 (Connection reset by peer)). 08:51:41 -!- lifthrasiir has joined. 09:21:02 -!- rutlov has joined. 09:29:02 -!- rutlov has left (?). 10:04:37 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 12:36:33 -!- timotiis has joined. 13:16:10 -!- Corun has joined. 13:23:24 -!- sebbu has joined. 13:40:40 -!- Taggard has joined. 14:04:55 -!- Taggard has left (?). 14:17:03 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 14:18:03 -!- bsmntbombdood has joined. 14:30:21 -!- jix has joined. 14:37:35 <Judofyr> AnMaster: Check out http://yr.judofyr.net now 14:37:40 <Judofyr> added some more data :) 14:40:17 -!- Corun has quit ("This computer has gone to sleep"). 14:47:20 * AnMaster tests 14:47:50 * AnMaster waits while browser is locked up for about 30 seconds after clicking add button 14:48:10 <AnMaster> Judofyr, apart from the slow speed it looks very nice 14:48:30 <AnMaster> Judofyr, my connection is 8 mbit down / 1 mbit up so it isn't that slow 14:48:30 <Judofyr> yeah, it sucks to bridge :( 14:48:44 <Judofyr> it's rather the connection to the server 14:48:46 <AnMaster> ADSL from Swedish Tele2 14:49:15 <Judofyr> you asks for data -> server fetches from api.yr.no -> server sends them to you -> you receive them 14:49:28 * Judofyr want cross-site Ajax! 14:49:32 <oklopol> Judofyr: the speech bubble goes under the "weather everywhere" title 14:49:44 <Judofyr> oklopol: I know 14:49:55 <oklopol> not that nice for us scandinavians 14:50:05 <Judofyr> yeah 14:50:08 <Judofyr> I'll fix it 14:50:44 * Judofyr loves Firebug 14:50:49 <AnMaster> Judofyr, what about google maps bit then? 14:51:13 <Judofyr> the maps shouldn't load slow, or that's not my fault 14:51:24 <AnMaster> Judofyr, odd btw, google maps fails to load some of the bits, there are some grey rectangles in misc places 14:51:34 <AnMaster> like one near the top and one just in the middle 14:51:42 <AnMaster> zooming in and then out again fixes it 14:51:48 <AnMaster> waiting a long time doesn't 14:51:58 <Judofyr> sometimes the map won't load in Safari 14:52:07 <AnMaster> Judofyr, not safari, konqueror 14:52:11 <Judofyr> zooming in and out again fixes that also 14:52:22 <AnMaster> Judofyr, it doesn't fix it always btw 14:52:26 <AnMaster> but often it does 14:52:36 <Judofyr> AnMaster: noted. just wanted to say my problems 14:52:49 <AnMaster> oh changing to sattelite mode helps all the time 14:53:11 <AnMaster> though the satellite data over Örebro area is crappy 14:53:41 <Judofyr> AnMaster: you're interested in Örebro :P 15:40:29 -!- vixey has quit ("Leaving"). 16:26:42 -!- puzzlet_ has joined. 16:27:27 -!- puzzlet has quit (Remote closed the connection). 16:46:53 <AnMaster> Judofyr, just random, and not too far away from where I live (I live out in the middle of nowhere though, but Örebro is the closest large city) 16:49:00 -!- ais523 has joined. 17:30:51 -!- Sgeo has joined. 18:00:03 <ais523> hmm... my entire terminal window is just full of PINGs, PONGs and Sgeo's join message 18:00:37 <ais523> anyone care to start a conversation? 18:02:46 -!- Hiato has joined. 18:03:12 <Hiato> Hello, world! ;) 18:03:28 <ais523> Hiato: hello! 18:03:43 <ais523> were you logreading, or was that just good timing? 18:03:55 <Hiato> good timing I suppose 18:04:02 <Hiato> no logs for me - yet :P 18:04:04 <Hiato> why? 18:04:21 <ais523> I had got bored of a terminal-full of PINGs and PONGs and asked someone to say something 18:04:49 <Hiato> oh, lol. Well then, fate has it's means :P 18:05:05 -!- slereah_ has joined. 18:05:18 <ais523> hello slereah_ 18:05:28 <Hiato> ditto 18:05:55 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 18:06:02 <ais523> suppose you have a certain number of people inside and outside an IRC channel 18:06:18 <ais523> each of which likes each other person a certain amount, and has a certain boredness 18:06:19 <Hiato> (on a side note, any opinions http://rafb.net/p/5Uodtk56.html ) 18:06:52 <ais523> challenge: given that bored people are more likely to say hello, and people are more likely to say hello to people they like, and people join and part at random, create an esolang 18:07:07 <Sgeo> Delayed, but if I started the conversation, you know what it would be about.. 18:07:08 <Sgeo> lol 18:08:05 <Hiato> heh, now there's an idea. Not sure how one could influence branching/looping if people (variables?) leave and appear at random though 18:08:23 <ais523> Sgeo: actually, I've been meaning to ask you about that 18:08:31 <Sgeo> ais523, oh? 18:08:36 <ais523> is there any way in PSOX to read from multiple input sources at once? 18:08:50 <Sgeo> ais523, you could switch between file descriptors 18:08:54 <ais523> i.e. read user input and a socket simulataneously, and get the first message from either? 18:09:00 <Sgeo> oh 18:09:08 <Sgeo> currently, no 18:09:11 <ais523> Sgeo: that would require knowing which one would be next to send a message 18:09:28 <ais523> the lack of ability to do that is holding up my INTERCAL IRC client 18:09:31 -!- Corun has joined. 18:10:01 <Sgeo> ais523, you're writing an INTERCAL IRC client w/ PSOX? 18:10:02 <Sgeo> Cool! 18:10:59 <ais523> Hiato: I've looked at your paste, it looks interesting but I don't really understand the syntax 18:11:26 <ais523> Sgeo: I was thinking of implementing the CLC-INTERCAL syscall library using C-INTERCAL's ffi 18:11:48 <Sgeo> ais523, so not PSOX, you're wondering if PSOX solved a problem? 18:12:03 <Hiato> heh, probably entirely my fault, I didn't really intend this so much as a publication, but an internal doccy for my own benefits. Would you like me to explain, or would you prefer to leave it as a mystery? :P 18:12:33 <ais523> Hiato: an explanation would be interesting; Sgeo: I was wondering how PSOX handled the situation 18:12:55 <ais523> Sgeo: because it's quite a complicated thing to do in many languages 18:13:03 <ais523> the relevant syscall is 'select' 18:13:16 <ais523> in POSIX 18:13:55 <Sgeo> Well, all I know is that Windows select() can only use things from Winsock 18:14:10 <Sgeo> So incorporating select() into PSOX would be problematic 18:14:20 <Sgeo> (The only reason I know that is from the Python docs) 18:14:39 <ais523> yes, Windows isn't very good at selecting by default 18:14:58 <ais523> that's actually a big problem, though, because some way to select is necessary to write an IRC client 18:15:15 <Hiato> Well, lets see. Look at every chunk of code as a function. It all returns a value of some kind or another. Whether the value is stored, where it is stored and for how long is entirely up to the user. the basic structure is this {Operation} {Variable/Constant} ( {arguments/code} ) {imperative/questionative/no signal} 18:15:35 <ais523> (it's either that, or using a second IRC username to repeatedly ping the one you're logged in on, thus ensuring that the first one gets data at an acceptable rate, and using a separate process for input from the user) 18:15:57 <Hiato> so, the various operations are listed in the file, then, the variable is a variable of the form {lower case letter}{number} eg z7643 or a2 18:16:22 <ais523> (actually, I just thought of a simpler way to select, which is to use three processes, two in input loops that communicate to the third asynchronously) 18:16:22 <Hiato> finally, the arguments may be a list of variables seperated by a comma, or more code in the same form 18:16:38 <Sgeo> ais523, I suppose asynchnorous reading would also work? 18:16:43 <Sgeo> Maybe something for PSOX 1.1 ... 18:16:59 <ais523> which leads to the nested pattern that things like + and - create? 18:17:05 <Hiato> yep 18:17:12 <Hiato> (if that was aimed at me) 18:17:14 <ais523> Sgeo: that works but uses up more CPU time than it ought to 18:17:27 <ais523> Hiato: it was 18:17:51 <ais523> having two conversations in the same channel can be confusing at times, though 18:18:04 <ais523> especially if other people say something immediately after you've made a typo 18:18:19 <ais523> I have to get better at touch-typing to do this properly... 18:18:31 <SimonRC> hi 18:18:33 <Hiato> thus, we can assign a10 to 65 through the following 18:18:34 <Hiato> : 65 (a1) 18:18:34 <Hiato> that tells us to use the assignment operator, and apply 65 to a1 using it. This does infact return something (nil) but it is un-important so we can disregard it 18:18:50 <Sgeo> I don't touch type 18:19:06 <Sgeo> I used to hunt-n-peck, but I've done that for so many years that it's now know-and-peck 18:19:07 <Hiato> meh, I made a typo too ;) 18:19:09 <ais523> hello SimonRC 18:19:15 <SimonRC> Sgeo: yes 18:19:46 <ais523> Hiato: many languages with assignment statements return the value that was assigned 18:19:56 <ais523> s/assignment statements/assignment expressions/ 18:20:25 <ais523> Perl is slightly different, and returns the variable that was assigned to 18:20:38 <ais523> it comes to much the same thing, except in cases like ($a=4)++ 18:20:42 <SimonRC> so an assignment is an lvalue? 18:20:57 <ais523> SimonRC: yes 18:21:09 <Hiato> hrmm... yeah, something worth considering, but It doesn't really matter because you can do multiple assignments using lists. :64(a1,a2,a3) in place of grabbing the returned value like this- :(:65(a1))(a2) etc 18:21:32 <ais523> one of the most famous lines of C code went like this: 18:21:43 <SimonRC> op, value, variable is a funny order to put it in 18:21:45 <ais523> while(*dest++=*src++); 18:21:52 <SimonRC> Sgeo: yup 18:21:54 <SimonRC> oops 18:21:57 <SimonRC> ais523: yup 18:22:07 <ais523> that's a one-liner strcpy implementation 18:22:15 <Hiato> SimonRC: yeah, but it's nice and different for a change ;) 18:22:17 <ais523> which relies on the return value of = 18:22:30 <SimonRC> Hiato: it's a bit forth-like 18:22:39 <SimonRC> Forth has value, var, op 18:23:05 <Hiato> well, I'm afraid you have me there, I've never really heard of Forth before (well, I've *heard* , but that's as far as it goes) 18:23:29 <ais523> when concatenative languages have variables, they generally go value, [var], op 18:23:35 <Hiato> asi523: I should just probably nod :P 18:23:43 <Hiato> about the earleir c line 18:24:00 <SimonRC> no, you must understand 18:24:02 <ais523> it isn't that difficult to understand 18:24:15 -!- Judofyr has quit. 18:24:39 <ais523> *ptr++ returns the memory location that ptr points to, and then increments ptr 18:24:51 <Hiato> oooh, aaah 18:24:56 * Hiato sees the light 18:25:05 <Hiato> ingenious :) 18:25:11 <SimonRC> specifically, ++ increments pointer after evaluation but before the next sequence point 18:26:13 <ais523> ah, the whole 'sequence points' thing, which fugged up comp.lang.c for months despite being in the FAQ 18:26:49 <ais523> people kept on asking about the infamous statement i=i++; (which doesn't actually do anything defined, because you're trying to assign two different values to i simultaneously) 18:27:19 <SimonRC> indeed 18:27:51 <SimonRC> or things like (i++ * i++) 18:27:52 <Hiato> well, can't it be broken down recursively. i = i + 1 forever onwards ? 18:28:12 <ais523> it's defined to be undefined behaviour in the C standard 18:28:25 <SimonRC> I found a good way of showing the ambiguity: 18:28:29 <ais523> which means that a C compiler can do anything it likes, even if it doesn't make logical sense, on encountering the statement 18:28:52 <Hiato> oh, I see. Hrmm... interesting that. Predefined ambiguity ;) 18:28:53 <ais523> most compilers either do nothing or add 1 to i 18:29:03 <oklopol> hmm, can it actually decide to do *neither*? 18:29:07 <oklopol> that i didn't know 18:29:15 <ais523> oklopol: yes 18:29:19 <oklopol> Hiato: most languages have that 18:29:28 <SimonRC> for example, if the compiler keeps a flag on each variable that is set if the variable must be incremented after the current expression, it would be expected to only increment once in the expression (i++ * i++) 18:29:32 <ais523> the archetypal example is 'demons flying out of the user's nose' 18:29:42 <SimonRC> ais523: indeed 18:29:42 <ais523> no known compiler does that, but it's allowed by the Standard 18:29:45 <Hiato> really? Shows where I've been (glances over shoulder at rock) 18:30:05 <oklopol> :) 18:30:12 <SimonRC> ISTR that for a while gcc would launch nethack if it encountered an unknown #pragma, too 18:30:25 <ais523> it was any pragma, if I remember 18:30:30 <SimonRC> ok 18:30:38 <ais523> because #pragma can do anything as long as the implementation documents it 18:30:42 <SimonRC> indeed 18:30:51 <ais523> but I think nethack was something like third in the list of things it tried to do 18:31:05 <ais523> it first attempted to start Emacs running a Towers of Hanoi simulation 18:31:08 <SimonRC> heh 18:31:26 <Hiato> awesome :) 18:31:34 <ais523> presumably the nethack was a fallback for if Emacs wasn't installed 18:32:11 <SimonRC> lol: http://www.galactanet.com/comic/view.php?strip=307 18:32:19 <SimonRC> (a good comics strip generally 18:32:20 <SimonRC> ) 18:32:36 <ais523> actually, I just looked it up, it was nethack, then rogue, then towers of Hanoi on Emacs 18:32:57 <ais523> and if all of those failed, it printed "You are in a maze of twisty compiler features, all different." 18:33:26 <Hiato> awesome comic there :) 18:36:53 <ais523> hmm... does anyone here know if it's possible to open a write handle to a socket with one process, and a read to the same socket with a different process 18:37:09 <ais523> as in, connecting to freenode on port 6667, but having one process writing to it and another process reading? 18:37:36 <oklopol> who here did J? 18:37:46 <oklopol> or was it faxathisia 18:38:38 <ais523> ehird was talking about it a lot, but I'm not sure whether they used it 18:39:07 <oklopol> doubt they did 18:39:27 * ais523 is inclined to agree 18:39:42 <oklopol> i recall it was mostly K they were interested in 18:39:54 <oklopol> am i supposed to say "were" or " they was" :P 18:40:09 <oklopol> i like the latter <3 18:40:16 * ais523 usually says 'they were' along the lines of 'you were' 18:40:36 <ais523> but I prefer 'themself' in the singular context 18:40:52 <oklopol> yarrr 18:43:18 <oklopol> the two problems with me learning new languages are that i always have to read all the documentation before i even start considering using the language, and that i usually never learn to use the interp/compiler 18:43:42 <oklopol> god there's a lot of foreigns 18:44:44 <ais523> oklopol: if you read all the C-INTERCAL documentation, you would know how to use the compiler 18:44:50 <ais523> I spent ages writing it 18:45:12 <ais523> it's decent as a reference source as well, although not as good at being a tutorial 18:47:56 <oklopol> i'll put intercal on my list of implementing-something-in 18:49:43 <ais523> there's already Unlambda and Befunge-93 interps in INTERCAL 18:51:09 <oklopol> no brainfuck? 18:51:36 <ais523> suprisingly, no 18:51:59 <ais523> you have an unlimited number of stacks available, so a brainfuck interp shouldn't be very difficult 18:52:30 <oklopol> i'll make on as my test project, well, try to make on at least 18:52:37 <oklopol> *one 18:52:49 <ais523> dealing with the I/O model is likely to be one of the harder parts 18:53:21 <ais523> by the way, http://intercal.freeshell.org has the manuals for CLC-INTERCAL and C-INTERCAL, and downloads for the implementations 18:53:37 <oklopol> this isn't intercal day, this is jayday 18:53:49 <ais523> there are a lot of other references, but they're mostly out of date 18:54:07 * ais523 goes to write an IRC bot in Thutu 19:02:58 -!- ais523 has quit ("for testing, will be back soon"). 19:03:25 -!- ais523 has joined. 19:22:54 -!- Tritonio_ has joined. 19:26:52 -!- Hiato has quit (Read error: 110 (Connection timed out)). 19:37:57 <ais523> grr... why is it so hard to connect a program's stderr and stdout to telnet using shellscript? 19:39:26 -!- Corun has quit ("This computer has gone to sleep"). 19:51:57 -!- thutubot has joined. 19:52:11 <ais523> \hello 19:52:28 <Tritonio_> hi 19:52:39 <ais523> hmm, it doesn't work 19:52:42 <Tritonio_> why is it hard? 19:52:59 <ais523> partly because I'm having problems linking the bot to freenode in both directions 19:53:10 <ais523> and also I've probably made a mistake in one of my regexps 19:53:20 <ais523> \quit 19:53:44 -!- thutubot has quit (Remote closed the connection). 19:54:33 <Tritonio_> do you use a named pipe? 19:55:11 <ais523> I tried that, but it didn't work for some reason 19:55:33 <ais523> the info went down the named pipe OK, but perl wasn't reading telnet's output for some unknown reason, not even when I piped them together directly 19:56:01 <ais523> maybe telnet was sending control codes on stdout that shouldn't have been involved, or something like that 19:56:03 <Tritonio_> O_o 19:56:09 <ais523> or maybe it just wasn't flushing its output 19:56:31 <Tritonio_> then maybe you should rewrite e telnet app... ;-) 19:58:03 -!- Tritonio_ has quit (Remote closed the connection). 20:07:37 <oklopol> i love j already 20:08:08 <ais523> neat, isn't it? 20:10:20 -!- puzzlet has joined. 20:13:07 <oklopol> fun stuff, although oklotalk still would own its ass if only i managed to write an efficient interp for it 20:13:16 <oklopol> at least i think it would 20:13:51 <oklopol> oklotalk is very much like J, K and APL, but with pattern matching and OOP if you want the use them 20:14:09 <oklopol> well, not exactly OOP... message passing 20:14:58 <oklopol> just so general you can easily write functions for inheritance and suh 20:14:59 <oklopol> *such 20:15:09 <ais523> recursive regexps need a proper sort of replace ability 20:15:22 <oklopol> hmm? 20:15:26 <oklopol> replace? 20:15:57 <oklopol> recursive here means you can do x = (.*); y = x|a x c? and such? 20:16:00 <oklopol> or just plain recursion 20:16:04 <oklopol> i mean 20:16:08 <oklopol> what do you mean? :) 20:16:36 <oklopol> my example was an example of just being able to call other regexes, whereas recursion would just be calling the current regex 20:16:51 <oklopol> probably didn't come through 20:17:05 <oklopol> eh 20:17:22 <oklopol> my example was an example of being able to call any regex from inside a regex 20:17:30 <ais523> a recursive regex lets you use part of the regex inside itself 20:17:41 <oklopol> what does that mean 20:17:43 <oklopol> part of it? 20:18:22 <oklopol> like, you can tag a certain place in its parse tree and reuse it, like reg = X@(a | b) | (X)+ 20:18:29 <oklopol> :D 20:18:34 <ais523> e.g. a regex to match nested angle brackets could be (|<$1>$1) 20:19:25 <ais523> that is, a string consists of nested angle brackets if either it's empty, or it's a string consisting of angle brackets surrounding a string consisting of nested angle brackets followed by a string consisting of nested angle brackets 20:19:27 <oklopol> $1 meaning what exactly 20:20:15 <oklopol> oh, $1 means the whole thing 20:20:38 <oklopol> it's just $1 should mean the *matched* thing, not the actual regex 20:21:03 <oklopol> so... whatever it matched, we'll call that M, would have to be of the form M = <M> 20:21:10 <oklopol> which is impossible, unless the string is infinite 20:21:21 <oklopol> i may be totally clueless here, just wondering 20:21:26 <ais523> in Cyclexa (my work-in-progress regex language) 20:21:33 <ais523> $1 means the code of group 1 20:21:41 <oklopol> ah 20:21:41 <ais523> whereas \1 means the text matched by group 1 20:21:46 <oklopol> oh, right, i see 20:22:08 <ais523> so (|<$1>$1) 20:22:13 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)). 20:22:19 <oklopol> can it have infinite strings and (|<\1>\1)? :) 20:22:42 <oklopol> haha 20:22:49 <oklopol> \w 20:22:50 <ais523> I'm not entirely sure what happens if you put \1 inside group 1 itslef 20:22:57 <oklopol> for cardinals 20:22:59 <oklopol> like 20:23:00 <oklopol> omega 20:23:02 <oklopol> whaddyacallit 20:23:29 -!- Corun has joined. 20:23:46 <oklopol> well, that should match the string infinity*"<" ++ infinity*">", for instance 20:24:20 <ais523> sorry, could you write the original example again? I got slightly confused due to the way my low-tech IRC client works 20:24:34 <oklopol> (|<$1>$1) 20:24:36 <oklopol> this one? 20:24:42 <ais523> yes 20:25:02 <ais523> it's equivalent to (|<(|<$2>$2)>(|<$3>$3)) 20:25:06 <ais523> and so on 20:25:23 <oklopol> yes 20:25:34 <ais523> now, one of Cyclexa's features is that it's possible to match antitext 20:25:43 <oklopol> meaning? 20:25:51 <ais523> so instead of removing text from the input string, you add text to the input string 20:26:08 <ais523> this, and one extra feature, allow Cyclexa to be TC with an empty input string 20:26:54 <oklopol> probably even with just one regex 20:27:06 <ais523> a program is just one regex 20:27:25 <oklopol> ah okay 20:27:48 <oklopol> can you do something like "don't match this at all" 20:27:49 <oklopol> like a nop 20:27:55 <ais523> the syntax for antitext is, e.g. (abc)^ adds (abc) to the group 20:28:01 <oklopol> i mean, you could make regex variables like that, quite neatly 20:28:04 <ais523> probably, it depends on exactly what you want 20:28:07 <oklopol> like 20:28:22 <ais523> (abc)^+ does nothing to the input string 20:28:26 <oklopol> that you could have all your regexps in $n's 20:28:34 <oklopol> without having to declare them as you use the 20:28:36 <oklopol> "declare" 20:28:59 <ais523> for predeclaring groups, doing something like (''(group)(group)(group))? would do 20:29:11 <ais523> '' is like fail in Prolog; it never matches anything 20:29:12 <oklopol> ''? 20:29:17 <oklopol> ah 20:29:22 <oklopol> why not _ 20:29:24 <oklopol> hmm 20:29:29 <oklopol> not sure how that's good. 20:29:39 <oklopol> just felt it was a failure character :P 20:29:40 <ais523> because it's an empty character class 20:29:52 <ais523> [abc] becomes 'abc' in Cyclexa 20:30:14 <ais523> but the apostrophes are cleverer than []; 'ab+c' matches a, c, or any number of bs 20:30:14 <oklopol> that's actually pretty neat, i always hated that in regexes 20:30:30 <oklopol> having nestable characters for an unnestable group 20:30:55 <ais523> 'a(bc)d' matches a, d, or bc 20:31:08 <ais523> and so is equivalent to (a|bc|d) 20:31:17 <oklopol> yep 20:31:24 <ais523> in fact, (??a|bc|d) because the group shouldn't be given a group number (that's what the ?? does) 20:31:43 <ais523> I overload a lot of characters, particularly ^$+*?\ 20:31:54 <ais523> they can mean many different things in different contexts 20:32:04 <oklopol> does (??a (b c)) still give the inner group a number? 20:32:08 <ais523> because I don't like character sequences that have no sensible meaning 20:32:11 <ais523> yes 20:32:28 <ais523> you can also give a group a particular number like (?4this) 20:32:37 <oklopol> have ?!?!?!!?!? for nor giving nested ()'s group number either 20:32:39 <oklopol> *not 20:32:45 <oklopol> *numbers 20:33:01 <ais523> maybe that would be (?^nonumber(nonumbereither)) 20:33:14 <ais523> that would be more orthogonal, because the ^ has a meaning of 'not' in many group modifiers 20:33:21 <ais523> and ? sets a group number 20:33:48 <oklopol> yes, also, ^ is one of the characters that have a "nesting" feeling in them, i mean, in my head 20:34:06 <oklopol> usually exactly that of unnesting stuff 20:34:27 <ais523> one thing that amuses me is that the ^ and $ are implemented completely differently to each other in the Cyclexa regex ^abc$ 20:34:28 <oklopol> well, because of how it looks, and the fact it does that in oklotalk, now that come tpo i think of it :) 20:34:30 <oklopol> *to 20:34:41 <ais523> the $ means 'only match at end of string' in this context 20:34:58 <ais523> and the ^ means 'don't put an implied .* at the start of the program' in this context 20:35:28 <oklopol> you switched their meanings? 20:36:04 <ais523> no, a ^ at the start of a regex still anchors it to the start of the string, and a $ at the end still anchors it to the end of the string 20:36:13 <ais523> they're just implemented in really different ways 20:36:32 <ais523> because Cyclexa basically treats a string as a stack of characters, whose top is at the start of the string 20:38:00 <ais523> http://pastebin.ca/951922 20:38:13 <ais523> what I've done so far on the Cyclexa spec and implementation 20:38:29 <ais523> but the implementation isn't done enough to even be able to interpret a single program 20:38:38 <ais523> so far it's just the parser, which was hard enough to do 20:40:26 <oklopol> is C<...> for cyclexa? 20:40:29 <oklopol> i mean 20:40:41 <oklopol> is that your "cyclexa regex" bracketing 20:41:01 <ais523> because strings of +*?^ often tokenize in many different ways 20:41:01 <ais523> and there are precedence rules to say which way is correct 20:41:01 <ais523> it's POD 20:41:01 <oklopol> i usually ask before reading the next line explaining it. 20:41:05 <ais523> a markup language normally used to document Perl programs 20:41:16 <ais523> it's equivalent to <tt>...</tt> in HTML 20:41:28 <ais523> so basically just marking the code as code 20:41:38 <oklopol> i c 20:42:26 <oklopol> # 20:42:26 <oklopol> In some cases, a single Cyclexa expression can completely 20:42:26 <oklopol> # 20:42:26 <oklopol> translate one language to another, although this is unusual. 20:42:33 <oklopol> what prevents it? 20:42:55 <ais523> the translation is often too hard to manage by regex alone 20:43:04 <ais523> for instance, imagine compiling BASIC into C 20:43:10 <oklopol> ah, you mean, in practise. 20:43:20 <ais523> you'd have to figure out which type each variable was, and add declarations 20:43:49 <oklopol> well yeah, but you *can* do it for any language, right? 20:44:02 <ais523> well, Cyclexa is TC 20:44:16 <oklopol> that doesn't mean you can do any translation, necessarily 20:44:21 <oklopol> but you can? 20:44:21 <ais523> so in theory it can do any compilation from one language to another that's theoretically possible 20:44:30 <ais523> some translations aren't possible 20:44:41 <ais523> such as TwoDucks -> Malbolge, for instance 20:44:58 <slereah_> TIME TRAVELLING MALBOLGE 20:45:01 <slereah_> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH 20:45:23 <oklopol> i meant, can you do any translation you can do in, say, perl? 20:45:48 <oklopol> tcness doesn't exactly say you can, it comes to questions about io 20:46:05 <oklopol> i mean 20:46:12 <ais523> it's BF-complete as well, for that matter 20:46:15 <oklopol> cyclexa programs take a string and return a string, basically? 20:46:21 <ais523> yes 20:46:25 <oklopol> hmm, yeah, that's a better way to put it 20:46:34 <oklopol> i always forget we already have that concept too 20:46:35 <oklopol> :P 20:46:56 <ais523> there's an input command 20:47:10 <ais523> there's going to be some way to do output too, but I haven't yet figured out the details 20:47:52 <oklopol> btw, is there a purely functional language, that does io by having two infinite lists, popping heads from which, and putting heads to which, perform input and output 20:48:02 <oklopol> so that you'd carry those around and at recursion, do io 20:48:07 <oklopol> perfectly pure 20:48:11 <oklopol> and doesn't need monads 20:48:18 <ais523> that's basically a monad that you've defined there 20:48:22 <slereah_> Heh. 20:48:25 <oklopol> :P 20:48:27 <ais523> just with an explicit monad chain 20:48:28 <slereah_> Zing! 20:48:30 <oklopol> i see 20:48:31 <oklopol> isee 20:48:51 <slereah_> All you need to do for a purely functional language is to print the expression at every step! 20:48:59 <slereah_> Then you only have to read the expression! 20:49:07 <slereah_> And possibly understand it. 20:49:07 <oklopol> ais523: i see no explicit infinite input list in haskell. 20:49:23 <ais523> oklopol: it's the monad chain for the IO monad 20:49:29 <oklopol> hmm 20:49:31 <oklopol> right 20:49:46 <oklopol> i hate this world 20:49:50 <ais523> the monad chain is hidden by monads, though, because otherwise you could perform IO twice on an earlier monad chain, which doesn't make a whole lot of sense 20:49:59 <oklopol> right. 20:50:07 <oklopol> that's exactly what i was thinking for the lists 20:50:14 <oklopol> hiding them exactly like that 20:50:21 <oklopol> "you could've invented monads" 20:50:54 <ais523> Underlambda has only one monad 20:51:04 <ais523> whose chain is the stack that all commands operate on 20:51:16 <ais523> so despite being purely functional, all commands run in a strict order 20:53:44 <oklopol> wow, i just realized that's a real fuckload of text :P 20:53:55 <oklopol> i'll read cyclexa later... 20:55:07 <ais523> anyone who wants to help me implement it, feel free; it's really difficult! 20:55:33 * oklopol makes that his first J project! 20:55:35 <oklopol> ...or not 21:00:03 <oklopol> hmm 21:00:17 <oklopol> i should make a turing-complete Tree using a new construct called "seed" 21:00:35 <ais523> how does it work? 21:00:39 <oklopol> dunno :P 21:00:48 <oklopol> the stack is a bit non-tree 21:00:56 <oklopol> i want something like a worm holding the stack... 21:01:01 <oklopol> :D 21:01:27 <oklopol> i like languages with real life origin in syntax to have real life semantics too, as much as possible 21:02:42 <oklopol> Receives two characters as input and outputs the greater of the two inputs 21:02:42 <oklopol> ^ 21:02:42 <oklopol> # | 21:02:42 <oklopol> \<| ~~ 21:02:42 <oklopol> |/ 21:02:43 <oklopol> v | 21:02:45 <oklopol> \| v 21:02:47 <oklopol> |/ 21:02:49 <oklopol> i don't get this 21:02:54 <oklopol> first v -> stack = A 21:02:58 <oklopol> second v -> stack = A B 21:03:04 <oklopol> ~ -> stack = A B B 21:03:11 <oklopol> ~ -> stack = A B B B 21:03:19 <oklopol> then <, which is false 21:03:23 <oklopol> so outputs B 21:03:39 <ais523> that reminds me slightly of HOMESPRING 21:04:15 <oklopol> tell me how that works, if you have the 30 seconds 21:04:26 <oklopol> or is it fucked up? 21:04:38 <ais523> how HOMESPRING works? 21:04:56 <oklopol> errrrrrrr i mean, how that *program* works 21:05:01 <oklopol> http://esoteric.voxelperfect.net/wiki/Tree 21:05:10 <ais523> I don't know either 21:05:45 <oklopol> Tslil? interesting name 21:06:31 <ais523> oklopol: ? 21:06:39 <oklopol> anyway, my seed idea was something like dropping seeds that grow a similar tree, and start new execution 21:07:04 <oklopol> possibly not the exact same tree, you'd have to do something real clever to keep semantics intact :P 21:07:12 <oklopol> ais523: creator of the lang = tslil 21:07:48 <ais523> ok 21:33:41 -!- boily has joined. 21:34:21 <ais523> hello boily 21:37:04 <boily> hello ais523 21:38:16 * ais523 is saying hello to people when they join in the hope of resparking a conversation 21:40:49 <boily> hmm... uh... how are you? (i know it's not much for a conversation, but it's a start!) 21:40:59 <slereah_> Y HULO THAR 21:40:59 <ais523> fine, but a little tired 21:41:11 <slereah_> My name is Epic Fail Guy, and I am here to ruin your esolang. 21:41:31 <ais523> sleareah_: I'd be interested to see how you would go about doing that 21:41:52 * ais523 finished an 8-month project on Wednesday 21:42:10 <ais523> so now I have time to waste doing things like using telnet as an IRC client 21:42:20 <boily> eh? 21:43:24 <ais523> I'm typing in IRC commands by hand 21:43:48 <ais523> it's one reason why I'm anxious to start a conversation, because repeatedly PONGing is boring 21:44:03 <oklopol> http://jsoftware.com/help/dictionary/dccapdot.htm okay J owns. 21:44:51 <ais523> wow, there are a lot of irssi users here 21:45:06 <boily> conversation starter: i was recently thinking about an assembly-based esolang. 21:45:24 <ais523> assembly's reasonably esoteric as it is, so that might be a good starting point 21:45:34 <ais523> most OISCs can be seen as assembly-based esolangs 21:48:20 <boily> about your remark that assembly is obfuscated enough by itself, you are right. 21:49:03 <ais523> I like some of the DSP assemblies that have commands that do crazily specific things 21:49:10 <boily> such as? 21:49:35 * boily hates 8086 assembly, and my homeworks. 21:49:35 -!- Deformati has changed nick to Deformative. 21:49:45 <oklopol> add ax to bx, when ax = 4, bx = 2 and cx < 100 21:49:47 -!- GreaseMonkey has joined. 21:49:58 <oklopol> otherwise divide 5/8, and lose result 21:50:00 <ais523> One I used had a command to multiply two registers and add the result to an accumulator, load another two numbers from memory into those registers, increment the pointers that said which address to load those two numbers from, and also store another accumulator into memory elsewhere 21:50:13 <oklopol> :D 21:50:16 <oklopol> lol awesome 21:50:17 <boily> good one! 21:50:22 <ais523> oklopol: what a pointless task 21:50:30 <slereah_> In what is it used? 21:50:36 <oklopol> ais523: the one i said? 21:50:58 <ais523> oh, and if adding to the acccumulator gave a value above 4294967295, it saturated at that value 21:51:05 <ais523> oklopol: yes 21:51:21 <ais523> slereah_: it's useful in doing a Fast Fourier Transform 21:51:30 <ais523> also in taking the product of two vectors 21:52:54 <ais523> it had lots of variants too; for instance, one subtracted the two numbers being loaded from memory and stored their difference in a register, rather than storing both of them 21:53:07 <ais523> that was useful for calculating the length of a vector 21:53:33 <ais523> the instruction looked kind of ridiculous in the assembly code because it took so many arguments 21:53:55 <ais523> oh, and it wasn't restricted to just incrementing the pointers; it could add or subtract 1, 2, or 3 21:55:19 <boily> bus time 21:55:21 <boily> bye! 21:55:22 -!- boily has quit ("WeeChat 0.2.6"). 21:59:50 -!- Tritonio_ has joined. 22:00:12 <ais523> hello Tritonio 22:16:32 -!- oerjan has joined. 22:17:37 <ais523> hello oerjan 22:17:46 <AnMaster> just found a very nice tool, helps you find holes in your structs due to alignment issues: http://git.kernel.org/?p=linux/kernel/git/acme/pahole.git;a=summary sadly it seems you have to use git, can't find it anywhere else 22:18:25 <AnMaster> ais523, ah you are? 22:18:26 <oerjan> hello 22:18:27 <AnMaster> ok 22:19:14 <ais523> I can't think of any sensible way to write an IRC client without the ability to select() 22:19:31 <slereah_> What about a crazy way? 22:19:32 <AnMaster> ais523, intercal lacks that? 22:19:34 <ais523> there's a method involving three processes and two usernames, but it isn't sensible 22:19:45 <AnMaster> ais523, why two usernames? 22:19:49 <ais523> it lacked even the ability to read its own output for several decades 22:20:39 <ais523> the crazy way involves one thread to interact with the user, one to read from the server and write things back, and one to repeatedly ping the thread that's writing to the server on a second username so that it writes data every now and then 22:20:53 <ais523> the repeated pinging prevents the need to select 22:20:57 <AnMaster> ais523, hah 22:21:35 <AnMaster> ais523, ok that is plain crazy, well that is also why I couldn't do a sane irc client in bash, but it is fully possible to do a bot in bash 22:22:01 <ais523> I agree; I tried to write a bot in Thutu, but it wasn't getting messages back from the server for some reason 22:22:19 <ais523> I'd used a named pipe to connect my program to telnet in a loop, but the communication only seemed to be one way 22:22:25 <AnMaster> one issue however remains, that to do periodic events I do read with timeout of 5 seconds, and then look for periodic events that should have happened the during the last 5 seconds 22:22:33 <ais523> either that, or telnet was sending control chars that confused Thutu 22:24:00 <ais523> did you get that problem in your bashbot? 22:27:22 <AnMaster> nop 22:28:09 <AnMaster> it can use: socat, gnutls-cli, netcat, openssl sclient, /dev/tcp (fake device built in into bash, selectable at compile time of bash) 22:28:18 <AnMaster> so called transport modules 22:28:21 <AnMaster> easy to add new ones 22:28:51 <ais523> ah, so you didn't use telnet 22:29:09 <AnMaster> it just defines a set of methods: "get list of supported features and check deps installed", connect, disconnect, get line, send line 22:29:10 <AnMaster> :) 22:29:35 <AnMaster> unlike normal envbot modules you can only load one transport module 22:29:46 <AnMaster> and not unload or reload at runtime 22:30:27 <AnMaster> ais523, :D 22:30:53 <AnMaster> envbot is very advanced, and has the potential of getting to the same level as, say, supybot 22:31:05 <AnMaster> apart from multiple networks 22:32:39 -!- pikhq has quit ("Leaveth"). 22:32:58 <ais523> I'll just have to add a select() syscall to INTERCAL 22:33:08 <ais523> but first I'll have to get the ffi working so I can implement it 22:34:00 -!- Judofyr has joined. 22:34:41 <AnMaster> ais523, what about poll? 22:35:07 <AnMaster> err, wait that just does one fd 22:35:18 <AnMaster> wouldn't help at all 22:35:29 <ais523> polling isn't really much use if you don't have the syscall for that either 22:35:41 <AnMaster> hah true 22:37:44 <AnMaster> ais523, what about doing async IO? 22:37:51 <AnMaster> aio_read/write/whatever 22:38:23 <ais523> or set the async flag on the file descriptor 22:38:36 <ais523> but the dearth of syscalls affects me again 22:38:45 <AnMaster> dearth? 22:38:51 <ais523> there are only something like 7 in CLC-INTERCAL, and I haven't implemented any in C-INTERCAL yet 22:38:57 <AnMaster> ais523, does that work on anything but linux, setting async flag I mean 22:39:01 <ais523> maybe I used the wrong word 22:39:09 <ais523> O_NONBLOCK is POSIX IIRC 22:44:41 -!- okofolor has joined. 22:44:56 <okofolor> rofl, switching back to linux is starting to feel like a good idea, my j interp crashed, took me like 5 minutes to get my computer running again :D 22:45:09 <okofolor> (on vista now) 22:45:51 -!- okofolor has changed nick to okopol. 22:45:57 -!- marshmallows has joined. 22:46:15 -!- oklopol has quit (Read error: 113 (No route to host)). 22:46:58 * oerjan picks up a stray 'l' from the floor. wonder who it belongs to? 22:47:23 <ais523> oerjan: any idea why there are stray lowercase letters on the floor? 22:47:36 <oerjan> i guess someone must have lost one, ais523 22:48:22 <oerjan> hm lais523, doesn't look like 22:48:33 <oerjan> *right 22:49:36 <AnMaster> http://rafb.net/p/gWAc2P69.html <-- interesting tool that pahole 22:49:48 <oerjan> and i don't think anyone called me loerjan since primary school or thereabouts 22:50:49 <ais523> AnMaster: what is that? it looks Befunge-related 22:51:16 <AnMaster> ais523, yes the struct is, but the output is from pahole, a tool that find holes in your structs due to alignment issues 22:51:30 <marshmallows> oh I wrote that 22:51:32 <AnMaster> developed by linux kernel people originally 22:51:38 <AnMaster> marshmallows, !? 22:51:40 <okopol> oerjan: could you hand that to me? 22:51:50 <okopol> or just insert it yourself 22:52:07 * oerjan gives okopol the 'l'. Be careful with it! 22:52:14 <okopol> yeah yeah, i've done this before 22:52:17 -!- okopol has changed nick to oklopol. 22:53:07 <oerjan> mind you, LanMaster sounds sorta cool 22:53:17 <oklopol> :P 22:53:22 <oerjan> but it was the wrong case anyhow 22:53:35 <oklopol> AnMalster sounds like "an molester" 22:53:56 <AnMaster> marshmallows, you wrote what? 22:54:33 <oerjan> oh no not marshmallows again. 22:54:39 <AnMaster> oklopol, oerjan: why the "l" discussion? 22:54:45 <oerjan> he is such a jerk, not like that nice guy faxathisia 22:55:49 <oerjan> AnMaster: oklopol lost an 'l' a while ago 22:56:03 <AnMaster> oerjan, oh? 22:56:23 <oerjan> fortunately it was recovered 22:56:52 <ais523> oerjan: are you sure that was the right 'l'? There's several over here that could fit 22:57:01 <oerjan> ooh 22:57:43 <oerjan> nah, none of them have the right black metal look 22:58:52 <ais523> that's a relief 22:58:59 * AnMaster someone left two dots here, they look like they would fit you oerjan 22:59:11 <AnMaster> örjan maybe? 22:59:16 <oerjan> no 22:59:26 <AnMaster> oh you want the dash over there then? 22:59:38 <oklopol> örjan usually leaves his dots home, they're strictly forbidden here 22:59:44 <oklopol> ah 22:59:46 <oklopol> indeed 22:59:51 <AnMaster> oklopol, I think he want an Ø not an Ö 22:59:52 <oerjan> don't think so, clashes with the e 22:59:59 * ais523 just came across this: http://catless.ncl.ac.uk/Risks/24.93.html#subj10.1 23:00:32 <ais523> strikes me as being a somewhat ambitious attempt 23:00:38 <oerjan> a ¨ is just a crumbled e anyhow 23:00:53 <ais523> but presumably the sort of people who fall for spam emails would fall even for that 23:01:08 <ais523> however, the plan would be thwarted due to such people's inability to use a fax machine 23:01:51 * marshmallows cries 23:02:22 <oklopol> i wish i had more money 23:02:29 <oklopol> i would gladly fund phisters 23:02:32 <oklopol> *phishers 23:02:56 <ais523> oklopol: why? 23:03:21 <marshmallows> I just bought this http://www.info.ucl.ac.be/~pvr/book.html 23:03:37 <oklopol> because in a perfect world, everyone would fall for that, and i could get rich doing something like that 23:03:51 <oklopol> donating money, clearly, makes the world a bit better. 23:04:08 <oerjan> marshmallows: i've heard great praise of it over at lambda the ultimate 23:04:10 <oklopol> my logic is flawless, as always 23:04:23 * ais523 is laughing out loud again, but at least this time there's nobody else in the lab to hear 23:04:45 <oklopol> :D 23:05:34 <oerjan> oklopol: too bad the world doesn't work on logic 23:06:00 <oklopol> too bad your mother doesn't work on logic 23:06:11 <oklopol> i'm on fire today 23:06:15 <oklopol> better continue my j's 23:06:41 <Judofyr> oklopol: I'm very sorry, but I can't make the header go under the box :( 23:06:47 <marshmallows> bleh 23:06:51 <ais523> oklopol: you'll have to change your nick to oklorofl some time if you continue reasoning like that 23:06:56 <marshmallows> can't find my code 23:07:07 <ais523> Judofyr: context? 23:07:19 <Judofyr> ais523: http://yr.judofyr.net 23:07:25 <Judofyr> click the marker 23:07:30 <Judofyr> (very beta) 23:07:57 <marshmallows> btw I'm really annoyed at IRC 23:08:05 <oklopol> ais523: good idea 23:08:08 <marshmallows> I just realised how silly this is (I mean other than #esoteric) 23:08:10 <oklopol> i love playing with my nick 23:08:15 <oklopol> i wish i could do it with my real name 23:08:22 <marshmallows> Why do we segregate into programming language specific channels? 23:08:42 <marshmallows> Would it not make so much more sense to have paradaigm specific channels instead? 23:08:49 <ais523> marshmallows: so that people don't have to be in conversations that don't interest them? 23:09:02 <ais523> much of IRC is "how do I do X in programming language Y" 23:09:21 <ais523> there's #concatenative, anyway 23:09:26 <marshmallows> yeah sort of like that ais523, but it ends up that people use a single programming language instead of many 23:09:34 <marshmallows> I thought that was the factor channel :p 23:09:39 * oklopol joined 23:10:21 <oklopol> they said "hi", what a nice channel :))) 23:10:24 <marshmallows> hmf :[ 23:10:40 <oerjan> oklopol: there is this tv guy in norway who added "Værsågod Takkskalduha" to his surname, legally 23:10:49 * marshmallows is alone in #declarative #functional and #procedural 23:10:58 <oerjan> spelled slightly differently, i think 23:11:04 <oklopol> heh 23:11:16 -!- Corun has quit ("This computer has gone to sleep"). 23:11:18 <oklopol> well, the problem is, while you can do that here, too, you cannot change it back. 23:11:42 <oerjan> marshmallows: there is a #concatenative i believe 23:11:53 <ais523> oerjan: what does that translate as? 23:11:56 <oklopol> hmph, i cannot translate that to english, just finnish 23:12:46 <oklopol> here you are | thanks? 23:12:54 <oerjan> something like that 23:13:47 <oerjan> yeah i think there is some limit on how often you can change your name 23:14:03 <marshmallows> It just seems totally wrong to me 23:14:12 <oklopol> we have once in a lifetime / for a *good reason* / marriage 23:14:23 <oklopol> marshmallows: still on the paradigm topic? 23:14:26 <marshmallows> I am thinking of the story with all the blind people trying to figure out what an elephant is 23:14:27 <oerjan> he did it after the laws were greatly liberalized 23:14:28 <oklopol> or changeing names 23:14:37 <oklopol> changing 23:14:46 <marshmallows> they are all expert in one thing, so none of them really understand it 23:15:15 <oklopol> i haven't heard that story 23:15:19 <oklopol> will you tell it? 23:15:22 * marshmallows wants to merge all the procedural channels in one.. all the functional into one.. 23:15:28 * oklopol gathers by the fire 23:16:08 <oklopol> #haskell is quite different from #scheme... 23:16:24 <ais523> and likewise C++ is quite different from Java 23:17:16 <marshmallows> It just feels like segregation 23:17:30 <marshmallows> and I think it's bad but I'm probably wrong and worrying about nothing 23:18:16 <ais523> on Usenet there are newsgroups at all levels 23:18:49 <ais523> so for instance comp.lang.c only talks about 100% ANSI- (or K&R-) compliant C, or occasionally about whether code is conforming 23:19:01 <ais523> to discuss things like POSIX C, you would go to comp.unix.programmer 23:19:20 <ais523> but to discuss algorithms (which are language-dependent), comp.programming would be the best place 23:19:29 <marshmallows> I see 23:19:36 <oklopol> language-dependent? 23:19:38 <oklopol> or independent? 23:20:05 <ais523> I meant independent 23:20:13 <oklopol> yrar 23:20:56 <marshmallows> anyway I'm happy I got someone into logic programming today :P 23:21:09 -!- Corun has joined. 23:21:36 <ais523> marshmallows: which language? 23:22:00 <marshmallows> I used Prolog, http://reddit.com/r/programming/info/6cwnk/comments/ , but they will probably learn Oz, I guess.. which I also want to do 23:22:32 <marshmallows> Oz is this witches cauldron language seems pretty cool 23:23:11 * ais523 likes Prolog but doesn't think it goes far enough 23:23:25 <ais523> it has lots of restrictions, just to make it implementable... 23:23:27 <marshmallows> Yeah Prolog is severely flawed in many ways.. 23:24:03 <marshmallows> Still it's one of the best :/ 23:24:39 -!- slereah_ has changed nick to Slereah. 23:25:24 <marshmallows> always looking for new Logic langs/implementation techniques :) 23:25:44 * ais523 is planning a Prolog-like esolang 23:25:49 <ais523> that's very uncomputable 23:26:03 <ais523> it manages to be above-TC (and therefore TC) despite having no way to loop 23:26:14 <ais523> because it can perform uncountably many computations in parallel 23:26:21 <marshmallows> :D 23:26:22 <marshmallows> cool 23:26:37 <oklopol> the one that could actually check its own halting if implemented perfectly? 23:26:38 <Slereah> How will it do it! 23:26:58 <Slereah> Perfect proof generator? :o 23:26:59 <ais523> basically, a program contains a certain number of variables 23:27:14 <marshmallows> There was a nice thought exercise, adding the language construct infinity { ... } to C 23:27:16 <ais523> which can take on infinitely many values 23:27:29 <ais523> 'untyped function' is one of the possible data types 23:27:41 <ais523> A program consists of constraints on those variables 23:28:29 <oklopol> can you do "recursion"? 23:28:41 <ais523> of course 23:28:44 <oklopol> define constraints in terms of other constraints 23:28:50 <oklopol> i guess would be more appropriate 23:28:59 <oklopol> hmm 23:29:18 <oklopol> or not, that might sound more confusing 23:29:41 <ais523> as for recursion, you simply add an argument to a function that represents recursion depth and place a constraint on the relationship between values of the function at different depths 23:30:14 <oklopol> yeah, sure 23:30:30 <oklopol> i think we need some help from the matlab people 23:30:45 <oklopol> it obviously needs to be able to do all mathematics known to man! 23:31:18 <oklopol> can you do algebra? 23:31:19 <oklopol> hmm 23:31:34 <oklopol> i guess you can just make tree constraints and use the parse trees of algebraic expressions 23:31:39 <ais523> algebra's fine 23:32:19 <marshmallows> give it a MAXIMA FFI :D 23:32:36 * ais523 tries to remember what MAXIMA is 23:32:51 <marshmallows> nice algebra system written in Common Lisp 23:33:07 <oklopol> can you just do stuff like A*x^2 + Bx + C == 0 <==> x = (-B+sqrt(B^2-4*A*C))/(2*A) 23:33:11 <oklopol> to add mathematical truths :-) 23:33:23 <oklopol> +- 23:33:34 <oklopol> or <==> -> ==> 23:33:38 <oklopol> errr 23:33:40 <oklopol> <== 23:33:44 <oklopol> errrr 23:33:46 <oklopol> you fix it 23:33:46 * marshmallows whines about introducing such compilex axioms 23:33:57 <marshmallows> why not just prove it in the language itself? 23:33:59 <ais523> that's easy enough to deduce without that rule using completing-the-square 23:34:08 <oklopol> indeed 23:34:18 <oklopol> but can you hint the program? 23:34:26 <Quendus> bah, why can't esolang creators do anything more interesting than brainfuck-derivatives? :( 23:34:42 <marshmallows> Quendus: Check out #esoteric! 23:34:45 <oklopol> you should be able to give it that axiom *and* deduce that 23:34:55 <ais523> many esolang creators do 23:34:56 <oklopol> Quendus: some can, look deeper 23:34:58 <marshmallows> Quendus: they are talking about something totally different ovwer there 23:35:17 <Quendus> RLY??? 23:35:18 <ais523> look at the list of esolangs I've created, for instance, or that any of the regulars here have created 23:35:25 <marshmallows> :( 23:35:30 * marshmallows hasn't made any esolang... 23:35:43 <ais523> http://esolangs.org/wiki is a good starting point 23:35:43 <oklopol> most of esolangs.org are brainfuck-derivatives, or at least clearly imperative, and very close 23:36:02 <oklopol> but there are many languages completely unlike it 23:36:08 <ais523> http://esolangs.org/wiki/User:ais523 contains a list of the ones I've created 23:36:10 <Quendus> I looked at the list of things on the wiki and found very little else 23:36:19 <oklopol> and some of the brainfuck-derivatives really do have a point. 23:36:19 <ais523> I don't think many of them are Brainfuck-based 23:36:24 <marshmallows> oh well I implemented an esotericish lang (one that lets you run programs forwards or backwards in ..) 23:36:24 <Quendus> and so far nothing that more fun than befunge to write in 23:36:33 <marshmallows> I guess that's something.. 23:36:38 <marshmallows> ? 23:36:49 <ais523> Quendus: try Underload if you haven't already 23:37:24 <oklopol> Quendus: also unlambda and lazy k are based on a different mathematical model than brainfuck 23:37:33 <oklopol> very different 23:37:38 <Quendus> ok, thanks 23:37:57 <ais523> yes, the functionals are pretty different 23:38:09 <ais523> you might also want to look at languages like Thue and /// 23:38:17 <ais523> which is a different paradigm again 23:38:23 <Slereah> Writing a mathematical function in Brainfuck is as easy to do as a CAT program in Unlambda :D 23:38:49 <marshmallows> hehe 23:39:01 <oklopol> in thue, the way i program, is basically to simulate something like a a turing machine 23:39:06 <oklopol> just much harder 23:39:11 <marshmallows> thue is so cool o_o 23:39:23 * Slereah never had the courage to read up Thue 23:39:31 <marshmallows> oh I wrote a thue-ish interpreter too! 23:39:35 <ais523> what other paradigms are there? 23:39:45 <marshmallows> I have implement lots of langs but not invented :/ 23:39:54 <ais523> there are object-oriented langs like Glass and ORK 23:39:56 <Slereah> Cellular automatons? 23:39:58 <Slereah> Also bully 23:40:02 <marshmallows> Procedural, Logic, Functional 23:40:04 <oklopol> hmm... weird kolmogorov thing no one understands, are there esolangs based on it? 23:40:10 <oklopol> Slereah: 23:40:13 <oklopol> ^ 23:40:14 <Slereah> oklopol: Well, I'm trying. 23:40:22 <ais523> oklopol:Andrei Machine 9000 23:40:25 <marshmallows> Declarative, Constraint, Term Rewriting, Cellular 23:40:27 <Slereah> Although right now, I have a lot of school. 23:40:28 <oklopol> oh, right :D 23:40:34 <ais523> there are langs like Flip, BackFlip, and Black 23:40:51 <oklopol> *the weird 23:41:13 <Quendus> ok, that should be enough to distract me from matrices :> 23:41:14 <Slereah> And multi-paradigm. 23:41:20 <Slereah> Like the dysfunctional languages :D 23:42:02 <oklopol> no one mentioned stack based langs? 23:42:07 <oerjan> Smetana and Smatiny 23:42:09 <oklopol> concatenative 23:42:24 <oklopol> also destructor-based languages, they are a bit hit 23:42:26 <oklopol> :D 23:42:30 <ais523> well, I mentioned Underload 23:42:32 <Slereah> Destructor based? 23:42:43 <oerjan> well yeah if they weren't just vaporware i guess :) 23:42:44 <oklopol> Slereah: oerjan's reaper 23:42:50 <ais523> there's also Sceql, a queue-based lang 23:42:50 <oklopol> oh 23:42:55 <oklopol> then there's nopular programming 23:42:59 <oklopol> for instance nopol 23:43:00 <oerjan> o_O 23:43:09 <oklopol> where no program does absolutely anything. 23:43:11 <oklopol> hmm 23:43:14 <oklopol> err 23:43:14 <ais523> and OISCs like Subskin, SMATINY (not quite an OISC but similar), and MiniMAX 23:43:20 <oklopol> where every program does absolutely nothign. 23:43:21 <Slereah> Oh, like Unecessary or minimal 23:43:23 <oklopol> *nothing 23:43:32 <marshmallows> LAZY! 23:43:34 <oerjan> oklopol: i preferred the first explanation 23:43:52 <oklopol> hmm, just sounded weird at first 23:43:53 <Slereah> There's the social esolangs. 23:43:55 <marshmallows> Stacky, Consey, Array-based 23:43:56 <Slereah> Such as IRP 23:43:56 <oklopol> irp! 23:44:02 <oklopol> chirp chirp 23:44:05 <marshmallows> hash table based ;p 23:44:32 <oklopol> hash tables are a special function, paradig...mically speaking 23:44:33 <oerjan> would Turkey Bomb be a social esolang? 23:44:36 <marshmallows> is there any good IRP -bot-? 23:44:48 <oklopol> special case of functions 23:44:58 <oklopol> asdasdf, i can't form sentences today 23:45:00 <oerjan> marshmallows: i made an IrpBot but i wouldn't call it good... 23:45:04 <ais523> is there a hashtable-based esolang? 23:45:05 <marshmallows> :D 23:45:19 <ais523> oerjan: if it just did all the examples on the wiki page, it would probably be good enough 23:45:23 <marshmallows> ais523: I think adu described one here but didn't implement it 23:45:50 <oerjan> ais523: oh nothing like that 23:45:55 <oklopol> oh, then there's tag systems... not sure if they actually belong to some category 23:46:02 <oklopol> i'd call them queue-based languages 23:46:14 <ais523> how could I have forgotten cyclic tag? 23:46:26 <oklopol> indeed, you're the WCT guy 23:46:26 <ais523> it's really good at proving TCness of /very/ simple systems 23:46:45 <ais523> and it's the lang I proved the 2,3 Turing machine could emulate 23:47:03 <Slereah> Also, uncomputable langs 23:47:10 <oklopol> hmm... aren't they actually the ideal model for queue-based langauges? i think people have talked about making a queue-based language, but haven't heard the comparison to tag systems 23:47:11 <Slereah> Although they're kind of uncomputable. 23:47:15 <oklopol> *languages 23:47:30 <oklopol> *i haven't heard 23:47:51 <ais523> yes, I wonder why nobody mentioned that during the creation of Qdeql and Sceql 23:50:54 <ais523> there's ordinary tag as well as cyclic tag, of course 23:51:35 <Slereah> No freeze tag? 23:52:01 <ais523> Slereah, what's that? 23:52:26 <oklopol> a game 23:52:32 <oklopol> kids play it 23:52:43 <Slereah> A variation of the one the tag system is based on. 23:52:51 <Slereah> Well, named from 23:53:20 <oklopol> what's ordinary tag? 23:53:24 <ais523> Slereah: how does it work? 23:53:41 <ais523> oklopol: you repeatedly disregard the first n characters of a queue 23:53:49 <Slereah> IIRC, like normal tag, but when someone is it, he can't move 23:53:59 <Slereah> He can move again if another player unfreeze him 23:54:01 <ais523> then put something on the end of the queue that depends on the head of the queue 23:54:33 <ais523> it can be compiled into cyclic tag easily 23:54:37 * oerjan thinks a tag game where 'it' cannot move would be a tad boring 23:54:42 <oklopol> umm, and cyclic tag different how? 23:54:59 <oklopol> actually, 'it' doesn't change 23:55:01 <Slereah> oerjan: The "it" guy remains the same 23:55:10 <Slereah> But he has to tag everyone. 23:55:10 <oerjan> thought so ;) 23:55:12 <Slereah> I think 23:55:16 <Slereah> It's been a while 23:56:01 <ais523> ah, you can't move if you're tagged, and you can be released by anyone who hasn't been tagged? 23:56:03 <oklopol> *tag is 23:56:10 <oklopol> ais523: yeah 23:57:04 <oklopol> fun game for everyone except the poor bastard who happens to be 'it' 23:57:10 <Slereah> Heh. 23:57:41 <ais523> oklopol: you remove the first character from the queue each time. If it's a 1, you add a string to the end of the queue that depends on the number of steps the system has run, modulo some constant 23:57:57 <oklopol> oh, right 23:58:16 -!- Judofyr has quit. 23:59:00 <ais523> so a tag system examines every nth character, and has often more than two characters available, but adds something at every step 23:59:25 <oklopol> hmm... i may have asked before, but does anyone know anything about the complexity of the 1 -> 11 -> 21 -> 1211 -> 111221 -> 312211 thing? 23:59:29 <ais523> whereas a cyclic tag system examines every character, adds something only on one character (so only two characters are available), but what is added depends on the number of steps the system has been running 23:59:48 * ais523 has to go home 23:59:52 -!- ais523 has quit ("bye!"). 2008-03-22: 00:00:59 <oklopol> that seems to be complex enough not to be predictable, but doesn't seem to leave much room for anything sensical 00:01:17 <oklopol> i shall run it a few thousand steps 00:04:54 <oklopol> heh 00:04:59 <oklopol> exponential, it seems 00:05:07 <oklopol> perhaps that should've been clear 00:05:09 <Slereah> Well, it's esolangs. 00:05:18 <Slereah> What were you hoping, o(0)? 00:05:40 <oklopol> in most esolangs, modularity is fairly simple to do 00:06:30 <oklopol> *or* they are easy to compile to something that was hell to prove universal, but some mathematician luckily did it millions of years ago 00:06:48 <oklopol> hmph 00:06:51 <oklopol> python crashed 00:07:10 <Slereah> Oh noes :o 00:07:34 <oklopol> so much fun writing a program in the shell just to lose it right away, because i don't realize the interpreter and my os sucks 00:07:56 <oklopol> well, i guess i can rewrite it, took like 40 seconds :D 00:08:22 <oklopol> rofl, time me 00:08:24 <oklopol> rewrite time 00:09:25 <oklopol> ready 00:09:34 <oklopol> darn, minute 00:09:36 <oklopol> let's see if it works... 00:09:49 <oklopol> it does 00:09:59 <oklopol> well, could've been worse 00:10:44 <oklopol> 1 00:10:44 <oklopol> 11 00:10:44 <oklopol> 21 00:10:44 <oklopol> 1211 00:10:44 <oklopol> 111221 00:10:44 <oklopol> 312211 00:10:46 <oklopol> 13112221 00:10:48 <oklopol> 1113213211 00:10:50 <oklopol> 31131211131221 00:10:52 <oklopol> 13211311123113112211 00:10:54 <oklopol> 11131221133112132113212221 00:10:56 <oklopol> see any structures? 00:11:18 <Slereah> Yes 00:11:23 <Slereah> It's the look-and-say sequence 00:11:43 <oklopol> yes, but we are talking turtles 00:12:04 <oklopol> i was assuming everyone was familiar with that, not having a quiz 00:12:06 <Slereah> Are we known for our ninjustsu? 00:12:27 <oklopol> minute... 00:12:31 <oklopol> :<< 00:12:49 <oklopol> that's so trivial algorithmically it shouldn't take time at all 00:12:51 <oklopol> it should just be 00:13:09 <oklopol> i'll try it in j 00:13:23 <oklopol> probably better not to time me this time :) 00:13:59 <oklopol> hmm... 00:14:31 <oklopol> group + map (\a -> count a, pick first a) 00:14:57 <oklopol> map (\a -> (length a, head a)) $ group s 00:15:01 <oklopol> except it's not group 00:15:13 <oklopol> and there probably isn't anything exactly like that 00:15:19 <oklopol> oerjan to the rescue, perhaps 00:17:22 <oerjan> certainly. in fact the wikipedia page is on my watchlist 00:17:42 <oklopol> {{#_,.a}\grp} in oklotalk, i think 00:17:56 <marshmallows> (length &&& head) 00:18:03 <oklopol> cool 00:18:04 -!- Corun has quit ("This computer has gone to sleep"). 00:18:13 <oerjan> after a number of iterations it split into Conway's elements. From there on it is a simple substitution 00:18:24 <oerjan> *splits 00:18:29 <oklopol> conway's elements? 00:18:33 <oerjan> oh you meant the haskell? 00:18:40 <oklopol> that too 00:18:48 <oklopol> but marshmallows kinda beat you to it with a cooler solution 00:18:54 <oklopol> errr 00:19:10 <oklopol> or not, was just just for my lambda? 00:19:22 <marshmallows> I just pointlessed (\a -> (length a, head a)) 00:19:27 <oklopol> yeah 00:19:36 <oklopol> group was my problem 00:19:40 <oklopol> because i don't think that's correct 00:19:52 <marshmallows> group is right 00:19:57 <oklopol> ofc, {{#_,._}\grp} 00:20:03 <marshmallows> oh .. 00:20:06 <oerjan> http://en.wikipedia.org/wiki/Look-and-say_sequence, look for Cosmological Theorem 00:20:43 <oklopol> &&& is definable in oklotalk too, &&&={a b->{a_,b_}} 00:21:10 <oklopol> takes two arguments, returns a function that returns a tuple with functions a and b used on the argument 00:21:27 <oklopol> &&&={A B->{a_,b_}} actually 00:21:55 <oerjan> also the constant, which explains your exponential growth (in fact the polynomial comes out of the eventual substitution i believe) 00:22:04 -!- Corun has joined. 00:22:13 <oklopol> i don't think you can make it any simpler 00:22:16 <oklopol> oerjan: i'll look now 00:22:24 <oklopol> was doing my oklotalks very intensely 00:22:26 <oerjan> that part actually is slightly related to my PhD 00:22:27 <marshmallows> can you do it in thue!? 00:22:36 <oklopol> marshmallows: &&&? 00:22:42 <marshmallows> generate the sequence 00:22:49 <oklopol> sure 00:22:54 <oklopol> but J first 00:23:23 <olsner> thue is turing complete, so there is no way for it not to be able to generate the sequence :P 00:23:31 <marshmallows> yeah but can you do it :P 00:23:35 <marshmallows> I don't think I could 00:23:42 <oklopol> oerjan: i'll read your papers when i've gathered some additional ownage. 00:23:52 <oklopol> i mean, those crazy mathematical papers of yours 00:24:32 <Slereah> Is oklopol TC enough to do it? 00:24:37 <olsner> wow, "Conway's constant is the unique positive real root of the following polynomial:" 00:25:00 <olsner> ... but my VAX only supports polynomials up to degree 31 00:25:09 <oklopol> x71 - x69 - 2x68 - x67 + 2x66 + 2x65 + x64 - x63 - x62 - x61 - x60 - x59 + 00:25:09 <oklopol> 2x58 + 5x57 + 3x56 - 2x55 - 10x54 - 3x53 - 2x52 + 6x51 + 6x50 + x49 + 9x48 - 3x47 - 00:25:09 <oklopol> 7x46 - 8x45 - 8x44 + 10x43 + 6x42 + 8x41 - 5x40 - 12x39 + 7x38 - 7x37 + 7x36 + x35 - 00:25:09 <oklopol> 3x34 + 10x33 + x32 - 6x31 - 2x30 - 10x29 - 3x28 + 2x27 + 9x26 - 3x25 + 14x24 - 8x23 - 00:25:09 <oklopol> 7x21 + 9x20 + 3x19 - 4x18 - 10x17 - 7x16 + 12x15 + 7x14 + 2x13 - 12x12 - 4x11 - 00:25:09 <oklopol> 2x10 + 5x9 + x7 - 7x6 + 7x5 - 4x4 + 12x3 - 6x2 + 3x - 6 00:25:11 <oklopol> i lolled :) 00:25:16 <Slereah> THE LOOK AND SAY SEQUENCE HAS BEEN DESTROYED BY NINJAS 00:25:18 <Slereah> ARE YOU TC ENOUGH A DUDE TO GENERATE THAT SEQUENCE? 00:25:24 <marshmallows> lol 00:25:43 <olsner> oklopol: or as 4chan would have it: <polynomial> ... I came 00:25:49 <oklopol> flood, lolling and capital letters, esoteric at its best :P 00:27:07 <oklopol> oerjan: in fact, i'll promise to read them 2012, if we both are still around. 00:27:58 <Slereah> 2012 is the end of the world, don't you know? 00:28:19 <oerjan> oklopol: if you take the 92 elements of conway and set up a matrix of how they turn into each other in one step, then the constant is the largest eigenvalue of that matrix 00:29:03 <oklopol> eigenvalue? 00:29:04 <oerjan> (the only positive one, actually) 00:29:27 <oklopol> i think i've looked that up before... 00:29:40 <oerjan> an eigenvalue of a matrix is a value l such that there exists a vector v such that M v = l v 00:29:46 <Slereah> Eigenvalue is k if Ax = kx 00:30:17 <oerjan> to find them, you solve the equation det(lI - M) = 0, which probably is that polynomial 00:30:24 <Slereah> It be them numbers on the diagonal in a diagonalised form 00:30:39 <oklopol> well at least i get how the equation is formed then 00:30:57 <oklopol> well polynomial 00:31:22 <oerjan> actually there probably is some simplification going on, since it doesn't have degree 92... 00:31:55 <Slereah> What, no 92x92 matrix? :o 00:32:15 <oerjan> so the polynomial on the page may be a factor of the full one 00:32:46 <oerjan> or perhaps some terms really are zero from the start 00:33:11 <Slereah> Remember the trick : if you can't solve a 92x92 matrix, just write "The margin is too thin for me to write the proof". 00:33:16 <oklopol> i really have no matrix intuition 00:33:19 <Slereah> It worked great! 00:33:40 <oerjan> Slereah: if you have time to wait a few hundred years... 00:33:42 <oklopol> yeah, then just leave the paper around for a few hundred years and you'll have the answer 00:33:49 <oklopol> darn 00:33:55 <oklopol> i was pwned bad 00:34:28 * oklopol is oerjan's slow win 00:34:31 <oklopol> *twin 00:34:39 <Slereah> What I find amusing is that Conservapedia doesn't like Andrew Wiles proof. 00:34:52 <Slereah> They say it uses the CONTROVERSIAL AXIOM OF CHOICE 00:35:02 <Slereah> They probably think it's pro choice. 00:35:15 <oklopol> axiom of choise is so fake 00:35:40 <Slereah> I'm okay with it. 00:35:42 <marshmallows> :D 00:35:59 <oerjan> it's consistent with the others, as Godel proved 00:36:07 <marshmallows> I'm going to suggest the library I go to burn all books that mention the axiom of choice 00:36:14 <Slereah> Then again, so's its negation! 00:36:32 <oerjan> Slereah: so you have a choice! 00:36:35 <marshmallows> can you prove axiom of choice? 00:36:40 <marshmallows> :P 00:36:49 <Slereah> You can prove it in ZFC. 00:37:04 <oklopol> what about KFC? 00:37:09 <Slereah> a -> a 00:37:11 <Slereah> Axiom of choice -> axiom of choice 00:37:14 <oerjan> you can prove that you cannot prove it or disprove it, unless ZF without it is inconsistent 00:37:17 <Slereah> Axiom of choice is true 00:37:18 <Slereah> Axiom of choice -> axiom of choice 00:37:20 <Slereah> is true 00:37:26 <Slereah> Then axiom of choice is true 00:37:30 <marshmallows> o_O 00:37:45 * oerjan puts a big F on Slereah's logic exam 00:37:50 <Slereah> Whaaaaat 00:37:58 <Slereah> I said in ZFC 00:38:04 <oerjan> ah 00:38:07 * marshmallows gives Slereah and A, for A..d-hoc 00:38:13 <Slereah> :D 00:38:29 * oerjan hides the F under his bed 00:39:18 <oklopol> oerjan: or just give it to me 00:39:26 <oklopol> you'll get your l back... 00:39:29 <oerjan> but you already got an 'l' 00:39:37 <oerjan> darn 00:39:41 <oklopol> i'm willing to trade 00:39:58 * oerjan notes oklopol didn't note his repwning 00:40:00 <oklopol> i have a k and nothing to combine it with, so i might just as well use it 00:40:11 <oklopol> oerjan: i have a different joke, actually 00:40:13 <oklopol> :) 00:40:42 <oklopol> also what repwning? 00:40:44 <oklopol> i can't see it. 00:40:50 <oerjan> and then buy a 'u' and a 'c' on ebay? 00:41:18 <oerjan> oklopol: you mentioned the 'l' before i did 00:41:23 <Slereah> Fkuc? What kind of silly word is that. 00:41:45 <oerjan> Slereah: it's popular in dyslexic circles, i hear 00:42:01 <oklopol> oerjan: in that case, i was the one doing the pwning, while you did it last time 00:42:10 <oerjan> yes 00:42:11 <oklopol> anyway, i actually would like the f. 00:42:24 <oerjan> very well. here: F 00:42:28 <oklopol> thanks 00:42:30 -!- oklopol has changed nick to oklofok. 00:42:47 <oklofok> funny, i actually need to pee now. 00:42:47 <oklofok> -> 00:44:34 * marshmallows tries to invent an esolang 00:44:48 <Slereah> Try Freeze Tag! 00:45:49 <marshmallows> maybe I should do something based around linear logic 00:45:57 <olsner> I was thinking about building a programming language somewhat like haskell, but with only monads (and as little as possible of all that function stuff) 00:45:57 <marshmallows> I just read about that yesterday.. 00:46:05 <marshmallows> lol 00:46:22 <marshmallows> sounds like you would get *really* good PR 00:46:39 <olsner> the problem lies in eliminating all the usable stuff 00:51:02 <olsner> then I had an idea of a super-polymorphic haskell dialect, with everything including functions as type classes (presumably with a primitive function type and application operator available somewhere) 00:51:32 <marshmallows> M++ 00:54:18 * Slereah just had a stupid idea. 00:54:35 <Slereah> WHAT WOULD HASKELL LOOK LIKE IF GERMANY WON WWII :O 00:54:48 <Slereah> It's just an excuse to use the old German notations. 00:54:57 <Slereah> Or something like that 00:54:58 <oerjan> we present: the ERWIN language 00:55:11 <oerjan> (shades of Irregular Webcomic, and Schrodinger) 00:55:32 <marshmallows> haha 00:55:35 <marshmallows> Oh my god 00:56:34 <oerjan> oh wait 00:56:44 <oerjan> that would have to be Werner, for Heisenberg 00:57:15 <Slereah> It would be a good excuse to make people share my pain 00:57:16 <Slereah> The old logical notations were crazily insane 00:57:20 <oerjan> (who at least possibly was a nazi) 00:57:29 <oklofok> erwin is like winner but nubbed and scrambled. 00:57:40 <oklofok> good point, oklo 00:57:47 * oklofok continues his readings 00:58:03 <olsner> did you just say "good point" to yourself? 00:58:06 <Slereah> But then again, Heisenberg was no computer scientist 00:58:38 <Slereah> Wasn't Curry originally in Germany? 00:59:01 <oklofok> olsner: yes. 01:00:14 <olsner> uhm, okay 01:00:37 <oerjan> olsner: what do you expect from someone who keeps changing nicks? 01:03:12 <oerjan> IT'S A SIGN VON SCHIZOPHRENIA UND DIE ANAL RETENTION 01:03:56 <Slereah> OKLONUT 01:04:10 <olsner> I CAN HAS CAPSLOCK TOO? 01:04:16 <oklofok> O 01:04:36 <oklofok> olsner: i tend to comment my own speech quite often. 01:04:51 <olsner> in real life too? 01:05:05 <oklofok> hmm... dunno 01:05:23 <oklofok> i rarely have irl conversations 01:05:58 <oklofok> i think i do do it. 01:06:07 <Slereah> Lol 01:06:10 <Slereah> do do 01:06:10 <olsner> heh 01:06:21 <oklofok> yes, that was the real point of what i was saying 01:06:24 <olsner> whut, that's perfectly grammatical 01:06:40 <oklofok> being able to talk about excrete non-explicitly 01:06:52 * marshmallows has seen "that that" and "house house" in grammatically valid sentences 01:06:57 <Slereah> oklofok's entire presence presence here has been just one long set up. 01:07:11 <Slereah> That Oklotalk? All smokes and mirrors 01:07:14 <oklofok> :) 01:07:16 <Slereah> It's all about the doodoo 01:07:17 <olsner> oklofok: excrete? 01:08:13 <oklofok> doesn't the concept of excrete also include poo? 01:08:19 <olsner> excrete != excrement, I hope 01:08:22 <oklofok> ah 01:08:34 <oklofok> excrete can be bodily wastes or something, i think, too 01:08:54 <olsner> or, "I hope you weren't talking about excrement" 01:08:59 <oklofok> DICTINOARY ADVENTURE TIME 01:09:05 <olsner> indeed 01:09:06 <oklofok> *DICTIONARY 01:09:14 <Slereah> *wiktionary 01:09:18 <oklofok> i was talking about excrement, isn't that what do do s 01:09:20 <oklofok> *is 01:10:07 <oklofok> der lehrer hat gesagt das, dass das "dass, das", das das kind gesagt hast, recht ist 01:10:10 <oklofok> or something 01:10:32 <oklofok> and there was something in french with even more homonymes, although i don't remember the word 01:10:40 <oklofok> i think it had "s" and meant at least "6" 01:10:51 <olsner> you probably have to put it "doo doo" for the reference to excrement to come across 01:11:05 <oklofok> olsner: Slereah got it without it 01:11:16 <olsner> uraniwa niwa niwa niwa niwa niwa niwatori ga iru 01:11:24 <Slereah> Well, I am totally awesome 01:11:35 <oklofok> and you can just assume i only talk about sex/shit when i'm not talking about programming. 01:11:40 * oerjan is reminded about the news tidbit about some japanese company who called their candy "dew dew" 01:11:58 <oklofok> also i talk about puppies 01:12:19 <olsner> puppies, sex and shit... well, what else is there to life except programming? 01:12:30 <Slereah> The three at the same time? 01:12:45 <Slereah> Just ask the internet, I'm sure you'll find it! 01:12:53 <oerjan> otoh the Bonbon company around here seems to use that kind of naming for all their candy 01:12:53 <oklofok> well, i also like kids, but i think the context may not be good for saying that. 01:13:07 <oerjan> (on purpose) 01:13:22 <oklofok> here too! 01:13:42 <olsner> sex and shit, definitely already done... puppies and sex, sure... puppies and shit, obviously... I guess you do have to go all three to find a new genre 01:14:09 <oklofok> hmm, i actually haven't seen anything with all three 01:14:38 * oerjan is slightly disturbed by the implication that oklofok has seen all the other combinations 01:14:43 <oerjan> only slightly, though 01:14:43 <olsner> it'd be beastiality scat porn... shouldn't take 4chan more than a minute or two to find 01:14:54 <olsner> oerjan: what, you haven't? 01:15:01 <oklofok> the last one is not really that weird, i've seen dogs poo 01:15:14 <Slereah> http://img183.imageshack.us/img183/2196/blanksp2.jpg 01:15:24 <oerjan> true dat 01:15:48 <oerjan> and i've probably seen dogs fucking too, come to think of it 01:15:48 <oklofok> but it is a well-known fact you don't wanna peek in my collection. 01:16:03 * Slereah peeks 01:16:05 -!- timotiis has quit ("leaving"). 01:16:08 <oerjan> not that i actually remember 01:16:15 <Slereah> I've never seen so much rubber! 01:16:26 <marshmallows> I got humped by a dog once o_o 01:16:30 <oklofok> "i wish... it's Whitespace!" 01:16:36 <Slereah> :D 01:16:39 <oerjan> if i _had_ a collection you wouldn't want to peek in it, but i don't 01:16:39 <olsner> oklofok: that's a compliment to your collection that 01:16:40 <oklofok> marshmallows: almost, or actually? 01:16:41 <Slereah> oklofok, you win. 01:16:53 <marshmallows> I'm not sure how to tell the difference 01:17:03 <marshmallows> I didn't consent! 01:17:10 <Slereah> RAPE 01:17:26 <oklofok> marshmallows: did it get inside you? 01:17:30 <oklofok> did you report it? 01:17:32 <marshmallows> no :P 01:17:33 <marshmallows> lol 01:17:37 <oklofok> the dog would get like 10 years 01:17:46 <Slereah> Hve you sought psychological help? 01:17:52 <Slereah> We're here for you marshmallows 01:17:58 <oklofok> :P 01:18:00 <oerjan> oklofok: only dog years though 01:18:03 <oklofok> i've never believed in traumas 01:18:05 <marshmallows> I have been through struggling on my own.. 01:18:07 <oklofok> oerjan: naturally 01:18:30 <oklofok> in fact, i was gonna make a dog year joke, but i knew you'd do it 01:19:08 <oklofok> i guess dog+year is quite an obvious set-up for a dog year joke 01:19:09 <oerjan> maybe we should start a comedy troupe 01:19:30 <oklofok> yes! it's just #esoteric logs flashing through the screen 01:19:40 <Slereah> We'd probably cram in more obscure reference than a group of Dennis Miller! 01:20:41 <oklofok> if there was a show for programmers, i'd watch it 01:20:56 <olsner> though you/we haven't been particularly obscure lately, mostly talk about poop and dogs 01:21:15 <Slereah> Well, only in the last five minutes. 01:21:23 <oerjan> "Watch this guy juggle _four_ monadic frameworks at once" 01:21:25 <Slereah> Plus, oklofok's whitespace joke made me lol. 01:21:34 <oklofok> yes, we actually had nazi jokes too, a while back 01:21:46 <oklofok> hehe, yeah, i was kinda fun :) 01:21:50 * oklofok pats itself 01:22:26 <olsner> * oklofok regresses to an 'it' 01:23:02 <oklofok> i do that occasionally 01:23:23 <oklofok> i used to date this chick who called herself that, it became something of a pet name 01:23:31 <oklofok> or whatwouldyacallit 01:23:45 <marshmallows> how can someone call themselves 'that'? 01:23:54 * oerjan regresses to an 'xfwlkscprtsk' 01:23:54 <olsner> was that a reflexive that or a literal that - 'that' or 'itself'? 01:23:58 <oklofok> not 'that', 'it' 01:24:12 * oerjan somehow doubts it will become a pet name though 01:24:15 <oklofok> damn you implicit quoting 01:24:46 <olsner> implicit quoting, heh, perl does that 01:24:49 <oklofok> actually she used both "i" and "it" 01:24:51 <oerjan> don't say it! 01:24:57 <oklofok> i never quite got to know how serious that was 01:25:16 <oerjan> maybe she had a Caesar complex 01:25:20 <oklofok> perhaps 01:26:13 <olsner> oh, sorry, programming-language-that-must-not-be-named does that 01:26:23 <oerjan> watch out for when she becomes president 01:26:44 <oerjan> or would prime minister be scarier? not sure of the finnish system 01:26:55 <oklofok> you know as much as me. 01:27:04 <olsner> finland has a president 01:27:12 <oklofok> (president does really nothing here) 01:27:21 <oerjan> ic 01:27:28 -!- jix has quit ("CommandQ"). 01:27:30 <oerjan> so prime minister would be scarier 01:27:44 <oerjan> or perhaps defense minister 01:27:55 <oklofok> but i'm not proud i know what "president" means, politics are my no-touch zone 01:28:04 <olsner> they have a female one, last time I checked (which was 10 years ago or something) 01:28:24 <olsner> oklofok: wow, I like your view on politics! 01:28:26 <oklofok> we haven't had a female president for that long, but we do currently. 01:28:38 <oklofok> hmm, actually 01:28:41 <oklofok> i'm not sure we do :) 01:28:46 <oklofok> but most likely 01:29:36 <oklofok> i'm fairly separated from the society, except for a few friends 01:29:41 <marshmallows> "we" is which place? 01:29:50 <oklofok> err finland 01:29:54 <marshmallows> ok 01:30:03 <oerjan> the United Kingdom of Europe, of course 01:30:25 <olsner> marshmallows: you never know which oklofok you're talking to though, it could change 01:31:08 <oklofok> yes, currently, i'm a collective entity, the whole population of finland. 01:31:35 <SimonRC> ok, that line needs context 01:31:46 <SimonRC> yay, go Dilbert! http://www.dilbert.com/comics/dilbert/archive/dilbert-20080316.html 01:32:06 <oklofok> is it about esolangs?!?!?!? 01:32:08 <oklofok> i'll look 01:32:14 <SimonRC> no 01:32:17 <SimonRC> but it is geeky 01:32:20 <SimonRC> ish 01:32:26 <SimonRC> well *I* liked it 01:33:08 <SimonRC> I would read the recent conversation, but I CBA telling the three o-names apart 01:33:19 <olsner> I dislike how dilbert became the besserwisser - it makes it hard to decide which one's the protagonist in the story 01:33:22 <Slereah> http://membres.lycos.fr/bewulf/Divers2/dilbert-20-11-1998.gif 01:33:26 <Slereah> http://membres.lycos.fr/bewulf/Divers2/dilbert-26-01-1999.gif 01:33:30 <Slereah> Am I doin it rite? 01:33:36 <olsner> and the PHB actually comes of as having a clue 01:33:54 <olsner> *off 01:34:21 <oklofok> we are clearly not wanted here, o-guys, #o-club (LNFAJ) 01:34:38 <SimonRC> oklofok: define: "LNFAJ" 01:34:46 <oklofok> link not for actually joining, my new 01:34:49 <oklofok> acronym 01:35:09 <SimonRC> ok 01:35:13 * olsner was a split-second away from actually joining 01:35:18 * oerjan notes that currently #haskell seems as weird as #esoteric. although lament _is_ partly to blame 01:35:19 <oklofok> :) 01:36:09 <Slereah> http://membres.lycos.fr/bewulf/Divers/penrose2.png 01:36:12 <olsner> zombies, hitler and tesla coils, all in a few lines of irc3! 01:36:21 <Slereah> Penrose tensor notation 01:36:42 -!- cherez has quit ("Leaving."). 01:37:19 <oklofok> http://membres.lycos.fr/bewulf/Divers/penrose2.png <<< this is a joke too? 01:37:30 <oklofok> just checking, because i'm going to stare at it till i get it 01:37:50 <Slereah> It is no joke 01:38:07 <oklofok> that is not the correct answer 01:38:34 <Slereah> Although I already don't understand most of regular tensor notations, so it's hard to read! 01:38:48 <oklofok> what a regular tensors? 01:39:03 <oklofok> what a regular tensor! 01:39:04 <oklofok> i mean 01:39:06 <oklofok> what are the 01:39:08 <oklofok> y 01:39:09 <oklofok> :D 01:39:10 <Slereah> Tensor. 01:39:17 <Slereah> But written in a usual way, i mean 01:39:33 <SimonRC> I know FA about tensors 01:39:35 <Slereah> Unlike the bugs that Penrose uses 01:39:42 <Slereah> FA? 01:39:44 <SimonRC> except they are higher-dimensional matrices 01:39:55 <SimonRC> Fanny Arbuckle 01:39:56 <Slereah> Pretty much. 01:40:05 <SimonRC> or rather, Fuck All 01:40:10 <SimonRC> that is, not much 01:40:59 <Slereah> Just a bunch of n dimensionl matrix, that's pretty much it. 01:41:08 <Slereah> The rest is just the operations applied to them 01:41:15 <SimonRC> looks great 01:41:29 * SimonRC appreaciates a really spectacular notation. 01:42:10 <Slereah> In Penrose case's, the dimension is indicated by the number of legs. Or whatever you want to call them 01:42:53 <oklofok> i totally get what you mean 01:49:03 <SimonRC> It has to make the muggles go "Omg you can read that?!" 01:50:53 <Slereah> It wouldn't be fun otherwise! 01:50:57 <Slereah> "But it's so simple!" 01:54:29 <Slereah> Unlike the nancies in social science, people can't even begin to guess at all those symbols! 01:57:04 <lament> so like 01:57:13 <lament> haskell's type system IS turing-complete after all. I didn't realize. 01:57:26 <marshmallows> no it's not 01:57:45 <lament> they're discussing this in #haskell. GHC extensions are turing-complete. 01:57:46 <olsner> with extensions it is 01:57:52 <marshmallows> "GHC extensions" 01:58:04 <lament> so we already allow turing-completeness 01:58:16 <lament> but surely there's a much nicer way to allow turing-completeness than with GHC type system! 01:58:40 <oerjan> well the hoi polloi could always just use values 01:58:53 <olsner> I think the designers of haskell were cowards for not making it turing-complete and beautiful rather than its H98 limited mess 01:59:14 <olsner> but perhaps the lambda cube wasn't generally known at the time? 01:59:34 <marshmallows> olsner: Turing complete type systems = bugs 01:59:54 <marshmallows> You have a valid program you want to compile, yet it can never be compiled 02:00:06 <marshmallows> so the compiler does not fit its specification 02:00:49 <olsner> well, if you write a program with divergent types you're on your own 02:02:53 <olsner> besides, there are ways of modifying a TC type system to terminate in finite space and time without changing the type system itself (e.g. allowing a limited stack and heap for the type checker) 02:04:02 <oklofok> kinda like C++ does 02:04:10 <oklofok> (:P) 02:04:30 <olsner> incidentally, I think that's what cayenne is supposed to do, if augustss hasn't discontinued that project 02:04:38 <marshmallows> yeah, any standards conforming C++ implementation is buggy 02:05:24 <marshmallows> Cayenne is superseded by Agda 2 02:05:59 -!- shinkuzin has joined. 02:06:06 <olsner> yes, but probably not because of templates being turing complete 02:07:03 -!- shinkuzin has left (?). 02:16:24 -!- shinkuzin has joined. 02:17:27 -!- shinkuzin has left (?). 02:18:32 -!- RodgerTheGreat has joined. 02:21:50 -!- GreaseMonkey has quit (Read error: 104 (Connection reset by peer)). 02:23:26 -!- GreaseMonkey has joined. 02:24:57 -!- GreaseMonkey has quit (Client Quit). 02:30:56 -!- BMeph has joined. 03:07:19 -!- shinkuzin has joined. 03:28:23 * SimonRC reads some lolpresidents.com and goes. 03:49:00 <marshmallows> http://everything2.com/index.pl?node_id=550129 03:49:12 <marshmallows> fish are people too. 04:26:41 <RodgerTheGreat> hey guys, this story will haunt your dreams: http://www.seizureandy.com/stuff/guts.html 04:28:29 * oerjan reads just enough to decide to stop 04:29:35 <RodgerTheGreat> The ending is horribly perfect 04:31:02 <lament> i'm with oerjan 04:39:48 <RodgerTheGreat> it's disgusting, yes, but at the same time I can't help but admire the writing and storytelling technique 04:48:48 -!- shinkuzin has quit (Connection timed out). 05:05:12 <olsner> too long didn't read; he gets stuck on the inlet of the pool cleaning pump and passes out? 05:06:14 <RodgerTheGreat> oh, no 05:06:20 <RodgerTheGreat> much much worse 05:07:33 <olsner> wow, I only had to read a few paragraphs more to get to the really exciting part 05:09:25 <Sgeo> Bye all 05:09:37 <oerjan> bye 05:09:48 -!- Sgeo has quit (Remote closed the connection). 05:09:54 <RodgerTheGreat> definitely makes me want to read "Fight Club". I like the style- very vivid imagery. 05:10:53 <olsner> "Then my sister missed her period." ... hey, that part can't be true 05:13:28 <RodgerTheGreat> lol 05:14:35 <olsner> well, /me goes to sleep 05:14:38 <RodgerTheGreat> cya 05:32:22 -!- Corun has quit ("This computer has gone to sleep"). 06:29:32 -!- RodgerTheGreat has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:59:04 <oklofok> okay i gotta admit that was quite a story :D 11:29:41 -!- oerjan has quit ("leaving"). 11:47:44 -!- Judofyr has joined. 11:53:12 <AnMaster> Deewiant, Funge98 author just gave me permission to work on a draft for a new standard :) 11:57:14 -!- jix has joined. 12:06:27 -!- BMeph has quit ("calls it a night"). 13:09:15 -!- timotiis has joined. 13:56:33 -!- Tritonio_ has quit (Remote closed the connection). 14:00:35 -!- Tritonio_ has joined. 14:15:13 -!- Corun has joined. 14:23:35 <AnMaster> Deewiant, a very early draft http://rage.kuonet.org/~anmaster/funge-108/funge108.pdf very much work in progress (108 was the name Chris Pressey wanted, "years since 1900") 14:38:42 -!- Corun has quit ("This computer has gone to sleep"). 14:38:53 -!- slereah_ has joined. 14:49:41 -!- slereah__ has joined. 14:50:34 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 14:50:34 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 15:29:06 -!- Corun has joined. 15:44:40 -!- Corun has quit ("This computer has gone to sleep"). 16:18:49 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 16:19:20 -!- slereah__ has joined. 16:46:08 -!- slereah_ has joined. 16:46:29 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 17:11:33 -!- timotiis has quit ("leaving"). 17:34:47 -!- timotiis has joined. 17:53:28 -!- Corun has joined. 18:01:52 -!- ehird has joined. 18:05:30 -!- timotiis has quit ("leaving"). 18:05:41 -!- timotiis has joined. 18:45:00 <ehird> hell-o 18:45:18 <marshmallows> yo ehird 18:56:34 <ehird> marshmallows: this macro is interesting 18:56:35 <ehird> #;1> (define-macro (foo . args) `'(foo ,@args)) 18:56:45 <ehird> i can see a quine using it 18:58:19 <ehird> also 18:58:19 <ehird> #0=(begin (write (quote #0#)) (newline)) 18:58:21 <ehird> :D 19:00:09 <marshmallows> weird 19:00:10 <marshmallows> #;> #0=(begin (write (quote #0#)) (newline)) 19:00:10 <marshmallows> #0=(begin #@(((source-file . "console") (line-number . 1) (column-number . 11) . #1=((source-kind . user))) . (write #@(((source-file . "console") (line-number . 1) (column-number . 18) . #1#) . (quote #@(((source-file . "console") (line-number . 1) (column-number . 4) . #1#) . #0#))))) #@(((source-file . "console") (line-number . 1) (column-number . 31) . #1#) . (newline))) 19:00:24 <marshmallows> in SISC 19:00:29 * slereah_ is schemed away D: 19:01:21 -!- marshmallows has left (?). 19:01:27 -!- marshmallows has joined. 19:04:39 <ehird> marshmallows: hmm 19:04:46 <ehird> use mzscheme 19:04:46 <ehird> :P 19:04:56 <ehird> but that is bizzare 19:05:03 <ehird> weirdly recursive 19:05:51 -!- sebbu2 has joined. 19:05:53 -!- sebbu has quit (Read error: 145 (Connection timed out)). 19:06:13 -!- sebbu2 has changed nick to sebbu. 19:12:59 <marshmallows> ehird, do you think it's bad .. the way IRC has divided itself into programming language specific channels instead of say, paradaigm specific ones? 19:13:26 <slereah_> Aren't we a paradigm channel? 19:13:38 <marshmallows> yes 19:13:41 <marshmallows> I like this channel :D 19:14:04 <marshmallows> but #declarative #procedural #functional .... all empty 19:14:41 <marshmallows> why? 19:15:17 <slereah_> Because it's usually easier to get help on a particular language than on a broad description of it, I suppose. 19:16:55 <slereah_> And esoteric can survive because really, there's not enough people to fill up chans of even the most popular esolangs 19:23:47 <ehird> marshmallows: #concatenative is n ot empty! 19:24:00 <ehird> slereah_: indeed, marshmallows's channels are too catch-all 19:24:05 <ehird> the concepts vary wildly between them 19:24:16 <ehird> #concatenative is basically a fancy way of saying #factor 19:24:19 <ehird> it's inevitable 19:24:53 -!- ehird has set topic: #esoteric - Extending Tetrationfuck to the reals with magnets. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/. 19:26:16 <marshmallows> have you seen Oz? 19:26:26 <ehird> briefly. 19:29:01 <lament> oz seems interesting but dead 19:29:46 <slereah_> Like Jesus? 19:29:56 <ehird> slereah_: jesus wasn't that interesting 19:30:16 <ehird> he was born to god, said some shit, died, undied, said some more shit, died, said he'd be back 19:30:18 <ehird> we're still waiting 19:30:34 <lament> marshmallows: i looked at mozart, found this: http://www.mozart-oz.org/mogul/ 19:30:46 <lament> it's mozart's equivalent of CPAN 19:31:14 <ehird> i wonder if anyone has developed a decentralized CPAN alike 19:31:16 <lament> then i stopped looking :) 19:31:31 <lament> also the joyful announcement on their front page, "Current Mozart is 1.3.2 released on June 15, 2006 19:31:44 <ehird> lament: 2006 isn't that bad 19:31:50 <ehird> brainfuck's last release was in '93 :) 19:32:11 <lament> no, brainfuck's _standard_ was 93 :) 19:32:32 <lament> and C was 89 (discounting what followed), yet it's hardly dead 19:32:35 <marshmallows> I need ideas! 19:32:41 <slereah_> Brainfuck's ESO standard was 2008 19:32:51 <marshmallows> If I drink enough coffee will I have a good idea 19:32:59 <slereah_> No 19:33:03 <slereah_> You will have a stroke 19:33:22 <slereah_> Ideas for what marshmallows? 19:33:23 <ehird> lament: urban m?ller never released a brainfuck distro post 93 19:33:35 -!- shinkuzin has joined. 19:33:40 <marshmallows> Well I can't decide what to program next 19:33:49 <lament> marshmallows: forth! 19:34:07 <slereah_> Program the Andrei Machine 9000 19:34:13 <slereah_> That way, I won't have to 19:34:17 <lament> better yet. write your programming language that's way better than Haskell. 19:42:10 -!- BMeph has joined. 20:08:47 -!- Corun has quit ("This computer has gone to sleep"). 20:18:42 -!- Judofyr has quit. 20:30:04 -!- Judofyr has joined. 20:42:40 -!- slereah_ has quit (Remote closed the connection). 20:43:11 -!- Slereah has joined. 21:00:29 -!- Corun has joined. 21:26:02 -!- Judofyr has quit. 22:18:34 -!- Corun has quit ("This computer has gone to sleep"). 22:21:46 -!- bsmntbombdood has quit (Read error: 113 (No route to host)). 22:28:01 -!- bsmntbombdood has joined. 22:37:51 <ehird> channel: dead all day! 22:40:39 <oklofok> almost 22:59:02 -!- Judofyr has joined. 23:47:18 -!- BMeph has quit (Connection timed out). 2008-03-23: 00:08:02 <marshmallows> trying to come up with an idea........................................ 00:23:04 <marshmallows> It's a slow day 00:27:46 <marshmallows> "human imagination can always outstrip the capabilities of machines."? 00:35:43 -!- Corun has joined. 00:35:52 <ehird> marshmallows: that's called "AI scares me" theory 00:36:00 <marshmallows> hehe 00:36:13 <marshmallows> maybe I should do something AI-ish 00:38:51 <ehird> marshmallows: the suicide rate over there is quite high 00:38:59 <ehird> i reccomend against doing anything ;) 00:39:23 <marshmallows> ehird you should give me ideas for a logic lang ~_~ 00:45:37 <marshmallows> cool stuff http://www.cs.ru.nl/~freek/comparison/comparison.pdf 00:47:50 <ehird> marshmallows: make it have just amb and some other primitive stuffaelr 00:47:55 <ehird> then implement the rest in the language 00:47:59 <ehird> (make the syntax extensible) 00:48:12 <ehird> the base of the self-hosted lib should ideally look like crazy stuff 00:48:23 <ehird> err 00:48:24 <ehird> arb 00:48:36 <ehird> err 00:48:36 <ehird> amb 00:52:54 <marshmallows> oh 00:53:09 <marshmallows> amb is implemented with call-with-current-continuation 00:53:26 <marshmallows> and call-with-current-continuation is a specific case of the J operator? 01:03:35 <oklofok> wuz J? 01:03:41 <oklofok> post-composes a lambda expression 01:03:46 <oklofok> what does that, like, mea 01:03:47 <oklofok> n 01:08:39 <ehird> marshmallows: amb is just a backtracking operator 01:09:02 <ehird> amb(a,b,c...) means 'pick one argument from the ones i give you and return it' 01:09:08 <marshmallows> you can't write amb without call-with-current-continuation 01:09:14 <marshmallows> in scheme.. anyway.. 01:09:27 <ehird> amb() means 'backtrack and try another argument to a previous amb. if we've tried everything on all of the ambs, yell about it and fail' 01:09:32 <ehird> so e.g.: 01:09:50 <ehird> foo = amb(1,2,3); if (foo < 3) then amb() 01:09:54 <ehird> foo will end up being 3 01:10:09 <ehird> since amb will backtrack until it doesn't get called with no arguments (or is out of arguments) 01:10:13 <marshmallows> can you write amb in C with longjmp? 01:10:15 <ehird> note that it will try every amb in scope 01:10:19 <ehird> marshmallows: no. 01:10:23 <marshmallows> why not? 01:10:29 <ehird> it needs to call the continuation multiple times 01:24:02 <ehird> marshmallows: hmm, my amb in scheme isn't working 01:24:02 <ehird> very odd 01:24:30 <marshmallows> show me? 01:24:43 <ehird> marshmallows: only after you look at this: http://homepage.mac.com/sigfpe/Computing/continuations.html 01:24:45 <ehird> continuations in C 01:24:46 <ehird> very simple 01:24:46 <marshmallows> I wrote a (stream based) Prolog in scheme the other day 01:25:14 * ehird writes amb with it 01:25:26 <ehird> for integers ;) 01:25:31 <ehird> hm wait 01:25:36 <ehird> any type 01:25:36 <ehird> :D 01:25:46 <marshmallows> using a tagged union? 01:26:04 <ehird> marshmallows: no, using a typedef 01:26:04 <ehird> :p 01:26:08 <ehird> hmm 01:26:11 <marshmallows> heh ok 01:26:13 <ehird> variadic functions in c must be at least one argument 01:26:35 <ehird> how unfortunate, still, simple solution 01:26:41 <ehird> define _amb and make amb a macro 01:26:45 <ehird> a variadic macro, though, so c99 01:26:53 <marshmallows> :( 01:27:00 <ehird> #define amb(...) _amb(amb_dummy, __VA_ARGS__) 01:27:00 -!- timotiis has quit ("leaving"). 01:27:16 <marshmallows> why not just call it amb(...) and fail(); 01:27:35 <marshmallows> the main reason 0 arg amb is good is because of apply 01:27:36 <ehird> marshmallows: because it's va_start(ap, last_param) 01:28:08 <ehird> ah wait 01:28:10 <ehird> first arg == arg count 01:29:06 <ehird> marshmallows: but you're right 01:29:07 <ehird> ok then 01:29:35 <marshmallows> thats cool 01:29:38 <marshmallows> the page you linked 01:29:41 <ehird> yes 01:30:37 <marshmallows> this is actually what goto is for though 01:32:04 <olsner> goto <3 01:32:36 <ehird> marshmallows: can't do this with goto 01:32:44 <ehird> this jumps across stack frames, and is just like scheme's call/cc 01:32:49 <ehird> recallable too 01:32:49 <ehird> etc 01:32:58 <ehird> you could implement scheme using the c-stack then use that to provide call/cc 01:33:21 <ehird> so: very impressive, and practically useful too: schemes that go into c, into scheme, into c etc with their ffis generally only provide limited continuiations 01:33:24 <ehird> with this you can provide full continuations 01:34:06 <marshmallows> i = 2; 01:34:06 <marshmallows> redo0: j = 2; i++; 01:34:07 <marshmallows> redo1: j++; if(j > i) goto redo0; 01:34:07 <marshmallows> if(i*j != 483) goto redo1; 01:34:18 <ehird> marshmallows: that can't jump across stack frames. 01:34:23 <ehird> ergo: no amb 01:34:24 <marshmallows> it doesn't need to 01:35:04 <marshmallows> I didn't mean goto is for implementing call-with-current-continuation 01:35:19 <marshmallows> I meant that goto is useful for nondeterminism 01:39:21 <ehird> marshmallows: i am modernizing the code in that article 01:39:23 <ehird> :D 01:42:19 <ehird> marshmallows: mmrhh, i hate handling malloc errors 01:42:29 <ehird> i'm tempted to just make people define CONT_MALLOC_FAILURE 01:42:29 <marshmallows> :( 01:42:36 <marshmallows> huh? 01:42:40 <ehird> or make them provide a procedure to call on malloc fail 01:42:40 <ehird> ;) 01:46:03 <ehird> marshmallows: heh, look at the exit(1) in that code 01:46:09 <ehird> a true example of 'offensive programming' 01:46:53 <ehird> I am considering replacing it with: printf("You SUCK! Go to HELL!\n"); exit(666); 01:47:01 <marshmallows> lol 01:47:31 <marshmallows> is that an else { /* this is impossible */ } ? 01:48:06 <ehird> that's an else { /* the programmer told us to restore the last continuation without making one in the first place. i hope his corpse is eaten by maggots. he is so stupid. */ } 01:50:33 <ehird> % ./amb 01:50:33 <ehird> You SUCK! Go to HELL! 01:50:35 <ehird> well jeez. 01:53:35 <ehird> marshmallows: take a look at my code? 01:53:54 <marshmallows> ok 01:54:01 <ehird> http://rafb.net/p/Ry3AsE59.txt cont.h 01:54:19 <ehird> http://rafb.net/p/D3uMKQ39.txt cont.c 01:54:32 <ehird> http://rafb.net/p/beqVCL71.txt amb.c 01:54:35 <ehird> compile like: 01:54:38 <ehird> cc amb.c cont.c -o amb 01:56:54 <marshmallows> :( 01:57:03 <marshmallows> 1*4 != 8 01:57:03 <marshmallows> You SUCK! Go to HELL! 01:57:05 <ehird> marshmallows: yep 01:57:09 <ehird> no idea why that's happening 01:57:14 * marshmallows cries 01:57:22 <ehird> as far as I can tell, the FAIL; in (argc == 0) should make it backtrack to the TRY 01:57:26 <ehird> which pops an argument from arb's list 01:57:33 <ehird> ah wait 01:57:35 <ehird> need to argc-- 01:57:46 <ehird> before the TRY 01:57:48 <ehird> still happens though 01:59:25 <marshmallows> get_context is returning NULL sometimes 01:59:31 <ehird> marshmallows: yes 01:59:33 <ehird> obviously 01:59:43 <ehird> no, wait 01:59:44 <marshmallows> cont_t *c = malloc(sizeof(cont_t)); 01:59:44 <marshmallows> long tos; 01:59:44 <marshmallows> if (!setjmp(c->registers)) { 01:59:45 <ehird> it's gcont that's the problem 01:59:47 <marshmallows> is suspect 01:59:49 <ehird> gcont is sometimes NULL 02:00:01 <marshmallows> gcont = get_context() 02:00:02 <ehird> when we do our FAIL 02:00:07 <ehird> which causes it to yell at us 02:00:40 <ehird> marshmallows: this kind of code is almost impossible to reason about because it copies data to the actual stack 02:00:49 <ehird> i don't think even gdb could handle it 02:00:58 <marshmallows> hm 02:00:59 <marshmallows> typedef struct _cont { 02:00:59 <marshmallows> jmp_buf registers; 02:01:07 <ehird> marshmallows: most of that shizz is from the article 02:01:09 <ehird> i just cleaned up the code 02:01:10 <marshmallows> oh sorry nevermind 02:02:07 <marshmallows> pbos[-i] ? :S 02:02:19 <marshmallows> I should read the whole thing .. 02:02:25 <marshmallows> any single part of it looks wrong :p 02:02:29 <ehird> marshmallows: the stack grows downwards 02:02:32 <ehird> so that's 02:02:34 <ehird> *(pbos - i) 02:08:34 <ehird> marshmallows: on a plus note, the example code he gives works with my version 02:09:35 <ehird> marshmallows: have you noticed that his example resembles a generator? 02:09:41 <ehird> indeed, TRY is pretty much yield 02:09:47 <marshmallows> I don't know what a generator is 02:10:07 <ehird> marshmallows: google it 02:10:14 <ehird> basically it's a function that can return multiple times 02:10:16 <ehird> python example 02:10:30 <ehird> def all_ints(): i = 0; while True: yield i; i += 1 02:10:43 <ehird> foo = all_ints(); foo.next() => 1; foo.next() = 2; ...etc... 02:12:02 <marshmallows> http://rafb.net/p/EBPm5B37.txt 02:12:30 <marshmallows> why did I write != o O_o 02:13:13 <ehird> marshmallows: i'll try that 02:14:22 <ehird> marshmallows: yours works! yay! 02:14:41 <ehird> declarative C is totally awesome 02:15:04 <marshmallows> yes :D 02:15:04 <ehird> marshmallows: interestingly when i make his integer(m,n) function just integer() and unbounded (from 0) the factor program crashes 02:15:08 <ehird> well, not crashes 02:15:09 <ehird> but infiniloops 02:15:12 <marshmallows> yes 02:15:18 * ehird tries to fix 02:15:32 <ehird> marshmallows: what is needed is a robust stack smashing library 02:15:34 <marshmallows> it's like [(x,y,z) | x <- [0..], y <- [0..], x*y = z] 02:15:42 <ehird> loads of different archs, a comprehensive test suite 02:15:43 <ehird> etc 02:15:51 <marshmallows> infinite loops because it's dfs 02:15:59 <marshmallows> [(x,y,z) | x <- [0..], y <- [0..x], x*y = z] -- problem solved 02:16:00 <ehird> then you can build stuff like this on top of it without worrying about fragile stack smashing 02:16:01 <ehird> :) 02:16:11 <marshmallows> why about the CLISP stuff Bruno wrote? 02:16:23 <marshmallows> maybe you can use that, although it doesn't build on mac last time I tried 02:16:41 <marshmallows> oh wait that's only the FFI part (not the other stuff) 02:19:00 <ehird> eek. my factor program jiust ate the worlds memory 02:19:15 <ehird> marshmallows: for ffi we have libffi 02:19:16 <marshmallows> I prefer #define TRY(i) { amb_t e = i; if (!save_context()) { return e; } } 02:19:26 <ehird> marshmallows: and that's less generic 02:19:32 <marshmallows> then you can just go while (argc--) TRY(va_arg(ap, amb_t)); 02:19:32 <ehird> my cont.h/cont.c are not tailored towards amb 02:19:50 <marshmallows> take a type with it then 02:19:57 <ehird> marshmallows: no. name clashes. 02:20:33 <marshmallows> it works 02:20:41 <marshmallows> #define TRY(type, i) { type e = i; if (!save_context()) { return e; } } 02:20:53 <ehird> marshmallows: not if i do TRY(type, e) it doesn't 02:21:50 <ehird> marshmallows: yay, i got my factor program working 02:23:19 <ehird> marshmallows: http://rafb.net/p/FoIwsu63.html 02:23:35 <ehird> i might make it use gmp sometime, that would be cool 02:24:18 <ehird> marshmallows: oh, wait, that only factors into two numbers 02:24:23 <ehird> looks like this will be more in-depth than i thought 02:24:23 <marshmallows> hey 02:24:24 <ehird> :) 02:24:32 <marshmallows> ehird, I wanna post amb to rosettacode 02:24:42 <ehird> marshmallows: uh, go ahead, but that continuation lib is biiig 02:24:49 <ehird> do i have to license it under anything? 02:24:53 <ehird> the continuation code ain't mine 02:24:55 <ehird> but the amb code is 02:27:12 <ehird> marshmallows: give me a cool thing to program using backtracking 02:28:00 <marshmallows> generate magic squares in this way http://muaddibspace.blogspot.com/2008/01/generate-test-and-intertwine-aim-here.html 02:28:51 <ehird> too much code ;) 02:29:04 <marshmallows> bah 02:29:09 <marshmallows> It's easy 02:31:05 <ehird> marshmallows: http://en.wikipedia.org/wiki/Continuation i'm trying to implement 'test' here 02:33:29 <ehird> marshmallows: it's hard 02:33:35 <marshmallows> in C? 02:33:43 <ehird> marshmallows: yes, using the cont.h funcions 02:44:05 <ehird> marshmallows: http://rafb.net/p/U9bYdU35.html fibonacci generator using cont.h 02:44:07 <ehird> going for today, bye :) 02:44:14 <marshmallows> bye 02:46:20 -!- ehird has quit ("This computer has gone to sleep"). 03:13:16 -!- jix has quit ("CommandQ"). 03:31:20 -!- adu has joined. 03:42:17 -!- Corun has quit ("This computer has gone to sleep"). 03:59:11 <marshmallows> grr 03:59:18 <marshmallows> there's a bug in that amb in C thing 03:59:32 <Slereah> Solution : Destroy all humans 05:57:52 -!- cherez has joined. 06:47:54 -!- shinkuzin has quit (Connection timed out). 07:04:52 -!- cherez has quit ("Leaving."). 07:39:35 -!- adu has quit (Remote closed the connection). 07:45:46 -!- oerjan has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 11:23:19 -!- oerjan has quit ("leaving"). 13:26:50 -!- timotiis has joined. 13:42:49 -!- Corun has joined. 13:49:36 -!- Corun has quit ("This computer has gone to sleep"). 14:43:18 -!- marshmallows has quit ("Leaving"). 14:53:12 -!- Corun has joined. 15:58:29 -!- Corun has quit ("This computer has gone to sleep"). 16:04:17 -!- Corun has joined. 16:29:38 -!- cherez has joined. 16:37:27 -!- p3k has joined. 16:38:21 -!- p3k has quit (Client Quit). 16:38:29 -!- p3k has joined. 16:48:29 -!- jix has joined. 17:18:42 -!- Judofyr has quit. 17:24:36 -!- Corun has quit ("This computer has gone to sleep"). 17:26:15 -!- p3k has quit. 17:27:00 -!- Corun has joined. 18:11:35 -!- cherez has quit ("Leaving."). 18:15:14 -!- Judofyr has joined. 18:24:01 -!- jix has quit ("CommandQ"). 18:51:51 -!- Judofyr_ has joined. 19:07:14 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 19:11:11 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 19:11:31 -!- Slereah has joined. 19:22:28 -!- RodgerTheGreat has joined. 19:25:15 -!- atsampson has quit (Read error: 104 (Connection reset by peer)). 19:27:31 -!- atsampson has joined. 19:48:51 <Slereah> From the Latin wikipedia : 19:48:52 <Slereah> printf("Salve, munde!\n"); 19:48:53 <Slereah> :D 19:49:17 <timotiis> that is so goign to be what I use for hello world programs now 19:51:53 <Slereah> Ludus Vitae est ludus mathematicus ab Anglico mathematico Iohanne Conway inventus. 19:51:56 <Slereah> Heh. 19:51:57 <Slereah> Cute. 19:57:30 -!- Corun has quit ("This computer has gone to sleep"). 20:14:26 -!- SimonRC_ has joined. 20:15:43 -!- SimonRC has quit (Read error: 111 (Connection refused)). 20:29:02 -!- Judofyr_ has changed nick to Judofyr. 20:42:31 -!- Corun has joined. 20:48:14 -!- jix has joined. 21:04:47 -!- Corun has quit ("This computer has gone to sleep"). 21:18:32 -!- timotiis has quit ("leaving"). 21:36:52 -!- Judofyr has quit. 21:55:57 <Slereah> Iota Jot and Zot makes me think of Rice Crispies. 21:57:31 <oklofok> http://kuvaton.com/kuvei/sparta2.jpg wow i found a movie reference joke funny 21:57:44 <oklofok> slightly 21:57:55 <oklofok> hmm 21:58:12 -!- Corun has joined. 21:58:59 <oklofok> Slereah: that would make a great cereal 22:00:40 -!- calamari has joined. 22:01:43 <Slereah> The three combinator elves. 22:05:01 <Slereah> "During World War II they posed patriotically in military clothing, urging consumers to "Save Time, Save Fuel, Save Work"." 22:05:12 <Slereah> Delicious propaganda. 22:57:34 -!- Judofyr has joined. 23:00:54 -!- timotiis has joined. 23:50:59 -!- Corun has quit ("This computer has gone to sleep"). 23:54:25 -!- Judofyr has quit. 2008-03-24: 00:07:30 -!- ihope has joined. 00:07:54 -!- Corun has joined. 00:15:20 -!- Tritonio_ has quit (Remote closed the connection). 01:24:42 -!- timotiis has quit ("leaving"). 01:47:16 -!- jix has quit ("CommandQ"). 02:00:39 * AnMaster tabs the heisenbug 02:00:44 <AnMaster> from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)". 02:00:47 <AnMaster> at the wiki 02:01:02 -!- GreaseMonkey has joined. 02:01:13 <AnMaster> I hate sql errors on the wiki 02:45:58 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 02:46:40 -!- Slereah has joined. 02:50:50 <AnMaster> RUBE looks like a really cool language 02:51:45 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 02:52:45 -!- Slereah has joined. 03:04:13 -!- ihope has quit (Read error: 110 (Connection timed out)). 04:01:18 -!- Corun has quit ("This computer has gone to sleep"). 04:47:49 -!- calamari has left (?). 04:49:16 -!- adu has joined. 05:07:03 -!- ihope has joined. 05:28:02 -!- ihope has quit (Read error: 110 (Connection timed out)). 05:55:17 -!- boily has joined. 06:09:20 -!- CakeProphet has joined. 06:10:08 -!- boily has quit ("quit quit quit."). 06:30:54 -!- CakeProphet has quit ("haaaaaaaaaa"). 07:03:11 -!- adu has left (?). 07:28:54 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 07:41:21 -!- bsmntbombdood has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 10:02:09 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 10:28:21 -!- ihope has joined. 10:49:36 -!- ihope has quit (Read error: 110 (Connection timed out)). 12:44:45 -!- Hiato has joined. 12:45:32 <Hiato> wassabi all 12:54:35 -!- Hiato has left (?). 13:05:56 -!- Judofyr has joined. 14:00:54 -!- timotiis has joined. 14:03:42 -!- Corun has joined. 14:25:30 -!- jix has joined. 15:14:35 -!- Corun has quit ("This computer has gone to sleep"). 15:47:37 -!- Corun has joined. 16:02:48 <Slereah> Is there a version of BF that accepts unbalanced brackets? 16:03:20 <Slereah> Where [ would just halt the program for 0 and ] send it back to the beginning. 16:04:22 <Slereah> The webarchive for Iota doesn't work anymore. 16:09:33 -!- timotiis has quit (Read error: 104 (Connection reset by peer)). 16:13:30 -!- timotiis has joined. 16:16:53 -!- vixey has joined. 16:30:52 <Slereah> Is a string of 1 in jot just ^a^b^c^d... ```abcd... ? 16:38:04 <AnMaster> Deewiant, heh, y with positive values was broken but mycology didn't detect it due to a number of improbably bugs canceled it out for the values mycology tested 16:38:16 <AnMaster> I saw one bug and fixed it and then the rest showed up 17:08:43 -!- vixey has changed nick to marshmallows. 17:37:17 -!- atsampson has quit (Read error: 113 (No route to host)). 17:38:05 -!- atsampson has joined. 18:06:51 <lament> guys 18:06:59 <lament> do we want to be logged by irseek? 18:11:34 -!- jix has quit ("This computer has gone to sleep"). 18:12:41 <Slereah> I dunno. I don't want people to know I have that dead hooker under my bed 18:13:15 <lament> Slereah: the channel is already being logged 18:13:23 <Slereah> OH SHI- 18:13:36 <Slereah> brb, going to Thailand 18:13:46 <lament> the question is whether we want to be logged by irseek as well as by ircbrowse.com 18:13:57 <Slereah> What would be the difference? 18:14:04 <lament> more exposure :) 18:14:46 <marshmallows> Slereah: Why don't you cook and eat it? 18:14:47 <Slereah> I'm sure people are dying to read all about esoteric languages 18:14:59 <Slereah> marshmallows: It might be full of diseases 18:15:00 <lament> well 18:15:14 <marshmallows> yes, hence the cooking stage 18:15:21 <lament> at some point there was a big scandal because irseek was logging channels without permission 18:15:25 <lament> which is against freenode's policy 18:15:34 -!- oerjan has joined. 18:15:56 <lament> so now they're seeking permission 18:27:47 -!- asiekierka has joined. 18:29:12 <asiekierka> Woah, i wasn't here in a lond time 18:29:14 <asiekierka> long( 18:29:15 <asiekierka> long* 18:29:44 <oerjan> make up your mind, function or pointer? :D 18:30:33 <asiekierka> long is not a function. It's a type. 18:30:34 <Slereah> heh 18:30:37 <asiekierka> so it must be a pointer 18:30:41 <asiekierka> i can still use 18:31:18 <asiekierka> long long 18:31:20 <oerjan> hm... 18:31:32 <asiekierka> I was thinking of an esoteric language that uses only 2 commands: 18:31:38 <asiekierka> "long" and "long long" 18:31:49 * oerjan is unclear on C nested anonymous function type syntax 18:32:08 <olsner> is there any type syntax in C that is clear? 18:32:15 <asiekierka> "long" is a 32-bit value in C, and "long long" is a 64-bit one 18:32:20 <marshmallows> not really ;P 18:32:23 <marshmallows> C syntax is quite terrible 18:32:29 <asiekierka> i think "long long long" is either 96-bit or 128-bit 18:32:51 <olsner> I think long long long doesn't exist at all 18:33:05 <asiekierka> oh 18:33:07 <asiekierka> i see 18:33:11 <marshmallows> it doesn't in C 18:33:11 <asiekierka> so i must create it 18:33:20 <marshmallows> I don't think anyones talking about actual C though..? 18:33:21 <asiekierka> along with "long long long long" and "long long long long long long long long" 18:33:27 <asiekierka> nope. 18:33:45 <olsner> oh, your conversation is not context free 18:33:45 <Slereah> But what will you do with all those longs! 18:33:52 <asiekierka> Also, my language will be called 64L, or "long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long" 18:33:56 <asiekierka> xD 18:34:16 <asiekierka> It will be created exclusively for the GameBoy Advance 18:34:39 <asiekierka> you separate commands by |. 18:34:46 <asiekierka> long will probably be "rotate IP" 18:34:54 <asiekierka> long long will probably be "execute IP" 18:34:55 <lament> so.. anybody against us being logged by irseek? 18:35:28 <asiekierka> and long long long long will be "magically turn into human" (and since long long long long dosen't exist in C, the interpreter will show an error) 18:35:59 <Slereah> What happens if I type dong? 18:36:11 <asiekierka> ok, some more instructions 18:36:11 <Slereah> Long dong. 18:36:18 <asiekierka> or wait 18:36:31 <asiekierka> i'll make my language have 3 commands, "long", "ding" and 18:36:32 <asiekierka> "dong" 18:36:37 <asiekierka> long is "rotate IP" 18:36:44 <asiekierka> ding is "execute IP" 18:36:56 <asiekierka> what about dong? 18:37:07 <Slereah> It should output this : 8===D 18:37:24 <asiekierka> no 18:37:31 <asiekierka> it will instead make the GBA a mirror 18:37:41 <asiekierka> and i'll call this "a bug" 18:37:46 <Slereah> I don't know much of GB programming 18:39:12 <AnMaster> <lament> so.. anybody against us being logged by irseek? 18:39:13 <AnMaster> yes 18:39:26 <AnMaster> lament, their bots are annoying, often several at once 18:39:40 <AnMaster> bbl food 18:58:13 <asiekierka> which is the best esoteric language with a small amount of commands? 18:58:16 <asiekierka> (excluding BF) 18:59:36 <marshmallows> not really esoteric but 'lambda' is pretty good 19:00:11 <Slereah> Define "best" 19:01:04 <asiekierka> It's fun to make stuff in. 19:01:45 <marshmallows> http://en.wikipedia.org/wiki/Lambda_calculus 19:02:12 <Slereah> Lazy Bird can take in sum lambda 19:02:48 <asiekierka> so, what's fun to make stuff in, from esoteric languages? 19:03:23 <Slereah> Esoteric programming isn't fun. It was designed to break programmers psychologically. 19:04:21 <asiekierka> BF is fun 19:04:40 <oklofok> <asiekierka> "long" is a 32-bit value in C, and "long long" is a 64-bit one <<< these actually defined in the standard nowadays? 19:04:45 <olsner> waterboarding is torture^H^H^Hthe latest esoteric programming language 19:05:06 <oklofok> ah, right. 19:05:09 <marshmallows> the exact bit sizes are not part of any standard 19:05:16 <Slereah> Let's make an esolang based on waterboarding 19:05:26 <Slereah> Every instruction squirts water in your mouth 19:06:37 <asiekierka> Let's make an esolang based on boxing. 19:06:48 <asiekierka> Every instruction punches you, but every instruction is a different place 19:07:05 <asiekierka> B is "punch you in the body", E is "punch you in the eyes", H is "punch you in the head"... 19:07:15 <lament> BEH 19:07:19 <olsner> I believe long is defined to be >= 32 bits and that long long is a non-standard extension 19:07:33 <Slereah> And then, let's see how to make a self-interpreter! 19:07:52 <oklofok> isn't it just short<=int<=long 19:07:53 <asiekierka> it's easy 19:08:06 <asiekierka> M is "punch you in the mind", and it may activate anything 19:08:12 <asiekierka> including a self-self-self-interpreter 19:08:27 <oklofok> asiekierka: try befunge, it's fairly popular here nowadays 19:08:31 <oklofok> thanks to AnMaster and Deewiant 19:08:42 <asiekierka> Befunge? 19:08:43 <oklofok> i mean, quantitively popular 19:08:44 <Slereah> Or Rube! 19:08:44 <asiekierka> why befunge? 19:08:51 <oklofok> befunge is quite fun 19:08:57 <Slereah> Rube seems like a hoot and two yahoos 19:08:57 <asiekierka> What about a language called "Rubeek's Cube"? 19:09:57 <asiekierka> What about a contest to fit the best Befunge-93 program in 10x10 space? 19:10:42 <AnMaster> oklofok, ? 19:10:43 <AnMaster> ?? 19:11:33 <asiekierka> is there a befunge tutorial, though? 19:11:50 <Slereah> Probably 19:12:53 <olsner> *but*, is there a monad tutorial in befunge? 19:13:07 <Slereah> Monads don't exist and never will! 19:13:13 <Slereah> Shush 19:15:31 <oklofok> AnMaster: you and Deewiant talk about befunge 24/7, don't try to deny that 19:15:59 <AnMaster> oklofok, we do 19:16:11 <AnMaster> Slereah, yes rube looks interesting 19:16:14 <asiekierka> and i will join 19:16:19 * AnMaster goes back flying in flightsim 19:17:08 <Slereah> It also has a swell online interpreter 19:17:14 <Slereah> And that Lemmings feeling. 19:18:03 <oklofok> the other day i realized i love permutations 19:18:06 <oklofok> they are fucking awesome 19:18:19 <oklofok> perhaps they deserve a languages based on them 19:18:39 <marshmallows> what's good about permutations? 19:18:49 <oklofok> ...good? 19:18:49 -!- timotiis_ has joined. 19:18:53 <oklofok> i just like them 19:19:19 <olsner> permutative programming? 19:19:24 <olsner> how'd that look? 19:19:36 <oklofok> lament: nothing wrong with letting people log #esoteric imo 19:19:43 <oklofok> in case you are still collecting opinions 19:19:59 <oklofok> i don't know, but i'm hoping very confusing and weird 19:20:29 <Slereah> No need to hope. 19:21:23 <olsner> maybe the program permutes after each step? 19:22:15 <oklofok> hmm 19:22:36 <oklofok> something like a massive cube, kinda in the movie, which permutes like crazy and occasionally grows in size 19:23:05 <oklofok> and you just specify in which cube to begin, and what size the cube is :O 19:23:35 <oklofok> long story short: awesome shit 19:24:39 -!- oerjan has quit ("leaving"). 19:29:38 <olsner> maybe if certain cubes has certain side effects (like "print register 0", "increment register 0"), and the program contains a series of commands back/forward/up/down/left/right 19:29:55 <olsner> so you just have to arrange for the IP to traverse the side-effects in the right order 19:30:24 <olsner> and every step or every n steps, the cubes rearrange shuffling the IP with it 19:31:22 -!- timotiis has quit (Read error: 110 (Connection timed out)). 19:31:29 <olsner> as a prestudy you could make a labyrinthine programming language that's the same but without the permutating 19:38:43 -!- AnMaster has quit ("rebooting to new kernel"). 19:45:54 -!- Judofyr has quit. 20:08:25 -!- asiekierka has quit. 20:09:31 -!- AnMaster has joined. 20:30:32 -!- Corun has quit ("This computer has gone to sleep"). 20:49:04 -!- asiekierka has joined. 21:00:13 -!- Corun has joined. 21:26:17 -!- timotiis_ has quit ("leaving"). 21:26:26 -!- timotiis has joined. 21:29:46 -!- CakeProphet has joined. 21:34:53 -!- CakeProphet has quit ("haaaaaaaaaa"). 21:48:36 -!- CakeProphet has joined. 21:48:47 -!- timotiis_ has joined. 21:50:32 -!- appletizer has joined. 21:50:39 -!- appletizer has left (?). 22:02:48 -!- asiekierka has quit. 22:05:35 -!- AnMaster has quit (Connection timed out). 22:07:40 -!- CakeProphet has quit ("haaaaaaaaaa"). 22:13:37 -!- AnMaster has joined. 22:17:36 -!- timotiis has quit (Read error: 110 (Connection timed out)). 23:10:26 -!- olsner has quit ("Leaving"). 23:29:25 -!- jix has joined. 23:43:21 -!- Corun has quit ("This computer has gone to sleep"). 23:49:30 -!- Corun has joined. 2008-03-25: 00:15:34 -!- peterecus has joined. 00:16:03 <peterecus> hello 00:16:41 <marshmallows> Hi 00:17:33 -!- peterecus has quit (Client Quit). 01:38:36 -!- timotiis_ has quit ("leaving"). 01:44:19 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 01:46:16 -!- Slereah has joined. 01:50:07 -!- sebbu has quit ("@+"). 02:40:31 -!- jix has quit ("CommandQ"). 03:06:29 -!- GreaseMonkey has joined. 04:58:35 -!- Corun has quit ("WWDC HO!"). 05:07:27 -!- adu has joined. 05:15:35 <marshmallows> What's EVERY syntax of EVERY programming language? 05:16:16 <adu> marshmallows: well, that's gonna take some time to compile 05:16:27 <marshmallows> I'll make a cup of a tea :P 05:16:31 <adu> marshmallows: hey, I remember you from some other channel... 05:16:52 <marshmallows> hm I hope I wasn't doing anything out of order 05:16:58 <marshmallows> adu: #scheme ? 05:17:53 <adu> marshmallows: most of it can be summarized by (PreOp X)|(X InOp Y)|(Y PostOp)|(between LeftThing RightThing X)|(sepBy X Sep) 05:18:06 <marshmallows> PARSEC!!! 05:18:09 <adu> :) 05:18:12 <marshmallows> Woooo oooo 05:18:16 <marshmallows> I love parsec o_o 05:18:34 <marshmallows> so uh.. 05:18:34 <adu> =) 05:18:49 <marshmallows> (s-expression (syntax (lets you) nest things)) 05:19:12 <adu> thats all handled by (between '(' ')' SExp) 05:19:18 <marshmallows> haskell = Pretty `good` (too ++ infix is) neat 05:19:31 <adu> I had an idea about infix and forth recently 05:19:39 <marshmallows> prolog(Has) :- very_uniform(Syntax), as(Well). 05:20:11 <marshmallows> J:.@P7L1ke! 05:20:12 <adu> well, I was thinking about Haskells `x` syntax, and I had noticed that the back-quotes effectively transformed what was inside of it to move backwards before evaluation 05:20:34 <marshmallows> language Java { 05:20:46 <marshmallows> Is.Pretty.Structured(); 05:20:47 <marshmallows> } 05:20:53 <adu> and in Haskell (x) always means "sections" but 'x' could mean move x forward before evaluation 05:21:18 <marshmallows> ++++++<+++->>>[+>++--.-.<>>>]<>++,+. 05:21:24 <adu> so you could do things like ('+' 4 5) == 4 5 `+` 05:21:32 <adu> to simulate forth and lisp at the same time! 05:21:59 <adu> my favorite APL/J/K like language is Funge-98 05:22:24 <adu> I have the Funge98 spec as my browser's homepage :) 05:22:28 <adu> it never gets old... 05:22:36 <marshmallows> lol 05:23:18 <marshmallows> sub perl { and $php; have =~ s/good/quoting/; facilities() }; 05:23:49 <marshmallows> what other syntax is there 05:24:01 <adu> My 2 favorite new-languages, right now, are Disciple and Fortress 05:24:48 <adu> although I only like them because Disciple is the only language I know with an explicit Effect system, and Fortress has the most amazing Array syntax 05:25:23 <adu> I'm actually thinking about implementing a new operator in Parsec for it, called "repBy" 05:25:24 <marshmallows> show me the syntax! 05:25:32 <adu> well its multi-line 05:25:37 <adu> [1 0 0 05:25:39 <adu> 0 1 0 05:25:49 <adu> 0 0 1 ;; 1 0 0 05:25:57 <adu> 0 1 0 05:26:03 <adu> 0 0 1] 05:26:14 <adu> would be a 3*3*2 array 05:26:53 <adu> which can also be written [1 0 0;0 1 0;0 0 1;;1 0 0;0 1 0;0 0 1] 05:26:58 <adu> or [[1 0 0;0 1 0;0 0 1] [1 0 0;0 1 0;0 0 1]] 05:27:03 <marshmallows> ok 05:27:05 <marshmallows> that's cool 05:27:22 <adu> or [[[1 0 0] [0 1 0] [0 0 1] [1 0 0] [0 1 0] [0 0 1]] 05:27:38 <adu> they are all equivalent in Fortress 05:28:19 <adu> the ";" is repeated in order to get higher-dimentional separation 05:28:45 <adu> so I'm trying to figure out how to implement that in a Parsec-like "repBy" combionator 05:29:17 <lament> adu: disciple = ddc? 05:29:20 <adu> yes 05:29:24 <lament> how do you like it? 05:29:34 <adu> never used it, only been reading the wiki 05:29:39 <lament> oh 05:29:44 <adu> but so far I like it 05:30:08 <adu> although a friend of mine things there's too many "!" marks 05:30:54 <lament> !!! 05:31:03 <adu> hehehe 05:31:37 <adu> lament: are you related to DDC? 05:31:40 <lament> no 05:31:55 <adu> lament: how do you like it? 05:32:04 <lament> never used it, only been reading the wiki 05:32:10 <adu> heh, like me 05:32:55 <lament> exactly! omg we're like soulmates rofl!!! asl? 05:33:03 <adu> lol 05:33:35 <adu> I'm old, comfortable with my sexuality, and here. 05:34:21 <adu> but anyways, have I talked about my language yet 05:34:57 <adu> I have a plan for removing the cruft of some other languages 05:35:36 <lament> okay, start from perl, cobol and c++, come back when you removed cruft from those :) 05:36:03 <adu> for example, let, let* and letrec in scheme, in my language would be "let (x=y) {...}", "let [x=y] {...}", and "let {x=y} {...}" respectively, none of that "*" business 05:36:18 <marshmallows> :O 05:36:19 <marshmallows> SYNTAX 05:36:23 <adu> hehehe 05:37:03 <adu> my language would be very schemish, and very haskellish too 05:37:13 <lament> adu: how about just replacing all those things with a single statement "let"? 05:37:18 <adu> all built up from 5 primitives 05:37:20 <lament> i mean, who really needs separate let and letrec? 05:37:51 <adu> well, i dunno 05:38:33 <marshmallows> what are these primitives? 05:38:56 <lament> let(, let[, let{, lambda and define 05:39:01 <adu> (.) (:) () [] {} 05:39:10 <adu> thats all 05:39:14 <lament> ha, almost 05:39:14 <adu> everything else is a function 05:39:15 <marshmallows> omg :D 05:39:17 <marshmallows> this is awesome 05:39:38 <marshmallows> have you implemented it? 05:39:42 <adu> partially 05:40:05 <marshmallows> what do they all do? 05:40:17 <adu> I've implemented a parser and a piece of the interpreter in Python + Ply, but I'm planning on re-writing it in Haskell + Parsec 05:40:48 <lament> if you have those things as primitives, do you actually need let? 05:41:00 <lament> i suppose they fuck with environments in some way? 05:41:05 <adu> (.) is homogeneous cons (:) is heterogeneous cons, (which correspond to [1, 2, 3] and [1; "Hello"; True] type lists respectively) 05:41:40 <adu> and () [] and {} are just wraps that keep their info, and pass the syntax tree inside of them to functions called "Tuple" "List" and "Set" 05:42:04 <adu> and the plan is the have these 3 functions add some kind of methods, but I don't really want them to be builtin 05:43:02 <marshmallows> ah cool 05:43:14 <adu> so [1, 2, 3] is syntax for 1 . 2 . 3 . [] 05:43:24 <adu> just as {1, 2, 3} is syntax for 1 . 2 . 3 . {} 05:43:54 <adu> very lispish 05:44:10 <lament> so....... 05:44:13 <lament> why not just use haskell? :) 05:44:24 <adu> because Haskell doesn't have native heterogeneous lists 05:44:35 <lament> sure it does, see Typable 05:44:51 <adu> but I am using it to build the next version of the interpreter 05:45:32 <marshmallows> It wouldn't be a problem 05:45:50 <adu> I'm aware of typeable 05:45:55 <marshmallows> no no 05:45:57 <adu> there are other reasons 05:46:08 <lament> besides, what do you actually want heterogenous lists for? 05:46:15 <marshmallows> data Value = VInt Integer | VString String | VTuple Value Value ... 05:46:23 <marshmallows> typeable is gross 05:46:23 <adu> lament: do statements 05:47:06 <adu> begin expressions, progn expressions, etc 05:47:39 <adu> these are all things constructed with a heterogeneous cons-like operator 05:47:48 <adu> in Haskell this turns out to be (>>=) 05:49:02 <adu> so the "..." in "let {x=y} {...; ...}" would probably have ";" because its probably doing things 05:49:27 <lament> yes, except >>= is not heterogenous 05:50:11 <adu> lament: how so? 05:50:36 <lament> for one, haskell has it, and you just said haskell didn't have heterogenous lists :) 05:50:46 <adu> hehehe 05:51:00 <lament> for two, it has a type m a -> (a -> m b) -> m b 05:52:17 <adu> it is a little stricter than heterogeneous lists 06:02:49 <adu> later 06:02:58 <adu> I should sleep 06:03:02 <lament> it's not any different from a -> [a] -> [a] 06:03:13 <lament> the types of the first and the second argument are different 06:10:35 <adu> (:) :: a -> m b -> m c 06:10:49 <adu> so really, (:) = flip (>>=) 06:21:38 -!- adu has quit (Remote closed the connection). 06:53:00 -!- RodgerTheGreat has quit. 07:30:40 -!- AnMaster_ has joined. 07:44:01 -!- AnMaster has quit (Success). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:09:58 -!- immibis has joined. 08:33:41 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to). 09:14:51 -!- sebbu has joined. 09:27:22 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 12:34:18 -!- asiekierka has joined. 12:34:31 <asiekierka> Is there an esoteric language that can be used with just paper and pencil? 12:42:03 -!- timotiis has joined. 12:59:55 <oklofok> asiekierka: all can 13:00:05 <oklofok> *most can 13:05:45 <asiekierka> ... what's the best one for it though 13:09:14 <asiekierka> what about an esoteric language "Penper"? 13:09:17 <asiekierka> Paper esoteric language 13:10:07 <asiekierka> I thought of memory consisting of ~500 dots on paper. If you set it, you draw a circle around it. 13:10:11 <asiekierka> You can't clear it though. 13:10:21 <asiekierka> So I assume you have an infinite supply of paper. 13:16:35 <asiekierka> You know, i think Piet is the best one 13:20:05 -!- puzzlet has quit (Remote closed the connection). 13:20:13 -!- puzzlet has joined. 13:30:17 -!- jix has joined. 13:57:13 <oklofok> well you want to have a language where memory isn't really erased that much 13:57:28 <oklofok> so perhaps a cyclig tag system might do the tric 13:57:28 <oklofok> k 13:58:02 <oklofok> queues are pretty much the only data structure paper handles without complaining 14:38:41 -!- AnMaster_ has changed nick to AnMaster. 15:51:46 <SimonRC_> oklofok: or immutable tables 15:51:50 -!- SimonRC_ has changed nick to SimonRC. 16:45:39 -!- marshmallows has quit (Nick collision from services.). 17:07:14 -!- asiekierka has quit (Read error: 110 (Connection timed out)). 18:21:52 -!- RodgerTheGreat has joined. 18:25:12 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 18:25:17 -!- Slereah has joined. 18:29:27 -!- slereah_ has joined. 18:30:15 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 18:39:02 -!- slereah__ has joined. 18:39:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 18:46:11 -!- slereah__ has quit (Remote closed the connection). 18:46:26 -!- slereah__ has joined. 19:05:20 -!- olsner has joined. 19:06:01 -!- slereah_ has joined. 19:07:14 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 19:11:37 -!- slereah__ has joined. 19:25:13 -!- slereah_ has quit (Read error: 110 (Connection timed out)). 20:05:24 -!- oerjan has joined. 20:13:52 -!- timotiis_ has joined. 20:26:46 -!- timotiis has quit (Read error: 110 (Connection timed out)). 21:06:02 -!- vixey has joined. 21:19:00 -!- oerjan has quit ("leaving"). 21:26:54 <vixey> oklofok : wanna see a Curry example? 21:28:26 <oklofok> sure 21:28:47 <vixey> you know Prolog right? 21:28:50 <GregorR> Mmmmmmmmmm, I'd love to see an example of Curry. And eat it. 21:28:54 <oklofok> although i find the spontaneous change of channel confusing 21:29:06 <vixey> http://rafb.net/p/jZJ8fv54.txt 21:29:12 <oklofok> i know prolog, somewhat 21:29:21 <vixey> basically 21:29:33 <vixey> Curry seems no better than Prolog with Haskell syntax 21:29:46 <oklofok> heh 21:29:56 <oklofok> they say it's almost a superset of haskell though. 21:30:47 <lament> wow, looks ugly :) 21:31:23 <oklofok> i found it pretty 21:32:02 <vixey> well the problem is saturn2 is not efficient 21:33:37 <vixey> I want to see what's good about it but I don't :| 21:47:10 -!- Judofyr has joined. 22:44:41 * AnMaster got a cold :( 23:17:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 23:18:36 -!- Judofyr has joined. 23:37:42 -!- jix has quit (Nick collision from services.). 23:37:52 -!- jix has joined. 23:47:33 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 23:47:46 -!- Judofyr has joined. 23:55:35 -!- MommeMC has joined. 23:55:46 -!- MommeMC has quit (Client Quit). 2008-03-26: 00:00:04 -!- timotiis_ has quit ("leaving"). 00:36:41 <SimonRC> :cry: http://lucis.net/stuff/clarke/star_clarke.html 00:41:23 -!- vixey has quit (Read error: 104 (Connection reset by peer)). 01:02:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 01:02:39 -!- Judofyr has joined. 01:09:44 -!- sebbu has quit ("@+"). 01:12:04 -!- jix has quit ("CommandQ"). 01:17:23 -!- Sgeo has joined. 01:19:54 <oklofok> SimonRC: why cry? 01:20:11 <oklofok> is it DON'T READ THIS THING I PASTED IT WILL BE A WASTE OF TIME cry? 01:22:00 <SimonRC> no 01:22:09 <SimonRC> it is worth reading 01:22:14 <SimonRC> well, I liked it at least 01:24:01 <oklofok> i shall read i then, after my sleepz 01:24:04 <oklofok> night -> 01:29:55 <SimonRC> zzzz 03:25:54 -!- atsampso1 has joined. 03:32:43 -!- atsampson has quit (Read error: 110 (Connection timed out)). 04:03:17 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1206500570-physed.png 04:03:20 <RodgerTheGreat> ^ new comic! 04:19:11 -!- GreaseMonkey has joined. 04:44:51 <RodgerTheGreat> ...and no one cares, apparently 04:47:25 <RodgerTheGreat> :< 04:55:50 -!- Overand has quit (Read error: 104 (Connection reset by peer)). 04:55:53 -!- Overand has joined. 05:22:01 -!- Sgeo has quit (Remote closed the connection). 05:49:30 -!- adu has joined. 06:05:08 -!- GreaseMonkey has quit ("shitgtg"). 06:33:44 -!- RodgerTheGreat has quit. 06:49:06 -!- vixey has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:13:49 -!- Judofyr has quit (Remote closed the connection). 08:13:57 -!- Judofyr has joined. 08:17:12 -!- Judofyr_ has joined. 08:17:12 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 08:17:48 <slereah__> Anyone thar? 09:01:38 -!- adu has quit ("Computer went to sleep"). 09:44:21 -!- olsner has quit ("Leaving"). 10:12:35 <oklofok> I IS 10:12:41 <oklofok> DEAL WITH IT 10:29:33 <oklofok> SimonRC: yeah quite fun 10:29:40 <oklofok> the story 10:51:06 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)). 10:51:26 -!- Judofyr has joined. 11:18:29 -!- Judofyr has quit (Remote closed the connection). 11:19:05 -!- Judofyr has joined. 11:28:54 -!- jix has joined. 12:17:40 -!- vixey` has joined. 12:20:04 -!- vixey has quit (Read error: 113 (No route to host)). 12:34:09 <AnMaster> <slereah__> Anyone thar? 12:34:11 <AnMaster> yes 12:53:10 -!- vixey` has quit (Read error: 104 (Connection reset by peer)). 13:09:19 <SimonRC> . 13:21:45 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 13:22:21 -!- Judofyr has joined. 13:22:41 -!- puzzlet has quit (Remote closed the connection). 13:22:49 -!- puzzlet has joined. 13:36:42 <slereah__> Is there an actual proof of the jot-CL translation? 13:36:55 <slereah__> The application function doesn't seem very obvious to me 14:33:28 -!- slereah__ has quit (Remote closed the connection). 14:33:44 -!- slereah__ has joined. 14:40:02 -!- RodgerTheGreat has joined. 14:58:03 -!- oklofok has changed nick to oklopol. 15:02:37 -!- RedDak has joined. 15:29:18 -!- slereah_ has joined. 15:30:22 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 16:47:53 -!- timotiis has joined. 17:05:44 -!- marshmallows has joined. 17:23:20 -!- Tritonio_ has joined. 18:24:50 -!- RedDak has quit (Remote closed the connection). 18:27:28 -!- Sgeo has joined. 19:20:44 -!- sebbu has joined. 19:22:05 -!- olsner has joined. 19:35:27 -!- RedDak has joined. 20:38:32 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 21:05:36 <AnMaster> slereah_, of what? 21:09:19 <slereah_> Jot. 21:09:34 <slereah_> It is proved TC by correspondance with Combinatory Logic 21:09:53 <slereah_> But the function used for application doesn't seem all that obvious to me. 21:16:56 <olsner> oh, is that Combinatory Logic I hear? 21:17:11 <slereah_> Indeed it is. 21:18:38 <olsner> hmm, yeah, that's pretty obfuscated 21:19:15 <slereah_> Problem is, Jot doesn't have a priority operator. 21:19:38 <slereah_> So I have no idea how 1 functions as the apply operator in the general case. 21:25:32 <olsner> [f1] -> \xy -> [f](xy) => [1] -> \xy -> xy 21:25:41 <olsner> it basically seems to be some kind of prefix notation 21:26:41 <slereah_> The problem I have is, 11100 for k doesn't obviously means that 11110011100 will translate to `kk 21:26:54 <olsner> it doesn't? 21:27:05 <slereah_> Well, it does apparently 21:27:21 <slereah_> But it doesn't come up as obvious to me. 21:27:23 <olsner> you mean, it's not obvious *to you*? :P 21:27:31 <slereah_> Exactly. 21:27:35 <olsner> eh, so you said at the same time 21:27:37 <olsner> :P 21:28:59 <slereah_> The problem is that the meaning of a string depends on what's before it. 21:33:12 <oklopol> what? 21:33:21 <oklopol> isn't jot's notation just the unlambda notation 21:33:55 <olsner> that's iota 21:34:18 <oklopol> ...aren't both? 21:34:25 <oklopol> isn't it all unlambda 21:34:30 <oklopol> i have to check now 21:34:30 <oklopol> lofl 21:34:32 <slereah_> Nah. 21:34:39 <olsner> unlambda is [`ski] 21:34:41 <slereah_> Jot doesn't have an apply operator 21:35:43 <oklopol> umm, isn't jot the exact same as iota? 21:36:26 <oklopol> jot's 1 doesn't actually have a meani 21:36:27 <oklopol> ng? 21:36:45 <oklopol> i was assuming it's the combinator from iota, but here just represented with binary 21:36:45 <slereah_> Empty string is i 21:36:56 <oklopol> well yes, of course 21:37:14 <slereah_> F 1 is ^xy.F(xy) 21:37:14 <oklopol> or not of course 21:37:23 <slereah_> F 0 is FSK 21:37:59 <oklopol> F 1, where F is the beginning of the program? 21:38:03 <slereah_> It's easy enough to build S and K from the empty string, but I'm not sure what happens in the general case, since it always depends on what's before 21:38:04 <slereah_> Yes. 23:23:10 -!- RedDak has quit (Remote closed the connection). 23:25:40 * SimonRC goes to bed 23:28:03 -!- jix has quit ("CommandQ"). 2008-03-27: 00:08:53 -!- olsner has quit ("Leaving"). 00:09:33 <slereah_> What's a good introduction on electronics for computing purpose? 00:15:22 <oklopol> why not do like me and just know everything without explicitly learning it? 00:17:06 <slereah_> I tried, but I can't find the shoes. 00:19:41 <oklopol> i just use whatever gonkers you can fimble your mendelas on 00:19:48 <oklopol> *-i 00:26:37 -!- timotiis has quit ("leaving"). 00:46:00 * slereah_ tries to whip up a Jot interpreter. 00:53:07 <slereah_> Nice thing is, it's regular! 00:53:21 <slereah_> I can get rid of most of the checking in Lazy Bird to build it 01:24:32 <slereah_> Butts. It no works. 01:35:01 <slereah_> Oh dick. It was a misplaced ` 01:36:08 <slereah_> And now it works perfectly. 01:36:46 <slereah_> Or does it. 01:36:56 <slereah_> the advertised "non-terminating program" terminates. 01:38:05 <slereah_> And the 100 for i gives me k 01:40:25 <slereah_> Wait, is 100 actually supposed to be i 01:40:29 <slereah_> I think that's zot. 01:52:48 -!- sebbu has quit ("@+"). 02:13:02 -!- Sgeo has joined. 03:41:56 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 03:42:33 -!- Judofyr has joined. 03:46:10 <slereah_> Hm. 03:46:37 <slereah_> apparently, the 1[A][B] for `AB only works for the combinators 11100 11111000 03:46:45 <slereah_> k is also 00, but 10000 isn't `kk 03:51:22 <slereah_> Is the Jot guy still available on his email adress? 04:09:18 -!- GreaseMonkey has joined. 04:41:22 -!- Tritonio_ has quit (Remote closed the connection). 04:44:52 -!- Tritonio_ has joined. 04:47:32 -!- Sgeo has quit (Remote closed the connection). 06:47:01 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 06:47:26 -!- Judofyr has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:54:40 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 10:53:06 -!- oklopol has quit (Read error: 113 (No route to host)). 11:11:40 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 11:12:11 -!- Judofyr has joined. 11:20:13 -!- puzzlet has quit (Remote closed the connection). 11:20:20 -!- puzzlet has joined. 11:32:36 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 11:33:12 -!- Judofyr has joined. 11:39:16 -!- puzzlet_ has joined. 11:39:16 -!- puzzlet has quit (Remote closed the connection). 13:25:58 -!- okopol has joined. 14:03:13 -!- oklopol has joined. 14:04:41 -!- okopol has quit (Connection reset by peer). 14:06:29 -!- Tritonio_ has quit (Remote closed the connection). 14:13:59 -!- jix has joined. 14:21:02 <Deewiant> O_ooo 14:21:03 <Deewiant> http://cubonegro.orgfree.com/sponge/sponge.html 14:34:35 <Deewiant> heh, generates about 6500 bytes to calculate the factorial of 5 14:41:27 <oklopol> 456** 14:41:27 <oklopol> ! 14:41:34 * oklopol pwnd it 14:41:46 <Deewiant> ba* 14:41:51 <Deewiant> ca* that is 14:42:02 <Deewiant> shorter :-P 14:42:25 <oklopol> darn :D 14:43:20 <Deewiant> AnMaster: if you want to do benchmarking, this generates some /slow/ code :-P 14:43:50 <Deewiant> getting the 8th fibonacci number took about as many seconds 14:44:10 <Deewiant> over 10KB of code :-) 14:55:28 -!- Tritonio_ has joined. 15:06:17 <AnMaster> Deewiant, where? 15:06:50 <AnMaster> ah 15:06:53 <Deewiant> AnMaster: about 10 lines up 15:06:57 <AnMaster> Deewiant, yes work is slow on cfunge atm 15:07:01 <AnMaster> I got a really nasty cold 15:07:07 <AnMaster> so spend most time in bed atm 15:07:09 <AnMaster> :( 15:07:27 <AnMaster> note I can't code scheme btw 15:07:33 <Deewiant> you worried that I'm secretly rewriting CCBI in Fortran to speed it up? ;-P 15:07:40 <AnMaster> harhar 15:07:45 <AnMaster> nah not really 15:08:06 <Deewiant> and that comes with some scheme samples, like the factorial, which it compiles by default 15:08:20 <Deewiant> so you can just use that if you're interested 15:08:27 <AnMaster> how do I run it? 15:08:47 <Deewiant> get a common lisp compiler/interpreter and run it on the source 15:08:58 <AnMaster> Deewiant, err did you say scheme or lisp? 15:09:03 <Deewiant> at the bottom of the file under "tests" are what it compiles 15:09:12 <Deewiant> AnMaster: it's written in common lisp 15:09:24 <AnMaster> ok, why not scheme, to make it self hosting ;) 15:09:38 <Deewiant> it'd be too limited for that, anyway :-P 15:09:43 <Deewiant> but I don't know. 15:10:11 <AnMaster> Deewiant, would sbcl work? 15:10:18 <AnMaster> I think it was installed by maxima 15:10:24 <AnMaster> as a dep of maxima I mean 15:10:24 <Deewiant> I don't know, try it :-P 15:11:04 <AnMaster> err it outputs stuff like: 15:11:04 <AnMaster> (LAMBDA (G2998) 15:11:05 <AnMaster> ((LAMBDA (G2998) 15:11:05 <AnMaster> (G2998 15:11:05 <AnMaster> (LAMBDA (G2998 N) 15:11:10 <AnMaster> ??? 15:11:20 <Deewiant> don't know what that's about 15:11:25 <Deewiant> might be debugging stuff or something 15:11:32 <Deewiant> the program is in out.bf 15:12:12 <AnMaster> $ ./cfunge scheme/out.bf 15:12:12 <AnMaster> 120 15:12:13 <AnMaster> hm? 15:12:15 <AnMaster> that's all? 15:12:21 <Deewiant> factorial of 5 15:12:21 <Deewiant> :-) 15:12:31 <Deewiant> that's the program it compiles by default 15:12:34 <AnMaster> tool like half a second 15:12:38 <AnMaster> or less 15:12:38 <Deewiant> yep :-) 15:12:45 <AnMaster> not optimized build 15:13:01 <Deewiant> try fibonacci 15:13:45 <AnMaster> *** - (NOT "unbound variable") must evaluate to a non-NIL value. 15:13:46 <AnMaster> mhm? 15:13:59 <Deewiant> compile error? 15:14:02 <Deewiant> I don't know lisp myself 15:14:10 <AnMaster> what one is fibonacci 15:14:19 <Deewiant> there's not one there, I'm pasting it 15:14:28 <Deewiant> http://lisp.paste.f-box.org/43 15:14:28 <AnMaster> k 15:14:37 <AnMaster> yet another pastebin 15:14:46 <AnMaster> running the same old software 15:16:02 <AnMaster> Deewiant, ok took about 2 seconds to run 15:16:12 <AnMaster> and the code look badly optimized btw 15:16:16 <Deewiant> yep, see if you can speed that up 15:16:21 <Deewiant> if you're interested 15:16:29 <AnMaster> I don't know lisp 15:16:36 <Deewiant> not the point 15:16:45 <Deewiant> profile CFunge and see if there are any bottlenecks 15:16:52 <Deewiant> or if it's still just the same old funge-space 15:16:56 <AnMaster> well I mean the befunge code looks unoptimized 15:16:59 <AnMaster> but indeed I will 15:17:15 <Deewiant> of course it is, it's auto-generated from a much higher level language :-) 15:17:20 <Deewiant> and poorly ;-) 15:17:49 -!- oklopol has quit (Connection timed out). 15:19:12 -!- okopol has joined. 15:20:38 <AnMaster> Deewiant, yes still funge-space 15:20:51 <AnMaster> one thing however 15:20:58 <AnMaster> fungeSpaceInRange hmmm 15:21:06 <AnMaster> it does a lot of wrapping *looks at code*? 15:21:14 <Deewiant> looks like it, yes 15:21:17 <AnMaster> oh yes it does 15:22:06 <AnMaster> hm hash function got a bit of time too *tries another one* 15:23:03 -!- RedDak has joined. 15:23:43 <AnMaster> Deewiant, also the main execute instruction doesn't look too good 15:26:51 <AnMaster> Deewiant, in total most time is spent in hash lookup indeed, but per call it is most in ExecuteInstruction 15:26:53 <AnMaster> hm 15:28:14 <AnMaster> Deewiant, how long does CCBI take? 15:29:32 <Deewiant> about 9.7 seconds on windows here 15:29:35 <Deewiant> for that fibo 15:30:14 <AnMaster> cfunge does take about 2 seconds on it :) 15:30:19 * AnMaster looks for the ccbi binary 15:30:31 <Deewiant> but of course we're on different machines so the numbers mean little :-P 15:30:39 <Deewiant> plus I've got about 20% background CPU usage anyway 15:30:55 <AnMaster> real 0m8.182s 15:30:56 <AnMaster> yeah 15:31:06 <AnMaster> that's from ccbi 15:31:33 <AnMaster> <q$>04a*4+21g01g:3+01p11p11g2+1p11g1+1p11g0+1p11g04a*3+21g01g:3+01p11p11g2+1p11g1+1p11g0+1p11g:31p2+1g01g:2+01p11p11g1+1p11g0+1p11g21p31g1+1g>#x;# \-+5*a+3*a+4*a20-0+2;# 15:31:39 <AnMaster> still I wonder wtf it is doing 15:32:48 -!- jix has quit ("This computer has gone to sleep"). 15:33:44 <AnMaster> Deewiant, I think I seen a pretty fast version of fibo in funge somewhere 15:35:05 <Deewiant> AnMaster: it converted ordinary functional code to CPS 15:35:13 <AnMaster> CPS? 15:35:23 <Deewiant> which, in itself, suggests to me that the result will be complicated, let alone in befunge :-P 15:35:26 <Deewiant> continuation-passing style 15:35:32 <AnMaster> ah 15:35:43 <AnMaster> it uses x a lot I see btw 15:36:24 <AnMaster> yeah befunge doesn't fit for functional programming 15:36:49 <Deewiant> s/functional // ;-) 15:38:02 <AnMaster> for example it doesn't use a-f 15:38:03 <AnMaster> hm 15:39:19 <AnMaster> oh wait it does 15:39:21 <AnMaster> but not often 15:44:52 <SimonRC> I think more inlining would help cut down the x usage 15:47:25 <AnMaster> SimonRC, hum? 15:48:01 <AnMaster> SimonRC, x isn't such a large problem 15:48:05 <AnMaster> other things are worse 15:48:08 <AnMaster> way worse 15:49:38 <AnMaster> hm 15:50:07 <AnMaster> Deewiant, for that program keeping track of two bounding boxes of funge space would help 15:50:12 <AnMaster> because first there is a huge line and then a lot of short ones that wrap 15:50:30 <AnMaster> however I got no idea how to detect it from code 15:50:30 <Deewiant> by all means implement some kind of dynamic partitioning :-) 15:50:40 <AnMaster> Deewiant, I don't know how heh 15:50:57 <AnMaster> but wrapping was quite near the top in that program 15:51:06 <AnMaster> Deewiant, still I beat CCBI ;P 15:51:12 <Deewiant> no surprises there :-P 15:51:20 <SimonRC> ah! 15:51:22 <SimonRC> I know.. 15:51:28 <AnMaster> SimonRC, ? 15:51:39 <SimonRC> you could partition space into 32*32 blocks 15:51:54 <AnMaster> hm? 15:52:16 <SimonRC> then for each block, store a bitmap for rows and columns, to say whether there is anything in it... 15:52:21 <AnMaster> still hash function for hash table of fungespace is *worse* 15:52:32 <SimonRC> then you can check 32 cells for code with a simple bit operation 15:53:10 <SimonRC> my optimisation will catch the common case of wrapping when going <v>^ 15:53:18 <AnMaster> for cardinal wrapping there could exist one trick 15:53:32 <AnMaster> keep a line length of each line 15:53:59 <SimonRC> AnMaster: mine is a slightly more advanced version of that. 15:54:29 <Deewiant> AnMaster: that's what I originally considered but decided to keep things simple and just kept one big box 15:54:40 <AnMaster> actually just fixing cardinal wrapping to not use the slow backtrack method used for non-cardinal 15:55:00 <AnMaster> the simplified wrapping is atm disabled due to causing an error in mycology 15:55:10 <AnMaster> a infinite loop on string across wrap 15:55:13 <AnMaster> an* 15:55:27 * AnMaster goes to try to find what is wrong in that code 15:56:16 <SimonRC> another idea is to store for each instruction the closest and furthest instruction in each direction 15:56:32 <SimonRC> that could be done lazily 15:56:48 <SimonRC> so the code turns itself into a linked list 15:57:03 <SimonRC> but you would have to handle the insertion of new instructions somehow... 15:58:04 <AnMaster> yes that is one thing, the other issue is with fetching instructions 15:58:19 <AnMaster> need to store a struct instead of just a int into the hash table 16:09:06 <okopol> oh god.... 16:09:15 <okopol> oklotalk's continuation system == the J operator xD 16:09:25 <okopol> okay, i've invented another old invention 16:09:27 <okopol> lolz 16:09:27 <okopol> -> 16:11:42 <AnMaster> UNDEF: the empty string wrapped around the edge of space >0a-6cf*+p v>1> \v vv v\ >1>v 16:11:44 <AnMaster> Deewiant, hehehe ^ 16:12:13 <SimonRC> hey. that is a point 16:12:33 <SimonRC> with threads, it is possible for an IP to end up trying to traverse a completely empty line 16:12:58 <AnMaster> SimonRC, hm? or with J of SUBR fingerprint 16:13:04 <AnMaster> and possible a few more 16:13:14 <AnMaster> SimonRC, and it is possible even without threads 16:13:18 <SimonRC> what happens then? 16:13:24 <AnMaster> I have seen a program that manage to self destructs itself 16:13:32 <AnMaster> SimonRC, infinite loop possibly 16:13:39 <SimonRC> huh? where? 16:13:43 <AnMaster> err? 16:13:47 <AnMaster> <SimonRC> with threads, it is possible for an IP to end up trying to traverse a completely empty line 16:13:52 <AnMaster> well depends on interpreter 16:13:59 <AnMaster> logically it should be an infinite loop 16:14:07 <AnMaster> wrapping and doing nothing 16:14:25 <AnMaster> as space take no ticks it would lock up any other IP too 16:14:58 <AnMaster> http://quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/ 16:14:59 <AnMaster> is where 16:15:11 <AnMaster> "Suicide programs" 16:15:24 <SimonRC> oh wow, nice domain name 16:15:29 <AnMaster> yeah 16:16:27 <SimonRC> ah, I just remembered that you can wrap to get the last few instructions to die 16:17:28 <Deewiant> heh, suicide programs 16:23:49 -!- jix has joined. 16:24:11 -!- jix has quit (Remote closed the connection). 16:24:36 -!- jix has joined. 16:26:04 -!- Tritonio_ has quit (Remote closed the connection). 17:05:34 -!- Tritonio_ has joined. 17:07:21 -!- atsampso1 has quit ("electricity meter change"). 17:19:54 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))"). 17:22:25 -!- ehird has joined. 17:22:51 -!- ehird has quit (Remote closed the connection). 17:25:20 -!- timotiis has joined. 17:25:36 -!- slereah__ has joined. 17:27:15 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 17:34:15 -!- okopol has quit (Read error: 110 (Connection timed out)). 17:37:57 -!- atsampson has joined. 17:41:24 -!- ehird has joined. 17:41:56 <ehird> I haev 5.3 hearts. 17:42:39 <AnMaster> ehird, err? 17:42:42 <slereah__> Are you a Space Marine or a Mario brother? 17:42:54 <AnMaster> slereah__, what is a space marine? 17:42:56 <marshmallows> yay ehird 17:43:09 <marshmallows> http://rosettacode.org/wiki/Amb 17:43:25 <slereah__> A marine. In space. 17:43:32 <marshmallows> made that page based on the amb stuff 17:43:33 <slereah__> The most famous example has two hearts. 17:43:56 <slereah__> Super Mario is a good example of a game that was given a plot after conception. 17:44:09 <slereah__> PLUMBERS. UP TO BATTLE EVIL TURTLES 17:44:43 <AnMaster> marshmallows, "The Amb operator takes some number of expressions (or values if that's simpler in the language) and nondeterministically yields the one" 17:44:49 <AnMaster> err that grammar is broken? 17:44:59 <marshmallows> AnMaster: probably.. I wrote it.. 17:45:04 <marshmallows> You can fix it if you like 17:45:04 <AnMaster> "nondeterministically yields the one" <-- the one what? 17:45:12 <AnMaster> marshmallows, I got no clue what it is about 17:45:33 <AnMaster> slereah__, hehehehe 17:45:39 <AnMaster> slereah__, yeah XD 17:46:13 <slereah__> And we all know what happened when they tried to make a movie out of it! 17:46:23 <AnMaster> err they did? 17:46:28 <AnMaster> did they really try it? 17:46:31 <slereah__> Yes. They did. 17:46:32 <AnMaster> oh my 17:46:36 <AnMaster> failure I bet 17:46:36 <Deewiant> The operative word is 'try'. 17:46:37 <slereah__> Tried, and... 17:46:47 <slereah__> Well, not succeeded, but the movie did came out 17:46:54 <AnMaster> oh? 17:47:05 <slereah__> http://www.gamesetwatch.com/mariomovie2.jpg 17:47:18 <AnMaster> oh my 17:47:45 <AnMaster> when was that? 17:47:45 <slereah__> When your game is about plumbers to defeat evil reptiles, it's hard to scrap up enough plot for a movie 17:47:53 <slereah__> At least ten years ago 17:47:59 <slereah__> That's roughly when I saw it 17:48:07 <AnMaster> you did? poor you 17:48:10 <slereah__> 1993 sez Wikipedia 17:48:12 -!- okopol has joined. 17:48:41 <slereah__> "Although it boasted several big stars, the film was denounced by critics as "cheesy" and lacking any sort of coherent plot. " 17:48:50 <slereah__> Very much in the image of Super Mario itself 17:49:21 <ehird> AnMaster: amb(1,2,3) returns 1 2 or 3 17:49:28 <ehird> if you then do amb() later, it goes back and picks another 17:49:30 <ehird> so: 17:49:39 <ehird> int foo = amb(1,2,3); if (foo < 2) { amb(); } 17:49:40 <ehird> foo is 2 17:50:03 <marshmallows> or 3 17:50:04 <AnMaster> so it's like picking a card from a pack 17:50:14 <AnMaster> and not putting it back before next pick 17:50:14 <marshmallows> DFS is not specified 17:50:16 <AnMaster> ? 17:50:20 <ehird> marshmallows: your code free()s an argument, that's bad style 17:50:24 <ehird> marshmallows: yes 17:50:29 <ehird> AnMaster: well, foo is not 1 17:50:33 <ehird> it is 2 or 3 17:50:40 <AnMaster> ehird, ? 17:50:47 <ehird> basically, amb() means 'one of your previous amb()s were wrong, pick another' 17:50:49 <marshmallows> ugh yeah 17:50:57 <marshmallows> my code is wrong, thanks for pointing that out 17:51:00 <AnMaster> ah I see 17:51:07 <ehird> marshmallows: my pasted one was a LOT simpler.. 17:51:16 <marshmallows> it didn't work though :P 17:51:35 <ehird> marshmallows: it did 17:51:35 <marshmallows> if you have a simpler one do just replace mine though 17:51:39 <ehird> mine worked 17:51:39 <AnMaster> ehird, so it is basically back tracking? 17:51:51 <marshmallows> well I had some verson of amb that didn't work at some point 17:52:12 <ehird> AnMaster: it is a backtracking operator 17:52:22 <AnMaster> and that iirc is quite slow? 17:52:30 <ehird> AnMaster: it's a theoretical construct. 17:52:37 <AnMaster> yeah 17:52:42 <ehird> not useful in practice, really, though i think you can implement prolog with just a few more things 17:52:49 <AnMaster> what does amb stand for? 17:52:55 <ehird> AnMaster: ambigious 17:52:58 <AnMaster> ah 17:54:32 <ehird> also 17:54:35 <ehird> the ruby amb is terrible, marshmallows 17:54:42 <ehird> http://www.randomhacks.net/articles/2005/10/11/amb-operator nicer 17:55:02 <ehird> also the scheme is ugly 17:58:02 <lament> scheme is ugly! 17:58:17 * slereah__ liek the way scheme looks :( 17:58:31 <slereah__> Unlike Haskell! 17:58:44 <AnMaster> C! 17:58:49 <AnMaster> and funge of course 17:59:10 <AnMaster> but for real languages C with correct indention (as in the way I like it) is the beauty itself ;P 17:59:12 * AnMaster runs 17:59:20 <AnMaster> real as in non-esoteric 17:59:38 <slereah__> Does MACHINE CODE count as real? :o 17:59:53 <lament> so i propose that we do get logged by irseek 18:00:06 <slereah__> Sure, why not. 18:00:07 <lament> just consider http://www.irseek.com/result.php?keywords=brainfuck 18:00:32 <slereah__> <ironfroggy>:brainfuck is not a sane language. 18:00:36 <slereah__> Haet crime! 18:00:39 <lament> the key advantage over ircbrowse is that ircbrowse is for people who already know that #esoteric exists 18:00:50 <lament> and in irseek, you search by keyword 18:00:56 <lament> so new people could find us that way 18:02:04 <ehird> lament: irseek is corporate jib-jab :D 18:02:18 <ehird> <insert something about eso-std.org housing a logbot and then proceed to never put it up> 18:02:28 <lament> rrright :) 18:02:46 <slereah__> A logbot... IN PSOX? 18:08:25 <ehird> libstacksmash is a much nicer name than libcallstack 18:08:30 <ehird> libcstack might be more correct 18:08:53 <slereah__> LIBSTACK SMASH! 18:16:28 -!- okopol has quit (Read error: 113 (No route to host)). 18:24:28 -!- slereah_ has joined. 18:24:28 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 18:29:48 -!- p3k has joined. 18:30:35 -!- Deformative has quit (Remote closed the connection). 18:30:57 -!- Deformative has joined. 18:39:51 -!- p3k has quit. 18:42:41 -!- Tritonio_ has quit (Remote closed the connection). 18:56:40 -!- RedDak has joined. 19:04:13 -!- Tritonio_ has joined. 19:22:23 -!- sebbu has joined. 19:34:57 * SimonRC goes 19:37:55 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))"). 19:38:30 -!- Tritonio__ has joined. 19:40:10 -!- Tritonio_ has quit (Read error: 113 (No route to host)). 20:27:30 <slereah_> Aaaargh. 20:27:35 <slereah_> Damn that jot! 20:48:30 <AnMaster> slereah_, ? 20:49:01 <slereah_> The 1 for ` is really not intuitive at all D: 20:49:10 <slereah_> Because it DOES NOT ACTUALLY WORK AS A GENERAL RULE 20:50:18 <AnMaster> slereah_, well try another language then? 20:50:42 <slereah_> Well, still, I'd like to understand! 20:51:47 <slereah_> But the problem is, 00 is also k, but 10000 isn't `kk 20:52:02 <slereah_> It's ``ssk (^xy.xyx) 20:52:25 <slereah_> The 1 = ` only works if you use 11100 and 11111000 20:52:49 <slereah_> Although I'm starting to doubt my interpreter, since the "shortest non-terminating program" terminates. 21:35:30 -!- shinkuzin has joined. 21:51:20 -!- RedDak has joined. 22:03:55 -!- ehird has quit (Read error: 113 (No route to host)). 22:04:12 -!- ehird has joined. 22:04:45 -!- ehird has set topic: #esoteric - Extending Tetrationfuck to the reals with magnets, cauliflour and tpyos extended over the reals with tetr. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/. 22:04:50 <ehird> what 22:16:41 <slereah_> What what 22:17:01 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))"). 22:17:22 -!- RedDak has joined. 22:22:16 <ehird> slereah_: In the butt? 22:22:41 <slereah_> Yes, indeed. 22:22:54 <slereah_> Although "Bear Force One" is a contender in gayness. 22:25:22 -!- okopol has joined. 22:29:15 -!- ehird_ has joined. 22:29:18 -!- ehird has quit (Read error: 113 (No route to host)). 22:36:15 -!- Tritonio__ has quit (Remote closed the connection). 22:46:35 -!- shinkuzin has quit (Read error: 113 (No route to host)). 23:01:26 -!- olsner has joined. 23:31:44 -!- timotiis has quit ("leaving"). 23:47:08 -!- jix has quit (Read error: 110 (Connection timed out)). 23:47:16 -!- RedDak has quit (Remote closed the connection). 2008-03-28: 00:58:37 -!- okopol has quit (Connection timed out). 01:03:09 -!- Sgeo has joined. 01:29:17 -!- sebbu has quit ("@+"). 02:15:52 <slereah_> Holy Batman, there's actually a functioning site for Iota http://barker.linguistics.fas.nyu.edu/Stuff/Iota/ 02:42:50 -!- GreaseMonkey has joined. 03:27:49 -!- ehird_ has quit (Client Quit). 05:09:43 -!- poiuy_qwert has joined. 05:54:12 -!- adu has joined. 06:15:08 -!- Sgeo has quit (Remote closed the connection). 06:23:10 -!- RodgerTheGreat has quit. 06:36:42 -!- codechAos has joined. 06:36:58 <codechAos> #triangleparty 06:37:20 <marshmallows> codechAos: #squareparty 06:37:32 <marshmallows> It's much more perpendicular 06:37:36 <codechAos> noooo 06:37:39 <marshmallows> yes 06:37:41 <codechAos> we are against square 06:37:45 <codechAos> *squares 06:37:50 <codechAos> its even in the topic 06:38:35 <marshmallows> Can't you see that square is much better? The fundamental 4 CORNER DAYS PROVES 1 DAY 1 GOD IS TAUGHT EVIL I call down a Demonic Curse upon the Evil 06:38:35 <marshmallows> Americans who ignore Earth's 4 Corner Days 06:38:35 <marshmallows> within a single rotation of 4 quadrant Earth. 06:38:35 <marshmallows> Believing in a God when there is proof that 06:38:35 <marshmallows> there is no God, dooms humanity to a Hell 06:38:36 <marshmallows> of Horror. America is 1/2 way to it's Hell. 06:38:38 <marshmallows> The American "Bill of Rights" - "Freedom of 06:38:40 <marshmallows> Speech", is BullShit. MisEducators suppress 06:38:42 <marshmallows> The Time Cube Principle and will not allow 06:38:44 <marshmallows> Students to discuss or debate it's merits and 06:38:46 <marshmallows> application. Also, the Academic bastards 06:38:48 <marshmallows> will not even allow Time Cube on their web 06:38:52 <marshmallows> sites. On Yahoo, Time Cube - 81,000,000 06:38:55 <marshmallows> and on Google was once 89,000,000 - until 06:38:56 <marshmallows> cut back to 3,000,000 by ignorant believers. 06:39:16 <codechAos> pastebin? 07:12:09 -!- codechAos has quit (Client Quit). 07:19:59 -!- poiuy_qwert has quit. 07:36:12 <adu> hi marshmallows 07:37:02 <marshmallows> hey adu! 07:37:07 <adu> how are you 07:37:45 <marshmallows> I'm rewriting my Prolog interpreter 07:37:46 <adu> marshmallows: are you an obscurantist? 07:38:20 <marshmallows> mm I don't think so 07:38:29 <marshmallows> well 07:38:34 <adu> http://www.merriam-webster.com/dictionary/obscurantism 07:38:41 <marshmallows> I think I am actually but unintentionally 07:38:51 <adu> 2 a : 07:39:06 <adu> "deliberate vagueness or abstruseness" 07:40:14 <marshmallows> I didn't actually mean to paste all that crap btw :/ 07:41:08 <adu> ok 07:41:49 <adu> I enjoy reading obscurantism, but only if it highlights the absense of the intense variety within the realm of the time tube 07:41:56 <adu> hehehe 07:44:26 <adu> i think the best obscurantism i've seen tho is political 07:45:32 <adu> you know, the parts where they go on and on and on about how this one place has weapons, then they go on and on and on about how they are there... 07:45:57 <adu> then they briefly mention how they didn't find any... 07:46:20 <adu> then they go on and on and on about how they need to be there for other reasons... 07:46:27 <marshmallows> yeah that can happen :p 07:46:50 <adu> :P 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:24:21 -!- Judofyr_ has joined. 08:24:21 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 08:37:10 -!- atsampson has quit (Read error: 113 (No route to host)). 08:43:29 <marshmallows> :D 08:43:37 <marshmallows> My rewrite is ~300 lines 09:03:41 -!- adu has quit (Remote closed the connection). 09:24:29 -!- GreaseMonkey has quit ("im tierd"). 10:22:47 <AnMaster> marshmallows, of what? 10:24:42 <marshmallows> Prolog interpreter 10:32:30 <AnMaster> I see 10:32:40 <AnMaster> is there any prolog *compiler* btw? 10:33:01 <marshmallows> Yes 10:33:10 <marshmallows> Aquarius is an excellent one 10:33:28 <marshmallows> complining Prolog is really interesting 10:33:30 <AnMaster> I still find backtracking weird 10:34:01 <AnMaster> and IMO wasting of system resources, it is very time consuming to do backtracking iirc 10:40:45 -!- atsampson has joined. 10:45:58 -!- olsner has quit ("Leaving"). 11:01:34 -!- kryptos23 has joined. 11:27:05 <AnMaster> Deewiant, I'm working on a protocol for debugger and funge interpreter 11:31:52 -!- Tritonio_ has joined. 11:33:31 -!- kryptos23 has left (?). 12:19:14 -!- Sukoshi has joined. 12:22:06 -!- Sukoshi has quit (Client Quit). 13:22:38 -!- sebbu has joined. 13:45:05 -!- Corun has joined. 14:19:48 -!- RodgerTheGreat has joined. 14:27:47 -!- Corun has quit (Read error: 113 (No route to host)). 14:46:13 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 14:46:23 -!- RedDak has joined. 14:46:28 -!- Slereah has joined. 14:54:01 -!- Judofyr_ has changed nick to Judofyr. 15:43:14 -!- ehird has joined. 15:43:34 <ehird> foo, bar, baz, quux and zonk 15:44:10 <ehird> i == true swap [] if that's clever 15:46:58 <ehird> AnMaster: prolog's don't do real backtracking that often.. 15:47:00 <ehird> they are clever 15:47:12 <AnMaster> hm? 15:48:58 <ehird> AnMaster: well, they try and do confusing inferrence stuff that i don't understand to avoid backtracking 15:49:10 <ehird> & i do believe that most prolog's backtracking is micro-optimized anyway 15:50:15 <AnMaster> mhm 15:50:22 <ehird> AnMaster: so i wouldn't worry 15:58:34 -!- okopol has joined. 16:05:08 -!- okopol has changed nick to oklopol. 16:39:16 -!- RedDak has quit (Remote closed the connection). 17:18:06 -!- adi11235 has joined. 19:01:08 -!- oklopol has quit (No route to host). 19:01:17 -!- timotiis has joined. 19:14:50 -!- okopol has joined. 19:15:41 * SimonRC wonders if USAToday are coppying stories from the Onion: http://www.usatoday.com/travel/flights/2006-10-19-skyeurope-minusfare_x.htm 19:16:29 <ehird> THANK you for flying with us! 19:19:43 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 19:20:41 -!- bsmntbombdood has joined. 19:26:41 -!- okopol has quit (Remote closed the connection). 19:27:05 -!- okopol has joined. 19:30:10 <lament> peaker is so misguided. 19:30:22 <lament> although it is a really beautiful dream :) 19:30:30 <ehird> lament: I agree 19:30:35 <lament> and will probably happen eventually 19:30:40 <ehird> I disagree 19:31:00 * SimonRC goes (pub) 19:31:22 <lament> ehird: not for modern programming languages. They're all optimized to be entered as text. 19:31:40 <ehird> lament: I doubt it will ever happen. Text is mungible, bungible, malleable, storable, movable stuff. 19:32:11 <lament> ehird: not really. it's just a bunch of characters. 19:32:20 <lament> ehird: consider writing with a pen on a piece of paper. 19:32:32 <lament> ehird: it's WAY more free-form than entering text in an editor. 19:32:47 <lament> ehird: in comparison, text is "structured" 19:33:08 <lament> and yet, we still use it 19:39:43 <lament> personally i would prefer the revolution to go the less structured way. That's how humans work 19:40:03 <lament> write your program as a bunch of notes on a piece of paper. 19:40:22 <lament> including diagrams, arrows, random doodles, etc 19:40:31 <ehird> personally i'm very happy with the status quo 19:40:42 <lament> then have your editor (presumably a strong AI) sort it out :) 19:41:09 <lament> i'm not. Modern programming languages clearly suck. 19:41:27 <lament> an unambiguous (to a human) description of an algorithm tends to be MUCH shorter than a corresponding program. 19:41:51 <ehird> lament: you might want to try K 19:41:53 <ehird> ;) 19:42:01 <ehird> if it's shorter-than-description you're after 19:42:05 <ehird> or oklotalk 19:42:07 <lament> not funny 19:42:21 <ehird> why not? 19:43:08 <lament> having a bunch of short builtins does not translate to expressivity 19:43:32 <lament> (corollary: paul graham is a moron) 19:45:14 <ehird> lament: to be honest the array paradigm of K seems to scale quite well to certain types of problems 19:45:17 <ehird> but i agree with the corollary 19:47:30 -!- okopol has quit (Remote closed the connection). 19:50:31 -!- okopol has joined. 19:55:10 <lament> subtextual.org certainly seems kinda lame 19:58:19 <ehird> lament: from a 2sec glance the 'everythign is serializable' is nice 19:58:21 <ehird> SISC can do that 19:58:25 <ehird> I ought to write something like that 19:58:30 <ehird> It would be nice 19:58:37 <ehird> Serializing continuations, functions, etc. 19:58:47 <ehird> You could serialize sockets, maybe, in a limited way (store host+port) 20:00:38 <lament> sisc doesn't try to revolutionize programming 20:01:33 <lament> and it isn't weirdly visual and stuff :) 20:01:44 <ehird> lament: sure, but you can serialize procs&conts&all that 20:01:47 <lament> what i really don't understand is why peaker thinks haskell is a good language for his task 20:02:04 <lament> (as opposed to, like... scheme) 20:02:26 <ehird> lament: he doesn't 20:02:32 <ehird> remember his "int x = y" example? 20:05:09 <lament> btw, is sisc like, the best scheme out there? 20:06:01 <Deewiant> http://reddit.com/info/6dnlu/comments/ seems to lean towards PLT 20:09:13 <lament> PLT has a horrendous UI :) 20:11:01 <lament> PLT has that typed scheme thing though, and a lot of other packages 20:19:21 <ehird> lament: mzscheme = console plt 20:19:28 <ehird> you can use it with emacs or w/e 20:19:32 <ehird> Chicken is good too 20:19:35 <ehird> lots of libs 20:19:40 <ehird> however, sisc is based on java 20:19:45 <ehird> both positive and negatiev 20:20:01 <marshmallows> SISC is actually really good but a bit slow compared to others 20:20:10 <ehird> lament: DrScheme's actual features are good though 20:20:13 <ehird> even if it is a bit ugly 20:26:14 <Slereah> SISC? 20:26:18 <lament> sisc just seems... clean 20:26:25 <Slereah> Serious instruction set? :o 20:26:56 <ehird> Second Interpreter of Scheme Code 20:27:15 <Slereah> Oh. 20:28:40 -!- olsner has joined. 20:28:49 * lament so wishes there was ONE scheme implementation :) 20:30:05 -!- okopol has quit (Read error: 113 (No route to host)). 20:40:13 -!- Corun has joined. 20:51:30 -!- adrian__ has joined. 21:03:49 -!- adi11235 has quit (Read error: 110 (Connection timed out)). 21:10:03 -!- adrian__ has quit (Read error: 113 (No route to host)). 21:22:16 <ehird> http://codepad.org/PPXTpdOr this is pretty esoteric :) 21:22:29 <ehird> things I want to fix: make it valid C too, instead of just valid shell 21:22:41 <ehird> and fix the program there 21:22:48 <ehird> it should say 'I am ./script.c' 21:22:52 <ehird> not 'I am /tmp/sdfoisudoi' 21:22:57 <ehird> comments welcome :) 21:23:10 <marshmallows> I wanted this ! 21:23:23 <marshmallows> I didn't bother to do it but it seemed useful earlier 21:23:28 <ehird> hmmm wait... 21:23:31 <ehird> marshmallows: Improving it now 21:23:35 <marshmallows> It's nice how you can go 21:23:44 <marshmallows> // <applet code="..." ...> 21:23:47 <marshmallows> in a .java f ile 21:23:54 <marshmallows> for appletviewer 21:24:01 -!- adrian__ has joined. 21:24:49 <ehird> marshmallows: http://codepad.org/2FseWr0r 21:25:07 <ehird> removes the file even on compiler failure 21:25:54 <marshmallows> my Prolog interp is -fast- :D 21:26:05 <marshmallows> mutablestate++; 21:27:18 <GregorR> I don't think you're propagating $CODE properly 21:28:15 <ehird> GregorR: you're right. just fixed it 21:28:28 <ehird> http://codepad.org/bUixvfvj 21:28:31 <ehird> its a line longer now 21:28:42 <ehird> mm oh wait 21:28:47 <ehird> i don't need \n after the comment line 21:29:20 <ehird> hmm 21:29:24 <ehird> /* will always fail in shell? 21:29:26 <ehird> hopefully? 21:29:26 <ehird> :P 21:30:42 <GregorR> Uh, it will after a #, that's for sure. 21:30:50 <GregorR> Fail to do anything, that is :P 21:30:59 <ehird> No 21:31:03 <ehird> I mean without the #* 21:31:07 <ehird> It assumes one thing: 21:31:19 <ehird> there isn't an executable that gets sorted first in / 21:31:39 <ehird> Currently it starts: 21:31:44 <ehird> /* 2>/dev/null; 21:31:58 <GregorR> Ah, I see the quandry. 21:32:03 <ehird> Yeah. 21:32:07 <ehird> Trying to reduce lines & get it valid c 21:32:15 <ehird> Because, if I can get it valid C 21:32:17 <GregorR> How about #define true /*\ntrue 21:32:18 <ehird> then I can remove all my filtering 21:32:25 <GregorR> Nah, that probably won't work, come to think of it :P 21:32:27 <ehird> and just have it call gcc 21:33:52 <GregorR> Wait 21:33:58 <GregorR> How about just #if 0 #endif instead of /* */? 21:34:14 <ehird> GregorR: Great idea! 21:34:23 <ehird> But the shebang must be the first line of the file. 21:35:15 <GregorR> Oh, you don't want to be tail'ing that off? :P 21:35:26 <ehird> ahaaa! wait a second!! 21:35:33 <ehird> #define true \ 21:35:33 <ehird> #!/bin/sh 21:35:33 <ehird> #if 0 21:35:36 <ehird> except the problem is 21:35:39 <ehird> i don't want to define anything 21:35:41 <ehird> solution: undef after that 21:35:51 <GregorR> Uh, plus the shebang line isn't the first line then? 21:35:58 <ehird> Ohh. Crap. 21:36:17 <ehird> GregorR: Don't see how to do this :( 21:39:06 -!- RedDak has joined. 21:39:58 <ehird> GregorR: Any thoughts? 21:40:11 <ehird> basically, #!foo and #! foo are acceptable 21:42:19 <ehird> GregorR: :/ 21:42:32 -!- adrian__ has quit (Read error: 113 (No route to host)). 21:43:09 <ehird> GregorR: I don't think there's any way to get cc to acecpt it 21:50:24 <ehird> GregorR: It's getting more and more advanced by the minute :p 21:50:29 <ehird> #if 0 21:50:29 <ehird> FILE=`mktemp -t _$(echo "$0" | tr -c [:alnum:] _).XXXXXXXXXX` || exit 1 21:50:29 <ehird> if gcc -Wall -xc "$0" -o "$FILE"; then "$FILE" $*; CODE=$?; else CODE=$?; fi 21:50:29 <ehird> rm -f $FILE; exit $CODE 21:50:29 <ehird> #endif 22:02:53 <ehird> Okay. GregorR, marshmallows: http://codepad.org/09A2RJCH A c-script that turns a c file into a c-script 22:03:47 <GregorR> I wonder what system the remote side runs to get that output. 22:04:13 <ehird> GregorR: it's described somewhere 22:04:21 <ehird> http://codepad.org/about 22:05:14 <ehird> GregorR: Here! http://www.hackerdashery.com/2008/03/scaling-at-2am-with-ec2.html 22:05:29 -!- adrian__ has joined. 22:05:37 <ehird> Basically, lots of Amazon C2 services which automatically rewipe themselves regularly 22:05:49 <ehird> & all programs under them run under heavy tracing & each in their seperate chroot jail 22:20:25 -!- adi11235 has joined. 22:20:44 -!- Tritonio_ has quit (Remote closed the connection). 22:24:44 -!- adrian__ has quit (Read error: 113 (No route to host)). 22:42:37 -!- adi11235 has quit (Read error: 113 (No route to host)). 22:49:50 -!- Corun has quit ("This computer has gone to sleep"). 22:52:58 -!- Corun has joined. 23:28:50 -!- marshmallows has left (?). 23:30:51 -!- marshmallows has joined. 23:54:45 -!- digital_me has joined. 23:55:19 -!- bsmntbombdood has quit (Nick collision from services.). 23:55:26 -!- digital_me has changed nick to bsmntbombdood. 23:55:55 -!- bsmntbombdood_ has joined. 2008-03-29: 00:02:04 -!- RedDak has quit (Remote closed the connection). 00:19:50 <ehird> marshmallows: how short is your prolog again? 00:20:20 <marshmallows> the core is about 300 lines but I'm adding lots of primitives now 00:20:30 <ehird> marshmallows: does it use amb 00:20:31 <marshmallows> this is in Scheme 00:20:34 <ehird> cool 00:20:36 <marshmallows> no, just streasm 00:20:39 <ehird> i'm working on an embedding in scheme now 00:20:39 <ehird> :D 00:20:45 <ehird> (~ (cons X Y (X . Y))) 00:20:50 <olsner> marshmallows: eh, so it's *growing* now? that can't be right! :P 00:21:04 <marshmallows> heheh, olsner I'm not that good yet 00:21:29 <marshmallows> ehirid: Have you seen Reasoned Schemer by the way? 00:21:33 <marshmallows> >_< 00:21:35 <marshmallows> Ehird* 00:22:05 <ehird> nope 00:22:09 <ehird> read little schemer though 00:24:00 <marshmallows> syntax-rules is so great 00:24:54 <ehird> (define (all? f l) (cond ((null? l) #t) ((f (car l)) (all? f (cdr l))) (else #f))) 00:24:58 <ehird> marshmallows: what srfi is that ^^? 00:25:12 <marshmallows> all? is renamed every in SRFI-1 00:26:26 -!- bsmntbombdood has quit ("leaving"). 00:26:32 <marshmallows> This is one of my utilites 00:26:33 <ehird> marshmallows: I wish strings were lists 00:26:33 <marshmallows> (define (cons/fail car cdr) (if cdr (cons car cdr) cdr)) 00:26:36 <ehird> I have to do: 00:26:45 <ehird> (string->list (symbol->string var)) 00:26:58 <ehird> (define (prolog-variable? x) 00:26:59 <ehird> (every (lambda (x) (char= x (char-upcase x))) 00:26:59 <ehird> (string->list (symbol->string x)))) 00:27:32 <marshmallows> just (define (symbol->list symbol) (string->list (symbol->string var))) 00:27:33 <lament> marshmallows: why did you have to implement read? 00:27:35 <marshmallows> er 00:27:38 <marshmallows> just (define (symbol->list symbol) (string->list (symbol->string symbol))) 00:27:56 <ehird> marshmallows: oh, and after: 00:27:58 <ehird> (~ (human socrates)) 00:27:59 <ehird> (~ (human john)) 00:27:59 <ehird> (~ (mortal X) (human X)) 00:28:01 <ehird> you can just do: 00:28:05 <marshmallows> you are using a case sensitive Scheme O_o 00:28:06 <ehird> (mortal 'socrates) => #t 00:28:16 <ehird> marshmallows: chicken's the name. 00:28:51 <marshmallows> atm I have lone symbols are variables and anything else is a 0 arity compound 00:29:08 <ehird> (mortal 'socrates) is (prolog-query '(mortal socrates)) 00:30:31 <ehird> hmm 00:30:39 <ehird> (mortal 'socrates) => (), #t actually 00:30:42 <ehird> (multiple values) 00:30:52 <ehird> (mortal 'X) => (socrates john), #t 00:30:53 <ehird> or #f 00:30:54 <ehird> unsure 00:31:48 <marshmallows> I was planning on (later, making a new language), which has () and [] 00:31:51 <ehird> marshmallows: ah, wait 00:32:01 <ehird> shouldn't (moratl 'X) => ((X . socrates)), #t 00:32:02 <ehird> OR 00:32:06 <ehird> ((X . john)), #t 00:32:15 <ehird> i.e. the multiple X thing is just an artifact of the repl 00:32:40 <marshmallows> one solution 00:32:42 <marshmallows> i 00:32:42 <marshmallows> s 00:33:11 <marshmallows> (mortal 'X) ;=> (((X . socrates)) . #<redo>) 00:33:27 <marshmallows> ((cdr)) gives you more solutions 00:33:28 <ehird> marshmallows: Isn't that just: 00:33:36 <ehird> (mortal 'X) (fail) 00:34:29 <marshmallows> don't think so 00:34:55 <ehird> marshmallows: well, i still need a truth value, surely 00:34:57 <ehird> so: 00:35:07 <ehird> ((X . socrates)), #t, #<procedure redo> 00:36:11 <marshmallows> what would 00:36:20 <ehird> marshmallows: well, the repl 00:36:22 <marshmallows> (human ehird) 00:36:24 <marshmallows> give? 00:36:24 <ehird> it says 'yes' or 'no' 00:36:37 <ehird> ?- human(ehird). 00:36:37 <ehird> No 00:36:40 <ehird> thank you, swi prolog. 00:36:44 <ehird> it would probably give: 00:36:44 <marshmallows> in your thing lol 00:36:48 <ehird> (), #f, #f 00:36:53 <ehird> what in yours? 00:37:09 <marshmallows> ?- (human ehird) 00:37:10 <marshmallows> no 00:37:36 <marshmallows> in mine also 00:37:39 <marshmallows> ?- 0 00:37:39 <marshmallows> no 00:37:41 <marshmallows> ?- 1 00:37:44 <marshmallows> yes ; no 00:37:46 <marshmallows> ?- 2 00:37:50 <marshmallows> yes ; yes ; no 00:37:55 <marshmallows> n succeeds n times 00:38:37 <ehird> marshmallows: I meant in your return desuture 00:39:04 <marshmallows> empty-stream = '() 00:39:14 <marshmallows> and failure = empty-stream 00:39:44 <ehird> (human 'ehird) ;=> ? 00:40:01 <marshmallows> A success is (stream-cons '() empty-stream), I don't actually have any useful values though anymore.. since variable bindings are in mutable vectors (much more efficient than term copying I had before) 00:40:07 <ehird> (human 'ehird) ;=> ? 00:40:28 <ehird> also: for scheme i value elegance over practicality & speed ;) 00:40:40 <marshmallows> (prove (make-declarationbase) (human (ehird))) ;=> empty-stream 00:40:58 <marshmallows> yeah it's much more elegant than my previous too :P 00:41:09 <marshmallows> since I was doing huge amounts of ridiculous computation 00:41:26 <ehird> (human 'ehird) ;=> ? 00:41:30 <ehird> if (mortal 'X) ;=> (((X . socrates)) . #<redo>), 00:41:35 <ehird> then (human 'ehird) ;=> ? 00:42:13 <marshmallows> (mortal 'X) ;=> (((X . socrates)) . #<redo>) 00:42:27 <marshmallows> (#<redo>) ;=> (((X . john)) . #<redo>), 00:42:31 <marshmallows> (#<redo>) ;=> '() 00:42:44 <ehird> (human 'ehird) ;=> ? 00:42:44 <marshmallows> that's how I did it before 00:42:48 <marshmallows> '() 00:42:49 <lament> heh, somebody was recently asking in scheme about some algorithm he had, where everything was ugly and optimized 00:42:59 <marshmallows> empty-stream = '() = failure 00:43:05 <ehird> marshmallows: sounds like CL 00:43:06 <ehird> :p 00:43:09 <ehird> lament: haha 00:43:14 <marshmallows> (null? '()) 00:43:24 <ehird> lament: i can't wait for scheme with loads of !x and #a# 00:43:27 <ehird> and ByteString 00:43:30 <ehird> and unsafe io 00:43:32 <lament> ehird: consider, though: r5rs is really small. It pretty much doesn't have anything. And yet, it has vectors (efficiency) 00:43:40 <marshmallows> (cdr '(x)) ;=> '() 00:43:47 <marshmallows> not really CL.. 00:43:55 <ehird> Scheme: Now just like Haskell, but with a pretty lame type system! It's about 30% fast, too. 00:44:00 <ehird> marshmallows: :-) 00:44:23 <ehird> marshmallows: You know, though (cdr '()) is obviously nonsense, it occurs to me that (rest '()) and (tail '()) are '() 00:44:24 -!- Deformative has quit (Read error: 110 (Connection timed out)). 00:44:37 <marshmallows> (I am always worrying about that though because I've done much more CL than Scheme) 00:44:41 <ehird> So the operations on conses and lists are different, even the most fundamental ones. 00:44:57 <ehird> lament: Well, vectors have a conceptual elegance to them. 00:45:06 <ehird> Observe that you can't have conses without vectors of length 2. 00:45:14 <ehird> So really the vectors are *above* the lists. 00:45:23 <marshmallows> (define (make-variable) (unbind! (make-vector 1))) 00:45:24 <marshmallows> (define (unbind! variable) (vector-set! variable 0 variable) variable) 00:45:28 <marshmallows> I think this is great :P 00:45:30 <lament> i think vectors are horrendously ugly, at least if you actually use them. 00:45:35 <marshmallows> void *x; x = &x; 00:45:55 -!- GreaseMonkey has joined. 00:45:56 <ehird> marshmallows: Make the failure stream #f 00:46:03 <ehird> lament: The interface leaves much to be desired, I agree. 00:46:06 <marshmallows> you can bind variables into equivalence classes.. unbind on backtracking, deref etc 00:46:16 <marshmallows> ehird: That makes absolutely no sense :P 00:46:19 <ehird> marshmallows: Since your thing is a cons, not a list 00:46:21 <ehird> (X . redo) 00:46:26 <marshmallows> (a b c . #f) 00:46:35 <ehird> Well, you don't haev that. 00:46:39 <ehird> You have (list . func) 00:47:05 <marshmallows> (a b c d) = (a . (b . (c . (d . ())))) 00:47:23 <ehird> marshmallows: 00:47:23 <ehird> [23:42] <marshmallows> (mortal 'X) ;=> (((X . socrates)) . #<redo>) 00:47:23 <ehird> [23:42] <marshmallows> (#<redo>) ;=> (((X . john)) . #<redo>), 00:47:23 <ehird> [23:42] <marshmallows> (#<redo>) ;=> '() 00:47:26 <ehird> I see a cons there 00:47:26 <ehird> not a list 00:47:36 <ehird> Oh, and look at my cute type declaration syntax: 00:47:39 <ehird> ;; prolog-query : form -> (env <prolog-query>) or #f 00:47:48 <ehird> a b c -> d == function 00:47:57 <ehird> a or b == self-explaining 00:48:01 <ehird> x : y == x is of type y 00:48:07 <ehird> <x> = the type of x 00:48:18 <ehird> So amusingly, I have type recursion with a base case. 00:49:15 <ehird> marshmallows: What's the function for 'Nth char in string'? 00:49:17 <marshmallows> (a . (lambda () (b (lambda () (c (lambda () (d . ()))))))) = (stream a b c d) 00:49:30 <marshmallows> in Scheme or Prolog? 00:49:37 <ehird> marshmallows: and aha, but what you haev there is: 00:49:39 <marshmallows> string-ref or nth/elt 00:49:40 <ehird> (a lambda () ...) 00:49:45 <ehird> face it, you don't have a list 00:49:49 <ehird> #f shoudl be your termination 00:49:50 <marshmallows> It's a list 00:49:57 <marshmallows> no it's not a list 00:50:04 <ehird> exactly! 00:50:06 <marshmallows> it's a stream 00:50:09 <ehird> exactly 00:50:11 <marshmallows> Look: 00:50:12 <ehird> and () is the empty LIST 00:50:15 <ehird> not the empty STREAM 00:50:46 <marshmallows> <list(a)> ::= (a . <list(a)>) | () 00:50:54 <marshmallows> <stream(a)> ::= (a . <stream(a)>) | () 00:51:05 <marshmallows> <stream(a)> ::= (a . <stream(a)>) | #f -- this makes no sense! 00:52:11 <marshmallows> anyway I don't even use streams 00:52:29 <marshmallows> I built cuttable streams so I can implement !/0 00:53:08 <ehird> ;; prolog : form . form -> unspecified 00:53:08 <ehird> (define (prolog form . conds)) 00:53:22 <ehird> my awesome type info extends to varargs! 00:55:40 <marshmallows> reading files with R5RS is nice 00:55:53 <ehird> marshmallows: not reading a whole file 00:56:16 <ehird> (define (slurp-file fn) (call-with-input-file fn read-file)) 00:56:29 <marshmallows> check it out http://rafb.net/p/KBesvn31.txt 00:56:38 <marshmallows> reads a s-exp prolog file 00:56:41 <ehird> (define (read-file f) (let ((c (read-char f))) (if (eof-object? c) '() (cons c (read-file f))))) 00:56:51 <ehird> (define (read-whole-file f) (list->string (read-file f)) 00:56:56 <ehird> (define (slurp-file fn) (call-with-input-file fn read-whole-file)) ;; fixed 00:57:08 <marshmallows> oh I wrote a R5RS reader the other day 00:57:37 <marshmallows> so you just pass in a dispatch table with options 00:58:04 <marshmallows> that way it takes 3 lines to define the syntax of my other language (changing quoting a bit and adding new parens) 00:58:26 <ehird> marshmallows: is storing continuations in a global enough for backtracking? 00:58:27 <ehird> i think yes 00:58:41 <marshmallows> should be yeah, a stack of them 00:58:50 <ehird> ;; backtracks : (continuation) 00:58:50 <ehird> OR 00:58:54 <ehird> ;; backtracks : list of continuation 00:58:58 <ehird> the latter looks nicer, really 00:59:05 <marshmallows> perhaps you can make a single continuation if you join them in a clever way hm 00:59:11 <ehird> marshmallows: oo, i just realised something 00:59:13 <marshmallows> dunno how to do cut with that though 00:59:19 <ehird> i could write a type-checker for these type decls 00:59:23 <ehird> because they're very mechanical 00:59:26 <ehird> and the syntax is simple yet readable 00:59:33 <marshmallows> hehehe 00:59:33 <ehird> ;; prolog-query : form -> (env <prolog-query>) or #f <-- really easy to test 00:59:45 <ehird> it would just hook in after the macro expansion process 00:59:52 <ehird> and would interact fine with dynamic functions 01:00:09 <ehird> if it had a few built in things like: 01:00:10 <ehird> ;; car : list of 'a -> 'a 01:00:13 <marshmallows> you should write the type checker in (or parts) in Prolog 01:00:15 <ehird> ;; cdr : list of 'a -> list of 'a 01:00:26 <ehird> ;; cons : 'a, list of 'a -> list of 'a 01:00:58 <ehird> ;; map : ('a -> 'b), list of 'a -> list of 'a 01:01:01 <ehird> it's just like ML 01:01:01 <ehird> :p 01:01:28 -!- Corun has quit ("This computer has gone to sleep"). 01:01:46 <ehird> marshmallows: I can pop backtracks straight after using them, right? 01:01:51 <ehird> Since if needed the continuation will push a new one 01:02:17 <ehird> hahaha: 01:02:18 <ehird> ;; call-backtrack : -> 01:02:24 <ehird> where no type after the -> means 'doesn't return' 01:02:42 <ehird> marshmallows: Backtracks don't need arguments, do they? 01:04:55 <ehird> marshmallows: hmm. 'add-backtrack-here!' is a sucky name 01:05:08 <ehird> (define (add-backtrack-here!) (call/cc (lambda (k) (add-backtrack k)))) 01:05:37 <marshmallows> choice! 01:05:42 <ehird> marshmallows: naw 01:06:04 <marshmallows> maybe you could do something giving backtracking args 01:06:33 <marshmallows> thing is it's like.. "If you had gone down that path you could have seen <x>" 01:06:43 <ehird> marshmallows: hmm, SHOULD i end it with ! ? 01:06:45 <marshmallows> but it's only for the paths before not all 01:06:51 <ehird> internally they do mutate a global list of backtrack points 01:06:56 <ehird> but it's declarative as far as the user can tell 01:07:46 <marshmallows> I don't know 01:07:50 <marshmallows> I would 01:08:13 <marshmallows> you can only pop it after using them up 01:08:20 <ehird> (define (amb . args) 01:08:20 <ehird> (call/cc 01:08:20 <ehird> (lambda (k) 01:08:20 <ehird> (cond ((null? args) (backtrack)) 01:08:20 <ehird> (else (call/backtrack (lambda () (k (car args)))) 01:08:20 <ehird> (apply amb (cdr args))))))) 01:08:26 <marshmallows> like a branch can have more than two choices 01:08:28 <ehird> would that really be nicer with scattered !s? 01:08:51 -!- Deformative has joined. 01:08:56 <marshmallows> :o 01:09:26 <marshmallows> if that works.. you should replace the one on http://rosettacode.org/wiki/Amb since that's *much* nicer 01:10:15 <ehird> marshmallows: only with my lib ;) 01:10:21 <ehird> i have one without a lib around here 01:10:27 <ehird> it's basically that, withh 1 or 2 support functions 01:10:34 <marshmallows> but 01:10:50 <marshmallows> I do not encourage the abbreviation of call-with-current-continuation 01:11:05 <ehird> marshmallows: tough. I use call/cc over the time and value my fingers. 01:11:13 <ehird> I'm not going to risk rsi for the sake of a goddamn stupid identifier 01:11:20 <ehird> PLT, Chicken, ... support it. 01:11:25 <ehird> If your impl doesn't, I don't care 01:11:26 <marshmallows> I always type it out in full :P 01:11:43 <marshmallows> (undefine call/cc call-with-current-continuation) 01:11:45 <marshmallows> lol 01:11:55 <marshmallows> rm 01:12:46 <ehird> marshmallows: But yeah, I would have to change (backtrack) to (backtrack!) 01:12:54 <ehird> and (call/backtrack ...) to (call/backtrack! ...) 01:13:10 <ehird> To me, that is not elegant. It just shows that the declarative layer was built on top of imperative primitives. 01:13:17 <ehird> And exposing implementation is not good. 01:13:32 <marshmallows> yeah good point 01:14:19 <marshmallows> hey 01:14:26 <marshmallows> how do you do bag-of with amb? 01:14:32 <ehird> marshmallows: dunno 01:14:33 <ehird> show me bag-of 01:14:43 <marshmallows> I saw the Scheme in Fixnum days one, it's pretty nastly 01:15:04 <ehird> marshmallows: Btw, I write an amb in Haskell explicitly: custom monad etc. I even made an AmbT monad transformer! http://www.haskell.org/haskellwiki/Amb 01:15:10 <ehird> Amb is the list monad, interestingly. 01:15:13 <ehird> And AmbT is NOT ListT. 01:15:21 <ehird> AmbT is ListT done right since ListT is broken 01:15:30 <marshmallows> (bag-of (let ((x (amb 1 2 3 4 5))) (if (odd? x) (amb) x))) ;=> '(2 4) 01:15:41 <ehird> marshmallows: It's even polymorphhic 01:15:46 <ehird> do a <- [1,2,3]; b <- ["hello","world"] 01:15:49 <ehird> works inside the same monad 01:15:50 <ehird> err 01:15:52 <ehird> add an amb there 01:16:12 <ehird> marshmallows: hm that would be hard 01:16:15 <ehird> you'd need to stop the call/cc 01:16:20 <ehird> dynamic-wind would be involved. 01:17:23 <marshmallows> cool! 01:17:27 <marshmallows> (AmbT) 01:17:47 <ehird> marshmallows: yeah 01:18:00 <ehird> marshmallows: that code even lets amb [] appear in any type context 01:18:14 <ehird> due to having a permanently uninstated type variable (r) and using that as a type for a function to do 'return undefined' 01:18:41 <ehird> (define (prolog form . conds) 01:18:41 <ehird> ...) ;; chicken scheme throws an *error* on this function, because it knows that ... can never be defined here. That is too damn clever, I love it. 01:20:54 <marshmallows> my code works on chicken :D 01:20:55 <ehird> marshmallows: for the backtrack continuations... 01:20:58 <ehird> (k #f) or (k (void))? 01:21:08 <ehird> I'm inclined to the former, because (void) should probably only be a return value. 01:21:19 <marshmallows> (k k) 01:21:27 <ehird> marshmallows: Chicken is great, it marries the UNIX scripting & batch compilation way with the Scheme/Lisp REPL way. 01:21:37 <ehird> It's also quite fast, and has excellent libraries and ffis 01:21:39 <lament> ehird: sounds like bash 01:21:43 <lament> :D 01:21:48 <ehird> also, the webserver it has is great 01:22:06 <ehird> lament: 'cept bash has no FFIs, barely any libraries, and is painful to code in :) 01:22:25 <marshmallows> ehird: Do you know how to make a really good REPL with it (for a sexp lang but not Scheme) 01:22:41 <ehird> marshmallows: Like readline and stuff? 01:22:47 <marshmallows> I guess 01:22:49 <marshmallows> I don't know 01:22:50 <ehird> Do you want commands at the REPL too? 01:22:51 <ehird> :p 01:22:58 <ehird> You could just expose special functions of course 01:23:41 <ehird> the example here: http://www.call-with-current-continuation.org/eggs/amb.html worked unmodified 01:23:45 <ehird> #;4> (solve-kalotan-puzzle) 01:23:45 <ehird> (f m f) 01:23:54 <ehird> amb-colelct is bag-of thouhgg 01:23:57 <marshmallows> actually I have this problem I need to solve in my code first but I can't figure how to do it in an elegant (e.g. not totally ugly) way 01:24:23 <marshmallows> or I could use an object system to write a single procedure :| 01:25:48 <marshmallows> hm 01:25:50 <ehird> marshmallows: (~ ...) is my defining 01:25:55 <ehird> (? ...) querying 01:25:56 <ehird> and hmm 01:25:58 <ehird> don't use an object system 01:26:00 <marshmallows> I use FACT and TO-DERIVE 01:26:02 <ehird> Chicken has really nice ones 01:26:03 <ehird> but still :) 01:26:07 <ehird> marshmallows: ah, but mine are macros 01:26:17 <ehird> (~ (a b) c d) -> (prolog '(a b) 'c 'd) 01:26:24 <ehird> (? (a b)) -> (prolog-query '(a b)) 01:26:42 <marshmallows> you might wanna make the macro fold the body 01:26:54 <marshmallows> (~ (a b) c d) ~> (prolog '(a b) (and c d)) 01:27:05 <ehird> marshmallows: No.. it uses its internal evaluation engine 01:27:11 <marshmallows> syntax-rules does that very naturally 01:27:19 <ehird> (~ (mortal X) (human X)) 01:27:23 <ehird> that wouldn't work with yours 01:27:43 <marshmallows> you need 3 cases 01:27:56 <marshmallows> zero, one, one+ 01:29:06 <ehird> marshmallows: what does (human 'ehird) result in yours? 01:29:20 <ehird> marshmallows: also, i only need one case 01:29:22 <marshmallows> no 01:29:24 <ehird> which does fold over the body 01:29:26 <ehird> but prolog body 01:29:32 <ehird> marshmallows: what is 'no' in scheme 01:29:39 <ehird> I mean actually (human 'ehird) 01:29:48 <marshmallows> (display "no") 01:29:53 <ehird> (mortal 'X) ;=> (((X . socrates)) . #<redo>) 01:29:56 <ehird> (human 'X) ;=> ? 01:29:59 <marshmallows> I don't think I get what you are asking.... 01:30:06 <ehird> marshmallows: You quoted that mortal example before. 01:30:12 <ehird> The human one is supposedly similar. 01:30:14 <ehird> What about: 01:30:16 <ehird> (human 'ehird) 01:30:52 <marshmallows> ok #f 01:30:52 <marshmallows> :P 01:30:57 <marshmallows> you want me to say that right? 01:31:02 <ehird> marshmallows: No. Just wondering 01:31:07 <ehird> It's a simple question, wtf is hard about it 01:31:53 <marshmallows> (prove (make-declarationbase) ((make-term-converter) '(human 'ehird)) ;=> () 01:31:55 -!- timotiis has quit ("leaving"). 01:32:10 <ehird> ok, what if human(ehird). 01:32:54 <marshmallows> % ./prolog2 01:32:54 <marshmallows> ?- (human (ehird)) 01:32:54 <marshmallows> no 01:33:18 <marshmallows> oh 01:33:21 <marshmallows> If I add that rule 01:33:53 <ehird> yea 01:34:45 <ehird> marshmallows: also, mine will support definition at the prompt 01:35:00 <marshmallows> echo "(fact (human (ehird)))" >> test.spl 01:35:02 <marshmallows> > (prove (consult "test.spl") ((make-term-converter) '(human (ehird)))) 01:35:02 <marshmallows> ((() . #f) . #<procedure>) 01:35:13 <ehird> (() . #f)?! WTF 01:35:41 <marshmallows> http://rafb.net/p/7AKTK053.txt 01:36:06 <marshmallows> do you want my entire code to look at ? (353 lines) 01:36:30 * marshmallows is sort of also hoping suggestions to improve 01:36:59 <ehird> marshmallows: don't you bind () to #f in that thing? 01:37:07 <ehird> if so, doesn't that make no damn sense whatsoever 01:38:08 <marshmallows> in my previous one I returned a stream of substitutions 01:38:17 <ehird> marshmallows: my cut is very easy 01:38:20 <ehird> (set! backtracks '()) 01:40:59 <marshmallows> so calling the cdr computed the next substitution.. now though, I have variables as mutable vectors (instead of term copying), so I don't return any substitution, but backtracking unbinds variables now 01:41:20 <ehird> marshmallows: is variables as mutable vectors better? 01:41:22 <ehird> it seems less elegant 01:41:25 <marshmallows> I could have (#f . #<procedure>) infact.. the () is reduntand 01:41:30 <marshmallows> It's more elegant and efficient 01:42:10 <ehird> what is #f 01:42:34 <marshmallows> it means a cut was not applied in proving this goal 01:42:58 <ehird> marshmallows: don't you use continuations? 01:43:05 <marshmallows> cuttable-stream-append-tail chops of choice points if it sees that 01:43:22 <marshmallows> I don't use call-with-current-continuation just streams to delay computation 01:45:00 <marshmallows> one thing is with term-copying you can use EQUAL? 01:45:05 <ehird> marshmallows: Doesn't cut just remove all the backtrack continuations? 01:45:25 <marshmallows> but with mutable variables you need to write a TERMS-EQUAL? 01:46:00 <marshmallows> cut just says, "The previous choice was the right one" 01:46:14 <marshmallows> so you can still have choices above and below it 01:47:12 <marshmallows> did that make sense? :S 01:47:25 <ehird> uhh 01:47:33 <ehird> cut just means 'no backtracking before me, beyond this point' 01:47:38 <ehird> so: 01:47:43 <ehird> (define (cut) (set! backtracks '()) 01:48:37 <ehird> marshmallows: right? 01:49:32 <marshmallows> not exactly 01:49:41 <marshmallows> for example, 01:49:41 <marshmallows> foo(X) :- !, member(X, [a,b,c,d]). 01:49:42 <marshmallows> foo(bar). 01:49:53 <marshmallows> so now if you did this query: 01:49:54 <marshmallows> ?- member(A, [1,2]), foo(X). 01:50:04 <ehird> marshmallows: when using amb cut is (set! backtracks '()) 01:50:08 <ehird> is it different for full prolog 01:50:28 <marshmallows> um if you aren't implement Prolog then you can choose any semantics you like 01:50:32 <marshmallows> but that's not cut 01:50:59 <ehird> marshmallows: it's amb's cut 01:51:01 <ehird> no? 01:51:18 <marshmallows> because you could A = 1, X = a; A = 1, X = b; A = 1, X = c; A = 1, X = d; A = 2, X = a; A = 2, X = b; ... 01:51:50 <marshmallows> the cut just says the choice between foo(X) and foo(bar) was the right one.. but in that query you can still backtrack 01:53:03 <ehird> marshmallows: so do i need to handle cut in the other parts? 01:53:05 <ehird> or can it be standalone 01:53:08 <ehird> and the other parts not know about it 01:54:07 <ehird> marshmallows: ? 01:54:13 <marshmallows> ASCII ART 01:54:20 <marshmallows> http://rafb.net/p/7NyUa343.txt 01:54:25 <marshmallows> does that help? 01:55:17 <ehird> no 01:55:21 <ehird> my question was simple, an implementation one 01:55:22 <marshmallows> :( 01:55:27 <ehird> if i implement cut do i have to design the rest of my system 01:55:29 <ehird> to accomodate for it? 01:55:36 <ehird> or can i add it later with no pain 01:55:46 <marshmallows> I added it later with no paint 01:55:48 <marshmallows> I added it later with no pain* 01:56:14 <marshmallows> Just replaced streams with cuttable streams 01:56:31 <marshmallows> Actually 01:56:45 <marshmallows> How does dynamic scope interact with calling a continuation? 01:57:05 <marshmallows> because you might be able to just have a box with #t or #f in it denoting whether or not a cut occured 01:58:16 <ehird> marshmallows: what has dynamic scope got to do with it? 01:58:20 <ehird> in prolog, everything is pretty much global 01:58:24 <ehird> or lexical. 01:58:51 <marshmallows> It's very interesting how Prolog handles binding actually 02:00:07 <ehird> marshmallows: ? 02:01:23 <marshmallows> Prolog is implicit ∃, rather than λ 02:01:44 <Slereah> Is there a tarpit based on logical languages? 02:01:54 <Slereah> Like using the Schönfinkel stroke. 02:02:07 <Slereah> Or something. 02:02:52 <marshmallows> what is the Schönfinkel stroke? 02:03:49 <ehird> marshmallows: what is [] 02:03:50 <ehird> p 02:03:52 <ehird> :p 02:03:53 <Slereah> In PN, |x ab = for allx (a | b) 02:04:08 <marshmallows> in Prolog [] is empty list 02:04:25 <Slereah> You can define all predicate logic with it, so it is said. 02:05:16 <ehird> marshmallows: prolog is implicit [] 02:05:18 <ehird> i.e. what is that char 02:05:31 <marshmallows> oh 02:05:36 <marshmallows> Backwards E 02:08:17 -!- ehird has quit ("Konversation terminated!"). 02:26:09 -!- sebbu has quit (Read error: 60 (Operation timed out)). 03:16:40 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 03:18:55 -!- slereah_ has joined. 03:23:14 -!- slereah_ has changed nick to Slereah. 03:39:34 -!- Slereah has quit ("Konversation terminated!"). 03:42:06 -!- Slereah has joined. 03:54:40 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 04:36:46 -!- RodgerTheGreat has quit. 04:54:04 -!- Slereah has joined. 06:18:22 -!- slereah_ has joined. 06:21:43 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 06:23:35 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 06:51:46 -!- slereah_ has quit (Read error: 110 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:08:32 -!- Judofyr has quit (Remote closed the connection). 08:09:12 -!- Judofyr has joined. 08:17:13 -!- sebbu has joined. 09:32:19 -!- okopol has joined. 09:53:05 -!- okopol has quit (No route to host). 10:00:13 -!- Judofyr_ has joined. 10:00:13 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 10:19:04 -!- okopol has joined. 10:38:34 -!- bsmntbombdood_ has quit (Read error: 113 (No route to host)). 10:38:58 -!- slereah_ has joined. 10:41:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 10:42:51 -!- slereah_ has joined. 10:49:16 -!- slereah__ has joined. 10:50:37 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 10:53:25 <AnMaster> Deewiant, 10:53:32 <AnMaster> GOOD: 3DDD is zero doesn't have a matching BAD 10:53:37 <AnMaster> you just get an empty line then 10:54:11 <Deewiant> looks like a misalignment on line 340 10:55:03 <Deewiant> there's a ;>:#,_ on the right end of that line, move the ;> one space to the left so it ends up as ;> :#,_ 10:55:08 <Deewiant> that should do it 10:56:25 -!- marshmallows has quit ("Leaving"). 10:57:47 <AnMaster> k 10:57:57 <AnMaster> Deewiant, can't test as I fixed my D now 10:57:57 <AnMaster> heh 10:59:31 <GregorR> It was a P, had to stretch and re-block the curve. 11:00:37 <AnMaster> hah 11:00:57 <AnMaster> Deewiant, btw just looked at ccbi for F in TOYS 11:01:00 <AnMaster> for (auto y = ty; y < ty + j; ++y) 11:01:02 <AnMaster> err? 11:01:15 <AnMaster> what is it trying to do exactly hm? 11:02:05 <Deewiant> looks like it's looping from ty to ty + j 11:02:08 <Deewiant> :-P 11:02:20 <AnMaster> ok that auto confuse me 11:02:25 <AnMaster> Deewiant, what does auto does in D? 11:02:26 <Deewiant> type inference 11:02:30 <AnMaster> ah 11:04:26 <AnMaster> BAD: G doesn't work 11:04:30 <AnMaster> in what way I wonder 11:20:54 <AnMaster> áa=BAD: V doesn't move correctly 11:20:54 <AnMaster> áa=GOOD: overlapping copy with C works 11:20:58 <AnMaster> Deewiant, that werid 11:21:00 <AnMaster> weird* 11:21:07 <AnMaster> yes I know why it doesn't work 11:21:16 <AnMaster> because I haven't writte the code for those two yet 11:21:20 <AnMaster> but the odd chars 11:26:27 <AnMaster> case 2: space[ip.x, ip.y] = '^'; goSouth(); break; 11:26:27 <AnMaster> case 3: space[ip.x, ip.y] = 'v'; goNorth(); break; 11:26:30 <AnMaster> Deewiant, that is from ccbi 11:26:42 <AnMaster> shouldn't those ^ and v be the other way around? 11:27:26 <Deewiant> probably, yes :-) 11:27:38 <AnMaster> from U in TOYS 11:36:19 <AnMaster> Deewiant, any idea what cause those áa= btw? 11:36:47 <Deewiant> nope 11:36:50 <AnMaster> BAD: 01T goes up <-- hm? 11:37:17 <Deewiant> 1T is supposed to be | 11:37:49 <AnMaster> yes it is indeed 11:37:56 <AnMaster> so up or down seem correct? 11:38:16 <AnMaster> point is, I made it just call the function used for normal | 11:38:19 <AnMaster> and normal | works 11:38:21 <Deewiant> and what is 0| supposed to do 11:38:30 <Deewiant> it's supposed to go down 11:38:33 <Deewiant> so 01T should go down 11:38:35 <AnMaster> 0| goes down, I tested it 11:38:41 <AnMaster> so why would 01T go up 11:38:47 <Deewiant> it's your code, I don't know 11:38:57 <AnMaster> sound like a bug elsewhere as the same code is used in both cases 11:40:22 <AnMaster> Deewiant, wait a sec 11:40:24 <AnMaster> BAD: 01T goes up 11:40:28 <AnMaster> I set a breakpoint on T 11:40:32 <AnMaster> it didn't hit 11:40:36 <AnMaster> so T is not even called there 11:40:37 <AnMaster> wtf 11:47:34 <AnMaster> Deewiant, when I fixed K that I had before not yet implemented, T suddenly starts to work 11:47:42 <AnMaster> Deewiant, so looks like a mycology bug? 11:48:16 <Deewiant> doesn't make sense to me 11:48:22 <Deewiant> looking at the code for testing T 11:50:11 <AnMaster> Deewiant, where is it? hm? 11:50:17 <Deewiant> end of line 422 11:50:32 <AnMaster> oh that is a HUGE area for TOYS then 11:50:58 <Deewiant> yup, TOYS is over 100 lines of testing 11:51:09 <AnMaster> Deewiant, btw, implementing V removed the odd char in front of M, but not the odd char in front of V itself 11:51:24 <Deewiant> yeah, there's probably a missing 'n' somewhere which means there's some crap on the stack 11:52:13 <AnMaster> implementing M fixed char in front of V btw 11:52:14 <AnMaster> heh 11:52:40 <AnMaster> I guess mycology didn't like that I did the simple ones first, instead of "in order of testing" 11:52:55 <Deewiant> shrug 11:52:56 <AnMaster> BAD: L gets right-hand 11:52:56 <AnMaster> BAD: R gets left-hand 11:52:59 <AnMaster> and those are wrong 11:53:04 <AnMaster> currently they do nothing 11:53:10 <AnMaster> heh 11:54:04 <Deewiant> hm 11:54:27 <Deewiant> that should be "L doesn't work at all" then 11:55:26 <Deewiant> AnMaster: can you replace line 416, col 25, 'A', with 'n' 11:55:51 <AnMaster> Deewiant, hm a sec 11:56:34 <AnMaster> Deewiant, no change 11:59:02 <Deewiant> AnMaster: do you have mercurial installed? 11:59:24 <AnMaster> Deewiant, yes I got most distributed version control systems apart from darcs 11:59:27 <AnMaster> and git 11:59:29 * AnMaster hates git 11:59:42 <Deewiant> AnMaster: pull mycology from http://tar.us.to:8000/ 11:59:52 <AnMaster> Deewiant, however, I would need some help if you want me to use mercurial, it was like half a year ago I used it 12:00:03 <AnMaster> my memory is kind of rusty there 12:00:15 <Deewiant> one sec 12:00:28 <AnMaster> hg somecommand I guess? 12:02:25 <Deewiant> AnMaster: hg clone http://tar.us.to:8000/ 12:02:29 <Deewiant> I hope 12:02:44 <AnMaster> destination directory: tar.us.to:8000 12:02:46 * AnMaster waits 12:02:58 <AnMaster> Deewiant, seems like nothing happens? 12:02:58 <Deewiant> er 12:03:57 <AnMaster> PORT STATE SERVICE 12:03:57 <AnMaster> 8000/tcp filtered http-alt 12:04:00 <AnMaster> is what nmap says 12:04:05 <AnMaster> so that won't work indeed 12:04:08 <Deewiant> yeah, I killed it now 12:04:16 <AnMaster> Deewiant, why? 12:04:18 <Deewiant> I think the hostname doesn't work, I only just updated DNS :-) 12:04:29 <AnMaster> 88.114.235.101 12:04:33 <AnMaster> is what it resolves to here 12:04:35 <Deewiant> 88.114.224.242 12:04:37 <Deewiant> is what you want 12:04:51 <AnMaster> hm, dns update time ETA? 12:05:06 * AnMaster do not want to run rndc flush because that slows down everything else 12:05:30 <AnMaster> destination directory: 88.114.224.242:8000 12:05:31 <AnMaster> ok 12:05:39 <Deewiant> seems to have worked now 12:05:54 <AnMaster> ok what now? 12:06:04 <Deewiant> now you should have a new mycology there, see if that works 12:06:08 <AnMaster> BAD: L doesn't work at all 12:06:08 <AnMaster> BAD: R gets left-hand 12:06:09 <AnMaster> indeed 12:06:10 <Deewiant> yay 12:06:18 -!- Corun has joined. 12:06:45 <AnMaster> GOOD:GOOD: 000p000W goes seog W000p000 :DOOG 000p000W goes through 12:06:45 <AnMaster> °¥@BAD: 00p100W goes through 12:06:45 <AnMaster> ³?@BAD 000p01-00W goes through 12:06:45 <AnMaster> ³@GOOD: X works 12:06:54 <Deewiant> :-P 12:06:55 <AnMaster> somehow, I don't think that count as GOOD? 12:07:06 <Deewiant> no, I don't think so :-) 12:07:10 <AnMaster> but that got more GOOD than BAD in it ;P 12:07:57 <Deewiant> AnMaster: pull again, "hg pull" should be enough 12:08:06 <Deewiant> just to see if it works for R now as well 12:08:16 <AnMaster> (run 'hg update' to get a working copy) 12:08:23 <Deewiant> that too 12:08:27 <AnMaster> now that is a reason why I selected bzr :) 12:08:42 <AnMaster> BAD: R gets left-hand 12:08:44 <AnMaster> Deewiant, still that 12:09:18 <AnMaster> (wouldn't it be easier just to comment out the relevant line in ccbi for a moment and experiment with that btw?) 12:09:39 <Deewiant> nah :-P 12:10:03 <Deewiant> alright, one more time 12:11:27 <AnMaster> BAD: R doesn't work at all 12:11:29 <AnMaster> indeed 12:11:31 <Deewiant> yeh 12:11:37 <Deewiant> cheers 12:24:07 -!- okopol has quit (Read error: 113 (No route to host)). 12:59:48 <AnMaster> Deewiant, 12:59:50 <AnMaster> GOOD:GOOD: 000p000W goes seog W000p000 :DOOG 000p000W goes through 12:59:50 <AnMaster> °¥@BAD: 00p100W goes through 12:59:50 <AnMaster> ³?@BAD 000p01-00W goes through 12:59:50 <AnMaster> ³@GOOD: X works 12:59:58 <AnMaster> all but W is now complete on TOYS 13:00:03 <AnMaster> W does nothing atm 13:00:19 <AnMaster> so why such weird output 13:00:29 <AnMaster> doing nothing should be quite basic thing shouldn't it? 13:31:45 <Deewiant> shrug 13:32:14 -!- timotiis has joined. 13:33:57 <AnMaster> ok now TOYS are implemented fully 13:34:40 <Deewiant> AnMaster: and BTW, it says clearly in mycology's readme (I think) that if you see an unimpl instruction you should reflect 13:34:53 <AnMaster> hm 13:34:59 <Deewiant> and the behaviour is your fault if you don't 13:35:14 <AnMaster> Deewiant, however most tests does detect such cases 13:35:26 <AnMaster> the threading ones seems a bit more "brittle" though 13:35:33 <Deewiant> doesn't matter, because it's undefined 13:35:52 <Deewiant> the fact that some tests detect it is incidental 13:36:38 <AnMaster> ^D^C^B^AGOOD: : on empty stack makes stack size 2 according to y$ 13:36:44 <AnMaster> hm cat -e is interesting 13:36:52 * AnMaster wonders why it print some control codes there 13:37:09 <Deewiant> bugs 13:37:43 <AnMaster> yeah but I wonder what the bug is and where 13:39:07 <AnMaster> Deewiant, btw I have an early draft for debugging protocol, your feedback would be valuable, I can put it up somewhere in one of these formats: lyx. latex, dvi or pdf 13:39:10 <AnMaster> you select 13:41:42 <AnMaster> Deewiant, http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf is the pdf version, it is just a draft 13:46:26 <AnMaster> GOOD: 000p000W goes thrugh 13:46:30 <AnMaster> that's not right hmmm 13:49:48 <AnMaster> Deewiant, request: add something like the trace mode that my interpreter got and make a binary, so I can compare and see where I go wrong :/ 13:49:58 <AnMaster> I can't figure out some bugs 13:50:12 <AnMaster> :( 13:50:25 <AnMaster> please :) 13:55:57 -!- atsampso1 has joined. 13:56:49 -!- atsampson has quit (Read error: 104 (Connection reset by peer)). 14:13:13 <Deewiant> AnMaster: what's wrong with the debugger 14:18:39 -!- Judofyr_ has changed nick to Judofyr. 14:20:04 -!- Corun has quit ("This computer has gone to sleep"). 14:21:32 -!- Judofyr has quit. 14:22:50 -!- lifthras1ir has joined. 14:22:50 -!- lifthras1ir has quit (Client Quit). 14:23:55 -!- lifthras1ir has joined. 14:24:29 -!- lifthras1ir has quit (Remote closed the connection). 14:24:29 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)). 14:24:37 -!- lifthrasiir has joined. 14:25:06 <AnMaster> Deewiant, because I can't easily get a list of all instructions executed 14:25:23 <Deewiant> why do you need that 14:25:54 <AnMaster> Deewiant, I'm unable to track down a bug in my interpreter, so I think the best way would be to compare the instructions exected with one that does it right 14:26:01 <AnMaster> to see what went wrong where 14:26:10 <Deewiant> you probably know the coordinates where you want to compare 14:26:29 <Deewiant> so just use the debugger, set a break point there, and then go step by step and see what happens 14:27:15 <AnMaster> Deewiant, tried that, something goes wrong earlier I think and doesn't show up until later 14:27:50 <Deewiant> so set the breakpoint earlier :-P 14:29:16 -!- lifthrasiir has quit (Client Quit). 14:29:40 -!- lifthrasiir has joined. 14:30:01 -!- lifthrasiir has quit (Client Quit). 14:30:07 -!- lifthrasiir has joined. 14:59:42 <AnMaster> Deewiant, no I'm unable to find out the cause 15:02:13 <Deewiant> can't you follow what's on your stack and what's on CCBI's 15:02:24 <AnMaster> hm yeah 15:02:31 <Deewiant> and if/when they differ go back to see where the differing value(s) came from 15:02:53 <AnMaster> hrrm 15:03:04 <AnMaster> Deewiant, well did you look at http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf 15:03:16 * AnMaster ponders implementing it first to be able to find this bug 15:03:18 <Deewiant> yeah I looked it over quickly 15:03:26 <AnMaster> any comments on it? 15:03:42 <Deewiant> nothing particular 15:04:00 <AnMaster> anything ccbi will ever support if I do it and make a good debugger frontend? 15:04:04 <Deewiant> I didn't read it word for word so there might be omissions or something but the general idea looks fine 15:04:22 <AnMaster> ok 15:04:51 <Deewiant> does the interpreter ever send messages? or only respond to questions from the client? 15:09:23 <AnMaster> Deewiant, it does send trace messages 15:09:40 <AnMaster> oh and BRK for breakpoint hit and such 15:10:06 <AnMaster> Deewiant, the table at the end describes that 15:10:11 <AnMaster> appendix a 15:10:13 <Deewiant> ah, tracing 15:10:19 <Deewiant> is that always enabled? 15:10:31 <AnMaster> Deewiant, yes, do you have an objection to that? 15:10:36 <Deewiant> if it is, it should be disablable IMO 15:10:45 <AnMaster> ok 15:10:50 <AnMaster> but why? 15:10:54 <AnMaster> performance? 15:10:58 <Deewiant> because if you don't need it it's pointless 15:11:11 <AnMaster> hm ok 15:11:13 <Deewiant> you could be debugging over the net, right 15:11:28 <AnMaster> Deewiant, you could but I can't imagine why anyone would want to heh 15:11:31 <Deewiant> so sending a lot of lines like that over a slow connection can be annoying 15:11:40 <AnMaster> hm 15:11:49 <Deewiant> AnMaster: user runs a script on his machine, developer debugs remotely 15:12:01 <Deewiant> admittedly this /is/ Funge we're talking about, but you never know ;-) 15:12:07 <AnMaster> heh, well that user got to trust the developer, as you can set funge space cells 15:12:20 <Deewiant> well, of course 15:12:32 <AnMaster> so "drowssap/cte/" o 15:12:33 <AnMaster> ;P 15:12:47 <AnMaster> or i 15:13:08 <Deewiant> in general, in that situation, the user will do whatever they're asked anyway 15:13:15 <AnMaster> oh? 15:13:37 <Deewiant> well, because such users aren't necessarily very tech-savvy 15:13:58 <AnMaster> I don't think non-computer literate ppl would *use* funge 15:14:08 <Deewiant> which is why I said "admittedly" above :-P 15:14:11 <AnMaster> yeah 15:15:01 <Deewiant> okay, so... you've only got a windows debugger but you need to debug a funge script running on a *nix 15:15:04 <Deewiant> or vice versa 15:15:47 <AnMaster> Deewiant, hm ok a point 15:15:58 <AnMaster> most likely done over LAN though but I see your point 15:16:11 <AnMaster> something like a TRACEOPT enabled:b ? 15:16:16 <AnMaster> where b is a boolean 15:16:27 <Deewiant> or just TRACETOGGLE or something 15:16:31 <AnMaster> or maybe, as I indented other ways of tracing 15:16:33 <AnMaster> a bit mask 15:16:52 <AnMaster> for example just trace when new ips were created, but possible that is better as change notification 15:18:28 <AnMaster> Deewiant, should trace initially be on or off? 15:19:07 <Deewiant> no default, needs negotiation? 15:19:24 <Deewiant> so that the client can set its own default 15:19:59 <AnMaster> hm 15:20:07 <AnMaster> Deewiant, it is easy to set in pre-run state 15:20:13 <AnMaster> ie just before program starts running 15:21:22 <AnMaster> Deewiant, also it is unclear to me how some things should work, ie tracing of space 15:21:35 <AnMaster> or in k 15:21:48 <AnMaster> one trace each time k runs the instruction? 15:22:22 <Deewiant> hmm 15:22:34 <Deewiant> if it's kp or something it might change the instruction being run, so yes I guess 15:23:56 <AnMaster> Deewiant, also I got no idea what extra stuff TRDS would need, if you have any interest in seeing it supported I need info on that 15:24:22 <AnMaster> I did add a ip mode in the bitmask on trace for it after looking into CCBI's debugger 15:24:41 <Deewiant> for debugging it's a bit tricky 15:25:13 <Deewiant> just for tracing, it's easy since you can just send "space changed to <new funge-space data>" or "space changed by" and similarly for IPs moving around and being created/dying 15:25:14 <AnMaster> also should it be possible to change IP mode, ie, string mode and such from inside the debugger? 15:25:46 <Deewiant> for full functionality, sure, but I wonder if it's really necessary 15:25:46 <AnMaster> uhu? 15:25:59 <Deewiant> I mean, tracing anything is easy 15:26:09 <Deewiant> since the debugger doesn't have to know anything about semantics 15:26:12 <AnMaster> yes, and this one allows several breakpoints heh 15:26:43 <AnMaster> Deewiant, well depends, for example if you want the debugger to draw a "live" version of funge space as the programs execute it would have to 15:26:44 <Deewiant> the interpreter can just tell, when time jump happens, "funge-space changed to ...", "IP 0 moved to ...", "IP 1 is now in mode X", etc. 15:26:53 <Deewiant> AnMaster: no, it wouldn't 15:27:03 <Deewiant> AnMaster: since the interpreter only has to communicate the current funge-space 15:27:05 <AnMaster> that is one thing I wanted recently, when trying one of the <mad domain name> programs 15:27:08 <AnMaster> called a roller 15:27:09 <Deewiant> and the debugger can draw that 15:27:17 <AnMaster> hm 15:27:25 <Deewiant> it shouldn't be the way that interpreter says "executed p" and then debugger executes p locally 15:27:40 <AnMaster> true 15:27:41 <Deewiant> it should be that interpreter says "executed p; space[0, 0] is now a" 15:27:47 <AnMaster> Deewiant, so you want change notification 15:27:49 <AnMaster> see that section 15:27:50 <Deewiant> and then debugger can draw a at (0,0) 15:27:56 <AnMaster> EVCHGANYCELL 15:27:59 <AnMaster> is the one you want 15:28:01 <AnMaster> for that 15:28:30 <Deewiant> aye 15:28:47 <AnMaster> anyway what is needed for stack-stack 15:28:56 <AnMaster> I don't know there, the stack-stack section is just todo atm 15:29:12 <Deewiant> more events needed, though 15:29:20 <AnMaster> Deewiant, agreed 15:29:27 <Deewiant> and hmm 15:29:33 <Deewiant> how does this position stuff work 15:29:37 <Deewiant> in events 15:29:45 <AnMaster> you mean dimensions? 15:29:50 <Deewiant> "this is the position to monitor" 15:30:16 <AnMaster> Deewiant, yes? not sure I got your question? 15:30:29 <Deewiant> so what is that, exactly 15:30:33 <Deewiant> funge-space coordinates? 15:30:34 <Deewiant> for one point? 15:30:35 <Deewiant> for a range? 15:30:44 <AnMaster> hm see section 5.1 15:30:56 <AnMaster> but one cell yes 15:31:12 <Deewiant> okay 15:31:15 <AnMaster> but range may indeed be a good idea I guess 15:31:16 <Deewiant> so, something to consider 15:31:17 <Deewiant> ranges 15:31:20 <Deewiant> and also, unbounded ranges 15:31:27 <AnMaster> um? 15:31:30 <Deewiant> so you can say "anything with y-coordinate > 100" 15:31:37 <AnMaster> right I see 15:31:46 <Deewiant> because the funge-space can grow, so you don't have to send STOP, also check y-coordinate 101, CONTINUE 15:31:54 <Deewiant> and then again for y-coordinate 102, etc. 15:32:13 <AnMaster> well that is one issue with STOP, it may not stop exactly where you want 15:32:16 <AnMaster> for example, network lag 15:32:22 <Deewiant> yeap 15:32:23 <AnMaster> from the remote developer ;) 15:32:35 <Deewiant> well, even internally to the machine 15:32:39 <AnMaster> indeed 15:32:42 <Deewiant> the interpreter will probably go at least a few instructions forward 15:32:59 <Deewiant> also, btw: IP change events 15:33:00 <AnMaster> in even the best case at least one instruction forward the way I plan to implement it 15:33:08 <AnMaster> Deewiant, hm? as in? 15:33:17 <AnMaster> "ip split happened"? 15:33:19 <Deewiant> "IP 1 moved to (x,y)" 15:33:23 <Deewiant> "IP 2 created at (x,y)" 15:33:30 <Deewiant> (+ with mode foo) 15:33:31 <Deewiant> etc. 15:33:34 <AnMaster> moved well, that trace would show 15:33:43 <AnMaster> create and destroy yes 15:34:35 * AnMaster is copying this down into a text file 15:34:50 <Deewiant> :-) 15:36:07 <Deewiant> for stack stack: push stack, pop stack, at least 15:36:28 <AnMaster> it can do that 15:36:32 <AnMaster> oh wait 15:36:36 <AnMaster> push a stack you mean? 15:36:38 <AnMaster> right 15:36:39 <Deewiant> yes 15:37:09 <Deewiant> tracing or events for when stack is changed 15:37:13 <AnMaster> Deewiant, brb, phone sorry 15:37:22 <Deewiant> in general, I'm a bit leery about the tracing+events relationship 15:37:39 <Deewiant> tracing currently just looks like an event that always fires 15:37:56 <Deewiant> so maybe remove the whole tracing section and do the whole thing in terms of events 15:38:29 <Deewiant> there doesn't seem to be any way of getting info on the current stack state 15:39:18 <Deewiant> SSGET for getting a whole stack at once, maybe 15:39:35 <Deewiant> and an SSGETALL for getting the whole stack stack 15:41:49 <AnMaster> Deewiant, yeah it should probably be an event 15:42:15 <AnMaster> and I agree with the other two 15:42:21 <AnMaster> Deewiant, is there anything un-needed? 15:42:42 <AnMaster> because the protocol is starting to look more complex than needed :/ 15:43:54 <Deewiant> well I'm not sure about all the "get info" stuff 15:44:09 <Deewiant> if tracing is always on, it's not needed 15:44:22 <Deewiant> but then, having full tracing is a bit bloaty 15:44:45 <AnMaster> yes I'm changing it into an even 15:44:47 <AnMaster> event' 15:44:48 <AnMaster> * 15:45:15 <Deewiant> what I mean is, the only cases where you would need IPINFO, for instance, are if you don't have IP tracing on 15:45:36 <Deewiant> because if you have tracing on, then the interpreter has already told you where the IPs are, what their deltas are, etc. 15:46:16 <Deewiant> but it's true that if you don't have it on, you do need it, and this way you can minimize network traffic: send a breakpoint, then request all info when stopped and get nothing in between. 15:46:41 <Deewiant> so strictly speaking I don't think there's anything major that's unnecessary 15:46:57 <Deewiant> similarly for FSPACEGET and FSPACEBOUNDS and FSPACEDUMP 15:47:21 <Deewiant> if you have the event notification for that on, you don't need it, otherwise you do and that way is more optimal in some cases. 15:47:42 <AnMaster> Deewiant, you do need it in one case always 15:47:45 <AnMaster> to get initial state 15:47:53 <AnMaster> and then turn on the notification 15:48:09 <Deewiant> you don't necessarily need the initial state 15:48:14 <AnMaster> hm? 15:48:22 <Deewiant> for instance, FSPACEDUMP 15:48:29 <AnMaster> yes? 15:48:43 <Deewiant> if you know that all you want to do is set a breakpoint at (x,y) and then see what's up, you don't need to download a dump of the whole space at the start 15:48:52 <AnMaster> true 15:49:07 <AnMaster> but why on earth would you want to trace writes to funge space then? 15:49:19 <Deewiant> well, this is a case where you wouldn't. 15:49:25 <AnMaster> indeed 15:49:28 <Deewiant> you'd set all events off 15:49:32 <Deewiant> set the breakpoint 15:49:39 <Deewiant> and then get no traffic until the interpreter's at the breakpoint. 15:50:40 <AnMaster> indeed 15:50:48 <AnMaster> Deewiant, well that made me think... 15:50:55 <Deewiant> but it's up to you whether you consider that use case relevant. 15:50:58 <AnMaster> with tcp you need to keep the connection alive 15:50:59 <AnMaster> so 15:51:10 <Deewiant> if you don't want to make a big spec. 15:51:16 <AnMaster> how do you do that then? some "keep alive" instruction needed maybe? 15:51:26 <AnMaster> Deewiant, I want something that won't take a year to implement 15:51:30 <Deewiant> hmm, isn't that builtin to TCP? 15:52:00 <AnMaster> Deewiant, I think connections times out, otherwise why is there an option for ssh keepalive for example 15:52:01 <Deewiant> http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html 15:52:11 <AnMaster> Deewiant, you said "<Deewiant> and then get no traffic until the interpreter's at the breakpoint." 15:52:13 <AnMaster> that is the issue 15:52:16 <AnMaster> no traffic 15:52:38 <Deewiant> but isn't that rather an issue with the SSH daemon killing the connection 15:52:45 <AnMaster> not sure 15:52:46 <Deewiant> not with the OS 15:52:49 <Deewiant> neither am I 15:53:08 <Deewiant> but I do think it'd make more sense if it were 15:53:12 <Deewiant> so it probably is ;-) 15:54:09 <AnMaster> Deewiant, um, I think connection tracking in firewall will time out after a while with no traffic 15:54:14 <AnMaster> I'm pretty sure that is the case 15:55:08 <AnMaster> because I remember that back when I ran windows, I ran colinux for a while, I didn't need ssh keepalive to make a connection stay alive to colinux, UNTIL I enabled iptables in colinux 15:55:16 <AnMaster> then suddenly it was needed 15:55:19 <Deewiant> hm, possible 15:55:32 <Deewiant> alright, so enablable keepalives 15:55:41 <AnMaster> of the tcp type? yeah good idea 15:56:38 -!- ehird has joined. 15:56:49 <AnMaster> Deewiant, wait, the application doesn't do tcp keepalive? 15:56:52 <AnMaster> but the OS does? 15:56:54 <ehird> boop 15:56:58 <ehird> AnMaster: umm yeah 15:56:59 <AnMaster> ok then we need some protocol level one 15:57:08 <ehird> obviously the os' tcp layer handles that 15:57:09 <ehird> :) 15:57:10 <Deewiant> I honestly don't know whether you need app-level keepalives 15:57:16 <Deewiant> I don't think so, but I don't know 15:57:24 <AnMaster> Deewiant, irc uses it too 15:57:28 <AnMaster> PING/PONG 15:57:29 <ehird> it is kinda weird though, most raw-feeling socket stuff has a lot of bunk behind it in tcp 15:57:32 <Deewiant> yeah, but IRC is /old/ 15:57:33 <ehird> it's really quite comfy 15:57:34 <ehird> :) 15:57:37 <ehird> and yeah 15:57:42 <ehird> IRC is an old dead machine 15:57:47 <ehird> ping/pong is pretty much useless 15:57:48 <AnMaster> agreed 15:57:55 <AnMaster> ehird, however ssh keepalive then 15:57:56 <ehird> & annoying to have to code into stuff 15:57:57 <AnMaster> it is useful 15:58:08 <ehird> AnMaster: ssh has to do all kinds of tricks to fit into the protocol it works on 15:58:13 <ehird> kind of like stack smashing in c 15:58:17 <AnMaster> <AnMaster> Deewiant, um, I think connection tracking in firewall will time out after a while with no traffic 15:58:17 <AnMaster> <AnMaster> I'm pretty sure that is the case 15:58:17 <AnMaster> <AnMaster> because I remember that back when I ran windows, I ran colinux for a while, I didn't need ssh keepalive to make a connection stay alive to colinux, UNTIL I enabled iptables in colinux 15:58:17 <AnMaster> <AnMaster> then suddenly it was needed 15:58:22 <AnMaster> ehird, hm ^ 15:58:25 <Deewiant> yeah, SSH doesn't necessarily run over TCP 15:58:32 <ehird> maybe iptables moderates it 15:58:39 <Deewiant> maybe SSH keepalive just means enabling TCP keepalive, when on TCP 15:59:22 <AnMaster> hm 15:59:44 <Deewiant> once again, I have no clue. 16:00:01 -!- Judofyr has joined. 16:00:05 <ehird> i think ssh does its own keepalive 16:00:11 <ehird> so that it can be protocol-agnostic 16:00:18 <AnMaster> yeah 16:00:18 <ehird> however, protocol-agnostic programs are... uncommon :) 16:00:32 <AnMaster> ehird, well I need this to run over two kind of sockets 16:00:42 <AnMaster> TCP/TCP6 and Unix domain 16:01:46 <ehird> AnMaster: you should really give git a try 16:01:50 <ehird> not like 16:01:54 <ehird> try and use it for everything 16:01:58 <ehird> but just use some projects using it 16:02:03 <ehird> its not that bad once you get used to it. nice 16:02:08 <AnMaster> ehird, I have tried it 16:02:13 <ehird> AnMaster: presumably not recently 16:02:18 <ehird> yes, until recently, it was painful 16:02:20 <ehird> it's not any more 16:02:20 <AnMaster> ehird, about two months ago 16:02:27 <AnMaster> it changed since then? 16:03:02 <ehird> AnMaster: a litle bit. but you obviously didn't try it very well 16:03:15 <AnMaster> "obviously"? 16:03:16 <ehird> its kinda like lisp. you learn about it, laugh at it, hate it ferociously, then maybe try it and gradually 'get it' :) 16:03:33 <ehird> (also, darcs is pretty impressive for its theoretical basis. but mostly its used by lisp/haskellers) 16:03:45 <AnMaster> ehird, while I find lisp quite annoying I do see it have points, and I even coded some small bits of elisp 16:04:19 <AnMaster> ehird, and yes darcs indeed, didn't seem to be able to install haskell on my PPC based computer where I tried it 16:04:40 <slereah__> "We are a triune being - BODY, SOUL, and SPIRIT. Speaking computerese, we have Body - computer casing; Soul - Hard Drive/Hard Copy; Spirit - Software." 16:04:41 <slereah__> Lulz 16:04:52 -!- sebbu has quit (brown.freenode.net irc.freenode.net). 16:04:52 <ehird> 'uld help making Funge a more attractive language. In this' 16:04:57 <ehird> because funge should be an attractive language. 16:05:02 -!- sebbu has joined. 16:05:14 <ehird> AnMaster: find it quite annoying -- yeah your state with git is like yours with lisp :) 16:05:27 <ehird> i'm not patronising you, because i felt exactly the same way about git and lisp :p 16:05:32 <AnMaster> ehird, no I find git bloody stupid 16:05:35 <AnMaster> quite a difference 16:05:40 <ehird> AnMaster: still the same basic thing 16:05:46 <ehird> you don't "get it" yet 16:05:59 <AnMaster> ehird, also it is harder to learn for others 16:06:09 <AnMaster> I don't want to have to hand hold users once I get it 16:06:13 <AnMaster> as you said 16:06:18 <Deewiant> ehird: I don't like Darcs's patch-based model 16:06:32 <ehird> Deewiant: It does do a good job of sorting out stuff, though 16:06:34 <AnMaster> ehird, bzr is close enough to svn that you can easily change really 16:06:41 <ehird> Though its automatic hunking sometimes gets it wrong 16:06:51 <ehird> AnMaster: being close to svn is a flaw 16:06:53 <AnMaster> Deewiant, that is one thing I want from darcs 16:06:58 <AnMaster> the ability to juggle changesets 16:07:03 <ehird> svn is broken by design, and theoretically bullcrap 16:07:06 <AnMaster> and be able to track from where they came 16:07:11 <AnMaster> ehird, well cvs is worse 16:07:22 <ehird> AnMaster: cvs is probably better than svn. 16:07:25 <AnMaster> ehird, point is svn got a nice user interface 16:07:29 <ehird> I say that unsarcastically 16:07:34 <AnMaster> I'm not talking about internals 16:07:39 <AnMaster> but they way a user see it 16:07:41 <ehird> and if you think svn's user interface is nice I don't know what kind of monster you are 16:07:51 <AnMaster> ehird, compared to cvs at least 16:08:04 <AnMaster> ehird, err the one with two heads and three arms 16:08:07 <AnMaster> ;P 16:09:45 <ehird> really the ideal solution is plan9's versioned FS 16:09:50 <ehird> it's terribly advanced &nice to use 16:10:09 <ehird> unfortunately plan9, though infinitely better than any system i've come across, is totally useless for practical work :) 16:10:20 <AnMaster> ehird, exactly 16:10:33 <AnMaster> it's a research os 16:10:38 <AnMaster> that is now more or less dead 16:10:41 <ehird> AnMaster: not dead 16:10:45 <ehird> new snapshots are made daily 16:10:58 <AnMaster> ehird, so is the community growing? 16:11:10 <AnMaster> when will it have support for accelerated 3D? 16:11:11 <ehird> AnMaster: in little trickles 16:11:15 <ehird> AnMaster: it is a research os. 16:11:22 <ehird> why would it have support for that? 16:11:26 <AnMaster> when will it work on something as simple as a SATA disk? 16:11:32 <ehird> it does 16:11:33 <AnMaster> last I checked it didn't handle that 16:11:37 <AnMaster> hm ok 16:11:43 <ehird> iirc 16:12:04 <Deewiant> daily? http://plan9.bell-labs.com/sources/plan9/sys/src/ looks a bit older 16:12:09 <AnMaster> ehird, point is, it is not useful for practical work 16:12:27 <AnMaster> Deewiant, well for bell it *is* dead 16:13:55 <ehird> Deewiant: that's not a snapshot 16:13:59 <ehird> AnMaster: i already said that 16:14:05 <ehird> [15:10] <AnMaster> ehird, exactly 16:14:06 <ehird> [15:10] <AnMaster> it's a research os 16:14:06 <ehird> [15:10] <AnMaster> that is now more or less dead 16:14:08 <ehird> everything but the last line, i agree with 16:14:30 <Deewiant> ehird: where're the snapshots 16:14:36 <AnMaster> ehird, yes I was agreeing with you 16:14:43 <ehird> Deewiant: don't rememberr offhand 16:14:57 <ehird> AnMaster: ok, but it is NOT more or less dead 16:15:06 <ehird> it's alive, and interesting fromm a research POV 16:15:14 <ehird> hopefully the OSs of the future will resemble it in some way 16:15:26 <ehird> i really like it's refreshing approach to the mouse, actually 16:15:32 <ehird> the tests etc. they did and all 16:15:39 <ehird> and they developed an interface combining the keyboard and the mouse efficiently 16:15:41 <ehird> it's really nice 16:15:59 <ehird> i've always been a mouse fan, though. it's just that a lot of apps are designed suckily for one 16:16:09 <ehird> (I love acme.) 16:18:21 <AnMaster> hm? 16:18:32 <AnMaster> I prefer working with my hand on the keyboard 16:18:36 <AnMaster> avoiding mouse 16:18:55 <AnMaster> ergonomics 16:19:45 <ehird> AnMaster: the mouse is very effiient with the right interface 16:19:55 <ehird> and enough practice, a lot of mouse-haters just don't even try the mouse properly 16:19:59 <ehird> so they're simply not proficient with it 16:20:10 <AnMaster> ehird, I can use it well enough 16:20:26 <AnMaster> I use it a lot, but it make my hand hurt in the long run 16:20:57 <AnMaster> a track ball seems much better 16:21:03 <ehird> trackballs are interesting 16:21:12 <ehird> i am not sure they are superior to a well-calibrated mosue though 16:21:14 <AnMaster> ehird, of course there are tasks where you can't avoid mouse, for example image editing 16:21:20 <ehird> anyway, my whole computer interaction system is warped 16:21:31 <ehird> my hands are very efficient at jumping keyboard/mouse 16:21:36 <ehird> so the context switch is almost none 16:21:37 <AnMaster> where mouse or pen on touch surface are the only sane options 16:21:44 <ehird> also, my typing is really weird 16:21:51 <AnMaster> ehird, oh? 16:21:57 <ehird> my hands are predictive, they know which area they will be tapping the most before they actually tap 16:22:15 <ehird> so they kind of float about to a weird place and then a second later i realise that they were being really clever and going to the right place 16:22:40 <AnMaster> heh? 16:22:56 <AnMaster> yes of course I know where I will type 16:23:34 <ehird> no 16:23:35 <ehird> I mean 16:23:40 <ehird> my hands generally don't rset on the home row 16:23:54 <ehird> they type a bit then drift somewhere else (not conciously, they do it automatically) 16:24:04 <ehird> and then it ends up that where they drifted was where they'll be typing the most until the next drift 16:24:10 <ehird> it's strangely automatic 16:24:11 <AnMaster> so I move while the previous char is typed with the other hand. anyway I'm right-handed but I seem to type faster and use more of my fingers with left hand 16:24:18 <ehird> I just kind of wobble my hands and tap down 16:24:20 <ehird> and it all moves for me 16:24:26 <Deewiant> I never use the home row anyway 16:24:35 <AnMaster> Deewiant, nor do I 16:24:36 <Deewiant> my fingers are where they need to be, not on some default location :-P 16:24:43 <AnMaster> exactly 16:24:51 <AnMaster> that comes from not using vi IMO 16:24:51 <ehird> my idiosyncratic style has developed over quite a few years 16:25:00 <Deewiant> maybe, but I use vim :-P 16:25:07 <AnMaster> Deewiant, ah but I use emacs 16:25:37 <ehird> i use vi or emacs 16:25:43 <ehird> i quite like textmate on os x 16:25:58 -!- marshmallows has joined. 16:26:01 <AnMaster> mhm 16:26:02 <ehird> esp. for xml 16:26:06 <ehird> its really nice 16:26:13 <AnMaster> ehird, I tend to xml in kate 16:26:18 <AnMaster> C in emacs or kdevelop 16:26:34 <AnMaster> the problem is when finding out you used both for same file 16:26:36 <AnMaster> heh 16:26:37 <ehird> AnMaster: hmm, just tried xml'ing in kate 16:26:38 <AnMaster> at the same time 16:26:40 <ehird> not that hot 16:26:45 <ehird> but still hotter than anything emacs has, oddly 16:26:51 <AnMaster> ehird, I don't really do a lot of xml really 16:26:55 <ehird> emacs' xml support sucks more than anything else emacs can do 16:26:56 <AnMaster> so kate is enough for me 16:26:57 <ehird> it's just terrible 16:27:13 <ehird> i don't care if nxml has a validating xml parser written in emacs, it's crap 16:27:14 <AnMaster> ehird, agreed, it fails at indention in xml for example 16:27:50 <AnMaster> ehird, but the solution is very simple 16:27:55 <AnMaster> just use S-Expressions 16:28:03 <AnMaster> emacs got a very good support for that 16:29:21 <ehird> AnMaster: s-expressions can get really ugly for some types of data you know 16:29:37 <AnMaster> indeed, but much less overhead than xml in most cases 16:29:47 <ehird> also 16:29:51 <ehird> emacs has no S-Expr mode 16:29:52 <ehird> just lisp mode s:) 16:29:58 <ehird> Paredit on its own: nope. won't indent. 16:30:49 <AnMaster> hm? 16:30:59 <AnMaster> ehird, just open a html file or xml file in emacs 16:31:04 <AnMaster> it won't indent where you want 16:31:44 <AnMaster> while kate won't find the right indention level automatically either, it won't prevent you from doing it yourself 16:31:58 <Deewiant> emacs does? O_o 16:32:09 <AnMaster> Deewiant, yes for C it does 16:32:25 <Deewiant> I mean, "prevent you from doing it yourself" 16:32:35 <AnMaster> Deewiant, in xml mode it does yes oddly 16:34:19 <ehird> AnMaster: kate autoindents 16:34:22 <ehird> you must have it broken 16:34:41 <AnMaster> ehird, what version? 16:35:16 <AnMaster> ? 16:36:12 <AnMaster> ehird, = 16:36:13 <AnMaster> ? 16:36:27 <ehird> AnMaster: ubuntu 16:36:29 <AnMaster> ...... 16:36:32 <AnMaster> what kate version 16:36:33 <AnMaster> ... 16:36:40 <ehird> ubuntu's kate. 16:36:43 <AnMaster> and kde version 16:36:43 <ehird> go in your config 16:36:47 <ehird> change the indent settings 16:36:48 <AnMaster> ehird, and that is 4.what? 16:36:51 <AnMaster> or 3.what? 16:36:52 <ehird> 4? 16:36:52 <ehird> no 16:36:53 <ehird> 3 16:37:04 <ehird> kate has ALWAYS indented xml 16:37:06 <ehird> its a config options 16:37:07 <ehird> sheesh 16:37:16 <AnMaster> help -> about kate 16:37:18 <ehird> change indent mode to 'c style' 16:37:19 <ehird> jesus 16:37:20 <AnMaster> what version? 16:37:23 <ehird> change indent mode to 'c style' 16:37:23 <ehird> change indent mode to 'c style' 16:37:23 <ehird> change indent mode to 'c style' 16:37:23 <ehird> change indent mode to 'c style' 16:37:30 <AnMaster> ehird, there is no such thing here 16:37:32 <AnMaster> odd 16:37:36 <ehird> AnMaster: settings 16:37:38 <ehird> configuration 16:37:39 <ehird> indentation 16:37:41 <ehird> -> c style 16:37:54 <AnMaster> you mean: Inställningar -> Anpassa kate? 16:38:06 <ehird> whatever, you dirty swede :) 16:38:08 <slereah__> If you use C style, Al Qaeda wins. 16:38:13 <AnMaster> slereah__, err? 16:38:23 <AnMaster> ehird, anyway emacs rocks for C 16:38:26 <ehird> real programmers use computers in english! ;) 16:38:29 <ehird> AnMaster: yes but C style indents xml 16:38:37 <AnMaster> ehird, perfect CScope integration for example 16:38:43 <olsner> I find most swedish translations of software disgusting 16:39:03 <AnMaster> olsner, the KDE one is unusally good 16:39:03 <AnMaster> not common 16:39:09 <AnMaster> but KDE one is actually really high quality 16:39:23 <olsner> oh, good for KDE 16:39:35 * olsner uses no KDE software 16:39:40 <AnMaster> olsner, gnome? 16:39:51 <AnMaster> they have very shitty Swedish translation iirc 16:40:00 <AnMaster> but I haven't used it for long 16:40:07 <AnMaster> so can't really say anything about current state 16:40:07 <olsner> nah, I use X11, with some software from the gnome project ;-) 16:40:24 <AnMaster> olsner, what window manager? 16:40:52 <ehird> oh god i'm pretentious 16:40:59 <ehird> i just responded to a post on reddit saying 'JWZ' with 'it's jwz' 16:41:13 <AnMaster> jwz? 16:44:31 <ehird> jamie zawinski 16:44:33 <olsner> AnMaster: xfce, so I guess I'm half-gnome 16:44:44 <AnMaster> ehird, doesn't mean anything to me 16:44:48 <ehird> Jamie W. Zawinski (born November 3, 1968[1] in Pittsburgh, Pennsylvania), commonly known as jwz, is an American computer programmer responsible for significant contributions to the free software projects Mozilla and XEmacs, and early versions of the proprietary Netscape Navigator web browser. He still actively maintains the XScreenSaver project, used by most Unix-like computer operating systems for screenblanking. 16:45:14 <ehird> (also: 'Zawinski is currently the proprietor of the DNA Lounge, a nightclub in San Francisco.') 16:45:44 <ehird> if you've ever heard: 'Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.' then that's a jwz quote. it's also horribly incorrect 16:46:15 <AnMaster> ah 16:46:20 <Deewiant> that's often paraphrased as "I know, I'll use XML." ;-) 16:46:26 <AnMaster> ehird, I know someone who like to quote that yes 16:46:30 <AnMaster> one of the #bash regulars 16:46:34 <AnMaster> called greycat 16:46:53 <AnMaster> and well some ppl try to use regex where regex does not really fit 16:47:29 <olsner> hmm, has someone produced a turing complete regexp dialect yet? 16:47:36 <AnMaster> olsner, was just about to ask 16:47:45 <AnMaster> if not, someone should 16:48:37 <ehird> olsner: perl5 regexps 16:48:42 <ehird> also ais523 is working on one 16:48:46 <ehird> which is actually convenient for parsing 16:48:52 <ehird> AnMaster: aah, greycat. that moron :) 16:49:03 <AnMaster> ehird, oh? he is smart 16:49:06 <AnMaster> just very unusal 16:49:11 <olsner> doesn't perl5 regexpes rely on embedding perl code for TC:ness? 16:49:39 <AnMaster> ehird, I respect his knowledge, but I don't agree with his opinions 16:49:41 <ehird> AnMaster: smart but elitist and unhelpful 16:49:46 <ehird> & plain wrong on most things 16:49:53 <AnMaster> ehird, opinons indeed 16:49:55 <ehird> so a lot of smart going to waste 16:50:03 <ehird> olsner: nope 16:50:09 <ehird> you can have recursive regexps and some other stuff 16:50:10 <ehird> it is tc 16:50:23 <ehird> Speaking of jwz, this has to be the craziest lisp code i've ever seen: http://jwz.livejournal.com/854482.html 16:50:31 <AnMaster> ehird, and he knows more than anyone else on #bash about HP-UX ;) 16:50:40 <AnMaster> or whatever it was he ran 16:52:56 <olsner> heh, just the lisp equivalent of a bit of unsafePerformIO and unsafeCoerce :P 16:53:28 <ehird> AnMaster: knowledge about HP-UX, how useful and practical 16:53:44 <AnMaster> ehird, hehe exactly ;P 16:53:47 <ehird> olsner: except that those functions will be actively used in the code for: 1. efficient programs 2. OS-level code 16:53:49 <AnMaster> it was ironic 16:53:52 <ehird> since they were just low-level primitives 16:54:07 <ehird> #<massively-positive-bignum> is a hilarious printout though 16:54:34 <ehird> http://www.unlambda.com/nevermore/ ooo 16:55:46 <ehird> http://www.unlambda.com/lisp/meroko.page a different one, same site. odd 17:17:13 <AnMaster> Deewiant, where is the string GOOD: : on empty stack makes stack size 2 according to y stored 17:17:16 <AnMaster> I can't find it 17:18:23 <AnMaster> oh wait just found it 17:18:25 <AnMaster> but wtf 17:29:24 <ehird> is SISC's startup unbearably slow for anyone else? 17:29:51 <AnMaster> ehird, SISC? 17:32:17 <slereah__> Second Interpreter Scheme Something 17:32:22 <ehird> seecond interpreter of scheme code 17:32:24 <ehird> a java scheme interp 17:32:26 <ehird> main interest: 17:32:33 <ehird> it has full continuations while still interacting with java, and 17:32:36 <ehird> everything is serializable in it 17:32:44 <ehird> you can serialize functions, continuations, everything except obviously things like sockets 17:37:06 <AnMaster> Deewiant, so far it seems to be crap on after the newline in "GOOD: ] turns flying IP right" 17:37:32 <AnMaster> stack have 1 2 3 4 at that point 17:37:34 <AnMaster> wtf 17:42:49 <AnMaster> Deewiant, the code in that area is very confusing 17:43:51 <ehird> hmm 17:43:55 <ehird> i wonder how hard implementing a basic smalltalk is 17:45:14 -!- Corun has joined. 17:45:45 <AnMaster> "GOOD: \ on empty stack makes"$"x stack size 2 accord"< 17:45:53 <AnMaster> Deewiant, what is the $ there for? 17:45:59 <AnMaster> it tests something else at once? 17:46:22 <AnMaster> oh wait 17:46:32 <AnMaster> it is code running through the string 17:46:36 <AnMaster> oh my 17:50:25 <ehird> hmm 17:50:28 <ehird> anyone a smalltalker? 17:50:39 <ehird> do messages have built-in arity, i.e. can I respond_to with an argc? 17:50:41 <ehird> i think no 17:51:50 <AnMaster> <small>well depends on how you define smalltalker</small> 17:52:07 * AnMaster runs 17:53:01 <ehird> for (i = argc; i--;) { /* cute c hack *. 17:59:37 <AnMaster> ehird, if you want to parse your command line arguments backwards it does indeed seem like the right way 17:59:45 <AnMaster> why on earth you would want that I don't know 17:59:52 -!- slereah_ has joined. 18:03:30 <ehird> AnMaster: yeah, oops :) 18:03:32 <ehird> anyway 18:03:42 <ehird> http://rafb.net/p/x7YYOH94.html skeleton of message sending for my imaginary smalltalk 18:04:08 <AnMaster> ehird, I think objc does message based object orientation too? 18:04:09 <AnMaster> iirc 18:04:17 <ehird> AnMaster: yep 18:04:20 <ehird> objc is smalltalk+c 18:04:25 <ehird> [...] = smalltalk-land! 18:04:30 <ehird> and some bits with @ and - (abc) 18:04:31 <ehird> but yeah 18:04:50 <AnMaster> bbiab food 18:04:53 -!- Tritonio_ has joined. 18:07:11 <ehird> http://jwz.livejournal.com/843296.html hahahahahah 18:14:34 <AnMaster> ehird, that dialog in mosaic was optional and not the default 18:14:56 <ehird> AnMaster: i know that 18:15:07 * AnMaster has been working on mosaic code recently 18:15:12 <ehird> AnMaster: it was added because of corporate bureaucracy 18:15:18 <AnMaster> oh? 18:15:41 <ehird> yeah 18:15:48 <ehird> a corporate customer wanted some kind of warning or similar 18:15:50 <ehird> so they added that 18:15:56 <ehird> (config key: protectmefrommyself, iirc) 18:15:56 <AnMaster> hah 18:16:01 <ehird> i read up on mosaic aaages ago :) 18:16:12 <AnMaster> ehird, yes I think it is, prefsdefs.h iirc 18:16:14 <AnMaster> ;P 18:16:25 <AnMaster> not totally sure about what header file 18:19:14 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 18:20:10 -!- slereah_ has joined. 18:27:37 -!- Sle has joined. 18:27:53 -!- Sle has changed nick to Slereah. 18:28:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 18:30:49 -!- slereah__ has quit (Read error: 110 (Connection timed out)). 18:49:00 -!- okopol has joined. 19:05:26 <AnMaster> Deewiant, so far I found whatever causes it happens somewhere before ] turning flying IP test 19:05:40 <AnMaster> and *probably* after "GOOD: y acts as pick instruction if given large enough argument" 19:06:25 <AnMaster> actually happens before it 19:06:26 <AnMaster> sigh 19:07:01 <Deewiant> what's your stack at (140,163) 19:07:15 <AnMaster> um can't break like that yet *looks* 19:07:27 <Deewiant> and hence debuggers are handier than tracing ;-) 19:07:48 <AnMaster> agreed that is why I'm working on the protocol 19:09:30 <AnMaster> (gdb) break ExecuteInstruction if (ip->position.x == 140) && (ip->position.y == 163) 19:09:33 <AnMaster> Deewiant, :P 19:09:46 <AnMaster> tix=0 tid=1 x=140 y=163: f (102) 19:09:47 <Deewiant> :-P 19:09:58 <AnMaster> (gdb) call StackDump(ip->stack) 19:09:58 <AnMaster> 5 elements: 19:09:58 <AnMaster> 1 2 3 4 0 19:10:07 <AnMaster> Deewiant, yes indeed it is wrong even at that point 19:10:17 <AnMaster> those 1 2 3 4 is what is messing up below 19:10:31 <Deewiant> hm 19:10:49 <Deewiant> your y isn't working as a pick instruction correctly 19:10:58 <AnMaster> Deewiant, hm, it says it is 19:11:00 <AnMaster> :/ 19:11:05 <Deewiant> the test isn't sufficient 19:11:06 <AnMaster> "GOOD: y acts as pick instruction if given large enough argument" 19:11:11 <Deewiant> or rather, it is, in a way 19:11:14 <AnMaster> oh? 19:11:16 <Deewiant> you can't ever be sure the stack is really empty 19:11:18 <Deewiant> but one sec 19:11:24 <Deewiant> I can make it a bit better easily 19:11:27 <AnMaster> Deewiant, you can after n really, right? 19:11:48 <Deewiant> yes, but you can't be sure whether n deleted anything or not 19:11:51 <Deewiant> that's what I meant 19:11:57 <Deewiant> i.e. in this case, after the y, the stack should have only a 2 19:12:04 <Deewiant> and that's all that's being tested for 19:12:07 <AnMaster> hm 19:12:09 <Deewiant> I'll make it check for 2 and then 0 19:12:18 <AnMaster> what would cause the 3 and 4? 19:12:20 <Deewiant> ideally it'd check for 2 and then empty, but that's basically impossible 19:12:24 <AnMaster> ie, where do they come from 19:12:42 <Deewiant> 1234 is put on the stack 19:12:49 <Deewiant> from which 2 is meant to be piciked 19:12:54 <Deewiant> s/picik/pick/ 19:13:03 <AnMaster> ok, y as pick should not pop any item right? 19:13:13 <AnMaster> but just push the given item? 19:13:18 <AnMaster> or did I get that wrong? 19:13:19 <Deewiant> according to the spec surely it should :-P 19:13:25 <AnMaster> aha 19:14:09 <AnMaster> Deewiant, so it should pop until that point? 19:14:35 <AnMaster> then how does it differ from say 4k$ ? 19:14:46 <Deewiant> it also clears the stack below 19:15:01 <AnMaster> Deewiant, so the stack is empty except that item, huh 19:15:02 <Deewiant> so it's more like 4k$00pn00g 19:15:06 <Deewiant> yep 19:15:11 <AnMaster> but y doesn't always clear the stack does it? 19:15:22 <Deewiant> if you want to pull from tar.us.to:8000 go ahead 19:15:44 <Deewiant> with luck the test works 19:16:08 <Deewiant> and with luck the DNS resolves correctly this time :-P 19:16:15 <AnMaster> FUNGEDATATYPE tmp = ip->stack->entries[ip->stack->top - (request - tmp->top)]; 19:16:15 <AnMaster> StackClear(ip->stack); 19:16:15 <AnMaster> StackPush(tmp, ip->stack); 19:16:26 <AnMaster> is that correct then for the case of y going pick? 19:16:37 <Deewiant> something like that 19:16:48 <Deewiant> just pull the myco and test it 19:17:47 <AnMaster> ok that works now 19:17:58 <AnMaster> Deewiant, however, should y clear stack in other cases too? 19:18:05 <Deewiant> no, no 19:18:08 <Deewiant> read the spec 19:18:34 <AnMaster> If y is given a positive argument, all these cells are pushed onto the stack as if the argument was non-positive. However, y then goes on to copy the argumentth stack cell (counting from the top) into a temporary location, subsequently removing all the cells it pushed onto the stack. It then pushes the temporary cell onto the stack. For example, 3y will act as if only the handprint was pushed onto the 19:18:34 <AnMaster> stack. 19:18:40 <AnMaster> yes, that *it* pushed 19:18:47 -!- poiuy_qwert has joined. 19:18:52 <AnMaster> don't seem to be like it pushed the first 1 did it? 19:18:59 <AnMaster> Deewiant, ? 19:19:02 <Deewiant> An interesting side-effect of this behaviour is that if y is given an argument that exceeds the number of cells it pushes onto the stack, it can act as a 'pick' instruction on data that was on the stack before y was even executed. 19:19:11 <AnMaster> yes indeed 19:19:12 <Deewiant> hmm 19:19:19 <Deewiant> you may be right 19:19:22 <Deewiant> let's see 19:19:22 <AnMaster> but where does it say it should clear the stack? 19:19:35 <AnMaster> at most it is an undef 19:20:31 <AnMaster> and probably it is a BAD to clear the stack 19:20:50 <Deewiant> augh, I can't test this because 0y doesn't work in other interpreters :-P 19:21:07 <AnMaster> Deewiant, err 0y must work on some to push stuff? 19:21:17 <Deewiant> ? 19:21:31 <AnMaster> Deewiant, what do you mean 0y doesn't work? 19:21:37 <Deewiant> I mean, 0y doesn't work. 19:21:46 <AnMaster> hm 19:21:49 <Deewiant> it gives the wrong stack size. 19:21:52 <AnMaster> ok 19:21:59 <AnMaster> Deewiant, try gdb 19:22:05 <AnMaster> and a breakpoint and then examine stack 19:22:25 <AnMaster> Deewiant, btw I think my gdb breakpoint was quite nifty 19:22:26 <AnMaster> ;) 19:22:58 <AnMaster> and is actually more useful to me to debug the interpreter itself but to debug a script it is less useful 19:23:03 <AnMaster> err program 19:24:22 <Deewiant> hmm, this may actually be a CCBI bug 19:24:31 <Deewiant> pop(size - oldStackSize); 19:24:34 <AnMaster> Deewiant, XD 19:24:46 <Deewiant> I wonder what's up with that 19:25:13 <AnMaster> Deewiant, well hurry up or rename it to NCCBI ;) 19:25:27 <AnMaster> Deewiant, in any case looks like I'm right and mycology wrong or? 19:25:27 <Deewiant> bugs happen 19:25:40 <AnMaster> I want to know what way I should do it 19:27:34 <Deewiant> at this point I'm not sure where the bug is 19:27:36 <Deewiant> gimme a few secs 19:27:49 <AnMaster> just want to know if I need to change cfunge or you change mycology 19:28:00 <Deewiant> wondering what on earth "aa 2++k$" is doing in myco 19:28:10 <Deewiant> I think it's getting the stack size 19:28:14 <Deewiant> but it might be messing it up too 19:28:22 <AnMaster> I don't want to have to use a #define MYCOLOGY_COMPATIBLE vs #define STANDARD_COMPATIBLE ;) 19:32:45 <Deewiant> hmm 19:32:54 <Deewiant> it does seem to be a CCBI bug 19:33:04 <Deewiant> and of course Mycology as well 19:33:09 <AnMaster> ok 19:33:22 <AnMaster> hope you can fix it soon in mycology so I can look at the next bug 19:33:23 <Deewiant> but I'm wondering what the right way of resolving this is 19:33:37 <Deewiant> if (size > oldSize) pop(size - oldSize); ?? 19:33:44 <Deewiant> does that make any sense? 19:33:50 <AnMaster> err I have not read your sysinfo code at all 19:34:04 <AnMaster> mine is completely freestanding 19:34:07 <Deewiant> what it does is, like the spec says, it pushes everything 19:34:18 <Deewiant> then it pops up to the argumenth cell 19:34:25 <Deewiant> pops the cell to be picked 19:34:31 <Deewiant> and then does pop(size - oldSize); 19:34:34 <AnMaster> I push things to a temp stack 19:34:36 <AnMaster> and then do this 19:34:38 <AnMaster> if (tmp->top > (size_t)request) 19:34:38 <AnMaster> StackPush(tmp->entries[tmp->top - request], ip->stack); 19:34:38 <AnMaster> else 19:34:38 <AnMaster> StackPush(ip->stack->entries[ip->stack->top - (request - tmp->top)], ip->stack); 19:34:42 <AnMaster> tmp is the temp stack 19:34:54 <AnMaster> request is the thing y popped of the main stack 19:34:58 <Deewiant> stack->top is the stack size? 19:35:05 <Deewiant> or a pointer to the top? 19:35:07 <AnMaster> Deewiant, it is the top stack item yes 19:35:17 <Deewiant> yeah, so the size 19:35:20 <Deewiant> makes sense 19:35:28 <AnMaster> Deewiant, top->size however is the actual stack size, as it doesn't realloc to smaller stack 19:35:29 <Deewiant> so if size > arg... 19:35:37 <Deewiant> yeye, same difference 19:35:46 <Deewiant> I don't think I expose the "actual size" myself :-) 19:35:47 <AnMaster> argh getting dcc chat spam 19:36:04 <Deewiant> if size > arg, if oldSize <= size 19:36:52 -!- otesanek has joined. 19:37:40 <Deewiant> both appear to work 19:40:07 <Deewiant> AnMaster: you might still have it wrong, though :-P 19:40:21 <Deewiant> AnMaster: pull 19:40:25 -!- poiuy_qwert has quit. 19:40:32 <AnMaster> k 19:41:12 <AnMaster> BAD: y doesn't act as pick instruction if given large enough argument 19:41:13 <AnMaster> ok 19:41:18 <AnMaster> Deewiant, how would it be wrong now? 19:41:34 <Deewiant> pop up to the requested one, but leave everything below that untouched 19:41:38 <AnMaster> ah 19:41:40 <AnMaster> right 19:45:49 <AnMaster> Deewiant, ok pushed fixed cfunge :) 19:46:08 <AnMaster> GOOD: 000p000W goes thrugh 19:46:08 <AnMaster> GOOD: 000p100W waits indefinitelyGOOGOOD: X works 19:46:11 <AnMaster> still have to solve that 19:46:19 <AnMaster> Deewiant, any idea about wtf may be going on there? 19:46:46 <AnMaster> I copied the logic of TOYS' W from CCBI 19:46:51 <AnMaster> or or less 19:46:55 <Deewiant> not really, no 19:47:08 <AnMaster> Deewiant, ok, can you tell me where in the file that is? 19:47:12 <Deewiant> does that really print "thrugh" btw 19:47:18 <AnMaster> Deewiant, not for CCBI 19:47:19 <Deewiant> just grep for 000p000W 19:47:24 <Deewiant> AnMaster: good :-) 19:47:33 <AnMaster> Deewiant, problem is I don't know what direction to grep for it in 19:47:40 <Deewiant> grep it left to right 19:47:45 <Deewiant> if you can't find it, grep it right to left 19:47:52 <AnMaster> I mean it is probably either left to right or right to left 19:47:53 <AnMaster> but 19:47:55 <Deewiant> and if you still can't find it, use another part of the error message 19:47:56 <Deewiant> :-P 19:47:59 <AnMaster> it could be upwards or downwards 19:48:07 <AnMaster> someone need to invent a fungegrep 19:48:07 <Deewiant> in 99% of cases it isn't 19:48:10 <AnMaster> like there is xmlgrep 19:48:22 <Deewiant> or if it is, then look for the next or previous message 19:48:33 <AnMaster> v"U executes itself after transmuting"_v#! <g1<< >'<w;was <; 00g:3-!#v_1+00p'^48a*+3bd**p^ ^ < >v>;#"BAD: 000p000W reflects"ap$$$<;^ 19:48:35 <AnMaster> right 19:55:51 <AnMaster> Deewiant, the problem is that it is concurrent 19:56:00 <AnMaster> so bloody hard to make sense of 19:56:01 <AnMaster> :/ 19:56:41 <Deewiant> yep :-/ 19:57:39 -!- bsmntbombdood has joined. 19:59:31 -!- marshmallows has quit ("Leaving"). 20:01:00 -!- otesanek has quit (Read error: 113 (No route to host)). 20:06:16 <AnMaster> Deewiant, so the W is kind of like Compare and exchange? 20:06:19 <AnMaster> or? 20:06:49 <Deewiant> W ('television antenna') pops a vector off the stack, then a value. If the cell at that vector (plus the storage offset) in Funge-Space (a la g) is equal to that value, nothing happens. If the cell in space is less than the value, it pushes the value and the vector (inverted) back onto the stack, and backs up the IP (subtracts the IP's delta from it's position, sort of a 'wait to try again' condition, useful mainly in Concurrent Funge.) If the cell in s 20:07:33 <Deewiant> so it keeps retrying until the cell at the vector is >= the requested value 20:07:40 <Deewiant> if it's >, it reverses, if it's =, it does nothing 20:07:45 <Deewiant> (besides popping the vals, of course) 20:07:58 <AnMaster> hah 20:08:01 <AnMaster> aha* 20:08:15 <AnMaster> Deewiant, is it reverses and tries to execute again on next tick? 20:08:26 <AnMaster> ie a kind of semaphore? 20:08:33 <Deewiant> yeah, kinda 20:08:43 <Deewiant> like it says, "sort of a 'wait to try again' condition" 20:10:31 <AnMaster> Deewiant, but why doesn't it print BAD 20:10:45 <AnMaster> why does it print some weird GOODGOOD and missing char stuff? 20:10:53 <AnMaster> Deewiant, and is the error really in W? 20:10:56 <Deewiant> because it's concurrent and complicated :-P 20:10:58 <Deewiant> I can't be sure 20:10:59 <AnMaster> or does W use something not tested before? 20:11:04 <Deewiant> I hope not 20:11:21 <Deewiant> once again, compare stacks (and, since concurrent, IP positions) with CCBI 20:12:12 <AnMaster> tix=0 tid=1 x=172 y=430: g (103) 20:12:12 <AnMaster> tix=1 tid=2 x=164 y=432: n (110) 20:12:12 <AnMaster> tix=0 tid=1 x=173 y=430: u (117) 20:12:12 <AnMaster> tix=1 tid=2 x=165 y=432: @ (64) 20:12:12 <AnMaster> tix=0 tid=1 x=175 y=430: r (114) 20:12:13 <AnMaster> tix=0 tid=1 x=176 y=430: h (104) 20:12:15 <AnMaster> tix=0 tid=1 x=177 y=430: t (116) 20:12:17 <AnMaster> um 20:12:19 <AnMaster> ?? 20:12:27 <AnMaster> is that supposed to happen 20:12:37 <AnMaster> it is where the through string is messed up I think 20:12:39 <Deewiant> possibly, I can't remember 20:14:41 -!- oerjan has joined. 20:14:50 <AnMaster> hguorht 20:14:59 <AnMaster> Deewiant, to me it seems something overwritten wrong place 20:15:10 <Deewiant> so what are your storage offsets like 20:15:14 <AnMaster> because the code does not contain any @ in that place 20:15:36 <AnMaster> hm 20:15:56 <AnMaster> c = space[x, y]; 20:16:02 <AnMaster> Deewiant, that is from your code 20:16:12 <AnMaster> no storage offset is used when accessing ? 20:16:17 <AnMaster> but only when writing it back? 20:16:26 <AnMaster> pushVector(x - ip.offsetX, y - ip.offsetY); 20:16:29 <AnMaster> from your code too 20:16:32 <Deewiant> 165 432 is meant to be @ 20:17:04 <AnMaster> err *looks* 20:17:09 <Deewiant> AnMaster: but isn't that a concurrency bug, right there 20:17:20 <Deewiant> AnMaster: why does your other IP skip over the 'o' when the other hits '@' 20:17:39 <AnMaster> hm 20:17:41 <AnMaster> right 20:17:46 <AnMaster> I was reading on the wrong line 20:18:20 <AnMaster> Deewiant, um 20:18:22 <AnMaster> *looks* 20:18:59 <AnMaster> http://rafb.net/p/pYLvrJ74.html 20:19:07 <Deewiant> the @ is put there by the p at (168,430) 20:19:16 <AnMaster> Deewiant, if I just had such a output from ccbi too so I could compare 20:19:23 <AnMaster> but maybe time for a funge space dump 20:19:31 <Deewiant> I'd start with figuring out why the 'o' isn't output 20:20:13 <AnMaster> v"U executes itself after transmuting"_v#! <g1<< >'<w;was <; 00g:3-!#v_1+00p'^48a*+3bd**p^ ^ < >v>;#"BAD: 000p000W reflects"ap$$$<;^ 20:20:14 <AnMaster> >"" >" :FEDNU">:#,_a,$111p > > > ^ > ;BAD;^ >na"v^<> fo lla otni detumsnart U :DOOG">:#,_1y2%!#v_p'@faf*+689**000#vt#^Wpa"hguorht"v 20:20:14 <AnMaster> v>"nseod U"^ > ^ v<< < > 20:20:14 <AnMaster> " stiaw W000p000 :DABvv"deb*+25ef*+*p83a*+689**p@ v "Cannot test W without Concurrent Funge-98 support."a< >>>n@"yletinifedni" 20:20:16 <AnMaster> " v$$$< >$$$pna"stcelfer W001p000 :DAB" v >$$$pa"stcelfer W00-10p000 :DOOG" v 20:20:19 <AnMaster> is how it looks 20:20:21 <AnMaster> in the dump 20:20:53 <AnMaster> '^48a*+3bd**p^ ^ < >v>;#"BAD: 000p000W reflects"ap$$$<;^ 20:20:53 <AnMaster> > fo lla otni detumsnart U :DOOG">:#,_1y2%!#v_p'@faf*+689**000#vt#^Wpa"hguorht"v 20:20:53 <AnMaster> ^ v<< < > 20:20:53 <AnMaster> est W without Concurrent Funge-98 support."a< >>>n@"yletinifedni" 20:20:53 <AnMaster> v >$$$pa"stcelfer W00-10p000 :DOOG" v 20:20:56 <AnMaster> >;#$$$$$< ;>:#,_'@6bc*+f92a*+*01-00#vt#^Wpa"hguorht seog W00-10p000 :DAB" v 20:20:58 <AnMaster> ^v"d5*27ef*+*pc9*f92a*+*p@ > #< #<na#<"yletinifedni stiaw W00-10p000 :DABvv"; 20:21:00 <AnMaster> < 20:21:02 <AnMaster> is more relevant 20:21:04 <AnMaster> sorry for spam 20:21:08 <Deewiant> pasting huge bunches of Befunge here isn't exactly useful :-P 20:21:24 <AnMaster> Deewiant, problem is I can't make head or tail out of the code at all 20:21:53 <Deewiant> like said, I wouldn't worry about reading Mycology 20:21:58 <Deewiant> you have a bug: the 'o' isn't output 20:21:59 <Deewiant> why not 20:22:10 <Deewiant> you don't need mycology for that other than running through it with gdb 20:22:27 <AnMaster> yes I realize it isn't there 20:22:35 <AnMaster> but I don't understand it 20:22:44 <Deewiant> the o /is/ there, in the code 20:22:53 <Deewiant> the problem is that Cfunge is skipping over it 20:23:01 <Deewiant> I'd wager the problem is in how you handle @ 20:23:08 <AnMaster> hm 20:23:17 <AnMaster> Deewiant, so why doesn't mycology test it before? heh 20:23:44 <AnMaster> I mean I only found out because of this fingerprint 20:23:58 <Deewiant> I can't test everything, as I've said many times before 20:24:02 <AnMaster> hm 20:24:05 <Deewiant> trust me, writing code for testing 2 threads was bad enough 20:24:08 <Deewiant> let alone 3 or more 20:24:14 <AnMaster> I agree 20:24:23 <Deewiant> because the point is that even if space or z don't work as regards ticks, the code has to work 20:24:25 <AnMaster> I have coded some simple concurrent 20:24:38 <Deewiant> so I had to rerun it over and over again with CCBI's space mapped to z and vice versa 20:24:42 <Deewiant> and make sure it worked in all cases 20:24:53 <AnMaster> yeah 20:25:29 <AnMaster> tix=0 tid=1 x=173 y=430: u (117) 20:25:29 <AnMaster> tix=1 tid=2 x=165 y=432: @ (64) 20:25:29 <AnMaster> tix=0 tid=1 x=175 y=430: r (114) 20:25:35 <AnMaster> indeed it skips one simply 20:25:43 * AnMaster ponders 20:26:28 <AnMaster> that means one of two files really, interpreter.c or ip.c 20:35:31 <AnMaster> Deewiant, fixed it 20:35:40 <Deewiant> what was the problem 20:35:43 <AnMaster> just needed to set a NeedMove to false 20:35:54 <Deewiant> right 20:36:04 <AnMaster> Deewiant, I'm not sure how this will work out of there are more than two IPs though 20:36:10 <AnMaster> it may break in the other way then 20:36:17 <Deewiant> I think there are 3 where that's tested 20:36:20 <Deewiant> though I'm not sure 20:36:30 <Deewiant> no, more likely it's 2 20:36:39 <Deewiant> no more than 2 are alive at once 20:36:42 <Deewiant> but more are created 20:36:55 <AnMaster> also the new IP must be index 0 in the array 20:36:59 <AnMaster> and a few other things 20:37:19 <AnMaster> 1) the remaining ip must now have index 0 before, the killed one index 1 20:37:24 <AnMaster> there must be no third IP 20:37:33 <Deewiant> O_o 20:37:34 <AnMaster> only then does the bug show up and is fixed this way 20:37:39 <Deewiant> heh 20:37:46 <AnMaster> I don't know if it will break in other cases 20:37:53 <AnMaster> no idea whatsoever 20:38:09 <AnMaster> it might 20:38:41 <AnMaster> so I'll write a few small test cases 20:49:34 -!- Corun has quit ("This computer has gone to sleep"). 20:51:20 -!- Tritonio_ has quit (Remote closed the connection). 20:52:00 -!- Tritonio_ has joined. 20:53:14 -!- oerjan has quit ("leaving"). 20:53:14 <AnMaster> wow 20:53:17 -!- Tritonio_ has quit (Remote closed the connection). 20:53:18 <AnMaster> cfunge: /home/arvid/src/cfunge/trunk/src/stack.c:313: StackStackDuplicate: Assertion `old != ((void *)0)' failed. 20:53:19 <AnMaster> Deewiant, ^ 20:53:34 <Deewiant> :-D 20:53:35 <AnMaster> > #vt zzzzzzzzzzzzz v 20:53:36 <AnMaster> >#vtzzz@ 20:53:36 <AnMaster> >a"DOOG :4">:#,_@ 20:53:36 <AnMaster> v < 20:53:38 <Deewiant> how'd you get that 20:53:38 <AnMaster> on that code 20:53:48 <AnMaster> no brainfucking clue how 20:53:49 <Deewiant> on the second t? 20:54:00 <AnMaster> Deewiant, on; 20:54:02 <AnMaster> tix=1 tid=6 x=11 y=18: @ (64) 20:54:02 <AnMaster> tix=2 tid=0 x=5 y=3: t (116) 20:54:18 <AnMaster> wait a sec 20:54:20 <AnMaster> that makes no sense 20:54:24 <Deewiant> y=3? 20:54:55 <AnMaster> yes indeed makes no sense 20:55:00 * AnMaster gets out valgrind 20:55:01 <Deewiant> :-P 20:55:22 <AnMaster> ==16089== Conditional jump or move depends on uninitialised value(s) 20:55:23 <AnMaster> as I expected 20:55:35 <AnMaster> wth 20:56:28 <Deewiant> of course, valgrind is something you should run on your code before complaining about mycology tests ;-) 20:56:28 <AnMaster> Deewiant, if you want to experiment: 20:56:29 <AnMaster> http://rafb.net/p/tSF4nt31.html 20:56:44 <AnMaster> Deewiant, well valgrind gives no issues when running mycology 20:57:00 <AnMaster> a few memory leaks in funge space as you can't use gc + valgrind at same time 20:57:02 <AnMaster> but that's all 20:57:03 <Deewiant> uh? shouldn't that conditional be entered always? 20:57:15 <Deewiant> in t or @ or wherever that is 20:57:31 <AnMaster> in hash function 20:57:33 <ehird> sill scheme interpreter name: Isch Creme 20:57:35 <AnMaster> not sure 20:57:41 <ehird> or ischcreme 20:58:01 <AnMaster> Deewiant, ==16254== ERROR SUMMARY: 0 errors from 0 contexts 20:58:07 <AnMaster> when running on mycology 20:58:10 <Deewiant> AnMaster: that needs more 'z', prints 3: G4O:O DG here :-) 20:58:18 <Deewiant> AnMaster: odd 20:58:29 <AnMaster> <Deewiant> AnMaster: that needs more 'z', prints 3: G4O:O DG here :-) 20:58:30 <AnMaster> ??? 20:58:40 <AnMaster> it should print 3: GOOD 20:58:42 <AnMaster> ?? 20:59:13 <Deewiant> 3 and 4 are interspersed here 20:59:20 <AnMaster> Deewiant, aha 20:59:36 <Deewiant> please don't tell me that CCBI on linux behaves differently :-D 21:00:50 <AnMaster> $ ~/funge/ccbi/ccbi_linux/ccbi tests/concurrent-quit.b98 21:00:51 <AnMaster> 1: GOOD 21:00:51 <AnMaster> 2: GOOD 21:00:51 <AnMaster> 3: GOOD 21:00:51 <AnMaster> 4: GOOD 21:00:53 <AnMaster> ? 21:00:58 <AnMaster> Deewiant, that is what happens here 21:01:05 <AnMaster> may not be last version 21:01:15 <AnMaster> oh wait this is a slightly different version 21:01:20 <AnMaster> than the one I pastebinned 21:01:21 <AnMaster> right 21:01:26 <Deewiant> heh 21:01:40 <AnMaster> Deewiant, ok, the first two splits are ok 21:01:44 <AnMaster> 1 and 2 in cfunge 21:01:47 <AnMaster> then issues start 21:01:58 <AnMaster> tix=0 tid=0 x=5 y=17: t (116) 21:02:20 <AnMaster> splitting after the third one in fact 21:08:29 <AnMaster> Deewiant, hm, now by adding a mutex it is "fixed", but now I need to reproduce the issue again 21:11:48 <AnMaster> >@ 21:11:49 <AnMaster> >#^tzz@ 21:11:49 <AnMaster> > #^tz#vt v 21:11:49 <AnMaster> >zzzz@ 21:11:49 <AnMaster> v < 21:11:51 <AnMaster> Deewiant, that does it 21:11:57 <AnMaster> looking at minimizing it 21:12:34 <AnMaster> the upper split can be removed 21:15:20 -!- Corun has joined. 21:18:08 <AnMaster> actually wrong 21:18:13 <AnMaster> it still interacts with previous code 21:19:26 -!- okopol has changed nick to oklopol. 21:23:04 <AnMaster> Deewiant, ok this need a very specific split pattern to trigger 21:23:10 <AnMaster> 1) ip 0 split 21:23:27 <AnMaster> 2) ip 1 just goes on doing z or whatever 21:23:37 <AnMaster> 3) ip 0 split again 21:24:03 <AnMaster> result is that suddenly we got two ip entries but array length of 3 21:38:24 <AnMaster> Deewiant, ^ 21:38:34 <AnMaster> Deewiant, I think I am beginning to solve it 21:59:05 -!- calamari has joined. 22:06:12 -!- nice_ka has joined. 22:19:45 -!- RedDak has joined. 22:44:29 -!- pikhq has joined. 22:47:33 -!- Deformative has quit ("Konversation terminated!"). 22:48:52 -!- Deformative has joined. 22:50:02 -!- Deformative has quit (Remote closed the connection). 22:51:00 -!- Deformative has joined. 22:58:35 -!- Tritonio_ has joined. 23:13:23 * oklopol made a O(1)-space quicksort 23:13:26 <oklopol> i think... 23:13:38 <oklopol> so hard to know what counts as O(1) 23:14:27 <oklopol> i need to fiddle with the bitstring of len(l) where l is the sorted list, so basically it's O(lg n) space anyway... i'm fairly sure you can't actually manage O(1), although i've been told it exists 23:15:04 <oklopol> err no, i need numbers 0...len(n), so it's O(lg lg n) space, i guess, but still 23:16:54 <ehird> oklopol: O(1) - given any list, uses the asme space 23:16:58 <ehird> a 43593459345435 elm list == same space as 4 23:17:32 <ehird> oklopol: maybe you could use xrange insead of range 23:17:35 <ehird> that calculates it lazily 23:19:29 -!- Deformati has joined. 23:21:02 <oklopol> ...what? 23:21:08 <oklopol> asme? 23:21:43 <ehird> oklopol: thats O(1) space 23:21:54 <ehird> if sort() is O(1) 23:22:08 <oklopol> i use a few iterators where a retard might have used a strictly evaluated list, yes, but xrange doesn't really solve the whole thing 23:22:09 <ehird> sort([45,345,2,34,3]) takes same memory as sort([345345,345,35,24,12,3,7,34,5,7,4,6,7,345,,,67,345,7,,5,345,45]) 23:22:16 <oklopol> really? 23:22:18 <oklopol> it does? :O 23:22:32 <ehird> if its O(1) 23:22:37 <oklopol> what do people usually do to get rid of the recursion stack? 23:22:39 <oklopol> oh, right 23:22:44 <oklopol> err not 23:22:46 <oklopol> *no 23:22:50 <oklopol> i specified *quicksort* 23:22:53 <oklopol> so... 23:22:55 <oklopol> enlighten me 23:23:00 <oklopol> my solution isn't all that trivial 23:24:04 <ehird> oklopol: get rid of recursion=manual stack 23:24:22 <oklopol> well, it's kinda trivial, just a certain pattern around the bits of len(l) + calculating in O(n) the median, pivotting perfectly 23:24:33 <oklopol> ehird: how's that O(1) space more than the recursion stack? 23:25:35 <AnMaster> oklopol, care to show the code? 23:25:39 <AnMaster> and in what language? 23:25:40 <oklopol> k 23:25:42 <oklopol> python 23:25:47 <AnMaster> forget it then 23:26:17 <oklopol> http://www.vjn.fi/pb/p531644464.txt 23:26:37 <oklopol> it's prolly like O(lg lg n), but it doesn't use any stack, just a few numbers 23:26:44 <oklopol> dunno 23:27:59 <ehird> oklopol: wow 23:28:38 <oklopol> ehird: now that i understood "asme" in fact means "same", i can answer: indeed, it's definitely not O(1) space then, i need bignums for the length of the list, and the length can be like a quasimagrillion. 23:28:56 <oklopol> ehird: wow as in, CAN PYTHON ACTUALLY BE RAPED THAT BADLY?!?!? 23:28:59 <oklopol> or what :P 23:29:19 <oklopol> skipiter was the hard part 23:30:23 <oklopol> uses O(lg n) space, for a few numbers that is, to get the sequence 0 -> 101 -> 2120212 -> 323132303231323, which i use to get jumps right when traversing the sublists when i've "recursed" onto another level 23:30:28 <oklopol> god i'm bad at explaining this 23:30:54 <oklopol> wish i owned at math, could just prove it, and tell ppl to fuck themselves if they asked for an explanation. 23:30:59 <oklopol> :P 23:34:35 <olsner> I would have attempted an analysis if it wasn't written in python 23:34:41 <oklopol> hmm 23:34:45 <oklopol> what language do you want? 23:34:51 <oklopol> i can rewrite 23:34:58 -!- Deformative has quit (Remote closed the connection). 23:35:27 <olsner> nah, don't bother 23:35:44 <oklopol> (just needs to support mutable lists of course) 23:36:19 <oklopol> (or it'll trivially be at least O(n) space) 23:36:48 <oklopol> olsner: so basically you don't want to, and this was just an excuse? :P 23:36:59 <olsner> something like that, yeah 23:36:59 <oklopol> my time is worthless! 23:37:04 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 23:37:20 <AnMaster> oklopol, C 23:37:23 <AnMaster> rewrite it in C 23:37:36 <oklopol> the problem with C is, i actually need bignums. 23:37:39 <oklopol> well 23:37:39 <AnMaster> -std=c99 -pedantic -Wall -Wextra -Werror 23:37:43 <oklopol> not really 23:37:57 <AnMaster> actually I use more, too many to paste here 23:38:07 <oklopol> because if a list fits into memory, the pointer size is enough for me 23:38:24 <AnMaster> http://rafb.net/p/326SMd71.html 23:38:33 <AnMaster> that is from my cmake file for a project 23:38:51 <oklopol> i think i could do a fairly straightforward translation from python to C here, if it weren't for that one generator 23:39:18 <oklopol> but it's fairly simple, i now realize, to non-generatorize it 23:40:09 <oklopol> perhaps i'll do it tonight, after my daily south park session 23:40:21 <AnMaster> oklopol, size_t for memory 23:40:25 <AnMaster> I got 64-bit :) 23:40:54 <oklopol> i think the biggest problem will be to get a C compiler to work 23:41:21 <ehird> oklopol: lunix? 23:41:28 <ehird> debian/ewwbuntoo: 23:41:28 <oklopol> as many here already know, i'm the biggest retard in the world when it comes to installing software. 23:41:32 <oklopol> ehird: sadly, no 23:41:33 <ehird> sudo apt-get install build-essential 23:41:36 <olsner> wow, that's a crazy set of warning options! witness of the unsafe properties of C :P 23:41:38 <ehird> oh darn 23:41:39 <ehird> what then 23:41:44 <oklopol> guess ;) 23:41:51 <ehird> cygwin 23:41:53 <ehird> cygwin is yer friend 23:41:55 <ehird> it comes with gcc 23:42:12 <olsner> or mingw 23:42:13 <AnMaster> olsner, hah 23:42:49 <ehird> cygwinnnn 23:42:50 <AnMaster> olsner, don't forget the *need* for valgrind 23:42:53 <oklopol> ehird: perhaps 23:42:58 <AnMaster> ehird, cygfail? 23:43:13 <olsner> AnMaster: well, if you're on windows you can just compile, test and pray 23:43:35 <AnMaster> olsner, I'm not on windows 23:43:46 <AnMaster> I'm on Gentoo Linux x86_64 23:43:47 <AnMaster> :) 23:45:32 <AnMaster> olsner, so what do you use to detect memleaks in windows software? 23:45:39 <olsner> I'm also on linux at home; but not at work since certain of our target platforms have developer tools that are windows-only 23:46:16 <AnMaster> olsner, sure GCC can't compile to those platforms? 23:47:11 <pikhq> Here's a hint: GCC targets *everything*. 23:47:16 <olsner> it can, but produces bigger binaries and requires hacking linker scripts etc no-one's had time to perform 23:47:21 <AnMaster> pikhq, exactly 23:47:33 <pikhq> Hell, I can get GCC to target a fucking PDP-11. 23:47:35 <AnMaster> pikhq, apart from h8300, iirc that port is dead since about gcc 2.95 23:47:39 <AnMaster> or something like that 23:47:54 -!- nice_ka has left (?). 23:47:56 <AnMaster> I wanted to cross compile to it recently 23:47:59 <pikhq> AnMaster: Doesn't mean I can't get GCC to target one. 23:48:11 <pikhq> Granted, porting from 2.95 would be a royal pain. 23:48:20 <AnMaster> pikhq, 8 bit CPU 23:48:24 <pikhq> (did they even use RTL then?) 23:48:25 <ehird> pikhq: if you write a backend, it will compile! 23:48:27 <ehird> wowz 23:48:53 <AnMaster> pikhq, used in some products by Lego 23:48:59 <AnMaster> yeah in toys 23:54:46 -!- Deformati has quit (Remote closed the connection). 23:58:15 -!- Deformative has joined. 2008-03-30: 00:00:04 <ehird> so, who here is made out of chicken 00:04:37 <pikhq> Not I. 00:04:53 <ehird> I am 00:04:56 <ehird> and I am playing with squeak 00:04:58 <ehird> Smalltalk is love 00:05:48 -!- vixey has joined. 00:20:17 -!- Deformative has quit (Remote closed the connection). 00:20:55 -!- Deformative has joined. 00:29:00 -!- timotiis has quit ("leaving"). 00:46:57 -!- Deformative has quit ("Konversation terminated!"). 00:47:39 -!- Tritonio_ has quit (Remote closed the connection). 00:49:38 -!- Deformative has joined. 00:59:24 <AnMaster> Deewiant, minor issue, you know if fungus? while it is not as extensive as mycology I notice ccbi segfaults on it 00:59:28 <AnMaster> Loading module stackstack 00:59:29 <AnMaster> Loading module finghrti 00:59:29 <AnMaster> Segmentation fault 00:59:57 <AnMaster> (while mine get into an infinite loop) 01:00:01 <ehird> AnMaster: He knows of fungus. 01:00:09 <ehird> It's what made him write Mycology. It's bad. 01:00:12 <AnMaster> ehird, yep 01:00:21 <AnMaster> but interpreter should still not segfault on it 01:00:24 <ehird> hardly 01:00:26 <ehird> its broken iirc 01:00:27 <AnMaster> that is the thing I like to point out 01:00:41 <AnMaster> and his binary is stripped 01:00:52 <AnMaster> (gdb) bt 01:00:52 <AnMaster> #0 0x080c4af7 in ?? () 01:00:52 <AnMaster> #1 0x08109990 in ?? () 01:00:52 <AnMaster> ...... 01:00:52 <AnMaster> #5 0x00000000 in ?? () 01:01:14 <AnMaster> ehird, point is anything but sefault is fine 01:01:23 <AnMaster> interpreter should never segfault or assert imo 01:01:31 <AnMaster> infinite loop? sure, it's fine 01:01:54 -!- Corun has quit ("Leaving"). 01:10:17 <ehird> AnMaster: you know what I want? 01:10:19 <ehird> inline structures 01:13:48 -!- RodgerTheGreat has joined. 01:14:53 <RodgerTheGreat> howdy folks 01:15:15 <vixey> hi 01:15:23 <RodgerTheGreat> 'sup, vixey? 01:16:34 <RodgerTheGreat> I just returned from the NMU programming competition- great fun 01:16:53 <vixey> how did it go? 01:17:06 <RodgerTheGreat> my team did pretty well- 4th place out of about 20 teams 01:17:32 <pikhq> Yo. 01:17:33 <RodgerTheGreat> we all got T-shirts and free food, so I'll chalk it up as a win. :) 01:17:36 <RodgerTheGreat> hey, pikhq 01:18:07 <pikhq> Been a while. 01:18:23 <RodgerTheGreat> yeah, school is getting pretty crazy on my end 01:18:34 <pikhq> I spent the past week with family. 01:18:50 <pikhq> So, not been on much. ;) 01:19:39 <RodgerTheGreat> it's looking like I'll spend the summer taking more classes at MTU- so far I've lined up Coding Theory, an art class and a course on technical writing. 01:21:12 <RodgerTheGreat> vixey: are you new here, or have I been completely out of it? 01:23:27 <ehird> new, afaik 01:24:25 <RodgerTheGreat> ah, well then, welcome to this festering hive of insanity and highly intellectual ranting 01:25:51 -!- RedDak has quit (Remote closed the connection). 01:30:01 <ehird> just in case anyone was wondering.. 01:30:09 <ehird> cpp supports circular header definitions, and gets them right. 01:30:09 <ehird> wow. 01:30:24 <RodgerTheGreat> nifty 01:30:32 <RodgerTheGreat> I shudder to consider how you determined this 01:30:40 <ehird> RodgerTheGreat: You don't wanna know. 01:30:48 <ehird> However, I'll tell you anyway. 01:30:50 <RodgerTheGreat> ok 01:32:44 <ehird> schream/value.h includes the definition of scm_tag. A scm_tag (which is the structure identifying the tag for a specific type of object) has a name (i.e. for integers it's 'integer'). This name is of the type I use to represent strings (contains length, allocated, and the string) - (scm_string *), defined in schream/string.h. But scm_string's are valid objects too, and string.h defines a scm_tag for them, so it needs to include the header file defining 01:32:44 <ehird> scm_tag... schream/value.h 01:32:53 <ehird> RodgerTheGreat: Amazingly, cpp figures out what I mean and terminates. 01:33:08 <RodgerTheGreat> Amazing 01:47:40 <RodgerTheGreat> so, what's everyone up to this evening? 01:47:53 <ehird> coding this 01:47:53 <ehird> ;) 01:47:55 <pikhq> Getting a laptop to run Gentoo. 01:47:57 <ehird> and it's 00:47 01:48:06 -!- Tritonio_ has joined. 01:48:10 <vixey> wishing I could think of something good to code.. 01:48:19 <RodgerTheGreat> I kinda feel like coding something, but I don't have any immediate goals 01:48:37 <ehird> vixey: embed prolog into $LANGUAGE 01:48:44 <RodgerTheGreat> I have a couple ideas for new game projects, but nothing that I think I can just slam out in an evening 01:49:11 <RodgerTheGreat> vixey: what language(s) do you use? 01:49:20 <RodgerTheGreat> that might suggest appropriate applications 01:50:01 <vixey> I'll use anything 01:50:41 <RodgerTheGreat> hm. well, that doesn't narrow things down much. 01:50:56 <ehird> vixey: Delphi? APL? 01:51:03 <RodgerTheGreat> Java? PHP? 01:51:18 <ehird> RodgerTheGreat: Actually I was suggesting languages I expect vixey would not in fact code in. 01:51:29 <RodgerTheGreat> oh 01:51:35 <ehird> I doubt your two were in the same vein, but I agree! :) 01:52:19 <RodgerTheGreat> then I'll put votes in for Rails and TinyBASIC 01:52:53 <ehird> Rails as in the one on the gem? 01:53:03 <ehird> RoR certainly isn't a language. 01:53:15 <ehird> Ruby is, though. And Rails happens to be a rather badly designed framework built on top of Ruby. 01:53:40 <RodgerTheGreat> Rails adds untold horror to an already hideous language 01:54:06 <RodgerTheGreat> and coding a non-web2.0 app actually *using* rails could be pretty hilariously painful 01:54:19 <ehird> RodgerTheGreat: Ruby is not a hideous language 01:54:40 <ehird> I have heard that from many people and their reasons were all flimsy. Starting to hate Ruby is becoming 'hip' right now and a lot of them just went with the interblags.. 01:54:56 <ehird> Also, here's something horrific: the term 'web2.0' 01:55:17 -!- slereah_ has joined. 01:55:54 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 01:56:02 <RodgerTheGreat> wb slereah_ 01:56:20 <ehird> (And there is silence!) 01:56:32 <slereah_> Thanks. 02:04:06 <RodgerTheGreat> this is a rather interesting idea: http://www.ansible.co.uk/writing/c-b-faq.html 02:05:51 <ehird> RodgerTheGreat: i didn't realise it was a parody until near the end 02:05:52 <ehird> /sigh 02:06:25 <RodgerTheGreat> hey, it's fiction, but thought-provoking fiction nonetheless 02:06:47 <slereah_> It's old :o 02:07:22 <slereah_> http://en.wikipedia.org/wiki/Motif_of_harmful_sensation 02:07:57 <ehird> I would like to see that 'parrot' distortion. 02:08:10 <ehird> I would gradually undistort it. :p 02:11:00 <RodgerTheGreat> ehird: I have an image- one sec 02:11:30 <RodgerTheGreat> found this a while back, saved it because it was neat: http://www.nonlogic.org/dump/images/1206839450-d66c44db02a18598796ea18e5504d0fdde567d69.jpg 02:13:27 <ehird> RodgerTheGreat: haha, wow 02:13:31 <ehird> is there an undistorted version? ;) 02:13:36 <RodgerTheGreat> har har 02:13:39 <ehird> however, that picture does look like the kind of thing that would break the brain though 02:15:53 <ehird> RodgerTheGreat: Is it specified what kind of distortion is in that? 02:16:04 -!- ihope has joined. 02:16:05 <ehird> oh wait 02:16:10 <ehird> that purports to BE the undistorted version 02:16:16 <ehird> if you read the text 02:16:21 <ehird> well, bye all, i had fun ;) 02:16:32 <RodgerTheGreat> cya 02:17:07 <ehird> that was a joke, RodgerTheGreat 02:17:08 <ehird> :p 02:19:03 <RodgerTheGreat> ? 02:19:14 <RodgerTheGreat> oh, presuming the parrot would kill you 02:20:03 <ehird> RodgerTheGreat: http://www.infinityplus.co.uk/stories/blit.htm 02:20:11 <ehird> that seems to be what that thing draws off 02:20:32 <RodgerTheGreat> neat 02:20:36 * RodgerTheGreat reads 02:22:48 <ehird> actually, if the Parrot ever came into existance that'd be the one time i'd argue for complete government opaquity and censorship 02:22:49 <ehird> ;) 02:23:03 <ehird> however, that seems pretty unlikely to me 02:23:05 <ehird> so my ideals are safe 02:23:43 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)). 02:24:08 -!- slereah_ has joined. 02:24:19 <vixey> funniest joke in the world trumps the parrot 02:24:42 <RodgerTheGreat> vixey: haha- yeah, that was a great sketch 02:24:47 <ehird> vixey: except that the parrot is legitimately scary ;) 02:24:49 <ehird> parallels i'd say 02:24:57 <ehird> RodgerTheGreat: do you know how this - http://www.nonlogic.org/dump/images/1206839450-d66c44db02a18598796ea18e5504d0fdde567d69.jpg - was made? 02:25:05 <ehird> manually by a human? or some kind of algorithm? 02:25:10 <RodgerTheGreat> nope, I just found it on an image board somewhere 02:25:26 <vixey> looks like someone took fractal render into some image program.. 02:27:57 <ehird> this kind of stuff is one of the few themes in horror fiction that actually scares me 02:27:59 <ehird> :p 02:28:03 <ehird> (and even then only marginally) 02:28:08 <ehird> most of the other stuff is just tacky 02:28:23 <ehird> but then the brain is one of the most interesting things i know of :) 02:28:49 <RodgerTheGreat> I think it's just enough on the edge of something that sounds possible to get you paranoid 02:30:01 <ehird> yeah 02:30:22 <ehird> and if it was real, then it'd be *highly* scary, of course 02:30:53 <ehird> i would imagine the suicides from people reading about them and becoming paranoid might exceed the rate of deaths from the image itself 02:31:06 <ehird> (another analogy in comedy: Boite diabolique) 02:32:51 <ehird> it seems this can be either really, really funny or scary 02:41:36 <ehird> http://reddit.com/info/6dw0m/comments/ reddit'd 02:59:14 <RodgerTheGreat> http://www.ansible.co.uk/writing/t3_002.html 03:00:47 <ehird> RodgerTheGreat: same guy who did the faq & wrote that original story 03:01:29 <RodgerTheGreat> yes 03:01:41 <RodgerTheGreat> that's why I thought it would be a good link 03:04:02 <ehird> RodgerTheGreat: it references geb 03:04:03 <ehird> so ++ 03:24:50 -!- ihope has quit (Read error: 110 (Connection timed out)). 03:43:05 -!- ehird has quit ("Konversation terminated!"). 04:12:03 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 04:14:11 -!- pikhq has joined. 04:33:31 -!- Judofyr has quit. 04:39:50 -!- shinkuzin has joined. 04:44:04 -!- shinkuzin has quit (Read error: 104 (Connection reset by peer)). 04:47:56 -!- shinkuzin has joined. 06:48:08 -!- RodgerTheGreat has quit. 07:08:53 -!- shinkuzin has quit (Read error: 110 (Connection timed out)). 07:10:50 -!- calamari has quit ("Leaving"). 07:28:12 -!- spal has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:24:43 -!- spal has quit ("Leaving."). 09:25:42 -!- Sukoshi has joined. 09:35:09 <vixey> hi Sukoshi 09:35:16 <Sukoshi> Heya. 09:35:34 <vixey> how is the nomic stuff going (if it is)? 09:36:02 <Sukoshi> It's not :( 09:36:05 <Sukoshi> Windows Vista is going :( 09:36:11 <Sukoshi> Make that last one a :((( 09:36:22 <vixey> aww 09:36:37 * vixey sends you a get well soon card 09:37:01 <Sukoshi> Objectively speaking, Vista is a leg up from XP. It's more UNIX-like. 09:53:17 -!- RedDak has joined. 10:07:48 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))"). 10:57:31 -!- Sukoshi` has joined. 11:12:58 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)). 11:21:02 <Deewiant> AnMaster: yay, that thing with fungus is a compiler bug in GDC 11:21:29 <AnMaster> Deewiant, oh nice to find 11:22:05 <Deewiant> AnMaster: already been reported in november 11:22:20 <AnMaster> no one fixed it since then!? 11:22:48 <Deewiant> GDC development appears to have slowed down 11:23:00 <Deewiant> I don't really follow what's going on with it myself 11:23:22 <Deewiant> it might be fixed in the latest SVN 11:23:42 <Deewiant> but I doubt it, since the bug isn't closed 11:24:08 <Deewiant> AnMaster: the problem is there's only one author, apparently, and he doesn't interact that much with others 11:24:31 -!- Sukoshi has quit (Connection timed out). 11:24:33 <AnMaster> mhm 11:24:34 <Deewiant> I could work around the bug but I think I'll just compile with DMD instead 11:47:34 -!- Judofyr has joined. 11:59:27 <AnMaster> Deewiant, I must have an old ccbi version because it says BAD: J doesn't set delta 11:59:33 <AnMaster> for SUBR 11:59:42 <AnMaster> Deewiant, where is your current binary? 11:59:49 * AnMaster can't find url 11:59:57 <Deewiant> it's being uploaded 12:00:52 <Deewiant> iki.fi/deewiant 12:02:12 <AnMaster> odd, looks like number of env variables differs 12:02:26 * AnMaster goes to cut them out and sort them to make it possible to compare 12:04:53 <AnMaster> Deewiant, http://pastebin.ca/963235 <-- interesting 12:05:40 <AnMaster> Deewiant, seems like ccbi add a env variable there, that is two spaces and is equal to the full path to the interpreter binary? 12:05:47 <AnMaster> err three spaces 12:07:58 <Deewiant> doesn't do it here with y, at least 12:08:33 <Deewiant> ah, no, yes it does 12:08:36 <Deewiant> looks like a DMD quirk 12:09:14 <Deewiant> yep, only the DMD-compiled binary does it 12:09:22 <Deewiant> food now -> 12:10:22 <AnMaster> Deewiant, so compile part with gdc and other part with dmd? ;) 12:11:08 <AnMaster> Deewiant, still says "BAD J doesn't set delta" for ccbi. huh 12:28:14 <Deewiant> AnMaster: won't link together 12:28:22 <Deewiant> singe GDC doesn't respect the D calling convention 12:28:51 <AnMaster> hm ok 12:28:59 <Deewiant> and J works here just fine 12:29:17 <AnMaster> odd, maybe my hg checkout is outdated? 12:29:28 <AnMaster> of mycology 12:29:41 <Deewiant> doubtful 12:29:59 <Deewiant> what does hg identify say 12:30:48 <AnMaster> 7450b1fdaa5d+ tip 12:31:41 <AnMaster> Deewiant, also how do I switch upstream in mercurial now again to point to that domain name instead directly to the ip (and what was the domain name now again?) 12:32:07 <Deewiant> that won't help you since I don't keep the server running :-P 12:32:56 <AnMaster> ah 12:33:42 <Deewiant> and that's the latest myco 12:33:56 <AnMaster> hm... it seems fungus detect a difference that myco doesn't 12:34:00 <AnMaster> with file loading 12:34:14 <AnMaster> because cfunge enters an infinite loop in fungus 12:34:33 <AnMaster> but not on any specific module 12:35:15 <Deewiant> fungus uses o in a way that myco doesn't, at least 12:35:18 <Deewiant> not sure about i 12:36:26 <AnMaster> http://pastebin.ca/963248 12:36:31 <AnMaster> that is at same point 12:36:34 <AnMaster> just after first i 12:36:37 <AnMaster> differs a bit 12:37:53 <AnMaster> oh wait, it loaded negative? 12:38:01 <AnMaster> hm no 12:41:08 <Deewiant> AnMaster: the J thing was a myco bug 12:41:23 <AnMaster> hm? 12:41:27 <AnMaster> you said it worked for you? 12:41:27 <Deewiant> pull from tar.us.to:8000 if you want 12:41:38 <Deewiant> AnMaster: that was against old myco, my bad 12:42:57 <AnMaster> oh wait i wasn't wrong, something else is up 12:43:05 <AnMaster> Deewiant, sure a sec will pull 12:45:21 <AnMaster> vâ–’22â–’â–’ 12:45:21 <AnMaster> X 12:45:21 <AnMaster> > 091+v 12:45:30 <AnMaster> vs. 12:45:31 <AnMaster> vâ–’22â–’â–’ X 12:45:31 <AnMaster> > 091+v 12:45:34 <AnMaster> hm 12:47:07 -!- atsampso1 has quit (Read error: 113 (No route to host)). 12:47:16 <AnMaster> Deewiant, that is just after loading fspace 12:47:21 <AnMaster> that is the actual first difference 12:47:31 <AnMaster> I wonder what this is that mycology doesn't test 12:47:55 -!- atsampson has joined. 12:48:02 -!- atsampso1 has joined. 12:48:08 -!- atsampso1 has quit (Client Quit). 13:00:56 <AnMaster> Deewiant, in D what is "static if"? 13:01:17 <Deewiant> compile-time if 13:01:22 <AnMaster> hm 13:01:24 <Deewiant> kind of like #ifdef but better 13:01:36 <AnMaster> "static if (needBegX) {" depends on from where it is called 13:01:39 <Deewiant> or more like #if rather 13:01:45 <AnMaster> so that means two versions will be output? 13:01:48 <AnMaster> of the routine 13:01:50 <Deewiant> ye 13:01:55 <AnMaster> mhm 13:09:05 <AnMaster> Deewiant, what I don't understand is the way ccbi loads the fspace module in fungus 13:09:07 <AnMaster> that is: 13:09:16 <AnMaster> vâ–’22â–’â–’ 13:09:16 <AnMaster> X 13:09:16 <AnMaster> > 091+v 13:09:33 <AnMaster> to me it seems like the X should end up on first line 13:10:25 <AnMaster> I can't single step through the ccbi file loading code and I can't see what in the file loading code causes it to be loaded with the X on the second line 13:10:52 <AnMaster> assuming the output from area is correct? 13:12:31 <Deewiant> it might not be 13:13:01 <AnMaster> hm 13:13:17 <Deewiant> especially if it has to output binary 13:13:32 <Deewiant> you know, if the value at (0,0) is 10 for instance 13:13:37 <Deewiant> then it'll output a line break there 13:14:18 <Deewiant> AnMaster: yep, (7,0) is 10 13:14:44 <Deewiant> and (16,0) is the X 13:14:50 <Deewiant> so it is on the first line 13:14:56 <Deewiant> the display is just messed up because of the NL 13:16:22 <AnMaster> hm 13:17:29 * AnMaster again wish for a way to make ccbi output each instruction as it is executed so he can compare 14:46:01 -!- timotiis has joined. 14:59:45 -!- vixey has quit ("Leaving"). 15:16:34 -!- ais523 has joined. 15:22:12 -!- Judofyr has quit. 15:32:45 -!- ais523 has quit ("switching to a client that doesn't require me to type in PONGs by hand, because I'll be doing something else for a while"). 15:33:26 -!- ais523 has joined. 16:02:35 -!- Tritonio_ has quit (Remote closed the connection). 16:03:53 -!- timotiis_ has joined. 16:09:09 -!- timotiis has quit (Read error: 110 (Connection timed out)). 16:16:26 -!- ihope has joined. 16:17:21 <ihope> ABAABABAABAABABAABABAABAABABAABAABABAABABAABAABABAABABAABAABABAABAABABAABABAABAABABAABAAB! 16:17:25 <ihope> Ello. 16:18:29 <slereah_> Hello sir. 16:19:52 -!- timotiis_ has changed nick to timotiis. 16:21:20 -!- wildhalcyon has joined. 16:21:35 <wildhalcyon> hola 16:22:03 <slereah_> hai 16:22:13 <wildhalcyon> What you up to slereah? 16:24:06 <slereah_> not much. 16:24:22 <slereah_> You? 16:26:25 <wildhalcyon> Work's been draggin me down a lot 16:27:07 <wildhalcyon> Keeping me from my project(s) 16:28:22 -!- ehird has joined. 16:29:35 <ehird> i just had a great idea 16:29:42 <ehird> set that Parrot image to Never Gonna Give You Up 16:29:46 <ehird> put it on youtube as Basiliskroll 16:29:54 <ehird> kill everyone 16:30:01 <ehird> ..., profit 16:30:43 <wildhalcyon> I see a flaw in your plan 16:30:46 <wildhalcyon> Rick Astley 16:31:16 <ehird> wildhalcyon: But if I removed Rick Astley it wouldn't be Basiliskroll :( 16:31:37 <wildhalcyon> more specifically ZOMBIE Rick Astley. The dude said, "NEVER gonna give you up" 16:32:07 <wildhalcyon> you kill Rick Astley with a Basiliskroll and you've got some real trouble on your hands 16:32:22 <slereah_> It wouldn't work. 16:32:32 <slereah_> For Never gonna give you up is a life giver. 16:32:40 <slereah_> It has been shown to cure terminal cancer patients. 16:34:07 <wildhalcyon> are you sure? I thought they did a study that showed Rickrolling to be HIGHLY carcinogenic? 16:34:07 <ehird> wildhalcyon: well, once Never Gonna Give You Up became untrue, everyone would die 16:34:09 <ehird> of shock 16:34:30 <wildhalcyon> Well... that may be the case. 16:34:58 <wildhalcyon> But there's no way I'll be falling for a basiliskroll. I've got some neighborhood kids I've hired to watch all youtube links. You know... just in case. 16:35:25 <ehird> Well, once they see it and die, you won't be able to check further ones 16:35:39 <ehird> Here's basically the mission plan of how that would work: http://www.nonlogic.org/dump/images/1206839450-d66c44db02a18598796ea18e5504d0fdde567d69.jpg 16:35:41 <ihope> Just hire some new ones. 16:36:06 <ehird> ihope: But when they're all gone... http://www.nonlogic.org/dump/images/1206839450-d66c44db02a18598796ea18e5504d0fdde567d69.jpg explains that 16:36:59 <ihope> What are those fractals, anyway? 16:37:01 <wildhalcyon> oh, I thought the action was immediate. 16:37:23 <ehird> wildhalcyon: it depends 16:37:28 <ehird> the original BLIT has it to be pretty much immediate 16:37:32 <ehird> however 16:37:39 <ehird> in BLIT, the main character sees it under protection 16:37:50 <ehird> but eventually submits to it because it had infected his brain due to long exposure 16:37:58 <ehird> & that was not immediate 16:38:13 <ehird> it would seem the immediateness is canon, but i find the delayed idea interesting too 16:38:23 <ehird> ihope: I think it's some fractal edited 16:38:31 <ehird> But hah, now you're both fscked. 16:38:41 <ihope> :-P 16:38:50 <ihope> Looks to me like just two fractals superimposed. 16:38:58 <ihope> Created in UltraFractal, perhaps. 16:39:12 <ehird> No that parrot looks like it was made that way 16:39:23 <ehird> it fits the BLIT description almost perfectly (jagged parrot salami) 16:39:47 <ihope> Ah. 16:40:53 <ehird> oh, and http://www.old-computer-mags.com/Magazine/Your%20Sinclair%20N.23/Your%20Sinclair%20N.23.htm 16:49:08 -!- Tritonio_ has joined. 17:05:16 -!- Judofyr has joined. 17:25:37 -!- RodgerTheGreat has joined. 17:25:51 <RodgerTheGreat> hello everyone 17:27:51 <slereah_> Hulo 17:32:48 <ais523> RodgerTheGreat: hello 17:32:53 <RodgerTheGreat> how's it going, slereah_, ais523? 17:33:04 * ais523 has been implementing INTERCAL all week 17:33:14 <RodgerTheGreat> cool- in what language? 17:33:16 <ais523> hmm... I nearly typed @ical{} rather than INTERCAL then 17:33:20 <ais523> RodgerTheGreat: C 17:33:26 <ais523> I maintain C-INTERCAL, an INTERCAL-to-C compiler 17:33:44 <RodgerTheGreat> I wasn't aware of that- neat 17:33:45 <ais523> and I've been implementing new features in an attempt to do catchup with CLC-INTERCAL and to add some new things 17:33:56 <ehird> ais523: awesome 17:33:56 <ais523> RodgerTheGreat: sudo apt-get install intercal on Debian 17:34:19 <ais523> or http://intercal.freeshell.org is the home page for both of the main INTERCAL implementations 17:34:31 <RodgerTheGreat> think that package is available on Darwinports/Macports? 17:34:51 <ais523> RodgerTheGreat: I don't know, but it isn't all that popular so I doubt it 17:35:02 <RodgerTheGreat> :( 17:36:48 <ais523> it is designed to be portable, though 17:36:58 <ais523> except that some of the newer features require gcc 17:37:21 <ais523> (the INTERCAL to C link code requires gcc because I hook into the compiler between its preprocessing and compilation stages 17:37:34 <ais523> and therefore have to use strange gcc command-line args like -x) 17:38:19 <ais523> I spent ages on the autoconf script a couple of versions ago, so I'd be interested to know how well ./config.sh && make && sudo make install goes 17:38:38 <ais523> but I know how much of a pain it is to get gcc installed on a Mac (I watched a friend do it once), so you might not want to bother 17:43:27 <ehird> ais523: gcc is trivial on a mac 17:43:30 <ehird> 1. put in cd 17:43:36 <ehird> 2. select developer tools 17:43:38 <ehird> 3. hit next a few times 17:43:42 <ehird> 4. there is not step 4 17:43:57 <ais523> ehird: ah, they were trying to do it downloading things from some Apple developer thing over the Internet 17:44:08 <ais523> they got it working, but it took about an hour 17:44:12 <ais523> including manually editing various things 17:45:47 <RodgerTheGreat> wtf? 17:46:12 <RodgerTheGreat> it's really pretty straightforward 17:46:17 <ais523> I think part of the trouble may have been that they were trying to install other things at the same time 17:46:27 <ais523> or maybe they got an unstable release or something by mistake 17:46:45 <ais523> never mind, anyway, if it's easy then that's one less hurdle 17:49:04 <RodgerTheGreat> it's really pretty funny how many "developer tools" come with macs out of the box- the full JDK, python, perl, ruby, vi and nano, tons of the usual unix utilities, etc 17:50:40 <ais523> yes, and pretty ironic how you have to install them on some Linux distributions nowadays 17:51:00 <ais523> (for instance Ubuntu is missing all the C header files unless you specifically request them) 17:54:17 <RodgerTheGreat> I think it meshes with Apple's main goal for the "out of box experience"- yeah, OSX comes with a ton of drivers and things you probably don't need, but by preinstalling them nearly everything "just works" when you plug it in. 17:55:27 <ais523> RodgerTheGreat: agreed. At least Ubuntu does that with drivers, and I suppose the no header files thing is for much the same reason as burying the command line in the menus 17:56:35 <RodgerTheGreat> in general, I think Apple has struck a good balance between making things user-friendly and avoiding "dumbing down" the unix environment for people who want to use it. 17:57:25 <ais523> so, are you going to try to install C-INTERCAL, then? 17:58:34 <ehird> ais523: i think i did c-intercal on os x once 17:58:47 <RodgerTheGreat> I might 17:58:51 <ais523> ehird: It's changed a lot since then, unless you did it recently 17:59:25 <ais523> I redid the build system for version 0.27 17:59:55 <ais523> hmm... pity oerjan isn't here, I found a bug in his INTERCAL Unlambda interpreter that was masked by a bug in the compiler itself 18:00:12 <ais523> and when I fixed the compiler bug, I had to fix the Unlambda interp too 18:01:42 <slereah_> This is madness. 18:02:22 <ais523> slereah_: what is madness? 18:02:35 <slereah_> INTERCAL unlambda 18:02:55 <ais523> slereah_: it works! 18:03:04 <slereah_> But it is madness :o 18:03:19 <ais523> although it must have been doubly difficult for oerjan to write, it served as a useful test case for the new comment-handling system 18:03:26 <slereah_> Then again, my first version of Lazy Bird was tried on the Love Machine 9000 18:03:29 <ais523> because oerjan likes to vary styles of commens a lot 18:03:30 <ehird> ais523: maybe you should write a build system in 5 lines of perl 18:03:31 <ehird> ;) 18:03:31 <slereah_> It didn't work though 18:03:35 <ais523> s/commens/comments/ 18:03:42 <ais523> ehird: they'd have to be long lines 18:03:55 <ais523> because there are so many files to sort out and put into various places 18:04:08 <ais523> a C-INTERCAL build system golf would be an interesting challenge, though 18:08:33 -!- oklopol has quit (Remote closed the connection). 18:08:48 -!- okopol has joined. 18:09:44 <ais523> okopol: you've dropped the l again 18:10:19 <ais523> hopefully it isn't with oerjan again, or there'll be a longer wait before you get it back this time because you'll have to wait for them to be online 18:10:31 <ehird> ais523: makeit glob 18:10:31 <ehird> :D 18:10:42 <ehird> as far as the 'what if files are missing' 18:10:44 <ehird> make it check the web 18:10:46 <ehird> for a file list 18:10:48 <ehird> no, not web 18:10:48 <ais523> ehird: the dependencies don't follow a pattern 18:10:49 <ehird> something p2p 18:10:53 <ehird> no single point of failure 18:10:54 <ehird> :D 18:10:59 <ehird> ais523: analyze the header includes, duhh 18:11:05 <ais523> and I often install C-INTERCAL on a computer that isn't connected to the internet 18:11:18 <ais523> ehird: that's dependencies on header files 18:11:26 <ais523> the object files connect together in more than one way 18:11:37 <ais523> so some global variables are used just to transmit which files are connected 18:11:50 <ais523> and as another example, some data files can be read on disk or compiled into the program 18:12:09 <ais523> and which method is used depends on whether you're compiling convickt (a command-line utility) or libick.a (a library) 18:13:41 <ehird> ok, um 18:13:47 <ehird> grab the dependencies from the p2p 18:13:48 <ehird> actually 18:13:55 <ehird> just load a perl file from the web and eval() 18:13:58 <ehird> one line build system 18:13:59 <ehird> ;) 18:14:12 <ais523> ehird: very abusable 18:14:20 <ehird> ais523: oh shush 18:14:21 <ehird> :D 18:14:26 <ais523> and I do not have Internet access ususally when building C-INTERCAL 18:14:34 <ais523> s/ususally/usually/ 18:14:51 <ais523> the Windows computer that I test the DOS build on doesn't have Internet access ever 18:15:29 <ehird> 'java for smalltalk programmers': the saddest title article i've seen all day 18:16:01 <ais523> ehird: that's a pretty bad title 18:16:10 <ais523> reversing the language names would make some kind of sense 18:16:34 <ehird> ais523: If you reverse it I don't want to work with any resulting programs 18:16:35 <ehird> :) 18:16:48 <ais523> ehird: agreed 18:17:01 <ehird> it seems sad that someone knows enough smalltalk to know how to tell people how to switch from it to java, and yet still reccomends doing so 18:19:28 <ais523> IMO the only advantage of Java is its ability to do crossplatform GUIs 18:19:42 <ais523> and although that's a massive advantage the rest of the language is so bad as to make me not want to use it again anyway 18:25:30 <ehird> ais523: and the api for the uis is horrible 18:25:34 <ehird> as well as most of the end user experience 18:25:43 <ais523> ehird: I know 18:25:56 <ais523> I had to study it for a semester 18:26:04 <ais523> and in the end we had to produce networked Snakes-and-Ladders programs 18:26:13 <ais523> which is one of the most pointless games ever to run networked 18:26:19 <ehird> Squeak can do cross-platform UIs though. That may have something to do with the fact that it runs in its own window & VM and tries to avoid interacting with anything outside that window. :-) 18:26:28 <ais523> the interaction was just clicking on a button to make your move 18:26:38 <ehird> it's good for development though: the UI is suited to it 18:26:42 <ais523> and a few other controls to set up the network connection in the first place 18:26:59 * ehird has been playing a little with smalltalk recently, currently creating a wiki with Seaside incredibly rapidly 18:27:07 <ehird> the model takes a lot of getting used to 18:27:14 <ehird> but i'm picking it up quickly 18:44:53 -!- jix has joined. 18:46:53 -!- jix has quit (Client Quit). 18:47:16 -!- jix has joined. 18:49:16 <RodgerTheGreat> I think this could make a great desktop: http://upload.wikimedia.org/wikipedia/commons/2/2a/Spider_crab_at_the_Kaiyukan_in_Osaka%2C_Japan.JPG 18:52:00 <ais523> RodgerTheGreat: it's easier on the person following the link to link to the image description page rather than the image itself, so as to be able to see the copyright conditions easily 18:52:12 <ais523> going from the URL back to the description page is annoying to have to do 18:52:28 <ais523> but the other way is just one click 18:52:34 <RodgerTheGreat> oh, sorry: http://en.wikipedia.org/wiki/Image:Spider_crab_at_the_Kaiyukan_in_Osaka%2C_Japan.JPG 18:52:45 <ehird> ais523: 'mediawiki is crap, fix it for me' 18:52:46 <ehird> :) 18:53:15 <ais523> ehird: you really expect MediaWiki to be able to influence the content of a direct link to an image? 18:53:49 <ais523> changing the metadata might be one way to do it, but would be counterintuitive 18:54:17 <ehird> ais523: i expect mediawiki to discourage linking to such direct resources when the common user wants some metadata too 18:54:54 <ais523> ehird: I'd like it to do that too, but having direct links to the images is needed for some purpose too. There needs to be some way to educate users not to post links to them, though. 18:55:15 <ais523> (Worse: most users I come across just post direct links to the /thumbnails/, which is not really useful to anyone) 18:55:48 <ehird> ais523: Just make the inteerface clearer 18:56:06 <ehird> Basic case: don't make the image itself a link on the description page. 18:56:11 <ais523> the problem is people are used to right-clicking on images 18:56:14 <ehird> Put a 'download' link somewhere. 18:56:26 <ais523> but there is currently ongoing work to make the description pages more obvious 18:56:45 <ehird> ais523: are they going to make the code sane after that? :-) 18:56:58 <ehird> MediaWikiBagOStuff, what great OOP design 18:57:01 <ais523> ehird: actually they rewrote the image backend a few months ago 18:57:26 <ehird> ais523: i meant the whole thing 18:57:27 <ehird> heh 18:57:48 <ais523> it seems unlikely that there'll ever be a Phase 4 nowadays 18:58:05 <ais523> (the phase number goes up by 1 with each complete rewrite, it's at 3 at the moment) 18:58:12 <ehird> ais523: enterprisey 18:58:34 <ais523> (but it's relative to what's used on Wikipedia rather than MediaWiki itself) 18:58:48 <ais523> ((Phase 1 wasn't MediaWiki-based at all IIRC)) 18:58:54 <ehird> ais523: one problem with mediawiki -- 18:59:00 <ehird> the actual core revision system 18:59:11 <ehird> it only handles linear, simple changes 18:59:17 <ehird> and doesn't even store them efficiently 18:59:42 <ehird> ais523: a wiki based on the ideas behind darcs or git will be the future -- no 'LULZ ALREADY EDITED' messages (well, maybe 1 or 2) 18:59:45 <ehird> maybe even USING git or darcs 18:59:46 <ais523> it depends on what you mean by 'efficient' 18:59:59 <ais523> but yes, MediaWiki is bad for edit conflicts 19:00:06 <ais523> mostly because their diff algorithm is rubbish 19:00:43 <ais523> Wikimedia use GNU diff3 noncustomised for edit conflict merges IIRC 19:01:09 <ais523> and the issue is that wikitext rarely contains newlines 19:01:28 <ehird> ais523: mediawiki is a great big hack that has its outsides polished to look modern 19:01:29 <ehird> :) 19:02:41 <ehird> hmm 19:02:49 <ehird> it seems irony is all the range when it comes to web stuff 19:02:51 <ais523> ehird: C-INTERCAL is a great big hack, but that's deliberate 19:03:03 <ehird> Avi Bryant, creator of Seaside, 's blog is powered by typepad 19:03:13 <ehird> The ruby on rails website is powered by PHP 19:03:16 <ehird> I could go on 19:03:17 <ais523> there are things like Perl idioms dropped into the C code that manages CLC-INTERCAL character set translation (because CLC-INTERCAL is written in Perl) 19:03:46 <ehird> ais523: isn't making it a great big hack kinda hard to maintain 19:03:46 <ehird> :) 19:03:57 <ais523> ehird: well, yes 19:04:17 <ais523> but I wouldn't have got into maintaining an INTERCAL compiler in the first place if I was scared of 'hard to maintain' 19:04:57 <ehird> hehe 19:05:13 <ais523> hmm... it's a pity that vim.org doesn't have a 'generator' <meta> 19:05:22 <ais523> I was hoping it would say that it was written in Emacs 19:05:25 <ehird> haha 19:05:35 <ehird> gnu.org might have some vi pages 19:05:38 <ehird> seems pretty likely 19:05:43 -!- RedDak has joined. 19:05:53 <RodgerTheGreat> be jealous of my new T-shirt acquisition: http://www.nonlogic.org/dump/images/1206899749-shirt.png 19:06:18 <ehird> RodgerTheGreat: die 19:06:19 <ehird> now 19:06:21 <ehird> :< 19:06:21 <RodgerTheGreat> the back says "programming enrichment activity test subject" 19:06:31 <RodgerTheGreat> :D 19:06:49 <slereah_> Delicious cake. 19:06:52 <ehird> RodgerTheGreat: was there cake, and was it delicious 19:06:58 <ehird> more importantly 19:06:59 <ehird> was it moist 19:07:02 <RodgerTheGreat> unfortunately, it was a lie 19:07:07 <ais523> ehird: I checked the Emacs page there, and there was no note of a generator anyway 19:07:10 <ehird> did you refrain from crying over every mistake? 19:07:15 <ehird> typos are inevitable, you know. 19:07:18 <ais523> s/anyway/anywhere/ 19:07:33 * ais523 notes another example of comic timing in the last two comments 19:08:01 <ais523> ehird: your QDB should have an IRC logger 19:08:01 <Sukoshi`> How do people develop on Vista? 19:08:11 <ais523> so we can just say $$QDBTHIS$$ or some other special token 19:08:17 <ehird> ais523: haha 19:08:20 <RodgerTheGreat> The Computer Science got done, and we made a neat gun for the people who are still alive. 19:08:21 <ais523> and the QDB will automatically add the quote 19:08:26 <ehird> ais523: well i'll probably get a logger in here sometime 19:08:29 <ehird> because ircbrowse's interface sucks 19:08:40 <ais523> Sukoshi`: with difficulty, and by paying a lot of money for MS development tools 19:08:52 <ehird> the logger will probably plug into the bot which will be done at the same time (jesus, second coming thereof) 19:08:56 <RodgerTheGreat> oh, hi Sukoshi` 19:08:58 <Sukoshi`> I hear the MS development tools are free these days. 19:08:58 <ehird> so it'll be @remember 19:09:00 <ehird> or soemthing 19:09:08 <ehird> but.. how does it know how many lines to quote? 19:09:15 <ais523> 19:09:19 <ehird> and mostly you want to cut out irrelevent lines 19:09:33 <ais523> ehird: it would have to be manually edited 19:09:48 <ais523> either that, or just use a stream editor language, like sed or TECO, but with the lines numbered in the reverse direction 19:10:26 <ais523> so to quote the exchange above, I could write $$QDBTHIS:1,21d;24,$d$$ 19:10:43 <ais523> (that's sed by the way, I don't know TECO) 19:11:01 <ehird> ais523: it would seem that exchange is less efficient than using the mouse 19:11:10 <ais523> ehird: to do what? 19:11:14 <ehird> you swipe over the lines you want, type 'qdb.eso-std.org/submit' 19:11:16 <ehird> paste it 19:11:17 <ais523> my mouse can't send emails by itself 19:11:23 <ehird> delete the lines 19:11:24 <ehird> click submit 19:11:28 <ais523> oh 19:11:49 <Sukoshi`> But I'm serious here. 19:11:51 <ais523> but I want to be able to do things entirely over IRC 19:12:11 <ais523> Sukoshi`: I'd probably use cygwin or DJGPP if I had to do development on Vista 19:12:11 <Sukoshi`> I'm on Vista, and I'd like to be able to do Windows development and cross-platfom development. 19:12:21 <Sukoshi`> Yeah, I've been looking into Cygwin and MinGW. 19:12:22 <ehird> Sukoshi`: mingw 19:12:22 <ais523> but that doesn't do Windows development 19:12:35 <ehird> never do plain windows dev, btw 19:12:39 <ehird> i will murder you in your sleep. 19:12:41 <ais523> at least, not plain Windows dev 19:12:51 <ais523> but that should be completely avoided because the Windows API is so strange 19:12:51 <ehird> heh 19:13:00 <ehird> ais523: we're like soulmates! 19:13:01 <ehird> kind of. 19:13:03 <ehird> without the soul part 19:13:04 <ais523> Last I checked, the Windows equivalent to fork() had 11 parameters 19:13:04 <ehird> or the mate part 19:13:12 <ais523> and that was back for Windows 95 19:13:14 <Sukoshi`> That's scary. 19:13:45 <ais523> fortunately, I can't remember what they were all for, or I'd have gone mad by now 19:13:53 <ais523> and I never tried to use it 19:14:12 <ais523> I just used the Windows equivalent of system(), which is not the right way to do things but is good enough sometimes and easier to understand 19:14:28 <Sukoshi`> Heh. 19:14:40 * ais523 used to do Windows development back sufficiently long ago that they usually targeted Windows 3.1 19:15:29 <ehird> hmm 19:15:35 <ehird> there should be a list of languages with continuations 19:15:38 <ehird> there just aren't enough of them 19:16:05 <ais523> ehird: depends on what you mean by 'continuation' 19:16:14 <ais523> does setjmp produce a continuation, for instance? 19:16:21 <ais523> what about try/catch/throw? 19:16:28 <ehird> ais523: definately not 19:16:29 <ais523> what about C-INTERCAL's MAYBE? 19:16:32 <ehird> those are not continuations 19:16:36 <ehird> those 'continuations' are downwards-only 19:16:50 <ehird> once dropping below their creation point on the stack, you cannot call them 19:17:01 <ehird> and the second criterion: reusable 19:17:01 <ais523> the INTERCAL one can be used both ways 19:17:06 <ais523> but is not reusable 19:17:06 <ehird> continuations can be called multiple times 19:17:14 <ehird> ais523: then it's not a continuation 19:17:24 <ehird> well, it's a continuation in a loose sense 19:17:29 <ehird> but a thoroughly useless one 19:17:30 <ais523> you can make a reusable version by putting MAYBE in a loop 19:17:44 -!- Judofyr has quit. 19:17:49 <ais523> hmm... maybe I should write an INTERCAL program that CREATEs genuine continuations using MAYBE 19:17:55 <ehird> ais523: http://en.wikipedia.org/wiki/Continuation#Example 19:18:06 <ehird> if you can do that with MAYBE and a loop then yeah C-INTERCAL has real continuations 19:18:17 <ehird> and that tempts me to write a continuation-based web app in it 19:18:19 <ehird> that would just be hilarious 19:18:38 <ais523> one issue is that the continuations return void, which makes things harder than normal 19:18:53 <ais523> you do have a programmer-specified finite supply of global continuation-unaffected variables, though 19:18:56 <ehird> ais523: can you pass values to the continuations? 19:19:04 <ais523> but each of them is a single bit and hard to read 19:19:05 <ais523> ehird: no 19:19:07 <ehird> in scheme, 19:19:23 <ehird> (call/cc (lambda (k) ;; k is a procedure. when called with X, this call/cc returns X 19:19:29 <ais523> ehird: I know 19:19:41 <ais523> INTERCAL doesn't have first-class functions 19:19:45 <ais523> just first-class integers 19:19:50 <ais523> so all you could pass back would be an integer 19:20:04 -!- oklopol has joined. 19:20:19 <ais523> come to think of it, they aren't true continuations simply because you have no way to store them 19:20:41 <ais523> as in, if you go back to an earlier continuation, you lose all the continuations made since then because you had nowhere to put them 19:21:09 <ais523> (you reference a continuation by counting back how long ago a particular continuation was created) 19:21:41 <ais523> however, the whole MAYBE thing is just a special case of the threader, so you could still get true continuations by defining something that worked like MAYBE but acted differently 19:22:06 <ais523> however, it wouldn't get the special optimisation the compiler does on MAYBE, so your program would get slower the more continuations were in existence 19:22:48 * ais523 has even more insane plans to extend the threader to be able to do lambdas too, but that's still an early-stage concept 19:23:19 * ais523 gets to work on an INTERCAL continuation library, just for fun 19:23:46 <ais523> hmm... INTERCAL has variables. Should INTERCAL continuations record and restore those? The problem doesn't come up in Scheme. 19:23:54 -!- okopol has quit (No route to host). 19:23:55 <ehird> ais523: scheme has variables. 19:23:55 <ais523> I'd be inclined to say that they should 19:24:01 <ehird> ais523: here, i'll define a continuation: 19:24:06 <ehird> you copy the call stack, not the heap 19:24:09 <ehird> so you get local variables etc 19:24:13 <ehird> but not globals 19:24:13 <ehird> AND 19:24:25 <ehird> if you store a reference into a local, the object referenced is changed later on, then you jump back 19:24:29 <ehird> then the object in the reference has changed 19:24:37 <ehird> so: a continuation is a copy of the call stack. 19:24:45 <ehird> calling it just wipes the call stack and replaces it with the copy 19:24:47 <ais523> ehird: INTERCAL doesn't store 'auto' variables on the call stack 19:24:51 <ais523> instead each variable has its own stack 19:24:59 <ehird> ais523: dynamic scoping? 19:25:03 <ehird> then continuations will be hard 19:25:19 <ehird> ais523: but, just copy every variable 19:25:21 <ehird> it SHOULD work 19:25:22 <ais523> it's more that you can change the scoping mechanism at will, even during the execution of a program 19:25:31 <ehird> http://en.wikipedia.org/wiki/Continuation#Example just get that working 19:25:32 <ehird> ;) 19:25:47 <ais523> but I'll store all the variables and the stashes inside the continuations, because that's what the compiler currently does 19:26:29 <ais523> except the top STASH element for .1, so you can send a 16-bit integer back 19:27:03 <ehird> ais523: is there anything that comppiles down to intercal? 19:27:15 <ehird> actually, wait 19:27:22 <ehird> ais523: the only way you can do continuations when using the c stack 19:27:27 <ehird> is copying the c stack's memory 19:27:37 <ehird> ais523: i'll make it easy for you 19:27:38 <ehird> http://homepage.mac.com/sigfpe/Computing/continuations.html 19:27:41 <ehird> there's continuations for pure c 19:27:48 <ehird> older-style c though 19:27:53 <ehird> but you should be able to utilize it 19:27:59 <ais523> ehird: I already have code that copies memory around 19:28:09 <ais523> and I'm not writing a C library to give continuations to INTERCAL 19:28:20 <ais523> but instead writing the code to give continuations to INTERCAL entirely in INTERCAL itself 19:28:23 <ehird> ais523: ok then 19:28:27 <ais523> the latest version is self-extending 19:28:27 <ehird> ais523: but look at that c code 19:28:28 <ehird> it may hhelp 19:29:06 <ais523> ehird: I have done 19:31:54 <ehird> ais523: makecontext/setcontext may be proper continuations in c 19:31:55 <ehird> i am testing 19:32:57 -!- ihope_ has joined. 19:33:34 <ehird> char func1_stack[16384]; 19:33:34 <ehird> heh 19:41:54 <ehird> ais523: challenge - once doing the continuations, implement prolog in it 19:41:55 <ehird> :) 19:42:18 <ais523> ehird: look at pit/tests/permute.i in the C-INTERCAL distributions 19:42:30 <ais523> it uses backtracking to write out all permutations of I-VI 19:42:48 <ais523> the backtracking already exists, it's just continuations that need to be written 19:43:00 <ais523> and I have plans for a Prolog to INTERCAL compiler already 19:43:16 -!- wildhalcyon has quit (brown.freenode.net irc.freenode.net). 19:43:16 -!- pikhq has quit (brown.freenode.net irc.freenode.net). 19:43:17 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 19:46:11 <ais523> hmm... netsplits are interesting things, especially as I seem to get a different server at Freenode every time I connect to it 19:46:41 <ais523> maybe clients should just try disconnect/reconnect if they aren't voiced or opped in the hope that they end up on the large side of the netsplit at random 19:46:42 -!- Judofyr has joined. 19:47:44 -!- wildhalcyon has joined. 19:48:42 <ais523> heh, wildhalcyon did 19:49:48 <wildhalcyon> Did what? 19:49:55 -!- pikhq has joined. 19:49:57 <ais523> <ais523> maybe clients should just try disconnect/reconnect if they aren't voiced or opped in the hope that they end up on the large side of the netsplit at random 19:50:01 -!- ihope has quit (Read error: 110 (Connection timed out)). 19:50:05 <Deewiant> ais523: you might have only one server reasonably close by 19:50:15 <ais523> Deewiant: yes 19:50:33 <ais523> but I tend to get a different server every time I connect, so maybe it should be a preference, or the client should experiment and find out 19:50:34 <Deewiant> in which case, reconnecting across the world just to bypass a netsplit seems a bit.. pointless 19:51:00 <Deewiant> well, if you connect to the generic irc.freenode.net or whatever they usually dole out servers at random 19:51:21 <Deewiant> I don't know, maybe it tries to give a fast server 19:52:10 <Deewiant> but I find that I usually connect to a server on the west coast of the USA (I'm in Europe) if I connect to the 'generic server' 19:53:24 <ehird> i get kubrick often 19:53:33 <ehird> [16:28] [MOTD] - kubrick.freenode.net Message of the Day - 19:53:33 <ehird> [16:28] [MOTD] - Welcome to kubrick.freenode.net in Los Angeles, CA, USA! Thanks to 19:53:33 <ehird> [16:28] [MOTD] - Velocity Networks (www.vel.net) for sponsoring this server! 19:53:33 <ehird> [16:28] [MOTD] - 19:59:26 -!- sekhmet has joined. 19:59:47 * ais523 is on leguin at the moment, which is in Sweden 20:12:49 <ehird> hm 20:12:55 <ehird> i really DO want a list of languages with continuations 20:12:55 <ehird> :-) 20:15:10 <ais523> well, INTERCAL once I finish this, Unlambda, Underlambda, Subtle Cough, that's about it for esolangs (from memory) 20:15:31 <slereah_> Subtle Cough has a whole lot of it. 20:15:54 * slereah_ does not know what continuation is. 20:16:02 <ais523> slereah_: pity it's an unusable language, oerjan and I independently proved that there are only three non-equivalent programs, two of which just end and one of which is an infinite loop 20:16:25 <olsner> you're working on continuations for intercal? 20:16:30 <ais523> olsner: yes 20:16:40 <ais523> I'm actually implementing them in INTERCAL itself, just to show that it's possible 20:16:42 <slereah_> Heh. 20:17:16 <olsner> so you're extending some intercal compiler/interpreter written in intercal? 20:17:18 <ais523> (the upcoming C-INTERCAL 0.28 has a CREATE statement that allows you to create new syntax on the fly; CLC-INTERCAL has had a similar statement with different syntax for a while) 20:17:24 <ehird> didn't mean esolangs, hehe 20:17:31 <slereah_> I wonder if SKI + c is equivalent to lambda-mu calculus. 20:17:33 <ehird> ais523: i proved that independantly too 20:17:39 <ais523> olsner: the compiler is written in C, and compiles to C 20:17:49 <ais523> but you can write extensions to it in either C or INTERCAL 20:17:53 <ehird> olsner: ais523 maintains C-INTERCAL 20:18:01 <ehird> he recently added a way to write extensions to it in INTERCAL itself 20:18:12 <ais523> so recently it hasn't been publically released yet 20:18:22 <ais523> it was on Thursday IIRC, or possibly Friday 20:18:23 <olsner> I hadn't imagined actual users of intercal actually existed 20:18:34 <ehird> ais523: here's one for the qdb -- Chirpy, on approval of a quote, sends a trackback/pingback to every URL in the quote which takes them 20:18:37 <ehird> cool 20:18:54 <ehird> olsner: certainly there aren't many intercal programs 20:19:07 <ehird> but the implementations do sure support a lot of advanced stuff that no program will ever utilize ;) 20:20:40 <ais523> ehird: I count 62 INTERCAL programs as examples supplied with C-INTERCAL, many of which aren't very interesting 20:20:56 <ais523> and we add any INTERCAL programs we find as examples, as long as the licences are compatible 20:21:12 <ais523> (CLC has its own examples too, some of which are just tests) 20:21:29 <ehird> ais523: I want a combination of Prolog, ML and INTERCAL 20:21:31 <ehird> in one thing 20:21:34 <ehird> I don't know how 20:21:37 <ehird> but it should look crazy 20:21:42 <ais523> (but the infamous CLC-INTERCAL 'Hello, world' isn't in the C-INTERCAL example repository because it doesn't work on C-INTERCAL) 20:22:03 <ais523> ehird: Prolog+INTERCAL's more or less been done; you'll have to tell me about ML, though, because I know the name but no more than that 20:22:21 <ehird> ais523: ML inspired Haskell 20:22:25 <ehird> It's strict and non-pure though 20:22:29 <ais523> ah 20:22:31 <ehird> ais523: Ocaml descends from it 20:22:35 <ehird> Wikipedia it, the article's good 20:22:43 <ehird> (ML & Ocaml are notorious for being crazy fast) 20:23:00 * ais523 will have to actually implement their plans for Functional INTERCAL some time 20:23:49 <ais523> I think it only needs one tiny extra ability, the ability to create a woven thread but with some variables' read-only statuses themselves made read-only 20:24:12 <olsner> I should take the time to learn intercal some day... 20:24:36 <ais523> the woven threads would be dormant, but could NEXT FROM the current thread if no other threads wanted to 20:25:18 <ais523> olsner: when you do, read the C-INTERCAL and CLC-INTERCAL docs for a perspective on what the language is like nowadays (http://intercal.freeshell.net), most docs are out of date 20:25:40 <ais523> I meant http://intercal.freeshell.org 20:25:56 * ais523 managed to get freeshell and freenode confused again 20:27:51 <ais523> DO CREATE (8200) GET CONTINUATION IN .1 RECEIVING .2 20:27:56 <ais523> DO CREATE (8250) CONTINUE WITH .1 SENDING .2 20:28:14 <ais523> ehird: how's that for syntax for INTERCAL continuation statements? 20:28:34 <ehird> ais523: no, sorry 20:28:37 <ais523> (ignore the bits from the line label and earlier, the bit after the line label is the syntax that's created) 20:28:37 <ehird> those continuations are useless 20:28:42 <ais523> ehird: why 20:28:51 <ehird> ais523: it's (call/cc (lambda (k) (set! .2 k)) 20:28:56 <ais523> INTERCAL doesn't have first-class functions, remember 20:28:57 <ehird> you need (call/cc (lambda (k) ...)) 20:29:00 <ehird> ais523: yes 20:29:03 <ehird> ais523: but 20:29:07 <ehird> just allow a check: 20:29:12 <ehird> 'have i just thawed out of a continuation?' 20:29:15 <ehird> if so, then ..., else ... 20:29:35 <ais523> I was planning to use the second arg for a check, the same way C does it with setjmp/longjmp 20:29:44 <ehird> ais523: then you can't recv some values 20:29:50 <ais523> so you get 0 if you are receiving from a continuation, and >0 otherwise 20:30:14 <ais523> ehird: first, you can't send a 0 in C either, and second, what's wrong with not being able to receive some values (remember this is INTERCAL we're talking about) 20:30:18 <ehird> 'get cont in .1 recv .2; if thawed? ...; else !!!' --> '(set! .2 (call/cc (lambda (k) (set! .1 k) !!!))) ...' 20:30:32 <ehird> ais523: first, C doesn't have continuations, and second I guess not but still.. 20:30:35 <ehird> 0 isn't an uncommon value. 20:30:40 <ais523> but maybe I should get it to ABSTAIN #1 FROM NEXTING instead as a notification 20:30:58 <ais523> in other words, if you've just thawed, turn off procedure calls until the user turns them back on 20:31:12 <ais523> that way you wouldn't need to do an if, you'd just do the call and if you'd just thawed, nothing would happen 20:31:18 <ais523> then you'd turn them back on on the next line 20:31:37 <ais523> that's more INTERCAL-style, I'll do that and it still has the same syntax 20:31:48 <ehird> ais523: you'll need closures 20:31:51 <ehird> hmm 20:31:51 <ehird> maybe not 20:32:03 <ehird> ais523: ah, wait 20:32:11 <ehird> ais523: it's useful for a continuation-using procedure to be able to return after a call/cc 20:32:16 <ehird> if you can just call a procedure it's not that useful 20:32:25 <ais523> ehird: but you can return 20:32:40 <ais523> why do you think you wouldn't be able to? 20:33:01 <ais523> in INTERCAL it's even possible to return from a different procedure than the one you're in at the moment, which causes hilarity to ensue 20:33:08 <ehird> ais523: oh, good. 20:33:14 <ehird> then you just have to return 2 levels down 20:33:18 <ehird> very good 20:33:19 <ais523> DO RESUME #2 20:33:31 <ehird> ais523: what's the syntax for intercal procedure calls? 20:33:36 <ais523> DO (1000) NEXT 20:33:49 <ais523> but the same syntax is also used for GOTOs 20:34:04 <ais523> you just have to discard the return address immediately afterwards with DO FORGET #1 20:35:00 <olsner> lol, ick and yuk 20:35:35 <ehird> ais523: what about a string with 'hello world' in it 20:35:37 <ehird> 100231238123 lines? ;) 20:35:57 <ais523> it's nontrivial, but I've got a copy lying around somewhere, I'll paste it if you like 20:36:25 <ehird> ais523: not a printing one 20:36:28 <ehird> i mean something i can give to a procedure 20:36:44 <ais523> ehird: I know 20:36:53 * ehird is thinking of a page that displays 'Hello, world!' and an OK box, then 'Goodbye, world!' and an OK box, then loops 20:36:54 <ehird> :D 20:36:57 <ehird> so, in pseudocode 20:37:11 <ehird> while 1: show_msg('Hello, world!'); show_msg('Goodbye, world!') 20:37:21 <ais523> DO;1<-#3 20:37:23 <ais523> DO;1SUB#1<-#48376$#10752 20:37:23 <ais523> DO;1SUB#2<-#28676$#2836 20:37:23 <ais523> PLEASE;1SUB#3<-#61120$#896 20:37:24 <ehird> where, of course, show_msg stores a continuation then kills off the current execution thread 20:37:38 <ehird> ais523: oh, that's not too bad 20:37:55 <ais523> (that's machine-generated of course, and is compressed as 4 bytes to the array element and so needs to be unpacked before printing) 20:43:48 <ais523> hmm... I need to generate unique numbers for each continuation 20:44:08 <ais523> that means storing the lowest unused number somewhere were it won't be affected by continuation resumes 20:44:15 <olsner> hmm, maybe intercal should have a module system for registering line numbers 20:44:22 <ais523> maybe I can store it in a separate thread 20:44:29 <olsner> or some kind of tree structure rather than line numbers at all 20:44:53 <ais523> olsner: we have something 'better', in a twisted sense of the word. Because all known INTERCAL programs are stored in the same place, you can just look at them and pick a line number that doesn't conflict 20:45:03 <ais523> however I admit that that isn't ideal 20:46:01 <ais523> ehird: correction, that Hello, world! string was obviously packed 8-to-the-element, or there's no way it would fit in just 3 elements 20:49:05 <ehird> ais523: ah 20:49:14 <ehird> ais523: maybe there should be a string library 20:49:15 <ehird> that lets you do that 20:49:16 <ehird> ;) 20:49:28 <ais523> ehird: generally we use yapp.i in the INTERCAL distribution 20:49:45 <ais523> it's a filter that reads in a string on stdin and outputs an INTERCAL program that prints that string on stdout 20:50:33 <ais523> you can then just extract the relevant parts, allowing for the Turing Tape pointer (that is, C-INTERCAL string I/O specifies characters to output as offsets mod 256 from the previous character output, so you need to keep a state variable to do I/O correctly) 20:51:44 <ehird> ais523: ah, but the concisity would help 20:51:51 <ehird> & the fact that it would be less manual 20:52:05 <ais523> ehird: yes, it would be useful to have a string library 20:52:22 <ais523> a program for producing packed strings, and subroutines for printing them 20:52:30 <ehird> ais523: well, printing them and unpacking them and.. 20:52:30 <ais523> maybe some things for input too 20:52:50 <ais523> extract individual characters, substring match... 20:52:56 <ais523> maybe even regexps while we're at it 20:58:36 <ehird> ais523: heh 21:01:26 * ais523 just found this in the Emacs changelog: "The old bindings C-M-delete and C-M-backspace have been deleted" 21:01:37 <ais523> I wonder how many people got caught out trying to use them before? 21:03:08 <SimonRC> lol 21:21:31 -!- ais523 has quit (""Going home""). 21:21:38 <pikhq> LMAO 21:22:45 <Sukoshi`> I use those bindings all the time! 21:23:51 <olsner> much simpler than good old M-x reboot and M-x kill-x-server 21:28:38 -!- RedDak has quit (Remote closed the connection). 21:29:59 <SimonRC> j0 21:38:41 * pikhq mutters at #gsoc 21:38:56 <pikhq> There may or may not be a deadline extension for Google Summer of Code applications. 21:39:29 <SimonRC> hm 21:43:25 <olsner> "may or may not"? what's the use of having that information? 21:43:41 <pikhq> olsner: None. 21:43:48 <pikhq> It's just irritating as fuck. 21:44:03 <pikhq> The deadline, BTW, is tomorrow. 21:44:09 <pikhq> (5:00 PST) 21:44:25 <slereah_> olsner: Maybe you're an intuitionist, and doesn't believe in the excluded middle :o 21:44:32 <slereah_> So there's a third option or something 21:45:53 <olsner> ah yes, a v \+a /= T if the middle is not excluded 21:47:38 -!- slereah_ has quit ("Konversation terminated!"). 22:07:50 -!- RedDak has joined. 22:21:39 -!- RedDak has quit (Remote closed the connection). 22:33:00 -!- ehird has changed nick to ehirDoxCoding. 22:33:17 -!- ehirDoxCoding has changed nick to ehird. 22:37:51 <wildhalcyon> Hmm, people aren't warming up to my idea 22:37:53 <wildhalcyon> :-( 22:38:22 <ehird> what was it 22:39:10 <wildhalcyon> http://www.osdev.org/phpBB2/viewtopic.php?t=16641&sid=fc48cb502be44b2cb268e10886963cb7 22:39:26 <wildhalcyon> You can ignore the session id I suppose 22:39:31 <ehird> osdev.org? neat 22:40:17 <wildhalcyon> yeah, its a neat site 22:40:39 <ehird> i know it 22:43:09 <wildhalcyon> It seems like there's some people who just don't get my idea, and some people who don't think its worthwhile. No one says "Hmm, that might have real-world applicability!" 22:44:20 <ehird> wildhalcyon: it seems to be a good debate 22:44:27 <ehird> wildhalcyon: but your idea has no real-world applicability 22:44:29 <ehird> that is true 22:44:33 <wildhalcyon> Its a great debate, actually. 22:44:33 <ehird> interesting in theory 22:45:01 <wildhalcyon> "interesting" is the best response I've received so far. 22:47:21 <SimonRC> Surely this is not for Real World systems but is supposed to be esoteric? 22:47:29 <ehird> SimonRC: I sure hope so 22:48:21 <wildhalcyon> Well, its not meant to be quite as esoteric as you might think. 22:48:51 <wildhalcyon> Remove the 2D spatial programming language (fungeoid) and replace it with something more conventional. That's really the only esoteric part about it 22:49:04 <ehird> http://www.osdev.org/phpBB2/viewtopic.php?t=16587 lollynoob is more like lollyidiot 22:49:05 <ehird> :p 22:51:49 <ehird> wildhalcyon: Dex is funny 22:52:09 <ehird> did you see when he left the forum dramatically and said he was going to get rich from a web os? 22:52:34 <wildhalcyon> The problem is that lollynoob starts with a bad argument, makes a good point, then screws up with the rest of it. 22:52:50 <wildhalcyon> Who is dex? 22:53:24 <ehird> wildhalcyon: osdev.org user 22:53:45 <wildhalcyon> I haven't seen anything of him. But I just joined the site this week 22:55:04 <ehird> wildhalcyon: I visited the old osdev.org a few times 22:55:36 <ehird> it was a forum on mega-tokyo.com: http://www.mega-tokyo.com/forum/ 22:55:46 <ehird> which also housed stuff for agi development 22:55:55 <ehird> (agi = sierra adventure game engine) 22:56:00 <wildhalcyon> ehird, it seems like it has potential, but I don't know if OS development is quite the right forum for this anyways 22:56:30 <ehird> & the best users on osdev.org are the ones from mt 22:56:34 <ehird> Brendan, etc 22:56:51 <wildhalcyon> Im starting the idea off as a simulation anyways. gamedev.net is probably better suited. 23:22:17 -!- Sukoshi` has changed nick to Sukoshi. 23:26:43 -!- jix has quit ("CommandQ"). 23:41:50 -!- timotiis has quit ("leaving"). 2008-03-31: 00:52:05 -!- ihope__ has joined. 00:52:07 -!- ihope__ has changed nick to ihope. 01:02:32 -!- cherez has joined. 01:10:08 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 01:22:02 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]"). 01:52:54 -!- EgoBot has joined. 02:07:44 -!- vixey has joined. 02:14:01 -!- Sukoshi has quit ("Leaving"). 02:17:09 -!- ihope__ has joined. 02:24:33 -!- Tritonio__ has joined. 02:24:47 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)). 02:25:30 <oklopol> okokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokoko 02:25:35 <oklopol> okokokokokokokokokokoko 02:25:37 <oklopol> that is all 02:26:26 <vixey> ok 02:27:40 <ehird> oklopol: oko 02:34:44 -!- ihope has quit (Read error: 110 (Connection timed out)). 02:53:24 -!- Tritonio_ has joined. 02:53:51 -!- Tritonio__ has quit (Read error: 104 (Connection reset by peer)). 03:00:47 <ihope__> ehird: I agree. 03:13:00 <vixey> what language is it that takes the fewest line to write a mini-schime, prolog, mini-haskell and metainterpreter in? 03:13:18 <vixey> I want to mimimize the sum of lines of code of all those programs 03:14:19 <vixey> (level of abstraction of the metainterpreter would be that it actually describes every feature of the language, doesn't just call eval or whatever) 03:14:28 -!- ehird has quit ("Konversation terminated!"). 03:14:32 <vixey> right now I am guessing Scheme 03:15:06 -!- ihope___ has joined. 03:15:08 -!- ihope___ has changed nick to ihope. 03:26:49 <oklopol> oklotalk! 03:27:34 <vixey> **which have an actual implementation 03:27:59 <oklopol> oklotalk has an implementation! 03:28:03 <oklopol> well, almost 03:28:05 <oklopol> :D 03:28:13 <oklopol> it doesn't have a parser 03:28:20 <oklopol> maybe some day... 03:30:22 -!- atsampson has quit (Read error: 113 (No route to host)). 03:35:58 -!- ihope__ has quit (Read error: 110 (Connection timed out)). 03:58:54 <lament> vixey: i'm guessing scheme too 03:59:36 <lament> because of the metainterpreter part 04:01:14 <RodgerTheGreat> vixey: Scheme sounds like a good theory, but it might be more interesting to design a language with creating these types of interpreters in mind 04:04:51 <lament> RodgerTheGreat: haskell :) 04:07:32 <lament> scheme is pretty much designed for that 04:07:51 <lament> except instead of "interpreters", it's designed to extend scheme itself to become any of those languages 04:35:53 <vixey> ok 04:35:53 <vixey> http://rafb.net/p/dT236x14.txt 04:35:56 <vixey> idea.. 04:36:22 <vixey> it's scheme and prolog like, 'function' calls can return multiple times and backtrack but they also return values (loose use of 'return' since you could often supply the return value of a function to generate its parameters like in any logic language) 04:36:43 <lament> and i have to add that mandolin is a really awesome instrument 04:36:49 <lament> (to play) 04:40:09 <vixey> any remarks? 04:40:20 <lament> your scheme is very simple :) 04:40:29 <lament> and you kinda need to parse stuff 04:40:38 <lament> or it's cheating! 04:40:45 <vixey> oops there is at least one mistake, I meant to write (conj (= #t result) (eval this env)) 04:42:24 <vixey> if I was going to tack on a parser the language would have to support strings.. 04:42:48 <vixey> I guess syntax sugar for lists of atoms it ok 04:43:04 <vixey> is* 04:53:24 <lament> sure 05:09:11 <RodgerTheGreat> vixey: nifty 05:11:16 <RodgerTheGreat> what flavor of scheme is that written for? MzScheme? 05:11:43 <vixey> none really 05:11:56 <RodgerTheGreat> r5s5? 05:12:42 <vixey> well it would hopefully be a subset of macroexpanded R5RS 05:37:49 <RodgerTheGreat> this is really interesting: http://www.firstsounds.org/sounds/ 06:41:00 <RodgerTheGreat> good night everyone 06:41:08 <vixey> night 06:41:33 -!- RodgerTheGreat has quit. 07:13:16 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- Judofyr has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- oklopol has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- Deformative has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- Quendus has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- olsner has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- SimonRC has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- cmeme has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- EgoBot has quit (brown.freenode.net irc.freenode.net). 07:13:16 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- cherez has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- pikhq has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- vixey has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- sebbu has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- lament has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- Overand has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- ihope has quit (brown.freenode.net irc.freenode.net). 07:13:17 -!- mtve has quit (brown.freenode.net irc.freenode.net). 07:14:00 -!- ihope has joined. 07:14:00 -!- Tritonio_ has joined. 07:14:00 -!- vixey has joined. 07:14:00 -!- EgoBot has joined. 07:14:00 -!- cherez has joined. 07:14:00 -!- sekhmet has joined. 07:14:00 -!- pikhq has joined. 07:14:00 -!- Judofyr has joined. 07:14:00 -!- oklopol has joined. 07:14:00 -!- Deformative has joined. 07:14:00 -!- bsmntbombdood has joined. 07:14:00 -!- sebbu has joined. 07:14:00 -!- lifthrasiir has joined. 07:14:00 -!- olsner has joined. 07:14:00 -!- Overand has joined. 07:14:00 -!- AnMaster has joined. 07:14:00 -!- SimonRC has joined. 07:14:00 -!- Quendus has joined. 07:14:00 -!- GregorR has joined. 07:14:00 -!- cmeme has joined. 07:14:00 -!- lament has joined. 07:14:00 -!- tejeez has joined. 07:14:00 -!- Deewiant has joined. 07:14:00 -!- mtve has joined. 07:41:20 -!- atsampson has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:04:21 -!- GreaseMonkey has joined. 08:17:17 -!- Judofyr_ has joined. 08:17:17 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 08:50:35 -!- olsner has quit ("Leaving"). 08:57:06 -!- EgoBot has quit (brown.freenode.net irc.freenode.net). 08:57:06 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 09:09:32 -!- EgoBot has joined. 09:09:40 -!- sekhmet has joined. 09:11:56 -!- EgoBot has quit (Read error: 110 (Connection timed out)). 09:12:56 -!- EgoBot has joined. 09:18:37 -!- sekhmet has quit (brown.freenode.net irc.freenode.net). 09:19:22 -!- sekhmet has joined. 09:44:55 -!- GreaseMonkey has quit ("gnihgt"). 10:41:36 <AnMaster> Deewiant, was just implementing FPSP, and the mycology output is confusing 10:41:45 <AnMaster> "UNDEF: cFP outputs never mind, BAD: P reflects" 10:41:50 <AnMaster> that's all from FPSP atm 10:51:32 <Deewiant> that's the way it has to be done 10:51:36 <Deewiant> with all output instructions 10:51:49 <Deewiant> i.e. first output "UNDEF: cFP outputs" 10:51:52 <Deewiant> and then call P 10:52:02 <Deewiant> and then if it outputs, it outputs what it outputs 10:52:12 <Deewiant> but if it reflects, "never mind, BAD: P reflects" 10:54:06 -!- Judofyr has joined. 10:54:06 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)). 11:54:08 -!- vixey has quit ("Leaving"). 13:14:54 -!- ihope has quit (Read error: 110 (Connection timed out)). 14:14:10 -!- RodgerTheGreat has joined. 14:14:24 <RodgerTheGreat> 'morning, everyone 14:26:31 -!- jix has joined. 14:26:43 <RodgerTheGreat> hey, jix 14:33:06 <jix> hey 14:46:44 -!- ais523 has joined. 14:52:28 <oklopol> mörning 14:52:43 <RodgerTheGreat> howdy oklopol, ais523 14:52:50 <ais523> hi RodgerTheGreat 14:53:19 * ais523 did finish that INTERCAL continuation library that was being discussed yesterday 14:53:37 <ais523> at about 6am this morning, because I couldn't sleep and started working on it again at about 5am 14:55:00 <AnMaster> Deewiant, the issue was "cFP outputs never mind" 14:55:12 <AnMaster> Deewiant, what did it say "never mind" or ? 14:55:31 <AnMaster> it was confusing 14:56:07 <AnMaster> maybe a comma before never mind would help with grammer ;) 14:57:11 <RodgerTheGreat> "grammar" 14:57:54 <ais523> AnMaster: what licence is cfunge under? 14:58:23 <ais523> I ask because I have an INTERCAL/Befunge link-together in mind as the next thing to do now I have INTERCAL/C 14:58:41 <ais523> although writing COME FROMs in Befunge would be a little strange 14:59:43 <ais523> as far as I can tell, you'd have to have them read their arguments from the playfield rather than the stack 15:03:18 -!- marshmallows has joined. 15:14:52 <AnMaster> ais523, GPL3 15:15:03 <ais523> ah, OK 15:15:09 <AnMaster> ais523, is it a problem? 15:15:19 <ais523> C-INTERCAL is GPL2 15:15:23 <ais523> but that's not really a problem 15:15:29 <AnMaster> not "2 or later"? 15:15:34 <ais523> 2+, sorry 15:15:38 <AnMaster> right 15:15:47 <AnMaster> ais523, well, it is also C99 15:15:56 <ais523> yes, that could also be a problem 15:15:57 <AnMaster> so not sure how well it would work on old systems 15:16:09 <AnMaster> ais523, it currently uses boehm-gc but it is not hard to change that 15:16:09 <ais523> if you use VLAs then it would be right out, because C-INTERCAL doesn't like linking to them 15:16:38 <AnMaster> ais523, I don't use VLA I think, but I use "dynamic sized array at end of struct" 15:16:50 <AnMaster> which is a bit different 15:16:53 <ais523> that shouldn't be a problem as long as you're storing them on the heap 15:17:07 <AnMaster> ais523, well yes I malloc them 15:17:13 <ais523> it's just that C-INTERCAL does crazy stack tricks to to handle communication between processes 15:17:26 <ais523> so you can do just about anything you like on the heap, but you have to be a lot more careful on the stack 15:17:32 <AnMaster> well I do push some structs on stack 15:17:51 <AnMaster> ie, returning a struct, not a reference to one in one place 15:18:19 <ais523> that's fine, as long as they're fixed-size 15:18:25 <ais523> and you don't leave them there too long 15:18:39 <ais523> (as in, you don't try to FORGET stack elements with useful data still in them) 15:18:49 <AnMaster> ais523, well also you will need to fix a few mem leaks, while I do offer a way to compile without boehm-gc, I only use it to be able to run valgrind for detecting stuff like "invalid read" 15:19:01 <AnMaster> it does have a few mem leaks without boehm-gc 15:19:11 <AnMaster> patches are welcome of course 15:19:14 <ais523> C-INTERCAL's compiler is full of memleaks, but the programs it produces are leak-free as far as I can tell 15:19:40 <AnMaster> ais523, basically it allocates cells in chunks for fungespace, but it throws away references to old chunks 15:20:03 <AnMaster> depending on the garbage collector to remove them if/when the chunk is no longer used 15:20:13 <ais523> would refcounting work? 15:20:27 <AnMaster> ais523, well boehm-gc is a mark-and-sweep 15:20:28 <ais523> (in INTERCAL, the garbage-collector actually affects the semantics of the language) 15:20:47 <ais523> AnMaster: I know, I was just wondering if it was a simple enough problem that refcounting would work instead 15:20:58 <AnMaster> ais523, maybe 15:20:59 <ais523> or whether you have more complicated problems like circular dependencies 15:21:44 <AnMaster> ais523, anyway the funge-space stuff is one of the few thing with a good abstraction around, so should be possible to just replace it, with something else implementing the same basic stuff 15:22:14 <AnMaster> ie, get/set cell, load file, write out to file, get bounds, do wrapping 15:22:39 <ais523> as for how an INTERCAL/Befunge link would work from the Befunge end, I've so far been doing links by implementing INTERCAL flow control operations 15:22:50 <AnMaster> ais523, until recently I even had two different versions, one for befunge93 that used a static array and one with hash library for befunge98 15:22:52 <ais523> that's NEXT, NEXT FROM, COME FROM, RESUME, and FORGET 15:23:08 <AnMaster> ais523, fingerprints are easy to code I think 15:23:10 <AnMaster> or hope 15:23:10 <ais523> some of them would be easy to implement with a fingerprint; COME FROM and NEXT FROM would be harder 15:23:16 <AnMaster> tell me if I need to write more docs 15:23:25 <ais523> because they have an effect even when the IP isn't there 15:23:35 <AnMaster> ais523, I do plan loading of fingerprints with dlopen in future 15:23:39 <AnMaster> to make it even easier 15:23:44 <AnMaster> currently just must compile it in 15:24:09 <AnMaster> also, I depend on POSIX, I don't think it would run under windows or such 15:24:09 <ais523> heh, all the INTERCAL expansions are compile-in, so you'd have to hack the source code to anything you wanted to compile into it anyway 15:24:19 <ais523> either that, or abstract main() away to be a small part of the program 15:24:23 <AnMaster> last I tried it *did* run under freebsd 15:24:40 <AnMaster> ais523, well main, for correct funge98 I need argc/argv 15:24:41 <ais523> (because C-INTERCAL deletes main()s in programs it links against because it already has its own) 15:24:46 <AnMaster> due to y (sysinfo) 15:24:59 <ais523> AnMaster: you can store them in globals 15:25:05 <AnMaster> ais523, I do, in main 15:25:12 <ais523> I'll gladly try to work out a way to pass command-line args around 15:25:31 <AnMaster> ais523, well command line arguments for interpreter options too 15:25:54 <AnMaster> ais523, oh and you probably want to remove -fvisibility=hidden heh that I got in my cmake file for levels above DEBUG 15:26:18 <ais523> AnMaster: what does that do? 15:26:25 <AnMaster> ais523, man gcc? ;P 15:26:35 <AnMaster> basically it hides symbols 15:26:40 <AnMaster> to reduce file size 15:26:45 <ais523> AnMaster: have you seen how long man gcc is? I'll try to find it in the info index, though 15:26:53 <AnMaster> ais523, / searches in man page 15:26:55 <AnMaster> man gcc 15:26:56 <AnMaster> type: 15:27:02 <AnMaster> /-fvisibility 15:27:09 <AnMaster> press n for next match 15:27:09 <AnMaster> :) 15:27:13 <AnMaster> ais523, wait, I *may* do VLA in one place 15:27:15 * AnMaster looks 15:27:45 <AnMaster> ais523, oh yes, but can be worked around quite easily 15:27:49 <AnMaster> just used inside one function 15:27:55 <AnMaster> not passed around or anything 15:28:12 <AnMaster> http://rafb.net/p/hlgy6w58.html 15:28:23 <ais523> AnMaster: in that case it's probably OK 15:28:51 <AnMaster> ais523, also non-boehm-gc code may be suboptimal in places 15:29:09 <AnMaster> http://rafb.net/p/IbsRCM89.html 15:29:11 <AnMaster> that is one example 15:29:38 <ais523> AnMaster: that VLA's fine 15:29:38 <AnMaster> ec_cord is a string that is very fast to append do, provided with boehm-gc 15:29:54 <ais523> how much storing things in globals do you do, by the way, and how much on the stack? 15:30:21 <AnMaster> ais523, well not globals, mostly static, and that isn't global 15:30:35 <ais523> statics are heap storage, so that's good enough 15:30:44 <ais523> well, not exactly heap, but not stack either 15:30:46 <AnMaster> ais523, but well store depends on what you mean, ie storing a pointer to a HUGE object in a static variable 15:30:52 <ais523> I think they have their own static space 15:30:54 <AnMaster> like the funge space 15:31:08 <ais523> and the issue for C-INTERCAL linking is a very simple stack vs. not stack 15:31:21 <ais523> because I merged the C and INTERCAL call stacks together into one massive confusing stack 15:31:25 <AnMaster> if you want to have several funge programs at once you need some substantial redesign 15:31:33 <AnMaster> as in different funge spaces 15:31:40 <AnMaster> if you just want concurrent funge that works of course 15:32:12 <AnMaster> ais523, also I'm working on a draft for a debugging protocol 15:32:20 <AnMaster> would be all ifdef anyway 15:32:23 <AnMaster> for speed 15:32:43 <ais523> the INTERCAL debugger is linked into the object program, which has function calls to the debugger added by the compiler 15:32:55 <ais523> it was the strangest way I could think of to do it while still being practical 15:33:03 <AnMaster> nah I would use tcp socket or unix socket to talk to the debugger 15:33:11 * AnMaster looks for the first (now outdated) draft 15:33:16 <AnMaster> the second isn't yet redy 15:33:26 <AnMaster> http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf 15:33:52 <AnMaster> oh and another thing 15:34:20 <AnMaster> I plan so substantial redesign of interface in the near future, ie parameter order, to make it more unified 15:34:44 <AnMaster> atm I think StackPush(value, stackpointer) other things take the "me" pointer first 15:34:49 <AnMaster> so I plan to clean that up 15:34:54 <ais523> I'll leave it for a while, anyway, because there's going to be a major release of C-INTERCAL tomorrow 15:35:01 <AnMaster> cool 15:35:02 <ais523> April 1 is a good day to release INTERCAL compilers on 15:35:07 <AnMaster> ais523, note I don't know intercal at all heh 15:35:16 <ais523> partly because nobody believes you until they've seen the code 15:35:18 <AnMaster> well beoynd that you use PLEASE a lot 15:35:22 <ais523> not a lot 15:35:26 <ais523> 1/4 of the time, on average 15:35:30 <AnMaster> but not to much 15:35:50 <AnMaster> ais523, not sure how you plan the integration thing? 15:35:55 <AnMaster> that is how it would work? 15:36:09 <ais523> basically, you add INTERCAL control flow operators as a loaded-by-default fingerprint 15:36:20 <ais523> (the loaded-by-default is so that you can access the Befunge code at all) 15:36:28 <AnMaster> hm 15:36:45 <ais523> there are 6 main control flow commands/objects/etc that you need to implement 15:36:49 <AnMaster> well loaded by default, won't be in my code, but I guess you can implement that yourself 15:37:04 <ais523> AnMaster: yes, it would be a compiler-specific addition 15:37:10 <AnMaster> interpreter 15:37:19 <AnMaster> there is no way you can sanely compile befunge 15:37:38 <ais523> AnMaster: C-INTERCAL is always compiled, but I was planning to go along the bundle-an-interpreter route 15:37:49 <AnMaster> ok 15:37:58 <AnMaster> oh and don't break mycology ;P 15:38:26 <ais523> it shouldn't do, unless it checks for reflections with no fingerprints loaded, but I'm deliberately breaking the spec there 15:38:34 <AnMaster> aye it does check that iirc 15:38:40 <ais523> just like I had to invent some new syntax for the C to INTERCAL link 15:38:50 <AnMaster> mhm 15:39:01 <ais523> besides, I could always invent some sort of specifically-fooling-Mycology loader problem 15:39:07 <ais523> s/problem/program/ 15:39:27 <ais523> anyway, the six commands that would need implementing: 15:39:33 <AnMaster> ais523, anyway I'll aim for free standing code to work well, don't blame me if a new feature I add break stuff for you 15:39:35 <AnMaster> just a warning ;P 15:39:41 <ais523> - line label, which is easy in most languages but much harder in Befunge 15:39:48 <ais523> AnMaster: I don't mind at all 15:39:55 <ais523> even I often add new features that break stuff for me 15:39:59 <AnMaster> ais523, also, I do stuff like 15:40:00 <AnMaster> #define VectorCreateRef(a, b) (& (fungeVector) { .x = (a), .y = (b) }) 15:40:10 <AnMaster> then I can create a vector on stack in the parameter list 15:40:17 <AnMaster> no idea if that feature would break intercal? 15:40:21 <ais523> doubt it 15:40:31 <ais523> as long as it doesn't stay there between commands 15:40:47 <AnMaster> um, well you would need to hack the main loop anywya 15:40:49 <AnMaster> anyway* 15:40:58 <AnMaster> interpreter.c 15:41:08 <AnMaster> though interpreter.c contains mor 15:41:09 <AnMaster> more* 15:42:44 <ais523> if you want to see some never-before-seen won't-even-run-on-released-compilers-yet INTERCAL, there's http://filebin.ca/xwthjm/continuation.i which is one of the example programs I'll be releasing tomorrow 15:43:09 <AnMaster> um 15:43:17 <AnMaster> hm 15:43:21 <AnMaster> what is it highlightning it as 15:43:38 -!- ehird has joined. 15:43:45 <AnMaster> Database/Progress? 15:43:49 * AnMaster pokes kate 15:44:02 <ais523> AnMaster: Kate recognises INTERCAL as some sort of obscure database script 15:44:11 <ais523> ehird: http://filebin.ca/xwthjm/continuation.i 15:44:16 <ais523> continuations in INTERCAL 15:44:35 <ais523> (the Wikipedia article example doesn't work because it assumes interactive input of commands, impossible in a compiled language) 15:44:35 <AnMaster> bbl food 15:44:44 -!- ehird has quit (Read error: 104 (Connection reset by peer)). 15:44:56 -!- ehird has joined. 15:44:57 <ais523> oh dear, I scared away ehird 15:45:22 <ehird> sowwy 15:45:24 <ehird> :p 15:45:29 <ehird> this is the lame computer 15:45:31 <ehird> the crashy one 15:45:38 <ehird> takes a few startups to get going.. 15:46:14 <ais523> ehird: did you see the link I posted? 15:46:53 <ehird> ais523: no, checknig logs now 15:48:22 <ehird> ais523: heh, at 6am... 15:48:31 <ehird> i have finished software projects at 8am 15:48:34 <ais523> I couldn't sleep last night, so I spent the time doing something useful 15:48:37 <ehird> having started working on them 2pm the earlier day 15:48:42 <ais523> I was trying to sleep from about 1am to 5am, though 15:48:44 <ehird> with no sleep in between, of course :-) 15:48:57 <ehird> actually, that's pretty much the only software i DO finish 15:50:01 <ehird> ais523: suggestion - use boehm gc in C-INTERCAL's compiler (not the output) 15:50:03 <ehird> gcc does that 15:50:11 <ehird> but, still keep using free() (well, the gc equivs) 15:50:16 <ehird> it's just there to tidy up every now and then 15:50:18 <ehird> seems to work well in gcc 15:50:32 <ais523> ehird: I can't think of any particular reason why it's leaking, probably just oversights every now and again 15:50:45 <ais523> and the fact that the memory allocation pattern is so complex that Splint can't follow it 15:52:01 <ehird> because i was up late yesterday and the clock said 31st 15:52:08 <ehird> when i woke up today i thought it was internet jackass day 15:52:12 <ehird> i was sorely disappointed 15:53:17 <ais523> ehird: that's tomorrow, which is statistically the most likely day for an INTERCAL compile to be released on 15:53:25 <ais523> mostly because we keep aiming for it deliberately 15:53:32 <ehird> ais523: bah, but that's being KIND on internet jackass day 15:53:40 <ehird> or maybe an intercal compiler is in fact a very horrible thing to give 15:53:41 <ehird> probably. 15:53:45 <ais523> ehird: what's wrong with a little kindness? 15:54:47 <ehird> ais523: insert grouchy commnet 15:54:48 <AnMaster> ais523, that http://filebin.ca/xwthjm/continuation.i 15:54:50 <ehird> *comment 15:54:53 <AnMaster> don't really understand it 15:55:01 <ais523> I doubt many people do 15:55:03 <ehird> AnMaster: INTERCAL code is not easily understandable! Suprise! 15:55:07 <AnMaster> ais523, btw where does C-INTERCAL have it's svn/cvs/whatever? 15:55:11 <ais523> AnMaster: it doesn't 15:55:15 <ais523> I don't own a web server 15:55:20 <AnMaster> oh? cathedral? 15:55:22 <ehird> ais523: you don't need a web server for a distributed system ;) 15:55:30 <ais523> AnMaster: yes, it's cathedral at the moment 15:55:37 <ehird> 'git/hg/darcs init', 'git/hg/darcs add ...' 15:55:49 <ais523> ehird: I don't even have an Internet connection most of the time 15:55:50 <AnMaster> ais523, try lauchpad for bzr, I think there exist similar got git and hg 15:55:58 <ehird> ais523: all of those need no internet connection 15:56:15 <ehird> ais523: they're 100% offline unless you tell them to push/pull 15:56:20 <ais523> the other thing is that I like to do massive breaking changes 15:56:28 <ehird> ais523: that's why branches were invented 15:56:29 <ais523> such as renaming all the variables in the entire program 15:56:34 <AnMaster> ais523, yes that works well with distributed version control 15:56:39 <ehird> make a new branch 'rename-all-variables' 15:56:42 <ehird> do it 15:56:49 <ehird> keep making changes in the main branch if you want 15:56:49 <AnMaster> ais523, yes something like that is what is happening in cfunge atm 15:56:50 <ehird> finally, merge it 15:56:58 <ehird> mostly the VCSs can merge all the changes together 15:57:04 <ais523> can merge algorithms really handle that sort of change? 15:57:11 <AnMaster> ais523, more or less yes 15:57:13 <ehird> ais523: more or less 15:57:17 <ehird> it will come into conflicts ofc 15:57:21 <AnMaster> ais523, maybe a few conflicts 15:57:23 <AnMaster> not much 15:57:24 <ehird> but it can start up a nice graphical tool to let you select what you want 15:57:32 <ehird> so it's mostly point-n-click for when it can't work it out 15:57:36 <ais523> do any of them also run on DOS? 15:57:41 <AnMaster> -_- 15:57:47 <ais523> I do development there too, for the Windows version of C-INTERCAL 15:57:52 <ehird> ais523: git runs via cygwin but i don't think cygwin runs on DOS 15:57:56 <ehird> I think darcs might run on DOS 15:58:04 <ehird> hg is written in Python, so if you can get a Python to run on DOS it's likely 15:58:08 <ais523> (targetting DOS + POSIX manages to cover most of the world's commonly used OSs) 15:58:09 <AnMaster> ehird, doesn't darcs need haskell? 15:58:19 <ehird> AnMaster: You can cross-compile 15:58:23 <AnMaster> hm 15:58:23 <ehird> Or get a binary 15:58:24 <ais523> AnMaster: Haskell can be compiled into C IIRC 15:58:29 <ehird> ais523: Into C? no 15:58:32 <ehird> haskell isn't interpreted 15:58:37 <ehird> There are interpreters, but it's mainly compiled to native code 15:58:45 <ehird> Most things use GHC extensions, including darcs. 15:58:49 <ehird> GHC compiles into native code via C-- 15:58:54 <ehird> (C-- is related to the GHC project, same people) 15:58:58 <ais523> ah, so it's bundle-an-interpreter-style compilation 15:59:03 <ehird> ais523: Uhh, no? 15:59:06 <ehird> Haskell has no 'eval' 15:59:08 <ehird> It is 100% compiled 15:59:18 <ais523> ehird: bytecode interp, not Haskell interp? 15:59:19 <ehird> It just seems dynamic because of all the type inferrence 15:59:27 <ehird> ais523: No. C-- then compiles to native code 15:59:37 <ais523> OK 15:59:39 <ehird> Haskell -> Core (GHC's internal functional language) -> C-- -> native 15:59:44 <ais523> that's how I thought it worked, but you were confusing me 15:59:50 <ehird> sorry:) 15:59:56 <marshmallows> GHC can generate C code 15:59:58 <ehird> i'll go and ask in #haskell about darcs 16:00:00 <ehird> marshmallows: If you tell it to 16:00:05 <ehird> Funny thing about GHC's C backend: 16:00:09 <ehird> It requires a perl script. 16:00:19 <ehird> This perl script looks at the assembly output of ghc, and turns tail calls into JMPs 16:00:28 <marshmallows> cool 16:00:30 <ehird> This perl script is a 'literate perl' script 16:00:38 <ehird> And has to be processed to remove the comments. 16:00:42 <AnMaster> oh my 16:00:43 <ehird> It is called the Evil Mangler. 16:00:44 <ais523> =pod 16:00:45 <ais523> =cut 16:00:49 <ehird> ais523: No, it's custom 16:00:53 <AnMaster> ehird, Knuth infected? 16:00:56 <AnMaster> ;) 16:00:58 <ais523> why not do it the standard way? 16:01:01 <ehird> AnMaster: Literate Haskell is popular 16:01:09 <ehird> ais523: because it's Evil, and iirc very old 16:01:10 <AnMaster> yes I like LaTeX, but I don't like literate programming 16:01:22 <ehird> GHC was around before the Monad typeclass came about. 16:01:24 <marshmallows> That's totally awesome ehird 16:01:35 <ehird> There's even GHC code which uses monads without using the Monad typeclass because it wasn't invented yet 16:01:38 <marshmallows> I never knew the evil mangler was in perl 16:01:53 <ehird> ais523: Those continuations are really concise, btw. Impressive. 16:02:03 <ehird> INTERCAL: Flexible, and concise1 16:02:04 <ehird> *! 16:02:08 <ehird> it's like Lisp++++ 16:02:29 <ais523> ehird: especially as CREATE has some similarities to macro definition, but the C-INTERCAL version is rather limited at the moment 16:02:51 <ehird> [16:02] <Lycurgus> "DOS" ? 16:02:52 <ehird> [16:02] <Lycurgus> do you mean Windows? 16:03:00 <ehird> ais523: which DOS version? 16:03:15 <ais523> I mainly test it on NTVDM, as that's where it'll be run in practice 16:03:21 <AnMaster> um 16:03:28 <ais523> although I have DOS system disks for versions 4 and 6 knocking around somewhere 16:03:35 <ais523> AnMaster: yes, NTVDM is crap 16:03:51 <AnMaster> I got to watch the fun, going to join #haskel 16:03:57 <AnMaster> ll* 16:04:01 <ais523> for some reason, tar crashes it 100% of the time and autoconf crashes it about 30% of t he time 16:04:01 <ehird> ais523: these people are retarded 16:04:02 <ehird> [16:03] <quicksilver> he's talking about the windows command shel 16:04:21 * AnMaster watches both side with amusement 16:04:30 <AnMaster> ais523, you know NTVDM is gone in 64-bit windows 16:04:39 <ais523> does anything replace it? 16:04:42 <ehird> AnMaster: ais523 still supports systems with 8mb of ram. 16:04:48 <ehird> I don't think 64-bit is on the horizon ;) 16:05:01 <AnMaster> ais523, no x86_64 system that has gone into 64-bit mode can run 16-bit code any longer 16:05:06 <AnMaster> you need something like dosbox then 16:05:07 <ais523> I've heard that the Vista version of NTVDM is actually better than the XP version, but have never had the opportunity or inclination to check 16:05:36 <AnMaster> ais523, oh and that reminds me, cfunge by default use 64-bit integers for it's data 16:05:43 <AnMaster> but you can select 32-bit at compile time 16:05:48 <AnMaster> it need to be at least 32-bit 16:05:53 <AnMaster> or stuff *WILL* break 16:06:11 <AnMaster> fingerprints will fail and everything will come crashing down 16:06:14 <ais523> of course 16:06:27 <ais523> In unrelated news, I've actually read the API for DOS 1 16:06:30 <AnMaster> I have toyed with the idea of 128 bits however 16:06:32 <ais523> it didn't even support directories 16:06:38 <AnMaster> using gcc __int128_t iirc 16:06:44 <AnMaster> haven't tried it yet 16:06:47 <AnMaster> but easy to test 16:07:02 <ehird> oh well.. 16:07:04 <ehird> darcs is out of the qusetion 16:07:06 <ehird> ais523: Try git. 16:07:12 <ehird> AnMaster: Before you but in.. 16:07:18 <ehird> I don't think your precious bzr works on 16bit systems. 16:07:28 <AnMaster> I was going to say git works on DOS 16:07:32 <AnMaster> doesnt'* 16:07:38 <ehird> i think you could get it to 16:07:38 <AnMaster> it hardly works on windows 16:07:40 <ehird> through some posix stuffs 16:07:42 <AnMaster> so dos... 16:07:44 <AnMaster> huh 16:07:48 <ehird> hmm wait 16:07:51 <ehird> I'm going to try python 16:07:56 <ehird> and ask which version of python will run on DOS 16:08:01 <ehird> #python for laffs 16:08:10 <ais523> DJGPP generally does a very good job of pretending to be POSIX, given the circumstances it has to deal with 16:08:17 <ehird> ais523: wait, that's a good point 16:08:28 <ehird> ais523: http://git.or.cz/ maybe you could give it a try 16:08:28 <ais523> although I recently discovered that ulimit is implemented the same way as fork 16:08:44 <ais523> as in, always fail but with a plausible error message that /could/ have happened in practice 16:09:19 <ehird> ais523: btw, git is a little lower level as far as merging goes 16:09:21 <AnMaster> hm can't you compile haskell to C, and I'm quite sure GCC can compile to 16-bit, I even used gcc for 8-bit 16:09:22 <AnMaster> ehird, ^ 16:09:27 <ehird> it WILL do the auto merging thing 16:09:36 <ehird> but if it fails you'll have to start the graphical tool yourself 16:09:37 <ehird> :p 16:09:55 <AnMaster> ehird, graphical tool? dos? 16:09:58 <ehird> AnMaster: but the generated c code won't work .. 16:10:00 <AnMaster> ERR_NOTREALISTIC 16:10:05 <ehird> AnMaster: Uhm, he doesn't develop solely on DOS 16:10:10 <AnMaster> ehird, oh, why won't it work? 16:10:18 <ehird> AnMaster: because it's low-level :) 16:10:25 <ehird> closures and thunks and all that mean it's pretty hack 16:10:26 <ehird> y 16:10:29 <AnMaster> you mean, depends on endianness? 16:10:30 <AnMaster> and such? 16:10:39 <ehird> oh looky.. 16:10:42 <ehird> darcs WILL work, probably 16:10:44 <ehird> via go32 16:10:51 <AnMaster> go32? 16:10:58 <ais523> DOS 32-bit extender 16:11:00 <AnMaster> is this about unreal mode hack thing? 16:11:04 <ais523> yes 16:11:08 <AnMaster> oh my 16:11:09 <ais523> it makes I/O incredibly slow 16:11:09 <ehird> AnMaster: it should make ghc work 16:11:11 <ehird> and so darcs 16:11:24 <ehird> ais523: darcs is molasses slow anyway so you shouldn't worry! 16:11:27 <ehird> usable, but slow :) 16:11:28 <AnMaster> ais523, that is one thing, I don't know if cfunge will work on 16-bit or even big endian 16:11:30 <ehird> very usable in fact 16:11:33 <ehird> it's highly user friendly 16:11:39 <AnMaster> in fact I have doubts about big endian 16:11:43 <ehird> & is based on a Theory of Patches written by a physicist 16:12:07 <AnMaster> ais523, some hacks I need to do for the floating point fingerprints may not work on big endian 16:12:09 <AnMaster> not sure 16:12:14 <AnMaster> typedef union u_doubleint { 16:12:15 <AnMaster> double d; 16:12:15 <AnMaster> struct { int32_t high; int32_t low; } i; 16:12:15 <AnMaster> } doubleint; 16:12:17 <AnMaster> yes sucks 16:12:27 <ais523> oh, and if you leave a program producing too much output without pressing a key, the program slows down to very slow speeds 16:12:27 <AnMaster> but I need to for FPDP 16:12:33 <ais523> but I'm not sure if that's a bug in go32 or NTVDM 16:12:42 <AnMaster> ais523, tried dosbox? 16:13:05 <ais523> AnMaster: no 16:13:09 <AnMaster> also if you run it under NTVDM, why not just run the version control under windows, as you already use windows then? 16:13:34 <ais523> I was just teasing really, as I can always run it on Linux and copy the files across via USB 16:13:39 <AnMaster> also does C-INTERCAL work on x86_64 linux? 16:13:45 <ais523> AnMaster: it should do 16:13:50 <ehird> C-INTERCAL probably works on the C64 16:13:52 <ais523> might need to change a define somewhere 16:13:53 <AnMaster> ais523, eh, no network for dos? 16:14:05 <ais523> AnMaster: nor Windows, nor Linux more than half the time 16:14:24 <AnMaster> yeah but LAN I mean 16:14:37 <ais523> AnMaster: don't have that either 16:14:38 <AnMaster> or if you use qemu or such for windows, local simulated network 16:14:48 <ais523> the Windows 95 box won't shut down properly if it's connected to a network 16:14:50 <AnMaster> ais523, right, distributed version control is for you 16:14:57 <ais523> and my only Ethernet cable's about 50 cm long 16:14:58 <ehird> yeah, darcs seems the right one 16:15:01 <AnMaster> windown 95? :( 16:15:02 <ehird> since if you're going to change every variable name 16:15:05 <ehird> then wanting to merge 16:15:09 <ehird> you need something that's really really clever at merging 16:15:13 <ehird> even if it's a little slow in the process 16:15:33 <AnMaster> yeah darcs I guess 16:15:54 <AnMaster> ehird, can you push to a usb memory with darcs? 16:16:01 <AnMaster> seems like ais523 need that 16:16:04 <ehird> AnMaster: push == 'cp .darcs' 16:16:09 <ehird> as a last resort. 16:16:13 <AnMaster> ok true.. 16:16:14 <ais523> I seriously doubt it would be a problem 16:16:17 <ehird> yeah 16:16:19 <ehird> just copy over the repository 16:16:29 <AnMaster> ehird, except, windows HATE things starting with . 16:16:31 <ehird> ais523: each copy, branch etc you have contains the whole history for the whole repository 16:16:33 <ehird> AnMaster: err, wait 16:16:35 <ehird> it's called _darcs 16:16:36 <ehird> just because of that 16:16:39 <AnMaster> ie, you can create them in some apps, but it won't work in others 16:16:45 <ais523> ah yes, 8.3 filenames 16:16:49 <ehird> my mistake 16:16:50 <ais523> in DOS it would be _darcs. 16:16:52 <AnMaster> ehird, ah, but will it use 8.3 filenames everywhere? 16:16:56 <ehird> ais523: no, it's _darcs everywhere 16:17:05 <AnMaster> ais523, it is a directory I suspect 16:17:06 <ais523> DOS requires at least one . in a filename 16:17:07 <ehird> AnMaster: _darcs/ should be 8.3-safe 16:17:13 <AnMaster> ais523, not a file 16:17:17 <ais523> even a directory name, but that's normally hidden from the user 16:17:18 <ehird> _darcs is a directory 16:17:19 <ais523> by the OS 16:17:22 <AnMaster> oh 16:17:25 <AnMaster> interesting 16:17:26 <ais523> directory names follow the same rules as filenames 16:17:38 <ais523> so I call the INTERCAL install directory ick-0.28 16:17:42 <ehird> ais523: darcs should work fine if you can get it to compile 16:17:50 <ais523> which looks perfectly natural, but technically speaking .28 is the extension 16:18:07 <AnMaster> ais523, not when extracted on linux or so 16:18:21 <ehird> ais523: btw, with a dvcs, transitioning from cathedral to bazarr is simple 16:18:27 * ais523 downloaded the source for darcs 16:18:31 <ehird> the 'let everyone see the source' part is trivial 16:18:40 <ehird> you just 'darcs push' onto a public server 16:18:50 <ehird> letting people submit patches is built in-- 16:18:53 <ehird> 'darcs send' goes through email 16:18:55 <ehird> then you can 'darcs apply' 16:19:08 <ehird> and, other people can 'darcs get' your public repository, and fork it 16:19:16 <ehird> then if you want you can 'darcs pull' from theirs and merge their changes at any point 16:19:24 <ehird> but, if you want, you can just keep track of your own changes 16:19:25 <AnMaster> ais523, one thing, I got no clue how cfunge would work out under DOS, in fact I suspect it won't work on windows even. it depends on recent POSIX in many case, as in POSIX 2001 16:19:27 <ehird> and publish a tarball 16:19:55 <marshmallows> everyone here hsould publish some unreleased bit of code 16:19:58 <ais523> AnMaster: I don't support all features on all platforms 16:20:05 <AnMaster> ais523, ah good for you 16:20:08 <ais523> marshmallows: I did already, or did you want something else? 16:20:17 <marshmallows> I missed it 16:20:23 <AnMaster> ais523, I only test cfunge on gentoo linux and freebsd, because that is all I got 16:20:30 <AnMaster> x86 and x86_64 16:20:36 <AnMaster> no clue about how it works on other stuff 16:20:46 <AnMaster> I hope it works as I use size_t and so on where it should be used 16:20:49 <ehird> marshmallows: ais523 posted continuations in intercal 16:20:52 <ehird> well, C-INTERCAL 16:20:55 <ehird> since he added an extension mechanism 16:21:02 <ehird> http://filebin.ca/xwthjm/continuation.i 16:21:35 <ais523> CLC-INTERCAL has a CREATE statement too, which is actually used to implement the entire compiler 16:21:45 <ais523> but the statement you're creating is written in bytecode not INTERCAL 16:21:55 <AnMaster> ais523, another thing: you will need to have a different fingerprint if you do stuff like pre-loading custom fingerprint 16:22:07 <AnMaster> eh 16:22:12 <AnMaster> different handprint 16:22:14 <ais523> different handprint, you mean 16:22:17 <AnMaster> yeah 16:22:19 <AnMaster> exactly 16:22:27 <ais523> it would be 16:22:33 <AnMaster> ais523, also, a custom fingerprint can be overridden, so I guess things may break? also easy to unload a fingerprint 16:22:37 <AnMaster> just unload NULL 16:22:38 <ehird> hahahah, i love smalltalk 16:22:47 <ehird> i just started up yesterday's image i was developing a seaside wiki 16:22:49 <AnMaster> that will unload the top item from every opcode stack 16:22:52 <ehird> and i loaded my browser from history 16:22:56 <ehird> and the session is EXACTLY as i left it 16:23:10 <ehird> smalltalk is infectious, it magically makes everything running on it suspendable & resuable 16:23:11 <ehird> :p 16:23:12 <ehird> *resumably 16:23:26 <AnMaster> ais523, maybe you want to provide some hard coded specific ones in the range ASCII 127-255, unlike fingerprints 16:23:37 <AnMaster> depends on what you need/want 16:23:37 <ais523> that could be an idea 16:23:46 <ais523> hmm... ABSTAIN and ONCE could be quite useful in Befunge 16:24:04 <ais523> COME FROM/NEXT FROM/labels would have to read data from the playfield somehow, though 16:24:17 <AnMaster> ais523, "However, a Funge-98 interpreter may also expose any number of proprietary instructions above ASCII 127 or below ASCII 0." 16:24:24 <AnMaster> that you could exploit 16:24:39 <ais523> INTERCAL uses various characters above 127 anyway 16:24:42 <ais523> at least in some character sets 16:24:51 <AnMaster> ais523, hm? 16:25:07 <AnMaster> "Funge-98 source files are made up of Funge characters. The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.) The Funge character set is 'display-independent.' That is to say, character #417 may look like a squiggle 16:25:08 <AnMaster> on system Foo and a happy face on system Bar, but the meaning is always the same to Funge, 'character #417', regardless of what it looks like." 16:25:12 <AnMaster> "In other words, what Funge characters look like on a particular computer or OS depends entirely on that computer or OS." 16:25:14 <ais523> with Princeton syntax, then you either need Latin-1, Unicode, or the ability to overpunch 16:25:30 -!- shinkuzin_ has joined. 16:25:38 <Deewiant> AnMaster: maybe I should add punctuation there: "cFP outputs - never mind, P reflects" i.e. P didn't output anything, reflected instead 16:25:41 <ais523> (backspace is part of the character set in INTERCAL, and used as a compose character) 16:25:46 <AnMaster> Deewiant, yeah 16:26:03 <Deewiant> AnMaster: but then, you have the source for your interpreter so you know that it reflects and doesn't output anything 16:26:14 <AnMaster> ais523, um you know, I will watch your stuff with interest, because I think it is crazy 16:26:17 <AnMaster> ;P 16:26:36 <ais523> AnMaster: craziness is what it's all about with INTERCAL 16:26:45 <ais523> or to be precise being unlike any other language 16:26:46 <AnMaster> Deewiant, indeed, but was confusing me, as in "oh no, yet another cryptic error" 16:26:55 <ais523> although it manages to subtly parody most languages you're likely to have heard of 16:26:59 <AnMaster> as I started implementing A 16:27:22 <AnMaster> I generally do the instructions from A-Z heh 16:27:37 <AnMaster> ais523, even on befunge? 16:27:52 <ais523> it doesn't have much in common with Befunge yet 16:27:55 <AnMaster> also I don't see how the the interface would work 16:27:58 <ais523> although the threading model is similar 16:28:07 <ais523> AnMaster: are you aware of the concept of a COME FROM? 16:28:31 <ais523> that's the main INTERCAL control flow statement 16:28:35 <AnMaster> ais523, I know it exists, and what it does, but well I do not wish to be affiliated with it ;P 16:28:50 <ais523> well, my idea was that you could drop them into your Befunge code 16:29:06 <marshmallows> wow.. I can't read intercal at all though 16:29:11 <AnMaster> ais523, in cfunge there are NO goto, except in library code, ie code I took from gnulib (like GNU's getline() 16:29:23 <AnMaster> ais523, maybe hash library got some goto, not sure 16:29:30 <ehird> marshmallows: barely anyone can 16:29:33 <AnMaster> but no code I wrote has any goto 16:29:51 <ais523> well, you use function calls, don't you? 16:29:55 <ais523> that's NEXT in INTERCAL 16:29:59 <ehird> i think ais523 and the CLC-INTERCAL maintainer are the only people who can program INTERCAL proficiently 16:30:05 <ais523> ehird: wrong 16:30:06 <AnMaster> ais523, well functions I use. but I try to mark stuff as inline ;) 16:30:08 <ehird> maybe a few others 16:30:15 <ais523> maybe about 10 by my count 16:30:22 <ais523> remember that oerjan wrote an Unlambda interp in it 16:30:39 <ehird> ais523: OK, but I assume it took him ages and a lot of pain 16:30:46 <ehird> I mean, you wrote that continuation library in a day 16:30:56 <ais523> ehird: it wasn't very difficult 16:31:02 <ais523> most of the groundwork was there already 16:31:08 <AnMaster> ais523, but still I would like to know more about how the befunge <-> intercal interface would work 16:31:18 <AnMaster> something like evalasbefuge(some code)? 16:31:20 <AnMaster> or what? 16:31:23 <ais523> OK, lets use printable characters for now 16:31:30 <ais523> you write an INTERCAL program, and a Befunge program 16:31:37 <AnMaster> right 16:31:49 <ais523> the compiler creates a combined executable using the compiled INTERCAL, and Befunge with a bundled interp 16:32:04 <AnMaster> mhm ok, cfunge is in no way small though 16:32:08 <ais523> then the IP can move from the INTERCAL code to the Befunge code and back using several techniques 16:32:37 <ais523> you put markers in the code, like COME FROMs, which enable programs to steal control from each other or to give control to each other 16:32:37 <AnMaster> 71K for a dynamically linked binary at -O3, stripped 16:32:46 <ais523> AnMaster: that's not too bad 16:33:08 <ais523> although I'd abstract the Befunge interp into the runtime libraries to avoid bloating things, probably 16:33:15 <AnMaster> ais523, also likely to grow, as I add more fingerprints 16:33:21 <ais523> however, the runtime's statically-linked at the moment 16:33:29 <ais523> and I don't care too much about output file size 16:33:40 <ais523> INTERCAL's pretty resource-hungry as it is 16:33:53 <AnMaster> ais523, the binary in question is one without boehm-gc so just libm.so.6 and libc.so.6 16:33:54 <ais523> although with many of the advanced features turned off C-INTERCAL can be quite lean too 16:35:05 <AnMaster> ais523, not sure about heap size, but I normally slightly favour speed rather than memory usage when I have to choose 16:36:14 <ais523> C-INTERCAL has the -F optimisation, which analyses your program to see if it's deterministic and terminating (the termination check's achieved by running it for 4 billion threading ticks to see if it's ended), and if it is just records the output it produces and gives you a shell script as the 'executable' 16:36:22 <ais523> it was added for a joke, of course 16:36:37 <AnMaster> XD 16:36:44 <AnMaster> but that ignores file IO? 16:36:54 <AnMaster> or any input in fact 16:36:54 <ais523> there is no file IO in INTERCAL core 16:37:06 <ais523> and input's detected as marking the program as nondeterministic 16:37:33 <ais523> there's probably a hole in it somewhere, thoguh 16:38:31 <AnMaster> ais523, according to massif the heap profiler, part of valgrind, the binary I mentioned above uses 8 MB memory at most when running mycology 16:38:37 <AnMaster> note that cell size was 32-bit in it 16:38:41 <ehird> ais523: you should optimize all constant bits 16:38:41 * AnMaster tries with -DUSE64 16:38:48 <ehird> try to analyze which bits don't utilize non-deterministic things 16:38:51 <ehird> and printf-them 16:38:55 <ais523> ehird: constants are a moving target in INTERCAL 16:39:03 <ehird> ais523: yeah, but you could do some kind of static analysis 16:39:05 <ais523> you can even assign to them if you have the right compiler options set 16:39:14 <ais523> ehird: I do do some static analysis 16:39:32 <ais523> mostly to see when multiple commands can be strung together in a row without needing full guarding 16:39:46 <ais523> but checking to see if code always does the same thing is really hard 16:39:57 <ehird> ais523: run it a few times 16:39:57 <ehird> ;) 16:40:01 <marshmallows> that dd/sh stuff is so cool 16:40:07 <ehird> http://www.google.com/search?hl=en&client=firefox-a&rls=com.ubuntu%3Aen-GB%3Aofficial&hs=Hog&q=%22HTTP+considered+harmful%22&btnG=Search <-- this should have more results 16:40:11 <ais523> marshmallows: yep 16:40:28 <AnMaster> ais523, now this is odd, with 64-bit cells it uses 8.474 MB, so most data isn't cell data? then wtf is it 16:40:35 <ais523> ehird: most INTERCAL code is /designed/ to have exceptional cases 16:40:44 <ais523> AnMaster: pointers? Malloc minimum block sizes? 16:40:55 <ehird> ais523: use a fuzzing program 16:41:07 <ehird> (generates craploads of random data, shoves it at the app at high speeds) 16:41:09 <AnMaster> ais523, hm, pointers maybe yes, the funge-space code is kind of messy in that aspect 16:41:31 <ehird> http://en.wikipedia.org/wiki/Fuzz_testing 16:41:35 <AnMaster> valgrind doesn't want to work on -m32 binaries however, so don't know 16:42:13 <ais523> ehird: you just know that people will use obscure features like symlinked variables in order to confuse the fuzz tester 16:42:16 <AnMaster> ehird, 16:42:18 <AnMaster> Your search - "gopher considered harmful" - did not match any documents. 16:42:19 <AnMaster> :) 16:42:26 <AnMaster> therefore gopher is better than http 16:42:28 <AnMaster> :D 16:42:31 <AnMaster> logic is great 16:42:52 <ehird> ais523: isn't that a good thing? 16:42:59 <ehird> a program that behaves differently on -FF 16:43:16 <AnMaster> <ais523> ehird: you just know that people will use obscure features like symlinked variables in order to confuse the fuzz tester 16:43:19 <ais523> ehird: I tend to consider optimisation changing the behaviour of a program to be a bug 16:43:21 <AnMaster> wtf is a symlinked variable? 16:43:31 <ais523> AnMaster: it's normally called operand overloading 16:43:37 <AnMaster> oh C++? 16:43:44 <ais523> AnMaster: that's operator overloading 16:43:52 <AnMaster> hm 16:43:59 <AnMaster> what is operand overloading then? 16:44:06 <ais523> Operand overloading: if I do .1/.2 then all references to .1 from then on actually refer to .2 16:44:27 <ehird> ais523: if the magic text is in the program output -F already breaks 16:44:37 <AnMaster> ais523, eww 16:44:38 <ais523> so in the continuation code, for instance, if I assign to or read :1601 I'm actually assigning to or reading the first arg of the CREATE statement 16:44:39 <ehird> sketch for an intercal program: 16:44:42 <AnMaster> ais523, what languages got that? 16:44:46 <ais523> ehird: no it doesn't, I grep for the magic text 16:44:50 <ais523> AnMaster: just INTERCAL 16:44:51 <ehird> output the magic text, output 'echo "Hello, world!"' 16:44:54 <AnMaster> ah 16:44:58 <ais523> although unification in Prolog is vaguely similar 16:44:58 <ehird> -F and no -F are different 16:45:01 <ehird> one is: 16:45:07 <ehird> <magic>echo "Hello, world!" 16:45:08 <ehird> one is: 16:45:16 <ehird> Hello, world! <UNEXPECTED COMMAND <magic>> 16:45:28 <ais523> ehird: I just use the non--F executable if I spot the magic word in the output 16:45:37 <AnMaster> eh? 16:45:39 <AnMaster> magic? 16:45:46 <ais523> AnMaster: end of a shell heredoc 16:45:47 <ehird> AnMaster: it generates: 16:45:50 <ehird> cat <<-F*ICK* 16:45:51 <ehird> ... 16:45:53 <AnMaster> xxyz? (wild guess) 16:45:54 <ehird> F*ICK* 16:45:55 <ehird> or similar 16:46:01 <AnMaster> ehird, ah 16:46:03 <AnMaster> that 16:46:20 <ais523> AnMaster: 'twould be xyzzy, but actually I use ickTERM with some weird capitalisation mix followed by a long string of punctuation 16:46:31 <AnMaster> ah 16:46:36 <AnMaster> ais523, why heredoc at all? 16:46:40 <ais523> on the basis that anyone who actually generates output to produce that likely deserves what they get 16:46:44 <ais523> AnMaster: twisted optimisation technique 16:46:47 <AnMaster> ais523, heredoc actually create a temp file 16:46:50 <AnMaster> in bash 16:46:55 <ehird> AnMaster: bash sucks, suprise 16:46:55 <AnMaster> when it reads the heredoc 16:46:58 <ehird> zsh &co don't do that 16:46:59 <ehird> they are Sane 16:47:24 <ais523> AnMaster: DOS implements pipes using tempfiles between the commands 16:47:32 <AnMaster> :( 16:47:43 <ais523> so trying to cut off a pipe from an infinite loop using head actually causes your computer's disk to fill up 16:47:54 <AnMaster> ais523, I can tell you right away that there is *no way* you would get cfunge to run on DOS 16:48:12 <ais523> AnMaster: oh dear, you might cause me to take that as a challenge 16:48:30 <AnMaster> ais523, of course if you rewrite large parts it may work 16:48:54 <ais523> AnMaster: even Emacs runs on DOS nowadays, and it's terribly bloated 16:48:58 <AnMaster> ais523, but nothing will stop my code from depending on POSIX when I feel that I have a reason to 16:49:03 <AnMaster> ais523, :( 16:49:06 <ais523> AnMaster: POSIX dependencies are fine 16:49:26 <ais523> DJGPP implements all of the POSIX functions, by returning plausible output, or when that's impossible, plausible error codes 16:49:44 <ais523> so fork is basically implemented as pid_t fork(void) {errno=ENOMEM; return -errno;} 16:50:32 <ehird> languages are so broken 16:50:34 <ehird> they have no call/cc 16:50:43 <AnMaster> ais523, I may decide to depend on a working fork if you try to make it run on dos ;) 16:50:54 <AnMaster> ehird, what languages? 16:51:05 <ais523> AnMaster: then I'd link it up to a custom version of the INTERCAL threader just to annoy you 16:51:09 <AnMaster> ais523, can DJGPP do pthreads? 16:51:13 <ais523> AnMaster: no idea 16:51:30 <AnMaster> ais523, because one thing I pondered is a fingerprint for "true" concurrency 16:51:36 <AnMaster> as in really using threads 16:51:39 <AnMaster> just a wild idea 16:51:44 <AnMaster> along with the ipv6 sockets one 16:51:52 <AnMaster> there is a fingerprint for ipv6 sockets 16:51:58 <ais523> AnMaster: then you'd lose the thread speed guarantees 16:51:58 <AnMaster> SOCK and/or SCKE 16:52:05 <AnMaster> ais523, yeah 16:52:20 <ais523> my C-INTERCAL continuation program depends on them 16:52:22 <AnMaster> ais523, but a fingerprint for such threads, if anyone wants 16:52:30 <AnMaster> would have compare and exchange and so on of course 16:53:44 <ais523> AnMaster: INTERCAL has ONCE and AGAIN, which are some of the most flexibile thread-sync mechanisms I've seen yet 16:54:03 <AnMaster> how do they work? 16:54:07 <ais523> with computed ABSTAIN, ONCE and AGAIN, there are several mutexes, spinlocks, and semaphores in the INTERCAL continuation program 16:54:30 <ais523> AnMaster: DO COMMAND ONCE changes into DON'T COMMAND AGAIN when executed, atomically with its execution 16:54:35 <ais523> so only one thread is allowed through it 16:54:44 <ais523> and REINSTATE changes it back to the original form 16:54:53 <AnMaster> ais523, yes right, but that would not allow multi cpu 16:55:14 <ais523> AnMaster: the semantics work fine with multi CPU, just that implementing it might be a bit tricky 16:55:17 <AnMaster> that is the reason I'm interested in a fingerprint for "real" threads 16:56:17 <AnMaster> basically: since everyone is going multicore today, befunge's t is no longer effective, therefore I add this fingerprint to make befunge attractive to the enterprise market ;) 16:56:19 <AnMaster> or something like that 16:57:39 <ehird> AnMaster: tons of languages 16:57:45 <ais523> AnMaster: that sounds just like the sort of justification people use for INTERCAL features 16:57:46 <AnMaster> hm 16:57:51 <AnMaster> ais523, indeed heh 16:57:59 <AnMaster> ais523, take a look at the TOYS fingerprint 16:58:05 <AnMaster> you will feel at home 16:58:09 <ais523> AnMaster: I have done 16:58:48 <ehird> my firefox is borken 16:58:56 <AnMaster> ais523, some of those I can see the cause of the names for, but well, M - kittycat I just don't get 16:58:57 <ehird> sometimes when loading a page it finishes loading but does not render the new page 16:58:59 <ehird> and stays at the old one 16:59:02 <ehird> but e.g. can't select text 16:59:03 <AnMaster> ehird, try konqueror 16:59:04 <ehird> and links don't work 16:59:09 <ehird> even though the text cursor appears 16:59:16 <ehird> AnMaster: unacceptable, it doesn't work with anything 16:59:18 <ais523> AnMaster: it's a cat's ears 16:59:32 <AnMaster> hm 16:59:42 <ais523> konqueror's really good on some sites, but it screws up on anagolf for some reason 16:59:44 <AnMaster> ais523, well the middle of my M doesn't touch the base of the line 16:59:51 <ehird> AnMaster: its cats ears + top of head 16:59:53 <ais523> it's fine on first viewing, but deteriorates on refreshes 16:59:57 <ehird> besides 17:00:03 <AnMaster> ais523, also: S - chicane U - tumbler 17:00:07 <ehird> maybe princeton's M looked ok 17:00:11 <AnMaster> I don't even know what a "chicane" is 17:00:12 <ehird> their U was probably more spiky 17:00:20 <ais523> AnMaster: a bend in a road shaped like the letter S 17:00:24 <AnMaster> ah 17:00:29 <AnMaster> ais523, and what is a tumbler? 17:00:33 <ehird> ais523: so, a chicane is a bend in a road shaped like a chicane 17:00:34 <AnMaster> "V - dixiecup" yet another odd one 17:00:39 <ais523> AnMaster: it's a glass you drink water out of 17:00:43 <AnMaster> ah I see 17:00:43 <ais523> I don't get the V, though 17:00:50 <ais523> the character's called 'book' in INTERCAL 17:01:36 <ehird> ais523: look at it on the side 17:01:41 <ehird> it's a slightly-open book 17:01:42 <ehird> like 17:01:45 <ehird> put a book down 17:01:48 <ehird> but it won't fully close 17:02:03 <ais523> ehird: I understand why 'book', just not why 'dixiecup' 17:02:04 <ehird> thingy. 17:02:11 <ehird> ah 17:02:21 <ehird> http://www.ideafinder.com/history/inventions/dixiecup.htm 17:02:21 <ehird> ? 17:02:32 <ehird> made to look like a flimsy plastic cup 17:02:33 <ehird> i guess 17:06:19 <ehird> ais523: http://acarol.woz.org/ When will C-INTERCAL work on this? 17:06:41 <ehird> Oh, and are mirrors for C/CLC-INTERCAL appreciated? 17:06:47 <ehird> i have a whole VPS server 17:06:48 <ehird> being useless 17:07:32 <ais523> ehird: about that link: when it becomes Turing-complete, I'll be on the task 17:07:48 <ehird> ais523: Who needs TC? 17:08:05 <ais523> ehird: yes for C-INTERCAL, although it's the CLC-INTERCAL maintainer who hosts both compilers and mirrors them too, you might want to ask them 17:08:48 <ehird> ais523: Oh, and if you eve do need hosting for a darcs repository or similar, the same server will still be sitting around doing nothing 17:09:06 <ehird> (I consider eso-std.org and elliotthird.org close to 'nothing' as they will haev basially no overhead :p) 17:09:28 <ais523> ehird: it's probably also worth pointing out that your mirroring capabilities will be nowhere near Debian's 17:09:28 <ehird> ais523: Hmm. parser.y looks like Perl. 17:09:44 <ehird> ais523: Perhaps, but my updating capabilities will far exceed it. 17:09:56 <ehird> Also, when e.g. patches are released I'd probably make a pre-patched version for convenience 17:10:29 <ais523> ehird: it's Bison 17:10:35 <ais523> also meant to be yacc-compatible 17:10:44 <ais523> it's probably all the % signs that are throwing you 17:10:53 <ais523> ehird: Debian do that too 17:11:03 <ehird> ais523: no, the indentation style and the $x stuff 17:11:09 <ehird> ais523: but do they update regularly :) 17:11:17 <ais523> ehird: yes 17:11:19 <ehird> Besides, debian do stuff to their packages. 17:11:21 <ais523> within days, often 17:11:28 <ehird> I just mirror stuff. 17:11:36 <ais523> and the Debian repos host the original, and a patch to Debianise it 17:11:41 <ais523> so you can download either separately 17:11:44 <ehird> ais523: Days, bah. I offer 3 days max wait ;) 17:11:59 <ais523> ehird: then they'd have been faster than you in some cases 17:12:10 <ais523> Ubuntu, on the other hand, never even replied to my emails 17:12:39 <ehird> ais523: Normally it'd take me a day or less. 17:12:52 <ehird> Since I'd see it the day or the next day, and upgrade it. 17:13:02 <ehird> By the way, patch(1) doesn't like your patch 17:13:39 <AnMaster> ehird, tried different -p? 17:14:04 <ais523> ehird: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=459577 (look at the email timestamps) 17:14:07 <AnMaster> -p0, -p1 and so on 17:14:16 <ais523> ehird: check the newlines 17:14:32 <ais523> DOS newlines crept into 0.27 in idiotism.oil by mistake 17:14:39 <ais523> but the patch has Unix newlines 17:14:43 <ais523> and that's enough to confuse patch 17:15:09 <ais523> that's what the email exchange I linked was about, actually 17:15:52 <ehird> patching file src/idiotism.oil 17:15:53 <ehird> Hunk #1 FAILED at 207. 17:15:53 <ehird> Hunk #2 FAILED at 480. 17:15:53 <ehird> 2 out of 2 hunks FAILED -- saving rejects to file src/idiotism.oil.rej 17:15:57 <ehird> so yeah 17:16:22 <ais523> ehird: OTOH, unlike the Debian maintainer, you wouldn't be too scared to merge the patch by hand, right? 17:17:22 <ehird> ais523: Most certainly not 17:17:23 <ehird> :) 17:17:59 <ehird> Gosh, patch is such an arcane format 17:17:59 <ehird> :P 17:18:29 <ehird> ais523: Just replace all the DOS with UNIX, right? 17:18:59 <ais523> ehird: yes, that's how I fixed it 17:19:00 <ehird> tofrodos will be quicker then 17:19:08 <ais523> in fact, that's the reason that the patch is confused like that 17:19:33 <ais523> one of the first things I did when I started work on 0.28 was to notice that the newlines in idiotism.oil were wrong, and ran tofrodos on it... 17:19:45 <ehird> 'And for probably obvious reasons I don't want to hand-merge it.' --> 'I am a delicate soul and I never use a keyboard. I love my mouse. Please don't make me do scary things.' 17:19:49 <ehird> harsh? maybe ;) 17:20:03 <ais523> ehird: to be honest, I'm not sure if anyone in the world but me knows OIL 17:20:09 <ais523> it doesn't even qualify as a proper esolang 17:20:19 <ais523> although I suspect it's TC for the same reasons that Thue is 17:20:55 <ehird> This implementation was created by Eric S. Raymond <esr@snark.thyrsus.com> during a fit of lunacy from which he has since mostly recovered. 17:20:58 <ais523> (Joris Huizer, who has contributed so many patches to C-INTERCAL recently that there's a Joris-specific changelog section, sent a few OIL corrections in, but confessed to not really understanding the syntax) 17:21:04 <ehird> first comes denial.. 17:22:13 <ehird> ais523: eek, no manpage 17:22:14 <ehird> :D 17:22:18 <ais523> ehird: there is a man page 17:22:20 <ais523> doc/ick.1 17:22:38 <ais523> also an info page doc/ick.info (requires compilation, source in doc/ick.txi) 17:22:45 <ehird> '-b option that disables the INTERCAL-72 random-bug feature' <-- commonly used, I assume 17:22:55 <ais523> you'd be surprised how often I forget 17:23:05 <ais523> but 90% of the time it doesn't matter 17:24:25 <ais523> incidentally, the next version is adding -w, -a, -e, and -E to that manpage 17:25:06 <ais523> -a = enable CREATE, -e = enable external calls and expansion libraries, the other two aren't very interesting 17:26:01 <ehird> ais523: /* AIS: 17:26:03 <ehird> that must get tedious 17:26:09 <ais523> ehird: not really 17:26:15 <ais523> it helps when grepping 17:26:18 <ehird> replacing everyone else's comments with something similar would be simpler :P 17:26:41 <ais523> ehird: the unattributed bits belong to the top-of-file copyright holder in most cases 17:26:51 <ais523> you'll see other people's initials scattered around too, just not as much as mine 17:26:54 <ehird> ais523: hmm. 17:26:55 <ehird> $ ick; echo $? 17:26:56 <ehird> 0 17:27:05 <ais523> ehird: that's correct 17:27:06 <ehird> best true(1) ever 17:27:11 <ais523> you told it to do nothing, and it did 17:27:57 <ehird> ais523: does it ever exit(1)? 17:28:01 <ehird> just seems to do 1241 and similar 17:28:32 <ais523> ehird: I don't know of a way to get an exit code of precisely 1 17:28:32 <ais523> there are a lot of other nonzero exit codes available, though 17:28:44 <ais523> try compiling an invalid INTERCAL program (DO(1)NEXT will do), and look at the exit code then 17:29:13 <ehird> $ echo 'DO(1)NEXT' |ick ; echo $? 17:29:13 <ehird> bash: echo: write error: Broken pipe 17:29:23 <ehird> need to pipe to a file 17:29:23 <ehird> :) 17:29:26 <ais523> ehird: ick doesn't accept files on stdin 17:29:41 <ehird> invalid: 230 17:29:41 <ais523> however, I have a symlink tty.i to /dev/tty in my INTERCAL programs directory 17:30:06 <ais523> ehird: C-INTERCAL sends back the error number as the exit code 17:30:13 <ais523> but the OS will normally modulo-256 it 17:30:50 <ais523> so I get 129 on that program, for instance 17:30:54 <ehird> ais523: no output file option? :( 17:31:03 <ais523> ehird: at present, no 17:31:11 <ais523> because none of the options take arguments 17:31:17 <ais523> you have -o to pipe the output C to stdout, though 17:31:24 <ehird> 34 17:31:24 <ehird> ICL579I WHAT BASE AND/OR LANGUAGE INCLUDES 34? 17:31:25 <ais523> and you can redirect it elsewhere from there 17:31:31 <ehird> i know that shouldn't work 17:31:34 <ais523> ehird: that's not how you input numbers in INTERCAL 17:31:34 <ehird> but the error is amusing 17:31:37 <ais523> try THREE FOUR 17:31:38 <ehird> WHAT BASE INCLUDES 34?! 17:31:40 <ehird> ais523: yes, yes, i know 17:32:16 <ehird> ais523: any base-12 names? :P 17:32:38 <ais523> ehird: input is in spelt-out decimal, in a variety of languages 17:32:47 <ais523> but programs internally can use any base from 2 to 7 17:33:01 <ais523> according to the file extension (.i, .3i, .4i, ..., .7i) 17:38:57 <ehird> ais523: yes, i know 17:39:00 <ehird> it's just an amusing error 17:39:45 <ehird> now... to use continuations.i to make a continuation-based web framework, plug it into fastcgi, and write the world's second web intercal program: a wiki for INTERCAL information 17:39:48 <ehird> or am i just silly 17:39:59 <ais523> ehird: entirely possible 17:40:11 <ais523> but it'll take several days even for someone used to INTERCAL, at least 17:40:40 <ehird> ais523: yes, probably the best route is: 17:40:54 <ehird> 1. write a fastcgi/scgi thingy for intercal 17:41:12 <ehird> 2. get continuations working OK with it, do sample HELLO WORLD app 17:41:24 <ehird> 3. translate some of the stuff here http://www.double.co.nz/scheme/modal-web-server.html (just the ideas, not the actual functions, of course) 17:41:34 <ehird> 4. write basic things like the 'counter with ++ and -- buttons' 17:41:41 <ais523> oh, it's probably worth pointing out that that continuation library slows down the program by a factor of n+2 if you've created n continuations 17:41:42 <ehird> 5. build it up to a 'you can change this page' thing 17:41:45 <ehird> then add a formatter 17:41:51 <ehird> then add multiple pages 17:41:54 <ehird> then add revisions 17:41:57 <ehird> and voila 17:41:57 <ais523> so unless you find some way to reuse them, the whole thing will ground to a halt 17:41:57 <ehird> ;) 17:42:05 <ehird> ais523: can you delete continuations? 17:42:18 <ais523> ehird: at the moment, no 17:42:22 <ehird> the standard practice for continuation web servers is that after a while you expire old continuatins 17:42:25 <ais523> well, unless you hook into the internals 17:42:29 <ehird> for the purposes of this they'll not be used often 17:42:35 <ais523> it shouldn't be ridiculously hard to do, though 17:42:38 <ehird> so i guess once every hour purging them would work 17:43:15 <AnMaster> lol 17:43:16 <ais523> ehird: INTERCAL doesn't have a current-time function, but I suppose you could deduce it from incoming HTTP headers if they happened to contain something time-related 17:43:19 <AnMaster> you are insane 17:43:33 <ehird> ais523: one http request = one tick 17:43:40 <AnMaster> ais523, well if it doesn't have current time, befunge does 17:43:41 <AnMaster> ;P 17:43:48 <ehird> every N ticks, expire continuations not used for M ticks (where M>N) 17:44:06 <AnMaster> ais523, there is even a "high resolution timer" fingerprint 17:44:11 <ais523> AnMaster: unfortunately, the threader and external calls system conflict with each other 17:44:16 <ehird> ais523: since it'll mostly be in a nop busyloop when not handling requests 17:44:19 <AnMaster> ais523, eh? 17:44:20 <ais523> so you couldn't have continuations And befunge 17:44:20 <ehird> obviously i won't try and thread it 17:44:23 <ehird> so it'll handle one request at a time 17:44:26 <AnMaster> ais523, oh you mean non-reentrant? 17:44:28 <ais523> AnMaster: they both do entirely different unusual stack things 17:44:40 <ais523> and are both heavily setjmpy, but in different ways 17:44:40 <AnMaster> I see 17:44:49 <AnMaster> ugh 17:45:03 <ehird> AnMaster: CONT fingerprint for cfunge please 17:45:13 <ehird> AnMaster: :D 17:45:15 <AnMaster> ehird, not sure how it would work 17:45:22 <ais523> hmm... maybe you could do something using TRDS 17:45:30 <AnMaster> ais523, I will NOT implement TRDS 17:45:32 <ais523> that's pretty continuation-like 17:45:33 <AnMaster> I just won't 17:45:34 <ehird> AnMaster: you know what continuations are right? 17:45:47 <AnMaster> ehird, I think I know, if they are what I think 17:45:52 <AnMaster> ie, anonymous method 17:45:58 <AnMaster> that can be passed around 17:45:59 <ais523> no, that's a lambda 17:46:04 <AnMaster> hm? 17:46:17 <ais523> lambda = anonymous method that can be passed around, and can be filled out at runtime 17:46:27 <ehird> he's thinking of closures 17:46:28 <ais523> continuation = snapshot of the state of the program that can be restored at a later time 17:46:32 <AnMaster> ehird, ah yes 17:46:34 <ais523> ehird: ah 17:46:36 <AnMaster> ehird, that's the one 17:46:39 <ehird> i'll explain continuations to AnMaster trivially 17:46:44 <AnMaster> well then I don't know what a continuation is no 17:46:50 <ehird> AnMaster: you know the call stack? it includes the return addresses, local variables, etc 17:46:56 <AnMaster> aye yes 17:47:03 <ehird> well, a continuation is a copy of that call stack 17:47:04 <ehird> but not the heap 17:47:10 <ehird> and then you can resume the continuatoin 17:47:10 <AnMaster> call and ret in asm iirc 17:47:17 <ehird> and it replaces the stack with theo ne in the continuation 17:47:39 <AnMaster> ehird, so you are trying to sneak in that back tracking stuff that's soooo slow? 17:47:40 <ehird> AnMaster: basically, you need these: 17:47:43 <ehird> and no 17:47:47 <ehird> continuations are useful besides 17:47:49 <AnMaster> hm 17:47:50 <ehird> e.g. seaside web framework 17:47:51 <ehird> uses them 17:47:59 <ehird> ofc the Copy Whole Stack method is inefficient 17:48:01 <ehird> but easy to implement 17:48:04 <AnMaster> ehird, so a saved state? 17:48:04 <ehird> anyway 17:48:10 <ehird> AnMaster: kind of, but the heap stays the same 17:48:11 <ais523> ehird: use Underlambda, then you can store continuations in the URL 17:48:12 <AnMaster> of the call stack but nothing else? 17:48:16 <AnMaster> or the normal stack too? 17:48:24 <ehird> ais523: that's true.. but then you can hijack the app 17:48:26 <ais523> AnMaster: in the case of Befunge, both 17:48:32 <ehird> AnMaster: for befunge you will wont both, i guess 17:48:34 <AnMaster> ais523, well there is no call stack 17:48:35 <AnMaster> really 17:48:39 <ehird> AnMaster: your C call stack 17:48:42 <ehird> copy the c call stack 17:48:43 <AnMaster> ah yes 17:48:51 <ehird> yes you have to do some weird memcpy stuff 17:48:53 <AnMaster> ehird, how on earth would I access the C call stack? 17:48:53 <ehird> involving things like 17:48:56 <ehird> int xyzzy; 17:48:59 <AnMaster> I got no idea where it is 17:49:01 <ehird> int *stack = &xyzzy-1; 17:49:03 <ehird> stuff like that 17:49:06 <AnMaster> err 17:49:11 <ais523> ehird: that's nonportable 17:49:13 <AnMaster> ehird, that sounds non-portable 17:49:17 <ehird> it's kind of nonportable 17:49:18 <ais523> but you can get round that by implementing your own stack 17:49:22 <ehird> but you can get it working semi-reasonably 17:49:25 <ehird> ais523: that would be tricky in this case 17:49:31 <AnMaster> ugh 17:49:34 <ais523> ehird: or use CPS 17:49:39 <ehird> ais523: unworkable in C 17:49:40 <ehird> it has no closures 17:49:43 <ehird> you'd have to drop local vars 17:49:47 <AnMaster> ais523, ehird: I'm not going to do that you know 17:49:47 <ehird> and pass around structures 17:49:55 <ehird> AnMaster: fine, implement your own call stack 17:49:58 <ehird> but here's what you need: 17:50:08 <ais523> ehird: you could use STASHes rather than local vars, so it isn't completely ridiculous 17:50:16 <ais523> but it is still somewhat ridiculous 17:50:38 <AnMaster> ehird, I'm not going to do any setjmp or similar either 17:50:47 <ehird> C -- Makes a continuation whose return point is here. If we've just created the continuation, push 0 on to the stack. Otherwise, push the value we got and then 1 on to the stack. 17:50:48 <AnMaster> I prefer clean code 17:50:54 <AnMaster> when doing C 17:51:02 <ehird> R -- Takes a continuation and a value off the stack, and returns to the continuation passing the value. 17:51:05 <ehird> there 17:51:06 <ehird> that's it 17:51:09 <ehird> that's the CONT fingerprint 17:51:27 <AnMaster> ehird, sounds like a feral fingerprint? 17:51:35 <ehird> AnMaster: but note... 17:51:38 <ais523> AnMaster: tame continuations would be a contradiction 17:51:39 <ehird> continuations must be reusable 17:51:44 <AnMaster> ais523, indeed 17:51:46 <ehird> if i store a continuation somewhere 17:51:49 <ehird> then i can use R as many times as i awnt 17:51:51 <ehird> *want 17:52:07 <AnMaster> ais523, and that is where I say no. I have decided to not implement MODE because it isn't tame 17:52:09 <ais523> ehird: you can make reusable continuations out of non-reusable continuations 17:52:18 <ehird> ais523: kind of 17:52:21 <ehird> not always though 17:52:27 <ais523> that's what I did in the INTERCAL continuation library 17:52:30 <ehird> AnMaster: you are so uptight regarding esolangs 17:52:38 <AnMaster> ehird, well I may do MODE 17:52:46 <ais523> whenever a continuation is spent, I generate another identical one with the same number 17:52:48 <AnMaster> but not TRDS and CONT, sure if someone makes a patch 17:52:49 <ehird> i'm not implementing this feature because i value MAINTAINABILITY and READABILITY and PORTABILITY 17:52:57 <ehird> even though it's BEFUNGE 17:53:08 <ehird> anyway, http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons 17:53:12 <ehird> explains it simpl;y 17:53:18 <AnMaster> ehird, right, befunge is turing complete, you can simulate the continuations in it! 17:54:24 <ais523> Befunge-98, you mean 17:54:30 <AnMaster> ais523, right indeed 17:54:53 <AnMaster> ais523, though, Befunge-93 with BIGNUM would be turning complete too I think? 17:55:01 <ais523> AnMaster: yes 17:55:11 <ehird> uhm, you couldn't simulate continuations reasonably 17:55:14 <ehird> without fisrt-class functions 17:55:16 <ais523> you could simulate a Minsky machine using the playfield or the swap instruction 17:55:19 <ehird> its totally useless 17:55:24 <ais523> it wouldn't be very befunge-like, though 17:55:27 <AnMaster> ehird, you could simulate first-class functions 17:55:39 <ehird> AnMaster: the point is it's nigh-on impossible 17:55:40 <ais523> ehird: INTERCAL doesn't have first-class functions, yet I programmed continuations in it 17:55:47 <ehird> unless you make a compiler do it = more work than implementing CONT 17:55:51 <ehird> ais523: intercal != befunge 17:56:36 <AnMaster> Deewiant said he wouldn't have done TRDS if he knew how messy it was iirc 17:57:07 <AnMaster> what I *may* do is add a full blown libffi 17:57:07 <ais523> it's pretty like continuations, though 17:57:19 <AnMaster> then you can do whatever you want basically 17:57:26 <AnMaster> assuming non-sandbox mode 17:57:50 <ehird> ooh 17:57:53 <ehird> a new funge98 impl 17:57:57 <AnMaster> ehird, hm? 17:57:58 <ehird> in the infocom Zmachine no less 17:57:59 <ehird> http://mbays.freeshell.org/zedfunge.html 17:58:51 <Deewiant> AnMaster: well, I probably would have anyway, and then said that anyway ;-) 17:59:18 <ais523> Deewiant: you've worked with TRDS, how continuation-like is it? 17:59:21 <AnMaster> Deewiant, hm? 17:59:41 <Deewiant> ais523: continuation-like? what exactly do you mean? 17:59:52 <ais523> Deewiant: we were discussing continuations in Befunge 18:00:00 <ais523> I was wondering whether TRDS already provided a way to do that 18:00:06 <ais523> because it acts in a similar manner 18:00:07 <ehird> you can't 18:00:08 <Deewiant> AnMaster: I mean, I'm stubborn enough to have probably done it anyway :-P 18:00:09 <ehird> it isn't reusable 18:00:14 <ehird> and you cannot send values back 18:00:17 <ehird> and it does IO 18:00:19 <ehird> and changes the heap 18:00:26 <ehird> IO and heap must never be modified for continuations 18:00:34 <ais523> ehird: so not continuation-like enough 18:00:34 <ehird> it makes them useles 18:00:35 <ehird> s 18:00:36 <Deewiant> it doesn't do IO, necessarily 18:00:41 <Deewiant> or what did you mean by that 18:00:53 <ais523> Deewiant: ehird means that continuations don't reset the input stream 18:00:56 <ais523> but TRDS does 18:00:57 <Deewiant> or are you talking about something else 18:01:11 <ehird> Deewiant: it rewinds stdout 18:01:18 <ehird> & stidn 18:01:21 <Deewiant> you mean, if there's a getchar() or putchar() somewhere 18:01:24 <Deewiant> then TRDS would rerun it? 18:01:27 <Deewiant> if so, that's false 18:01:29 <Deewiant> because it doesn't 18:01:43 <ehird> no 18:01:46 <ehird> but it would remove it from the screen 18:01:53 <ehird> also 18:01:55 <ehird> it SHOULD rerun it 18:01:56 <Deewiant> hm? that's impossible :-P 18:01:57 <ehird> if it was a continuation 18:02:17 <Deewiant> in all honesty the IO semantics of TRDS are 100% unspecified 18:02:22 -!- timotiis has joined. 18:02:26 <ehird> AnMaster: put your files in a top-level directory when you make tarballs fck sake 18:02:28 <Deewiant> the original implementation doesn't do getchar() and putchar() 18:02:34 <AnMaster> ehird, hm? 18:02:34 <Deewiant> when time traveling 18:02:37 <ehird> you just defecated on my ~/ 18:02:38 <AnMaster> ehird, what do you mean? 18:02:38 <Deewiant> but it would do file input and output 18:02:45 <AnMaster> ehird, I do use a subdir 18:02:47 <AnMaster> -_- 18:02:57 <AnMaster> unless tar is doing something messy? 18:02:58 <Deewiant> AnMaster: http://en.wikipedia.org/wiki/Tarball#Tarbombs 18:03:11 <ais523> ehird: ccbi does that to me when I try to unpack it 18:03:17 <ais523> maybe you've got the wrong interp 18:03:20 <AnMaster> I don't tar bomb 18:03:28 <ais523> or maybe there's a worldwide tar conspiracy against Befunge 18:03:34 <Deewiant> CCBI is in a zip file, and a subdir of its own O_o 18:03:52 <AnMaster> http://rafb.net/p/fTreKx91.html 18:03:58 <AnMaster> ehird, wtf are you talking about? 18:03:59 <ais523> Deewiant: I thought it would be 18:04:11 <ais523> maybe there's something wrong with the way tar handles 7zip, or something 18:04:14 <AnMaster> it is always subdir of it's own 18:04:23 <Deewiant> ais523: possibly 18:04:51 <AnMaster> ehird, what exact tar ball is it you have an issue with? 18:04:55 <AnMaster> link please 18:05:15 <ehird> meh 18:05:23 <AnMaster> ehird, waiting 18:05:34 <AnMaster> because I can't see any tar file I made got that problem 18:06:54 <ehird> it was my mistake 18:06:55 <ehird> sorry 18:06:58 <AnMaster> ah 18:07:03 <AnMaster> ehird, so what did you do? 18:07:12 <ehird> long story 18:07:12 <ehird> :) 18:07:18 <AnMaster> ehird, I would like to know 18:07:53 <ais523> heh, I have an entire section about extracting tarballs in the C-INTERCAL docs on the basis that some Windows users might not understand it, so I'd like to know too 18:10:01 <ehird> i had some directories called things like 'src' in ~/ 18:10:56 * ais523 has an idea for a really mean way to confuse a user: create a symlink from every possible valid filename to the user's home directory into the user's home directory itself 18:11:14 <ais523> unfortunately, that would use excessive disk space unless your filesystem optimised it 18:11:27 <ehird> ais523: most filesystems can handle infinite length filenames nowadays 18:11:42 <ais523> well, you could invent one that couldn't 18:11:50 <ais523> limit it to 8.3, for instance 18:11:58 <ais523> yet still have it capable of optimising vast symlink farms 18:12:49 <ehird> Hmm 18:12:53 <ehird> Could you do continuations in sh? 18:13:09 <ais523> ehird: it's a bit hard to get at internal state 18:13:23 <ais523> so you'd probably have to implement your own stack system, etc 18:13:25 <ehird> ais523: i'm sure you could do SOMETHING though.. 18:13:29 <ehird> like.. use && 18:13:31 <ehird> foo && bar && xyz 18:13:36 <ehird> and use exit codes and stuff 18:13:37 <ehird> or something 18:13:48 <ais523> ehird: oh, sh's Turing-complete, so it's possible somehow, the interesting question is how easy it is 18:14:22 <AnMaster> ehird, <ehird> i had some directories called things like 'src' in ~/ <-- yes and? 18:14:28 <AnMaster> how did it happen 18:14:33 <AnMaster> I would like to know 18:14:41 <AnMaster> I got ~/src too 18:14:52 <AnMaster> ~/src/cfunge/trunk is where I keep cfunge 18:15:02 <ehird> AnMaster: i create directories all the time 18:15:08 <AnMaster> yes and? 18:15:15 <ehird> so i thought your tarball did it 18:15:22 <ehird> but i did 18:15:29 <AnMaster> I see, you didn't look for a "cfunge" there? 18:15:34 <ehird> i did 18:15:37 <ehird> it's a long story 18:15:39 <AnMaster> ah ok 18:16:02 <ehird> ais523: you cast printf calls to void 18:16:02 <ehird> wtf 18:16:19 <ais523> ehird: for linting 18:16:36 <ais523> actually, the version of lint I used doesn't care, but some older ones that other people delinted with do 18:16:45 <ais523> after all, it has a return value... 18:17:07 <ehird> ais523: i think i want to die 18:17:12 <ehird> :p 18:17:15 <Deewiant> I'd do #define Printf(x) (void)printf(x) if I were you... 18:17:28 <ais523> ehird: lint can be useful, but can also be annoying 18:17:30 <Deewiant> or, if you prefer, the variadic function version and call vprintf 18:17:39 <ehird> #define LintSucksSoGodDamnMuch (void)printf 18:17:41 <ais523> but being far too false-positivy is useful 18:17:48 <Deewiant> but yes, further, I'd just shut lint up :-P 18:17:58 <ehird> #define LintSucksSoGodDamnMuch (void) 18:18:05 <ehird> LintSucksSoGodDamnMuch printf("really\n"); 18:18:10 <ais523> at least there are lots of comments now where I explain things to humans that Splint flagged up as being suspicious 18:18:24 <ais523> and added in a /*@-something@*/ comment to let Splint know I really meant it 18:19:26 <ehird> ais523: is your template engine custom? 18:19:42 <ais523> ehird: what do you mean by 'template engine' in this context? 18:19:56 <ehird> the template 18:20:03 <ehird> c fiel thingy 18:20:05 <ehird> the $ instructions 18:20:11 <AnMaster> <ais523> ehird: for linting 18:20:17 <AnMaster> yeah that is why I don't use splint 18:20:27 <ais523> ehird: which file? 18:20:28 <AnMaster> it's a good idea but not properly implemented 18:20:32 <ehird> ais523: the template c file 18:20:34 <ehird> for the output 18:20:38 <ais523> it's custom 18:20:47 <ais523> the substitutions are done in a massive switch near the bottom of perpet.c 18:20:52 <ehird> heh 18:20:55 <ais523> just before the bit that calls system() a lot 18:21:19 <ais523> not mine, though, it was there when I started working on the compiler 18:21:59 <ehird> http://golf.shinh.org/p.rb?nop Seperates the usable languages from the toy ones 18:22:00 <ehird> ;) 18:22:30 <ais523> ehird: more to the point, separates the compilers from the interpreters 18:22:51 <ais523> because a compiler erroring out is generally 'failed' on anagolf, but an interp erroring out is generally 'success' if the right output's on stdout 18:22:54 <ehird> ohoooo 18:22:55 <ehird> http://golf.shinh.org/reveal.rb?nop/irori/1204644403&hs 18:22:56 <ehird> cleverrr 18:23:03 <ehird> ais523: hardly 18:23:11 <ehird> it seperates the things taht require verbosity and those that don't 18:23:12 <ehird> :) 18:23:16 <ais523> I contributed ; as a program to every single language, and it 'worked' on most of them 18:23:21 <AnMaster> <ehird> http://golf.shinh.org/reveal.rb?nop/irori/1204644403&hs 18:23:26 <AnMaster> that site is just odd? 18:23:28 <ehird> e.g. Ada and Erlang fails 18:23:30 <AnMaster> lots of errors? 18:23:35 <AnMaster> or maybe I should blame firefox? 18:23:39 <ais523> ehird: what does @ do in Python again? 18:23:41 <ehird> AnMaster: blame firefox 18:23:44 <ehird> ais523: that's haskell 18:23:53 <ehird> in a pattern match, 18:23:55 <ais523> sorry, I said the wrong language for some reason 18:24:03 <ehird> X@Y means that 'match X like normal, but bind Y to the whole thing' 18:24:07 <ehird> (x:xs)@xss 18:24:09 <ais523> I was busy reading Perl documentation at the time, and got confused 18:24:09 <ehird> xss is (x:xs) 18:24:21 <ehird> haskell lets you do patterns on the LHS apparently 18:24:22 <ehird> so main@a=a 18:24:23 <ehird> is main = main 18:24:26 <ehird> so an infinite loop 18:24:32 <ehird> that, obviously, outputs fine 18:24:49 <ais523> main=main errors out in ghc, at least, because it detects the loop 18:24:55 <ehird> ais523: in ghci 18:24:56 <ehird> not ghc 18:25:05 <ehird> in fact 18:25:06 <ehird> not even ghci 18:25:07 <ehird> jus tlambdabot 18:25:07 -!- cherez has quit (Read error: 113 (No route to host)). 18:25:45 <ehird> $ echo 'main=main'>foo.hs&&ghc foo.hs -o loop&&rm foo.hs&&./loop 18:25:49 <ehird> though it might pick up on it eventually 18:25:54 <ehird> but anagolf only runs for ~2 seconds 18:26:37 <ehird> ais523: http://golf.shinh.org/reveal.rb?nop/ais523/1204732604&m4 18:26:40 <ehird> did you not consider a newline? 18:26:41 <ais523> ehird: you're right, but I'm sure I have a memory of the loop being detected somewhere 18:26:49 <ehird> or perhaps a space 18:26:51 <Deewiant> ehird: you can view solutions there? where's the link to reveal.rb? 18:26:57 <ais523> ehird: I forgot about the trailing-whitespace thing 18:27:01 <ehird> ais523: it is if you run it for a while 18:27:09 <ehird> Deewiant: only on closed problems 18:27:09 <ais523> Deewiant: on the contest page, after the deadline 18:27:14 <ehird> the name becomes a link 18:27:15 <ais523> the solutions aren't shown before the deadline 18:27:22 <ehird> some deadlines are infinite 18:27:27 <ehird> and since there's a random number at the end 18:27:31 <ehird> it won't be trivial to guess 18:27:34 <Deewiant> I see 18:27:49 <ais523> ehird: presumably the links wouldn't work even if you did guess them? 18:27:50 <Deewiant> and evidently there's no indication of the deadline in the main listing :-/ 18:28:30 <ais523> well, contests that are before the deadline are listed at the top, but unless a contest ended recently there's no after-deadline vs. no-deadline notification 18:29:05 -!- shinkuzin_ has quit (Read error: 113 (No route to host)). 18:29:56 <Deewiant> ew, topological sorting with regex 18:30:27 <ais523> I hacked up a solution in bash that used tsort, but it doesn't give the first answer in alphabetical order, so it was rejected 18:32:25 <ais523> Deewiant: some Perl golfers will try to do anything with regex 18:32:26 <ehird> i am adding an odd challenge 18:32:33 <ais523> normally because it often ends up shortest 18:32:34 <ehird> because only compiled languages will probably manage 18:32:39 <ehird> print 0 .. 99999 18:32:44 <ehird> that normally takes a while 18:32:51 <ais523> ehird: the binary, alnum, symbol is mine, BTW 18:33:19 <AnMaster> ehird, with leading 0 or not? 18:33:24 <ehird> Print out a lot _56K BEWARE_ 18:33:28 <ehird> 56k beware, amusing 18:33:32 <ehird> AnMaster: with leading 0 and 99999 18:33:48 <ehird> http://golf.shinh.org/p.rb?Print+out+a+lot+_56K+BEWARE_ 18:33:52 <ehird> may crash $BROWSER 18:34:09 <ehird> esp. don't try resizing 18:35:41 <ais523> Firefox managed fine for me 18:36:39 <ehird> heh 18:36:41 <ehird> haskell times out 18:36:45 <ehird> even the one i used to generate 18:37:05 <AnMaster> <ehird> print 0 .. 99999 18:37:08 <AnMaster> mh 18:37:10 * AnMaster tries 18:37:47 <ais523> ehird: even C times out for me 18:37:51 <ehird> does it? 18:37:56 <ehird> maybe a bad example 18:38:06 <ehird> :( 18:38:09 <ais523> I/O-bound would be my guess 18:38:18 <ais523> leave it there and see if anyone finds a solution 18:38:37 <ais523> after all, I was using printf, which is slow 18:38:47 <ehird> real 0m0.424s 18:38:49 <ehird> not too bad.. 18:39:13 <ehird> ais523: maybe storing as an array of chars would work better 18:39:14 <ehird> then just puts 18:39:45 <AnMaster> damn 18:39:50 <AnMaster> ehird, what is the time limit? 18:39:56 <ais523> ehird: that would go over the input size limit 18:40:07 <AnMaster> real 0m2.625s 18:40:09 <AnMaster> locally 18:40:14 <AnMaster> is what my code in bash takes 18:40:15 <ais523> unless you compressed 18:40:20 <AnMaster> ehird, ^ 18:40:26 <AnMaster> so that server must suck 18:40:31 <ehird> ais523: i meant 18:40:34 <ehird> operate on an array of chars 18:40:44 <ehird> char a[6]; 18:40:45 <ais523> ehird: then you'd hit the memory limit 18:40:56 <AnMaster> ehird, what is the time limit 18:40:57 <ehird> you don't get it 18:40:58 <ehird> i mean 18:41:01 <AnMaster> because it fails at 2 seconds 18:41:02 <ehird> char a[6]="0"; 18:41:03 <AnMaster> or so 18:41:06 <AnMaster> ehird, ...? 18:41:06 <ehird> then do arithmetic on that 18:41:09 <ehird> and just puts() when required 18:41:15 <ehird> jeez 18:42:23 <AnMaster> ehird, no? 18:42:33 <AnMaster> how long is timeout on that site? 18:42:37 <ehird> AnMaster: don't ask me!! 18:42:46 <ehird> few seconds 18:43:15 <AnMaster> ehird, then it got a sucky CPU 18:43:36 <ehird> AnMaster: like 1.5 seconds 18:43:41 <AnMaster> ... 18:43:42 <ehird> and its run under limits 18:43:42 <ehird> duh 18:43:49 <ehird> so it cant use resourcse 18:43:58 <ehird> its in the arbitary code execution business 18:44:02 <ehird> it's not gonna let you do just anything 18:44:08 <AnMaster> indeed 18:44:49 <SimonRC> hi 18:46:02 <ais523> ehird: really interesting problem, though, I wonder if anyone will manage to produce that output by any means at all 18:46:08 <ehird> ais523: does underlambda have continuations? 18:46:20 <ehird> if not, you should add 'em :) 18:46:26 <ehird> well, i mean call/cc of course 18:46:43 <AnMaster> real 0m0.335s 18:46:43 <ehird> writing a client-side continuation wiki will be hilarious 18:46:45 <AnMaster> locally 18:46:48 <ehird> you'll get hidden input form fields 18:46:52 <ehird> AnMaster: fisrt-time always lasts more 18:46:52 <AnMaster> ehird, yet it fails due to timeout on server 18:46:56 <ehird> with loads of underload code in it 18:47:01 <AnMaster> ehird, ? 18:47:05 <ehird> AnMaster: running a program the fisrt time always takes longer 18:47:16 <AnMaster> ehird, it tool less than a second locally 18:47:24 <AnMaster> yet that site fails due to timeout 18:47:31 <ehird> AnMaster: running a program the fisrt time always takes longer 18:47:31 <ehird> AnMaster: running a program the fisrt time always takes longer 18:47:33 <AnMaster> every time 18:47:37 <AnMaster> I tried several times 18:47:38 <AnMaster> so... 18:48:14 <AnMaster> ehird, IO on that site sucks, basically? 18:48:24 <ais523> probably due to all the sandboxing 18:48:31 <ehird> AnMaster: no, it redoes the program 18:48:35 <ais523> it overrides syscall IIRC 18:48:35 <ehird> try running a program just installed 18:48:41 <ehird> ais523: anyway, main(_,a){system(gets(a));} 18:48:44 <lament> IO sucks, there's no transformer for it! 18:48:46 <AnMaster> hm 18:48:46 <ehird> why does that timeout for the system challenge? 18:48:51 <ehird> it works on the second 18:48:54 <ehird> but none other 18:49:12 <ais523> ehird: timeouts depend on how many entries there are 18:49:25 <ais523> s/entries/examples/ 18:49:33 <ais523> but I don't think that's the problem here 18:49:37 <ehird> hmm 18:49:40 <ehird> i really want test scripts 18:49:44 <ehird> i'd write one in bash: 18:49:51 <ehird> ./prog; echo $? 18:49:58 <ehird> and expect a number for the output 18:50:01 <ehird> would be fun 18:51:41 <ehird> http://golf.shinh.org/p.rb?Encoder+decoder I love this encoding method 18:51:42 <ehird> :D 18:51:47 <ehird> its just so obvious 18:52:44 <ehird> ,>,,,,,[-<->],[-]+[->,+]<[<]<[>>[.[-]>[>]<[.[-]]<[<]>]]>>[.>>]<<<[.<<] wow 18:53:02 <ehird> ais523: but yeah, underlambda continuations? 18:53:15 <ais523> ehird: C 18:53:27 <AnMaster> ehird, so why does it fail so much at IO? 18:53:33 <ais523> you get the call stack and value stack in one listy thing 18:53:48 <ais523> that you can adapt to become a continuation with a few commands 18:54:04 <ehird> ais523: can you define a command to make that convenient? 18:54:05 <AnMaster> ehird, I tried to make gcc compile a unrolled version to C, it did pretty well here, blazing fast 0.3 seconds, 18:54:13 <ais523> c is going to be a synonym for traditional call/cc, but there are a lot of other sorts of continuation you can make 18:54:13 <AnMaster> yet that server says timout 18:54:16 <AnMaster> timeout* 18:54:26 <ehird> ais523: can you define commands, though? 18:54:30 <ais523> AnMaster: I get 0.01 seconds for a Perl program that goes up to 9999 18:54:37 <ais523> but 29999 times out 18:54:43 <ais523> ehird: I'm not really sure, yet 18:54:52 <ais523> I think so but I haven't worked out the details 18:54:54 <ehird> ais523: btw, the magic line thinig -- i suggest seperating it from the specification 18:54:57 <AnMaster> hm 18:54:58 <ehird> i suggest: 18:55:07 <ehird> if the program starts with #!, interpreters must ignore everything up to the next newline 18:55:24 <ehird> then the actual programming language is all platonic and pure and that's just a nice helper for scripts 18:55:33 <ehird> that doesn't specify interpreter executable name or anything 18:55:38 <ais523> ehird: the whole point of the magic line was actually to make it possible to write an Underlambda interp in m4 18:56:03 -!- jix has quit (Nick collision from services.). 18:56:13 -!- jix has joined. 18:56:14 <ehird> ais523: well, maybe just drop the magic line thing altogether then :-) 18:56:18 <ehird> it's not as if 'underlambda file' is hard 18:56:23 <ehird> it would just make it 'cleaner' imo 18:56:31 <ais523> ehird: I like to have delimiters 18:57:04 <ais523> the | also gives you a way to do program/output separation for interps with one input stream 18:57:35 <ehird> ais523: ok, but the problem is that it's not quite the 'ultimate functional/stack/rewrite language' 18:57:38 <ehird> because it has that kludge 18:57:51 <ais523> it doesn't strike me as being a kludge 18:58:04 <ais523> but it's optional except for primitive interps anyway 18:58:30 <ais523> # is an illegal char in Underlambda, so it's easy enough to tell whether it was given or not 18:58:34 <ehird> ais523: it's a kludge because it brings things like UNIX into the picture 18:58:43 <ehird> and assumes that interpreters are called 'underlambda' 18:58:49 <ehird> and that /usr/bin/env does what you want 18:59:00 <ais523> well, I don't care too much about the script thing 18:59:08 <ais523> #underlambda would almost do just as well 18:59:18 <ais523> but why not make it scriptable if you have the chance? 18:59:33 <ehird> ais523: here's an idea.. 18:59:39 <ehird> make # a comment character to end-of-line 18:59:42 <ehird> yes you can already do that with (...)! 18:59:50 <ehird> but it would provide that script thing without being a kludge 19:00:10 <ais523> comment-to-end-of-line would be a huge kludge 19:00:23 <ehird> ais523: ok, then just make the #! thing an implementation detail 19:00:26 <ais523> however, I'm toying with the idea of a comment-backwards-to-start-of-file syntax 19:00:28 <ehird> same with the m4-required-delimiters 19:00:48 <ehird> then the language itself is pure, platonic, ideal, etc 19:00:55 <ehird> and it's just the interpreter syntax 19:01:49 <ais523> yes 19:02:04 <ais523> there should be separate syntax for the program 19:02:13 <ais523> and what goes on around it to separate things for the interp 19:02:29 <ais523> the #! stuff can just be a recommended method of encapsulating a program for storage in a file system 19:02:36 <ehird> ais523: yes, in a little footnote 19:02:44 <ehird> it's also worth noting that yours sucks for irc bots 19:02:52 <ehird> since you have to input invalid programs and let the irc bot add the magic 19:02:52 <ehird> :) 19:03:04 <ais523> no, you just input program fragments 19:03:18 <ehird> ais523: even so, it would be nicer to be able to input a whole program 19:03:41 <SimonRC> how do you view the actual programs for that golf site? 19:03:50 <ais523> SimonRC: click on a username after the deadline 19:04:27 * SimonRC tries to figure out how it works 19:04:54 <ehird> SimonRC: how what works 19:05:03 <SimonRC> http://golf.shinh.org/reveal.rb?Encoder+decoder/nuko/1202353533&bf 19:05:03 <ehird> its open source 19:05:15 <ehird> ah 19:05:51 <SimonRC> wait, it can't work 19:05:58 <SimonRC> it throws away some of the input it needs 19:06:10 <AnMaster> real 0m0.722s 19:06:15 <AnMaster> for a bash version locally 19:06:17 <AnMaster> ehird, ^ 19:06:35 <AnMaster> ehird, I'd say that server is rather broken 19:06:38 <ehird> SimonRC: well it does work 19:06:40 <ehird> AnMaster: it's not 19:06:47 <ehird> AnMaster: but complaining about it to me won't help. contact shinh 19:06:52 <AnMaster> ehird, it is very very slow 19:06:56 <ehird> ais523: remember that BLIT story I linked? 19:06:58 <AnMaster> ehird, is he on irc? 19:07:07 <ais523> ehird: which one? 19:07:17 <ehird> AnMaster: no. You'll have to use the electronic transmission framework over addresses before a domain name 19:07:18 <ehird> also known as email 19:07:22 <ais523> AnMaster: yes he is, #codegolf on this server 19:07:26 <ehird> ais523: http://www.infinityplus.co.uk/stories/blit.htm 19:07:29 <ehird> ais523: ooh, is he? 19:07:29 <ais523> and is online right now 19:07:35 <AnMaster> well sod it then 19:07:38 <ais523> that's what /whois is for, right? 19:07:43 <ehird> i guess so 19:07:43 <ehird> :D 19:07:44 <SimonRC> oh, wait I can see 19:07:51 <SimonRC> the "encode" is part of the input 19:08:04 <ehird> ais523: well, it occurs to me that BLITs do exist.. 19:08:26 <ehird> the videos which induce seizures in people suffering from epilepsy 19:08:41 <SimonRC> like that pokémon episode 19:09:05 <ehird> yes! 19:09:09 <ehird> did it involve parrots? 19:09:17 <SimonRC> no 19:09:31 <ehird> :( 19:09:32 <SimonRC> that is mentionned here: http://en.wikipedia.org/wiki/Motif_of_harmful_sensation 19:09:38 <ehird> yep 19:09:42 <ehird> AnMaster: bugged shinh yet? 19:09:46 <SimonRC> IIRC there is an explosion and Pikachu's eye's flash 19:09:50 <AnMaster> ehird, too lazy 19:09:52 <SimonRC> only a fe were hurt 19:09:54 <ehird> SimonRC: i know of it 19:10:06 <ehird> denshi something porygon, I believe 19:10:10 <ehird> oh 19:10:11 <ehird> kind of 19:10:17 <ehird> DennÅ Senshi Porygon sez wikipedia 19:10:18 <AnMaster> ehird, also the "gas" alternative refuses code that work locally, it should mention it is x86 not x86_64 19:10:19 <AnMaster> ..... 19:10:41 <ehird> offending frame #1: http://upload.wikimedia.org/wikipedia/en/b/b4/Pikachu_seizure-2.jpg 19:10:50 <ehird> AnMaster: well duhhhh 19:10:56 <ehird> because everyone uses x86_64 and x86 is sooo rare 19:11:25 <AnMaster> ehird, well x86_64 is getting more common 19:11:41 <SimonRC> of course, being a harmful video, it is on Youtube 19:11:47 <ehird> SimonRC: heh 19:11:54 <SimonRC> Monroe was right 19:12:19 <ehird> the promotional video for this horrid olympics logo: http://upload.wikimedia.org/wikipedia/en/e/e4/All_London_2012_logos.PNG 19:12:22 <ehird> caused some seizures, iirc 19:12:34 <Deewiant> how timely, I just watched that pokemon scene a week or two ago 19:12:45 <Deewiant> I recall being surprised at how easily people get seizures 19:12:52 -!- marshmallows has quit ("Leaving"). 19:12:58 <ais523> yes, I remember the news reports, they had to show the olympics video at 1/10 speed on the news so as not to cause seizures in people 19:13:13 <ehird> ais523: yep 19:13:15 <ehird> it was hilarious 19:13:28 <ehird> perhaps they had seizures from the shock of how crap the logo was 19:14:22 <ehird> Deewiant: just watched it 19:14:25 <ehird> was that *it*? 19:14:32 <Deewiant> exactly 19:14:35 <Deewiant> I suppose it was 19:14:40 <SimonRC> on a big TV though 19:14:50 <SimonRC> with a the kid sitting 1m away 19:14:52 <ehird> SimonRC: i guess so 19:14:56 <ehird> hmm, 1m 19:14:58 <SimonRC> in a dark room 19:15:01 <ehird> you give too much credit to little kids 19:15:08 <SimonRC> when they are naturally epileptic 19:15:24 <SimonRC> + usual hysteria 19:15:33 <SimonRC> it's a popular show 19:15:35 <lament> that logo is embarassingly bad 19:15:39 <ehird> lament: you bet.. 19:16:03 <SimonRC> Then, there was the case of Ecky Thump 19:16:14 <ehird> lament: as usual, wikipedia says it best: 19:16:16 <ehird> why is there no logo at the top!? —Preceding unsigned comment added by 86.160.179.159 (talk) 20:22, 30 October 2007 (UTC) 19:16:16 <ehird> It's hidden halfway through the article because everybody's ashamed of it. --67.160.32.3 (talk) 00:02, 27 November 2007 (UTC) 19:16:18 <SimonRC> The sketch in one episode of the Goodies that made a guy die laughing 19:16:32 <ehird> http://en.wikipedia.org/wiki/Fatal_hilarity 19:17:27 <ais523> ehird: that's a great Wikipedia article title 19:17:48 <lament> "London 2012 has stated that the new logo is aimed at reaching young people. " 19:18:10 <ehird> http://www.albinoblacksheep.com/flash/rgb my favourite seizure flash 19:18:33 <ehird> i think it should be my 'under construction' page 19:18:34 <ehird> :D 19:18:47 <lament> "It was widely commented that the logo resembles an image of the cartoon character Lisa Simpson performing fellatio[22] and others have complained that it looks like a distorted Swastika." 19:18:56 <Deewiant> I wonder how people who get seizures from stuff like that pokemon manage on the internet 19:18:59 <ehird> lament: it's true! 19:19:14 <Deewiant> you'd expect them to be dropping like flies 19:19:31 <ehird> Deewiant: well, that WOULD kind of solve the problem.. 19:19:38 <ehird> :p 19:19:56 <lament> now that i look at it, it does look exactly like lisa simpson performing fellatio. 19:20:02 <SimonRC> ehird: ouch my eyes 19:20:05 <lament> amazing that i haven't noticed it before 19:20:11 <ehird> SimonRC: hee 19:20:13 <SimonRC> jesus christ that is bad to look at 19:20:15 <ehird> dudududadadaddudu 19:20:17 <ehird> dudududadadadu 19:20:24 <ehird> dududududududududududududududu 19:21:00 <SimonRC> Surely that was developed for use at Gitmo? 19:21:32 <SimonRC> OTOH, the shot where there are just the three stripes that don't flash ruins the effect 19:21:35 <SimonRC> maybe 19:22:43 <ehird> speaking of epilepsy 19:22:43 <ehird> http://www.theinquirer.net/gb/inquirer/news/2008/03/31/epilepsy 19:22:49 -!- olsner has joined. 19:22:53 <SimonRC> hi 19:23:03 <ehird> i love the jump from 'The site linked to ebaumsworld' to 'anonymous did it' 19:23:32 <SimonRC> heh 19:23:38 <olsner> heh, I love how people are treating "anonymous" as if it was a single organized entity 19:23:41 <SimonRC> as if Anonymous were an organisation 19:24:12 <SimonRC> the whole fucking point is that not only do they not have names, they do not have authewntication or authorisation 19:24:39 <ehird> SimonRC: to be honest they do it themselves 19:24:46 <SimonRC> there can't be any leadership as they cannot tell one another apart and cannot tell "members" from non-"members" 19:24:46 <ehird> I'm talking about the 7chan&co that are attacking CoS 19:25:14 <ehird> SimonRC: Well, they do all use one wiki & irc channel... They have unintentionally created an entity out of themselves 19:25:26 <SimonRC> kinda 19:25:53 <lament> at least my city has a nice logo for its upcoming olympics: http://en.wikipedia.org/wiki/Image:2010_Winter_Olympics_logo.svg 19:26:37 <ehird> stonehenge robot 19:26:44 <SimonRC> yup 19:27:52 <lament> it's a statue that's standing on the beach downtown 19:28:27 <ehird> bullcrap 19:29:35 <ehird> ais523: is there an underlambda that works Right Now and you can write stuff in? 19:29:44 <ais523> yes 19:29:48 <ehird> ais523: heh: 'I feel we have too many problems these days. Please make some time delay before adding problem. I personally think ~5 active problems are enough to work hard for each problem.' 19:29:49 <ehird> poor shinh 19:29:52 <ehird> can't keep up 19:29:52 <ehird> ;) 19:29:54 <ais523> I think I pasted it already, though 19:30:01 <ais523> I can dig it out again if you like 19:30:16 <ais523> (it's only half-complete, but what's implemented works, and I haven't written the rest of the implementation) 19:30:26 <ais523> s/implementation/specification/ 19:31:19 <AnMaster> who was it that said were were out of over/under/un/whatever lambda names? 19:31:25 <AnMaster> a few days ago 19:31:55 <ais523> ehird said it 19:32:06 <AnMaster> well I just came up with a name 19:32:11 <AnMaster> uberlambda 19:32:14 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 19:32:16 <AnMaster> sounds fun 19:32:52 -!- Judofyr has joined. 19:34:12 <ais523> ehird: http://pastebin.ca/965007 if you're interested 19:34:24 <ais523> well, it's there even if you aren't interested 19:34:39 <SimonRC> hmm 19:34:46 <ehird> ais523: that is redundant 19:34:56 <ehird> you said 'if' not 'iff' 19:34:56 <ais523> ehird: in what way? 19:35:10 <ehird> if (you.interested) { exists = true; } /* exists may be true anyway */ 19:35:12 <ais523> ehird: if doesn't imply not-fi 19:35:15 <ehird> what you said is like: 19:35:23 <ehird> if (you.interested) { exists = true; } else { exists = true; } 19:35:30 <ais523> I stated that exists was true anyway, not merely that it may be true anyway 19:35:50 <ais523> so yes, redundant, but only because my second statement was a generalisation of the first 19:36:22 <ehird> ais523: is that as usable as Underload/more usable/what? 19:36:24 <ehird> or is it less 19:36:33 <ais523> it's more usable than Underload 19:36:38 <ais523> it has arithmetic, if you've noticed 19:36:52 <ais523> (it's meant to be able to divide too but I couldn't figure out the rewrite rule) 19:37:16 <ais523> the idea is that although you /can/ write the lower-tiered things with rewrite rules, any sane implementation should optimise things like addition 19:37:22 <ais523> (although that one doesn't) 19:37:23 <ehird> ais523: any eaxmples? 19:37:35 <ais523> not really 19:37:44 <ais523> I have a few files I've been working on 19:38:22 <ais523> ((::**:*:*:*:*)((:)~*(*)*:o(h)~^^O):::**::***^!)::*::***^ohhhhhhhhhhhO( 19:38:22 <ais523> )!()i((o(h):*::**::*::***^hO^)~HI:^):^^uhhhhhhhhhhhO 19:38:31 <ais523> that's a test of tier 1a 19:38:35 <AnMaster> wtf 19:38:37 <AnMaster> is that 19:38:46 <ais523> low-tier Underlambda 19:38:50 <AnMaster> oh god 19:38:55 <ais523> the sort which is easy to implement, but hard to write 19:39:07 <ais523> as you get into higher tiers it becomes easier to write and more readable, but harder to implement 19:39:14 <ais523> but the high tiers compile into the low ones 19:39:43 <ehird> (Hello, world!)S doesn't work 19:39:44 <ehird> :( 19:39:52 <ehird> (hello)S outputs (hello) 19:39:53 <ais523> ehird: no 19:40:09 <ais523> and (hello)S outputting (hello) is unreliable and shouldn't be guaranteed 19:40:21 <ais523> you see, Underlambda has first-class functions, rather than first-class strings 19:40:37 <ais523> there'll be some syntax like "Hello, world!"somethinggoeshere in a higher tier, though 19:41:20 <ehird> ais523: so right now i cannot write real programs 19:41:20 <ehird> great 19:41:21 <ehird> :) 19:41:30 <ais523> ehird: that's why it's a work in process 19:41:39 <ais523> s/process/progress/ 19:41:55 <ehird> ais523: C doesnt' work yet 19:41:59 <ais523> BTW, it will eventually be the case that Brainfuck minus comments is also legal Underlambda 19:42:03 <ais523> ehird: C ought to work 19:42:11 <ais523> but remember that it isn't call/cc, but a precursor to it 19:43:35 <ehird> ais523: (a)(b)CS 19:43:36 <ehird> outputs nothng 19:43:41 <ais523> call/cc can be implemented in terms of it; prepend an A and append ^Q works as long as you don't want to send a payload, if you want to send payloads it's slightly more complicated 19:43:57 <ais523> ehird: it works for me 19:44:28 <ais523> I get ((a)(b)(S)) mixed in with the debug output 19:45:44 <ais523> you can turn the debug output off by commenting one of the lines out for a cleaner view 19:45:51 <ehird> ais523: make it: 19:45:57 <ehird> ((STACK)(CONT)) 19:46:01 <ehird> otherwise it's a bit fiddly 19:46:12 <ais523> ehird: no, you're defeating the whole point of C 19:46:16 <ais523> that sort of thing is what c is for 19:46:28 <ais523> C is the low-tier accessor routine that lets you implement it 19:46:33 <ehird> ais523: well, even so 19:46:36 <ehird> it's (STACK(CONT)) 19:46:38 <ehird> which is silly 19:46:40 <ehird> whichever way you look at it 19:46:59 <ais523> ehird: not when you take into account how Underlambda lists work 19:47:24 <ais523> it's just ((a)(b)(c)) and you use continuations and all sorts of fancy tier 3 stuff to process them (or alternatively, an optimising interp that does it sanely) 19:47:37 <ehird> eh. ais523: nice quine: C:^^ 19:47:39 <ehird> err 19:47:40 <ehird> not quine 19:47:43 <ehird> infini loop 19:48:01 <ais523> why the colon? 19:48:10 <ehird> ais523: to duplicate the continuation 19:48:16 <ehird> otherwise, once we ^^, the program becomes '^^' 19:48:56 <ais523> OK, I see 19:50:01 <ehird> CC^^ also works 19:50:51 <ais523> that one's cooler 19:51:20 <ais523> there's a stack element that's apparently doing nothing but is in fact providing input to the second C 19:53:42 <ehird> ais523: C^C^C^C^ 19:53:47 <ehird> keep adding more ^s, get more stuff 19:54:19 <ais523> that's a nice recursive pattern there 19:54:30 <ais523> oh dear, are we going to end up with a new rival to Subtle Cough? 19:55:47 <ais523> somehow I doubt that C and ^ are TC by themselves 19:55:50 <ehird> heh 19:56:03 <ehird> well its certainly more powerful than subtle cough 19:56:29 <ais523> it's a bit louder than a subtle cough 19:56:39 <ais523> but not quite an obvious cough 19:57:21 <ais523> wow, CCC^^ made Perl segfault 19:58:01 <ehird> me too 19:58:05 <ehird> its pretty though 19:58:23 <ais523> I wonder why it segfaults on something as innocent-looking as that? 19:58:30 <ais523> it's not as if the strings got very long 19:59:31 <ehird> ais523: report it as a bug 19:59:53 <ais523> I'd have to pin it down first 20:00:09 <ais523> and anyway, I'm tired after a night of no sleep, so I think I'll go home now 20:00:12 -!- ais523 has quit ("bye!"). 20:00:22 <ehird> i was just about to ask something 20:00:23 <ehird> :< 20:17:08 <SimonRC> through lack of inspiration, I decided to re-write the team whiteboard upside-down 20:18:10 <AnMaster> SimonRC, eh? 20:18:35 <SimonRC> FDJ 20:18:39 <AnMaster> ??????????? 20:18:39 <SimonRC> um, 20:18:42 <SimonRC> AFJ 20:18:50 <AnMaster> what are you talking about? 20:19:18 <SimonRC> tomorrow 20:24:08 <AnMaster> ???? 20:24:10 <AnMaster> whatever 20:24:14 <ehird> AnMaster: april fools day 20:24:14 <ehird> duh 20:24:26 <AnMaster> ehird, that is several hours left 20:24:34 <ehird> its not even april 1st yet.. 20:24:39 <ehird> 20:24 31 march 20:24:44 <AnMaster> mån mar 31 21:24:44 CEST 2008 20:24:45 <AnMaster> here 20:24:54 <ehird> SimonRC did it for TOMORROW 20:25:00 <AnMaster> ah right 20:25:00 <ehird> i.e. the next time people will see it is toorrow 20:25:01 <RodgerTheGreat> oh, man- I need to plan some kind of brilliant april fools day joke 20:25:02 <ehird> *tomorrow 20:25:12 <ehird> RodgerTheGreat: get a BLIT onto some high-profile website 20:25:17 <AnMaster> I wonder what the RFC ppl will come up with 20:26:26 * AnMaster writes a note to himself so he won't get fooled by other family members in the morning 20:26:26 <SimonRC> RodgerTheGreat: how about the old staples of turning shit upside-down, and related ones 20:26:36 <AnMaster> I'm always so sleepy in the mornings 20:26:40 <SimonRC> or post-its on the bottom of the mice 20:26:57 <RodgerTheGreat> SimonRC: nah, but coming up with something *involving* staples could be fun 20:27:12 <RodgerTheGreat> maybe I'll burn all my roommate's possessions 20:27:17 <AnMaster> nah 20:27:22 <AnMaster> that would be too evil 20:27:39 <AnMaster> at least if you did it 20:27:39 <RodgerTheGreat> better: 20:27:52 <olsner> april's fools would be to make your roommate *believe* you've burned all her possessions 20:28:02 <AnMaster> indeed 20:28:34 <ehird> RodgerTheGreat: i still say BLIT 20:28:41 <RodgerTheGreat> "steal" everything. He wigs out like "where's all my stuff?" "Ahahaha- just kidding. I took all the stuff and just hid it" "Oh- heh. Where is it?" "In this small box. I burned everything to make sure you wouldn't find it by accident." 20:28:49 <SimonRC> heh 20:31:06 -!- cherez has joined. 20:31:06 <olsner> lossy compression 20:31:27 <RodgerTheGreat> olsner: exactly! :D 20:31:28 <SimonRC> I wonder if there is something funny I could do with the book-case... 20:31:42 <olsner> turn it around, so that the books are facing the wall 20:31:57 <SimonRC> that just feels unfunny though 20:32:01 <RodgerTheGreat> SimonRC: scan every book, mirror all the pages, reprint and rebind them all. 20:32:11 <SimonRC> too difficult 20:32:19 <RodgerTheGreat> but just imagine the effect 20:32:23 <SimonRC> um, yeah 20:32:34 <RodgerTheGreat> if I had the proper equipment, I'd totally do it 20:32:39 <olsner> you could reverse someone's desk, like put the monitor facing backwards, with all the cables hanging down the front 20:32:53 <SimonRC> not possible with these desks 20:33:02 <olsner> grmbl 20:33:23 <RodgerTheGreat> how about just editing people's config files to mirror the stereo to their speakers. See how long, if ever, it takes for them to notice. 20:33:23 <SimonRC> and that just sounds like a way to waste people's time without being funny 20:33:33 <SimonRC> no speakers 20:33:36 <SimonRC> and no root 20:33:37 <RodgerTheGreat> fuck 20:33:41 <RodgerTheGreat> double fuck 20:33:52 <olsner> kind of unfunny waste of someone's time, yeah 20:34:00 <SimonRC> I could swap people's monitors though 20:34:04 <SimonRC> we get 2 each here 20:34:11 <ehird> its very simple 20:34:13 <ehird> the best thing to do is 20:34:17 <ehird> take someone's monitor away 20:34:21 <ehird> make a photo of the screen behind them 20:34:22 <olsner> "Cake in the canteen!" -> "Fooled ya!" note instead of cake 20:34:22 <ehird> then 20:34:26 <ehird> claer off the desktop 20:34:26 <ehird> 100% 20:34:30 <ehird> so that its just the bg image 20:34:35 <ehird> and set that picture to the background 20:34:43 <ehird> 'who the hell took away my monitor's screen?!?!?!?!' 20:34:49 <olsner> heh, wonder if that fool's anyone though 20:34:53 <RodgerTheGreat> "invisible monitor lol" 20:34:56 <SimonRC> haven't6 got the equipment 20:34:57 <olsner> *fools 20:34:58 <ehird> olsner: people do it just as a regular desktop 20:35:02 <ehird> but as a prank it woudl work great 20:35:16 <sekhmet> Could take a screenshot of the person's desktop, set that as the background, then remove all their actual icons 20:35:18 <oklopol> i vote for a shot in the head 20:35:23 <SimonRC> sekhmet: boring 20:35:24 <ehird> http://www.flickr.com/photos/w00kie/7234920/in/set-180637/ 20:35:32 <ehird> that, but without the menus etc 20:35:33 <sekhmet> SimonRC: Yeah, I lose. 20:35:33 <sekhmet> :/ 20:35:35 <ehird> sekhmet: too common 20:35:36 <oklopol> ...or what were we talking about? 20:36:32 <olsner> oklopol: check the date of today or tomorrow (depending on time zone) 20:36:35 <ehird> more: http://www.flickr.com/photos/w00kie/sets/180637/ 20:36:45 <oklopol> olsner: check my nick, i'm never serious 20:37:00 <oklopol> ...assuming you recall me telling that to you earlier 20:37:36 <oklopol> well i guess in the usual case i have no idea what day it is 20:37:44 <olsner> never serious? not even when saying you're never serious? 20:37:53 <oklopol> but it's pretty simple to guess from what you're ...swiggling 20:37:57 <oklopol> i'm not a man of words 20:38:13 <oklopol> olsner: when saying that, i'm the least serious ever 20:38:20 <olsner> from my viewpoint, however, you're made entirely of words 20:38:36 <olsner> oklopol :: [String] 20:45:39 <ehird> oh wow 20:45:39 <ehird> http://www.flickr.com/photos/w00kie/11033741/in/set-180637/ 20:48:09 <SimonRC> kewl 20:48:14 <ehird> yeah 20:48:21 -!- wildhalcyon has joined. 20:48:23 <ehird> (trick: the sleeve is the only thing outside the pic) 20:48:31 <SimonRC> I guessed 20:48:38 <wildhalcyon> hola 20:49:15 <olsner> I read the second comment and figured it out instantly 20:52:56 <SimonRC> well, the next thing to do is set up two screens to look like the two portals from Portal. 20:55:06 <ehird> SimonRC: wait, how about 20:55:09 <ehird> two screens back to back 20:55:15 <ehird> one looks through to the wall 20:55:17 <ehird> and so does the other 20:55:21 <ehird> :D 20:55:30 <ehird> so it seems like there's TWO empty screens 20:55:32 <ehird> from both sidse 20:55:36 <ehird> actually, wait, no 20:55:37 <SimonRC> which one? 20:55:39 <ehird> one screen looks to the wall 20:55:42 <ehird> the other one sees the other screen 20:55:43 <ehird> :D 20:58:17 <wildhalcyon> So, ehird, I took what you said yesterday and spent some time looking at my project. 20:59:51 <ehird> and ate it 20:59:52 <ehird> ? 21:00:16 <wildhalcyon> No, I thought about how I might tweak it to make it more... real world applicable. 21:00:19 <ehird> :) 21:00:35 <wildhalcyon> I didn't have any access to outside communication, I was very bored. 21:00:42 <wildhalcyon> I came up with a design I thought was pretty neat 21:01:32 <wildhalcyon> I wanted to look at a couple things first - to really flesh out the idea, y'know? 21:02:15 <wildhalcyon> Unfortunately, what I implemented was very, very close to Smalltalk. :-( 21:04:45 <wildhalcyon> There are some differences - I've made processes and interfaces part of the language structure, but otherwise its very similar. 21:05:20 <ehird> wildhalcyon: So use smalltalk! 21:06:15 <wildhalcyon> But I was trying to create something different. Unique. I kind of feel like I failed in that endeavor 21:17:30 <ehird> wildhalcyon: You independantly invented Smalltalk. 21:17:44 <ehird> Many people have started at a basis and arrived at something terrible. 21:17:51 <ehird> But you're clever enough to come up with Smalltalk. 21:17:54 <ehird> That's pretty good, I'd say. 21:20:04 <GregorR> This is simply a sign that Smalltalk is the messiah. 21:22:41 -!- RedDak has joined. 21:23:56 -!- wildhalcyon has quit (Read error: 104 (Connection reset by peer)). 21:25:19 -!- wildhalcyon has joined. 21:25:26 <wildhalcyon> Sorry, back 21:26:29 <wildhalcyon> I don't want to say I implemented Smalltalk, or wrote a smalltalk specification, but all the ideas I had were ideas that were written into Smalltalk - including some things such as what questions an object should be able to ask - or even the concept of objects asking questions 21:32:43 <SimonRC> wildhalcyon: have you looked at colorforth? 21:32:52 <wildhalcyon> I've glanced at it once, why? 21:33:01 <SimonRC> I thought it might give you ideas 21:33:05 <SimonRC> like the color 21:33:16 <SimonRC> or the minimalism 21:33:31 <lament> or the insanity? 21:33:40 <SimonRC> that too 21:34:12 <wildhalcyon> I'm down with the last two 21:34:12 <lament> also, smalltalk IS the messiah. 21:34:14 <wildhalcyon> color too, alright 21:34:19 <wildhalcyon> I don't know abotu that lament. 21:34:26 <wildhalcyon> I'm not crazy about the syntax 21:34:32 <SimonRC> wildhalcyon: more generally, the pre-parsing 21:34:33 <lament> wildhalcyon: well, why did you invent it and not something else? :{ 21:35:04 <wildhalcyon> I didn't invent the syntax, just the language itself 21:35:06 <wildhalcyon> and the internet 21:35:12 <wildhalcyon> and color. 21:35:24 <lament> the syntax is a very small part of smalltalk. 21:35:30 <lament> it's superficial. 21:35:55 <lament> Squeak has several alternate syntaxes 21:36:04 <lament> you can switch from one to another in the editor 21:36:16 <wildhalcyon> For real? 21:36:19 <wildhalcyon> alternative syntaxes? 21:36:26 <lament> you can probably add your own fairly easily 21:37:09 <lament> too bad it's squeak :( 21:37:35 <ehird> squeak sucks because of its UI 21:37:39 <ehird> and its closed-world view 21:37:41 <lament> (also, what's wrong with the syntax? the method calls in particular are awesome) 21:37:45 <wildhalcyon> well, I could write my own UI too 21:37:46 <ehird> i don't mind the vm + custom ui view 21:37:48 <ehird> but plz make it not as ugly 21:37:55 <ehird> and plz make outside-world interaction easy 21:37:55 <lament> ehird: the ui's allright 21:38:05 <wildhalcyon> lament - its weird how sometimes the variables go in front, sometimes in back. And they're addicted to colons 21:38:09 <lament> but the closed world thing kinda kills it :( 21:38:13 <lament> wildhalcyon: ?????? 21:38:16 <lament> what? 21:38:34 <ehird> wildhalcyon: you sound like everyone who has never programmed in smalltalk 21:38:46 <wildhalcyon> I never have programmed in smalltalk 21:38:47 <ehird> & only superficially understands it 21:39:09 <lament> wildhalcyon: perhaps you should. It is the messiah after all. 21:39:10 <ehird> suprise! 21:39:18 <ehird> wildhalcyon: then you don't know if you invented smalltalk or not 21:39:20 <wildhalcyon> I'm only complaining about the syntax, not the deeper structure 21:39:31 <lament> yeah, but it looks you don't know/don't understand the syntax 21:39:59 <wildhalcyon> Well, maybe I don't I guess. 21:40:04 <GregorR> Smalltalk's syntax is simple and elegant. 21:40:22 <lament> heh : http://www.esug.org/whyusesmalltalktoteachoop/smalltalksyntaxonapostcard/ 21:40:44 <wildhalcyon> thanks for that 21:41:09 <ehird> #(..) sucks though 21:41:18 <ehird> you should be able to do expressions in it 21:41:19 <ehird> not just constants 21:42:24 <SimonRC> bah, real Smalltalks use _ for assignment, and render it as left-arrow 21:42:27 <SimonRC> :-) 21:42:29 <ehird> SimonRC: :) 21:42:36 <ehird> Squeak renders ^ as up-arrow 21:42:37 <ehird> i love it 21:42:46 <SimonRC> _ was originally left-arrow, to go with ^ as up-arrow 21:43:02 <lament> i'd prefer <- 21:43:04 <SimonRC> squeakhas both of those 21:43:19 <SimonRC> a<-b a < (-b) 21:43:25 * SimonRC goes to bed 21:43:34 <ehird> byebye SimonRC :-) 21:43:34 <wildhalcyon> Well, this turned out worthwhile then 21:43:44 <wildhalcyon> bye SimonRC 21:43:47 <ehird> wildhalcyon: try programmign in smalltalk :) 21:43:48 <lament> of course, the idea of arbitrarily replacing characters with other characters fits nicely with smalltalk's idea of a closed world 21:44:02 <wildhalcyon> what do you mean by closed world? 21:44:03 <lament> or at least, squeak's 21:44:14 <ehird> wildhalcyon: when you start squeak 21:44:17 <ehird> you get one window 21:44:20 <ehird> where its own graphics engine runs 21:44:26 <ehird> and its own windows, font rendering, mouse handling etc 21:44:30 <lament> wildhalcyon: many smalltalks, including squeak, try to be an operating system instead of just an interpreter 21:44:37 <ehird> and generally you are encouraged to stay out of things like the filesystem 21:44:41 <ehird> and handle everything in the VM 21:44:46 <ehird> the VM can be stored and reloaded from a single file 21:45:03 <lament> squeak is an operating system for its VM 21:45:15 <ehird> lament: the reason of course is that smalltalk WAS an operating system 21:45:31 <wildhalcyon> Oh, okay 21:45:36 <lament> sure, and that's fine, but these days it's a pretty dumb approach 21:45:48 <lament> on the other hand, gnu smalltalk seems to be under active development :) 21:45:48 <wildhalcyon> so its closed in the sense that it keeps you out of the rest of your machine? 21:45:54 <ehird> wildhalcyon: not keep you out 21:45:59 <ehird> just nudge you in the other direction 21:46:00 <ehird> hard. 21:46:43 <wildhalcyon> ok 21:46:43 <lament> the real issue is that the concept of a "program" makes a lot sense in smalltalk than it does in, say, java 21:46:48 <lament> er 21:46:51 <lament> *a lot LESS sense 21:46:56 <ehird> yeah 21:47:03 <ehird> smalltalk is a bunch of objects 21:47:05 <wildhalcyon> Well, maybe I can still implement my design in Smalltalk. That might still be interesting. 21:47:12 <ehird> and an app is nothing 21:47:13 <lament> which is really fun one on hand, but absolutely painful and retarded on the other. 21:47:17 <ehird> you just create objects and tell them to do stuf 21:47:19 <ehird> f 21:47:21 <ehird> just like an OS 21:47:28 <lament> and likely one of the main reasons why smalltalk died 21:47:29 <ehird> lament: you CAN do headless stuff with squeak iirc 21:47:32 <ehird> there's even gtk bindings and stuff 21:48:19 <lament> ehird: sure but i don't even want to think about the terrible dependency hell that results due to everything being together as one Big Ball Of Mud while you're developing it. 21:48:31 <wildhalcyon> Can you spawn additional processes in smalltalk from a single process? 21:48:32 <ehird> lament: yeah 21:48:34 <ehird> it's not ideal 21:48:42 <ehird> lament: what do you think about Factor? 21:48:48 <ehird> its listener/IDE thing is custom ui 21:48:50 <ehird> but it supports scripting 21:48:54 <lament> i haven't seen it 21:49:00 <ehird> its like Squeak lite that hugs the outside world 21:49:11 <lament> i think stack based languages are stupid 21:49:29 <wildhalcyon> Why? (I agree, but just curious what you think) 21:49:41 <ehird> lament: not stack-based 21:49:42 <ehird> concatenative 21:49:42 <lament> because a stack is a very unnatural abstraction 21:49:43 <ehird> :) 21:50:01 <ehird> lament: so unix pipes are unnatural? 21:50:04 <wildhalcyon> Lament, only if you're not talking about a stack of books, or papers, or anything else that appears naturally as a stack 21:50:22 <lament> ehird: unix pipes are dataflow 21:50:29 <ehird> lament: so is a stack language 21:50:44 <lament> ehird: how do you do "rot" in unix? 21:51:08 <ehird> lament: you don't because unix pipes are crippled dataflow 21:51:19 <lament> ehird: no, you don't because it's not stack-based 21:51:21 <ehird> (languages (applicative (in (backwards (is (composition (function))))))) -- Slava Pestov, creator of Factor 21:51:44 <ehird> to be honest most functions i write are function composition with a little bit of application 21:51:52 <ehird> so that seems reasonable 21:57:03 -!- jix has quit ("CommandQ"). 22:04:52 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:06:19 -!- Judofyr has joined. 22:10:40 <lament> ehird: a program (a function) should deal with the stuff in the domain of the problem it is solving. 22:10:58 <lament> ehird: and not with the stuff which is completely irrelevant to the problem it is solving. 22:11:18 <lament> "A programming language is low level when its programs require attention to the irrelevant." 22:11:41 <lament> stack management is exactly this type of low-level irrelevant stuff. 22:12:28 <lament> also, remember the whole conversation in #haskell from yesterday about how good names are and how silly Peaker is for trying to get rid of them. Having a stack means exactly that - you get rid of names. 22:13:40 <wildhalcyon> Smalltalk is pretty cool 22:13:50 <wildhalcyon> I read the design principles document 22:13:56 <ehird> lament: well, the idea is making it high-level enough through defining words that you don't see the stack manip 22:14:01 <ehird> & providing combinators to hide it 22:14:03 <ehird> like recursion in haskell. 22:14:22 <lament> ehird: that doesn't solve the loss-of-names problem 22:14:27 <lament> which also happens in haskell a lot 22:14:33 <lament> (esp. with pointfree style) 22:14:57 <lament> compare and contrast with the wonderful magical smalltalk method call syntax :) 22:15:00 <ehird> lament: but haskell is restricted to one return value 22:15:10 <ehird> and using (.) the rightmost can only consume one value 22:15:16 <ehird> and also since haskell isn't designed for that 22:15:17 <lament> ehird: right, which makes the problem a little less important 22:15:20 <ehird> it doesn't have a lot of the useful combinators 22:15:36 <ehird> real concatenative languages have useful combinators and none of those restrictions 22:16:16 <lament> you still have to keep track of the stack (i'm guessing) 22:17:32 <lament> hell, 'dup' is the first word introduced 22:17:48 <lament> in the cookbook 22:18:29 <lament> also, the argument about function application being backwards looks completely retarded given code like this: 22:18:33 <lament> [ drop "negative" ] [ zero? [ "zero" ] [ "positive" ] if ] 22:19:12 <ehird> lament: you don't have to keep track of the stack because there are high-level combinators doing it for you 22:19:20 <ehird> and introducing 'dup' is just like introducing recursion in a haskell tutorial 22:19:28 <ehird> you rarely use it 22:20:03 <lament> honestly this single defn is enough to make me never look at Factor again 22:20:04 <lament> : sign-test ( n -- ) dup 0 < [ drop "negative" ] [ zero? [ "zero" ] [ "positive" ] if ] if print ; 22:20:14 <ehird> lament: it's a COOKBOOK 22:20:19 <ehird> also, that word definition is horible 22:20:24 <ehird> that is true 22:20:27 <ehird> 'Shuffle word and definition cookbook' 22:20:29 <ehird> that's 'reference' 22:20:31 <ehird> not tutorial 22:20:37 <lament> ehird: can you give a good-looking definition for sign-test? 22:20:56 <ehird> lament: you would rarely want to write a function like that 22:21:05 <ehird> #concatenative is the factor channel. ask them. i don't code in factor much 22:21:10 <lament> i see :) 22:21:29 <lament> i don't want to go there, it would come across as trolling 22:21:55 <ehird> lament: they're very friendly 22:22:07 <ehird> just say that you were wondering if this looks ugly to anyone else 22:22:08 <wildhalcyon> alright, I need to get out of here. Thanks for the help ehird and lament 22:22:08 <ehird> or something 22:22:13 <ehird> bye wildhalcyon :) 22:22:47 -!- wildhalcyon has left (?). 22:22:48 <lament> aha, here it is in a different part in the cookbook, using a different combinator: 22:22:51 <lament> { { [ dup 0 > ] [ "positive" ] } { [ dup 0 < ] [ "negative" ] } { [ dup zero? ] [ "zero" ] } } cond 22:23:13 <ehird> lament: that will look better on multi lines 22:23:20 <ehird> { { [ dup 0 > ] [ "positive" ] } 22:23:20 <lament> why the 'dup's everywhere? because stack-based languages suck 22:23:25 <ehird> lament: err no 22:23:28 <ehird> because that's not typical code 22:23:29 <ehird> seriously 22:23:32 <ehird> #concatenative 22:23:49 <lament> also, the 'cond' at the end is just so ugly 22:23:57 <lament> maybe i'm not Japanese enough 22:23:58 <lament> to appreciate it 22:24:13 <ehird> lament: Slava Pestov is certainly not japanese.. 22:24:16 <ehird> #concatenative 22:24:29 <lament> you're reading the program top to bottom. If the cond body is two pages long, you have to scroll down first to see that it's a cond, then scroll back up. 22:24:40 <ehird> #concatenative 22:24:45 <ehird> also 22:24:49 <lament> if it's not two pages long, you still have to do it mentally 22:24:49 <ehird> if you hae a two-page long cond body 22:24:52 <ehird> your code is fucked 22:25:23 <lament> if it's two lines long, you still have to glance at the end of the thing to see that it's a cond. The point is, you just can't read the code in order that it's written. 22:25:58 <lament> anyway, you don't program in Factor so i don't have to convince you of anything :) 22:26:00 <ehird> #concatenative 22:26:01 <ehird> #concatenative 22:26:01 <ehird> #concatenative 22:26:06 <ehird> lament: i do occasionally 22:27:06 <lament> you suggest me to go to #concatenative just to tell them "hey, your language sucks"? 22:27:47 <ehird> no 22:27:53 <ehird> to ask them about your queries in a reasoned manner 22:27:59 <ehird> and debate the plusses and minuses 22:28:07 <lament> as far as i can see, they're not queries. 22:28:08 <lament> :) 22:28:25 <ehird> lament: they are, they have the implicit 'Am I wrong?' 22:28:34 <ehird> you are new to factor, you are unconvinced. of course they'll be friendly 22:28:37 <lament> i'm just saying it sucks, and i think i have explained why. I'm not wrong. :) 22:28:55 -!- RedDak has quit (Remote closed the connection). 22:29:06 <ehird> lament: you are wrong, and #concatenative will tell you why 22:29:17 <lament> (not factor, which i'm sure is awesome. Just the idea of stack-based languages) 22:29:21 <ehird> being 100% sure that you are correct without asking the people who can truly tell you why they think you are wrong is just idiotic 22:29:57 <lament> well, i'm clearly right about the difficult-to-read word order 22:30:14 <ehird> lament: just ask 22:30:17 <ehird> and no 22:30:19 <lament> about what??? 22:30:20 <ehird> you are not clearly right 22:30:25 <ehird> #concatenative. seriously 22:30:31 <lament> yes, i'm clearly right 22:30:40 <lament> just like i'd be clearly right if i said "lisp has lots of parentheses" 22:31:06 <ehird> #concatenativeeeeee 22:36:42 <ehird> lament: just joining doesn'tt help, i imagine 22:36:42 <ehird> :p 22:37:14 <lament> fine 22:38:47 <ehird> lament: neither does leaving again 22:38:48 <ehird> :p 22:39:34 <lament> since you do program in factor, feel free to tell me how i'm wrong if you ever find out :) 22:47:58 <lament> haha "While there is a very nice slope of indentation as one follows code down into the depths of nesting, that is about the only notion of elegance that could possibly come to one's mind when considering this code." 23:32:36 -!- ehird_ has joined. 23:33:32 -!- ehird has quit (Read error: 113 (No route to host)). 23:34:17 <ehird_> bye ghost 23:35:00 -!- ihope has joined. 23:35:08 <ihope> Ello. 23:48:32 -!- timotiis has quit ("leaving"). 23:54:58 -!- wildhalcyon has joined.