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: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 <ehird> > ((Array new '(1 2 3)) length)
02:55:07 <oklofok> Ask an obvious question and you may hear "KVG," short for "Check it on Google, you idiot." <<< omg, i'm old.
02:55:36 <oklofok> (except in english, can i be young in english?)
02:57:33 <oklofok> 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 <oklofok> 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 <oklofok> and no, this will not be a monologue, because i'll refullscreen now ->
03:11:16 <pikhq> Most of the shows on TV are terrible shows.
03:11:35 <pikhq> And the ones that aren't terrible are so bogged down with ads so as to make them worthless.
03:12:38 -!- ehird has quit ("Konversation terminated!").
03:13:31 -!- GregorR-L has joined.
03:21:48 <pikhq> So, you decided on a grad school?
03:22:17 <Sgeo> pikhq, are you having lagdeath in Sine?
03:22:28 <pikhq> Sgeo: Not connected to Sine.
03:33:15 <immibis> http://www.reghardware.co.uk/2008/02/29/msi_stirling_cooling/
03:46:28 <slereah_> But my CPU is in a vertical position! :o
03:46:40 <slereah_> How would the hot air reach the engine!
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:44 <GregorR-L> pikhq: I haven't officially made a decision - this trip is comp'd by Purdue ^^
04:06:20 <GregorR-L> 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: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:54:24 * pikhq considers vomiting
04:55:39 <GregorR-L> I'm going with the Seinfeld plan: I will never vomit again, because I WILL NEVER VOMIT AGAIN >_<
05:00:56 <pikhq> 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 <slereah_> What would be a good method for writing down a graph?
05:36:02 <slereah_> 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 <RodgerTheGreat> 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.
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: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:41 <Judofyr> http://esoteric.voxelperfect.net/wiki/Skull
18:31:21 <Judofyr> it's just like BF (can do the same thing), but a little nicer
18:32:51 <Judofyr> but that shoudn't be hard to implement
18:35:55 <Judofyr> we better speak to fr34k (the creator)
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.
19:14:41 -!- otesanek has left (?).
19:21:05 <Judofyr> It runs the Hello World :D
19:21:08 <ehird> i might use that soemtime actually
19:21:12 <ehird> treetop is overkill for this
19:21:23 <Judofyr> I just want to check out Treetop
19:21:37 <ehird> are treetop's parsetrees sane
19:22:37 <Judofyr> ehird: Here are the grammar: http://pastie.caboo.se/159840
19:22:55 <Judofyr> so I just run i=SkullParser.new.parse(string)
19:23:21 <Judofyr> and then I can iterate over i.elements and check if it's OutputMode etc.
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 <Judofyr> beware of some weird names..
19:24:23 <Judofyr> negopos = negative or positive
19:30:34 <ehird> Judofyr: do you know of any doctest libs for ruby, btw?
19:31:11 <ehird> i might have to write my own
19:31:17 <ehird> but parsetree doesn't let me get '=begin..=end' blocks
19:31:55 <ihope> ehird: have you done anything with your kilbot?
19:32:23 <ehird> ihope: not as of yet. sorry
19:33:28 <ihope> Could you send me a copy, or would that be agony? :-P
19:36:49 <ehird> ihope: it does nothing yet
19:37:02 <ihope> Doesn't it connect?
19:37:44 <Judofyr> and now does it work with while-block too :D
19:38:27 <ehird> 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 <ehird> and a main loop which just gets a line, 'decode's it, and passes it to a function
19:38:49 <ehird> Network.IRC does all the parsing/generation work
20:39:03 * Judofyr has just written cat.skull and it works!
20:41:00 <Judofyr> if anyone wonders, I used !0! (where 0 is cell) for input
20:42:02 <Judofyr> does it need negative values?
20:48:52 <ehird> i own #moderatelyrainyesoteric
20:48:58 <ehird> when did i do that
20:49:32 <oerjan> 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 <ihope> So, I guess I should start on my fancy artificial life simulator thingy.
21:45:52 <ihope> Unfortunately, I have 1,376,544 distractions.
21:56:06 <ehird> Judofyr: i just got that
21:56:25 <Judofyr> Anyone knows how to get in touch with fr34k?
21:59:08 <ihope> 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 <Judofyr> Isn't Haskall pretty hot now?
22:00:22 <ehird> ihope: Haskell would be good for codifying the algorithm. Expressive.
22:00:34 <ehird> The IO wouldn't be too bad either, so.
22:00:48 <ehird> 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:06:38 -!- immibis has joined.
22:09:12 <ihope> The GUI elements would be pretty simple.
22:09:42 -!- pikhq has joined.
22:09:49 <ihope> A grid with icons on it, a neural net.
22:11:27 <ihope> I don't think there's anything else I want to display.
22:14:15 <ihope> 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 <ihope> 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 <ihope> (You know how my kilbot ideas were stolen from B Nomic? This movement and biting stuff is stolen from PerlNomic.)
22:16:20 <ihope> 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 <ehird> Judofyr: the best thing ever
22:16:44 <ihope> ehird: PerlNomic, a Perl-based nomic.
22:18:18 <ihope> 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 <ihope> Or maybe I should deem the idea of males laying eggs ridiculous?
22:25:08 -!- oerjan has quit ("Good night").
22:29:54 <ihope> 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 <ehird> Judofyr: skull on the brain?
22:33:35 <ihope> 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 <ihope> And there's nothing to say that 1,000,000 connections per level are actually required.
22:41:51 <ihope> 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)).
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 <slereah_> Is there an interpreter for the analytical engine?
15:07:34 <slereah_> http://www.fourmilab.ch/babbage/cmdline.html
15:23:15 -!- Judofyr has joined.
15:53:22 <slereah_> 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:23:35 <ehird> specifically, OCaml
16:24:52 <ehird> *Sgeo wants lucid dreams!
16:24:52 <ehird> *bsmntbombdood too!
16:24:52 <ehird> *pikhq considers vomiting
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 <slereah_> 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:23 <slereah_> Old time tapes weren't very practical!
17:42:27 -!- ihope has quit (Read error: 110 (Connection timed out)).
18:05:34 <RodgerTheGreat> slereah_: that isn't really the same as a tape. More like a register.
18:06:21 <slereah_> 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:07:53 <RodgerTheGreat> 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 <slereah_> Oh hell. The article is talking about weaving.
18:08:56 <slereah_> It's all the punch card's fault!
18:09:44 <slereah_> I know. Hence, it's the punch card's fault!
18:09:49 <RodgerTheGreat> Babbage had the unique status of existing just on the brink of technologies that would make fully automatic computing possible.
18:10:25 <slereah_> "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 <slereah_> Allthough I'm not sure that this information is especially important.
18:11:11 <RodgerTheGreat> I think it's important if you want to explain how the punchcards are used to encode weaving patterns
18:14:01 <ehird> i am writing a decent todo thingy
18:14:08 <ehird> it will support offline & online operation
18:14:19 <ehird> + a web interface for when you're on a different machine
18:14:22 <Sgeo> Hm, what was #zingcode ?
18:14:25 <ehird> and Tons Of Cool Stuff
18:14:29 <Sgeo> I had that set on autojoin
18:14:32 <ehird> Sgeo: Zing and CZing discussioj
18:15:06 * Sgeo goes to get rid of unneeded channels in his autojoin list
18:15:13 <ehird> ooh, maybe via irc!
18:16:10 <ehird> the command line interface will be awesome
18:17:31 <RodgerTheGreat> ehird: so, a todo list app with commandline, web-based and IRC-based interfaces?
18:18:06 <ehird> RodgerTheGreat: Pretty much.
18:18:10 <ehird> RodgerTheGreat: But with actually unique features.
18:18:19 <ehird> And, the idea is that adding items isn't any harder than e.g. a simple textfile
18:18:25 <ehird> unless you want to, to provide more info
18:18:35 <Sgeo> slereah_, not if it's in a normal language, I'd assume
18:18:41 <RodgerTheGreat> ehird: have a look at this and see if it gives you another wonderful idea: http://pocketmod.com/
18:18:57 <Sgeo> *GASP!* I said something not 100% positive about PSOX!
18:20:05 <ehird> RodgerTheGreat: seen it. don't have a use for it.
18:21:03 <RodgerTheGreat> 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 <ehird> of course it will have an rss field
18:21:51 <ehird> RodgerTheGreat: I hope that adding a todo item will be basically this:
18:21:54 <ehird> $ todo "Do foo and bar."
18:22:11 <ehird> with some kind of tag:
18:22:15 <ehird> $ todo @code "Code foo."
18:22:34 <RodgerTheGreat> and if you just say "todo", it lists out a line-by line list of your todos
18:23:13 <ehird> formatted with gorgeous ANSI codes
18:23:27 <ehird> but it would probably only show recent ones
18:23:32 <ehird> and tell you to give it -a for all of them
18:23:43 <RodgerTheGreat> gotta have a commandline flag to dump out pure text, though
18:23:47 <ehird> and of course tons more ways to view stuff :)
18:24:00 <ehird> RodgerTheGreat: 'if we are on a supporting terminal, ansi'
18:24:15 <ehird> 'ls' e.g. does this
18:25:03 * Sgeo tries the pocketmod thing
18:25:49 <RodgerTheGreat> 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 <ehird> RodgerTheGreat: did i mention that the todos will be revision controlled?
18:26:17 <ehird> hah, i forgot, you don't like vcses because you think they're all like svn
18:26:23 <ehird> have fun with your generalizations, i guess
18:26:49 <RodgerTheGreat> I don't like vcses because they're generally *unnecessary* and you just demonstrated a prime fucking example of that
18:27:31 <ehird> RodgerTheGreat: you will see.
18:27:39 <ehird> it will be terribly useful in this case
18:28:00 <RodgerTheGreat> yes, I will see this project slowly spiral into feature bloat and the dark forests of overkill
18:28:30 <ehird> i like simple, minimalistic things
18:31:54 -!- ihope___ has changed nick to 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 <Sgeo> http://sgeo.diagonalfish.net/screenshots/xchat_strangeness.png
19:11:40 <ihope> Subchannels. Cool.
19:12:56 <Sgeo> ehird, I want them all to be on the same level, dagnabit
19:12:56 <ehird> Infinite Array of IRC Channels
19:13:11 <ehird> a server is just a remote channel!
19:13:26 <ehird> decentralized channel relations!
19:13:34 <ihope> ehird: but IAIC doesn't spell anything!
19:13:58 <ehird> (iirc, that's the name)
19:16:17 <lament> infinite irc, that's the name.
19:16:28 <lament> if i remember correctly.
19:17:38 <ehird> but i still like my idea!
19:17:48 <ehird> 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 <ihope> 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:19 * lament gives ihope some curious pills
19:45:41 <slereah_> 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: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:26:21 <ihope> pikhq: get thee to Sine!
22:32:49 <Sgeo> 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.
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 <slereah_> Man are the programs for the analytical engine ugly.
01:05:08 <ihope> Where can you see them?
01:05:42 -!- sebbu has quit ("@+").
01:06:41 <slereah_> http://www.fourmilab.ch/babbage/cards.html
01:07:03 <slereah_> 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 <pikhq> . . . I just *won* the game.
05:10:35 <pikhq> Randall Munroe's word is law.
05:11:04 -!- GreaseMonkey has joined.
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).
07:14:31 -!- olsner has joined.
07:14:45 <oklokok> wow, i actually started writing an oklotalk interp :o
07:15:00 <oklokok> S={A=_;{B=_;{C -> A!C!(B!C)}}};
07:15:33 <oklokok> err... S={A=_;{B=_;{C=_;A!C!(B!C)}}}; that is
07:16:04 <oklokok> it's prettier once i add pattern matching, but i'll take a break first
07:51:01 <oklokok> mwahaha, oklotalk has both dynamic and static scoping, simultaneously for each variable
07:51:35 <oklokok> sometimes i feel i've designed this language to be especially unsuited for compilation
07:51:49 <oklokok> i guess that was one of my goals
07:55:38 <oklokok> S={A=_;{B=_;{C -> A!C!(B!C)}}};
07:55:38 <oklokok> (`(`(`(s (`(s (k S)) (`(s (k K)) (`(s K) K)))) (k (`(s K) K))) X) Y)
07:56:14 <oklokok> wonder if i can safely assume scoping works perfectly
07:57:25 <oklokok> 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 <AnMaster> <oklokok> wow, i actually started writing an oklotalk interp :o
09:09:16 <oerjan> oklopol's pet language. probably unimplementable. ;)
09:11:01 <oklokok> well, at least i think i can implement this subset ;)
09:11:08 <slereah_> Not even if you had an Oklopol at home?
09:11:13 <oklokok> granted, i'm leaving out a lot of stuff
09:12:30 <oklokok> 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 <AnMaster> oklokok, got a link for details on this language?
09:13:23 <oklokok> i wrote a tutorial of some sort
09:13:55 <oklokok> but that's a bit outdated now, because i made a few changes (for the better!)
09:14:16 <AnMaster> oklokok, I want to see the specs for the language :P
09:15:05 <oklokok> i'm not sure i hate you enough to torture you with the specifics ;)
09:15:12 <oklokok> also, i don't have a written spec
09:15:31 <oklokok> you can look at my interp once i get it working!
09:15:50 <AnMaster> oklokok, ok tell me about it then
09:16:13 <oklokok> it's designed to be fairly terse
09:16:35 <oklokok> for example, you can do sexps, haskell-style and C-style function calls
09:17:08 <oklokok> oklotalk is prototype-based (kinda), and uses _ for args
09:17:15 <oklokok> although neither choise was from perl
09:17:18 <AnMaster> <oklokok> it's designed to be fairly terse <oklokok> with a very free syntax <-- sounds like perl to me :P
09:17:39 <oklokok> _ was a coincidence, and prototyping just arose from what i used for functions
09:17:49 <AnMaster> not that I can code perl, I code C, bash, awk, brainfuck, and some other ones
09:18:15 <oklokok> {X -> {Y -> X}}!$5, 8)!{A B->A+B} == 5+8
09:18:19 <oklokok> {X -> {Y -> X}}!$5 8)!{A B->A+B} == 5+8
09:18:23 <oklokok> {X -> {Y -> X}}!5 8)!{A B->A+B} == 5+8
09:18:29 <oklokok> ({X -> {Y -> X}}!5 8)!{A B->A+B} == 5+8
09:18:36 <oklokok> ({X -> {Y -> X}}!5 8)!{A B->A+B} == 5+8
09:19:04 <oklokok> you can change about 20 details there without changing it
09:19:09 <AnMaster> is it possible to design an esoteric language, with sane syntax that isn't a turing tarpit I wonder
09:19:20 <AnMaster> or would it not count as esoteric then
09:19:37 <oklokok> well, the definition includes weird ideas
09:20:15 <oklokok> i consider graphica (HAVE I MENTIONED GRAPHICA?!??) esoteric, although it can be used for normal pattern matching based functional programming
09:20:35 <AnMaster> haven't heard of graphica before
09:20:48 <oklokok> because its idea is ...well, i'd like to say new
09:20:56 <oklokok> but it's prolly as old as oerjan
09:21:46 <AnMaster> I don't know much functional programming really
09:21:57 <oerjan> yes you do! it's obligatory! :D
09:22:00 <oklokok> just that you can make trees in a similar fashion (at least syntactically)
09:22:22 <AnMaster> oerjan, a bit of lisp I know, or rather, elisp
09:22:28 <oklokok> Tree n = Tree n-1, Tree n-2
09:22:40 <oklokok> this would make a fibonacci heap -like structure
09:22:55 <AnMaster> ok *waits for things to make sense*
09:23:11 <oklokok> now, this kinda of recursive shit only lets us make trees
09:23:34 <oklokok> now, to be able to make arbitrarily connected graphs, i added global tagging
09:23:50 <oklokok> global tagging means, you can make a ring like this:
09:24:07 <oklokok> first, on the top level, you tag the top node as "top"
09:24:22 <oklokok> then, at Ring 0, you tag current node as "top" again
09:24:33 <oklokok> now, the bottom case is considered the same case as the top case
09:24:56 <oklokok> effectively creating a ring
09:25:04 <AnMaster> oklokok, we aren't talking about rings as in "kernel executes in ring 0" I assume?
09:25:33 <oklokok> we have nodes A, B, C, D and E, where A->B->C->D->E->A
09:25:56 <oklokok> this would be something like this (wait a bit)
09:26:45 <AnMaster> (I normally prefer C, I guess that shows)
09:27:25 <oklokok> = means absolute equality, or "redirection"
09:27:33 <oklokok> re-evaluate this node as ...
09:27:53 <oklokok> this way you can first add a few connections, then call the node something else to add some more
09:28:11 <oklokok> as do <- and <->, but for different directions
09:29:11 <oklokok> 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:30:17 <oklokok> mine was a complete definition
09:30:28 <oklokok> if you actually implement the whole thing, it's not as pretty.
09:30:32 <AnMaster> true,I would need to add how to use this data structure
09:30:56 <oklokok> graphica is very intuitive once you get the hang of it
09:31:13 <oklokok> i've made tons of graphs with it, and they usually work right away
09:31:53 <oklokok> http://www.vjn.fi/oklopol/graphica.txt <<< an n-dimensional binary cube
09:32:37 <oklokok> it would be about a half shorter, if i had some list operations in the language
09:34:04 <oklokok> graphica actually has a spec of some sort
09:34:16 <oklokok> but i seem to have lost that one too :D
09:34:27 <oklokok> always fun when a computer breaks <3
09:36:11 <oklokok> another idea in graphica was the fact that [4 5+2] is parsed as [4 (+ 5 2)]
09:36:21 <oklokok> this is very useful, actualyl
09:36:52 <oklokok> also, my screen just flipped 90 degrees clockwise
09:37:07 <oklokok> quite hard to move the mouse and i have a hard time reading
09:38:05 <oklokok> does anyone know how to flip it back?
09:38:20 <oklokok> and whether this in fact is something my computer should be doing :D
09:39:43 <oerjan> it's achieving sentience. RUN! RUN AWAY!
09:42:05 <oklokok> also, dropped my cell phone in a glass of water
09:42:32 <oklokok> AnMaster: lemme see your c version of the cube :)
09:42:54 <oklokok> (mine worked on the first attempt, unless you cound the fact i had a few syntax errors)
09:43:45 <oklokok> someday, graphica will be the sql of graph-creation, i tells ya!
09:44:35 <AnMaster> oklokok, I don't even understand the problem
09:44:50 <AnMaster> oklokok, however, what language would you use to write an interrupt handler? ;P
09:45:01 <oklokok> n-dimensional binary hypercube, what's there to understand
09:45:39 <AnMaster> oklokok, well, I'm in what equals last year of high school here in Sweden
09:45:52 <oklokok> AnMaster: 1) i wouldn't write that 2) graphica is designed for the exact purpose of making graphs
09:46:17 <oklokok> 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 <AnMaster> so I admit, that part of that stuff goes over my head
09:46:34 <AnMaster> oklokok, ah THAT kind of person
09:46:35 <oklokok> well, i'm in the same class
09:47:39 <oklokok> like graph is actually just leetspeak for graff
09:48:47 <AnMaster> 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 <oklokok> anyway, in an n-dimensional binary hypercube the coordinates of each node are lists of length n containing ones and zeroes
09:49:25 <oklokok> and every number [0..2^n[ is a node
09:49:39 <oklokok> (as its binary representation as a list)
09:50:03 <oklokok> for each node N: for each node M: if H(N, M)==1, N<->M
09:50:08 <oklokok> where H is hamming distance
09:50:47 <oklokok> H = sum( [m!=n for n:N, m:M] )
09:51:04 <oklokok> hamming distance = number of places where the lists diffe
09:52:39 <oklokok> 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:29 <oklokok> i was designing something of that sort as a macro language for brainfuck
09:54:05 <oerjan> Reaper is intended to have a nice-looking syntax. But just on the surface.
09:54:08 <oklokok> but i was a noober back then
09:54:22 <AnMaster> also, functional brainfuck, hm
09:54:57 <oklokok> 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:09 <oklokok> functional brainfuck, in what sense?
09:55:11 <AnMaster> macro language, used by autotools
09:55:28 <oklokok> if you mean a procedural one, it's been done
09:55:44 <AnMaster> I done a procedural one myself so...
09:55:56 <AnMaster> higher order functions and so on
09:56:31 <oklokok> so... m4 does generix object oriented macro languages?
09:56:41 <AnMaster> oklokok, not object orientated no
09:56:53 <AnMaster> but you could likely implement it hehe
09:56:56 <oklokok> well, then that's why not use it :)
09:57:05 <AnMaster> http://en.wikipedia.org/wiki/M4_%28computer_language%29
09:57:36 <AnMaster> oklokok, ever used autoconf? or automake
09:57:58 <oklokok> i don't trust a wheel i didn't invent
09:57:58 <AnMaster> oklokok, I bet you got m4 installed on your computer (assuming it is not windows)
09:59:34 <oklokok> well, i don't see anything fundamentally wrong in preventing piratism
09:59:56 <oklokok> as long as i'm not in a minority not being able to do it
10:00:25 <oklokok> in case that's what DRM is, i don't actually know anything, nor care
10:00:37 <AnMaster> http://en.wikipedia.org/wiki/Digital_rights_management#Controversy
10:01:01 <oklokok> i gotta admit vista is even worse than ubuntu, though, should try to get xp or something here
10:02:15 <oklokok> well, vista is more reliable, but xp was a lot better
10:02:24 <oklokok> i mean, more reliable than ubuntu
10:02:42 <AnMaster> I run Gentoo Linux and FreeBSD
10:03:11 <oklokok> but i'm fairly sure i couldn't get it installed
10:07:12 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
10:08:02 -!- slereah_ has joined.
10:08:11 <oklokok> reaper's page is much too hard to understand
10:09:11 <oklokok> hmph, now i'm just staring at the screen :D
10:09:28 <oklokok> oklotalk or scrubs, gotta ask my bot
10:09:49 <oklokok> <oklokok> >>> choose oklotalk scrubs
10:28:36 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
10:30:00 -!- slereah_ has joined.
10:41:59 <oklokok> F = {A B -> A * B; N -> N * 3};
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:27:46 -!- Sgeo has joined.
16:28:11 <Judofyr> bf2sku is 780 bytes in Skull+ :D
16:28:18 <Judofyr> Sgeo: just written a bf2sku
16:28:32 <Judofyr> http://esoteric.voxelperfect.net/wiki/Skull_plus
16:28:33 -!- helios24 has joined.
16:29:07 <Judofyr> Sgeo: My little Skull-derivative :)
16:33:25 <Judofyr> 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:08:49 <ehird> !!!! really?!/129817981212
18:09:28 <ais523> I have to try to start a conversation somehow
18:09:39 <ais523> or we'll just be pingspamming the channel indefinitely
18:10:38 <ais523> hmm... seems that attempt didn't work
18:11:59 <ehird> [18:11] [CTCP] Received CTCP-PING request from ais523, sending answer.
18:12:04 <ehird> the all-seeing eye of konversation
18:12:19 <ais523> it even lets me know when Freenode sends a ctcp-version
18:12:24 <ais523> hmm... I wonder why it does that?
18:12:25 <ehird> you use konversation too <3 we're like soulmates
18:16:35 <ehird> ais523: ESO should have a TURKEY BOMB spec
18:16:40 <ehird> that is as vague and meaningless as the original
18:16:58 <ais523> the original isn't vague and meaningless!
18:16:59 <ehird> call it CHICKEN EXPLOSIVE, citing trademark claims by Cats Eye Technologies
18:17:12 <ehird> there should be a derivative, Esutu, with a flashier site,
18:17:16 <ais523> most of it is very well defined, it's just that a few things are left deliberately unclear
18:17:21 <ehird> that renames it back to TURKEY BOMB, after a deal with CatsEye
18:17:32 <ehird> (is my Debian/Ubuntu/Firefox parody obvious enough yet?)
18:18:08 <ais523> 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:32 <ehird> that's a different one
18:18:35 <ehird> Debian didn't do that
18:18:42 <ehird> I meant the IceWeasel thing
18:19:04 <ehird> Moz say 'LULZ, OUR ICON & STUFF - COPYRITED. U CANT USE IT UNDER A FREE LICENZE, BTCHZ'
18:19:20 <ehird> Debian say 'Well, ok then. we'll call it IceWeasel, and make our own icon
18:19:38 <ehird> Ubuntu say 'THIS DESTROYS OUR FLASHY EFFECTS. Hey moz, mind if we include it? Under that non-free license of yours'
18:19:44 <ehird> Debian say '*sigh*'
18:19:59 <ais523> Debian are pretty strict about freeness
18:20:17 <ais523> for instance, I think they refused to include the documentation for GNU tar because they didn't like its license
18:20:36 <ais523> that might be the wrong program, though, but I remember it was some really common GNU program
18:20:50 <ehird> ais523: I wouldn't call this 'pretty strict'!
18:21:06 <ais523> The GNU folks, in general, abhor man pages, and create info documents
18:21:06 <ais523> instead. Unfortunately, the info document describing tar is licensed
18:21:06 <ais523> under the GFDL with invariant cover texts, which violates the Debian
18:21:06 <ais523> Free Software Guidelines. As a result, the info documentation for tar
18:21:06 <ais523> is not included in the Debian package.
18:21:08 <ehird> 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:28 <ehird> I think that not accepting that is just reasonable.
18:21:33 <ehird> Mozilla is just like IBM, Sun, etc. anyway
18:21:37 <ehird> They don't 'get' open source.
18:21:39 <ais523> protecting the trademark is one of the easiest ways to try to maintain control over an open source project
18:21:42 <ehird> They just jumped on the bandwagon when it looked shiny.
18:22:00 <ehird> So Firefox &co. are very bad open-source/free-software posterchildren
18:22:12 <ais523> 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:44 <ais523> hmm... what happened to the invariant section in the Emacs manual?
18:23:55 <ehird> but what I'm saying is that Ubuntu's un-flipping-out in this case was idiotic
18:24:00 <ais523> it seems to be missing from my version, which implies that someone got permission to read it at some point
18:24:06 <ehird> because it really is a terrible situation
18:24:18 <ais523> and ehird: Ubuntu isn't exactly the freeest distribution of Linux around
18:24:25 <ais523> after all, it was designed for convenience, mostly
18:24:46 <ais523> on another note, I actually saw the word "subtrahend" used seriously earlier today
18:24:54 <ehird> 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 <ehird> it makes no damn sense.
18:25:19 <ais523> but the browser itself is open-source
18:25:19 <lament> I think it makes perfect sense
18:25:23 <ais523> it just has closed-source marketing
18:25:27 <ais523> that makes sense in some sense
18:25:33 <lament> ehird: isn't the name "GNU" copyright the same way?
18:25:42 <ehird> lament: I don't believe so.
18:25:47 <ehird> Well, it might be, but it's certainly freely licensed if so.
18:25:52 <ehird> Same with the GNU logo.
18:26:08 <ehird> ais523: well, it means that marketing on how great open source is just look at this browser is closed-source :)
18:26:27 <ehird> and, more importantly,
18:26:28 <ais523> ehird: Ironic, but I don't see how that's impossible
18:26:35 <ehird> it means that any free system cannot actually include Firefox as-is.
18:26:40 <lament> http://www.gnu.org/graphics/agnuhead.html
18:26:42 <ais523> after all, it's possible to argue that open-source is good for software but bad for marketing...
18:26:43 <ehird> thus, Firefox isn't really free software.
18:26:44 <lament> "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:55 <ehird> lament: OK, then gnu are ridiculous too
18:26:58 <lament> GNU is not free software! oh gn0!
18:27:12 <Sgeo> What if we want to talk about it in a negative and accurate way?
18:27:14 <ehird> I always preferred BSD tools anyway. :-P
18:27:22 <ehird> Sgeo: DOUBLEPLUSUNGOOD
18:27:22 <ais523> hmm... that's the logo, I wonder what the trademark license is like
18:27:40 -!- olsner has joined.
18:27:41 <lament> at any right, firefox is perfectly reasonable
18:27:42 <ais523> hmm... another example of this sort of trademark thing is Mesa
18:28:03 <Sgeo> ++ WARN: initializing libvcd 0.7.23 [linux-gnu/i486]
18:28:03 <Sgeo> ++ WARN: this is the Beta development branch!
18:28:03 <Sgeo> ++ WARN: use only if you know what you are doing
18:28:03 <Sgeo> ++ WARN: see http://www.hvrlab.org/~hvr/vcdimager/ for more information
18:28:04 <Sgeo> ++ WARN: initializing libvcd 0.7.23 [linux-gnu/i486]
18:28:08 <Sgeo> ++ WARN: this is the Beta development branch!
18:28:10 <Sgeo> ++ WARN: use only if you know what you are doing
18:28:12 <Sgeo> ++ WARN: see http://www.hvrlab.org/~hvr/vcdimager/ for more information
18:28:13 <ehird> ++ WARN: Sgeo is a flooder
18:28:22 <Sgeo> I don't know waht I'm doing, I hope DeVeDe does
18:28:34 <ehird> get a client that knows what flooding is
18:28:42 <ais523> 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 <ehird> Like konversation. :p
18:29:06 <ehird> ais523: which lib?
18:29:35 <ais523> luckily they give lots of hints
18:29:43 <ehird> ais523: their website says is.
18:29:50 <ehird> http://www.mesa3d.org/->introduction
18:29:53 <ehird> Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics.
18:30:17 <Sgeo> wawait, OpenGL isn't open?
18:30:22 <ais523> although even that sentence is carefully worded
18:30:26 <ehird> Sgeo: your hopes and dreams: shattered.
18:30:36 <ais523> Sgeo: the software-only implementation is open-source
18:30:44 <ais523> the trademark itself is heavily locked down
18:30:58 <ais523> and there are hardware or partially-in-hardware implementations that aren't open-source
18:31:14 <ais523> thus most OpenGL libraries can't be redistributed
18:31:20 <ehird> ais523: kde's redmond theme's description: "a style from the north-west of the usa"
18:32:04 <ais523> sometimes I think people deliberately steer further away from trademarks than necessary, to poke fun at trademarks
18:32:15 <ais523> there's the whole *nix thing, for instance
18:32:41 <ehird> *nix just means 'any unix or unix-compatible system'
18:32:51 <ehird> it's not called Linix though
18:32:54 <ehird> so it doesn't work well :)
18:33:16 <ais523> 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:34:09 <ehird> I want to write a silly c compiler.
18:34:13 <ehird> For no particular reason, really.
18:34:32 <ehird> 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 <ais523> incidentally, ehird, remember when you tried gcc's -O3 on that compiled Underload source?
18:35:00 <ehird> and that was on my decent computer (imac) :)
18:35:04 <ais523> 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 <ehird> i hope the oom killer killed gcc
18:35:24 <ais523> no, it killed trackerd
18:35:24 <ehird> instead of Any Process (which is whta it actually kills)
18:35:42 <ais523> in the end I had to use Ctrl-Alt-F1, Ctrl-Alt-Del to reboot
18:35:52 <ais523> and even that took the system about half an hour to respond to
18:36:00 <ehird> um, reset button anyone?
18:36:10 * ais523 daren't press reset during disk accesses
18:36:17 <ais523> which happen basically all the time during thrashing
18:36:18 <ehird> i have mastered pressing it with my little toe
18:36:28 <ehird> it's a tiny, inwards-facing one
18:36:34 <ehird> so i kind of wriggle my toe into it and push slightly
18:36:38 <ehird> it's very convenient.
18:37:09 * ais523 has mastered turning on some sorts of computer by kicking the power button
18:37:25 <ais523> (the sort where the seat is high, but the CPU itself is on the floor, and there is a large power button)
18:37:45 <ais523> not that trivial with the particular make of power button
18:37:56 <ehird> ok, that's a good point i guess
18:39:01 <ehird> http://tastyspleen.net/~billk/ruby/quiz/158-hello-world/158_hello_world.rb look at the maze solver!
18:40:11 <ehird> ais523: other ruby fun - there's an ObjectSpace
18:40:18 <ehird> ObjectSpace.each {|x| ... called for each object ... }
18:40:29 <ehird> 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:42:51 <ehird> Standard Writing, I'm
22:42:56 <ehird> the most awesomest markup language
22:43:00 <ehird> being developed for ESO
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").
00:11:06 -!- adu has joined.
00:19:35 -!- adu has quit.
00:27:32 <ehird> "... 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 <Sgeo> ..Where have I seen "Troff" before?
00:56:54 <GregorR> troff is the markup language used by man pages.
00:57:28 <GregorR> Or rather, roff is the markup and troff is the default implementation, or something like that.
01:08:19 <Sgeo> I remember seeing it mentioned in some For Dummies book
01:13:42 <pikhq> GregorR: The format used by man pages is actually only a set of macros in troff.
01:13:50 <pikhq> Rull-on troff gets even worse. ;)
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 <Sgeo> 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 <RodgerTheGreat> 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:32:17 <pikhq> And yes, I do want to know. :p
05:32:48 <RodgerTheGreat> heheh. Glad to see you enjoyed it, pikhq. What do you think of the new look?
05:33:08 <pikhq> Your art looks *really* good inked and colored like that. :)
05:33:21 <pikhq> Not quite Dresden Codak level, but pretty good.
05:33:50 <RodgerTheGreat> well, naturally- I think he takes more than an hour and a half to do his, for one thing
05:33:51 <pikhq> Of course, DC is nearly a god of webcomicry, so. . .
05:34:05 <pikhq> I suspect as much, myself.
05:34:31 <RodgerTheGreat> I'm thinking about buying/making a font of my handwriting for the speech bubbles and things, though
05:34:53 <pikhq> 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 <oklokok> nothing more refreshing than a good 14 hours of sleep
07:17:43 <oklokok> "<ehird> 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 <oklokok> 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:36:54 -!- RedDak has quit (Remote closed the connection).
15:19:54 * AnMaster just got a SQL error on esolang wiki
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 <AnMaster> anyone got an idea for some new language, turing tarpit style, but not just some variation of brainfuck or similar languages
17:39:33 <RodgerTheGreat> 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 <AnMaster> RodgerTheGreat, got any link so I can read up on that?
17:40:01 <RodgerTheGreat> providing only pancake-flips or something like that for deep stack manipulation could be fun
17:40:06 -!- oklokok has joined.
17:40:19 <RodgerTheGreat> http://en.wikipedia.org/wiki/Stack-oriented_programming_language
17:41:12 <RodgerTheGreat> 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 <RodgerTheGreat> or it could inspire you to create queue-oriented languages or a similar monstrosity
17:42:23 <AnMaster> RodgerTheGreat, got any examples of existing stack based esoteric languages?
17:42:40 <ehird> .... thousands, really
17:42:43 -!- ais523 has joined.
17:43:03 <AnMaster> ehird, err wait, befunge is 2D hm
17:43:17 <ehird> wonderful underload <3
17:43:29 <ehird> AnMaster: Funge-98
17:43:37 <ehird> for all values of N
17:43:40 <ehird> well, not negative
17:43:42 <ehird> and not 0 i don't think
17:43:46 <ehird> but 1,2,3,4,5,6,7,...
17:43:52 <slereah_> I'm not sure if it's TC, or even a good idea.
17:44:11 <slereah_> A language based on animal populations.
17:44:29 <AnMaster> RodgerTheGreat, not sure how to make one, but sounds interesting
17:44:32 <ehird> AnMaster: integers
17:44:53 <AnMaster> ehird, well, I want a 4i-dimensional language ;P
17:44:54 <slereah_> With predation relations, reproduction rates and the like*
17:45:11 * ais523 is wondering what the original question was
17:45:15 <slereah_> It would be really easy to do Fibonacci!
17:45:26 <slereah_> Dimensions can't be imaginary.
17:45:29 <AnMaster> ais523, "<AnMaster> 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 <AnMaster> ais523, that was the original question
17:45:58 <slereah_> There's plenty of theoretical machines that no one touched.
17:46:00 <AnMaster> but queue based language sounds very interesting idea *puts on list*
17:46:21 <ais523> (if I've spelt that correctly)
17:46:30 <ais523> that was a queue-based language
17:46:33 <ehird> A query language (Think SQL, but crazier) that works on stacks
17:46:33 <ais523> not sure whether it was TC
17:46:58 <AnMaster> would it be possible to make a queue based language TC?
17:47:12 <slereah_> I don't see why it wouldn't be possible!
17:47:17 -!- oerjan has joined.
17:47:58 <RodgerTheGreat> and I'd still like that biblically-themed gimmick language we were tossing about a while back
17:48:53 <oerjan> * AnMaster just got a SQL error on esolang wiki
17:48:53 <ehird> you referenced that
17:49:01 <ehird> everyone gets those
17:49:01 <oerjan> it does that all the time
17:49:10 <ehird> RodgerTheGreat: DO UNTO OTHERS
17:49:27 <RodgerTheGreat> I figured commandments would be like functions or assertions
17:49:34 <oklokok> AnMaster: it's possible, because when talking about computability, "queue-based" means absolutely nothing
17:49:43 <oklokok> possible to make a queue-based language tc that is
17:49:46 <slereah_> What would be the data structure?
17:50:31 <ehird> the SQL-stack should be called:
17:50:36 <slereah_> Using bodies as variables, and souls as value? :o
17:50:47 <oklokok> i was thinking about a language based on religions a while ago
17:50:47 <RodgerTheGreat> 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 <ehird> RodgerTheGreat: i think such a biblical language might be NSFW
17:51:44 <oerjan> the torah _is_ part of the christian bible too. the koran might be a more difficult matter.
17:51:55 <AnMaster> 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 <slereah_> What, genociding all the variables for having the wrong value?
17:52:11 <ehird> oerjan: but jesus came along and fixed all that; really god was just misunderstood
17:52:16 <ehird> now look away from that evil one and look at this lovely new one
17:52:23 <RodgerTheGreat> 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:47 <ehird> RodgerTheGreat: wow, so my StackSQL is now in the biblical language?
17:52:56 <oklokok> AnMaster: i didn't get your idea
17:53:17 <ehird> AND THE LORD SAID UNTO NOA, "TABLE ANIMALS SIX EVERYENTRY CLEAN? IF ARK STORE THEN"
17:53:18 <AnMaster> oklokok, was random, doesn't work well I think
17:53:20 <RodgerTheGreat> AND THE LORD SAID UNTO NOAH, "SMITE NOT THE UNCLEAN ANIMALS FOR THEY ARE SACRED IN THE EYES OF THE LORD"
17:53:38 <ehird> dd if=/dev/god of=/dev/heaven
17:53:44 <ehird> (file not found: /dev/god)
17:53:50 <AnMaster> well I don't know much of the Bible, and even less of it in English so hm
17:54:11 <oklokok> 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 <RodgerTheGreat> I'd guess the language would probably include many synonyms for builtins and keywords to retain coherence
17:54:40 <AnMaster> RodgerTheGreat, this reminds me of that shakespearlang
17:54:44 <ehird> RodgerTheGreat: it would be 40% nop :p
17:54:51 <AnMaster> RodgerTheGreat, that is, same basic idea
17:55:12 <RodgerTheGreat> yeah, exactly- that's what makes it a gimmick language rather than high-concept
17:55:24 <Judofyr> what about a language which looks like shell commands?
17:55:34 <AnMaster> Judofyr, err, that's called shell
17:55:56 <AnMaster> Judofyr, ais523, I wrote an modular irc bot in bash btw: http://envbot.org
17:56:07 <Judofyr> yeah, but it shouldn't do what you expect
17:56:22 <AnMaster> Judofyr, oh cat = sudo rm -rf /?
17:56:33 <ehird> AnMaster: and we call know.
17:56:39 <ehird> its a waste of time too
17:56:45 <Judofyr> that wouldn't be a noob-safe language :P
17:56:46 <ehird> it would be cooler in zsh, anyway
17:57:04 <oklokok> 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:28 <ehird> anyway, your project seems to be serious
17:57:32 <oklokok> also, english is clearly not suited for that complicated sentences
17:57:32 <ehird> therefore zsh would be the best choice
17:57:43 <AnMaster> ehird, how many servers got zsh on them?
17:57:51 <ais523> AnMaster: sudo rm -rf /? would delete all directories with one-character names in the root directory
17:57:58 <ehird> and if not its in 99% of pkg management systems
17:58:05 <ehird> zsh is the second-most popular shell from bash i'd say
17:58:08 <AnMaster> ais523, the question mark was not part of the question, it was a question mark
17:58:14 <ehird> and its programming language is highly superior
17:58:14 <AnMaster> ehird, while bash isn't portable, it is more portable than zsh normally
17:58:16 <ehird> it is very advanced
17:58:23 <ehird> AnMaster: still. zsh is a better choice
17:58:28 <ais523> ehird: maybe ash is the most popular, because that's used in most embedded systems
17:58:37 <ehird> ais523: i don't think AnMaster is targeting those
17:58:57 <AnMaster> ehird, I'm targeting standard shell servers, like those you can get for $5 or whatever it is
17:59:04 <ehird> AnMaster: those have zsh
17:59:28 <AnMaster> ehird, not last I checked on the one I got an account on, runs freebsd 6.2
17:59:38 <ehird> AnMaster: then its a rarity
18:00:06 <AnMaster> anyway that wasn't the point of this discussion, feel free to fork, it's open source ;P
18:00:28 <ehird> it wouldnt be a fork
18:01:22 <AnMaster> 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 <ais523> why not make it work under POSIX sh?
18:02:34 <AnMaster> ais523, interesting idea, but would be painful
18:04:20 <AnMaster> 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:47 <AnMaster> meaning, it would sooner or later generate a brainfuck interpreter heh
18:04:51 <slereah_> Millions of monkeys on millions of typewriters!
18:04:55 <ehird> why is that suprising?
18:05:07 <ehird> it's such an obvious statement that only an idiot would argue against it
18:05:10 <AnMaster> ehird, but what if you could exploit it
18:05:20 <ehird> if you have a perfect random number generator on (0,1) [i.e. for bits]
18:05:23 <ehird> and run it infinitely
18:05:29 <ehird> of course it will generate everything
18:06:00 <slereah_> But then again, the only way to have a good program out of it would be to use a bigass if
18:06:07 <oerjan> the problem is that _finding_ something in the monkey output is even harder than writing it yourself in the first place
18:06:07 <slereah_> And it would be shorter to just use the if
18:06:09 <oklokok> please show me some statistics to support this.
18:06:14 <AnMaster> 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:43 <ehird> oklokok: support one
18:06:46 <ehird> oklokok: support what
18:06:52 <ehird> AnMaster: /dev/urandom is not random
18:06:56 <slereah_> AnMaster: A string of length n is always 1/256^n
18:06:57 <oerjan> for example, there will be _many_ more instances of "To be or not to flaggle gnart gop" than of the entire Hamlet
18:07:08 <oklokok> AnMaster: that's trivial to calculate
18:07:11 <AnMaster> ehird, ok, true, /dev/random with a hardware based number generator
18:07:23 <ehird> oerjan: tell oklokok he is silly
18:07:30 <slereah_> Although it would be better to use the printable character set.
18:07:36 <ehird> of course if you have a truly random bit generator run through every possible combination infinitely that contains everything
18:07:45 <oklokok> oerjan: tell ehird i was joking
18:07:50 <ehird> Then a rng on (0,255)
18:08:09 <oerjan> oklokok: you are silly
18:08:09 <RodgerTheGreat> I like random number generators built from a radioactive sample and a detector array, sealed in a lead-lined box
18:08:15 <oerjan> ehird: oklokok was joking
18:08:23 <oklokok> perhaps the penis in my name makes me appear even stupider than i actually am
18:08:33 <oklokok> hmph, i already have oklopol in use
18:08:44 <ehird> let msg = "oerjan: tell oklokok to tell " ++ msg in msg
18:09:18 <oerjan> oklokok: tell let msg = "oerjan: tell oklokok to tell " ++ msg in msg
18:10:16 <oklokok> does the irp spec say it has lazy evaluation? i think that would be kinda funny.
18:10:18 <ehird> oerjan: that's wrong
18:10:25 <ehird> reduction example:
18:10:26 <ehird> let msg = "oerjan: tell oklokok to tell " ++ msg in msg
18:10:39 <ehird> oerjan: tell oklokok to tell oerjan: tell oklokok to tell oerjan: ...
18:10:46 <slereah_> oklokok: You write "Please do this function with x evaluation"
18:11:03 <ehird> Please evaluate the list in range 1,inf, strictly.
18:11:46 <oklokok> ehird: you too must be happy to know i actually begun writing an oklotalk interp
18:12:14 <ehird> give me a REPL, nao
18:12:19 <ehird> AnMaster: Do you know what oklotalk is?
18:12:22 <ehird> He won't be done for years!
18:12:28 <ehird> It's the biggest, most ambigious language that exists
18:12:38 <oerjan> let msg = "tell oerjan: tell oklokok to " ++ msg in "oklopol: " ++ msg
18:12:39 <oklokok> it does not have a parser yet, but it already evaluates *some* of the basic things
18:12:42 <slereah_> I know he's been talking about it for months, but I still don't know what it is!
18:13:00 <oklokok> 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 <AnMaster> oklokok, no esolang entry on it?
18:13:40 <AnMaster> slereah_, some extreme syntax thing
18:13:44 <oklokok> but i'll put it there, even though it's not entirely made for esopurposes
18:14:06 <ehird> slereah_: You don't want to know
18:14:09 <ehird> oklokok: Show him quicksort!
18:14:17 <oklokok> ehird: you probably guessed, but i'm only implementing a subset of it.
18:14:23 <AnMaster> ehird, you forgot the magic word (not, xyzzy!)
18:14:26 <slereah_> But I don't know what they mean
18:14:28 <ehird> Show him quicksoooooooooooooooooooooooooooooort
18:15:14 <slereah_> Bible Code does not approve of evil codes
18:16:58 <oklokok> because if the lists contain lists, the addition will not put ._ automatically in a list
18:17:01 <ehird> Judofyr: Oklotalk rocks
18:17:19 <AnMaster> oklokok, really post a syntax desc
18:17:41 <ehird> AnMaster: it is not parsable by traditional parsers
18:17:48 <slereah_> Without the syntax, it's hard to get a sense of the evilness
18:17:51 <ehird> iirc it's even more malleble than perl
18:17:54 <oklokok> {L->{.L>}/:_+[._]+{.L<}/:_} <<< made portable + corrected an error
18:18:06 <ehird> AnMaster: its too ambigious+context sensitive+runtime-changable
18:18:14 <ais523> [(Quicksort in Overload)]
18:18:14 <ais523> (The quick brown fox jumps over the lazy dog.)
18:18:14 <ais523> (~: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:32 <ais523> somewhat longer than the oklotalk version
18:18:43 <ais523> that's the language that was eventually tarpitised into Overload
18:18:56 <AnMaster> ais523, can't find overload on esolang?
18:18:58 <oklokok> {L->'({.L>}/:_)+._+'${.L<}/:_} <<< added some more shit, but now i'm fairly sure it works :D
18:19:05 <ais523> but I keep getting stuck halfway through when trying to write the spec
18:19:13 <oklokok> it can be done shorter, i'm just a bit panicky doing this live :P
18:19:16 <ais523> AnMaster: that's because I've never actually managed to write the spec
18:19:34 <ais523> 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 <ais523> (that's only half-finished and abandoned because it became unmaintainable)
18:19:51 <AnMaster> there are binary and trinary esolangs right? so what about other n-nary
18:19:59 <ehird> ais523: you got a mix up :P
18:20:06 <ehird> who wants to write a turkey bomb impl :3
18:20:08 <ais523> TriINTERCAL works in bases 3-7
18:20:18 <AnMaster> ehird, not possible I think after looking at it
18:20:25 <AnMaster> slereah_, whoo, that would be fun
18:20:45 <oklokok> 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:21:04 <ehird> AnMaster: um it is
18:21:14 <ehird> ais523 did a little bit writing a TURKEY BOMB interp beforehand
18:21:33 <AnMaster> ehird, it is? turky bomb didn't specify most things about implementation it seemd?
18:21:36 <ehird> I vote that the interpreter should be called CHICKEN EXPLOSIVE
18:21:39 <ais523> AnMaster: what in particular seems impossible about it?
18:21:46 <ehird> AnMaster: half a bit is easy
18:21:49 <ehird> just use crazy padding
18:21:57 <oklokok> (i want to remind everyone once again oklotalk is *not* my official terse language! cise is :))
18:22:24 <ais523> Overload was meant to be mine, but that would require implementing a standard library
18:22:29 <ais523> (which would contain a sort function)
18:22:35 <AnMaster> ehird, the size of some objects too,
18:22:51 <oklokok> AnMaster: some languages have extendable syntax, you can use any base
18:22:54 <ais523> incidentally, the quicksort I pasted above also shows debug output
18:23:11 <AnMaster> oklokok, what about non-unsigned integers?
18:23:24 <oklokok> i should put some examples somewhere
18:23:25 <AnMaster> that is, something that isn't an unsigned integer
18:23:39 <slereah_> oklokok: Cise does not use the wiki, it be not on it :o
18:23:45 <oklokok> do you understand "extendable syntax"?
18:23:48 <ehird> ais523: OMG, hexl-mode in emacs lets you use your major mode. I just used nxml-mode with hexl-mode
18:23:59 <AnMaster> ehird, another thing: PUDDING size: Infinite. impossible to *implement*
18:24:05 <ehird> AnMaster: you mean Amiced?
18:24:13 <ehird> if so - just store it as a NEGATIVE_AMICED
18:24:25 <ais523> and store it in any PUDDINGs that don't contain the AMICED in question
18:24:26 <ehird> 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:25:33 -!- RedDak has quit (Remote closed the connection).
18:25:50 <oerjan> ehird: the ide will be PARROT NUKE
18:26:04 <AnMaster> <ehird> ais523: OMG, hexl-mode in emacs lets you use your major mode. I just used nxml-mode with hexl-mode <ehird> that's zen <-- NICE!
18:26:34 <ehird> breaks if you add more text though i think
18:26:59 <ais523> can you syntax-highlight the hex?
18:26:59 <ehird> but nxml-mode thinks the hex is part of the file
18:27:01 <ehird> so messes up a bit
18:27:01 <oklokok> damn, cannot get Cise upped
18:27:08 <ehird> ais523: no but the right-hand doc is
18:27:16 <ehird> nxml-mode is horrid anway, its evil tricksy :)
18:27:30 <oklokok> http://www.vjn.fi/pb/p411124234.txt <<< my official terse language.
18:27:41 <AnMaster> ehird, it doesn't work for hexl + shell mode here
18:27:45 <ehird> ais523: opinions on the name CHICKEN EXPLOSIVE? ;)
18:27:48 <ehird> AnMaster: shell-mode is too hacky
18:27:55 <ehird> M-x shell<RET>M-x hexl-mode
18:28:09 <AnMaster> ehird, no I mean shell script mode
18:28:14 <ais523> ehird: it doesn't trip off the tongue like TURKEY BOMB does
18:28:34 <ehird> you're right, AnMaster
18:29:31 <AnMaster> ehird, also doesn't work for lisp mode (as in *scratch* buffer
18:29:51 <oklokok> 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 <ehird> iirc it's a minor mode
18:30:05 <oklokok> tried implementing a red-black tree on it... that was hell :D
18:30:11 <ehird> oklokok: cise spec?
18:30:34 <oklokok> you don't wanna parse cise...
18:30:57 <AnMaster> ehird, I don't even have nxml-mode here?
18:31:15 <oklokok> you have to parse at runtime in the general case, i think
18:31:16 <ehird> install it, AnMaster...
18:31:23 <ehird> it contains an xml parser written in elisp
18:31:24 <ehird> that's how it works
18:31:27 <ehird> and it validates on-the-fly
18:31:31 <ehird> and highlights errors exactly
18:31:33 <oklokok> because correct parsing relies on type checking
18:31:42 <oklokok> anyway, i'll go buy me some keb
18:32:09 <oklokok> i know you can, the real reason is i don't want you to implement my languages before me :D
18:32:45 <ehird> it is amazing for editing xml
18:32:48 <oklokok> the languages i'm in any way proud of, that is, you can implement yabc if you want... :P
18:32:48 <AnMaster> ehird, mixing the modes I mean
18:32:51 <ehird> but its inner workings, whaow :)
18:33:16 <ehird> AnMaster: that ' Invalid' thing is actually hacked in by nxml-mode
18:33:45 <AnMaster> ehird, also why the brainfuck is emacs-32 ignoring my .emacs file, at least this line: "(setq inhibit-startup-message t)"
18:34:08 <ehird> (setq inhibit-splash-screen t)
18:34:49 <ais523> I have emacs aliased in my bashrc to not show the splash screen
18:35:17 <ais523> alias emacs='emacs --no-splash'
18:36:01 <AnMaster> 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 <ehird> oklokok: aww come on, i want to try cice
18:36:24 <ehird> so i can fail terribly
18:41:26 <ehird> uhh what was i going to say
18:42:01 <ais523> how am I meant to know?
18:42:21 <ehird> ais523: how's BURKEY TOMB for a name? :P
18:43:13 <ehird> kind of hard to pronounce
18:44:07 <ais523> and 'burkey' is easy to pronounce
18:44:44 <ehird> doesn't roll off the tounge, though
18:46:31 <ehird> ais523: An Implementation Of Turkey Bomb I Mean Jeez sounds good
18:46:55 <ais523> that's even harder to pronounce
18:49:16 <ehird> ais523: How about Tuberculosis
18:49:26 <oklokok> ehird: the failing terribly sounds like such an egoboost i might just make you a spec ;)
18:49:29 <AnMaster> ehird, err "Tuberculosis" is hard
18:49:46 <ehird> AnMaster: you didn't get the joke
18:51:25 * slereah_ wrote a cat for the Andrei Machine :D
18:52:03 <slereah_> It's a Kolmogorov machine, but with an attempt at I/O
18:52:17 <slereah_> I'm not too sure it can do I/O at arbitrary points, but well.
18:52:57 <AnMaster> and what is a "Kolmogorov machine"?
18:53:04 <ehird> AnMaster: you are unable to google.
18:53:11 <ehird> AnMaster: this is serious. we must spoon-feed you information.
18:53:17 <AnMaster> ehird, I tried, found wikipedia page on person
18:53:30 <ehird> http://www.esolangs.org/wiki/Kolmogorov_machine
18:53:41 <AnMaster> ehird, not in Swedish google :(
18:53:59 <ehird> don't use swedish google then
18:54:24 <slereah_> The cat would be 0-5,-;0,->0-5,-;0-2,->0-5,-;0-2-6-7-*2,->0-*2,-
18:54:57 <ehird> AnMaster: there's a button to go to US
18:55:08 <slereah_> Although 0,->0-5,- isn't really necessary, its only for the case where you input /000
18:55:12 <AnMaster> ehird, yep, and that redirects me back again straight away
18:55:28 <slereah_> Oh wait, forgot to add the actual output of the value
18:55:33 <ehird> AnMaster: google.com/ncr
18:55:45 <ehird> oklokok: ciseeeeeee :-D
18:56:12 <oklokok> if i do something coding-related, it'll prolly be about oklotalk
18:56:55 <ehird> oklokok: i just want the spec so i can badly fail to implement it
18:57:33 <ehird> just write a short one :p
18:57:36 <oklokok> i just have a list of currently known functions
18:58:04 <ais523> 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:37 <ehird> Judofyr: programming sofa skull?
18:58:50 <Judofyr> ehird: no, with Ruby on Rails
18:58:52 <oklokok> ehird's such and implementation whore!
18:59:00 <ehird> Judofyr: eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeek
18:59:10 <Judofyr> the problem is that I have to go to school :(
18:59:12 <slereah_> 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:32 * Judofyr still has 3 years left with school :(
18:59:47 <ehird> Remind me that eso-std.org needs a qdb
19:00:17 <Judofyr> oklokok: hm... It's a little diffenrent here in Norway, so I don't know...
19:00:24 <oklokok> bsmntbombdood: no you didn't :o
19:00:27 <slereah_> Graphs in ASCII are pretty uninspiring.
19:00:48 <oklokok> slereah_: no if they're made in graphica
19:00:49 <ais523> ehird (and anyone else interested): http://pastebin.ca/928017
19:01:04 <oklokok> bsmntbombdood: no university for you?
19:01:52 <slereah_> oklokok: There seem to be plenty of programs with that name
19:03:06 <AnMaster> 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 <ehird> ais523: you know i would prefer a spec
19:03:38 -!- oklokok has joined.
19:03:40 <ehird> AnMaster: It's Funge-98
19:03:40 * ais523 has two partially-complete specs
19:03:51 <ehird> And don't bother; there are about 20 implementations, only one passes the test suite
19:03:54 <ehird> and it was written over a yaer
19:04:02 <oklokok> can someone give me a link to the logs
19:04:03 <ehird> it is an extremely complex langugae
19:04:12 <oklokok> ...or just paste me the few lin
19:04:20 <ais523> oklokok: they're linked from the community portal on the wiki
19:04:36 <oklokok> i'm too lazy for something like that
19:04:38 <AnMaster> ehird, then the page http://www.esolangs.org/wiki/Befunge is wrong
19:04:45 <AnMaster> ehird, it states "Befunge-98 removes the fixed-size restriction on the playfield, and thus should be Turing-complete."
19:05:05 <ehird> AnMaster: uhhh, it is TC
19:05:15 <ehird> It is extremely difficult
19:05:27 <ehird> Since, you know, since it was released, *only one person has correctly implemented it*
19:05:41 <AnMaster> ehird, http://www.esolangs.org/wiki/Befunge#Computational_class
19:05:42 <ais523> ehird: http://pastebin.ca/928021 is the reasonably-full but vague and confusing spec
19:05:42 <ehird> So it took about a decade to be implemented correctly.
19:05:44 <slereah_> But maybe AnMaster is a master programmer!
19:05:59 <ehird> CCBI/Mycology's site seems to be down
19:06:09 <ehird> AnMaster: Even the *person who wrote most of the befunge98 spec didn't get it right*
19:06:11 <oklokok> does befunge have bignums?
19:06:32 <slereah_> Writing interpreters for 2D languages does not seem to qualify as fun.
19:06:43 <ehird> especially befunge98
19:06:48 <ehird> well, why am i saying that
19:06:52 <ehird> AnMaster: you hear that?
19:06:55 <ehird> you need to implement N dimensions
19:07:01 <ais523> ehird: http://pastebin.ca/928023 is the much clearer spec I got less than halfway through
19:07:04 <ehird> and, again, only one person has got Funge98 right, ever.
19:07:11 <ehird> And it took them a year, using D and the rich Tango library.
19:07:20 <ehird> Most of the people here, in Bash? Very little chance.
19:07:29 <AnMaster> well I won't do that then, however the original befunge maybe
19:07:31 <ais523> ehird: that person did manage to correct someone else's interp to get a lot more right
19:07:43 <ais523> and now there's a testsuite, you can continually keep on fixing your first error
19:07:45 <ehird> befunge-93 is trivial yeah
19:07:54 <ehird> i wouldnt attempt it in bash
19:08:17 <ais523> 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 <oklokok> what's hard to implement about funge-98?
19:08:29 <ehird> ais523: yes yes ;)
19:08:32 <ais523> (not that any of them is perfect for understanding the language with)
19:08:33 <oklokok> is it just the n-dimensionality?
19:08:35 <ehird> oklokok: its very complex
19:08:43 <ehird> the most complex esolang existing for sure
19:08:51 <AnMaster> ok what about befunge-98--? ;D
19:09:52 <ais523> ehird: maybe recent INTERCAL dialects beat it for complexity
19:10:13 <AnMaster> 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:33 <AnMaster> then I could use some cleaver tricks with bash's one dimensional arrays
19:10:50 <ehird> the language itself is just too comple
19:10:53 <ehird> there is no way you could do it
19:10:55 <ais523> ehird: stop being such a pessimist
19:11:01 <AnMaster> ehird, so not even same instruction set
19:11:08 <ais523> there isn't anything all that difficult about it, it's just so extensive that it's easy to make a mistake
19:11:30 <AnMaster> I won't aim at making a fast implementation
19:11:39 <ehird> AnMaster: http://catseye.tc/projects/funge98/doc/funge98.html
19:11:45 <ehird> One look at that spec should send you running
19:13:06 <ehird> AnMaster: hehe, did that spec scare you?
19:13:28 <slereah_> What's the syntax to make a footnote on Esolang?
19:13:29 <AnMaster> would still be turing complete, by specifying that "height of play field is not limited"
19:13:41 <AnMaster> ehird, anyway section "Wrapping" did scare me
19:13:44 <ais523> slereah_: there isn't one
19:13:48 <ais523> because Cite isn't installed
19:14:00 <ais523> just use <sup> tags to put an asterisk or something similar
19:14:05 <ais523> and use it as a footnote marker
19:14:27 <ais523> as in <sup>this is in superscript</sup>
19:15:17 <ehird> ais523: opinions on Tuberculosis as a TB interp name?
19:15:58 <ais523> ehird: if you can somehow get in the tuber=potato thing, then I like it
19:16:51 <ehird> ais523: was that sentence even english?
19:17:09 <ais523> 'tuber=potato' maybe should have been in quotes
19:17:18 <ehird> what 'tuber=potato' thing
19:17:21 <ehird> (sorry, i'm dumb today)
19:17:50 <ais523> a potato is a sort of tuber
19:18:01 <oklokok> playfield can be limited too, and still it can be tc
19:18:05 <ais523> and the letters TUBER occur consecutively in Tuberculosis
19:18:12 <ais523> and potatos seem linked to TURKEY BOMB in some way
19:18:25 <oklokok> just have bignums, and you don't even need an infinite stack
19:18:32 <ais523> ehird: stop making random channels and forcing other people to join you there!
19:18:58 <ais523> besides, you aren't there
19:19:11 <ais523> either that, or it's a secret channel
19:19:23 <ehird> oklokok just joined
19:19:24 <ais523> so I can't tell if you're in it without joining it myself
19:20:31 <oklokok> "it all starts when a nulevule comes out of its nest"
19:20:32 <ehird> 3 people are in already
19:21:54 -!- Corun has quit ("Leaving").
19:26:06 -!- Corun has joined.
19:29:11 <slereah_> Where can I find this Graphica?
19:29:30 <oerjan> must be the alzheimer again
19:29:41 <oklokok> bsmntbombdood: i'm fairly sure i was being clear
19:29:47 <oklokok> slereah_: i have a spec somewhere
19:29:49 <oerjan> that's why he had to quit school, you see
19:29:57 <oklokok> wait a year or something, i'll get it
19:30:03 <slereah_> What, bsmntbombdood got pregnant?
19:30:11 <slereah_> And you had to drop out of high school?
19:30:31 <slereah_> Got any idea to draw some graphs?
19:30:48 <slereah_> 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 <ais523> slereah_: you could use GammaPlex if you wanted something esoteric
19:31:12 <ais523> oerjan: do you actually know for certain what gender bsmntbombdood is?
19:31:34 <oerjan> ais523: hm interesting question
19:31:59 <oerjan> there have been pictures of him
19:32:20 <oerjan> but certain, of course not
19:32:40 <oklokok> http://www.vjn.fi/oklopol/graphica.txt <<< and n-dimensional binary hypercube in case you missed it, slereah_
19:32:50 <oklokok> i cannot find the spec right now
19:33:00 <RodgerTheGreat> or depending on what you need to graph, I might be able to whip up some postscript, given time
19:33:38 <oklokok> i don't think R is for this kind of graphs
19:33:42 <slereah_> RodgerTheGreat: I really don't want to google R.
19:33:46 <oklokok> says something about statistics in there
19:34:02 <RodgerTheGreat> wait, do you mean like graph theory graphs, or statistics graphs?
19:34:32 <RodgerTheGreat> I recall reading about a python plugin for managing those though
19:34:32 <slereah_> I tried to use Gato, but I can't install it.
19:34:41 <slereah_> I miss some Python modules apparently
19:34:45 <oklokok> RodgerTheGreat: yeah, my graphica interp! :D
19:35:11 <oklokok> it doesn't manage 'em, just makes
19:37:41 <oklokok> isn't gato just for drawing graphs?
19:38:04 <slereah_> Though it would be a good start. I do need some pix to illustrate the article
19:38:27 <oklokok> well, for starters, why the hell would anyone make a language spesifically for the purpose of creating graphs
19:38:43 <oklokok> unless of course as a part of a graph drawing program or something
19:38:53 <ais523> oklokok: why the hell would anyone make an esolang anyway?
19:39:21 <ehird> Corun: Do you have that on highlight?
19:39:22 <oklokok> all i'm saying there's prolly no big, real, language for that.
19:39:37 <oklokok> real being something not made by me
19:40:01 <slereah_> I guess I can just whip up something with Python.
19:40:18 <RodgerTheGreat> Corun: you are now in charge of developing a "sexy" programming language. Strike fear into us all.
19:41:19 <ehird> that won't even COMPILE
19:41:23 <ehird> you mean: int main(void)
19:41:40 <ais523> ehird: void main() compiles but is UB
19:41:42 <RodgerTheGreat> heaven forbid we use simplified illustrations to present a joke
19:41:43 <slereah_> As far as I know, main() compiles on some compilers
19:41:48 <ais523> as in, you're not supposed to do it
19:42:05 <ais523> and main(){} is correct C89 (but not correct C99)
19:42:05 <oklokok> RodgerTheGreat: are you saying one cannot be pedantic on #esoteric?
19:42:29 <ehird> IS NOT LEGAL in a prototype
19:42:32 <ehird> it must be func(void)
19:42:36 <RodgerTheGreat> I'm simply voicing my irritation about it, as usual. I realize it's inevitable, oklokok
19:42:41 <ais523> yes, but you can use functions without prototypes
19:42:41 <ehird> void main() will NOT compile
19:42:49 <ais523> it will if you put braces after it
19:42:52 <oklokok> RodgerTheGreat: do realize i just said that because you said that some time ago.
19:43:02 <ais523> because that's a non-prototype declaration of "function taking unspecified args, returning void"
19:43:22 <oklokok> i think everyone should both be pedantic and be irritated about it
19:43:47 <ais523> but int is the default in C89, so you can leave off the int at the start
19:43:50 <RodgerTheGreat> although I am aware of making that statement, I believe I was being sarcastic. Not that it matters.
19:43:56 <ais523> (C99 doesn't have defaults, you have to state the data type)
19:44:02 <oerjan> oklokok: i hate it when you say that. btw CAPITALIZE YOUR SENTENCES
19:44:38 <oklokok> RodgerTheGreat: does not matter, no, but were you being sarcastic now or back then?
19:45:43 <oerjan> he wioll haven been sarcastic previously afterward
19:46:30 <oklokok> 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 <oerjan> there is no pattern. our words make sense purely by trogg.
19:48:34 <ais523> oerjan: is that a HHGTTG verb?
19:48:42 <oklokok> what's a trogg, besides a person who tries to be a wog?
19:49:47 <oerjan> oklokok: it's what i typed when trying to type a random unpronouncable word. obviously i failed.
19:49:59 <oerjan> google gives some WoW link
19:50:49 <oklokok> every word with less than 10 characters has a sexual/drug-related meaning in urbandictionary.
19:52:35 <oerjan> hah, i was _not_ fooled into googling that. nope, never.
19:52:50 <slereah_> That's like 141167095653376 words :o
19:53:07 <oklokok> slereah_: that's modern english for ya
19:53:54 <oklokok> something like urbandictionary, but meanings are generated
19:54:25 <oerjan> jello looks _so_ like a random letter combination
19:54:31 <ehird> oklokok: i can trivially write that
19:54:37 <ehird> markov chain + urbandict DB dump = fun and laughter
19:54:56 <oklokok> well, that's an easy but sucky way to do it
19:55:08 <oklokok> you can probably make it correct english.
19:55:29 <ehird> most of urbandictionary is not correct english
19:56:23 <oklokok> okay, you can make everything actually have a meaning.
19:58:08 <oerjan> Ditto: A popular lottery in New Zealand
20:00:20 * ais523 checks Slashdot to confirm
20:03:14 <oklokok> 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:45 <oklokok> the dynamic scoping should work too, sk ofc doesn't tell anything about that.
20:03:52 <oklokok> you do not want to see it.
20:04:01 <slereah_> Hm. I wonder if it would be easy to run some combinators in the Andrei Machines.
20:04:35 <oklokok> for one, the interp is so slow you would cry.
20:05:17 <oklokok> not that it actually matters, but i'll only show it in priv, and don't want you to spread it.
20:06:49 -!- oklokok has changed nick to oklopol.
20:11:28 -!- olsner has joined.
20:12:43 <slereah_> Does GIMP have a tool for basic shapes, or should I look for another program?
20:46:13 -!- Corun has quit ("Leaving").
21:07:31 <oerjan> gnidllgnafnoopeepeepsnapfiongflipspIONG
21:07:56 <ehird> I was just wondering if you had any ideas how to represent a BI_IT and similar
21:08:14 <ehird> 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 <oerjan> since i don't know what it _is_...
21:08:26 <ais523> half of a trit + two-thirds of a bit
21:08:39 <ais523> you can combine 6 of them to get a data type consisting of 4 bits and 3 trits
21:08:47 <ehird> oerjan: read TURKEY BOMB spec
21:09:27 <oerjan> well, a trit = ln 3 / ln 2 bits
21:09:33 <ehird> convenient link: http://catseye.tc/projects/turkeyb/doc/turkeyb.html
21:11:14 <ais523> strange, I make it 1.5849625007211563 bits
21:11:15 <oerjan> so in one you can save a bit + a little more
21:11:28 <oerjan> (log 3/log 2)/2 + 2/3 ?
21:11:38 <ais523> oh, I just calculated log 3 / log 2
21:11:54 <ais523> agree with you on the size of a BI_IT
21:12:02 <ais523> the next two decimal places are 4 and 8, apparently
21:12:31 <ais523> hmm... is it usual for people to use ghci for quick calculations?
21:12:44 <oerjan> well i just used hugs :)
21:12:44 <ehird> haskell isn't known for being good at, well, arithmetic
21:13:01 <ehird> (I think this should be resolved with matlab. ;P)
21:13:05 <ais523> haskell is good at arithmetic
21:13:15 <ais523> it does bignums automatically
21:13:17 <oerjan> as long as you don't want weird functions
21:13:27 <ehird> bignums automatically is an idea from the 50s
21:13:38 <ais523> yes, but how many calculators actually do it?
21:14:06 <ais523> Windows Calculator, for instance
21:14:13 <ais523> or pretty much any handheld electronic calculator
21:14:40 <ehird> um, i meant ones on a compooter
21:15:04 <ais523> dc seems to do bignums, though
21:15:40 <ais523> Google calculator doesn't, instead rounding large numbers to floating-point
21:15:56 <oklopol> every language does bignums
21:16:15 <ehird> * (+ (/ (/ (log 3) (log 2)) 2) 2/3)
21:16:15 <ehird> in conclusion, oerjan is right
21:16:18 <ehird> what SBCL says goes :-P
21:16:18 <ais523> not all of them do by default, or easily
21:16:21 <oklopol> the problem is arbitrary precision reals
21:16:37 <ais523> from the syntax I guess it's a Lisp variant
21:16:37 <ehird> ais523: Steel Bank Common Lisp
21:16:48 <oklopol> ais523: not all, but most good ones.
21:16:49 <ehird> the best open-source Common Lisp implementation, IMO :)
21:17:09 <oklopol> if a language does not do them, it either sucks, or is some low-level wongomadol
21:17:20 <ehird> SBCL descended from CMUCL
21:17:28 <ehird> '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 <oerjan> wongomadol: The capital of Southern Zambesi
21:18:09 <oklopol> oerjan: you sure know a lot :o
21:18:17 <oklopol> what would half a bit of information be?
21:18:39 <ehird> i can't enter those
21:18:46 <oklopol> would there be a possibility of the info being wrong or what...
21:18:53 <oklopol> i can't quite get on top of it
21:19:00 <ehird> Half a bit of info: ( to `
21:19:18 <ehird> 1 ` (imagine the ` is backwards)
21:19:29 <oerjan> half a bit of information is the amount of information in knowing that an event of probability 1/sqrt 2 occured.
21:20:06 <ehird> WHOLE BIT --- HALF BIT
21:20:14 <ehird> It's half of the digit.
21:20:35 <oklopol> sorry, was assuming it was an unlambda reference
21:21:28 <ehird> ais523: underlambda. do the tiers have a spec yet?
21:21:54 <oklopol> 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 <oklopol> turkey bomb has something like that?
21:22:36 <ehird> ais523: ESOification? :D
21:22:37 <ais523> although I'm planning to move S from 1 to 2a because it fits more logically there
21:22:55 <ais523> ehird: yes, eventually
21:22:56 <ais523> let me work out the size of a BI_IT using flonck first
21:23:03 <ehird> ais523: Can I make overlambda? :P
21:23:05 <ais523> I've got the output, now just need to translate it into decimal :)
21:23:22 <ehird> damn, we need Endeavour in here
21:23:25 <ehird> oh wait i didn't write it yet
21:24:47 <ais523> hmm... it gave me an output of 0.666666, which is obviously wrong
21:25:08 <ais523> ehird: an RPN floating-point calculator written in INTERCAL-72
21:25:56 <ehird> ais523: what would overlambda be, by the way? :P
21:26:20 <ehird> oklopol: Cise spec? :D
21:26:22 <ehird> I want to fail terribly!
21:27:14 <oklopol> tomorrow isn't until like 30 minutes
21:29:46 <ais523> hmm... there seems to be something wrong with flonck's implementation of ln
21:30:28 <ais523> ah, I was writing ln 20 / ln 30 by mistake
21:30:30 <ehird> oklopol: aww come on :(
21:30:33 <ais523> which is quite different
21:33:03 <ais523> I now get an answer of 7.35053
21:33:15 <ais523> hmm... flonck is really hard to use
21:33:26 <ais523> and floating-point output in Roman numerals is not very understandable either
21:34:00 <ais523> (6 decimal digits mantissa, one bit sign, and 1 base-5 and 1 base-10 digit for exponent)
21:34:02 <ehird> ais523: i need to write my calculator sometime
21:34:12 <ehird> it would be like a programming language but specialized for quick calculator stuff.
21:34:13 <ais523> (but written in Roman numerals)
21:34:20 <ehird> it would have infinite-precision floating-point numbers, too
21:34:39 <ehird> oh, and it would allow stuff like the google calc
21:34:44 <ehird> pseudo-english input
21:34:48 <ehird> e.g. '2*3 in binary'
21:35:16 <ais523> sorry, I thought I was in #irp for a moment
21:35:21 <ehird> http://www.google.com/search?q=number+of+horns+on+a+unicorn+acre+in+tea+spoons+per+light+year
21:35:53 <ais523> they've been adding more silly units into it again, I see
21:36:08 <ehird> bsmntbombdood: it was on reddit a while back
21:36:23 <ehird> ais523: it makes sense, actually
21:36:32 <ehird> 'number of horns on a unicorn' is admittedly a joke unit
21:36:46 <ehird> 'X per Y' will be handled automatically
21:36:50 <ehird> teaspoons will be in there for cooking
21:36:55 <ehird> light year for obvious reasons
21:37:00 <ais523> I was referring to the unicorn unit
21:37:05 <ehird> so, the only joke unit involved is 'number of horns on a unicorn'
21:38:12 <ais523> I wonder if they'd heard of the fortnight/furlong/firkin system of measurement?
21:39:04 <bsmntbombdood> http://www.google.com/search?aq=f&hl=en&safe=off&q=1+furlong%2Ffortnight&btnG=Search
21:39:23 <ais523> hmm... why do you have safe=off in that URL?
21:39:50 <ehird> ais523: his prefs include it?
21:40:02 <ais523> ehird: if they do, that's somewhat revealing
21:40:13 <ais523> 'dunno' is probably the best response
21:40:23 <ehird> 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 <ehird> ais523: safesearch is a pretty bad idea no matter what..
21:40:41 <ehird> esp. since it could filter out legit results
21:41:05 <ehird> also, i have no idea what anyone could do with the 'revealing' info that someone has turned off safesearch.
21:41:08 <ehird> perhaps blackmail them.
21:43:38 <ais523> this gets me wondering whether Google have been persuaded to write an antifilter
21:43:50 <ais523> which only returns results that safesearch would have filtered out
21:43:56 <ais523> some people might be interested in that too...
21:44:48 <ehird> ais523: a funny common lisp thing --
21:44:54 <ehird> the special form THE
21:45:03 <ehird> its a type hint to the compiler
21:45:13 <ehird> i.e. 'this will always be a TYPE, stop yer checks'
21:45:16 <ehird> why is it amusing?
21:45:26 <ehird> (the list '(1 2 3))
21:45:44 <ais523> can that be implemented with (macro)?
21:46:26 <ehird> ais523: of course not.
21:46:32 <ehird> it's an internal compiler thing
21:46:37 <ehird> it doesn't have to listen to it
21:46:45 <ehird> (the fixnum 928374892347982347923847239847238947234234)
21:46:50 <ehird> will, in most compilers, be ... not that
21:46:58 <ehird> it's best used in cases like
21:47:01 <ehird> (the fixnum (+ a b))
21:47:07 <ais523> (I'm still trying to argue my point about (macro) not fitting well in Lisp)
21:47:26 <ehird> ais523: if the compiler provides enough hooks you could define it with defmacro
21:47:53 <ehird> 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 <SimonRC> there is a subset of this channel that should avoid reading today's xkcd...
21:49:04 <SimonRC> I know how to tell if you are int this subset ...
21:49:21 <SimonRC> but to tell you would cause exactly the problem that avoiding reading today's xkcd would cause
21:49:22 <ehird> oklopol: it's about losing the game
21:49:28 <lament> 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:32 <ais523> ehird: I like them in some cases, but the rest of Lisp seems like the wrong language to put them in
21:49:48 <oerjan> there is a new xkcd today?
21:49:52 <ehird> http://www.google.com/search?q=1+teaspoon+in+megaparsec+barns
21:49:56 <ais523> SimonRC: is it uncontroversial, well-sourced proof that the Game exists?
21:49:59 <ehird> oerjan: yes, it's about losing The Game
21:50:05 <ais523> because Wikipedia have been looking for that for a while
21:50:07 <SimonRC> ais523: it is a definition
21:50:28 <ehird> ais523: well, those people are idiots :)
21:50:33 <ais523> unfortunately, xkcd probably isn't a sufficiently reliable source
21:50:37 <ehird> The Game undisputably does exist and it's very popular
21:50:44 <ais523> ehird: yes, but can you /prove/ it
21:50:58 -!- Judofyr has quit.
21:51:00 <SimonRC> someone mentionned an origin on the XKCD forum thread
21:51:05 <SimonRC> or at least hinted at an origin
21:51:13 <ehird> ais523: you can't *prove* anything
21:51:15 <ais523> I'm pretty sure that your statement is true, but finding reliable sources has proven very difficult
21:51:29 <ehird> well, sure. the game is by definition entirely grassroots
21:51:35 <SimonRC> oh, and BTW, for any game, there exists another game with the winnign and losing conditions reversed
21:51:39 <ais523> 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 <ais523> SimonRC: yes, that game is actually played at a roleplaying group I help to run
21:51:50 <SimonRC> so there is a game that you win whenever you lose The Game
21:51:56 <SimonRC> assuming The GAme is a game
21:52:02 <ehird> SimonRC: I just won The Antigame!!!!!
21:52:13 <ehird> ais523: yeah, um, you're not going to find that
21:52:16 <ehird> it's a popular mind game
21:52:17 <ais523> 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 <SimonRC> now, I just need to go back in time and invert the "win" game before The Game gets invented
21:52:31 <ehird> it probably deserves a WP article
21:52:34 <ehird> but it isn't highly notable
21:53:12 * oerjan wonders what this is all about
21:53:25 <SimonRC> oerjan: see forum thread, post #1
21:53:35 <ais523> ehird: http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/The_Game_%28game%29_%286th_nomination%29
21:53:46 <ais523> (that URL was retyped, so I may have got it wrong)
21:53:53 <SimonRC> do not read more that the first few posts though, as there are some very evil posts in that thread
21:54:05 <ais523> but it took that many before it was deleted
21:54:06 <ehird> ubt it looks funny
21:54:11 <ehird> 'The Game (game)'?!
21:54:18 <ehird> The Game (non-game)
21:54:25 <SimonRC> actually, reading the whole thread didn;t harm me
21:54:34 <ehird> ais523: a ridiculous one
21:54:39 <SimonRC> it might make you lose a lot more over the next few weeks though
21:55:08 <ehird> ais523: Everyone starts playing the moment they learn of The Game's existance.
21:55:09 <ais523> 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 <SimonRC> ais523: to be accurate, you don't obey the rules
21:55:12 <ehird> You do not have a choice.
21:55:24 <ais523> the rules compel people to believe that, but they are wrong
21:55:29 <ehird> That's not a rule. That's just The Game.
21:55:38 <ais523> because the rules don't bind people until they start playing
21:55:40 <ehird> By its definition, it is a game whose participation is required after learning of its existance.
21:55:46 <ehird> The rules are just by-notes.
21:55:54 <ais523> admittedly, once you start, it's theoretically impossible to stop without forgetting the rules
21:55:59 <SimonRC> ais523: please stop trying to climb throught the keyhole and just open the damn door.
21:56:08 <ais523> ehird: it's a game, not a law of physics
21:56:20 <SimonRC> the definition of winning the game is a definition in the mathematical sense
21:56:28 <oklopol> 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 <SimonRC> you are not compelled to obey the rules
21:56:35 <ais523> SimonRC: AFAIK it's impossible to win the original game
21:56:58 <ehird> oklopol: you are wrong
21:56:59 <ais523> ehird: what statement of mine did you just try to object to?
21:57:09 <ais523> ehird: oklopol was right
21:57:23 <ais523> except for unsafePerformIO, of course
21:57:26 <ehird> factorial n = if n == 0 then 1 else unsafePerformIO (putStrLn "SIDE-EFFECT") `seq` n * factorial (n-1)
21:57:39 <oklopol> okay, okay, you won this round
21:57:42 <ehird> OK unsafePerformIO isn't standard but every interpreter and compiler implements it
21:57:47 <oklopol> but i'm fairly sure i had a point, still
21:58:04 <ais523> I agree with oklopol's point even if the statement has factual problems
21:58:31 <SimonRC> 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 <ehird> sudo the-game --daemonize
21:58:45 <ehird> No longer in its jail!
21:58:56 <ehird> 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 <ehird> Now you all must play,
21:59:10 <ais523> root priveliges don't carry over IRC AFAIK
21:59:20 <ais523> if they did, it would be a massive security risk
21:59:26 <SimonRC> ... so, by the definition of the rules, I am playing the game, BUT i am not obeying the stated rules
21:59:26 <ais523> as well as being somewhat hard to implement
21:59:43 <ais523> the rules themselves have a factually incorrect view of reality
22:00:08 <ehird> ais523: that was on god@universe
22:00:13 <SimonRC> that is another idea too: the original statement of the rules had a major misprint in them
22:00:17 <ehird> my message was just informing you that i'd done it
22:00:25 <ehird> and to introduce you all to the game (which is now a new instance)
22:00:27 <ehird> thus, you are all playing it.
22:00:32 * ais523 chooses not to believe ehird
22:00:43 <SimonRC> summary: "I must obey the rules of The Game must I? Or else what?"
22:01:55 <ehird> well, let's just say god@universe has kill(1)
22:02:01 <ais523> or else I will hit you with an ellipsis
22:02:14 <SimonRC> 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 <ehird> SimonRC: The Game porn
22:02:37 <oklopol> that's the problem with laws, in most peoples' eyes, nothing can be forbidden, things can only have a punishment.
22:02:41 <ehird> that gives away free iphones
22:02:47 <ehird> loaded with the porn as the theme & homepage etc
22:03:03 <SimonRC> oklopol: well, things can help or hinder one's objectives
22:03:15 <ehird> oklopol: I'm quite handy with attaching gdb to a process and poking at memory...
22:03:19 <ehird> I will MAKE ais523 obey!
22:03:49 <ais523> SimonRC: an IRC nickname?
22:03:59 -!- ehird has changed nick to TheGamehird.
22:04:06 -!- SimonRC has changed nick to YouJustLostTheGa.
22:04:23 -!- YouJustLostTheGa has changed nick to SimonRC.
22:04:23 <ais523> YouJustLostTheGa: is there a limit on nickname length?
22:04:33 <SimonRC> hehehe, I just made about 1000 pweople lose
22:05:00 <oklopol> SimonRC: i don't see what you mean
22:05:06 <oklopol> ehird: i don't see what you mean
22:05:14 <ais523> presumably SimonRC was in more than one channel
22:05:27 * ais523 just tried to tab-complete the word 'presumably'
22:05:44 -!- TheGamehird has changed nick to UJustLostTheGame.
22:06:19 <ais523> UJustLostTheGame: also yes
22:06:26 <ais523> but I haven't really learnt to use it
22:06:37 <ais523> and it's very beginner-unfriendly
22:06:55 <ais523> even worse than Emacs in that respect
22:07:20 -!- oerjan has quit ("Good night").
22:07:32 <UJustLostTheGame> is that you can use vi's moving commands to use it efficiently
22:07:55 <SimonRC> I think that comes to almost 1000 people simultaneously
22:08:18 <ais523> SimonRC: were you busy counting how many people were in all the channels you were in?
22:08:20 <SimonRC> but an admin must have read it, and they might be about to /wall
22:08:50 <ais523> what we need to do now is get [[The Game (game)]] as Wikipedia's front-page featured article
22:09:09 <ais523> but you'd need loads more sources for that to happen
22:09:14 <ais523> maybe Everything2 would be easier
22:09:19 <SimonRC> yea, about 800 people just saw my nick change
22:10:03 <ais523> you would so get in trouble for that
22:10:20 <ais523> just like a Wikipedia admin would get in trouble for putting it in the sitenotice
22:10:33 -!- RedDak has joined.
22:10:39 <ais523> (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:31 <SimonRC> ais523: you are that guy, right?
22:11:56 * SimonRC ponders bashing the time around when he changed his nick
22:12:12 <ais523> how often is #esoteric bashed, anyway?
22:12:17 <ais523> probably not often enough
22:12:43 <ais523> and bashing it would actually tie into the point of the thread, ironically
22:12:52 <ais523> (does IRC have threads?)
22:13:11 <SimonRC> UJustLostTheGame: I am in many channels
22:13:25 <ais523> all of which are apparently secret apart from this one, or on different networks
22:13:29 <SimonRC> #uncyclopedia #haskell and #nethack being the major contributors
22:14:18 <ais523> SimonRC is in #haskell
22:14:22 <ais523> I just nipped over there to check
22:14:32 <ais523> bsmntbombdood: it was deleted after 6 AfDs
22:14:39 <ais523> the previous 5 didn't get enough consensus to delete it
22:15:30 <ais523> where people debate about whether to delete an article
22:15:44 <UJustLostTheGame> eso-std.org should have an irc network, but that would fragment the community :-)
22:15:45 <ais523> normally it's clear-cut delete or keep (or sometimes merge, redirect or transwiki), but not in this case
22:16:11 <ais523> UJustLostTheGame: write a pair of bots that copy all conversation from each channel into the other
22:16:14 <SimonRC> As some wit said: "The human hand has 5 fingers [citation needed]"
22:16:23 <ais523> and UJustLostTheGame: yes, it is normally clear-cut how to close an AfD
22:16:37 <SimonRC> ais523: they can tie networks together
22:16:53 <ais523> apparently in some places there's a craze of people carrying around small adhesive [citation needed] signs to stick on adverts
22:17:19 <SimonRC> there was one such bot in the OTTD channel for a whiloe
22:17:35 <SimonRC> ais523: he waves it at a political speech
22:17:43 <SimonRC> Randal is going to get power-mad some day
22:17:52 <SimonRC> I mean, he just took on The Game
22:20:36 <SimonRC> All you need is one disgruntled Google employee (with access to the front-page image)...
22:20:48 <SimonRC> oh, wait, "disgruntled Google employee" is an oxymoron
22:21:03 <ais523> you could put it in the adverts at the bottom of Hotmail messages
22:21:14 <ais523> that would only require a disgruntled Microsoft employee, which is much more likely
22:21:52 <SimonRC> nah MS research isn't real MS
22:23:51 * SimonRC want's hot-swappable kernels
22:24:47 <SimonRC> ooh, maybe the front page of slashdot would be good...
22:25:09 <ais523> nah, most of the people there probably play it already
22:25:21 <ais523> hmm... what about making it pop up in a Windows Update dialog box?
22:26:28 <ais523> UJustLostTheGame: just store it using base-Fibonacci or some other self-delimiting number scheme
22:26:32 <ais523> then you don't need delimiting info
22:27:04 <SimonRC> but a decent philosophical analysis of The Game might make the front page of slashdot and digg...
22:27:54 <ais523> is savethegame.org still running?
22:30:51 -!- ais523 has quit ("what oerjan said").
22:31:35 <slereah_> Well, the first version of the Andrei Machine's specs is posted.
22:35:35 <SimonRC> UJustLostTheGame: look back up...
22:35:46 <SimonRC> "22:07:20 -!- oerjan [n=oerjan@hagbart.nvg.ntnu.no] has quit ["Good night"]"
22:36:29 <slereah_> http://www.esolangs.org/wiki/Andrei_Machine_9000
22:37:15 <oklopol> slereah_: is 9000 your trademark?
22:38:12 <slereah_> It's based on the Gruntmeister 9000 in the Dilbert cartoon.
22:39:47 <SimonRC> oklopol: it's that one with the engineer with the wonky tie
22:40:06 <oklopol> i know *dilbert*, just not gruntmeister
22:40:18 <slereah_> It's from the animated series.
22:40:41 <oklopol> although dilbert actually has some weird-ass translation in finland, so i could well have not known that
22:40:44 <slereah_> There's a bunch of them centered around their next product, the Gruntmaster 6000.
22:41:24 <slereah_> Then one day, the competition announces a product of their own, the Gruntmeister 9000 :o
22:41:43 <oklopol> i liked 9000 better as your trademark
22:42:45 <oklopol> love machine 9000, andrew machine 9000, will we be seeing something *original* soon?
22:43:06 <oklopol> was lazy bird 9000 original in some way?
22:43:11 <slereah_> And the never finished Clockpunk!
22:43:19 <oklopol> that i've never even heard about
22:43:23 <slereah_> Also the soon to come Volterra.
22:43:32 <oklopol> that i've never even heard about
22:43:49 <slereah_> Although those two, I'm not sure if they're Turing complete, or even useful in some way
22:43:59 <slereah_> Volterra is based on animal populations as datas.
22:44:14 <slereah_> It's easiest program will be the Fibonacci!
22:45:02 <slereah_> Clock Punk uses clocks as datas.
22:45:15 <oklopol> you prolly get primitive-recursive functions out of volterra
22:45:16 <slereah_> It is painfully slow, inefficient and unportable.
22:45:34 <oklopol> if it's anything like i imagine
22:45:53 <slereah_> Well, I thought of it today, so I'm open to suggestion.
22:46:21 <oklopol> well, first of all you want "o" to be the basic "creature"
22:46:27 <slereah_> So far, you have to define the animals. Their original populations, reproduction rates, predation conversion.
22:46:56 <oklopol> parens someway separate populations
22:47:06 <oklopol> and populations fight when barriers crash
22:47:09 <slereah_> And then, once you haver that, you give a list of instructions
22:47:19 <oklopol> barriers crash when the population inside them gets too big
22:47:30 <oklopol> then the population gets smaller, and barriers can rebuild.
22:47:40 <oklopol> SimonRC: they will mature up, and start breeding
22:47:51 <oklopol> because they belong to the same initial population, they shall not fight
22:47:58 <slereah_> As the name implies, it's based on the Lotka-Volterra equation.
22:48:21 <slereah_> It's also on a discrete version of it.
22:48:54 <slereah_> You've got n populations. herbivores at the bottom, and then, n eats n-1
22:49:29 <slereah_> The herbivores have a reproduction rate. an individual gives birth to puppies and kittens or whatever.
22:49:30 <SimonRC> surely you can't even do list indexing in it?
22:49:50 <slereah_> The predators converts food into babies
22:50:02 <slereah_> Well, it's only an idea so far
22:50:25 <SimonRC> hmm, your clockpunk idea sounds fun actually: each variable increments every time an instruction is executed.
22:50:31 <slereah_> A stupid one, and actually similar to Clock Punk.
22:50:45 <SimonRC> a cat would need to compensate for the ticks taken between input and output for example
22:50:51 <slereah_> Both are time changing variables.
22:51:12 <slereah_> Yes. Clockpunk has huge problems for that
22:51:17 <oklopol> i don't really like the idea of numbers for volterra
22:51:28 -!- sebbu has quit ("@+").
22:51:38 <oklopol> but whatever moves your bowels
22:51:58 <slereah_> Clockpunk has an interpreter, of sort, if you want
22:52:18 <slereah_> It still lacks the conditional jump.
22:52:29 <slereah_> Or maybe not. Maybe it's just not complete
22:52:53 <slereah_> http://membres.lycos.fr/bewulf/Russell/Clockpunk.py
22:53:23 <slereah_> There's two symbols. - waits for one time period, * executes an instruction.
22:53:38 <slereah_> The instructions depend on the value of the clock, mod 8
22:53:59 <SimonRC> not like my idea quite then
22:54:45 <slereah_> It's actually a better idea, since you can use conditionals
22:54:59 <SimonRC> TBH I think keeping track of how long everything took would be quite hard enough
22:55:22 <slereah_> Plus, with multitasking, it might even be impossible!
22:55:28 <SimonRC> if one branch of an if takes longer than another, the compensation must differ
22:55:50 <SimonRC> but the clock ticks must be defined in the language
22:56:10 <slereah_> Well, if it is, it would just be a Turing machine where the cells increase at every step.
22:56:10 <SimonRC> this makes everything slow down proportional to space consumption
22:56:32 <SimonRC> very like a computer clock though
22:56:53 <slereah_> Isn't it just a regular clock inside?
22:57:07 <slereah_> (When I say regular, I mean a quartz cristal)
22:57:45 <SimonRC> ok, maybe like the x86 instruction counter then
23:02:17 * slereah_ was thinking of three variables for Volterra.
23:02:42 <slereah_> Bears do not attack wolves, but they can through the rule of cool
23:03:34 <oklopol> slereah_: also add some nopular birds
23:04:08 <oklopol> nopular == one that performs a nop
23:16:43 -!- timotiis has quit ("leaving").
23:19:01 <slereah_> I'm not sure combinators would fit well in the context!
23:24:13 <oklopol> heh, right, lazy birds... birds just happened to be the most apparently nopular creature i could think of
23:26:36 <SimonRC> birds referring to the lambda-calculus-with-birds thing, right?
23:27:22 <oklopol> yeah, that's the reference i didn't get from what i said myself
23:37:33 <oklopol> hmm... i'm fairly sure i just invented directed acyclic graphs...
23:37:47 <oklopol> i hate living in this century
23:39:03 <oklopol> but at least this mathematics i'm doing with it just *has* to be new, because no one prolly investigated dags that much!
23:41:20 <oklopol> n = 3n in ascii, isn't it defined on that?
23:41:58 <oklopol> same goes for letters ofc, except letters are one-based
23:43:11 <SimonRC> A 1..10 scale in hex is one of the few places where an E is good
23:43:24 <SimonRC> A is not so good, and 7 rather sucks
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 <pikhq> All in favor of me writing an OS?
01:40:12 <ehird> It's not exciting.
01:40:16 <pikhq> And where'd you get stuck?
01:40:26 <ehird> At the part where it became terminally boring.
01:40:36 <lament> so right at the start, then :)
01:41:04 <slereah_> I'm for it, as long as I'm not you.
01:41:23 <ehird> lament: And all the way through.
01:41:49 <pikhq> Esomic is quite tempting.
01:42:27 <pikhq> ATM, I'm just fiddling with basic routines for doing text mode without the BIOS.
01:44:35 <lament> pikhq: think: it's a LOT of fairly meaningless porting work.
01:45:04 <pikhq> lament: I think I noticed already.
01:45:21 <pikhq> I'm terminally bored, though. Might as well do *something* with that terminal boredom.
01:49:14 <lament> design a really cool non-esoteric programming language
01:49:29 <lament> a better lisp, perhaps :)
01:50:02 <lament> to qualify, it has to be better than anything else in existance.
01:50:36 -!- ehird has quit ("Konversation terminated!").
01:50:52 <slereah_> Non-esoteric? Doesn't that require a lot of instructions? :o
01:51:23 <slereah_> What's the shortest instruction set for a non-esoteric language that isn't machine code?
01:54:36 <lament> machine code languages probably have the biggest instruction sets
01:54:51 <pikhq> That depends: what do you consider an esolang? :p
01:54:53 <lament> also, what's an "instruction"? Any builtin?
01:55:21 <pikhq> If you consider Lambda calculus non-esoteric, then there you go.
01:55:55 <slereah_> Well, built in in the basic language I suppose.
01:56:04 <slereah_> Without the modules and whatnots.
01:57:02 <pikhq> Well, in *that* case. . .
01:59:37 <lament> lisp/scheme has very few
02:01:40 <lament> 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: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 <RodgerTheGreat> pikhq: behold a doodle! http://www.nonlogic.org/dump/images/1204661750-arch.png
03:55:03 <oklopol> well, my point was in no way anything. i should really start tagging my actually meaningful sentences somehow...
03:55:49 <pikhq> IRC with sentence tagging. Good idea?
03:55:55 <pikhq> (very Web 2.0, BTW.)
03:55:59 <RodgerTheGreat> I think I've finally figured out a design for the leg mechanics that I'm happy with.
03:57:28 <oklopol> why the fuck would i drink a couple of energy drinks at about midnight, when i want to wake up early
03:58:01 <pikhq> Because sleeping is bad for you.
03:58:02 <Sgeo> I guess I should work on PSOX safety and finish the filesystem domain, then it's a release of 1.0b1
03:58:16 <Sgeo> pikhq, are you working on PSOX compatible tools?
03:58:29 <pikhq> Sgeo: No, I'm working on a simple kernel.
03:58:41 <Sgeo> Will anyone notice 1.0b1?
03:59:10 <pikhq> ATM, it just proves that I'm running in 32 bit mode.
03:59:43 <pikhq> (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 <Sgeo> Multiboot header?
04:12:31 <pikhq> The GNU Multiboot specification. . .
04:12:53 <pikhq> It's a generic method for a bootloader to talk to an OS kernel and load it into memory.
04:13:05 <pikhq> Works pretty well for most any OS.
04:13:28 <pikhq> 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 <AnMaster> 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: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:31 <slereah_> 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 <AnMaster> 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 <AnMaster> 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 <AnMaster> 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 <AnMaster> so should it be buffered or not?
18:46:16 <AnMaster> err, how is that related to befunge?
18:52:04 <AnMaster> slereah_, btw my bashfunge is going well
18:52:26 <AnMaster> it isn't befunge98, but a superset of befunge93 that is turing complete
18:52:54 <AnMaster> http://rage.kuonet.org/~anmaster/bzr/index.py/log/bashfunge/head
18:53:06 <AnMaster> still a few eval around, plan to fix that later
18:55:18 <ehird_> AnMaster: why do you like Bash?
18:55:35 <AnMaster> ehird_, because it makes people ask why I like bash
18:56:43 -!- BMeph has quit (Read error: 104 (Connection reset by peer)).
18:58:07 -!- olsner has joined.
19:00:22 <AnMaster> ehird_, how is tuberculosis going?
19:00:57 -!- dak has quit (Remote closed the connection).
19:02:22 <ehird_> olsner now likely thinks i literally have tuberculosis
19:03:00 <olsner> 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 <ehird_> '<Sgeo>pikhq, are you working on PSOX compatible tools?'
19:35:41 <ehird_> if not, get back to work! you must do as i say
19:36:43 <Sgeo> AWW NetAuthority is down
19:36:44 <Sgeo> http://www.netauthority.org/index.html
19:38:24 <ehird_> 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 <louzer> What is meant by wrapping constants on wikipedia?
20:24:47 <louzer> I mean I went to BF wiki and found non-wrapping and wrapping constants
20:25:49 <Judofyr> louzer: with wrapping means that if you increment 255, you'll get 0
20:26:08 <Judofyr> on some implementation it will just exit/crash the program
20:27:05 <oerjan> and some, strangely enough, have numbers bigger than 255...
20:27:30 <Judofyr> but most of the time, the wrapping-constants will work
20:27:31 <louzer> 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:28:47 <louzer> u know im starting to like BF
20:29:20 <oerjan> wrapping code may not give the ascii E to begin with
20:29:56 <louzer> I tried and it outputted E
20:29:56 <oerjan> (on a non-wrapping implementation)
20:30:17 <louzer> hmm is non-wrapping .. wrapping the property of the implemetnation?
20:30:58 <oerjan> the non-wrapping code should work on all implementations that can support all byte values at all
20:31:39 <oerjan> wrapping code may only work on those which wrap 255 to 0 and vice versa
20:32:15 <oerjan> 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:33:10 <oerjan> in that case the actual value produced may differ in the other bits
20:33:37 <oerjan> this is because most of the special wrapping code is based on tricks from modulo 256 arithmetic
20:34:08 <louzer> i cant believe this thing is turing complete
20:34:26 -!- jix has joined.
20:35:13 <louzer> if ur on mac os x what is the recommended bf interpreter
20:36:52 <Judofyr> louzer: most interpreter for Linux will work for Mac too
20:37:08 <louzer> Judofyr: ok will compile one then
20:37:43 <Judofyr> louzer: Or find one in Python/Java/Ruby etc.
20:38:02 <louzer> Judofyr: yeah.. or write one
20:40:23 <oerjan> i guess writing a brainfuck interpreter is the initiating rite for #esoteric, like writing a monad tutorial is for #haskell
20:40:43 <oerjan> i don't think i've done either, btw
20:41:00 <Judofyr> which language do you use?
20:41:33 <oerjan> mostly Haskell for what little programming i do nowadays
20:42:21 <Judofyr> oerjan: http://haskell.org/haskellwiki/Short_examples/BF_interpreter :)
20:42:35 <oerjan> oh i know it has been done
20:42:53 <oerjan> it's just i never finished mine
20:43:26 <oerjan> i've mostly done unlambda interpreters instead
20:46:50 <oerjan> what the heck the wiki example uses an actual foreign array
20:49:32 <oerjan> when it's so easy to use a pair of lists for unbounded tape
20:49:50 <Judofyr> oerjan: it's a wiki, you can improve it :)
20:50:13 <oerjan> well it's supposedly a particular interpreter
21:22:20 <SimonRC> in the style of that J interpreter
21:24:18 <SimonRC> "V(tl)for(;;){w.p=*ip.p;(*w.p+2)();}}
21:24:37 <SimonRC> the top-leve loop, with extraneous "
21:24:39 <ehird_> truly, how c was meant to be
21:25:35 <SimonRC> 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 <SimonRC> w is pointing to the current word, BTW
21:26:14 <ehird_> SimonRC: plz show full source
21:26:34 <SimonRC> the code for colon defs relies on w pointing to the current word, becuase it changes the ip to w[3]
21:27:33 <ehird_> SimonRC: I'm working on a concatenative functional language
21:27:41 <ehird_> but strongly-typed like Cat
21:27:50 <ehird_> but cooler - I hope to make it *purely functional* like Haskell
21:28:15 <ehird_> dip :: 'R 'a ('R -> 'S) -> 'S 'a
21:28:50 <ehird_> SimonRC: can't think of any fun examples to show you
21:30:02 <ehird_> SimonRC: but it means that a stack underflow can never happen
21:30:05 <ehird_> since it is always a type error
21:30:13 <ehird_> and is therefore caught at compile-time
21:30:31 <ehird_> SimonRC: now tell me how awesome that is :p
21:32:05 <SimonRC> sounds rather lie cat so far
21:32:43 <ehird_> because cat is not purely functional
21:33:06 <ehird_> does cat have type inferrence?
21:33:08 <SimonRC> OTOH, stacks do tend to put an ordering on instructions
21:33:12 <ehird_> it seems to but not for functions
21:33:20 <ehird_> you can reason about stacks functionally
21:33:31 <ehird_> a function is `stack -> stack`
21:33:36 <ehird_> but with more constraints on 'stack'
21:33:47 <ehird_> where 'R is the rest of the stack
21:33:58 <ehird_> and then ' ' instead of being the application operator like in Haskell is the compose operator
21:34:02 <AnMaster> ehird_, what language is that?
21:35:07 <AnMaster> also, what about TURKY BOMB, did you get anywhere with the interpreter?
21:35:13 <ehird_> but i will work on it soon
21:35:50 <AnMaster> ehird_, did you say I wouldn't be able to do befunge in bash? ;P
21:36:03 <AnMaster> it is befunge93, and quite a bit of befunge98
21:36:06 <ehird_> You are just doing Befunge-93 with one extension, which is trivial.
21:36:21 <AnMaster> ehird_, not one extension, I'm aiming at quite a few of them
21:36:42 <ehird_> until you get Fingerprints and Funge's topology rules..
21:36:54 <ehird_> how WOULD monads work?
21:36:56 <AnMaster> ehird_, I do have fingerprints, partly
21:37:00 <ehird_> functions can return multiple values
21:37:07 <ehird_> but i cannot express that in a type to wrap it in 'm'
21:37:51 <ehird_> bind :: 'R (m 'a) ('R 'a -> 'R (m 'b)) -> 'R (m 'b)
21:37:56 <ehird_> SimonRC: but that only handles one return value
21:43:20 <ehird_> oerjan: that wraps the whole stack in the monad
21:43:29 <ehird_> specifically, the stack gets reduced to one element
21:43:39 <ehird_> 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 <ehird_> oerjan: so that's incorrect
21:44:11 <SimonRC> will it recognise it in constructs like foo$bar?
21:44:11 <ehird_> SimonRC: which pre-processor?
21:44:22 <ehird_> it uses c identifier rules#
21:44:45 <SimonRC> does that mean I can't have a macro called ^ either?
21:45:42 <ehird_> SimonRC: that is correct
21:45:55 <ehird_> $ is a valid macro nam
21:46:10 <ehird_> SimonRC: it uses C breaking rules, but dumbified
21:47:41 <ehird_> SimonRC: that won't break though
21:47:57 <SimonRC> indeed, but it still looks good, even with the spaces
21:48:11 <ehird_> SimonRC: can i see the interp? :D
21:49:18 <ehird_> SimonRC: hehe, HUMAN-LOOKING DEFINITIONS:
21:49:38 <ehird_> say-hi: "Hello, world!" print.
21:51:05 <ehird_> fact: ('R Int -> 'R Int) dup 0 = [1] [dup 1 - fact *] if.
21:51:14 <ehird_> but ofc you can leave out the typedef
21:55:38 <ehird_> SimonRC: what functions does your forth have?
21:55:56 <SimonRC> here are the binary operators, as defined in the source:
21:56:03 <SimonRC> B(ad,+) B(su,-) B(mu,*) B(di,/) B(an,&) B(or,|) B(xo,^)
21:56:36 <ehird_> SimonRC: ehm.. not traditional forth i take it...
21:56:49 <SimonRC> no, that is how they are defined in the C source
21:56:51 <ehird_> that is, 'if' isn't a word defined in forth in yours?
21:57:16 <ehird_> IMO most 'forths' out there that aren't actual real ANS Forth are more like 'regular stack languages'
21:57:37 <SimonRC> the secret of forth is factoring, simplicity, and smallness
21:57:47 <ehird_> SimonRC: jonesforth is the best example of what i'd consider "real forth"
21:57:55 <ehird_> i wouldn't call yours forth, probably :-)
21:58:08 <ehird_> well, I consider 'forth'ness to be an implementation attribute
21:58:12 <ehird_> not the external interface
22:00:11 <ehird_> SimonRC: it looks programmed at a too high level
22:04:19 * SimonRC wonders if there is a way to get macros to set up the initial dictionary
22:05:01 <SimonRC> heck, intialising is going to be really tough
22:05:10 -!- jix has quit ("CommandQ").
22:06:26 <ehird_> SimonRC: forth is a lot easier in asm
22:07:07 <SimonRC> or in fact any language with a semi-decent macro system
22:12:14 <ehird_> SimonRC: I broked jonesforht
22:12:16 <ehird_> Segmentation fault (core dumped)
22:17:02 <ehird_> SimonRC: I wonder how small you can make a Fort
22:17:08 <ehird_> maybe a 100% ascii dos com one? :)
22:41:29 <SimonRC> ok, I have some untestted and indeed uncompiled code to show you
22:45:14 -!- sebbu has quit ("@+").
22:45:28 <SimonRC> yeah, my logger just told me that
22:46:26 <ehird_> SimonRC: soon, pb.eso-std.org
23:02:17 <ehird_> 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 <ehird_> 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 <Sgeo> I think I'll work on PSOX 1.0b1 on Friday
23:26:17 <Sgeo> And I'm adding in safety stuff
23:28:07 -!- olsner has quit ("Leaving").
23:28:12 <ehird> Sgeo: I would argue with you, but I'm too busy despairing about PSOX every time it's mentioned.
23:28:46 <Sgeo> It's internal safety against mistakes, not safety against malicious PSOX programs
23:36:29 <pikhq> 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 <ehird> pikhq: Are you satirizing it?
23:39:16 <pikhq> ehird: Just commenting ATM.
23:39:23 <pikhq> My satire is crueler.
23:39:43 <pikhq> So, basically, you're strapping a nuclear sub to a skateboard?
23:39:57 <ehird> pikhq: It's a nuclear sub with a little plastic cover over the torpedo buttons.
23:40:13 <ehird> Except that 'rm *' in PSOX would require a call to glob, etc.
23:40:18 <ehird> 'ls', significantly easier.
23:40:25 <ehird> And how on earth do you typo something like that?!
23:45:37 <ehird> welp, if you make something like that...
23:45:43 <ehird> you deserve the lesson!
23:45:50 <ehird> esp. if you're running it in a dir with important files
00:16:47 <Sgeo> Also, there's basically an rm -rf in the current PSOX spec
00:16:56 <Sgeo> and you could easily specify a /
00:17:45 <Sgeo> 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 <ehird> [00:16] <Sgeo> Also, there's basically an rm -rf in the current PSOX spec
00:20:43 <ehird> This just means your spec is retarded.
00:20:46 * Sgeo pokes pikhq now
00:21:04 <ehird> Also, presumably there is no 'network-rm', because that would make no fucking sense.
00:22:28 <Sgeo> What does a lack of network-rm have to do with anything?
00:23:25 <Sgeo> 0x00 0x06 0x06 FNUM(1)/recursive STRINGNL/entityname 0x0A
00:23:39 <Sgeo> Um, the trac version doesn't have the force option yet
00:24:09 <ehird> Sgeo: Because if you use a filesystem function instead of a network function you COULDN'T accidentally 'rm -rf'.
00:27:29 <Sgeo> 0x00 0x06 something instead of 0x00 0x08 something doesn't sound too difficult to me
00:27:47 <Sgeo> although I think the arguments would be wrong, but still..
00:29:36 <Sgeo> Maybe I should restrict FS operations to the current directory?
00:33:48 <ehird> 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 <ehird> And putting them behind flimsy plastic.
00:39:14 <pikhq> Sgeo: I'm going to recommend *against* that.
00:39:38 <pikhq> 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 <Sgeo> Against restricting to the current directory (or below)?
00:40:29 <Sgeo> pikhq, but someone could make a mistake in writing a BF program and accidentally call it
00:40:58 <ehird> Sgeo: And someone could, by mistake, rewrite PSOX to be the evilest virus.
00:41:02 <ehird> Then run it as root on a government system.
00:41:08 <ehird> You could go to jail! Better stop writing PSOX.
00:42:22 <pikhq> And someone could, by mistake, do the 'rm' syscall rather than 'ls'. :p
00:42:38 <Sgeo> Somehow, I think calling rm by mistake is much more likely than your scenario ehird
00:42:50 <Sgeo> pikhq, well, I think the arguments are slightly different, but still...
00:44:00 <ehird> I really do not understand how Sgeo's mind works.
00:44:49 <ehird> (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 <Sgeo> 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 <ehird> Then nothing would happen because he'd have permissions set up sanely.
00:48:09 <ehird> Well, I'm leaving this madhouse for another day. See you people around.
00:48:21 -!- ehird has quit ("Konversation terminated!").
00:54:38 <Sgeo> I suppose certain functions should have safety codes..
01:26:44 -!- faxathisia has joined.
01:43:13 <Sgeo> 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 <oklofok> 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 <oklofok> ";" 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:49 <oklofok> 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:03:11 <oklofok> 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 <oklofok> at least i think it will suffer from the halting prob, i haven't defined semantics fully yet
03:04:38 <oklofok> lol. my cise quicksort is simply *wrong*.
03:04:52 <oklofok> it's not a typo, it's simply the wrong algo.
03:05:34 <oklofok> /2;A b:C,',JnB this is some weird hybrid of mergesort and quicksort
03:05:57 <oklofok> cuts list in half, sorts both sides, and puts the middle element back in the middle
03:07:23 <oklofok> i'm very tempted to leave all constants impossible to put in the source :P
03:07:36 <oklofok> so that number 2 could not be "2"
03:07:52 <oklofok> 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:20:24 <oklofok> bsmntbombdood: i'm aware of that. anyway, new quicksort: h:L,JnH'/#>h
03:21:04 <oklofok> 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:22:54 <oklofok> 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:24:55 <oklofok> /# 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 <oklofok> it's not actually complex, just hard to explain in a short manner...
03:28:31 <oklofok> hmm... it seems it's not even trivial to define in cise
03:28:38 <Sgeo> Is anyone going to fiddle with PSOX 1.0b1 when it's released?
03:28:58 <oklofok> Sgeo: are you going to play with cise when i finish my interp?
03:29:15 <oklofok> at least i know what yours is :P
03:29:27 <oklofok> you prematurely proved my point
03:30:58 <oklofok> btw. did anyone actually read my explanations? the function is a bit complex, i may have a fundamental error there
03:31:13 <oklofok> 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 <oklofok> Sgeo: anyway, because i too am an attention whore, cise is my *awesome* language
03:34:35 <oklofok> it's so awesome, you could say "awesome is cise", and not be wrong.
03:35:31 <oklofok> wtf... i have failed in bubblesort too
03:37:16 <Sgeo> oklofok, wiki page?
03:37:26 <oklofok> 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)).
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 <AnMaster> is it possible to make a quine in brainfuck I wonder
11:11:04 <faxathisia> Yes it is, here's one for example http://www.bf-hacks.org/hacks/quine.b
11:13:22 <AnMaster> I find befunge source a lot easier to follow than brainfuck btw, is that normal?
11:14:39 <faxathisia> I can't program in any stack language at all though
11:27:42 <AnMaster> I find stack languages quite easy
11:27:53 <AnMaster> compared to languages like brainfuck
11:28:12 <AnMaster> visualizing the path is easy for me
12:11:11 * slereah_ received a book on modal logic.
12:11:19 <slereah_> I shouldn't have bought the cheap version.
12:11:58 <faxathisia> I like it when I got a book from the library and someone "corrected" something in the book wrong
12:12:26 <slereah_> In that case, it isn't so moch corrected as "I need money for a notebook"
12:12:46 <slereah_> But now, he doesn't have the book!
12:13:59 <slereah_> "This is a metaproof of a metatheorem, not a proof of a theorem"
12:14:09 <slereah_> Can't you write that on a piece of paper you cheap bastard?
12:14:59 <slereah_> I suppose it's a proof done outside the system itself
12:15:23 <slereah_> 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 <slereah_> Book Description: Shows general cover wear. Highlighting and writing
12:17:28 <slereah_> throughout. Otherwise no problems.
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 <RodgerTheGreat> 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:44 <slereah_> My guess would be some sort of class context.
16:16:54 <slereah_> Possibly with the author himself!
16:17:04 <slereah_> (There's the phone number of the author in the book)
16:18:40 <slereah_> Although since there's also the adress of the university, I guess not
16:18:54 <slereah_> 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: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 <SimonRC> An amazing mix of the serious and parody: http://www.gamasutra.com/view/feature/3563/microsoft_excel_revolutionary_3d_.php?page=1
19:43:42 -!- oerjan has joined.
19:52:46 <SimonRC> http://www.bash.org/?845468
19:53:27 <faxathisia> so totally should have been ++sheep; not sheep++;
19:54:09 <faxathisia> (wait do you read sheep++; as 'increment sheep'?)
19:55:15 <AnMaster> ++sheep would be pre-increment
19:55:33 <faxathisia> "post increment sheep" "sheep post increment" or what?
19:55:47 <AnMaster> iirc (but I'm not sure) related sequence point in C
19:56:09 <AnMaster> faxathisia, the former I would say
19:56:17 <faxathisia> semantically it makes no difference to the code
19:56:30 <AnMaster> faxathisia, with post and pre no, indeed
19:56:31 <faxathisia> but it matters to whether or not it rhymes
19:57:03 <faxathisia> and for me it didn't rhyme because I read it "sheep plus plus"
19:57:26 <AnMaster> lol, that should be a programming language
19:58:00 <AnMaster> you got a infinite queue of sheeps, jumping over the gate (ie, pushing them onto the stack)
19:58:25 <AnMaster> anyone want to write a spec for it?
19:58:26 <slereah_> A queue jumping on a stack? :o
19:59:10 <AnMaster> I bet you could base a programming language on counting sheeps
19:59:34 <slereah_> But what can you do with that language?
19:59:43 <AnMaster> oh wait, with ++, hm it got to be object orientated
20:00:16 <slereah_> That's the problem with awesome ideas. You need to make instructions out of them.
20:00:23 <AnMaster> gate would have to be a critical section, for concurrency issues
20:01:20 <AnMaster> curse you heisenbug, sql error again
20:01:25 <AnMaster> from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)".
20:03:29 <AnMaster> faxathisia, tell me about abject
20:03:40 <AnMaster> I don't know French and GOTO++ seems to lack an English manual
20:04:02 <faxathisia> It's from this http://gpp.niacland.net/faq.html.en
20:04:10 <AnMaster> slereah_, ok, I'll write a programming language in Swedish then
20:04:21 <AnMaster> slereah_, and tell you that too :P
20:04:52 * slereah_ once thought of making a BF clone in ancient egyptian
20:05:01 <slereah_> But unicode doesn't have hieroglyphs
20:06:21 <slereah_> There's the other standard (forgot the name) that had an attempt at it.
20:06:28 <slereah_> With 1500 fucking symbols in it
20:06:59 <oerjan> the egyptians must have been pretty advanced to have 1500 symbols for fucking
20:07:04 <AnMaster> faxathisia, that page really doesn't explain it
20:07:14 <faxathisia> 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 <AnMaster> faxathisia, yes, but what does that *MEAN*
20:07:55 <oerjan> what about subject-oriented programming, anyone done that?
20:08:18 <AnMaster> faxathisia, of course, it is a esoteric language
20:08:25 <AnMaster> is there an interpreter for it?
20:11:05 <AnMaster> 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 <AnMaster> still the fingerprint stuff missing for example
20:11:34 <slereah_> I wonder, who are all those people who never talk?
20:11:45 <AnMaster> slereah_, highlight them all and see?
20:11:56 <slereah_> I mean, you know, who are they really!
20:11:58 <AnMaster> slereah_, I can go on for days without saying a word in this channel
20:12:13 <AnMaster> I'm on a total of 378 channels currently
20:12:15 <slereah_> But some of them, I don't think I ever saw them talking!
20:12:26 <AnMaster> slereah_, are your irc client on 24/7?
20:12:42 <slereah_> My computer is always on, at least.
20:12:51 <slereah_> And I usually look at the logs.
20:15:39 <lament> is there something like mycology but for befunge 93?
20:15:44 <AnMaster> 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:16:11 <AnMaster> lament, hm yes mycology does have a b93 part
20:17:39 <lament> oh wow, beQunge is really pretty
20:19:19 * lament is writing a befunge-93 interpreter
20:19:42 <AnMaster> lament, well see http://rage.kuonet.org/~anmaster/bzr/index.py/log/bashfunge/head
20:20:03 <AnMaster> it is currently befunge08, a simplified befunge98 version
20:20:31 <AnMaster> lament, in what language are you writing your befunge-93?
20:21:06 <slereah_> Is there a funge that's based on designing circuits?
20:21:07 <AnMaster> "be wondering"? You mean "is wondering"?
20:21:17 <slereah_> Yes. But with "be" to sound cooler.
20:21:19 <AnMaster> slereah_, interesting, how do you mean
20:21:51 <slereah_> Well, you design a circuit in ASCII.
20:22:37 <AnMaster> lament, well befunge93 is easy
20:23:13 <AnMaster> slereah_, interesting, but would it be a funge really? self modification would not be possible I think
20:23:56 <slereah_> I'm not too knowledgable on funges
20:24:28 <slereah_> Because I'm not too sure I'd be able to make a parser for it.
20:24:37 <slereah_> I already have trouble making Mulambda.
20:25:13 <slereah_> I'm trying to make a language based on µ-recursive functions.
20:25:29 <AnMaster> err what is a "µ-recursive function"?
20:25:34 <slereah_> Because for too long, the grandfather of all computing has been ignored!
20:25:44 <slereah_> AnMaster: You define a list of functions.
20:25:50 <faxathisia> it is shown that the μ-recursive functions are precisely the functions that can be computed by Turing machines
20:26:34 <slereah_> The projector function p,n(x1,x2,x3,...,xn) = xn
20:27:00 <slereah_> And the µ function, µy f(y,x1,x2,...) = smallest y such that f = 0
20:27:18 <slereah_> And it is indeed Turing complete.
20:27:32 * AnMaster finds that hard to believe, but if you say so...
20:27:40 <slereah_> Well, not counting combinators and the analytical engine
20:27:51 <AnMaster> btw, is the human brain turing complete? or is it more? or less?
20:27:54 <slereah_> But it's what launched all the theories on computability
20:28:10 <slereah_> The human brain is moar of a bounded storage machine
20:28:11 <faxathisia> AnMaster: There's no evidence of anything
20:28:44 <AnMaster> slereah_, true, not turing complete, but with infinite memory, would it be turing complete?
20:29:21 <slereah_> Well, any man can perform the instructions of a Turing machine!
20:29:33 <faxathisia> 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 <slereah_> faxathisia: But what if a computer has a soul too :o
20:30:23 <faxathisia> It just doesn't make sense to talk about something organic like this in a mathematical formalization
20:36:14 <oklofok> the human brain is asm-tc, it is easily programmable as if it was a turing machine, but it is bounded
20:36:37 <oklofok> anyone can simulate sk in their head
20:36:51 <oklofok> slereah_ just said that, i see
20:37:12 <slereah_> Well, in your head gets awkward fast.
20:37:41 <slereah_> Sure you can. Tell someone a list of instructions!
20:37:50 <faxathisia> They way a brain thinks is like the way gravity works
20:51:19 -!- Corun has joined.
20:53:10 <ihope> slereah_: the projector function returns its last argument?
20:53:31 <slereah_> Well, it returns the nth argument
20:54:17 <slereah_> It's actually supposed to be p(k,n)(x1,x2,x3,...,xn) = xk
20:54:30 <slereah_> But really, the n is usually clear from the context.
20:55:53 <faxathisia> slereah_: You could write an interpreter in lisp without having to write a parser
20:56:27 <slereah_> Learning real languages isn't much fun
20:57:02 <faxathisia> a lot of people think it's not a real language :P
20:58:00 <slereah_> Does it have more than 30 instructions?
20:59:43 <ihope> Only two instructions are required: "next program" and "run".
21:00:13 <ihope> Program number 27 is +++++++++++++++++++++++++++R.
21:00:38 <slereah_> (Because theoretically, you could totally do it)
21:01:10 <slereah_> 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 <ihope> Is what actually true?
21:02:46 <ihope> It's possible, but very inefficient. :-)
21:03:23 <ihope> You do if you want these to actually be instructions.
21:03:35 <ihope> And if you don't want the instructions to be psychic.
21:04:27 <slereah_> Well, repeating quine at least.
21:04:38 <ihope> Here we go: http://esoteric.voxelperfect.net/wiki/Unary
21:04:45 <ihope> I imagine an actual quine would be possible.
21:09:20 <ihope> "Should be treated and output" should be treated and output.
21:11:23 <ihope> 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 <ihope> 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 <oklofok> 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 <oklofok> doing it like that shouldn't be too hard
21:13:22 <slereah_> Also, there might not be enough matter in the universe to run said program
21:14:22 <slereah_> Plus, with unary, you can just use brute foce!
21:16:32 -!- ehird has joined.
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 <ehird> Message message message message message.
21:20:37 <slereah_> Zot might be a better choice for unary.
21:20:52 <slereah_> Although it tends to be rather huge.
21:22:53 <ehird> dip :: 'R 'a ('R -> 'S) -> 'S 'a
21:23:13 <ehird> (also, dip is like the nicest thing ever. it makes stack language code pretty.)
21:23:49 <ehird> on another note.. printf :: 'R str -> 'S
21:24:21 <ehird> uncons :: 'R [a] -> 'R [a] a
21:24:25 <ihope> But * is a type. :-P
21:24:39 <ehird> uncons :: 'R ['a] -> 'R ['a] 'a
21:24:46 <ehird> which is really useful for functional stuffs.
21:30:06 <ehird> faxathisia: do you like stack languages?
21:30:19 <faxathisia> They make me feel stupid in the bad way
21:30:28 <ehird> faxathisia: you'll like Joy!
21:30:32 <ehird> it's not like forth
21:30:33 <ehird> it's a lot simpler
21:30:43 <ehird> faxathisia: seriously.
21:30:49 <ehird> well, yeah, probably
21:30:54 <ehird> but 'dip' &frenz are nice
21:31:15 <faxathisia> It put me off stack languages for life
21:31:50 <ehird> faxathisia: http://rafb.net/p/7ISFuM24.html
21:32:01 <ehird> it can, obviously, only be typechecked at runtime
21:32:10 <ehird> it would require a very specialized typesystem to be otherwise :)
21:32:26 <ehird> if you have type info at runtime, just splatter check calls before 'print' in the 's','i',etc cases
21:32:36 <ehird> faxathisia: i think that should be easy enough to read :)
21:32:55 <ehird> 'case' is the only real magic there
21:33:07 <ehird> [..] is a list, and a closure.
21:33:15 <ehird> faxathisia: its not modeled on Joy's
21:33:17 <ehird> that's my language
21:33:30 <ehird> faxathisia: maybe so
21:33:34 <ehird> and it's strongly typed
21:34:17 <ehird> "case" won't type well
21:34:23 <ehird> in fact [...] as a sequence won't , in general
21:34:25 <ehird> this is a pseudotype for it
21:34:53 <ehird> case :: 'R 'a ['a ('R -> 'S)] -> 'S
21:34:58 <ehird> where [a b] means 'a list of a and b'
21:35:21 <oerjan> for strong typing you're going to need several differen kinds of lists, like haskell has both lists and tuples
21:36:19 <ehird> oerjan: but i like the []y syntax
21:36:41 <ehird> which won't type even as a tuple (e.g. [(a,b)] would be [(a b) (a b)])
21:42:15 <AnMaster> <AnMaster> 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 <AnMaster> <AnMaster> ehird bet I couldn't do it
21:42:31 <AnMaster> ehird, that is how far I got with my befunge in bash today
21:42:49 <AnMaster> ehird, how goes tuberculosis ?
21:46:10 <ehird> AnMaster: On hold until I figure out how to reasonably manipulate fractions of bits
21:46:24 <ehird> have you tried Mycology on it?
21:46:33 <AnMaster> that is how I can say what is left
21:46:51 <AnMaster> ehird, http://rage.kuonet.org/~anmaster/bzr/index.py/log/bashfunge/head
21:46:58 <ehird> (if it's so easy, I'm tempted to micro-optimize a C one.)_
21:47:07 <AnMaster> ehird, well the x instruction, I got it working locally
21:47:16 * oerjan wonders if Mycology would be a good cure for tuberculosis
21:47:19 <ehird> the mycology guy is devilishly clever
21:47:57 <AnMaster> ehird, but I think the hard bits are the bits left really
21:48:06 <ehird> AnMaster: probably
21:48:12 <ehird> AnMaster: do you support N-funge?
21:48:22 <ehird> that is, not just Une/Be/Tre
21:48:32 <AnMaster> ehird, with more, it would be harder I bet
21:48:39 <ehird> AnMaster: they're all derived the same way algorithmically though aren't they?
21:48:54 <AnMaster> ehird, yeah, with a few more/less instructions
21:48:59 <AnMaster> like "go into screen" and such
21:49:12 <ehird> AnMaster: what does 6-funge look like? :-)
21:49:18 <ehird> (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 <AnMaster> ehird, depends on language, in Swedish six and sex are both the same word heh
21:49:54 <ehird> AnMaster: Sextuple
21:50:02 <slereah_> Is that when you got mushrooms on your genitals?
21:50:19 <ehird> Sex, pressions, funge.
21:50:40 <ehird> AnMaster: "HRTI" 0x48525449 High-Resolution Timer Interface
21:50:40 <AnMaster> ehird, anyway, in befunge I can kind of cheat with wrapping
21:50:46 <ehird> you will have trouble with that
21:50:56 <AnMaster> ehird, I haven't done any extensions yet
21:50:57 <ehird> "PERL" 0x5045524c Generic Interface to the Perl Language <-- you can do this though
21:51:01 <AnMaster> and you don't have to support them
21:51:09 <ehird> mycology tests them
21:51:17 <AnMaster> ehird, and accepts if they don't exist
21:51:28 <ehird> you should support TURT
21:51:31 <ehird> because they're a b98 TURT quine
21:51:34 <ehird> it draws itself using it
21:51:36 <AnMaster> ehird, I won't implement such. I aim at correctness not speed also
21:51:46 <ehird> it's no fun without the fprints
21:52:05 <ehird> "TRDS" 0x54524453 IP travel in time and space <- this might be difficult
21:52:10 <ehird> AnMaster: the TURT quine!! it's fun!
21:52:17 <AnMaster> ehird, also I don't know how to do negative funge-space
21:52:26 <AnMaster> maybe if I got three extra arrays
21:52:56 <AnMaster> and a lot of fiddling with the index
21:53:10 <AnMaster> <ehird> "TRDS" 0x54524453 IP travel in time and space <- this might be difficult <-- in time?
21:53:20 <AnMaster> ehird, anyway where is the registry over these extensions?
21:54:05 <ehird> AnMaster: that's from the mycology readme
21:54:34 <AnMaster> 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:55:02 <AnMaster> line 1 = [0 +x], line 2 = [ const * y + x]
21:55:13 <AnMaster> where const is first the longest line of the loaded code
21:55:25 <AnMaster> it is time consuming reallocation
21:55:36 <ehird> that's how you do raw screen stuff in an OS :-)
21:55:37 <AnMaster> ehird, anyway if I wanted speed, I'd do it in C
21:55:43 <ehird> 0xB8000(insert correct number of 0s)
21:55:47 <ehird> cast to unsigned char *
21:56:12 <AnMaster> ehird, anyway reallocation is painfully slow
21:56:20 <AnMaster> a few seconds for even small programs
21:56:28 <AnMaster> with native 2D arrays it would be much better
21:56:54 <AnMaster> ehird, also, I'm not even going to try concurrent funge or file io or execute
21:58:51 <AnMaster> 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 <AnMaster> ehird, feel free to make patches to my code!
22:01:48 <AnMaster> actually once I get this working, I may do a C version
22:05:10 <ehird> AnMaster: fix yur bzrweb
22:05:32 <ehird> and all the NS apis, oh my, <3
22:05:44 <ehird> gnustep is kind of useless though :)
22:05:59 <ehird> so i hope someone writes a decent implementation of all of those nice APIs that is cross-platform
22:06:09 <ehird> otherwise, people will have to buy macs to use my software. how will i live. :(
22:09:54 <ehird> I'm going to write one in Python. But it'll be fast, thankfully.
22:10:01 <ehird> It'll be spending most of its time in C. :P
22:10:14 <ehird> I should call it f3nge (see topic)
22:11:10 -!- jix has quit (Read error: 148 (No route to host)).
22:12:42 <ehird> take smalltalk, take c, and make them actually hug
22:12:49 <faxathisia> You should try writing 11k line programs in it with a friend
22:13:14 <ehird> (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 <lament> 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:55 <lament> and, of course, there's NO STANDARD LIBRARY which completetly KILLS any potential the language might have had.
22:14:44 <ehird> there is a standard library, dear lament
22:15:03 <ehird> fyi the NS classes are awesome.
22:15:11 <ehird> faxathisia: eek. :-)
22:15:21 <lament> the NS classes as provided by gnustep?
22:15:40 <ehird> lament: no, Apple. But I am biased. ;)
22:15:53 <lament> ehird: oh, apple, sure. I agree.
22:15:56 <ehird> is that a parody involving e?
22:16:08 <ehird> lament: yeah other platforms need a good implementation
22:16:09 <lament> ehird: but locked-in languages are silly
22:16:19 <ehird> but openstep exists
22:16:19 <lament> apple pretty much owns objc
22:16:24 <ehird> and needs some love
22:16:34 <ehird> 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 <ehird> faxathisia: however i do like cocoa
22:17:41 <ehird> (Also, sscanf is a horrid abomination from hell. That's why. :P)
22:17:46 <faxathisia> That's just a biproduct of my work writing an objc bride in CL btw
22:19:09 <oerjan> Is cocoa a parody avoiding a particular vocalic symbol?
22:19:34 -!- RedDak has joined.
22:22:16 <oerjan> Also, why is this involving bridal affairs?
22:30:14 <lament> faxathisia: you actually use CL? :)
22:30:25 <SimonRC> well, KigForth now does a little bit of stuff
22:31:00 <SimonRC> I have a program that does 6 7 * .
22:31:13 <SimonRC> it uses a word in forth to do call *
22:31:37 <ehird> i tried kigforth when you posted it
22:31:50 <SimonRC> I did say I had'nt tried to compile it
22:32:01 <ehird> SimonRC: Make kigforth strongly typed!
22:32:32 <ehird> SimonRC: but strongly-typed functional concatentative languages are fun
22:33:27 <ehird> SimonRC: that c code is actually really nice
22:33:38 <ehird> i wish all c was like that.. i hate looking at most c :p
22:33:57 <SimonRC> deadpan sarcasm doesn't work that well on IRC
22:33:57 <ehird> assert(sizeof(C*) == sizeof(C));
22:33:59 <ehird> that's quite a demand
22:34:08 <ehird> SimonRC: good thing -- it wasn't sarcasm
22:34:22 <lament> faxathisia: do you like it?
22:34:58 <SimonRC> the idea is that C is a "cell" type: a union of equal-sized ints, pointers, function pointers, etc
22:35:25 <SimonRC> the asserts make the program blow up meaningfully if the types aren't the same size as the union
22:35:53 <SimonRC> I ought to comment the cryptic variable names a bit more
22:35:59 <ehird> SimonRC: your C is too advanced
22:36:03 <ehird> SimonRC: in forth cells are untyped..
22:36:09 <ehird> they're just "int"
22:36:19 <ehird> and internally, cast into (int *) when doing odd stuff
22:36:46 <SimonRC> but casts are too long textually
22:37:07 <ehird> SimonRC: Easily solvable.
22:37:17 <SimonRC> .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 <ehird> #define CP(x) (x*)
22:37:26 <ehird> SimonRC: and maybe so, but it's not Forthy
22:37:54 <lament> mm... maybe i should learn CL after all
22:40:59 <SimonRC> heh, obviously the definition of fetch should be:
22:41:07 -!- RedDak has quit (Remote closed the connection).
22:41:16 <SimonRC> I like ;D;D to drop two items from the stack
22:53:03 <slereah_> Hm. Maybe I should write Clock Punk in C.
22:53:18 <slereah_> It has an easy syntax and concept, and it would be faster.
22:53:44 <slereah_> Although I think I need to separate the I/O from the memory.
22:54:09 <slereah_> The input is a nightmare when it's on the memory.
22:55:08 <slereah_> Already bad enough to deal with the input time!
22:56:07 -!- oerjan has quit ("Good night").
23:12:23 <slereah_> "For output, the machine would have a printer, a curve plotter and a bell. "
23:14:50 <ihope> For getting attention, I suppose?
23:16:37 <ihope> 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 <olsner> "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 <ihope> All proofs of P = NP can be put into the form "X. X implies P = NP. Therefore, P = NP."
23:19:56 <ihope> 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 <ehird> ihope: P = NP, because I said so.
23:58:19 <ehird> SimonRC: I am writing a forth in the same style now!
23:58:23 <ehird> int main() {for(;;)NEXT();return 0;}
23:58:59 <ehird> SimonRC: ok, this is awesome:
23:59:03 <ehird> void NEXT() {ip++();}
23:59:17 <ihope_> ehird: you forgot I said so => P = NP. :-P
23:59:31 <ehird> ihope_: I said so => X for all X
23:59:55 <ihope_> So, MPEG looks like a series of JPEG images, doesn't it?
00:00:12 <ehird> 'series of jpg images' is actually a video format
00:00:15 <ehird> can't remember its name
00:00:27 <ehird> ihope_: H.264 is where it's at
00:02:12 <ihope_> So if I have one image displaying for half an hour...
00:04:59 <ehird> The brk and sbrk functions are historical curiosities left over from ear-
00:04:59 <ehird> lier days before the advent of virtual memory management.
00:05:01 <ehird> SHUT UP OS X MANPAGES
00:05:25 -!- ihope has quit (Read error: 110 (Connection timed out)).
00:05:28 <ehird> SimonRC: where is kigforth
00:13:44 -!- atsampson has joined.
00:14:50 <lament> so i have this MPEG file
00:15:21 <lament> it was made by catting several smaller clips together
00:15:51 <lament> now, some players (MPlayer) play all of it, and some (Quicktime) stop after the first clip
00:16:36 <lament> i wonder if the mpeg standard is under-specified, or if mplayer is just really smart
00:17:42 <Corun> That's what I'm normally wondering while watching catted together porn.
00:17:58 <ehird> lament: mplayer smartness
00:18:02 -!- slereah__ has joined.
00:18:15 <ihope_> Which, I suppose, means "both".
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:52 <ehird> the eso-std.org pastebin will be up sometime
01:11:43 <ehird> unfortunately; pygments doesn't haev that many esolang highlighters right now
01:11:45 <ehird> it has Brainfuck, though.
01:11:50 <ehird> Still, writing 'em will be trivial.
01:12:12 <slereah__> What is there to highlight in BF apart from brackets?
01:17:02 <ehird> slereah__: grouping
01:17:17 <ehird> those groups should be highlighted differently but the same between chars
01:17:23 <ehird> + and - the same, but different from <>
01:17:34 <ehird> 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 <slereah__> Wouldn't highlighting the +- and all result in a terrible eyesore?
01:21:19 <ehird> I.e. groups of instructions that are inverses or whatever, should highlight the same
01:21:23 <ehird> ais523's emacs mode does that
01:21:35 <slereah__> Then I reiterate my remark : wouldn't that be a terrible eyesore?
01:22:43 <ehird> It's quite nice in ais523's mode
01:24:14 <slereah__> Any other highlighter project in mind?
01:25:00 -!- ihope__ has joined.
01:25:03 -!- ihope__ has changed nick to ihope.
01:26:28 <slereah__> The "command" thing is a little fuzzy for some though.
01:32:22 <ihope> It is kind of a shame that we don't have attention spans.
01:32:37 <ihope> I have a wonderful idea for a program but don't have the attention span to write it.
01:33:43 <slereah__> I usually wait for some period of activity where I can actually hold on to a project for a few weeks!
01:34:26 <slereah__> That's pretty much how the Love Machine 9000 and Lazy Bird got written. And why everything since is in limbo.
01:34:31 <ihope> Some period of activity?
01:34:59 <ihope> Are you currently schooling?
01:35:14 <slereah__> Yes. Although it has little to do with it.
01:41:00 <ihope> 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 <ihope> I want to give 10,000 creatures each a 10-kilobyte brain and see what emerges.
01:58:36 <ihope> Well, I'll be gone, sir, and anon sir, and quoting Shakespeare again when I return.
02:00:02 -!- ihope__ has joined.
02:04:17 <slereah_> 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 <GregorR> ihope__: so i herd u liek mudkips
03:38:04 <Sgeo> GregorR, pikhq ihope__ slereah__: Should I remove directory manipulation, i.e. only allow removal of individual files at a time?
03:38:10 <Sgeo> And copying moving etc.?
03:39:34 <Sgeo> slereah__, hm?
03:40:27 <slereah__> 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 <oklofok> "<ihope> 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:51:00 <oklofok> 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:26 -!- ehird has quit ("This computer has gone to sleep").
03:51:36 <oklofok> 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 <slereah__> It's been six months and I still don't know! :
03:51:59 <oklofok> that will require explicit second-order coding
03:52:06 <oklofok> which is kind of a lame term
03:52:21 <oklofok> slereah__: my grandest language atm
03:53:17 <oklofok> it's kinda like python, but even less restricted
03:53:38 <oklofok> syntax is 100% robust in that everything parses
03:54:28 <oklofok> 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:57 <oklofok> dynamic *typing* simply sounds more natural, i always confuse the terms :)
03:55:48 <oklofok> like I = 5; while ´{ I < 10 } ´{ I <- I + 1 }
03:56:12 <oklofok> "´"'s are ncessary, because functions are assumed to be funcokens otherwise
03:56:32 <oklofok> a funcoken is a token parsed as an operation, kinda
03:56:53 <oklofok> so you can do 4 {_ * __ - 2} 5 to get 4*5-2
03:57:46 <slereah__> Why the double underscore in the middle?
03:57:49 <oklofok> "__" 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:58:09 <oklofok> ...in case both are used, that is
03:58:20 <oklofok> if you don't use __ in the body, both will be in _ :D
03:58:39 <oklofok> so... parsing needs infinite lookahead
03:58:53 <oklofok> i consider this a positive thing
03:59:17 <oklofok> well... you don't have to do that at parsing
03:59:42 <oklofok> i haven't done it yet, so i don't even know the exact semantics with more complicated functions
03:59:58 <slereah__> Is it inspired by anything in particular?
04:00:05 <oklofok> hmm... wonder if i should make functions objokens by default...
04:00:31 <oklofok> although i don't exactly know much about K
04:00:58 <oklofok> the name looks like smalltalk, but when i decided on the name, i had no idea what smalltalk was
04:01:25 <oklofok> 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:52 <oklofok> faxathisia: it's one more?
04:02:35 <oklofok> nothing says a joke is trivial more than two guys saying it simultaneously
04:04:09 <oklofok> 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 <oklofok> whhell, as they say, cheating is self-beating!
04:05:01 <oklofok> i had a dream i was running in the hallway of my house and ircing via the buttons of the elevator
04:05:16 <slereah__> What, you were senging it in binary?
04:05:49 <oklofok> no, the wall had the whole alphabet
04:06:10 <oklofok> there was no screen, i saw the text in my head
04:06:34 <oklofok> this dream involved me drinking 3 liters of chocolate milk
04:07:02 <slereah__> Well, you know 6 letters of it already!
04:07:52 <oklofok> the problem with oklotalk parsing is, even though everything parses, most things are pretty uninteresting
04:08:15 <oklofok> faxathisia: baning at it at random?
04:08:45 <faxathisia> ',.pyfgcrl aoeuidhtn qjkxbmwv <-- without duplicates
04:10:05 <oklofok> i like the idea of left-had only okoing
04:10:28 <oklofok> i guess there's efefefefefefe
04:10:37 <oklofok> but i never got into that really
04:12:01 <oklofok> perhaps i should continue my cise interp instead of watching friends
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 <lament> my keyboard feels sticky and disgusting :(
06:18:09 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
06:18:46 <lament> 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:46:04 <lament> http://z3.ca/~lament/keyboard.html
06:48:52 <oklofok> asdf i want a keyboard where keys aren't in that stupid formation
06:49:46 <oklofok> it seems i'm the only one in this world who wants their character part of the keyboard to be symmetric
06:49:58 <oklofok> this is fairly weird, since not many have asymmetric hands
06:50:15 <oklofok> the character part of the keyboard == the left part
06:50:58 <oklofok> it should be a bit to the right or a bit to the left
06:51:12 <lament> i think the keyboard should just be split into two halves
06:51:14 <oklofok> every time i press a button on it, i die a bit inside, it's simply wrong.
06:51:22 <lament> since each button is only assigned one hand
06:51:30 <lament> it makes no sense to keep the two parts together
06:51:53 <lament> (well, you need to have two space buttons... big deal)
06:51:54 <oklofok> true, but that's something i can live with
06:52:02 <lament> such keyboards do exist
06:52:43 <oklofok> but are there any keyboards out there where the lines of the keys aren't... retarded?
06:52:59 <oklofok> i have a hard time finding a term for that
06:53:00 <lament> oh, nice, it's not even very expensive:
06:53:01 <lament> http://www.kinesis-ergo.com/freestyle.htm
06:53:28 <oklofok> you see those in shops all the time
06:54:36 <oklofok> hmm... perhaps i could buy that projective keyboard and wribble it into giving me a sensible keyboard setting
06:59:42 <oklofok> 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 <oklofok> well, i guess vlc supports that anyway, but i have no idea how
07:00:20 <oklofok> 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 <SimonRC> 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.
11:37:15 -!- tejeez has quit (Read error: 145 (Connection timed out)).
11:42:42 <SimonRC> ooh, cool stuff: http://www.lambdacs.com/debugger/debugger.html
11:43:16 <SimonRC> the more you play with it, the more amazing it gets
12:05:07 -!- Tritonio_ has joined.
12:26:02 <AnMaster> <ehird> 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 <Sgeo> LAST STORY IN FINE STRUCTURE RELEASED WOOHOO! http://qntm.org/?structure
16:16:51 <Sgeo> what's ? about it?
16:19:44 <ais523> the sentence doesn't make a whole lot of sense, and I don't like clicking on random hyperlinks
16:19:49 <AnMaster> hm optimizing befunge is near impossible
16:20:01 <ais523> AnMaster: that was deliberate in the design of befunge
16:20:11 <ais523> which was designed to keep out compilers, and optimisers by extension
16:20:17 <AnMaster> in brainfuck an interpreter/compiler could just merge several + for example, in befunge that isn't possible
16:20:42 <AnMaster> the k instruction of funge98 *can* be optimized sometimes, but that is about all
16:20:48 -!- oerjan has joined.
16:21:41 <AnMaster> possibly you could do some JIT optimization, like say, pre-compile paths or something
16:22:13 <Sgeo> Fine Structure is basically a connected collection of fiction stories by Sam Hughes
16:23:07 <oerjan> damn, here i thought there were news about the variability of the fine structure constant
16:24:19 <oerjan> it's fascinating - a subatomic, dimensionless constant that apparently may have _changed_ over the lifetime of the universe
16:24:21 <AnMaster> ais523, actually, several things in funge98 can be optimized, but almost none in befunge93
16:24:39 <ais523> oerjan: also, which happens to be ridiculously close to an integer
16:24:50 <ais523> (in fact 1/an integer, but it's dimensionless so it could just as easily be the other way up)
16:25:41 <ais523> hm... it seems to have drifted away from the 137.00 value that was announced previously
16:25:48 <ais523> probably due to more accurate measurements
16:25:58 <AnMaster> 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 <AnMaster> 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:28:05 <AnMaster> <ehird> AnMaster: fix yur bzrweb <--- what is wrong with it?
16:28:10 <oerjan> http://en.wikipedia.org/wiki/Fine-structure_constant
16:29:07 <oerjan> Wikipedia Is Your Friend
16:29:38 <AnMaster> 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 <ais523> ehird: http://pastebin.ca/932238
16:30:19 * AnMaster sighs at the usual "stub" status of the Swedish pages
16:30:22 <ais523> (you asked me how Underlambda was getting on, that's the most recent draft spec)
16:30:26 <ais523> (but it isn't finished yet)
16:30:54 <AnMaster> ais523, hm? why not use latex for writing the draft?
16:31:06 <ais523> AnMaster: because those are just the notes I made
16:31:14 * AnMaster uses the gui "frontend" lyx for anything such
16:31:21 <ais523> the actual specification is likely to be in something more suitable
16:31:33 <ais523> but flat text files are good for jotting things down in
16:31:42 <AnMaster> I find lyx is very useful, and lets me avoid headache from pure latex
16:31:57 <ais523> (I'm developing a reference interp which pretty much just implements the rewrite rules literally)
16:32:14 <ais523> However, the language is designed so that it can be compiled, or implemented much more efficiently.
16:32:37 <ais523> 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 <ais523> the definition of C, for instance, is very complicated when written out in words referring to stacks
16:33:03 <AnMaster> 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 <AnMaster> <ais523> 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 <AnMaster> ais523, on your specs, "#! /usr/bin/underlambda" must it be that exact line?
16:34:21 <ais523> 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:24 <AnMaster> what if the binary is somewhere else?
16:34:43 <ais523> but the string is more for identification of the language
16:34:51 <AnMaster> ais523, I suggest it should be allowed to be: #!/usr/bin/env underlambda
16:35:03 <ais523> there are also various subtle things, such as # can be used as a quote symbol for an m4 interpreter
16:35:16 <ais523> hmm... maybe #!/dev/env/underlambda
16:35:30 <AnMaster> 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 <ais523> but I don't like forcing symbols into people's environments
16:36:00 <AnMaster> and really, underlambda, or any esoteric language interpreter/compiler, does hardly belong in a base system of any OS
16:36:06 <ais523> there should be a /dev/which, really
16:36:16 <AnMaster> ais523, heh? no system got that
16:36:25 <ais523> that does what the which command does
16:36:30 <AnMaster> /usr/bin/env is standard, I think POSIX
16:36:31 <ais523> so /dev/which/sh = /bin/sh
16:36:38 <AnMaster> so that means, /usr/bin/env bash
16:36:44 <AnMaster> will find bash if it is in the path
16:37:06 <ais523> looking at env's man page, that looks like a bit of a hack
16:37:10 <AnMaster> 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 <ais523> and it seems to work there too
16:38:07 <AnMaster> $ ls /usr/bin/python* /usr/local/bin/python
16:38:08 <AnMaster> ls: /usr/bin/python*: No such file or directory
16:38:13 <ais523> so maybe /usr/bin/env would work
16:38:23 <ais523> (I'm still open to suggestions)
16:38:33 <ais523> the important part is the #! / at the start, anywway
16:38:40 <AnMaster> $ ls /usr/bin/python /usr/local/bin/python*
16:38:40 <AnMaster> ls: cannot access /usr/local/bin/python*: No such file or directory
16:38:52 <AnMaster> ais523, you mean that space? hm ok
16:39:30 <ais523> (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 <ais523> (and it uses #! / as the magic word for executable text files)
16:40:01 <AnMaster> ais523, never heard of such a OS
16:40:08 <ais523> I suspect it's an old one
16:40:13 <AnMaster> tell me if you remember the name of it
16:41:11 <ais523> 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 <AnMaster> ehird, well what is wrong with my bzrweb? it works here
16:49:14 <AnMaster> ais523, for portability, using env is likely the best way :/
16:49:28 <ais523> on modern systems, it should be available
16:49:52 <AnMaster> ais523, not sure about that, but I think it may be
16:50:10 <AnMaster> The env utility conforms to IEEE Std 1003.1-2001 (``POSIX.1''). The -P,
16:50:10 <AnMaster> -S and -v options are non-standard FreeBSD extensions which may not be
16:50:10 <AnMaster> available on other operating systems.
16:50:22 * AnMaster checks on his gentoo system as well
16:50:46 <AnMaster> hm just the usual "see info page", sigh
16:51:00 <AnMaster> (*bsd got way better man pages than linux)
16:52:30 <ais523> what do you think of the rest of the spec?
16:52:41 <ais523> (it isn't nearly finished yet, there should be a lot more, containing more advanced commands)
16:53:24 <AnMaster> ais523, was away eating so haven't had time to look
16:54:24 <AnMaster> ais523, tell me a summary what is special with this language please
16:54:36 <ais523> it's designed as an update to Underload
16:54:46 <ais523> Tier 1 is sufficient to be TC
16:54:51 <AnMaster> underload was one you never finished? or?
16:54:52 <ais523> and tier 2 for Brainfuck-completeness
16:54:56 <ais523> Underload was finished
16:55:04 <ais523> but wasn't very usable for practical programming
16:55:10 <ais523> seeing as it was an output-only tarpit
16:55:34 <AnMaster> ok, what was special for underload then?
16:55:34 <ais523> Underlambda is 'purer' in some sense; it's a concatenative programming language where all data are functions
16:55:42 <ais523> Underload is basically a concatenative tarpit
16:55:50 <ais523> the same way that Brainfuck is an imperative tarpit
16:55:59 <ais523> and Unlambda is a functional tarpit
16:56:19 <AnMaster> 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 <oerjan> Unlambda isn't really a tarpit. it has bells and whistles. odd ones, but...
16:56:44 <AnMaster> I can't say, I'm familiar with the concatenative languages thing
16:57:01 <ais523> basically, all commands are functions which take a stack as an argument and output another stack
16:57:15 <ais523> and concatenating two commands leads to another command which is the composition of their functions
16:57:25 <ais523> manipulating code as data is normal, and the usual way to write loops
16:57:38 <ais523> (in fact the only flow control command in Underload is 'eval', written as ^)
16:57:56 <AnMaster> ah, multi-stack based language? and self modifying?
16:58:18 <ais523> one stack in Underload
16:58:23 <ais523> and not exactly self-modifying
16:58:30 <ais523> it's more like Muriel; you construct new program on the fly
16:58:33 <AnMaster> ah, you said functions take stacks and return stacks?
16:58:45 <ais523> you apply the entire program to an empty stack
16:58:50 <ais523> because the entire program is just a function
16:58:53 <AnMaster> sounds like unefunge98, with a single stack, stripped of most commands?
16:58:53 <ais523> and it returns a stack
16:59:04 <ais523> you can use it like that
16:59:11 <ais523> except the flow control is completely different
16:59:21 <ais523> and you can put all sorts of data on the stack
16:59:35 <AnMaster> ok, flow control is one of the major things that make funges to what they are
16:59:36 <ais523> (such as bits of your program)
17:00:37 <ais523> as an example, an infinite loop in Underload is (:^):^
17:00:49 <ais523> (:^) pushes the code :^ on the stack
17:00:59 <ais523> : copies that, so there are two copies of :^ on the stack
17:01:16 <ais523> and ^ executes the top stack element, leaving :^ as the program and :^ on the stack
17:01:22 <ais523> (and everything repeats from there)
17:01:33 <AnMaster> 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 <ais523> you would do it like that anyway
17:01:57 <ais523> hmm... maybe I should simply just insist on the #!
17:02:14 <ais523> you would normally run a program under an interpreter by writing the interpreter's filename
17:02:14 <AnMaster> ais523, actually "#! /" should be ok
17:02:30 <ais523> and you can write #! /bin/false if you don't want the program to be executable
17:02:48 <ais523> (one of my favourite Perl cheat quines: #!/bin/cat)
17:03:19 <AnMaster> 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:31 -!- slereah__ has changed nick to Slereah.
17:03:36 <ais523> yes, but I generally prefix gcc to C programs
17:03:43 <ais523> and likewise the name of a BF interp to BF programs
17:03:58 <ais523> Underlambda is expressly designed to be compilable
17:04:19 <AnMaster> ais523, for example, do you do bash /bin/gunzip? or just gunzip?
17:04:25 <ais523> (Underlambda tier 1 -> GolfScript is possible by simple text substitution, for instance)
17:04:32 <AnMaster> on my system it is a short shell script, calling gzip with some parameters
17:05:25 <ais523> 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 <ais523> especially on Windows...
17:05:47 <ais523> yes, but I want the language to be portable
17:06:09 <AnMaster> 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:18 <ais523> based on the file extension
17:06:23 <ais523> 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 <AnMaster> ais523, anyway, by forcing a specific #!* line, you restrict portability in fact
17:07:21 <ais523> to me a portable program is one that works without problems on multiple systems without changing the source code
17:07:35 <ais523> a specific #! line is more portable, because at least it can be picked up by commands like file(1)
17:07:37 <AnMaster> ais523, ah, I went from Mac OS 7 -> redhat linux 5.0 (or 6.0? not sure)
17:08:09 <AnMaster> then slackware due to rpm hell, then suse, debian and quite a few other distros
17:08:17 <Slereah> Idea : A negative reinforcment language.
17:08:22 <ais523> but say if I write #! /home/ais523/blah/blah/blah/underlambda at the top of my script
17:08:27 <AnMaster> and finally settled on gentoo and freebsd
17:08:30 <Slereah> If there's a syntax error, it deletes your hard drive :o
17:08:39 <AnMaster> <ais523> to me a portable program is one that works without problems on multiple systems without changing the source code
17:08:56 <ais523> then it might run on my system if I change the directory structure, but probably not yours
17:09:07 <AnMaster> <ais523> 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:46 <AnMaster> <Slereah> If there's a syntax error, it deletes your hard drive :o <-- you mean deathstation 9000?
17:10:05 <AnMaster> Slereah, (if you don't know it, a joke about all the "the result is undefined" in C standard)
17:10:35 <ais523> t.t: a underlambda script text executable
17:10:48 <ais523> (actual output of file(1) when run on #! /usr/bin/env underlambda)
17:11:22 <AnMaster> ais523, indeed, file is quite smart.
17:11:36 <AnMaster> btw, what is the correct file ending for a befunge93 program? and what about befunge98?
17:11:38 <ais523> except it sometimes identifies C files as Pascal
17:11:50 <ais523> AnMaster: .bf and .b93 according to the specs
17:12:08 <ais523> which is why I'm annoyed when people use .bf for Brainfuck
17:12:08 <AnMaster> ais523, hm, .bf sounds like brainfuck to me
17:12:33 <AnMaster> ais523, what about befunge98 then?
17:16:21 <Slereah> Ah, found the Gödel proof with modern notation.
17:16:31 <Slereah> The original has the horrible PM notation.
17:18:10 <Slereah> Fact : Bertrand Russel hated parenthesis
17:18:19 <Slereah> He didn't even like Polish notation!
17:18:32 <Slereah> He used some sort of horrible dot based notation.
17:20:59 <Slereah> Although the Godel paper spare me the dots.
17:21:15 <oklofok> i don't exactly like the standard math notation
17:21:25 <Slereah> oklofok: http://membres.lycos.fr/bewulf/Russell/2.56.jpg
17:21:33 <Slereah> (Yes, that's why that folder is named Russell)
17:21:52 <Slereah> Proof written in both Russell and modern notation.
17:22:07 <oklofok> i'd like something like polish notation, but so that you could optionally have function arguments on top of each other
17:22:16 <oklofok> kinda like you do with standard division notation
17:22:30 <oklofok> something wrong with my internets
17:23:31 <Slereah> Well, if you want an example;
17:23:35 <Slereah> ⊢ :: p ⊃ ~( ~q ) . ⊃ . p ⊃ q : ⊃ :. ~q ⊃ ~p . ⊃ . p ⊃ ~( ~q ) .: ⊃ : ~q ⊃ ~p . ⊃ . p ⊃ q
17:24:21 <Slereah> If you want to know the principle, it's in the PM. Maybe you'll understand it, unlike me!
17:24:38 <Slereah> I can sort of read it, but I don't think I can actually write big things in it.
17:25:44 <oklofok> i don't feel like guessing syntax without having no idea about semantics :P
17:25:55 <oklofok> i'm assuming the u's are what they are in math ?
17:26:20 <Slereah> It's the old notation for "imply"
17:26:39 <Slereah> Translation is ⊢ ( ( p → ~( ~q ) ) → ( p → q ) ) → ( ( ( ~q → ~p ) → ( p → ~( ~q ) ) ) → ( ( ~q → ~p ) → ( p → q ) ) )
17:26:47 <oklofok> actually guessed that after realizing there were no C's
17:27:11 <Slereah> The dots serve to separate statements.
17:27:24 <oklofok> could someone link me the funge-98 spec?
17:27:53 <oklofok> 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 <ais523> http://quadium.net/funge/spec98.html
17:28:25 <ais523> I actually think that's a mirror, but it seems to have the right data on
17:28:56 <oklofok> that's the massive spec even ehird was scared of?
17:30:53 <ais523> but ehird was for some reason
17:32:44 <oklofok> 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 <ehird> ais523: /usr/bin/env is highly common
17:33:45 <ehird> AnMaster: bzrweb -- yours wont;' show the file contentes
17:33:56 <ais523> I was more interested in forcing a particular magic string, than what that string actually was
17:34:08 <ais523> i.e. I want all progams to use the same string but don't care what it is
17:35:31 <ehird> [17:06] * ais523 used Windows for several years (and DOS before that), but uses Linux nowadays
17:35:34 <ehird> you used windows like yesterday
17:35:46 <ehird> i remember saying that GNU/Windows was the most awful idea i've heard
17:36:04 <ais523> I still use Windows for some things, such as checking emails with my real work on my laptop
17:36:30 <ais523> generally use SunOS when I don't have my laptop (accessed via Exceed on Windows)
17:36:41 <ais523> GNU/Windows was what I used at home before I got this laptop
17:37:16 <ais523> CDE/SunOS, to be precise
17:37:23 <ehird> i'm a mac luser but i suck because my first mac was intel
17:37:27 <ais523> but at least it gives me a POSIX shell I can type commands into...
17:37:32 <ehird> and stupidly I didn't upgrade the ram from the base 1gig
17:37:42 <ehird> i can upgrade that on the cheap anyway, at least
17:38:05 <ehird> works much better than my old, crusty computer though ... that thing was ready to die like 5 years ago
17:38:51 <ais523> 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 <ehird> ais523: the hardware is mostly mutually compatible
17:39:19 <ais523> Busybox/Linux, not GNU/Linux
17:39:33 <ehird> the base system came from when i was a young'un..
17:39:41 <ehird> i didn't really know how to not break a computer then
17:41:10 <ehird> ais523: anyway, the eso-std.org pastebin coding is underway
17:41:14 <ais523> hmm... it seems that consistent-speed multithreading was implemented in both Funge-98 and FukYorBrane before it was added to INTERCAL
17:41:23 <ais523> ehird: are you using an Emacs-based syntax highlighter?
17:41:30 <ehird> ais523: nope, something better ...
17:41:37 <ehird> it's written in python for about two reasons - the first, and most important, is the syntax highlighter -- Pygments
17:41:43 <ehird> it supports, like, 200 languages out of the box
17:41:46 <ehird> even Brainfuck, by default
17:41:55 <ehird> and its lexer-thingy framework is very flexible
17:41:59 <ehird> http://pygments.org
17:42:12 <ais523> how does it handle Perl?
17:42:21 <ais523> that's really hard to syntax-highlight
17:42:30 <ehird> ais523: what's that 'unparsable perl' snippet again?
17:42:32 <ehird> the regexp + # thing
17:42:36 <ehird> i'll try it on pygments
17:42:51 <ehird> probably it fails somehow, but generally you shouldn't complain ;)
17:43:14 <ehird> ais523: look at the language dropdown
17:43:17 <ais523> from memory, maybeunarymaybebinary /1*0; #/;
17:43:37 <ais523> actually, that should be 'maybenullarymaybeunary'
17:43:52 <ehird> whatever / 25 ; # / ; die "this dies!";
17:44:23 <ehird> ais523: http://pygments.org/demo/636/
17:44:36 <ehird> so, it fails, but fails in the same way that the eye would scan it
17:44:55 <ehird> which.. isn't too bad, I'd say
17:46:32 <ais523> http://pygments.org/demo/637/
17:46:34 <AnMaster> <ehird> AnMaster: bzrweb -- yours wont;' show the file contentes *looks*
17:47:35 <AnMaster> 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:48:02 <ehird> I think thats undefined
17:48:22 <AnMaster> ehird, ok, (at least C standard says things are undefined, sigh)
17:48:32 <ehird> The behaviour of 1k # is now considered UNDEF.
17:48:37 <ehird> AnMaster: from mycology web page
17:48:42 <ehird> I think that's isomorphic??
17:48:52 <ehird> then contact Deewiant
17:48:57 <AnMaster> my question is for negative iterations
17:48:59 <ehird> memoserv might help.
17:49:30 <AnMaster> ehird, what should happen when the iteration count is negative for k, in general, for #, jump backwards may be a good idea
17:49:43 <ehird> AnMaster: I am sorry, I have no idea.
17:50:02 <AnMaster> when is he/she on irc normally? and in this channel?
17:50:18 <ehird> Used to be quite often.
17:50:25 <ehird> [17:50] -NickServ- Nickname: Deewiant << ONLINE >>
17:50:25 <ehird> [17:50] -NickServ- Registered: 1 year 9 weeks 4 days (5h 30m 22s) ago
17:50:31 <ehird> Well whaddya know -- he's online now.
17:50:42 <ehird> In #haskell, no less.
17:50:45 <ehird> I am tempted to /invite him :-)
17:50:50 <ehird> To put the real answer on the record.
17:50:57 <Sgeo> Who's Deewiant?
17:50:58 <ehird> You can only invite if you're an op?!
17:51:03 <ehird> Sgeo: Mycology & CCBI author.
17:51:14 <ehird> And, therefore, Befunge-98 guru.
17:51:33 <Sgeo> Am I a PSOX guru? </self-centeredness>
17:51:56 <ehird> I'll /msg him for when he gets back, I guess.
18:02:13 <oklofok> (i actually mean POWER, but no one knows the reference anyway)
18:02:56 <oerjan> POWER WITH FIRE? interesting.
18:04:02 <ais523> hmm... that makes even less sense than the average HOMESPRING program
18:04:09 <ais523> but apart from the caps is visually similar
18:07:08 <oklofok> this channel must be the second weirdest i ever encountered
18:07:43 <oklofok> Slereah: well, unless you count temporary chanels
18:08:29 <ais523> oklofok: which one was weirder?
18:08:45 <ais523> (just out of interest, #esoteric seems relatively sane about half the time it's active)
18:09:24 <oklofok> sure, that's why it was #2
18:09:34 <Slereah> Esoteric is pretty sane if I compare it to some other chans.
18:09:44 <Slereah> Plus, it is even serious most of the time!
18:09:54 <oklofok> in the other channel, you often see hours of okoing without no one talking anything else.
18:10:23 <oklofok> assssssdf, cise is hell to implement
18:10:30 <oerjan> oh noes, we are not the mad enough
18:10:34 <oklofok> ais523: okokokokokokokokoko
18:10:43 <ais523> why would anyone do that?
18:10:53 <oerjan> oklofok: er, are you the only person in it? :D
18:11:17 <oklofok> oerjan: no, we're actually a registered association :)
18:11:41 <Slereah> What, the ESO association?
18:11:43 <oerjan> association internacional de okoficacion
18:12:06 <Slereah> I wonder, are there any girls on esolang?
18:12:12 <Slereah> I don't think I ever saw one.
18:12:18 <oklofok> there was this sukoshi chick
18:12:34 <oerjan> *CACK* *COUGH* *ACKFOO* *GWAPF*
18:12:35 <lament> they were about as fucked up as you would expect esolang girls to be
18:13:03 <oklofok> actually, i think i remember another one
18:14:16 <oklofok> something about being a sexbot
18:14:57 <oklofok> her nick was something like gamegirl, unless she turned out to be a guy in the end, don't remember
18:15:22 <oklofok> 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 <oerjan> anyone with "girl" in the nick is a guy, isn't that well-known?
18:15:30 <oklofok> probably, all of this was just a dream.
18:15:32 <ehird> oerjan: vise-versa?
18:16:05 <oerjan> 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:28 <lament> now change it to oklogirl
18:16:47 -!- okloMAN has changed nick to okloHOTGIRL.
18:16:54 <lament> see? not believable at all :)
18:16:55 <okloHOTGIRL> i'm so gonna get banned from all the chans i'm on.
18:17:03 -!- Deewiant has joined.
18:17:09 <AnMaster> 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 <lament> oklopol: starting with this one :P
18:17:23 <AnMaster> Deewiant, hi, did you see the questions I asked in /msg
18:17:25 <lament> AnMaster: that's true of men too
18:17:31 <Deewiant> AnMaster: negative k is undefined by the spec
18:18:00 <Deewiant> AnMaster: in my interpreter it reflects, in some it crashes or causes infinite loops :-)
18:18:00 <oerjan> never let your k become negative
18:18:18 <oklopol> talking about the k-means algo?
18:18:20 <AnMaster> Deewiant, also in general, the instruction k execute, executes on the k, right?
18:18:21 <Deewiant> 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 <ehird> 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 <ehird> Though, admittedly, he DID have Mycology &co. to test it on :p
18:18:46 <Deewiant> ehird: most of the time was spent in writing Mycology, not the interpreter :-)
18:18:53 <oklopol> everything gets finished in a day, or in about a year
18:19:11 <AnMaster> Deewiant, I have used mycology on my befunge interpreter (not complete yet, but the 93 part is complete)
18:19:19 <ehird> Deewiant: Hehe. Still, in *Bash*..
18:19:29 <ehird> ... Next up: Besed-98? :-)
18:19:39 <Deewiant> 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 <Deewiant> AnMaster: 2k'c is something that could do pretty much anything depending on how you want to think about it
18:20:17 <Deewiant> it's similar to the issue with nested k
18:20:32 <AnMaster> Deewiant, what would you recommend a interpreter to do in those cases?
18:20:44 <ehird> AnMaster: Print out messages implying that it is a toaster.
18:20:52 <Deewiant> 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:21:01 <ais523> sort of like the ask-the-user on division by 0?
18:21:07 <Slereah> It should output to the bell.
18:21:13 <Slereah> Your computer has a bell output, no?
18:21:26 <AnMaster> Deewiant, I find the 98 specs are quite unclear over k really hm
18:21:36 <ehird> Slereah: for(;;){printf("\7");fflush(stdout);}
18:21:40 <Deewiant> 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 <ais523> (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 <ehird> Slereah: for(;;){printf("\7***TOASTING***\n");fflush(stdout);}
18:21:59 <Deewiant> AnMaster: and yes, they are. as they are on many other things.
18:22:33 <ehird> Deewiant: You should write a Trefunge test-suite.
18:22:35 <Deewiant> wait, did I say Mark Glines? err. I meant Lee Houghton.
18:22:43 <ehird> Or -- a program that algorithmically generates an N-dimensional test suite!
18:22:45 <AnMaster> Deewiant, hm maybe someone should make those issues clearer? (at least C standard says things are undefined ;)
18:23:09 <Deewiant> AnMaster: I suppose you could ask Chris Pressey about that if you're interested
18:23:11 <ehird> Deewiant: even an autotester
18:23:16 <Deewiant> AnMaster: I'm not sure if he is, though ;-)
18:23:35 <ehird> % ./Ncology -s 1 -e 100 -p Nfunge
18:23:49 <Deewiant> AnMaster: guy who invented Befunge
18:23:57 <ehird> ..........................FAILS on 64d: Quaridor fails to jeuros through-outen the vinn.
18:24:29 <oerjan> AnMaster: he comes by here every few months
18:25:03 <Deewiant> 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 <oerjan> probably along the same time as he last edited the wiki... lessee
18:25:19 <AnMaster> 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 <Deewiant> can I paste five lines on Befunge here?
18:25:58 <Deewiant> and if not, is there a pastebin you guys use or something
18:26:03 <AnMaster> Deewiant, and also what does it do on for 2k'c
18:26:17 <Deewiant> AnMaster: I'm not sure, but I think it'd first push ' and then c
18:26:18 <ehird> Deewiant: Yes! pb.eso-std.org
18:26:21 <ehird> (Note: May not be up yet)
18:26:25 <ehird> For now, pastebin.ca :-)
18:26:30 <AnMaster> Deewiant, interesting, and what about 3k'c then? heh
18:26:48 <AnMaster> ehird, Firefox can't find the server at pb.eso-std.org.
18:26:49 <Deewiant> AnMaster: 3k'ca would push ', c, and then a. (I think.)
18:26:53 <ehird> AnMaster: GOSH REALLY
18:27:10 <AnMaster> ehird, ah right, didn't read the "may not be up" line
18:27:23 <Deewiant> 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 <AnMaster> Deewiant, and if the line ends after the c?
18:29:04 <ehird> Deewiant: Hey, you should write the Befunge-98 lexer for eso-std's pastebin. Pygments' is horribly b0rken. :P
18:29:21 <AnMaster> 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 <ehird> I think Befunge-98 would be extremely hard to parse properly within pygments though
18:29:36 <Deewiant> AnMaster: it'd push a space as is standard for acccessing outside bounds
18:30:13 <Deewiant> 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 <Deewiant> AnMaster: http://pastebin.ca/932396
18:31:17 <Deewiant> hmh, that code is misaligned for some reason
18:35:27 <AnMaster> 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:36:06 <Deewiant> does it make sense to you that it jumps only once?
18:36:07 <AnMaster> Deewiant, for that mycology got a test, I would follow that test
18:36:14 <Deewiant> AnMaster: I wrote that test. :-P
18:37:00 <Deewiant> 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 <AnMaster> negative iterations on k, on *nix: reflect on windows: format c:
18:37:37 <Deewiant> 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 <AnMaster> Deewiant, I already special case k, as I do the "ip forward" bit at the end of the main loop.
18:38:05 <ais523> AnMaster: Windows will prompt the user for the volume label of the hard drive if you do that
18:38:07 <Deewiant> I mean that you're going to need separate cases depending on what instruction k is executing
18:38:12 <ais523> as a check against accidentally formatting it
18:38:32 <Deewiant> 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 <Deewiant> 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 <AnMaster> <Deewiant> I mean that you're going to need separate cases depending on what instruction k is executing <-- yep
18:39:41 <AnMaster> 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 <Deewiant> AnMaster: the way it's specified, I don't think there should be any special cases
18:40:09 <ais523> because there is no way to run a command a negative number of times
18:40:09 <Deewiant> AnMaster: apart from the invalid instructions like ";
18:40:23 <ais523> which is why Underlambda only supports nonnegative integers in its stdlib
18:40:47 <AnMaster> ais523, hm, I'm sure it would be possible in TURKY BOMB ;)
18:41:00 <AnMaster> (what with all their "half a bit wide" and such)
18:41:03 <ais523> (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 <ais523> AnMaster: there's no syntax to express it in TURKEY BOMB but it fits well into the spirit of the language ;)
18:41:36 <Deewiant> AnMaster: implement the TRDS fingerprint, it's a nice one
18:42:18 <AnMaster> 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 <Deewiant> TRDS is the time travel fingerprint
18:42:56 <Deewiant> really annoyed me, probably spent a month on that one alone
18:43:02 <AnMaster> Deewiant, that reminds me, the funge registry thing link at http://catseye.tc/projects/funge98/doc/funge98.html is broken
18:43:19 <Deewiant> and then the first test I run against RC/Funge leads to it crashing
18:43:19 <AnMaster> so where do I find out about such things
18:43:19 <Deewiant> AnMaster: yeah, it doesn't exist
18:43:20 <AnMaster> like what handprint I should use and such
18:43:33 <Deewiant> although I think there's an archive of it somewhere, sec
18:43:44 <AnMaster> currently I use the sum of the values of the ASCII chars in Bashfunge
18:43:47 <Deewiant> http://catseye.tc/projects/funge98/doc/old_index.html
18:44:24 <Deewiant> 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 <AnMaster> Deewiant, and what about the finger print registry?
18:44:52 <Deewiant> and Mycology tests almost every fingerprint that has been implemented on any of said interpreters :-)
18:45:06 <Deewiant> and the Mycology readme refers to the two or three that it doesn't test
18:45:07 <ais523> the registry doesn't appear to be on catseye.tc, at the moment
18:45:17 <AnMaster> Deewiant, hm, and where do I find docs on the different fingerprints?
18:45:37 <Deewiant> AnMaster: in the readmes of the interpreters that first implemented them, mostly
18:46:15 <Deewiant> AnMaster: RC/Funge-98, the jvh version of same, and then http://catseye.tc/projects/funge98/
18:47:04 <AnMaster> 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:52 <Deewiant> maybe the amount of memory installed? :-)
18:48:11 <Deewiant> hmh, the specs are clear as usual
18:48:12 <Deewiant> " Typically 4, could also be 2, 8, really really large, infinity, etc."
18:48:19 <Deewiant> I wonder how one would push infinity as an integer
18:48:50 <Deewiant> AnMaster: I'd just push a really big number.
18:48:56 <AnMaster> 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 <Deewiant> -3? of course it's implementation defined, you're asking the implementation what it defines it as :-)
18:49:31 <Deewiant> something like that would be nice but it's not in the spec.
18:49:35 <AnMaster> Deewiant, ok "-3 = none of these"
18:49:54 <ais523> Deewiant: certain floating-point bitpatterns are defined to mean infinity
18:49:58 <Deewiant> I thought about writing an "unofficial spec" which would clarify everything but decided against it, there are already two standards
18:50:05 <ais523> but that's not very helpful for an interp which only uses integers
18:50:11 <Deewiant> ais523: yes, but this is an integer we're talking about.
18:50:20 <Deewiant> "In Funge-98, stack and Funge-Space cells alike should be treated as signed integers of the same size. "
18:50:42 <ais523> maybe we need a Funge-08
18:50:56 <Deewiant> 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 <AnMaster> 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 <Deewiant> 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:46 <AnMaster> Deewiant, well, 98 is so unclear
18:51:58 <ais523> only in corner cases, though
18:51:59 -!- Judofyr has joined.
18:52:17 <ais523> I'm speccing up Underlambda as a set of rewrite rules, with side effects specified in English
18:52:23 <ais523> I doubt that that would help for Befunge, though
18:52:32 -!- timotiis has joined.
18:52:38 <AnMaster> ais523, I think it should at least say "on blah the result is undefined" like the C standards do
18:52:49 <Deewiant> AnMaster: the trouble is that there are so many cases to consider
18:52:56 <Deewiant> especially with the fingerprint mechanism
18:52:57 <ais523> AnMaster: are you referring to Befunge or Underlambda?
18:52:59 <AnMaster> not knowing if it is undefined, or somewhere else in the standard is a problem
18:53:07 <Deewiant> I decided early on not to test separate fingerprints together
18:53:15 <AnMaster> Deewiant, well yes, I'd implement 0 fingerprints
18:53:20 <Deewiant> the universe would end trying to put them together
18:53:38 <AnMaster> Deewiant, also a working registry is needed IMO
18:53:50 <Deewiant> 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 <Deewiant> AnMaster: the days of standardizing funge-98 are over, in the meanwhile we make do with what we have :-)
18:54:33 <AnMaster> Deewiant, what is the license of the 98 standard document itself?
18:54:44 -!- RedDak has joined.
18:54:58 <Deewiant> AnMaster: has a copyright at the bottom apparently
18:55:25 <AnMaster> Deewiant, doesn't say if you are allowed to make changes to it or not
18:55:42 <Deewiant> AnMaster: I doubt mr. pressey is that much of a jerk :-P
18:55:47 <ais523> 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 <Deewiant> AnMaster: at the time, such things weren't as much an issue as today
18:56:08 <ais523> 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:54 <AnMaster> 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 <AnMaster> Deewiant, can't find the email?
18:58:34 <Deewiant> AnMaster: http://catseye.tc/about/catseye.html
18:59:53 <ehird> ais523: hurray for the {{catseye}} template!
18:59:57 <ehird> the snarkiest template on all wiki.
19:01:19 -!- ais523 has quit ("bye!").
19:08:42 <oerjan> oh no, he went. we are not observed any more. does that mean we cease to exist?
19:08:43 <AnMaster> Deewiant, I sent a mail about it
19:09:22 <Deewiant> AnMaster: I hope he's not interested, I'd hate to have to rewrite more bits of Mycology ;-)
19:09:42 <AnMaster> Deewiant, then I'd write a Funge08 standard from scratch
19:09:56 <Deewiant> AnMaster: and I'd be happy to not implement it ;-)
19:11:00 <AnMaster> 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 <AnMaster> in bash at least, the latter is quite easy
19:11:44 <AnMaster> I would just redefine the function that handles the " instructions on the fly
19:12:05 <Deewiant> or just add a check in the handler
19:12:23 <AnMaster> Deewiant, yeah, but that is slower to execute ;)
19:12:52 <AnMaster> Deewiant, also I can't get your interpreter to compile, because I can't get gcc d compiler to compile
19:13:43 -!- RedDak has quit (Read error: 113 (No route to host)).
19:14:29 <Deewiant> I've been thinking of making a linux binary but never got around to it
19:15:18 <AnMaster> but I could run it in 32-bit mode then
19:17:03 -!- RedDak has joined.
19:17:16 <AnMaster> Deewiant, btw does j wrap? also what about say a program consisting of this only: ff*j
19:17:39 <AnMaster> would that wrap a lot of times?
19:17:46 <AnMaster> Deewiant, so when mycology tests s at -1,-1, where should result end up?
19:18:31 <Deewiant> hmm? it does 501-01-p or something, right, and expects to get 5 back when it does 01-01-g
19:19:23 <AnMaster> Deewiant, ok, so it shouldn't put a value in negative fungespace?
19:19:35 <Deewiant> of course it should, that's what p is defined as doing :-)
19:19:50 <Deewiant> but it doesn't actually test that by jumping to -1,-1 though
19:21:13 <AnMaster> 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 <Deewiant> no no, the spec is quite unambiguous on this one ;-)
19:21:51 <Deewiant> and trust me, writing the test suite was much harder than writing CCBI :-D
19:22:00 <AnMaster> but adding stuff to y would break things "abusing" y to get a value from the existing stack
19:22:19 <Deewiant> ah, that doesn't work on most impls anyway
19:22:54 <AnMaster> Deewiant, it doesn't on mine either, I push -27315 and print out "the coder is a jerk"
19:22:58 <Deewiant> AnMaster: hint: easy way of implementing Funge-Space is to use a hash table or equivalent, if your lang provides such
19:23:26 <AnMaster> Deewiant, bash doesn't, I use an array that wraps every nth entry, so [n * y +x]
19:23:37 <AnMaster> and when it needs to grow, it reallocates the entire thing
19:23:50 <AnMaster> (at least it is a sparse array)
19:24:04 <AnMaster> bash only provides single dimension arrays
19:25:47 <AnMaster> 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:26:12 <Deewiant> the problem is that you can't assume instructions work
19:26:16 <Deewiant> or that's how I tried to do it
19:26:28 <Deewiant> so that you get maximal info even if some instruction prior doesn't work at all
19:27:17 <AnMaster> Deewiant, oh and mycouser.b98 doesn't check y if unbuffered input is used
19:27:29 <AnMaster> so it wants an extra enter after asking for a char
19:27:43 <Deewiant> just hold down the button then :-)
19:27:44 <AnMaster> my interpreter uses unbuffered input
19:28:06 <Deewiant> mycouser can't really assume y works either, since it's befunge-93 as well
19:28:07 <AnMaster> Deewiant, well, shouldn't it check 1y for that flag ?
19:28:35 <AnMaster> you could check if it is 93 or 98, like you do in the main test suite
19:28:55 <Deewiant> I do do something though since it checks a few fingerprints
19:29:45 <AnMaster> also "cell size in bytes", what about a trinary funge?
19:29:57 <AnMaster> or in future, one using qbytes?
19:30:09 <Deewiant> doesn't matter, it still stores a set amount of data in each cell?
19:30:37 <AnMaster> Deewiant, yep but funge98 says: "1 cell containing the number of bytes per cell (global env)."
19:30:54 <AnMaster> but it may not be bytes, or not whole bytes, and so on
19:30:56 <Deewiant> hey, even bytes is poorly defined
19:31:07 <AnMaster> Deewiant, aren't they always 8 bits?
19:31:08 <ehird> Deewiant: byte = 8-bit
19:31:12 <ehird> that's the definition of 'byte'
19:31:16 <Deewiant> http://en.wikipedia.org/wiki/Byte
19:31:21 <ehird> (It is not the definition of 'char' in C, however.)
19:31:31 <ehird> (But mostly 'char' is 8-bits in C.)
19:31:35 <ehird> (sizeof(char) == 1 in C, always, though.)
19:31:40 <Deewiant> "historically, bytes have ranged from five to twelve bits."
19:31:51 <Deewiant> "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 <Deewiant> "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:12 <AnMaster> ehird, so if char is 16 bits, then what would sizeof a type of less bits be?
19:32:57 <AnMaster> right, then that part of the standard needs to be cleaned up
19:34:33 -!- otesanek has left (?).
19:34:45 <AnMaster> 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:35:07 <Deewiant> the thing is they have to be of use to the program
19:35:08 <AnMaster> 22 would then define the size of the cells in the unit of 21
19:35:34 <AnMaster> point is, it doesn't work for a trinary funge or such
19:36:04 <Deewiant> if it uses qubits it still has to return some kind of meaningful value instead of just "some qubits"
19:36:13 <AnMaster> or where there is no byte size, say, language interpreter is coded in is treating everything as strings
19:36:19 <oklopol> AnMaster: i read it, i meant
19:36:37 <oklopol> so... funge-98 doesn't have n-funge?
19:36:54 <oklopol> hmm, i missed that then :)
19:37:49 <oklopol> anyway, where's n-dimensionality defined?
19:37:57 <Deewiant> probably in a footnote at the bottom or something
19:38:23 <oklopol> 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 <oklopol> this was said in the beginning
19:38:40 <AnMaster> oklopol, yes, "any number" indeed
19:38:43 <oklopol> but i didn't actually see any standardization on that
19:38:50 <Deewiant> there's not much to standardize
19:39:03 <AnMaster> Deewiant, however, what about 2+3i-funge (no idea how to implement)
19:39:24 <Deewiant> AnMaster: how would you define a nonintegral space :-)
19:39:42 <oklopol> hmm, i guess x can, in theory, set any vector to be delta.
19:39:46 <Deewiant> like it says under "Other Topologies"
19:39:57 <oklopol> where does it get the length of the vector?
19:40:01 <Deewiant> oklopol: "vector" is defined as "n numbers where n is the number of dimensions"
19:40:08 <AnMaster> Deewiant, however, please see http://catseye.tc/projects/turkeyb/doc/turkeyb.html
19:40:11 <Deewiant> oklopol: so in befunge, it's always 2 numbers, in trefunge it's 3, etc.
19:40:23 <AnMaster> Deewiant, "Two thirds of a bit plus half a trit."
19:40:23 <oerjan> fractional spaces are fractals. may be hard to do with a minimum cell distance though
19:40:37 <ehird> 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 <oklopol> The x "Absolute Vector" instruction pops a vector off the stack, and sets the IP delta to that vector.
19:41:00 <oklopol> 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 <AnMaster> oerjan, I never understood how "fractional spaces are fractals" work
19:41:07 <oklopol> this is all that's said about x.
19:41:24 <oklopol> oh, so it's just a preset amount of dimensions?
19:41:27 <Deewiant> oklopol: "http://catseye.tc/projects/turkeyb/doc/turkeyb.html
19:41:32 <Deewiant> oklopol: "a vector (set of co-ordinates)"
19:41:40 <ehird> Deewiant: TURKEY BOMB is odd yet.
19:41:41 <Deewiant> oklopol: " The origin is (0, 0) in Befunge, (0) in Unefunge, and (0, 0, 0) in Trefunge. "
19:41:49 <AnMaster> Deewiant, ehird is trying to make a turkey bomb interpreter btw
19:42:04 <oklopol> i've always assumed funge-98 supported infinite dimensions
19:42:34 <AnMaster> oklopol, the size of a vector grows with one cell for each dimension
19:42:54 <oklopol> AnMaster: and that has what to do with what?
19:43:06 <AnMaster> oklopol, that the standard does define it
19:43:27 <oklopol> the standard doesn't say anything about infinite dimensions
19:43:28 <AnMaster> vector on stack (top -> bottom) zxy in 3-funge
19:43:35 <oklopol> there's a preset amount of dimensions
19:43:52 <AnMaster> you can add 3 more dimensions using Swedish
19:44:04 <Deewiant> oklopol: no, it has to be finite if it's to be Cartesian
19:44:35 <AnMaster> Deewiant, yes but you could always add one :P
19:44:39 <oklopol> in a lazy funge, it could actually be done with the current x instruction
19:44:47 <oklopol> but laziness isn't defined either
19:44:49 <AnMaster> oklopol, just store all as bignums
19:45:00 <oklopol> AnMaster: that doesn't help.
19:45:02 <AnMaster> oklopol, tell me more what you mean with that?
19:45:32 <oklopol> just that i could start moving into any dimension
19:45:53 <AnMaster> oklopol, indeed, but how would x know how big the vector should be?
19:46:04 <oklopol> so that you' use 0"gnirts", for instance
19:46:28 <oklopol> that's how i've done it, made a befunge extension a few years ago
19:46:35 <AnMaster> 0 is a valid delta in a dimension
19:46:37 <oklopol> before i knew much about befunge
19:46:48 <oklopol> mind you, it's a lot more complicated and extensive than funge-98.
19:46:50 <AnMaster> say, you mode 0 in the first dimension and 1 in the second
19:47:04 <oklopol> because even rail is more complicated than that :)
19:47:22 <oklopol> i have exactly one language online.
19:47:26 <AnMaster> oklopol, what is rail? ruby on rails?
19:47:35 <oklopol> and one graphica example on my page
19:48:08 <oklopol> rail has function entry points at a semantical level, funge doesn't seem to
19:50:03 <AnMaster> anyway clearly funge98 needs to be extended
19:50:08 * oerjan suddenly wonders if you could combine gosub and COME FROM
19:50:23 <oklopol> indeed. the turtles need to be cleverer
19:50:28 <AnMaster> oerjan, hm what about come to?
19:51:03 <AnMaster> no, I got no idea what come to would do?
19:51:08 <oklopol> oerjan: rewrite the come from line to have the line of the return line?
19:51:24 <oklopol> come from is one hot concept
19:51:58 -!- Judofyr has changed nick to JudoBot.
19:52:24 <oklopol> oh, right, and rail isn't mine, in case i wasn't clear about that and the page is neither
19:52:26 <oerjan> ah, the truth is revealed
19:52:30 <AnMaster> 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:33 <oklopol> once again, i cannot open pages
19:52:34 <oerjan> he was not human at all
19:53:03 -!- JudoBot has changed nick to Judofyr.
19:53:43 <oklopol> what's that one language on esolang where every operation only *probably* works?
19:53:52 <Judofyr> I'm using wi-wi-wi-windows 386!
19:54:01 <Judofyr> All my applications are running at once!
19:54:05 <oklopol> i'd like to see that, but once again, i need a straight link so i can dl via a friend
19:55:01 <oklopol> my downloader has disconnected :P
19:55:07 <oklopol> anyone wanna send me the spec on dcc?
19:55:09 <AnMaster> oklopol, why not just browse the web?
19:55:23 <oklopol> well, i cannot open webpages right now
19:55:30 <AnMaster> oklopol, dcc? should I dcc them to you?
19:55:31 <oklopol> don't ask me why, i don't know and i don't care :)
19:55:40 <oklopol> AnMaster: if it's not too much trouble.
19:56:03 <AnMaster> oklopol, well how can you recieve it then?
19:56:27 <AnMaster> just sounds like chicken or egg first problem to me
19:56:41 <oklopol> irc and messenger work fine
19:56:56 <AnMaster> oklopol, so you want me to send over DCC, the specs for DCC?
19:57:16 <ehird> Judofyr: I have data here, I have data there
19:57:19 <ehird> I have data that has never been together
19:57:24 <ehird> Wi-wi-wi-windows 386!
19:57:29 <AnMaster> oklopol, is it so you know how to implement DCC so you can receive the specs on DCC so you can...
19:57:50 <AnMaster> oklopol, what about gopher? would be easier for me
19:58:00 <oklopol> AnMaster: umm... java2k specs that is
19:58:14 <AnMaster> <oklopol> anyone wanna send me the spec on dcc?
19:58:26 * oklopol is even stupider than usual without google
19:58:27 <AnMaster> oklopol, that sounded like you wanted the specs on dcc
19:58:33 <ehird> 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 <oklopol> yeah, i didn't realize that, sorry
19:58:57 <Deewiant> AnMaster: do you actually /use/ gopher?
19:59:20 <ehird> Deewiant: He runs a server so he can tell everyone he runs a gopher server.
19:59:25 <ehird> Same reason he uses Bash..
19:59:38 <AnMaster> Deewiant, yes to make ppl on irc ask about it
19:59:58 <AnMaster> Deewiant, http://envbot.org <-- modular irc bot in bash, and project is serious
20:00:31 <Deewiant> sure, "serious" in the sense that it's not a joke, but /why/? :-P
20:00:33 <AnMaster> Deewiant, anyway gopher://inspircd.dyndns.org (yes it is a bit empty)
20:00:36 <ehird> it's serious so far as AnMaster runs it to make people ask why.
20:00:40 <ehird> (Do you see a pattern here?)
20:00:53 * oklopol is starting to think no one will send the spec to him
20:00:54 <ehird> AnMaster: inspircd is a real program you know
20:01:19 <AnMaster> I used to be on the QA team of inspircd, quit though, had too little time for it last yea
20:01:24 <Deewiant> I've never found shell scripts fun, but to each his own I guess :-)
20:01:28 <AnMaster> got more time now, so I may rejoin
20:01:39 <AnMaster> ehird, so yes I know about inspircd :)
20:01:39 * oerjan is reminded of once dilbert lost his net access
20:01:58 <AnMaster> oklopol, I'll do when I find out how to do dcc from erc
20:02:09 <AnMaster> please don't flame about that I use ERC
20:02:22 <ehird> AnMaster: inspircd is far too unmodern..
20:02:36 <AnMaster> ehird, it is? nah, I would say it is cutting edge
20:02:40 <ehird> I oughta code IRCd That's Actually Modern, You Know, Like, No Code From 1992, I Mean Sheesh
20:02:47 <AnMaster> ehird, what one would you call modern then?
20:03:15 <AnMaster> maybe I could write a module to do it
20:03:22 <ehird> AnMaster: already done
20:03:26 <ehird> but erc is just a toy.
20:03:33 <oklopol> ehird: btw. cise has turned out to be quite a task
20:03:53 <ehird> oklopol: I want the spec!
20:04:01 <oklopol> didn't finish the spec, because i had a sudden inspiration to just implement it :D
20:04:03 <AnMaster> Deewiant, btw when I do funge08, it will be in LaTeX
20:04:08 <ehird> oklopol: let me tryyy
20:04:11 <AnMaster> Deewiant, using the GUI frontend lyx :)
20:04:12 <Deewiant> AnMaster: good luck with that :-)
20:04:26 <AnMaster> Deewiant, well lyx is easy, and I love lyx
20:04:29 <oklopol> ehird: nooooo, you'll just ruin my fun :)
20:05:01 <ehird> But I think TeX is the nicest.
20:05:04 <ehird> Pure, unadulterated TeX.
20:05:18 <AnMaster> ehird, ok right, don't say my interest for bash is insane then :P
20:05:38 <ehird> let me try horribly
20:05:59 <AnMaster> ehird, so do I, so I prefer languages where each char is an instruction
20:06:07 <oklopol> ehird: this is no ordinary parsing ;)
20:06:30 <ehird> oklopol: lemme try :D
20:06:36 <ehird> AnMaster: I certainly don't prefer those.
20:06:38 <oklopol> you have to constantly type check as you parse, and choose the first parse tree without type mismatches
20:06:42 <ehird> They're unimaginative, for the most part.
20:06:46 <ehird> oklopol: wow, that sounds awesome
20:06:48 <AnMaster> ehird, for parsing them that is
20:06:51 <ehird> let me try, i'll make it terrible
20:07:06 <oklopol> ehird: it is very awesome, indeed :)
20:08:02 <oklopol> it's basically prefix, but type checked and with currying
20:08:03 <AnMaster> can you in java2k actually write a program that does the same thing every time it is run?
20:08:26 <ehird> AnMaster: yes, iirc
20:08:32 <oklopol> AnMaster: i think you can make a metaprogram that gets you any desired *probability* of it working.
20:08:43 <oklopol> the exact answer would be no, though, iirc.
20:09:06 <AnMaster> oklopol, is it turing complete then?
20:09:21 <ehird> http://www.p-nand-q.com/humor/programming_languages/java2k/13.txt
20:09:25 <oklopol> i guess technically no, but do realize ehird recalled differently.
20:09:31 <ehird> http://www.p-nand-q.com/humor/programming_languages/java2k/26.txt
20:09:45 <oklopol> is it long? paste it to me if not :<
20:10:14 <ehird> '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 <AnMaster> oklopol, tried restarting your router?
20:10:41 <oklopol> AnMaster: no. i don't want to disconnect irc...
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:55 <Sgeo> ehird, I'm thinking of not doing safety in PSOX 1.0 and just having the filesystem domain manipulate indivitual files
20:10:58 <ehird> oklopol: get a decent client, sheesh ;)
20:11:05 <Sgeo> That is, there will be an rm, but no rm -r
20:11:16 <oklopol> ehird: a decent client will not disconnect if i restart my router? :o
20:11:19 <ehird> pikhq: Sgeo, PSOX, tank, skateboard, tanks are filled with water.
20:11:28 <ehird> but it will remember everything
20:11:34 <ehird> so you'll be out for about 3 mins
20:11:37 <oklopol> ehird: i have konversation
20:11:57 <AnMaster> oklopol, with static ip it *may* be possible for client and server not to note that you disconnected
20:12:00 <oklopol> i'm assuming you know everything about it becauseeeee you were using it iirc
20:12:05 <AnMaster> assuming you reconnects fast enough
20:12:08 <ehird> add to channel list
20:12:19 <ehird> voila, channels auto-joined on startup/connect
20:12:48 <AnMaster> oklopol, you may also want your client to auto identify to services on connect
20:13:06 -!- jix has joined.
20:13:15 <ehird> add to auto commands:
20:13:18 <ehird> /msg nickserv identify FOO
20:13:24 <oklopol> tbh i can't find "networks".
20:13:26 <ehird> you can also tick 'connct at startup'
20:13:28 <ehird> oklopol: its in the first menu
20:14:57 <oklopol> define "in the first menu", it's not in any of the basic menus or "settings" :)
20:15:58 * Sgeo wonders if YouOS is Still Alive
20:16:57 <oklopol> it was "server list", so naturally my robot brain saw no relation to "networks"
20:18:02 <ehird> How interesting, exciting, and useful.
20:18:16 <Sgeo> I made some apps for i
20:18:28 <oklopol> hmm... i guess it's not that bad that i'm actually searching through the whole tokenization space + parse tree space...
20:18:53 <oklopol> O(k^n) parsing, where k depends on similarity of tokens
20:19:25 <Sgeo> Although I agree taht it's mostly pointless
20:19:37 <ehird> http://squatt.er/ would be a great name to be domainsquatted
20:19:46 <ehird> oklopol: 'similarity'?
20:21:25 <oklopol> the point is, you get an exponential amount of tokenizations
20:21:40 <oklopol> and for each tokenization, and exponential amount of parse trees
20:21:55 <oklopol> so, perhaps "second order" exponential number of possibilities
20:22:11 <oklopol> the expression separator is finally starting to make sense
20:23:30 <oerjan> ehird: i conclude that .er would be a great name to be domainsquatted
20:25:33 <GregorR> Personally I can't wait for the Somali government to ... come back into existence.
20:25:43 <GregorR> And hopefully sell domains to anyone.
20:25:46 <ehird> http://en.wikipedia.org/wiki/.er
20:26:08 <ehird> rochest.er (lame delegation - delegated servers have no such zone)
20:26:17 <ehird> .er is great for obscenities
20:29:58 <Judofyr> ehird: What happened to your IRC-bot/parser?
20:30:38 -!- Corun has quit (Read error: 110 (Connection timed out)).
20:31:26 <SimonRC> 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 <SimonRC> yeah, but ehird weasn't there the first time
20:46:03 <ehird> Judofyr: What about it?
20:46:15 <ehird> SimonRC: Blah blah blah blah blah THIS IS FORTH DAMNIT
20:46:28 <ehird> Judofyr: No. Not yet. :(
20:53:23 <SimonRC> how do you compile at run-time?
20:53:39 <SimonRC> I assume you have to comma together a load of opcodes?
20:54:06 <SimonRC> Sgeo: that isn't the last episode of fine structure.
20:54:20 <Sgeo> SimonRC, I realized
20:54:28 <Sgeo> I thought that the next one would be the last, but I was wrong
20:54:33 <Sgeo> Are you an FS fan?
20:54:48 <SimonRC> I liked the ed stories too
20:55:38 <ehird> SimonRC: its very simple to compile at runtime
20:55:51 <ehird> see: jonesforth :)
20:55:55 <Sgeo> Any hypotheses on the unlisted story?
20:55:56 <ehird> and ooh, Sam Hughes++
20:56:14 <SimonRC> ehird: no, joensforth uses indirect-threaded code, like I do
20:56:15 <Sgeo> I tried looking for fiction edited in Feb. 2008, but didn't find anything
20:56:20 <SimonRC> you use direct-threaded code
20:56:28 <ehird> well, mine is simple
20:56:37 <ehird> you see a word name
20:56:45 <ehird> look it up in the dictionary, find its funcptr
20:56:49 <ehird> append that to the word
20:56:56 <SimonRC> but to compile, you must comma together a load of function calls
20:57:14 <SimonRC> a string of function pointers is not executable directly
20:57:23 <AnMaster> ehird, compiling forth? quite possible iirc
20:57:31 <ehird> AnMaster: gosh, really.
20:57:35 <ehird> SimonRC: yes it is
20:58:08 * AnMaster reads up but can't find where discussion start
20:58:20 <SimonRC> but the ip points to a pointer to a function...
20:58:32 <ehird> SimonRC: funcptr() works in c.
20:58:59 <AnMaster> ehird, prototypes prefered ;P *runs*
20:59:01 <ehird> we search the dictionary for '+'
20:59:10 <SimonRC> and a function can't be built by caoncatenating together a load of pointers
20:59:16 <ehird> then, the next memory address is its length
20:59:23 <ehird> then, is all the functions
20:59:25 <ehird> we just take that address
20:59:28 <ehird> and append it to our list.
20:59:38 <ehird> and the last thing in every function is the postlude
20:59:41 <ehird> which pops the stack and goes back
20:59:46 <AnMaster> SimonRC, ehird: may I ask what you are doing or trying to do?
20:59:48 <SimonRC> so how do you compile ina reference to a function written in forth?
21:00:09 <AnMaster> SimonRC, there are plenty of interpreters and compilers for forth iirc?
21:00:10 <ehird> SimonRC: my forth words are valid functions
21:00:21 <ehird> AnMaster: There is also a working Befunge-98 implementation. Stop writing yours.
21:00:32 <ehird> Actually, stop writing any software. It's probably been done before.
21:00:34 <SimonRC> ehird: I'll have to see this to get what you are talking about
21:00:54 <AnMaster> but forth isn't really esoteric is it?
21:01:39 * AnMaster makes a difference between "writing yet another compiler/interpreter for an esoteric language" and for "normal languages"
21:02:24 <AnMaster> 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 <ehird> AnMaster: IT'S FUN.
21:02:42 <AnMaster> ehird, so when do you plan to write your own C compiler?
21:02:56 <ehird> Forths are a lot easier, though.
21:03:07 <ehird> AnMaster: Bitrotten. And none of them really worked fully, as a whole they were probably pretty good.
21:03:35 <AnMaster> considering GCC is still not fully C99...
21:04:15 <ehird> C is simple, honestly
21:04:33 * AnMaster thinks C should be classed as esoteric when it lacks prototypes ;P
21:05:01 <ehird> SimonRC: woot, i have a simple dictionary
21:05:01 <ehird> char d[] = { 3, 104, 108, 116, 0, F_hlt, 0 };
21:05:08 <ehird> a funcptr won't fit into a char.
21:05:19 <ehird> hm, that's interesting.. i don't wanna use whole ints for each name char
21:05:25 <AnMaster> ehird, indeed, you need something that is intptr_t wide
21:05:36 <ehird> AnMaster: no, just int. portability is not important for forths :)
21:05:36 <AnMaster> ehird, that could be 64-bit even
21:05:44 <ehird> i can't just use an integer type
21:05:54 <ehird> AnMaster: who gives a damn, this is a small toy interp
21:06:03 <ehird> I run x86_64 too, damnit.
21:06:09 <ehird> but I don't want to use an int
21:06:12 <AnMaster> ehird, so you plan to compile it in -m32?
21:06:16 <SimonRC> maybe some kind of union of char[4] and int?
21:06:43 <ehird> can you initialize unions in literals?
21:06:52 <SimonRC> I have a set of asserts that all the components of my union are the size of the union
21:07:38 <AnMaster> anyway please don't assume pointers are 32-bits. Such C code is horrible
21:07:49 <ehird> AnMaster: this is meant to look like the J prototype interp ffs
21:07:58 <ehird> why are you so uptight about people coding fun toy interpreters?!
21:08:08 <ehird> anyway, I wonder if I can cast directly to a union
21:08:09 <ehird> D d[] = { 3, "hlt\0\0\0\0\0", 0, F_hlt, 0 };
21:08:17 <ehird> a dictionary record is this:
21:08:32 <AnMaster> ehird, I'm not, as long as it compiles with -ansi -pedantic -Wall -Wextra -Werror
21:08:41 <ehird> name length, name, number of instructions, funcptr
21:08:42 <AnMaster> or -std=c99 instead of -ansi if you want
21:08:46 <SimonRC> ehird: that would put a string pointer in there
21:09:03 <ehird> SimonRC: hmm, as an int? yes, probably
21:09:19 <AnMaster> ehird, SimonRC indeed about the string pointer: you can put an actual string in a struct too, in C99
21:09:22 <ehird> SimonRC: something like this:
21:09:28 <ehird> void F_hlt() {exit(0);}
21:09:29 <AnMaster> C99 got variable size structures
21:09:57 <SimonRC> ehird: ok, what is the structure notation for this:
21:10:00 <ehird> SimonRC: for forth words, the funcptr will be F_magic
21:10:08 <ehird> SimonRC: which will step through the funcptrs after it, calling it
21:10:14 <ehird> thus, a program really is just a list of functions.
21:10:25 <ehird> it will be F_magic, hackified
21:10:29 <ehird> to hardcode the addr
21:10:32 <SimonRC> but how does F_magic know which word to step through?
21:10:38 <ehird> SimonRC: just like that.
21:10:41 <ehird> the perverse way of doing closures
21:10:57 <SimonRC> ehird: right, that was the admission I was looking for
21:11:00 <AnMaster> ehird, and this will only work on little endian 32-bit I assume? :P
21:11:04 <SimonRC> or you could hack with ip?
21:11:14 <ehird> SimonRC: actually, wait, that's right!!
21:11:24 <ehird> words aren't a list of funcptrs any more
21:12:09 <SimonRC> (In fact I had mentally discounted your perverse closures)
21:12:40 <ehird> SimonRC: since ip will be F_magic.. there's no way to utilize ip
21:13:06 <AnMaster> ehird, you know, software that isn't portable bitrots much faster
21:13:33 <ehird> AnMaster: I don't. give. a. shit.
21:13:41 <ehird> I will write this once, use it for 10 minutes, laugh, admire it.
21:13:53 <AnMaster> btw, someone made a forth interpreter in bash
21:14:02 <ehird> THIS IS NOT INTENDED TO BE A SERIOUS INTERPRETER FOR REAL USE!!!
21:14:05 <AnMaster> ehird, ok what is so special about your forth interpreter?
21:14:13 <ehird> NOTHING, except I wrote it!
21:14:17 <ehird> Goddamnit, shut. up!
21:14:28 <SimonRC> well, mine is written in a really dense style
21:14:33 <SimonRC> and to give me some C practice
21:14:57 <SimonRC> most of the source is macro calls, and much fo the rest is macro defs
21:15:51 <ehird> SimonRC: I concede you're right with the funcptr thing.
21:15:52 <AnMaster> SimonRC, you know, C99 got the inline keyword :P
21:15:53 <ehird> How do you resolve it?
21:16:04 <ehird> AnMaster: are you being intentionally dense? :|
21:16:14 <SimonRC> AnMaster: but how do you write this with it? :
21:16:25 <AnMaster> SimonRC, I agree macros are useful sometimes
21:16:28 <SimonRC> #define V(x,b) void x(){b}
21:16:39 <SimonRC> #define OD(c) C*p=dic;while(p){{c}p=p[1].p;} // loop p over dictionary
21:16:51 <AnMaster> SimonRC, why do you want a macro like #define V(x,b) void x(){b}
21:16:52 <SimonRC> 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 <ehird> AnMaster: BECAUSE IT'S A JOKE
21:17:02 <ehird> IT'S LIKE THAT FOR FUN
21:17:07 <ehird> GOD. FDSFKSDF DAMNIT
21:17:08 <SimonRC> AnMaster: 'cause I have a lot og functions with that signature
21:17:19 <AnMaster> SimonRC, those macros would require some variables to be in that function, or global variables
21:17:32 <ehird> AnMaster: Would they?? Wow, I thought they involved puppies.
21:17:36 <SimonRC> (I think AnMaster is being not very serious and not showing it clearly, hence ehird is taking him to seriously)
21:17:41 <ehird> SimonRC: so how do you handle the thingy
21:18:00 * SimonRC bangs ehird and AnMaster's heads together
21:18:22 <SimonRC> the traditional Clarkstone approach for bickering boys
21:18:34 <AnMaster> but seriously, I'm much happier with clean code. you know about doxygen? there is such I thing for bash, called bashdoc
21:18:45 <AnMaster> for any script larger than about 200 lines
21:18:51 <AnMaster> does that tell you something ;P
21:19:00 <SimonRC> that might be where you're goping wrong
21:19:06 <SimonRC> you're writing 200 lines of bash
21:19:31 <AnMaster> SimonRC, I got programs in bash with over 1000 lines of code (comments excluded)
21:20:50 <ehird> SimonRC: pleez tel muy? :p
21:20:57 <ehird> oh, i know what i could do!
21:21:16 <SimonRC> oh, I forgot your question
21:21:18 <ehird> entry = name length, name, number of instructions, funcptr, instructions -- as usual
21:21:26 * AnMaster suggests ehird write a GCC frontend for forth
21:21:28 -!- ais523 has joined.
21:21:29 <ehird> instruction = address of 'name length', ...
21:21:57 <SimonRC> ehird: that is exactly what mine does, I think...
21:22:15 <SimonRC> it's indirect-threaded code
21:22:27 <ehird> ip += (*ip)+2; ip(ip+1);
21:22:55 <ehird> #define NEXT ip+=(*ip)+2,ip(ip+1)
21:23:01 <ehird> SimonRC: and that isn't what yours does
21:23:07 <ehird> yours doesn't take the instructions as arguments
21:23:35 <SimonRC> well, I pass round w, tha address of the most-recently-started word, as a global variable
21:23:50 <SimonRC> the dataflow is actually just that of an argument
21:24:14 <ehird> SimonRC: I still don't get how you resolve this
21:25:13 -!- ais523 has changed nick to ais523|slightly_.
21:25:13 <SimonRC> I have a structure I will call a word
21:25:23 -!- ais523|slightly_ has changed nick to ais523|sl.
21:25:49 -!- ais523|sl has changed nick to ais523|sl_busy.
21:26:04 <SimonRC> name pointer, previous word pointer, code pointer, data*
21:26:26 <SimonRC> my forth code is a list of pointers to words
21:26:36 <ais523|sl_busy> <oerjan> oh no, he went. we are not observed any more. does that mean we cease to exist?
21:27:26 <SimonRC> the ip points to the current position in the list
21:27:47 <SimonRC> you deref the ip into the w register
21:28:28 <SimonRC> then you call the function pointed to by the code field of the word pointed to by the w register
21:29:11 <SimonRC> that function will often look at the w register to see which word is being executed
21:29:32 <SimonRC> for forth words, the code is the co function
21:30:06 -!- jix has quit ("CommandQ").
21:30:21 <SimonRC> 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 <SimonRC> the last one of those will be the address of ret
21:30:47 <SimonRC> the code of ret is a function to pop the ip off the stack
21:38:01 <oklopol> cise mergesort parses correctly
21:38:26 <oklopol> not that that's all that hard to do
21:38:34 <oklopol> just 4 different parse trees
21:38:49 <oklopol> for the second expression, two for the first
21:39:06 <oklopol> mergesort, once again, '/,}#<
21:39:40 <oklopol> it manages to parse that as (' (/ *)) ((}# <) *)
21:39:47 <oklopol> * is the "stream parameter"
21:40:35 <oklopol> 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 <oklopol> ' / }# < are the operations
21:41:07 <oklopol> as you see, nothing tells it what to curry and what way
21:41:47 <oklopol> it simply knows }# wants a function, so it gives it "<", and appliesthe curried (}# <) to the stream parameter
21:42:01 <oklopol> where, on the other hand, "'" wants a list of lists (it)
21:42:07 <oklopol> (it's the recursion function)
21:42:30 <oklopol> so it will use / to split the stream parameter, and use the result of "/" as its lists
21:42:37 <oklopol> "/" is the function to split lists
21:43:01 <oklopol> i'm fairly sure i score one in my quest to invent something original here
21:43:12 <oklopol> which would be a total of 2 points!
21:43:42 <SimonRC> have you read about ursala?
21:44:09 <SimonRC> http://www.basis.uklinux.net/ursala/
21:44:19 <SimonRC> it is an insanely dense programming language
21:44:25 <oklopol> something like this is prolly done with perl too. i just make it a bit more explicit
21:44:44 <SimonRC> it has a sublanguage called pointer expressions where each command is 1 char, and you can do a fair amount in it
21:45:03 <oklopol> umm, and it does type checking for tokenization and parsing?
21:45:13 <oklopol> SimonRC: i cannot open webpages.
21:45:16 <SimonRC> I was thinking m,ost ly the insane density
21:45:31 <oklopol> oh, no, that was not my "new" idea...
21:45:41 <oklopol> there's a lot of languages for that already
21:46:06 <oklopol> the new thing is just the way i'm making it terse
21:46:29 <oklopol> 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 <SimonRC> doesn't that mean that changing the type of one function can break oterh functions by changing their parse treee?
21:47:11 <oklopol> this is incredibly inefficient to parse
21:47:22 <oklopol> which is exactly why it might be fruitful for terseness
21:47:24 <SimonRC> doesn't matter that much on modern machines
21:48:01 <oklopol> they can, but they won't necessarily find the right parse tree...
21:48:07 <oklopol> a computer will take the first possible
21:48:12 <oklopol> a human will take what suits them.
21:48:30 <oklopol> i'm going to add commands for actually choosing the parse tree ;)
21:48:46 <oklopol> like, "choose fifth parse tree"
21:49:05 <oklopol> those are parsed as you'd except
21:49:19 <oklopol> also, "," and ";" are used to separate expressions
21:49:23 <SimonRC> give me more detail about how that mergesort works
21:49:30 <oklopol> by separating them, you can escape the hell of exponential parsing.
21:50:08 <oklopol> (' (/ arg)) split arg in two, then recurse to both branches
21:50:18 <oklopol> then, the result is given to the second part
21:50:36 -!- BMeph has quit (Read error: 104 (Connection reset by peer)).
21:51:03 <oklopol> }# 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 <oklopol> it then gives the function the head of each list
21:51:32 <oklopol> and puts on a "return list" the head that was returned
21:51:37 <oklopol> now, < has two definitions
21:51:47 <oklopol> it can either take a list, and return minumum
21:52:06 <oklopol> or it can take two values and return a boolean indicating which was smaller
21:52:18 <oklopol> now, the first one is type inferred, of course
21:52:49 <oklopol> so }#< gets two sorted lists (they were recursed into), and always picks the smaller of their heads
21:53:09 <oklopol> also, you don't need to check the special cases [] and [1-element]
21:53:40 <oklopol> because recursing with param N just returns N if the function has already been called with it iiiin the same recursion stack
21:53:51 <oklopol> that was some confusing terminology
21:53:56 <oklopol> in the same recursion anyway
21:54:01 <SimonRC> what is the recursion pattern of ' ?
21:54:37 <oklopol> it takes a list of values, and maps current function to it
21:54:48 <SimonRC> what is "current function"?
21:54:49 <oklopol> current being the one it is called from
21:54:54 <oklopol> in this case the whole program
21:55:39 <oklopol> the params are put on the "stream"
21:55:47 <oklopol> the stream is then run through each expression
21:56:07 <oklopol> and after running them all, its contents are the return value of the function
21:56:25 <oklopol> you can use it to escape the exponential parsing hell, i imagine
21:56:48 <oklopol> lessay you have expressions e1 e2 e3 ... en
21:57:25 <oklopol> you'd basically do (en ... (e3 (e2 (e1 args))))
21:57:32 <oklopol> and that would be the result of the function
21:57:40 <oklopol> the expressions are functions
21:57:57 <oklopol> running through means applying the function to the contents of the stream, and putting the result on the stream
21:57:59 <SimonRC> why is the stream called a stream?
21:58:08 <oklopol> because i decided it is :)
21:58:18 <oklopol> information kinda flows through the expressions
21:58:33 <oklopol> you can have other kinds of expressions too, you see
21:58:39 <oklopol> pattern matching, for instance.
21:58:45 <oklopol> you can just do that on the fly
21:59:01 <SimonRC> if I have a stream continging [1,2,3] and I pass it through icrement, what do I get out?
21:59:05 <oklopol> this is done by prepending the expression with ; instead of a comma
21:59:32 <oklopol> that would not have a parse tree.
22:00:01 <SimonRC> I mean, increment is the function that returns one more than its argument
22:00:30 <oklopol> lists may for instance map functions like that through them if nothing else works
22:00:52 <oklopol> on paper, at least, i have the possibility of putting a value for operations' types
22:01:06 <oklopol> so that there are less wanted types of operations
22:01:18 <oklopol> that are taken if a parse tree could not otherwise have been formed.
22:02:01 <oklopol> i probably will not implement that any time soon, because even doing what i have now efficiently is hell'
22:02:21 <oklopol> and "less wanted operations" are by definition only used after the whole parse tree space has been searched
22:02:28 <oklopol> and... that's an exponential job.
22:02:47 <SimonRC> how does / split the list?
22:02:48 <oklopol> i'll take those nuts as a compliment, i'm fairly satisfied with cise myself <3
22:03:04 <oklopol> int -> list -> list of lists
22:03:25 <oklopol> which splits into (whatever the int was) lists
22:03:36 <oklopol> *splits the given list into
22:03:45 <oklopol> equally distributing the elements
22:03:56 <oklopol> there's just / :: list -> list of lists
22:04:26 <oklopol> i'll try actually adding / :: int -> list -> list of lists now, lessee what happens
22:04:45 <SimonRC> oklopol: is the implementation available anywhere?
22:04:49 <oklopol> hmph, you're both green, stupid konversation
22:05:05 <oklopol> umm, i just scribbled it up, so no, not yet at least
22:05:10 <oklopol> also, it does not yet evaluate it.
22:05:15 <oklopol> although that isn't too hard
22:05:37 <oklopol> the parsing is the gist of cise really
22:06:39 <SimonRC> how does ' know when to stop?
22:07:23 <oklopol> as i said, there's a runtime check that recursion is not done twice with the same params
22:07:35 <oklopol> if it is, params are just returned.
22:07:54 <SimonRC> the input the mergesort isn't a list of lists
22:08:07 <oklopol> my original way was to return [] when given [], but that was less parametrizable
22:08:12 <SimonRC> how does }#> get given one?
22:08:16 <oklopol> ' takes a *list* of values
22:08:35 <oklopol> and returns a list of the values that went through recursion
22:08:55 <oklopol> / makes it (list (list int))
22:09:13 <oklopol> ' makes it (list (list int)), just recurses through them
22:09:37 <oklopol> (}# <) gets the (list (list int)) ' returned
22:10:01 <oklopol> wonder what happens if i do }#<'/... :D
22:10:12 <oklopol> that's semantically equivalent, you see
22:10:30 <SimonRC> do we end up merging pairs of lists of lots at a time?
22:10:45 <oklopol> we may end up merging lists of lists
22:11:09 <oklopol> it's not something you often need, prolly, true, but there are a *lot* of list operations in cise.
22:11:17 <oklopol> it's basically a list language
22:11:45 <oklopol> St sorts a list, for instance, currently
22:12:14 <oklopol> there's also a separate "permutation type", you can kinda "almost" sort a list with it:
22:12:25 <oklopol> and it returns a permutation
22:12:39 <oklopol> which is how the list should be permutated to be sorted
22:12:46 <oklopol> you can just do Sp list list to get it sorted
22:13:16 <oklopol> just today i had a situation where i needed that...
22:13:43 <SimonRC> it allows you to keep keys and values in seperate lists, and sort both by sorting one
22:14:14 <SimonRC> the super-dooper operators sound rather J/K-ish
22:14:18 <oklopol> but there was something that was pretty hard to do otherwise, involving a "group" operation as well
22:14:57 <oklopol> 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 <oklopol> also, i'm calling mine list-processing, but same thing i guess.
22:15:28 <oklopol> well, lists imply trees more than arrays, imo
22:15:36 <SimonRC> also the magical figuring out what variation of an operator to apply is J/K-like
22:15:49 <oklopol> and cise should, at least in the future, also have a nice support for tttttrees
22:16:04 <oklopol> yes, sure, but i doubt it's done to this extent
22:16:05 <SimonRC> ho do they differ from ordinary trees?
22:16:16 <oklopol> most likely the parse tree is clear without context.
22:16:44 <oklopol> there's compile-time *overloading* done based on types, but on the existing parse tree.
22:17:12 <oklopol> at least i think so, because no one in their right mind would do something like what i've done :D
22:17:32 <oklopol> what do you means how do they differ from ordinary trees?
22:17:38 <SimonRC> could you maintain a serious program written in it
22:17:51 <SimonRC> surely any tiny change would introduce a fountain of problems
22:18:17 <oklopol> well, if you keep expressions short, it may just work.
22:18:47 <oklopol> 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 <oklopol> after that, the functions is uses will not change
22:19:09 <oklopol> this means you can, if you want, introduce new operators to the language
22:20:13 <oklopol> 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 <oklopol> because you'd have to have parsed the beginning.
22:20:33 <oklopol> nothing good would arise from this sick fixed-point equation, methinks.
22:20:56 <SimonRC> couldn't you just enforce top-down semaintics?
22:21:07 <SimonRC> everything has to be deduceable from the program up to that point?
22:21:19 <oklopol> well, that's what i have, basically.
22:21:57 <oklopol> i could use the functions that have been defined in the source up to the point of parsing
22:22:11 <oklopol> that's not good, because you may want to have circular dependency
22:22:30 <SimonRC> introduce a specific operator for it
22:22:36 <ais523|sl_busy> oklopol: just do it like C and allow a way to predeclare a function
22:22:49 <oklopol> i already have an operator for setting a variable.
22:23:00 <SimonRC> or Forth has deferred words
22:23:14 <SimonRC> which are also general-purpose function hooks, ISTR
22:23:20 <oklopol> predeclaration doesn't really fit in
22:23:39 <SimonRC> or how about a y-combinator kind of thing?
22:23:46 <oklopol> you just have to have introduced the *token*, to use it in parsing
22:23:48 <SimonRC> a specific mechnism for mutual reference
22:24:18 <oklopol> so you can do 0;foo to set foo, and then function-involving-foo;bar and then function-involving-bar;foo
22:24:50 <SimonRC> Oh dear, NFS is playing up again
22:25:18 <oklopol> i guess you could actually compile cise if it's done like that
22:25:23 <SimonRC> I thought ; was for function sequencinging kind of things?
22:25:43 <oklopol> which would be quite awesome actually, weeks of compiling just to get a few chars of program to compile :P
22:25:52 <oklopol> (assuming using my unoptimized strict parser)
22:26:11 <oklopol> SimonRC: "," is the sequencer
22:26:43 <oklopol> so you can put parts of the stream or all of it in variables midway in the function
22:27:12 <SimonRC> BTW, does the left or the right part of a function go "first"?
22:27:44 <oklopol> okay, this was a classic failure from my part...
22:28:03 <oklopol> guess what my cise SPEC was called ;)
22:28:42 <oklopol> "file has changed do you want to reload from disk?" I HAVE NO IDEA WHY THAT'S HAPPENED, BUT SHUUURE :DDD
22:29:00 <Sgeo> oklopol, is there a cise~ ?
22:29:17 <SimonRC> can you "undo" the re-load~?
22:29:20 <oklopol> SimonRC: it's basically prefix + currying
22:29:48 <SimonRC> or something in a pastebin?
22:30:04 <oklopol> i probably wouldn't even have looked xD
22:30:13 <SimonRC> or be like Paul Graham and say "screw the docs the program is the spec"
22:30:35 <SimonRC> in future, keep you manual is a different dir
22:30:43 <Sgeo> oklopol, so I was right?
22:30:45 <SimonRC> or maybe call it "cise.txt"
22:32:28 <Sgeo> 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 <ais523|sl_busy> 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 <ais523|sl_busy> 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 <ais523|sl_busy> and it took out my old reference interp at the same time
22:35:04 <ais523|sl_busy> but I'm working on a new version now (when I'm not doing University work)
22:36:11 <SimonRC> ais523|sl_busy: doesn't your uni keep backups?
22:36:50 <ais523|sl_busy> and although I keep backups, I didn't take them often enough to save the spec
22:37:00 <ais523|sl_busy> (which I'd only been working on for about 2 days then)
22:37:43 <oklopol> [['}#', '<'], ["'", ['/', '*']]] from }#<'/
22:37:51 <oklopol> i didn't check if that was right
22:38:10 <ais523|sl_busy> 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 <oklopol> that pretty awesome, there is, after all, about 6 parse trees from those 4 tokens
22:39:21 <oklopol> 5 character mergesort, and not even *complete* cheat
22:39:47 <oklopol> not fully, i don't think so
22:39:49 <lament> are they unicode characters
22:40:05 <SimonRC> it stick stuff together in whatever way works
22:40:15 <SimonRC> composition, argument-passing, curring, etc
22:40:24 <oklopol> yeah, you can pretty much just slash your characters there and it works!
22:40:52 <SimonRC> except when the computer finds a nex and exciting interpreetation of your ambiguous parse tree...
22:41:02 <oklopol> curly bracket close, that number character, less-than, single quote, slash
22:41:19 <SimonRC> (In C++, parsing depends on the kinds of various identifiers)
22:41:34 <ais523|sl_busy> (and in cise, it depends on what parses don't cause type errors?)
22:41:45 <SimonRC> (foo(bar); could meant many different things)
22:42:07 <ais523|sl_busy> what do you do when there are two non-erroneous ways to parse the program?
22:42:14 <oklopol> SimonRC: but at least in c++, foo is always s single identifier ;)
22:42:21 <oklopol> ais523|sl_busy: it takes the first one.
22:42:29 <oklopol> SimonRC: i currently have ints, booleans and lists.
22:42:39 <oklopol> implemented simply as python tuples :)
22:43:00 <oklopol> so you can just add types by introducing another type name :)
22:43:20 <SimonRC> what order do parses come in? i.e. which is "first"?
22:43:40 <oklopol> that i shall define in the spec, currently it's what my implementation has.
22:44:01 <oklopol> it has to be well-defined ofc, because this is all about terseness.
22:44:58 <oklopol> well, for many programs, you can simply use a clear prefix notation.
22:45:09 <oklopol> so it should try to parse your thing as such
22:45:31 <SimonRC> they would help human readers
22:45:33 <oklopol> well, () are used to define a function
22:45:55 <oklopol> i guess i might make it possible to use that in a sort of bracket-like fashion
22:46:13 <SimonRC> how about intercal-style ""
22:46:25 <SimonRC> which also parse ambiguously
22:46:27 <oklopol> you can set variables, so you can definately be as clear as you wish.
22:46:33 <SimonRC> but less ambiguously than without
22:47:14 <oklopol> ;I,;mc,[]("[]"),=}!!b->"+"+mC1"-"-mC1">"+C1"<"-C1(;X)Wh=mC0=}X??b i wonder if this parses :P
22:47:22 <oklopol> that's not at all ambiguous, even
22:47:28 <oklopol> ...or then it is, not sure
22:47:43 <oklopol> that should be a fully working binary brainfuck
22:48:01 <SimonRC> how the fuck does it work?
22:48:14 <SimonRC> ais523|sl_busy: yeah, brain-lag
22:48:19 <oklopol> it uses goto's and whiles, and i'm not sure i even remember how it works :)
22:48:36 <ais523|sl_busy> goto is, of course, not impossible even in a concatenative language
22:48:41 <SimonRC> I wonder if J/K can beat that
22:48:53 <oklopol> first of all, a lot of that is not up to date anymore.
22:49:24 <oklopol> let's look at something simpler, preferably :)
22:49:35 <oklopol> Al/_:¨ this should check if a number is prime 8|
22:50:18 <oklopol> it's in my keyboard, so i use it. :)
22:50:28 <oklopol> i prolly change everything to ascii later
22:50:37 <oklopol> because cheating otherwise, ofc
22:50:39 <SimonRC> how does the ascii-checker work?
22:50:41 <ais523|sl_busy> the shortest BF interpreter entered on codegolf.com was 106 bytes long
22:51:15 <ais523|sl_busy> however, that website doesn't let you see what the program was, unless it was you who submitted it
22:52:45 <oklopol> hmm, first of all, Al/_¨ should work now, second, this seems to rely on type *conversion*
22:53:31 <oklopol> that does (all (div val [1..val-1]))
22:53:51 <oklopol> and assumes an integer can also be divided by a list to get a list of them resultzorz
22:54:15 <SimonRC> oklopol: or, in Bill Gates's case, long time no C
22:54:19 <oerjan> the second explains the first one. perfectly.
22:54:20 <oklopol> oerjan is an irc advertiser bot
22:55:05 <ais523|sl_busy> but it's easy to jump to conclusions over the internet
22:55:17 <oklopol> ais523|sl_busy: observe oerjan closely, what you just saw was oerjan's *thing*
22:56:05 <oklopol> you only have one thing in my head
22:56:36 <oklopol> because you're not *that* active, not that weird, and you've clearly stated to me a personal detail
22:56:57 <oklopol> wonder if you know what that is
22:58:02 <Sgeo> What's my thing?
22:58:11 <oklopol> Sgeo: do you really have to ask?
22:59:12 <oklopol> ais523|sl_busy's thing is also pretty clear, you're branded for life.
22:59:29 * oerjan thinks ais523|sl_busy has at least two things
23:00:01 <oerjan> he's also the INTERCAL guy in my mind
23:00:04 <ais523|sl_busy> getting into arguments with ehird over programming style and choice of language is one of the non-obvious ones
23:00:06 <Sgeo> Oh, I misunderstood what you meant by "thing", I thought you meant style of talking
23:00:08 <oklopol> 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 <ais523|sl_busy> repeatedly adding daemons to EgoBot was another, but it isn't here at the moment
23:00:36 <oklopol> yeah, i also know he's an intercal guru, but the global fame overrides that.
23:01:05 <ais523|sl_busy> as for style of talking, I'm ridiculously addicted to singular they
23:01:30 <SimonRC> Didn't we have this conversation a few months back?
23:02:11 <oklopol> i need to eat something ->
23:02:15 <Sgeo> neophile? Addicted to matrix, or something else? Obsessed with new stuff?
23:02:28 <oerjan> addicted to sniffing neon
23:02:56 <SimonRC> 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:03:16 <oerjan> you'll have to sniff a _lot_
23:03:21 <Sgeo> ais523|sl_busy, would have an effect if oxygen didn't get to your lungs
23:03:37 <oklopol> hmm, actually a lot of guys here don't have a thing
23:03:38 <ais523|sl_busy> write a few Underload programs, then you'll get the hang of concatenative programming
23:03:45 <oklopol> because i've never seen them talk
23:04:02 <SimonRC> well, if you have any elemental flourine in you it will react with xenon...
23:04:03 <ais523|sl_busy> 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:25 <ais523|sl_busy> SimonRC: surely no body could survive large amounts of elemental flourine
23:04:40 <SimonRC> ais523|sl_busy: unless you are a flourine elemental
23:06:06 <ais523|sl_busy> but the way that's written, it seems like "Common misspelling of fluorine" is the /definition/ of 'fluorine'
23:06:26 <oerjan> flourine is a dangerous chemical arising in flour that has been stored too long
23:06:37 <ais523|sl_busy> so therefore 'flourine' is a noun that can only possibly refer to the word 'flourine'
23:07:15 <SimonRC> oklopol: how about a compiler with common sense
23:07:23 <oerjan> recursive [adj.]: see recursive
23:07:37 <ehird> SimonRC: No, I will NOT compile this virus!
23:07:44 <SimonRC> "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 <oklopol> SimonRC: like, that it'd take the parse tree resulting in a nice algo? ;)
23:08:08 <SimonRC> and it would automatically change the program to DWYM
23:09:25 <ehird> SimonRC: main(){printf("%i",pi);}
23:09:29 <ehird> prints out all of pi
23:09:41 <ehird> comparisons etc involving pi
23:09:44 <ehird> use an approx. value
23:09:46 <SimonRC> oklopol: why you not have interwebz?
23:10:06 <oklopol> perhaps i should restart my router like ppl keep telling me :o
23:10:07 <ehird> oklopol: Router. Restart it.
23:10:12 <ehird> oklopol: You just set up Konversation, so!
23:10:21 <SimonRC> can you start a web browser?
23:10:26 <oklopol> well, i just set just freenode
23:10:32 <ais523|sl_busy> a better example would be 'recursive [adj.]: see the definition of recursive in the previous edition of this dictionary'
23:10:37 <oklopol> SimonRC: yes, but it won't open anything
23:11:12 <oklopol> that would most likely be tail recursion
23:11:13 <ehird> ais523|sl_busy: lazily evaluated recursion
23:11:19 <oklopol> depending on the laziness of the reader
23:11:45 <SimonRC> oklopol: well, you can get on IRC...
23:11:47 <ehird> recursive [adj.]: when a function (see recursive-inner).
23:11:49 <ais523|sl_busy> looks like I'll have to go back to bouncing them off Google
23:11:56 <ehird> recursive_inner: calls a function that (see recursive_inner)
23:12:05 <ehird> ais523|sl_busy: does it not? oh wells.
23:12:09 <ehird> ais523|sl_busy: it will, sometime.
23:12:12 <ais523|sl_busy> no wait, Google isn't responding to pings from here either
23:12:25 <oklopol> ehird: did you read my cise rant?
23:12:39 <oklopol> it seems my idea actually works, to some extent
23:12:53 <oklopol> ais523|sl_busy: i *can* ping google
23:12:55 <SimonRC> have you tried a different web browser?
23:13:06 <SimonRC> or telnet www.google.com 80
23:13:09 <ehird> oklopol: gimme spec
23:13:26 <ais523|sl_busy> (heh, that's what SimonRC suggested, but I meant to say HTTP and got the wrong acronym)
23:14:03 <oklopol> i can get google on telnet :P
23:14:18 <oklopol> i have a proxy set, must be down :)
23:15:14 <SimonRC> I have noticed I sometimes try to apply debugging techniques to religion-like things
23:16:01 <oklopol> i had a jehova's witness on the door today
23:16:10 <oklopol> apparently there's a big jesus party coming
23:16:13 <SimonRC> I mean, I see some nonsense, and try to divide up the reasoning
23:16:28 * Sgeo starts looking at Magnatune again
23:16:30 <oklopol> yep, and same guy actually :)
23:17:00 <SimonRC> surely everyone gets a chance to repent during those seven nasty years?
23:17:01 <oklopol> it would be so awesome to join a group like that
23:17:08 <ais523|sl_busy> BTW, I made an ogg version of the Fugue Hello World I wrote
23:17:16 <oklopol> i've just seen so many cult movies i'm afraid they'd kill me :)
23:17:25 <ais523|sl_busy> but Esolang doesn't accept ogg-format uploads for some reason
23:17:36 <Sgeo> ais523|sl_busy, url?
23:17:59 <ais523|sl_busy> I can paste it to a filebin temporarily, though, for you
23:18:01 <Sgeo> I thought maybe you put it up elsewhere
23:18:17 <Sgeo> Actually, I think I did get the midi to work
23:18:20 <Sgeo> It's just painful
23:18:26 <SimonRC> oklopol: interwebs work now?
23:18:57 <oklopol> do i have to upload my interp now?;)
23:19:02 <ais523|sl_busy> (unfortunately that link will stop working after an unspecified length of time)
23:19:11 <oklopol> 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:56 <oklopol> will there also be another girl and a cup?
23:19:56 <Sgeo> Anyone up to making a PSOX program in Fugue?
23:20:28 <ais523|sl_busy> Sgeo: I have a very complicated indirect chain of programs which amount to a BF->Fugue compiler
23:20:32 <oklopol> good, is this the #esoteric orgy me and bsmntbombdood have been planning for ages?
23:20:47 <ais523|sl_busy> however, they're sufficiently non-portable that I don't think they're capable of running on more than one computer
23:20:54 <Sgeo> chain of programs? Please elaborate?
23:21:18 <ais523|sl_busy> BF->Prelude compiler. Prelude->Fugue compiler, but with music in a weird intermediate format I invented.
23:21:50 <ais523|sl_busy> 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 <ais523|sl_busy> (hmm... maybe I could alter it so it works with Rosegarden?)
23:22:11 <SimonRC> is there any Choon involved?
23:22:24 <Sgeo> According to the wiki and my understanding, Prelude is equiv. to Fugue.. is this wrong?
23:22:27 <ais523|sl_busy> Then, I export to MIDI, and use TiMidity to synthesize that into ogg if needed
23:22:44 <Sgeo> "not quite"? howso?
23:22:46 <ais523|sl_busy> Fugue's a superset because it can handle literal constants greater than 9
23:23:59 <Sgeo> So why not translate Prelude to Fugue directly?
23:24:26 <oklopol> btw i made a music description language the other day, it totally owns standard score notation
23:24:37 <ehird> unquote :: 'R ('R -> 'S) -> 'S
23:24:38 * Sgeo types pylib into Fx
23:24:45 <oklopol> i'll turn it tc next week, methinks
23:25:06 <Sgeo> Nothing on there, /me googles Python MIDI
23:25:07 <ais523|sl_busy> ehird: I'm having problems figuring out the kind of 'R in that
23:25:21 <SimonRC> you mean you calculate scores?
23:25:24 <ehird> ais523|sl_busy: R is an abbrev. for "Rest"
23:25:30 <oklopol> 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 <ehird> ais523|sl_busy: It means "the rest of the stack."
23:25:47 <oklopol> for instance you could check whether a melody is your invention, or already exists
23:25:49 <Sgeo> http://www.mxm.dk/products/public/pythonmidi
23:25:51 <ehird> And, of course, EVERYTHING types as ('R -> 'S) -- you give it a stack in and you get a stack out
23:26:00 <SimonRC> oklopol: this has been studied before of course
23:26:03 <ais523|sl_busy> oklopol: I seem to remember that someone once did that simply by writing down the up-down sequence of notes
23:26:34 <SimonRC> and will split very similar tunes apart
23:27:10 <oklopol> everything done on the subject suck ass as far as i know.
23:27:12 <SimonRC> and what if you can't remember the intor?
23:28:01 <ais523|sl_busy> 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 <oklopol> umm, or just the whole piece
23:28:48 * Sgeo goes to write a prelude2fugue.py
23:29:19 <SimonRC> oh great, now I have both the SG-1 and Atlantis themes in my head at once now
23:29:40 <ehird> SimonRC: damn, my headmusicplayer isn't multithreaded
23:29:45 <ehird> it has a gui like xmms too
23:30:19 <SimonRC> I do actually task-switch quite explicitly in some situations
23:30:51 <ehird> SimonRC: you read the daily wtf, don't you? that place is becoming a wtf in itself
23:31:05 <ehird> I mean, at least the *parody* MFDs in the comments are funny..
23:31:14 <SimonRC> oklopol: yeah, Stargate Atlantis
23:31:25 <ais523|sl_busy> did you see the thread with 700+ comments on one of the main stories?
23:31:48 <ais523|sl_busy> SimonRC: the one where a company had used JavaScript for authentication
23:31:54 <ehird> ais523|sl_busy: reddit linked it
23:31:59 <ehird> it got on the front page
23:32:00 <ais523|sl_busy> where the password was checked against plain text client-side
23:32:12 <SimonRC> that could describe several ones
23:32:22 <ehird> Error: Target org.macports.fetch returned: fetch failed
23:32:23 <ehird> Error: Status 1 encountered during processing.
23:32:25 <ais523|sl_busy> the amusing thing was that it appeared to be a scam company's website in the first place
23:32:40 <oklopol> i need to sleep for a while, cya ->
23:33:02 <SimonRC> did anyone sign up as "little Bobby Tables"? :-)
23:33:17 <ais523|sl_busy> SimonRC: you can't inject SQL into client-side JavaScript validation
23:33:34 <SimonRC> ais523|sl_busy: no, but it might make it through to the server side
23:34:05 <ais523|sl_busy> the page simply had a script that checked the username/password
23:34:15 <ais523|sl_busy> and if it was right, redirected the user to another web page
23:34:24 <ais523|sl_busy> which they could just access directly if they knew the URL
23:34:47 <ais523|sl_busy> still more amusingly, the people in charge of the website found out, and changed the username/password
23:34:59 <ais523|sl_busy> (but of course they were still visible in view source...)
23:35:48 <SimonRC> 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 <ehird> Amusingly, the daily wtf's first few submissions sucked. terribly
23:36:07 <SimonRC> ehird: it was not originally on thedailyWTF
23:36:08 <ehird> 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 <SimonRC> and IMO they weren't oo bad
23:36:20 <ais523|sl_busy> SimonRC: on Wikipedia, MFD is where non-article content is deleted
23:36:27 <ehird> ais523|sl_busy: Mandatory Fun Day
23:36:29 <ais523|sl_busy> as in, pointless webcomics that people run on project pages
23:36:49 <SimonRC> what does "MFD" stand for?
23:36:55 <ehird> SimonRC: Misc. for deltition
23:37:05 <ais523|sl_busy> as in, all pages not covered by other deletion processes
23:37:12 <ehird> Mandatory Fun Day: Man, Fuck 'Dis
23:37:39 <ais523|sl_busy> although I hold the record for successful MfDs of system interface messages
23:37:45 <SimonRC> Man, Fucked by Dis (the language)
23:38:03 <SimonRC> ais523|sl_busy: system interface messages?
23:38:04 <ehird> ais523|sl_busy: wow
23:38:06 <ehird> how did you do that
23:38:12 <ehird> SimonRC: things like the global site header
23:38:16 <ehird> yes, they're actually transcluded pages
23:38:21 <ehird> MediaWiki is awful, awful software
23:38:26 <ehird> I think everyone can agree on that
23:38:38 <SimonRC> the forum software is TRWTF
23:38:41 <ais523|sl_busy> but most of its features are designed just to be convenient for them
23:38:45 <ehird> the wiki software is TRWTF
23:39:00 <ehird> Twiki softwareITRWTF <-- shorthand!
23:39:04 <ehird> ais523|sl_busy: everyone does that
23:39:11 <ais523|sl_busy> when you preview the post, it changes the captcha image, but keeps the same word
23:39:25 <ais523|sl_busy> giving you a second chance to OCR it with different data
23:39:37 <ais523|sl_busy> (and ehird: no, I didn't say what the CAPTCHA word was, like so many people do)
23:39:50 <ehird> 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 <ais523|sl_busy> (but from what they have said, it seems to me that it's just taking random words from lorum ipsum)
23:40:05 <ehird> It basically amonuts to 'LOL, Microsoft r awsum. Open src ppl SUXORR'
23:40:22 <SimonRC> ehird: the reverse of the usual?
23:42:03 <ehird> ais523|sl_busy: Even toy wikis disable template recursion. :-)
23:42:03 <ais523|sl_busy> but it is TC when the user restarts the loop by hand (by piping output to input)
23:42:24 <ehird> 's tc when the user does it
23:43:06 <ehird> ais523|sl_busy: Would a brainfuck interp in MWT be possible?
23:43:24 <ehird> {{brainfuck|,[.,]|hello}}
23:43:31 <ehird> Obviously, you'd need to restart it at points
23:43:35 <ehird> But could you actually do that parsing?
23:43:44 <ais523|sl_busy> but there's no way to do parsing for chars that don't have special wikimarkup meanings
23:44:00 <ais523|sl_busy> which is why the cyclic tag system needs to use = as a list separator
23:44:31 <ais523|sl_busy> ehird: it may be possible if Extension:StringFunctions were installed, though
23:44:51 <ais523|sl_busy> (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 <ehird> ais523|sl_busy: Hmm. It occurs to me that a template system can trivially simulate the lambda calculus..
23:45:42 -!- oerjan has quit ("Good night").
23:45:54 <ehird> Let's try the mocking bird combinator
23:46:01 <ehird> {{ {{{1}}} | {{{1}}} }}
23:46:45 <ehird> ais523|sl_busy: Yes, I know MW's probably doesn't allow that, but that's because it sucks
23:47:06 <ais523|sl_busy> but I was trying to track what happened to the parameters
23:47:06 <ehird> only one way to find out..
23:47:21 <ehird> User:Elliott/mwc/m here I come!
23:47:23 <ais523|sl_busy> and ehird: you'll just get a template loop error if you aim it at itself
23:47:26 <ehird> (mwc == mediawikicode)
23:47:39 <ehird> ais523|sl_busy: 'Y' could come in handy here
23:47:45 <ehird> Hmm, you can't create anonymous templates though
23:47:53 <ehird> So you can't do Y, or much anything really
23:48:15 <ehird> ais523|sl_busy: Is it possible to curry it?
23:48:20 <ehird> But how do we get the param to K1
23:48:25 <ehird> that was given to K
23:48:35 <ais523|sl_busy> you would need to be passing more than one param around
23:48:42 <ehird> ais523|sl_busy: example?
23:48:54 <ais523|sl_busy> however, bug 5678 has now been fixed, so I don't think it's possible nowadays
23:49:12 <ehird> I mean, you can do:
23:49:13 <ais523|sl_busy> previously, you could do something like K = K1 {{!}} {{{1}}}
23:49:33 <ehird> I'll give it a try.
23:49:42 <ehird> ais523|sl_busy: K1, or {{{K1 ...}}} ?
23:50:05 <ais523|sl_busy> you dereferenced the {{!}} using {{#if:1|{{{thingtodereference}}}}}
23:50:21 <ais523|sl_busy> but that doesn't work nowadays, and never ought to have worked in the first place
23:50:25 <ehird> ais523|sl_busy: {{User:Elliott/!}}
23:50:47 <ehird> #if:1 could be simulated by If1
23:50:51 <ais523|sl_busy> yes, that's pretty much identical to the corresponding Wikipedia template
23:50:51 <ehird> which would be {{{1}}}
23:51:02 <ehird> Welp, I'll try it anyway
23:51:19 <ehird> ais523|sl_busy: K1 would just be {{{1}}}, correct?
23:51:54 <ais523|sl_busy> and I can't figure out where they ought to go right now
23:52:21 <ehird> ais523|sl_busy: so there's no way to curry a template properly
23:52:38 <SimonRC> alas, that si so often the case
23:52:48 <SimonRC> I am working at work on a system that would be TC if you could curry
23:53:06 <ehird> ais523|sl_busy: I think I might see where you're going
23:53:13 <ais523|sl_busy> then, you make sets of 3 templates, to generate the resulting template base name, first param, second param
23:53:18 <ehird> (Permission to pollute esolang's main namespace? I, K, etc. aren't going to be really common names.)
23:53:33 <ais523|sl_busy> ehird: I can't give you that permission, you'd have to ask Graue
23:53:50 <ehird> 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 <ehird> SimonRC: esolangs owner
23:53:57 <ehird> ais523|sl_busy: hmmm
23:54:09 <ais523|sl_busy> incidentally, see User:Ais523/k1 on Esolang; I had this sort of idea earlier
23:54:17 <ehird> {{ {{ K | foo }} | bar }}
23:54:29 <ais523|sl_busy> SimonRC: not registered, apparently, but he does come here occasionally
23:55:21 <ehird> ais523|sl_busy: don't be cruel :'(
23:55:36 <ehird> hey hoo, K can just be 'I {{{1}}}'
23:55:38 <ais523|sl_busy> I only intend to do that, though, if you cause a big mess and then blame it on me
23:56:07 <ais523|sl_busy> 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 <ehird> I don't think I need it, ais523|sl_busy.
23:56:26 <ais523|sl_busy> (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 <ehird> ais523|sl_busy: I think I can trick MW into accepting the Y combinator
23:57:26 <ehird> Since I think I can avoid *direct* recursion.
23:57:40 <ais523|sl_busy> ehird: I think it checks to see if the same template name is used three times in a chain
23:58:31 <Sgeo> Oh MediaWi..riright
23:58:44 <ehird> ais523|sl_busy: is whitespace ignored?
23:58:50 <ehird> {{ {{{1}}} | abc }} and stuff
23:59:07 <ais523|sl_busy> if it's either side of a metadata character, it's normally ignored
23:59:19 <ais523|sl_busy> and it's definitely ignored between {{ and |, which in this case is the only relvant case
23:59:36 <ais523|sl_busy> (except if you have a multiword template name, of course)
23:59:41 <ehird> {{ {{ {{{1}}} | {{{3}}} }} | {{ {{{2}}} | {{{3}}} }} }}
23:59:44 <ehird> ais523|sl_busy: is that OK?
00:00:35 <SimonRC> hmm, you remarked exactly at midnight
00:00:44 <ehird> ais523|sl_busy: hmm...
00:00:46 <ehird> {{ {{ S1| K | S }} | K }}
00:00:50 <ehird> that's what it thinks SKSK is
00:00:57 <ehird> I think I need more {{ }} ing of partially evaluated forms
00:01:07 <ehird> 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 <ehird> ais523|sl_busy: I definately have a weird bug
00:02:10 <ais523|sl_busy> Sgeo: I know at least two examples of that, but they're both bugs according to the devs
00:02:11 <ehird> {{ {{ K | hello }} | world }}
00:02:19 <ehird> {{ I| hello | world }}
00:02:35 <Sgeo> {{{subst:ns:0}}{some_template}}
00:02:41 <ehird> ais523|sl_busy: Ah.
00:02:44 <ehird> So I need your trick?
00:02:48 <ehird> (What was it, again?)
00:03:15 <ehird> ais523|sl_busy: OK. So should I just give up, or is there hope?
00:03:46 <ais523|sl_busy> 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 <ehird> ais523|sl_busy: Trying your {{!}}
00:04:05 <Sgeo> I think the bug that I used was fixed
00:04:11 <Sgeo> or maybe not a bug
00:04:35 <ehird> {{ {{ {{{1}}} {{!}} {{{3}}} }} {{!}} {{ {{{2}}} {{!}} {{{3}}} }} }}
00:04:51 <ehird> {{{{{{{1}}}{{!}}{{{3}}}}}{{!}}{{{{{2}}}{{!}}{{{3}}}}}}} funnier without whitespace
00:04:52 <ais523|sl_busy> Sgeo: you can do it by trying to subst a non-existent page
00:05:18 <ais523|sl_busy> 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:22 <SimonRC> wht happens if your sig is ~~~~ ?
00:06:30 <ehird> SimonRC: when other people edit the page it becomes their sig
00:06:40 <ehird> mw substs user->sig on ~~~~
00:06:46 <ehird> if user->sig = ~~~~
00:06:50 <ehird> it puts ~~~~ on the page
00:06:53 <ehird> when edited, it sees ~~~~
00:06:55 <ehird> and substs user->sig
00:07:02 <ehird> ais523|sl_busy: because sigs are interp'd for wikicode
00:07:04 <ehird> but yeah, basically.
00:07:11 <ehird> ais523|sl_busy: anyway, I cannot think how to make my templates work
00:07:16 <ehird> if you have any ideas I'd really like to hear them :)
00:08:13 <ais523|sl_busy> it may be possible to do clever things using = on Parser_OldPP, but I don't think that's sufficient for this
00:09:09 <ehird> hey, that's a good idea..
00:09:21 <ehird> if we say that we have args x, y, z for S
00:09:23 <ais523|sl_busy> and yes, you can have a param called 1 or 2 if you like
00:09:36 <ais523|sl_busy> which has interesting interactions with numbered params
00:09:41 <ehird> S = S1|x{{{1}}}{{{2}}}
00:09:49 <ehird> ais523|sl_busy: actually i have no idea how i could utilize that
00:10:23 <ais523|sl_busy> although I used it for Wiki Cyclic Tag for list parsing
00:10:34 <ehird> http://esolangs.org/wiki/FURscript if this had a call procedure command I think it would be turing complete
00:10:38 <ehird> due to lambda calculus hackery
00:12:10 <ais523|sl_busy> [DIRFORMAT="DIRECTORY","BYPASSSECURITY?"] FORMATS A DRIVE AND ASKS WHETHER TO BYPASS ALL RESTRICTIONS
00:12:58 <ais523|sl_busy> 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 <ais523|sl_busy> hmm... there are three comments requesting deletion on the talk page of that page
00:14:19 <ais523|sl_busy> one of them is mine, though, so it would be inappropriate for me to delete it myself
00:14:24 <ehird> its hilariously bad
00:14:36 <ehird> http://pastebin.ca/932888
00:14:41 <ehird> SKI mediawiki thingy
00:14:47 <ehird> a simple statement of the problem
00:14:51 <ehird> so it's easier to think about it
00:15:18 <ais523|sl_busy> so... why not just restart by hand, like with my cyclic tag interp?
00:15:32 <ehird> ais523|sl_busy: Because the more automatic, the cooler.
00:15:36 <ehird> We want mini programs in MW pages!
00:17:18 <ehird> ais523|sl_busy: Hmm
00:17:18 <ehird> {{ {{{1}}} | {{{1}}} }}
00:17:20 <ehird> called with itself
00:17:23 <ehird> returns a link to the template
00:17:28 <ehird> is that how it handles inf loops?
00:17:53 <ais523|sl_busy> if you do it with subst, you get a little HTML comment in the output saying there was a loop
00:18:06 <ais523|sl_busy> hmm... I wonder if it's visible in view source with the nonsubst version?
00:18:33 <ehird> {{ subst: {{{1}}} | {{{1}}} }}
00:18:35 <ehird> how do i make that work
00:19:06 <ais523|sl_busy> it involved editing the template once it had already been set up
00:19:24 <ehird> I don't get what you're saying
00:19:29 <ehird> I tried to make /SKI be that
00:19:33 <ehird> but it just puts that literally.
00:21:13 -!- timotiis has quit ("leaving").
00:23:01 <ais523|sl_busy> 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 <ehird> ais523|sl_busy: not sure
00:29:25 <ais523|sl_busy> an interesting PDF I just came across: http://www.tcs.ifi.lmu.de/~gruberh/data/fun07-final.pdf
00:29:43 <ais523|sl_busy> (that is, ones which are so bad they wouldn't be used in practice, like bogosort)
00:30:29 <SimonRC> wasn't there a website about those
00:30:41 <SimonRC> like intelligent-design sort?
00:32:51 <ais523|sl_busy> 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 <SimonRC> odd that it's more efficient
00:37:30 <ais523|sl_busy> "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:54 <lament> ais523|sl_busy: not as small as it could be!
00:38:35 <ais523|sl_busy> wow, we seem to have been having a lot of TURKEY BOMB discussions later
00:38:43 <SimonRC> and probably in other information theories
00:39:03 <SimonRC> has anyone tried to implement TB?
00:39:21 <ehird> ais523 and I have a project to do so ongoing
00:39:38 <SimonRC> are you implementing it as a programming language or a drinking game?
00:39:42 <ehird> 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 <ais523|sl_busy> SimonRC: it's ehird's project, but they keep trying to credit me with it
00:41:30 <ais523|sl_busy> (which is incidentally the difference between the BSD and MIT licences; BSD disallows other people crediting you for their work)
00:41:46 <SimonRC> BTW, anyone know about DISC profiles?
00:41:49 <ehird> ais523|sl_busy: nooo
00:41:51 <ehird> ais523|sl_busy: I meant
00:41:53 <ehird> you tried to implement it
00:42:07 <SimonRC> I seem to be the classic high D+C
00:42:15 <ais523|sl_busy> although I did generate some useful ideas, and the TCness definitions
00:42:26 <ais523|sl_busy> (at least, it has TC control flow, not sure about data structures)
00:42:28 <lament> we need more quantum languages
00:42:46 <ais523|sl_busy> Quantum INTERCAL turned out to be a cheat; it's actually just a form of multithreading
00:42:48 <SimonRC> the usual one seems to be the raw equations
00:46:13 <lament> halfbits in particular deserve more attention
00:47:02 <SimonRC> 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 <SimonRC> ais523|sl_busy: ITYM sqrt(2)
00:47:53 <SimonRC> most numbers have multiple representations
00:48:08 <ais523|sl_busy> well, why can't I have a number system with a negative number of digits available?
00:48:25 <ais523|sl_busy> or at least, a number of digits somewhere between 0 and 1
00:49:50 <lament> heh, ternary arithmetic:
00:49:51 <lament> 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.
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:41:51 <Sgeo> How do I killall sound or killall flash stuff?
01:42:29 <Sgeo> This is rather urgent, I'm going batty
01:42:41 -!- Corun has joined.
01:43:03 <ehird> Sgeo: Speakers. Mute them.
01:43:17 <Sgeo> But I want to be able to hear other sound
01:43:30 <Sgeo> Just not this sound that is stuck and I can't seem to kill it
01:43:35 <Sgeo> faxathisia, is there any other way?
01:44:34 <Sgeo> What's the thing that GNOME uses for sound?
01:45:18 <Sgeo> I think it's using HALD
01:45:23 <Sgeo> I can't kill that, can I?
01:45:51 <Sgeo> And that sound is STILL playing
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:05:02 <Sgeo> But I want to know what process I could have killed to fix it
02:15:39 <pikhq> http://pikhq.nonlogic.org/kernel.tar.bz2
02:16:56 <Sgeo> Does it support PSOX? </blatant-and-random-self-promotion>
02:17:44 <Slereah> "Would you like it to?" :o
02:20:10 <ehird> Sgeo: Hardly random. Your self-promotion is deterministic: the constant function true.
02:20:36 <Slereah> "Please be kind to our operators: they may not be very intelligent, but they're all we've got."
02:21:11 <Slereah> I'm reading the INTERCAL dow
02:36:17 <pikhq> Sgeo: It doesn't even have *processes*. ;)
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 <Sgeo> pikhq, will it eventually support Python?
02:59:49 <Sgeo> btw PSOX 1.0 spec not finalized, that will come with b1
03:12:01 <GregorR> Hahahah, apparently there's a #jesus on FreeNode X-D
03:12:16 <GregorR> Now 100% F/OSS! Download jesus-prealpha-0.1.tar.gz today!
03:12:40 <Slereah> "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:18:57 <pikhq> Sgeo: Well, it may eventually support POSIX.
03:19:16 <pikhq> By providing enough system calls to support a port of Newlib, of course.
03:40:22 <Slereah> 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 <pikhq> 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:42:51 <pikhq> calamari: Isn't that harder to port?
04:43:08 <pikhq> Newlib is trivial.
04:43:26 <pikhq> 'Provide these functions, and link them with newlib. Voila, you've got newlib working.'
04:45:31 <calamari> http://www.busybox.net/lists/busybox/2005-March/013759.html
04:47:02 -!- Sgeo has quit ("Ex-Chat").
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 <Slereah> http://www.erbzine.com/mag17/1744.html
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:53:28 <Slereah> Sukoshi is a cat program :o
08:53:44 <faxathisia> someone in ##c is telling me to cast isupper/toupper and lower :(
08:53:55 <faxathisia> I'm like no.. that's not a requirement
08:54:14 <Sukoshi> Indeed. Your mom is the requirement!
08:55:44 <Sukoshi> 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 <Sukoshi> Objective: Create a system backdoor.
08:57:06 <Slereah> Can I save a whole bunch of money by switching to Cisco?
08:57:22 <Sukoshi> That depends on the state of your finances.
08:57:38 <Sukoshi> And in which direction the wave function collapses when observing.
08:58:28 -!- Judofyr has joined.
08:59:47 <faxathisia> 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 <Sukoshi> Yep. Which was the idea I was thinking of.
09:00:17 <faxathisia> It's a pretty ugly solution so it fit's whatever you're doing :P
09:00:59 <Sukoshi> I am fomenting a proletariat revolution.
09:01:18 <Sukoshi> The means of production shall be robbed from the capitalists and nationalized into the hands of the People.
09:01:36 <Slereah> Can it wait? My Guy Fawkes mask still hasn't arrived.
09:01:53 <Sukoshi> I need more top hats, see.
09:01:58 <Sukoshi> So the capitalists must fall now.
09:03:19 <faxathisia> Sukoshi: alternatively if they run any PHP server just stick a system($_GET['foo']) somewhere, easy to beam a shell though
09:03:23 <oerjan> hah, who shall produce the top hats if not the capitalists? besides everyone knows only capitalists wear top hats
09:03:30 <Slereah> Capitalists don't wear top hats anymore.
09:03:44 <faxathisia> (that might be wrong .. I probably forgot PHP)
09:03:52 <oerjan> they do in North Korean films. they are the truth, you know!
09:04:13 <Slereah> Do they also sport big moustaches?
09:04:26 <Sukoshi> I can't have a mustache unless I get hormones.
09:04:31 <Sukoshi> I don't really want hormones :\
09:04:37 <Sukoshi> But I still want a top-hat, see.
09:04:48 <oerjan> probably. they are also fat and drink a lot of whisky.
09:05:10 <Slereah> So there are girls on esolangs!
09:06:25 <Sukoshi> I wish these bloody Congressional amendments were easier to find.
09:06:52 <faxathisia> Sukoshi: Are you still using smalltalk? or something else?
09:07:21 <Sukoshi> faxathisia: I wish I had the *time*, really.
09:07:41 <Sukoshi> But when time does open up (and it will), I will do more of it!
09:09:18 <Sukoshi> I've been busy with the Calc III.
09:09:40 <Sukoshi> Well somewhat busy anyway. This weekend my (somewhat self-assigned) homework will start the actual Calculus.
09:09:45 <faxathisia> Sukoshi: Have you seen a proof that √2 exists? :D
09:11:06 <Slereah> Is... this your proof? http://us.metamath.org/mpegif/sqr2re.html
09:11:56 <Slereah> You have to click on each step, and then the steps of the steps for the actual proof from ZFC axioms
09:12:16 <faxathisia> 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:12 <faxathisia> aha! http://en.wikipedia.org/wiki/Intermediate_value_theorem
09:13:34 <Sukoshi> Hah. Interesting. Interesting.
09:13:44 <Sukoshi> But you can use that for most any irrational number.
09:13:46 <Slereah> It be that the two limits at a point are equal, and equal to the function at this point :o
09:14:25 <Slereah> Ø : THE EMPTY SET DOES NOT APPROVE OF YOUR HISSING
09:14:30 <Sukoshi> But irrationals are real ... LOL WUT FAILZ
09:15:13 * faxathisia thinks.. (How can I get Sleareah into Type Theory..)
09:15:28 <Slereah> Hell, I got into set theory by type theory!
09:15:35 <Slereah> Because type theory is horrible
09:15:39 <Slereah> At least the PM type theory.
09:15:55 <Sukoshi> I got into ... electrical engineering ...? :P
09:16:19 <Slereah> But most of the PM is horrible : http://membres.lycos.fr/bewulf/Russell/14.01.jpg
09:16:29 <Slereah> Russell doesn't know dick about making nice notations.
09:16:42 <Sukoshi> That reminds me of my friend's (whose coursework I'm self-studying) extra-credit problem with 4d spheres.
09:17:20 <Slereah> Quite the masterpiece, really
09:17:33 <Slereah> But it's really hard to read, with the notation conventions
09:17:47 <Sukoshi> Someone who hasn't heard of PM?!
09:17:48 <faxathisia> 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 <faxathisia> for some dimension... higher than 3 .. I forgot which
09:20:27 <Sukoshi> Hey, anyone here up for a game of Nomic in parallel with an evolving Prolog mirror?
09:20:55 <oerjan> It has copyright on 0 - it proved it existed
09:21:22 <Slereah> http://membres.lycos.fr/bewulf/Russell/54.jpg <- trhar
09:21:39 <Slereah> (/\ is the old "empty set" notation)
09:22:06 <faxathisia> Sukoshi: What is your intrest in Prolog?
09:22:12 <oerjan> the sphere exactly touches the cube center for n=4
09:22:34 <Sukoshi> faxathisia: I miss it lots.
09:22:50 <Sukoshi> I've been programming bare bones stuff for the longest time ... and Prolog is what I crave, heh.
09:23:15 <Slereah> A friend of mine told me that mercury is moar awesome for logic programming.
09:23:57 <Sukoshi> Well, there are many Prolog implementations out there, and it's widely understood.
09:24:05 <Sukoshi> So maybe it's more convenient. Depending on what yer after.
09:24:42 <faxathisia> I don't think mercury is that wonderful
09:25:13 <Sukoshi> 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 <Slereah> But I'm not sure it's even somehow feasable.
09:26:53 <oerjan> wouldn't that be ... illogical?
09:28:08 <Sukoshi> (Only your mom will tell.)
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 <Slereah> 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 <oklopol> Slereah: you mother, i'm sure
14:24:15 -!- Corun has quit ("This computer has gone to sleep").
14:38:41 -!- ihope has joined.
15:05:56 <faxathisia> Slereah: What are Schofinkel's combinators
15:06:39 <Slereah> And they were created by Schonfinkel
15:07:03 <Slereah> There was S and K back then, yes
15:08:04 <faxathisia> cellular automata aren't turing machines are they?
15:08:52 <Slereah> Well, they can be at least.
15:08:59 <Slereah> Although I think CA are more 60's.
15:09:19 <faxathisia> what does it mean to be between e analytical engine and Schofinkel's combinators?
15:09:35 <Slereah> I was wondering if anything happened between 1890 and 1920
15:09:47 <Slereah> The analytical engine was TC, combinators are.
15:10:07 <Slereah> I was wondering if there's anything between the two
15:10:09 <Slereah> Or if there's a 30 years gap
15:11:13 <ihope> The analytical engine was 1890?
15:15:09 <ihope> What was in 1890, then?
15:16:23 <Slereah> "“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 <Slereah> Is there a table for INTERCAL's unary operators?
15:50:15 <Slereah> I don't understand the manual
15:58:27 -!- ehird has joined.
16:09:01 <ihope> What are its unary operators?
16:15:51 <ihope> Doesn't it do a bit shift left and then and/or/xor or some such?
16:16:47 <Slereah> 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 <Slereah> 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.
17:02:07 <faxathisia> (to-derive (append (cons x xs) y (cons x zs))
17:10:38 -!- Judofyr has quit.
17:11:24 <ehird> (-> append x '() x)
17:11:45 <ehird> (-> append (| x xs) y (| x zs) (append xs y zs))
17:12:00 <ehird> (the extra parens are superflouous, and you really need short names to make prolog readable)
17:12:43 <ehird> it's a statement ->
17:12:49 <ehird> -> is pointing to the truth
17:12:58 <ehird> you're DEFINING what append is
17:13:12 <ehird> faxathisia: Unicode!
17:14:12 <ehird> was using the norweigen oerjan-o instead of the empty set symbol
17:14:16 <ehird> faxathisia: i'll screeny
17:14:25 <ehird> and no, i don't know how to tell xchat aqua to be undumb
17:14:51 <faxathisia> you have to set the option in Server List/Show Details/Connect Options
17:14:58 <ehird> and then reconnect?
17:15:22 <ehird> faxathisia: i'll jsut screeny then
17:15:33 <ehird> yay for Skitch which makes it all nice 'n quick
17:16:02 <ehird> faxathisia: http://img.skitch.com/20080308-tabpr4jgrbrx8q85sk8k95yfqi.png
17:17:17 <ehird> faxathisia: it's awesome
17:17:26 <ehird> You could use the |- unicode symbol
17:17:29 <ehird> For more pretentiousness
17:17:42 <ehird> faxathisia: Write a mode for $EDITOR that transforms -> into the right symbols for it!
17:17:50 <ehird> or just one that has a command to insert a definition
17:18:11 <faxathisia> hmm.. yeah .. I should learn to write emacs modes
17:18:22 <ehird> ?-C ===> (? |name| )
17:18:29 <ehird> |...| is overwrited
17:18:37 <ehird> then a tab or something goes onto the arglist
17:18:44 <ehird> () transforms into that O
17:20:08 <faxathisia> yeah, I think I steall pretty-lambda from schemem mode to do that
17:21:49 <ehird> faxathisia: Um, may I suggest you avoid aligning things in this mode..
17:21:55 <ehird> Unicode characters are proportional, in most monospace fonts.
17:22:01 <ehird> E.g. that /O is wider.
17:22:14 <ehird> faxathisia: But everyone knows proportional fonts for coding rawk, if the font's good.
17:31:36 -!- Judofyr has joined.
17:31:52 <ehird> (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:41:22 <ehird> BREAKING NEWS -- IDIOT FOUND ON INTERNET
17:41:24 <ehird> 'Well, I think that a programming language has to be Turing-complete to be considered a programming language.'
17:41:59 <ehird> faxathisia: reddit is such fun
17:42:16 <ehird> it was far better before they switched to python
17:42:33 <ehird> 'Oh cool, it's like a site where - OH MY GOD IT'S LISP I BETTER LEAVE THE INTELLIGENT PEOPLE ALONE'
17:42:42 <ehird> 'Oh, it's written in Python? Am gud with Python! HAY GUYZ'
17:44:03 <ehird> faxathisia: of course the latest iteration of the site sucks a lot less than lispit :)
17:44:23 <ehird> lisp (good) -> web.py (sucks, because web.py is terrible) -> pylons (awesome)
17:44:31 <ehird> I don't personally like Pylons but it sure makes reddit nice
17:46:09 <faxathisia> looks pretty trivial if you know dhtml or whatever they do that stuff with
17:49:12 <ehird> reddit is written in dhtml now?
17:49:33 <ehird> faxathisia: DHTML is a javascript thingy.
17:49:38 <ehird> Reddit is a whole site.
17:49:42 <faxathisia> I mean you just need some javascript and the rest is trivial
17:49:59 <ehird> the only JS used is optional, and for the fancy reply box thingies.
17:50:56 <ehird> Anyway, reddit isn't open source, you couldn't look at its source if you wanted to.
17:51:23 <ehird> faxathisia: do you even.. know what reddit is
17:51:31 <ehird> why did you imply that reddit is mostly javascript?!
17:51:35 <ehird> that makes NO SENSE
17:52:16 <ehird> faxathisia: seriously, WTF
17:52:22 <fizzie> Why does this disuccsion remind me of a train wreck?
17:52:36 <ehird> highlight what major part of reddit you believe to be javascript?!
17:52:45 <ehird> fizzie: faxathisia's driving, I guess.
17:52:46 <faxathisia> but I could write reddit except for the dynamic HTML stuff
17:52:59 <ehird> you could write it, but not all its features.
17:53:08 <ehird> e.g. the rating algorithm.
17:53:18 <ehird> which is very finely tuned over years of, you know, loads of traffic.
17:53:39 <ehird> Theorem: Just because the interface to something is simple, does not mean that the thing itself is simple or easily replicated.
18:01:34 <Judofyr> ehird: Does you know what Judofyr means?
18:04:45 <ehird> I was just quoting Look Around You
18:05:05 <Judofyr> it's sort fo Karate Kid :P
18:05:16 <ehird> Thanks, ${name}. Th${name[first_vowel(name)..]}.
18:07:47 <ehird> faxathisia: by the way
18:07:55 <ehird> I had this crazy crazy idea last night
18:07:56 <ehird> but it's really long
18:08:02 <ehird> and i don't wanna flood #esoteric
18:08:18 <ehird> faxathisia: an esolang
18:08:20 <ehird> but it's not just a language
18:08:24 <ehird> it's.. ahrd to explain
18:08:32 <ehird> #nodist, i'll explain there
18:39:27 -!- oerjan has joined.
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:45 <ehird> this is why you configure sudos timeout to 0
19:30:14 <AnMaster> my funge98 interpreter in bash does get to the end of mycology, with a few BAD though, but it doesn't die
19:31:53 <AnMaster> (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:40:16 * SimonRC admires type theory notation
19:41:00 <SimonRC> I don't want readability in my math. I want a hugely complex slightly ugly pile of symbols for maximal intimidation effect.
19:43:28 <ehird> SimonRC: Most people would agree, sans the 'type theory' part.
19:43:32 <SimonRC> Slereah: what are these "Schofinkel's combinators"?
19:43:39 <ehird> s///ing it with 'maths'
19:44:57 <AnMaster> Deewiant, btw a question: in the mycology readme, at each extension is listed a hexdecimal number, what is it for?
19:47:47 <ehird> AnMaster: its fingerprint code
19:47:55 <ehird> which is the 4 ascii chars concatted together in hex
19:49:54 <SimonRC> that is the algo given in the F98 spec, ISTR
19:50:16 <SimonRC> though F98 has some allowance for longer codes, doesn't it?
19:50:21 <ehird> 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 <ehird> So much stuff uses it. :-)
19:50:32 <ehird> It's like BCD, except it's ASCII Coded Hex
20:04:05 <GregorR> <ehird> It's like BCD, except it's ASCII Coded Hex
20:04:12 <GregorR> So, it's the same in that ... it's coded.
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 <ehird> SimonRC: It's a conspiracy
20:09:08 <oerjan> obviously they come from a mirror world
20:09:31 <oerjan> they are refugees - the only ones that were not evil and had goatees
20:09:59 <ehird> #esoteric is great
20:10:08 <ehird> hmm, one more subdomain I need -- http://qdb.eso-std.org/
20:11:58 <SimonRC> 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:12 <SimonRC> http://www.erbzine.com/mag17/1744a.html
20:12:36 <SimonRC> read part 1 first, I recommend
20:16:00 <SimonRC> the style's called "ha ha only serious"
20:16:01 <oerjan> IT'S THE UNTARNISHED TRUTH YOU HEAR
20:16:13 <ehird> SimonRC: it's incredibly hard to detect
20:16:24 <SimonRC> they are taking serious thinking tools to a silly question
20:16:33 <ehird> 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 <ehird> but I am *dying* without expose & 3d smooth scrolling
20:17:47 * ehird is a spoilt mac luser
20:18:00 <oerjan> i thought "ha ha only serious" meant a joke that was more serious than it appeared
20:18:23 <ehird> imagine a post making ridiculously overboard statements about windows
20:18:29 <ehird> but the basic concept behind them is actually true in windows
20:18:38 <oerjan> not using a serious style to investigate something foolish, but rather the reverse
20:18:54 <ehird> I think the essence of 'ha ha only serious' is that to truly define it properly, you need to utilize it
20:19:05 <oerjan> so i fail to see how anything about muppets can qualify :D
20:19:07 <ehird> which creates somewhat of a bootstrapping problem when nobody well-versed in using it proficiently is to hand
20:19:52 <oerjan> clearly it needs to be taught from kindergarten
20:22:14 -!- sebbu2 has changed nick to sebbu.
20:23:38 <SimonRC> 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 <ehird> func.func_globals = MiniFluff(func.func_globals)
20:24:13 <ehird> TypeError: readonly attribute
20:24:17 <ehird> my hacks are foiled!!!!!
20:28:21 -!- jix has joined.
20:37:25 <ehird> SimonRC: me tryingh to do evil
20:37:57 <ehird> specifically, i'm trying to change a function's closure
20:38:13 <ehird> 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:06 <ehird> i think Nodist's operations may be halting-problem
22:39:11 <ehird> SimonRC: someone who has #nodist logs will give you the explanation i gave
22:40:37 <SimonRC> the explanation you gave? You didn't explain it to me
22:41:28 <oerjan> IT'S NEKKID PROGRAMMING
22:41:47 <SimonRC> ehird: and why are you trying to modify a function rather than adding __call__
22:41:50 <ehird> SimonRC: I did in #nodist
22:41:57 <ehird> and because the function was given to me
22:42:01 <ehird> and yes, i know that's horrid
22:42:03 <ehird> i was just feeling evil
22:42:06 <ehird> I was evil-golfing the code
22:42:12 <ehird> (try to add as much evil as possible)
22:43:03 <oerjan> ehird has no talent for evil
22:43:06 -!- ehird has left (?).
22:43:10 -!- ehird has joined.
22:43:13 <ehird> who just asid what
22:43:28 <ehird> oh and SimonRC http://rafb.net/p/fW8hqI64.html
22:43:47 <oerjan> i was insulting you behind your back
22:44:07 <SimonRC> we said, for one time only, the meaning of life
22:44:31 * ehird hits ircbrowse.com
22:48:31 <SimonRC> but it seems some of the conversation is missing
22:49:45 <oerjan> darn, urbandictionary has a definition for snese
23:22:21 -!- jix has quit ("CommandQ").
23:28:57 -!- oerjan has quit ("Good night").
23:50:31 -!- Corun has quit ("Leaving").
00:05:38 -!- timotiis has quit ("leaving").
00:47:11 <ehird> http://impomatic.blogspot.com/
00:47:17 <ehird> it's TAOCP in Redcode
00:47:21 <ehird> we need one of them for Brainfuck
01:07:07 <ehird> awesome esolang idea:
01:07:09 <ehird> based on surreal numbers.
01:13:41 <ihope> "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:57 <ihope> It'd be interesting to try to compute with Collatz sequences.
01:20:00 <ihope> Start with an integer. Add its left-shift, increment, shift right as far as possible, repeat.
01:21:56 <ihope> Or perhaps an esolang based on neural nets.
01:38:54 <Sukoshi> The latter is an idea I had.
01:42:10 <ihope> We need a really novel idea.
01:42:16 * ihope searches Wikipedia for a really novel idea
01:42:57 <ihope> Really novel idea: Charles C. Comstock. Let's make an esolang based on Charles C. Comstock.
01:45:21 <Slereah> SimonRC: Regular combinators :o
01:48:12 <Slereah> <SimonRC> Slereah: what are these "Schofinkel's combinators"?
01:48:33 <Slereah> I can never remember the spellin
02:04:51 <ihope> An esolang based on Go, how about.
02:06:30 <Slereah> IIRC, the earliest simulations were done on a Go board ":0)
02:06:51 <ihope> We find a Conway's Life universal constructor and make an esolang to control it.
02:07:48 <Slereah> Something like set of rules-input?
02:08:41 <Sukoshi> How about a game of Nomic with a Prolog mirror?
02:09:26 <pikhq> ihope: Step one: universal constructor.
02:09:41 <Slereah> Well, a game of life is defined by the rules governing the life-death of cells
02:09:42 <ihope> Thank you. I'll begin work immediately.
02:10:36 <Sukoshi> A Prolog mirror that we work on continuously.
02:11:04 <ihope> Sukoshi: what do you mean by a mirror?
02:11:26 <Sukoshi> It mirrors the progress of the Nomic game.
02:11:41 <Sukoshi> As in, we write our Nomic laws as clauses in Prolog.
02:11:53 <ihope> Does anyone here have a copy of Winning Ways for your Mathematical Plays?
02:12:06 <ihope> I know of two computer nomics. I don't think either has enough players. :-)
02:12:33 <ehird> WHOA Sukoshi is here
02:12:41 <ehird> we all thought you died :|
02:13:03 <Sukoshi> No, at the moment I'm browsing portions of our school website that shouldn't be browsed.
02:13:08 <ihope> 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 <pikhq> Sukoshi: Hey, you're here again!
02:14:10 <pikhq> I have an OS kernel in progress. :)
02:14:18 <pikhq> http://pikhq.nonlogic.org/kernel.tar.bz2
02:15:10 <ehird> pikhq: Challenge: make it run gcc.
02:15:30 <ehird> 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 <ehird> and could compile bash, iirc
02:15:58 <Sukoshi> Darn it. I have to crack this Tomcat password.
02:16:17 <ehird> Sukoshi: Try throwing coffee at it.
02:16:20 <Sukoshi> Maybe I should just sniff the password using the machine farm at school I have control over.
02:17:05 <pikhq> ehird: That's the goal, actually.
02:17:15 <ehird> pikhq: Awesomecakes.
02:17:23 <pikhq> Sukoshi: :) Nice progress on that prank. :D
02:17:34 <ehird> I would start an OS project again if I didn't sux0r at asm
02:17:48 <Sukoshi> The gradebook was the easy part, meh.
02:17:53 <ehird> pikhq: however, I can probably identify EXACTLY which tutorial you are using
02:17:59 <ehird> i see very familiar code
02:18:03 <pikhq> ehird: Except that I'm not using it.
02:18:15 <pikhq> I used it to get the multiboot header, Makefile, and linker script.
02:18:17 <Sukoshi> I have 1 goal fully fulfilled. The second goal partially fulfilled. The third goal is getting some progress.
02:18:25 <pikhq> Everything else, I've been reading up on documentation.
02:18:49 <pikhq> (frankly, that tutorial sucks. 'Just copy this code!!!' *Ugh*.)
02:19:06 <ehird> pikhq: the idea is that you should be able to easily find out what the code doe
02:19:09 <ihope> You're creating a kernel?
02:19:10 <ehird> the info is in the x86 layout stuff
02:19:34 <pikhq> I spent most of the past week figuring out what the fuck to do with the GDT. . .
02:19:37 <ihope> Well, I think there was supposed to be some universal constructor stuff included with Golly.
02:19:43 <ehird> pikhq: Yes, the GDT is fux0red.
02:19:45 <pikhq> If I'd followed that tutorial, I'd be fairly clueless still.
02:19:52 <pikhq> I did it on my own, so I grok it.
02:19:53 <ehird> pikhq: Done the interrupt handlers yet?
02:20:00 <ehird> 435345345 repetitive functions in asm.
02:20:00 <pikhq> Painful, but worth it.
02:20:23 <pikhq> Although I want to read up on nasm's macro features first.
02:20:27 <ehird> pikhq: Um that package is a bit minimal for what I can see
02:20:38 <ehird> Are you sure it was justified to put it in a .tar.bz2 and upload it somewhere? :p
02:21:03 <pikhq> I just want to be able to say 'Oooh, shiny.'
02:21:11 <ehird> pikhq: I think your KPORT_H might break at some point
02:21:17 <ehird> make it a #define?
02:21:41 <pikhq> Use __attribute__((always_inline))? :p
02:21:50 <ehird> return 0xDEADBEEF;
02:22:04 <ehird> (solaris coredump magicnum)
02:22:09 <ihope> Why is the file called kernel.tar.bz2.tar, I wonder...
02:22:31 <pikhq> I think you suck. That's not what's on my server. ;)
02:22:42 <ihope> I delegate the suckiness onto my computer.
02:23:07 <pikhq> I agree with your delegation.
02:23:28 <ehird> pikhq: Once you've got a gcc on there, write your own text editor.
02:23:41 <ehird> Using a pre-written text-editor to develop your OS stuff in your os sux0r.
02:23:44 <ehird> You must write your own!
02:24:01 <ehird> (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 <ehird> 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 <ehird> gotta add non-existant eso-std.org domains before someone does something or other while i write them!
02:26:17 <ihope> You evil, evil persono, you.
02:26:42 * pikhq adds __attribute__((always_inline)) in kport.h
02:26:54 <ehird> don't depend on gcc
02:27:04 <ehird> you could be one of the only modern OSs not to
02:27:14 <ehird> if you write your own cc, you could probably even make it compile your kernel!
02:27:21 <pikhq> There *is* one other OS that doesn't depend upon GCC. . .
02:27:24 <ehird> c'monnnn, make 'em defines or put the definitions in a c file ;)
02:27:29 <ehird> pikhq: what, plan9? :p
02:27:34 <pikhq> Of course, whether Windows is *modern* is a matter of taste. :p
02:27:46 <ehird> i don't really consider windows an os
02:27:59 <pikhq> I consider it a really *bad* VMS clone.
02:28:11 <ehird> Comparing windows to vms?
02:28:16 <pikhq> With Win32 thrown in for God-knows-why.
02:28:36 <ehird> pikhq: Hmm, do you actually use a vcs or are you a archive-up hobo like rodger :p
02:28:48 <pikhq> Windows NT has a biological link to VMS. . .
02:28:53 <pikhq> ehird: ATM, archive-up hobo.
02:29:01 <ehird> pikhq: Git. Srsly.
02:29:05 <pikhq> I plan to set up SVN when I get around to it.
02:29:15 <ihope> 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 <ehird> version control systems without the 'lulz, server' or the 'lulz, molasses' or the 'lulz, in-the-way' parts.
02:29:31 <pikhq> ihope: I don't think I have twelve months yet.
02:29:38 <ihope> Er, Minister Without Portfolio.
02:29:39 <pikhq> I should have six months' coming up in a bit.
02:29:44 * ehird is a Champion! Yaaaaay.
02:30:01 <pikhq> Also: I'm the only Agoran entitled to grant Champion.
02:30:06 <pikhq> And only when someone wins.
02:30:19 <pikhq> I'm also the only person required to *record* a win.
02:30:28 <pikhq> ihope and I are both Agorans.
02:30:33 <pikhq> oerjan is a former Agoran.
02:30:53 <pikhq> www.agoranomic.org
02:30:54 <ihope> And you're a former B'an, and I'm a former former B'an. :-P
02:31:21 <ehird> #esoteric is like the turnpike of the internet
02:31:26 <ehird> the nerdy internet
02:31:30 <ehird> nerdy, mathematical internet
02:31:52 <ihope> We're the smartest people in the world! Kind of.
02:35:22 <pikhq> Via patrino estas patrifikulon.
02:35:38 <ihope> ¿Por qué estamos hablando en otras however-you-want-to-say-"language"-today?
02:36:01 <lament> tu mama esta hablando en otras idiomas
02:36:55 <Sukoshi> Anta no LULZ ga Ookiku natta.
02:37:16 <pikhq> Belgium, man, belgium!
02:38:43 <olsner> yare yare, konna ni natte shimatte...
02:39:12 <pikhq> . . . Okay, that's 3 Japanese speakers here.
02:39:46 <pikhq> Ja, sore ha koko ni sanjin no nihongo wo hanaseru hito ga iru. . .
02:41:55 <pikhq> http://www.verizonmath.com/checkyourmath.htm
02:42:39 <Sukoshi> Kurumayoi ni NOTTE! Bishounen no sonzai wo UBARECHA-U!
02:43:25 <olsner> Sukoshi: henna koto iwanaide yo
02:43:52 <olsner> pikhq: writing boot loaders are we?
02:44:15 <ihope> Yay, someone spoke English!
02:44:17 * SimonRC tries Japanese too: box box box box box box box box box box
02:44:22 <Sukoshi> Anyone here play with Haiku, by the by?
02:44:38 <ihope> Neko pan wa desu desu pan wa desu... um... domo arigato.
02:45:01 <Sukoshi> Pan bread is. Pan bread is. Many thanks.
02:45:33 <Sukoshi> pikhq: How is the State of the Development there?
02:45:54 <ehird> I don't speak Japanese, but I ought to, because I've wanted to for years
02:45:56 <pikhq> Sukoshi: I have it set up to realise the difference between user-mode and kernel-mode.
02:46:02 <ehird> Also, because 3 people is practically *peer pressure*! :D
02:46:11 <pikhq> And it makes me wonder what doing, say, jmp 0x08:0x00 would do.
02:46:37 <Sukoshi> Well I heard threads were there like water.
02:46:50 <olsner> ehird: learning japanese gives you access to whole internets full of desu
02:46:55 <pikhq> I'm going to test it.
02:47:56 <ehird> olsner: just what i've always wanted
02:48:49 <pikhq> Apparently, gas doesn't much like long jumps.
02:49:01 <olsner> as an added bonus, you'll be able to more fully enjoy your wednesdesus
02:49:09 <Sukoshi> pikhq: Bootstrap a low-level FORTH onto it.
02:49:42 <ehird> olsner: and desu the desus on the desuweb?
02:50:25 <pikhq> Why can't I do that? :(
02:50:45 <olsner> are you sure you want to jump to address 0?
02:50:46 <ehird> olsner: Does it empower the desus on my Haskell desu?
02:50:52 <pikhq> olsner: Just testing.
02:51:00 <pikhq> Technically, that's address 0 in kernel mode.
02:51:20 <pikhq> Well, assuming they have GDT[8] for their ring 0 code segment. . .
02:51:25 * pikhq pulls up the Linux source
02:51:41 <Sukoshi> Are you testing wiht QEMU, pikhq ?
02:52:02 <ehird> pikhq: try linux 0.1
02:52:05 <ehird> it's very understandable
02:52:26 <pikhq> Because I use Gentoo, and Qemu still doesn't build with GCC 4.
02:53:02 <pikhq> All I want is the bit that loads the GDT.
02:53:27 <pikhq> Maybe it's in the kernel entry point?
02:53:35 <ehird> pikhq: Gentoo? aarrgh
02:54:03 <ehird> f unroll loops! f unroll loooops!
02:55:03 * olsner knows too little of the specifics to be of much help
03:05:49 <olsner> lol, I believe I've just found the bug in the bootloader/"operating system" I was working on in 2003
03:06:43 <pikhq> Well, *that's* bizarre.
03:06:48 <pikhq> Linux has a vm86 handler.
03:07:04 <olsner> 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:46 <pikhq> Linux has the world's *worst* way of going back into the BIOS to reboot.
03:10:16 <pikhq> 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 <lament> so i'm reading HTDP... and it seems so far that Haskell would be a more appropriate language for the book
03:15:48 <lament> but it didn't get to the macros yet (i don't know if it ever does)
03:20:19 <SimonRC> such bad taste, yet so funny: http://img.lulz.net/src/09_podborka_36.jpg
03:22:19 <lament> very hard to tell black pieces apart
03:24:00 <Slereah> "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: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:34:38 -!- slereah_ has joined.
04:35:48 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
04:41:37 <Sukoshi> Well, 05:30 isn't bad, but 04:30 is.
04:42:11 -!- poiuy_qwert has joined.
04:43:18 <pikhq> 05:30 just implies a nocturnal schedule.
04:44:24 <Sukoshi> 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 <slereah__> "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:03:47 <Sukoshi> Like a lot of things on this channel? ;)
08:04:46 <slereah__> Plenty of ideas thrown around to end up in the trash!
08:04:56 <slereah__> 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 <ehird> when i left here before
08:15:06 <ehird> my intention was to sleep
08:15:13 <ehird> i would like to make it clear that this did not happen
08:31:44 <ehird> By the time I was ready it was after 7
08:31:50 <ehird> No point sleeping after a time like that.
08:37:28 <Sukoshi> Hm. I wish pikhq was around.
08:37:55 <slereah__> Be careful whatr you wish for, or it might just happen :o
08:42:41 <faxathisia> squaring the circle is easy assuming π = 4
08:43:24 <slereah__> Or just using your ruler, with the pi graduation
08:44:28 <slereah__> Or just be a dick like Kronecker, and say that irrationals don't exist.
08:47:16 <faxathisia> When Lindemann proved that π is transcendental in 1882 Kronecker said
08:47:17 <faxathisia> Of what use is your beautiful investigation of π. Why study such problems when irrational numbers do not exist.
08:48:55 <slereah__> Cantor also had problems with Kronecker.
08:49:01 <slereah__> Because Kronecker was a giant dick.
08:49:15 <faxathisia> construct a square with the same area as a circle
08:49:19 <slereah__> Sukoshi: You take a circle, and you transform it into a square with the same perimeter
08:50:07 <slereah__> Kronecker had this notions that only integers really existed.
08:50:14 <faxathisia> I think Kronecker is right, intuitionism is great..
08:50:31 <faxathisia> (there are finite constructions of the reals now)
08:50:55 <faxathisia> but it's fine to take axioms and construct them later on
08:51:57 <faxathisia> 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 <ehird> slereah__: [08:49] <slereah__> Because Kronecker was a giant dick.
08:55:07 <ehird> My mind read 'was' as 'had'
08:55:11 <ehird> Because of sleep-lack
09:00:25 <Sukoshi> faxathisia: What if I got into law?
09:00:34 <Sukoshi> I'm just looking for an opinion here :P
09:01:21 <faxathisia> 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 <slereah__> Does it involve neat uniforms and a lawgiver, and killing mutants?
09:02:09 <Sukoshi> I'm considering law. I still love science, but I love law too and am good at it too.
09:02:18 <ehird> Sukoshi: you cannot abadon
09:02:21 <Sukoshi> faxathisia: Think of it this way. Law is logic.
09:02:43 <Sukoshi> Except it's not just horn clauses in theory. It's horn clauses in practice.
09:04:30 <Sukoshi> (Come on. You had that coming.)
09:04:55 <Sukoshi> faxathisia: At least, that's how I view law. From a logic perspective.
09:05:18 <ehird> S.C.I.E.N.C.E. SCIENCE
09:05:30 <ehird> S.C.I.E.N.C.E. = SCIENCE CIENCE IENCE ENCE NCE C E
09:05:37 <Sukoshi> Stop saying that while I'm hacking Java code. You're making me feel dirty :P
09:06:49 <slereah__> Saying it is related to logic is lies :o
09:06:55 <faxathisia> (anyone know this ? http://www.cs.cmu.edu/~fp/lollimon/ )
09:07:16 <ehird> Sukoshi: The Java is the gateway to EVIL and SUPERSTITION
09:07:23 <ehird> NATURE'S FOUR-DAY HARMONIOUS TIME CUBE
09:07:29 <Sukoshi> It's actually just incredibly boring.
09:07:47 <Sukoshi> 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 <Sukoshi> But I have an exam to study for, so meh.
09:09:20 <Sukoshi> GTK is great. I heard QT is a lot better though.
09:09:59 <faxathisia> I have a feeling that McCLIM is really really good .. if you know it inside out
09:10:14 <faxathisia> but I don't know this, not used it enough
09:11:49 <Sukoshi> I've heard McCLIM suffered from overkill syndrome.
09:12:14 <Sukoshi> I love how simple/abstract GTK is.
09:13:24 <faxathisia> also HTML is useful sometimes (by running a local webserver)
09:13:41 <Sukoshi> (defgeneric add (container widget)) <-- That's basically the work horse of GTK.
09:14:07 <ehird> Sukoshi: HOWEVER, gtk sux0r in its actual widgetness.
09:14:12 <ehird> e.g. see: gtk+os x
09:14:23 <Sukoshi> Oh, you mean cross-platform issues?
09:14:34 <ehird> and i personally don't like the look-'n-feel on x11
09:14:36 <Sukoshi> I don't doubt that. It's meant to be a Linux thing, heh.
09:14:36 <ehird> but that's just me
09:14:46 <ehird> Sukoshi: still the windows support is passable
09:15:30 <ehird> and, although that 'add container widgt' is simple
09:15:33 <ehird> a nested structure model is far better
09:15:47 <ehird> for languages with no brain -- like c -- you can build it up with some kind of add operation ;)
09:15:56 <ehird> Sukoshi: it's like this:
09:16:10 <ehird> totally tedious way of working
09:16:17 <ehird> when widgets are inherently nested
09:16:23 <ehird> they should be treated as such
09:16:32 <ehird> not as matryoshka dolls
09:17:20 <faxathisia> it's just the difference between imperative and declarative
09:19:35 <Sukoshi> 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:49 <Sukoshi> Swing attempts that with its content panes.
09:20:02 <ehird> 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 <ehird> Sukoshi: well, come on, Swing anything is not a good comparison
09:20:25 <ehird> really, gui toolkits right now are unbearable
09:20:26 <Sukoshi> I like the flexibility of a generic (add)
09:20:32 <ehird> cocoa might be ok, i haven't tried it
09:20:43 <ehird> but from what i've seen, they all overcomplicate the simple stuff and oversimplify the complicated stuff
09:20:54 <ehird> & think in terms of C or some other similar language only
09:21:09 <ehird> instead of having a higher-level abstract data model with the c/whatever imperative-style implementation being decoupled
09:24:36 <ehird> Sukoshi: But not structured.
09:24:47 <ehird> It is too implementation-centric to be the basis of a toolkit.
09:25:13 <ehird> because it is tied into the imperative style
09:25:14 <Sukoshi> Why can't it be used in every implementation?
09:25:18 <ehird> add this, then add this
09:25:33 <ehird> instead, the toolkit's design should be on a nested, declarative structure
09:25:34 <Sukoshi> What structure would you propose then?
09:25:42 <ehird> in a functional or similar language, it would just be the nested tree
09:25:45 <ehird> sure, for C, you need add().
09:25:49 <Sukoshi> See, I've never had a bone with mixing functional or declarative with imperative.
09:25:50 <ehird> that's just an implementation detail.
09:25:59 <ehird> the actual model should be based on nested structures,
09:26:04 <ehird> because in the end that's what it will produce.
09:26:15 <ehird> Sukoshi: Well, yes, except that using XML for a gui is a henious crime :)
09:26:17 <Sukoshi> XML is horrible, but that point aside.
09:26:30 <ehird> Also, s-expressions might be a non-horrible example, if you're in need of one. :p
09:29:49 <faxathisia> XML should be fine as a file format, if you have a GUI program to edit GUIs
09:33:02 * faxathisia tries to learn lollimon by staring at example code
09:34:56 <ehird> faxathisia: mcclim is kinda eww
09:41:30 <faxathisia> from ##C 'The first rule about large software projects is "don't make large software projects".'
09:42:54 <ehird> faxathisia: ##c is the source of such wisdom and clarity
09:42:58 <ehird> and is totally not filled with rambling idiots
09:43:53 <ehird> faxathisia: i could probably rank ##c-ers by idiocy, elitisim and plain retardedness
09:44:01 <ehird> you'd probably be at the bottom, though :)
09:44:05 <ehird> (#1: poppavic. no competition.)
09:44:22 <ehird> someone should make a random number generator based on poppavic's 'sense-o-meter'
09:58:42 <ehird> faxathisia: what's that
09:58:50 <ehird> I like elegant nondeterminism
09:59:29 <ehird> googling lollimon gives me an irc lo of #haskell
09:59:30 <ehird> Gwern"lollimon - gotta rape'em all..."
09:59:40 <ehird> i laughed far too much at that
09:59:49 <ehird> early morning... kind of when you have not slept :-P
11:00:48 <Sukoshi> 19 lines of variable declarations.
11:00:53 <Sukoshi> Heh, this class is made of win.
11:01:02 <ehird> Sukoshi: Your whole family is made of meat.
11:02:30 <Sukoshi> Nah. It has side effects faxathisia, so it is made of FALE :P
11:02:52 <ehird> it desperately tries to be a functional language
11:02:54 <ehird> but fails miserably
11:02:58 * faxathisia sits out till haskell enthusiasm dies out
11:03:44 <ehird> Hey, I'm not a haskell fanboi
11:05:13 -!- RedDak has joined.
11:07:46 <faxathisia> Sukoshi & ehird, you should read Dijkstra - A Discipline of Programming
11:07:47 <faxathisia> if you think side effects are not good
11:08:09 <faxathisia> (or if you just want to read a good book)
11:08:12 <ehird> faxathisia: Hey, I do like side effects.
11:08:18 <ehird> I just also like Haskell.
11:08:18 <Sukoshi> But hey, it's by Dijkstra.
11:08:34 <Sukoshi> I got into Haskell for a while. I left. I tried to get back in, but failed.
11:08:40 <ehird> I like both styles of programming
11:08:49 <ehird> though I tend to think functionally, and code it out imperatively
11:09:27 <Sukoshi> I sincerely wish Java had structs.
11:09:33 <Sukoshi> Why, oh why, does Java not have structs.
11:09:46 <Sukoshi> Actually wait. Why, oh why, does Java have to have one public class per file.
11:09:46 <ehird> Sukoshi: Because Java is retarded.
11:09:59 <Sukoshi> This is studying for a test that uses Java.
11:10:04 <Sukoshi> So the app needs to be in Java.
11:10:44 <faxathisia> ehird: A haskell implementation of lollimon would be a good thing :O
11:10:47 <ehird> Sukoshi: You could decompile Scala's output bytecode into Java.
11:11:21 <Sukoshi> Plus hey, some people might find this app useful.
11:11:28 <Sukoshi> It's a Direct Connect client.
11:11:45 -!- Judofyr has quit.
11:12:08 -!- Judofyr has joined.
11:14:56 -!- faxathisia has quit ("-").
11:15:42 <Sukoshi> I'd be a weeaboo if I actually like Japanese weather or Japanese politics.
11:15:54 <Sukoshi> ... Or Japanese traditional family life, or Japanese social life, or ....
11:16:00 <Sukoshi> Well you get the picture :)
11:17:23 <slereah__> Well, that's weeaboo enough for me :D
11:17:40 -!- Judofyr has quit.
11:17:58 <ehird> JAPANESE WEATHER IS SUPERIOR TO WEATHER IN ALL OTHER COUNTRIES
11:19:18 <Sukoshi> Aww. Gundam 00 is fun and interesting and political.
11:19:37 <Sukoshi> I mean come on, I'm on the side of the HRL.
11:19:46 <Sukoshi> Go Socialism! Yah! Yah! Yah!
11:23:09 <ehird> JAPANESE TRADITIONAL FAMILY LIFE IS SUPERIOR TO JAPANESE TRADITIONAL FAMILY LIFE IN ALL OTHER COUNTRIES
11:23:51 -!- Sukoshi has left (?).
11:23:57 * slereah__ can't think of one jap scientist :o
11:24:23 <ehird> JAPANESE SCIENCE IS SUPERIOR TO JAPANESE SCIENCE IN ALL OTHER COUNTRIES
11:24:50 <ehird> JAPANESE RECYCLING --
11:25:28 <ehird> JAPANESE GETTING IN TROUBLE --
11:29:28 <ehird> JAPANESE SUSPENSION
11:30:52 <ehird> <pikhq>They have a *char[]* of bytes that represent the machine code required to go back to 16-bit mode.
11:30:54 <ehird> pikhq: that's not stupid
11:31:03 <ehird> when you want arbitary machine code, you store it in char*
11:32:39 <ehird> i keep sseeing things i said
11:32:43 <ehird> which i think 'crap that was like two days ago'
11:32:51 <ehird> but it was in this awake-session because aaah i've been up too long :<
11:51:42 -!- faxathisia has joined.
11:54:29 <ehird> 'INTERCAL and Malbolge (and perhaps Java) are steps toward the ultimate barrier of programming. But they don't rely on *chance*.'
11:54:44 <ehird> that has to be the most devilish language i evevr came up with and then forgot
11:55:18 <ehird> slereah__: sry. that's basically the onlny thing left of it
11:55:22 <ehird> I never made the catual languae i think :(
11:55:35 <ehird> I apologize for my spelling, I can barely type.
11:55:54 <ehird> sdfjkhsjkgdfg i keep typing 'cat ..'
11:56:05 <ehird> be hellish at programming, but rely on *chance* for many operations
11:59:49 <ehird> Joy quotations AREN'T lists, are they?
11:59:53 <ehird> for one simple reason --
12:00:04 <ehird> 'foo' isn't representable as any object in Joy
12:00:09 <ehird> thus quotations must be of an AST instances
12:00:14 <ehird> which is Name | Literal
12:00:18 <ehird> where Literal = Object
12:06:03 -!- jix has joined.
12:22:19 -!- oerjan has joined.
12:39:02 -!- timotiis has joined.
13:27:47 <slereah__> Even the passenger gets in trouble!
13:27:51 * oerjan saw you running out of english alphabet, so he assisted
13:30:58 <faxathisia> http://www.lawlforkids.com/d/3058-1/wait.png
13:31:29 -!- oerjan has quit ("I got the last word BWAHAHA").
13:31:51 <slereah__> The strangest thing is that kid that yells "Fight!"
13:32:03 <slereah__> 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: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 <pikhq> ehird: Sure it's stupid.
15:24:04 <pikhq> Just because there's some way of using it doesn't make it less stupid.
15:24:12 <pikhq> The asm keyword is in GCC for a reason.
15:24:17 <pikhq> And yes, Linux uses it.
15:30:44 <ehird> pikhq: I assure you there will be a good reason.
15:30:48 <ehird> WHy not post on the lkml?
15:31:22 -!- Corun has joined.
16:12:45 -!- RedDak has quit (Remote closed the connection).
16:30:18 -!- Tritonio_ has quit (Remote closed the connection).
17:16:06 <ehird> knuthtex is a single 1mb source file
17:18:20 <olsner> but it's literal programming, so it's easy to read! *cough*
17:19:13 <ehird> olsner: actually the pascal has so many embedded WEB instructions that it's almost impossible to even if you filter out the docs
17:20:14 <ehird> what's that really trivial pascal dialect thingy?
17:20:15 <olsner> heh, yeah, I've found it a golden example of failed application of literate programming
17:20:25 <ehird> the bnf is just a page or so long
17:20:29 <ehird> olsner: thank god nobody uses knuthtex, eh? ;)
17:23:07 <ehird> so if you imagine PL/0 + parameters to functions + some control structures (repeat...while, etc) + arrays..
17:23:11 <ehird> knuth would be overjoyed ;)
17:30:35 <AnMaster> 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 <AnMaster> anyone know a good sparse matrix library for C? The ones I found are all C++ :/
17:32:19 <olsner> this channel isn't often on topic anyway... besides, if befunge is involved in any way whatsoever it's definitely on topic :P
17:33:47 <Slereah> Hell, what is the topic anyway!
17:34:46 <olsner> 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 <olsner> btw, qdb.eso-std.org doesn't work though mentioned in the topic
17:35:23 <AnMaster> olsner, but you don't know an answer to my question?
17:36:07 <AnMaster> I need some kind of sparse matrix for funge-space
17:36:10 <olsner> 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:59 <olsner> hmm, I guess linear algebra/numerics => fortran in my database of stereotypes
17:37:15 <AnMaster> ah. but well this isn't algebra
17:37:26 <ehird> olsner: .eso-std.org is not all up yet
17:38:26 <oklopol> oh, you don't actually have it yet?
17:38:30 <ehird> i have eso-std.org
17:38:34 <ehird> but i cba to set it all up
17:39:21 <oklopol> thought it was a name server delay or something
17:39:58 <olsner> laziness got the best of you, eh? someone needs to have his thunks forced...
17:42:18 <ehird> that sounds painful
17:42:48 <AnMaster> ehird, do you have any idea about sparse matrix in C?
17:49:57 <ehird> faxathisia: hey you
17:50:00 <ehird> debug my prolog lisp :(
17:50:17 <ehird> http://rafb.net/p/dKbjcr51.html
17:51:54 <faxathisia> You know [lam|E|A|C] = [lam| (E'|'A'|'C)] ?
17:52:13 <faxathisia> and you could write lam(E, A, C) instead
17:52:29 <ehird> faxathisia: err, ok
17:52:32 <ehird> then what i want is
17:52:44 <ehird> but can you pattern match calls in prolog?
17:52:46 <ehird> well that changes everything
17:53:10 <ehird> but, if i can pattern match on func calls, faxathisia ..
17:53:25 <olsner> ehird: prolog doesn't have function calls, you construct expressions which you can match on
17:53:31 <ehird> it was a metaph000r
17:53:59 <olsner> metaphor? mispresentation of facts! :P
17:54:19 <ehird> faxathisia: do you like my lack of spaces by the way.
17:54:45 <ehird> faxathisia: arglists
17:55:11 <faxathisia> No you aren't that's perfectly acceptable
17:55:32 <ehird> faxathisia: any comments on my prolog style?
17:55:34 <ehird> i think it's pretty neat
17:55:44 <ehird> i mean, you even get undefined symbol and shiz -> No, for free
17:57:00 <faxathisia> well you should probably be aware of write_canonical
17:57:24 <olsner> it's funny how prolog just answers your buggy programs with "No." like some zen master
17:58:24 <ehird> faxathisia: I can't do "Y is cons(A,B)"
17:58:43 <olsner> maybe you're mixing up is and =?
18:04:46 <oklopol> why is it that way around?
18:06:09 <faxathisia> why is = a reflexive, symmetric, transitive relation and is/2 performs computation the assignment?
18:06:33 <olsner> 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 <faxathisia> It's absolutely idiotic and brain damaging to use = for assignment, like C and other languages
18:07:05 <Slereah> faxathisia: Because arrows are ugly in ASCII
18:07:50 <oklopol> well, indeed, = should be used for both
18:08:44 <oklopol> so "is" is actual assignment?
18:09:01 <oklopol> why would it not make sense?
18:09:03 <olsner> rather, it's unification with the result of arithmetic or something like that
18:09:10 <faxathisia> A is B. %% Evaluate B as if it were some arithmetical expression then unify the result with A
18:09:22 <oklopol> and how is that not the same as what = does?
18:09:39 <olsner> normal unification does no modification whatsoever on either expression
18:09:43 <faxathisia> so 2 is 1 + 1. is actually calculating, whereas 2 = 1 + 1 fails a just like how dog = cat fails
18:09:45 <oklopol> do something to make left operand equal right operand :|
18:10:23 <olsner> X = Y+3 basically builds a data structure (Plus Y 3) then unifies that with X
18:10:27 <faxathisia> In math .. when you write =, it's an equivalence relation
18:10:32 <olsner> note there's no evaluation there
18:10:51 <oklopol> in which situations would "=" and "is" make a different result, but both make sense?
18:10:53 <faxathisia> which means x=x, x=y -> y=x and x=y->y=z->x=z
18:10:53 <Slereah> Is there even a mathematical symbol for assignment?
18:11:29 <faxathisia> but some idiot thought they'd abuse the notation and use = for something completly unlike an equivalence relation and confuse millions
18:12:01 <Slereah> Where did you get that statistic?
18:12:05 <oklopol> faxathisia: we all cry about that every night, now answer mine!
18:13:04 <faxathisia> The abstract syntax of Prolog is, Term ::= atom | Variable | functor(Term, ..., Term)
18:13:22 <faxathisia> When you write something like X + 3, that's sugar for '+'(X, 3)
18:14:55 <faxathisia> 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 <faxathisia> 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 <oklopol> what does y = 7 + 3 do then?
18:16:20 <oklopol> i just see all this as equations.
18:17:05 <oklopol> is there a situation where these unevaluated expressions are actually useful?
18:17:20 <oklopol> is it just math prolog does not evaluate, or is it all functions?
18:17:28 <oklopol> and you know what i mean by functions.
18:17:53 <oklopol> what are these situations,btw?
18:18:01 <faxathisia> There is no computation at all in Prolog (except these rare cases like is and IO..)
18:18:26 <olsner> those "functions" are more like haskell's constructors ... it's basically an AST you pattern match on
18:20:28 <oklopol> guess you cannot actually write a function like + anyway.
18:20:30 <faxathisia> peano_add(X, s Y, s Z) :- peano_add(X, Y, Z).
18:20:44 <faxathisia> peano_add(s s s o, s s s s s s s o, Y).
18:21:04 <faxathisia> and it will do Y = 10 (except it's peano encoded)
18:21:23 <faxathisia> peano_add(A, B, s s s s s s s s s s o).
18:21:38 <faxathisia> and it will describe any A, B which sum to 10
18:21:40 <oklopol> i always thought a prolog a + b means something like add(a, b, RES0): RES0 in the expression
18:22:28 <faxathisia> + is just some infix operator, a + b = '+'(a, b)
18:22:50 <oklopol> i think it's better my way :-)
18:24:57 <faxathisia> X ++ [c] = [a,b,c]. % to find out X = [a,b]
18:25:27 <oklopol> then how is it not that a + 1 = 3 means a = 2?
18:25:35 <oklopol> that's the exact same thing
18:25:44 <faxathisia> because (X ++ [c] = [a,b,c]) = '++'(X, '='([c], [a,b,c]))
18:25:55 <faxathisia> now what you have is ++ at the top level
18:26:07 <faxathisia> and everything inside is just abstract syntax
18:26:22 <faxathisia> It's not computed, because there is no computation in Prolog
18:26:52 <oklopol> i read that as X ++ ([c] = [a,b,c])
18:26:52 <faxathisia> where you traverse the structure evaluating every paremeter first
18:27:10 <faxathisia> yeah that's why I choose such a high fixity for ++
18:27:51 <oklopol> 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 <oklopol> in that case i just don't like the language
18:28:08 <oklopol> which is kinda hard to argue :P
18:28:36 <faxathisia> "find values for variables so that equations are true" is totally wrong
18:29:44 <oklopol> but you can write a lot thinking it works like that
18:32:15 <oklopol> faxathisia: what's wrong with that, where does it fail?
18:33:07 <faxathisia> You cannot enjoy writing code with that mindset
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 <oklopol> 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:35:23 <faxathisia> doing lots of numerical work in Prolog is not good
18:36:27 <Slereah> Displaying 1 to 7 (of 7 products) Pages:
18:36:56 <oklopol> btw is there a prolog bot :-)
18:37:24 <oklopol> guess i could just check the userlist
18:38:41 <faxathisia> It's printing out a derivation of running a metacircular query
18:39:35 <Slereah> Heh. Love the logical symbols with slashes
18:49:49 -!- timmytiptoe has joined.
19:17:37 <Slereah> 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: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:33:39 <pikhq> 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 <ehird> Halp. who knows something that can convert a png file into ansi?
20:14:23 <slereah_> Wouldn't an ASCII image generator do the trick?
20:14:51 <ehird> As in with colour codes
20:15:06 <ehird> butit's ncurses thingy
20:15:08 <ehird> it can't dump to afile
20:23:02 <ehird> <whoever was interested>: #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:53 -!- a has changed nick to ehird.
21:07:52 <ehird> "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 <ehird> 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 <olsner> 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:11:41 <ehird> '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:30 <pikhq> Of course, Ack is more awful than Perl. :p
21:18:45 <ehird> pikhq: Ack is a grep replcaement. I don't see the comparison basis. :p
21:18:59 <pikhq> ehird: Perl *can* be used in that place.
21:19:17 <pikhq> Of course, Perl can also be used for everything else. . .
21:19:21 <pikhq> And still be unreadable.
21:19:28 <ehird> pikhq: egobfi pipeline is my grep
21:19:40 <pikhq> I have slaves to do that for me.
21:19:50 <ehird> sometimes i just evaluate the regular expressions with _my mind_, though
21:20:36 <ehird> olsner: EgoBot's brainfuck implementation. Rating: 'pretty good'.
21:20:41 <olsner> ehird: hmm, and how many megabytes per second can your mind scan?
21:20:57 <ehird> 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 <olsner> so, you write brainfuck programs rather than grep and regexps?
21:21:37 <ehird> i compile them with _my mind_
21:22:03 <ehird> i just _stare_ at the computer and it spawns egobfi for me with the right program
21:22:03 <olsner> wow, _your mind_ sure sounds powerful :P
21:22:30 <olsner> I bet oleg has such powers over ghc, if rumours are any indication
21:22:30 <ehird> what's _your mind_?
21:22:35 <slereah_> ehird is the next step in evoluton
21:22:55 <olsner> yes, of course, _my mind_
21:23:01 <ehird> slereah_: Bu..but reddit says that's meant to be Ron Paul!
21:23:07 <ehird> HOW COULD REDDIT LIE TO ME :(
21:23:25 <olsner> I'm thinking about getting a _comind_ with secret category-theory powers at some point
21:24:22 <ehird> olsner: wouldn't a comind take power from _my mind_?
21:24:27 <ehird> since it is the opposite of _my mind_
21:24:53 <olsner> it would draw power from the co-universe, so no
21:25:19 <oerjan> a comind is an unthinking device
21:25:35 <olsner> 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 <ehird> oerjan: some things cannot be unthunked
21:25:44 <ehird> like infinite lists
21:26:32 <ehird> it was part of my joke
21:27:27 <oerjan> i am merely correcting your grammar. think, thank, thunk.
21:28:08 -!- BMeph has joined.
21:31:06 <ehird> who here knows LyX
21:34:45 * olsner relies on his carpals for latex hacking
21:35:10 <ehird> yesh, well TeX is complex
21:35:14 <ehird> and LaTeX is bloated
21:35:21 <ehird> lyx's produced source files are even nice and readable
21:35:38 -!- calamari has joined.
21:49:30 <AnMaster> however, I won't answer any question if you haven't read and done the tutorial first
21:50:30 -!- atsampso1 has joined.
21:50:50 <ehird> woot i've almost been awake 31hrs
21:50:58 <ehird> AnMaster: the html output is broken
21:51:04 <ehird> it outputs soem kind of prettyprinted text
21:52:28 <AnMaster> ehird, just tried it, it looks ok?
21:53:07 <ehird> AnMaster: i get somethuign like this
21:53:09 <AnMaster> oh and it did a horrible job on equations
21:53:17 <ehird> The Brainfuck Programming Language
21:53:18 <ehird> Brainfuck is a minimal esoteric programming
21:53:21 <ehird> plaintext foramtinged
21:53:30 <ehird> but iwth html entityioes
21:54:12 <AnMaster> would need some post processing but quite ok
21:54:16 <ehird> AnMaster: i got into view->html
21:54:21 <ehird> and it gives me a n html page with that source
21:54:27 <ehird> don't you undestantd what i'm saying :|
21:54:32 <ehird> i click html, it gives me plaintetxt
21:54:44 <ehird> iwas using view->html
21:54:47 -!- slereah__ has joined.
21:54:47 <ehird> because there was view->pdf
21:55:43 <AnMaster> ehird, if it is an older version, try upgrading
21:55:48 <ehird> mac /Applications/LyX-1.5.0-beta2.
21:55:51 <AnMaster> also it could be a TeX problem
21:56:03 <ehird> blame the fscking ftp seorver
21:56:36 <ehird> o ise os x, except when ic ant type like now
21:56:40 <ehird> in which case i use odfgi x
21:56:43 <ehird> or somethign simlar
21:57:10 -!- Tritonio_ has joined.
21:57:11 <AnMaster> as iirc you told me some time ago
21:57:28 <ehird> but i lost the ftp link
21:57:31 <ehird> to the actual bins ofr os ox
21:57:37 <AnMaster> you could have googled for lyx
21:57:44 <ehird> but that doesnt get the m the tftp link
21:57:56 <AnMaster> and look, it got a link for download!?
21:58:18 <AnMaster> "Please use ftp mirrors below in case ftp.lyx.org is down."
21:58:32 <slereah__> What's the point of the projection function in the primitive recursive?
21:58:42 <slereah__> Is there a function that can't be written without it?
21:58:42 <ehird> AnMaster: sowhy not yell at me then :|
21:58:52 <AnMaster> ehird, I found a binary on a ftp mirror
21:59:01 <ehird> fine, great, so what
21:59:05 <AnMaster> because you can find it yourself
21:59:15 <AnMaster> it was like 3 clicks from download page
21:59:23 <ehird> AnMaster: #esoteric is 99% useless because most of the things discussed here can be found elsewhere.
21:59:33 <ehird> and as you can notice I am kind of having a mild inability to type right now
21:59:43 <ehird> which probably bodes un-good for me writing a spec, but :)
22:00:01 <ehird> AnMaster: I think my hands have shut down to power the rest of my body o.o
22:00:11 <AnMaster> ftp://ftp.lip6.fr/pub/lyx/bin/1.5.4
22:00:22 <AnMaster> in that dir is a file for os x
22:00:55 <ehird> ueah i just found it
22:01:13 <ehird> theys hould fix their damn ftp not to leave old releases in top level disr
22:01:19 <ehird> with no newer releases in sight
22:01:36 <AnMaster> I just followed link from download page
22:01:51 <AnMaster> ftp://ftp.lip6.fr/pub/lyx/ is top dir
22:02:08 <AnMaster> wtf do you mean old in top dir
22:02:08 <ehird> AnMaster: when i got the old version
22:02:31 <AnMaster> well that may have been quite long ago
22:02:32 -!- atsampson has quit (Read error: 110 (Connection timed out)).
22:02:47 <AnMaster> ehird, anyway html output isn't pretty
22:03:12 <ehird> AnMaster: i will choose a system with decent html output
22:03:14 <ehird> that is the end of it
22:03:30 <AnMaster> ehird, well, it will need some post-processing
22:03:38 <AnMaster> but I think it depends more on tex than lyx
22:04:19 <AnMaster> ehird, here is the latex preamble I'm using for funge08:
22:04:21 <AnMaster> http://rafb.net/p/oGYwec89.html
22:05:34 <AnMaster> document class is koma-script article with options: bibtotoc,idxtotoc
22:05:56 <ehird> my document is kinda lacking in markup though
22:05:59 <ehird> so it isn't that nice
22:06:04 <ehird> AnMaster: its very simple
22:06:15 <AnMaster> ehird, ah well then that's your input
22:06:28 <ehird> AnMaster: can't think of anywhere to add more semantics though really
22:06:31 <ehird> i'll paste the lyx file :)
22:06:46 <AnMaster> ehird, however, lyx doesn't do my document nicely for html, because I made it for pdf
22:06:59 <ehird> http://rafb.net/p/Gw7czI59.txt
22:07:00 <AnMaster> because I got some really wide and long tables
22:07:41 <AnMaster> whatever.lyx is from a different version of LyX, but the lyx2lyx script failed to convert it.
22:08:05 <AnMaster> UnicodeDecodeError: 'utf8' codec can't decode bytes in position 34-39: unsupported Unicode code range
22:08:14 <ehird> AnMaster: uh, no idea
22:08:19 <AnMaster> looks like something messed up with paste?
22:08:23 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
22:08:28 <AnMaster> unicode gets messed up by pastebin
22:08:36 <AnMaster> ehird, can you upload it to a server?
22:09:10 <ehird> pastbein but for files
22:09:26 <AnMaster> ehird, "Elliott Hird" <-- is that a male or female name (I'm not a native English!)
22:09:35 <ehird> AnMaster: haha, male
22:09:46 <ehird> http://filebin.ca/kjeqq/test.lyx
22:12:04 <AnMaster> ehird, why a subscript bignum?
22:12:10 <slereah__> Wasn't Elliott the guy with a magical dragon in some movie?
22:12:28 <slereah__> Or possibly Elliott was the dragon
22:13:23 <oerjan> http://en.wikipedia.org/wiki/Pete's_Dragon
22:14:41 <AnMaster> ehird, lyx really needs at least 5-10 pages to be able to show it's awesomness
22:16:46 <calamari> latex looks weird in pdfs tho.. the letters are all different sizes
22:17:30 <AnMaster> that depends on what options you use
22:17:41 <calamari> very distracting.. have to print it out or zoom way in
22:17:47 <AnMaster> or do you mean the actual string "LaTeX"
22:18:10 <ehird> AnMaster: because Brainfuck_N
22:18:13 <ehird> so Brainfuck_bignum
22:18:30 <ehird> also, I think you mean 'Computer Modern' looks weird
22:18:46 <ehird> Which just means that you don't share Knuths sense of aesthetics
22:18:57 <AnMaster> ehird, I can't get filebin to work?
22:19:34 <calamari> it's the "research paper pdf" look.. instantly recognizable that they used latex
22:19:52 <ehird> calamari: no, it's the Default-Latex-font-look
22:20:09 <ehird> 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 <ehird> however its actually a nice font, just takes getting used to ;)
22:20:36 <ehird> 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 <AnMaster> needs a special command line tool
22:21:44 <AnMaster> this is my befunge08 draft, use wget or curl to get it, firefox or such would fail at it
22:21:51 <AnMaster> http://rafb.net/p/2sIDlA55.txt
22:21:54 <calamari> ehird: I'll take your word for it
22:22:04 <AnMaster> do you think it got those issues?
22:22:29 <calamari> I think that shouldn't be ".txt" :)
22:22:42 <ehird> AnMaster: dude give source
22:22:46 <ehird> NOBODY wants to download a pdf
22:23:12 <ehird> i for one won't :)
22:23:12 <AnMaster> it works very well in konqueror
22:23:22 <AnMaster> ehird, still please take a look at this one
22:23:49 <AnMaster> the image in appendix c, I'm rendering a better one atm
22:24:02 <AnMaster> just waiting a few hours for blender to finish it
22:24:16 <calamari> one way to tell you have too much crap on your desktop: cannot find a file you just downloaded
22:24:48 <AnMaster> calamari, so what do you think of it
22:25:00 <ehird> 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:10 <ehird> AnMaster: lex! lex! lex! lex! lex!
22:25:15 <calamari> okay cool.. see that looks fine
22:25:44 <calamari> so it's the defgault font that looks like crap
22:25:53 <AnMaster> ehird, ah well pastebin mess it up
22:25:56 <ehird> calamari: it's the default font that you're not used to
22:26:04 <ehird> i can guarantee you that Computer Moden is beautiful ;)
22:26:29 <AnMaster> ehird, the lyx source would make no sense
22:26:37 <AnMaster> it includes stuff like external *.eps
22:27:00 * calamari goes baqck to working on his rubik's cube cipher
22:28:07 <AnMaster> ehird, but I'll send it in some way
22:29:33 <AnMaster> ehird, http://rage.kuonet.org/~anmaster/funge08.tar.bz2
22:29:55 <AnMaster> ehird, note, I haven't gotten permission to reuse this really yet, I'm waiting for answer on license on funge98
22:30:15 <AnMaster> ehird, so I'll remove the file in 5 minutes
22:30:32 <ehird> people on #esoteric are simultaneously paranoid and lax..
22:31:01 * pikhq pulls it for his archive of censored files
22:31:14 <AnMaster> pikhq, likely it will be allowed soon
22:31:23 <AnMaster> or I'll rewrite it from scratch
22:31:31 <AnMaster> pikhq, it is just a copyright issue of the text
22:31:38 <pikhq> Hmm. Not seeing the guy responsible in here ATM.
22:31:39 <AnMaster> anyway it is funge98 standard, extended
22:31:55 <AnMaster> ehird, have you fetched it or not?
22:32:46 <AnMaster> ehird, also mine is optimized for being made into a pdf
22:32:53 <AnMaster> like the \usepackage{microtype}
22:34:02 <AnMaster> ehird, also you may want to change from "indent new paragraphs" to "use vertical skip"
22:34:09 <AnMaster> it will help for web page at least
22:35:46 <AnMaster> ehird, I'm making some changes to your file
22:37:11 <AnMaster> ehird, you want to post-process that file however
22:37:28 <AnMaster> to change the _bignum thing from an image to using the html <sub> or whatever it is
22:38:49 <ehird> it doesnt use an image
22:38:51 <ehird> its 100% pure html
22:46:32 <AnMaster> ehird, anyway you got my lyx source
22:58:06 -!- CakeProphet has joined.
23:02:18 <olsner> 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:31 <olsner> I wonder what the heck I was doing back then
23:13:02 <pikhq> Screwing everything up.
23:15:32 <olsner> 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 <olsner> the question now is what the heck the purpose of this thing was
23:16:32 <oerjan> probably some megalomaniac scheme of writing your own OS
23:17:47 <olsner> 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 <olsner> wow, it even has a user and kernel mode?
23:19:16 <pikhq> It doesn't *use* said user and kernel mode yet, though.
23:19:21 <pikhq> No multitasking. ;)
23:19:31 <olsner> bah, how hard can it be
23:19:34 <pikhq> Still, it'd be fairly trivial to enter user mode.
23:19:39 <pikhq> Just a long jump into it.
23:19:52 <pikhq> I believe it's sector 0x18 that's user mode's CS?
23:20:22 <olsner> I only have a kernel-mode CS and DS thus far
23:20:30 <pikhq> gdt_set_gate(3, 0xFFFFFFFF, 0, GDT_USERCODE, GDT_FLAGS);
23:20:42 <pikhq> I'd say that's doing user-mode CS and 0x18.
23:20:47 <calamari> can't seem to find a sequence of moves that gives a period > 1260
23:20:57 <olsner> gdt_set_gate? I think I know which tutorial you've been using :P
23:21:23 <pikhq> I'm not using a tutorial.
23:21:33 <pikhq> I wrote that all by myself. . .
23:21:49 <pikhq> The tutorial that I found first, which had that function in it, was truly awful, though.
23:22:01 <pikhq> "Copy this code. Everything will work!"
23:23:23 <ehird> [22:20] <olsner> gdt_set_gate? I think I know which tutorial you've been using :P
23:23:27 <ehird> i said exactly the same thing
23:23:30 <ehird> but for his putchar routines
23:23:45 <olsner> bah, putchar? the console is a framebuffer!
23:23:46 <ehird> while that tutorial may suck, the ohers are all worse ;)
23:24:08 <ehird> fun idea: no text mode ever implemented
23:24:15 <pikhq> ehird: Like I said: I wrote my stuff all on my own. ;)
23:24:18 <ehird> the gui is heavily baked in and made to be as optimized as possible
23:24:25 <ehird> and is just as stable as the text mode
23:24:26 <pikhq> Well, except for the multiboot stub, makefile, and linker script.
23:24:33 <ehird> no more shitty gui layers!
23:24:47 <ehird> of course you could write a terminal driver that just outputs to a terminal gui window.
23:24:54 <pikhq> ehird: So. . . you have GUI pretty damned quickly?
23:25:17 <ehird> pikhq: Well, the GUI should reeeaaaally be saved to later. BUT, this way is fun :D
23:25:25 <oerjan> calamari: in rubik's cube? that's the period of turning one face, then the whole cube, isn't it.
23:25:28 <pikhq> Make it X-compatible, and I'll be impressed.
23:25:33 <ehird> you'd actually, you know, have to think about your gui and its implications and its stability
23:26:03 <pikhq> Anyways: I had a really insane idea for my syscall interface.
23:26:15 <calamari> 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 <pikhq> Write the syscall and its arguments to 0x00, then int 66h. ;p
23:26:37 <ehird> pikhq: So .. basically linuxs syscal.
23:26:40 <ehird> But with diff. mem addrs
23:26:41 <calamari> so far the best is an 8 move sequence period 1260
23:26:52 <pikhq> Linux's syscall has the syscall arguments in registers.
23:26:55 <olsner> you mean overload the segmentation fault handler for syscalling?
23:27:06 <calamari> I think I'll try adding some feedback to see if I can create a longer period
23:27:13 <pikhq> olsner: No; use paging to actually map 0x00 somewhere.
23:27:25 <olsner> ah, yes, that makes more sense
23:27:55 <olsner> but I somewhat like the idea of null pointers giving segmentation faults when accessed
23:28:33 <pikhq> I like the idea of making Malbolge the user programming language.
23:29:24 <ehird> pikhq: Hey! ESO already exists
23:29:36 * pikhq should *probably* make a Brainfuck interpreter the first running program on this kernel.
23:30:15 <oerjan> calamari: the biggest period may not be that big
23:30:21 <ehird> pikhq: with loads of memory map stuffed
23:30:24 <ehird> and make it binary brainfuck
23:30:28 <ehird> so you can program your os in it!
23:30:33 <ehird> then transform the interp + co into asm
23:30:37 <ehird> and you will truly have a brainfuck OS
23:31:03 <ehird> you can also micro-optimize the (probably tiny) brainfuck interp for every byte it's got. that would be fun :-)
23:32:43 <ehird> i really want to get my os project going sometime
23:32:51 <ehird> watching gcc compile something on it would be awesome
23:33:36 <ehird> pikhq: i assume your kernel will be monolithic
23:33:37 <olsner> os = fix (recompile . boot)
23:33:52 <ehird> olsner: QEmu represent.
23:34:03 <ehird> i think i'll probably make a monolith first, then try my random wacky microkernel idea after that :p
23:34:24 <ehird> (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:42 <ehird> the problem is, the more you do cool ideas, the less likely you are to run gcc..
23:35:59 <ehird> 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 <ehird> 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:10 <ehird> but really i just want to mess around in kernelspace
23:55:27 <ehird> pikhq: i wonder how much a microkernel could actually refer
23:55:34 * pikhq has an idea for a filesystem. . .
23:55:44 <ehird> if we have the kernel as process 0, and call it the 'procd'
23:55:51 <pikhq> Anyone familiar with the UMSDOS filesystem of Linux 2.0-2.4?
23:55:55 <ehird> and all it does is the minimum neccessary for processes + ipc
23:55:59 <ehird> then you could even put:
23:56:07 <ehird> console drivers, etc. in their own module
23:56:27 <ehird> of course your process structure would get optimized pronto; you'd have a hell of a lot of procs ;)
23:56:59 <pikhq> I assume you'd have that sucker use Multiboot.
23:57:11 <pikhq> (otherwise, good luck getting all your processes up and running. ;))
23:58:47 <ehird> It would do it all itself ;)
23:58:54 <ehird> handle its own procs etc
23:59:07 <ehird> The idea is that there is no 'root process'
23:59:17 <ehird> procd (cheap name for 'the core kernel') is proc 0
23:59:24 <ehird> but when it spawns off stuff, they aren't a child of procd
23:59:35 <ehird> because procd's "children" are not children at all, they have no parents (awwww)
23:59:59 <ehird> basically, procd would be the very minimum you need at the base: super-strong, fast glue.
00:03:40 <ehird> would be very simple
00:03:53 <ehird> you can send off an opaque message -- (void *) -- to a process
00:03:53 <calamari> my latop hd was too small to partition, so win95 and linux shared the drive
00:03:59 <ehird> then use poll() or whatever to get a response, async
00:04:14 <ehird> if IO is a process, then all IO becomes async
00:06:14 <calamari> best period 1260 sequence (5 moves): L F' R2 L U'
00:06:40 <ehird> pikhq: p.s. i've seen this passed around http://www.jamesmolloy.co.uk/tutorial_html/index.html
00:06:45 <ehird> maybe better than bran's tutorial
00:08:40 <ehird> pikhq: it seems to be more modern & thorough
00:09:20 <pikhq> Tutorial, shmootorial.
00:09:49 <ehird> pikhq: hey, i haven't seen one "COPY 'N PASTE THIS" in it yet
00:09:59 <ehird> & it has even a chapter on multitasking
00:10:02 <ehird> so i'd say -- worth a look
00:10:12 <oerjan> calamari: i found a wikipedia article on the Rubik's Cube group, but nothing about its largest element order
00:10:23 <ehird> pikhq: heh, the gdt stuff is nice and long
00:10:26 <ehird> & actually explains it ;)
00:10:45 -!- Sgeo has joined.
00:10:48 <calamari> oerjan: I'm having success combining that sequence with color-based turns
00:11:08 <pikhq> ehird: I'm still proud of doing it myself. :p
00:11:09 -!- jix has quit ("CommandQ").
00:11:20 <calamari> oerjan: for example if the upper right color is red, turn the right side
00:12:18 <calamari> 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 <ehird> pikhq: I would still take a look at the stuff there.
00:13:36 <oerjan> you mean it hasn't come back after a million iterations?
00:14:10 <calamari> oerjan: if it had, then the distribution would badly skew
00:14:27 <oerjan> hm wait, are you actually iterating the same exact moves?
00:14:51 <calamari> those 5 moves, plus 1 color based move
00:15:20 <oerjan> no i mean, the color based move does not necessarily repeat after a while
00:15:37 <oerjan> it might not be reversible
00:15:47 <calamari> that's a good thing, isn't it?
00:16:24 <oerjan> i mean you might _never_ get back to the original state
00:16:57 <oerjan> calamari: you should check if any intermediate states repeat
00:17:09 <calamari> but I am not sure how to do that
00:17:15 -!- oklofok has joined.
00:17:32 <calamari> do you know of an algorithm that doesn't use a linear amount of ram?
00:17:44 <oerjan> 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 <oerjan> you can easily calculate those incrementally
00:19:03 <ehird> 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 <oerjan> (1) put your original state in two variables
00:19:30 <oerjan> (2) do one iteration on the first copy, two iterations on the second
00:19:47 <oerjan> (3) check if they have become equal. if not, go to (2)
00:20:11 <calamari> thank you.. I will do that immediately
00:21:06 <oerjan> this will show if they repeat, although not necessarily the first point at which a repetition occurs
00:21:58 <calamari> is there a name for that algorithm?
00:22:07 <calamari> I'd like to read more about it on wikipedia
00:22:25 <calamari> ahh ok.. well thanks :) it's good
00:30:07 -!- timotiis has quit ("leaving").
00:31:00 <calamari> well it'll have to repeat eventually since there are only ~45-48 bits of state in a rubiks cube
00:31:23 <calamari> but I'm sure that look much less time than 45 bits
00:36:01 <oerjan> 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 <ehird> pikhq: Hmm. mallocd.
00:38:11 <ehird> 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:39:06 <ehird> heh, if mallocd existed:
00:39:28 <pikhq> And I assume you've got mallocd running in ring 1?
00:40:46 <ehird> i'm not sure how you'd send stuff off to the malloc process
00:40:53 <ehird> a normal 'fd' sounds tempting, but somehow wrong :)
00:40:55 <ehird> pikhq: heh, guess so
00:41:02 <ehird> but that recursive dependencys kinda the main nag!
00:41:05 <pikhq> Message-passing, of course.
00:41:22 <ehird> but through which method
00:41:26 <ehird> FDs would be the unixy way
00:42:17 <calamari> oerjan: however that is when applying the algorithm without taking color into account
00:42:19 <ehird> pikhq: e.g., assuming 'write' is the syscall..
00:42:25 <ehird> how do you represent sending over a size_t?
00:42:32 <ehird> since write takes a const void *
00:42:45 <ehird> & you can't reliably cast
00:43:04 <ehird> but anyway, PSEUDOcode for malloc:
00:43:22 <calamari> sorry, what are you guys doing?
00:43:31 <calamari> looks like an operating systems class in here
00:44:03 <ehird> calamari: pikhq's writing a little kernel
00:44:07 <ehird> i'm throwing around batty ideas
00:44:27 <ehird> calamari: that's his intention
00:44:38 <oerjan> 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 <oerjan> (graph of configurations)
00:45:31 <calamari> yeah I figure there's no algorith that'll result in every combination being used in the sequence
00:45:37 <ehird> 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 <ehird> He seriously thinks that some day not far from now it could be actually used on real systems in place of linux
00:46:24 <oerjan> calamari: that's essentially the question of whether the configuration graph has a hamiltonian path
00:47:24 * oerjan wonders if that is even known, this being NP-complete to check and all
00:47:50 <ehird> pikhq: ah, i know how mallocd could exist
00:47:58 <ehird> the kernel 'pretends' to be multiple processes
00:48:01 <ehird> procd, mallocd, etc
00:48:09 <ehird> they act just like regular, good ol' fashioned processes
00:48:19 <ehird> but they're actually coupled into the kernel core, because well -- they are core
00:49:22 <calamari> oerjan: thanks for all the help with this :)
00:49:55 <Sgeo> Is there a point to Exclaim?
00:50:38 <Sgeo> what's mallocd?
00:52:32 <Sgeo> WHY would there be a malloc daemon?
00:52:45 <ehird> Sgeo: You didn't even know what malloc was before I told you.
00:52:52 <ehird> I don't think you really should be questioning things like that ;)
00:53:07 <ehird> However, mallocd may be a bit overkill, but still pretty awesome.
00:53:34 <Sgeo> Make all library stuff a separate process while we're at it!
00:53:53 <pikhq> Sgeo: Welcome to microkernel.
00:54:27 <pikhq> calamari: Actually, my plan is to just provide enough syscalls to easily port over some good library.
00:54:37 <pikhq> (POSIX/C library, of course)
00:54:56 <ehird> pikhq: There's a nice one of them specifically deisgned for hobby OSes
00:55:02 <calamari> who was talking about newlib the other day?
00:56:19 <ehird> pikhq: Here you go
00:56:19 <ehird> http://sourceforge.net/projects/pdclib
00:56:26 <ehird> Plus it's public domain-ey-ness.
00:56:35 <ehird> And the configuration to bind it into your kernel is really simple.
00:57:21 <Sgeo> How does one go about making a kernel?
00:57:31 <ehird> Sgeo: Oh god, please don't.
00:57:31 <pikhq> With much pain and agony.
00:57:42 <pikhq> If you don't grok C, don't bother.
00:57:46 <ehird> I do *not* want to have to support the design desicions of Sgeokern.
00:57:48 <calamari> not that much pain or agony.. depending on the kernel :)
00:57:55 <pikhq> if lgdt [eax] makes you run in fear, then don't.
00:57:58 <ehird> pikhq: C knowledge is hardly enough; you need to know quite a bit about how the actual machine works..
00:58:08 <pikhq> calamari: He doesn't use C, as far as I know.
00:58:08 <ehird> for various values of 'quite a bit'
00:58:14 <Sgeo> I guess Python doesn't cut it
00:58:22 <calamari> pikhq: ahh that's right .. hehe
00:58:24 <ehird> Sgeo: What lead you to make that deduction?
00:58:32 <ehird> Sheer cunning intellect? :-)
00:58:33 <calamari> although my BOS kernel was written in x86 asm
00:58:33 <pikhq> ehird: True, but if you don't know C, then you *don't* know enough about how the machine works.
00:58:40 <ehird> pikhq: Quite true.
00:58:46 <Sgeo> Although, why can't Python be compiled into x86 instructions?
00:58:53 <pikhq> calamari: Okay, if you write it in assembly, you've *proven* that you know enough.
00:58:55 <ehird> Sgeo: that wouldn't help
00:59:00 -!- sebbu has quit ("@+").
00:59:01 <ehird> you still need lower-level access than python exposes
00:59:07 <ehird> plus, python is pretty uncompilable
00:59:12 <pikhq> Sgeo: How would you make Python write to an arbitrary address?
00:59:14 <ehird> youd just compile it down to some vm opcodes, basically.
00:59:21 <ehird> it's just too dynamic.
00:59:35 <ehird> besides, if you DO do that, AND then strap on the low-level tweaks into python..
00:59:41 <ehird> you've just lost any advantage of python and made it a pain.
00:59:49 <ehird> there's a reason C is so close to the metal in all aspects. :)
00:59:54 <pikhq> And you would've spent less time learning C and assembly.
01:00:11 <ehird> Also, if you're doing kernel C you learn to be edgy.
01:00:31 <ehird> In Python code, you just throw anything around and the gc will mostly make everything go peachy in the end.
01:00:33 <Sgeo> Are there other C-likes that are easy like Python, but still compilable and can access low-level stuff?
01:00:38 <ehird> Whereas in a kernel...
01:00:38 <calamari> 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:54 <pikhq> calamari: Probably.
01:00:56 <ehird> '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 <pikhq> Compiling GCC for it is *not* that big of a deal. . .
01:01:11 <ehird> pikhq: check out pdclib!
01:01:21 <pikhq> (Setting up a Hurd cross-dev environment? *shudder*)
01:01:51 <pikhq> Sgeo: Sure there is. It's called *C*.
01:02:31 <calamari> I forget the compiler option used for compiling kernels
01:02:36 <Sgeo> 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 <ehird> pikhq: But C is haaaard! Let's go shopping.
01:03:15 <ehird> calamari: that's a meme :)
01:03:24 <pikhq> Sgeo: Yes, at least some of the kernel needs to be in assembly.
01:03:36 <calamari> ehird: you didn't know C at one time too.. hehe
01:03:57 <Sgeo> ..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 <ehird> calamari: No actually
01:04:04 <ehird> I learned C before my conception
01:04:11 <ehird> God gave me the power as soon as I was formed
01:04:12 <pikhq> Sgeo: Because C doesn't expose *everything*.
01:04:19 <calamari> ehird: what was your return code when you came out ?
01:04:22 <pikhq> Like, say, the registers. ;)
01:04:23 <ehird> Aborting me would be a henious crime indeed, because all my genius was already there!
01:04:43 <oerjan> 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 <pikhq> 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 <ehird> calamari: No. Every digit.
01:05:08 <Sgeo> Do you need direct access to registers to make a kernel?
01:05:09 <ehird> The truly godly type!
01:05:14 <calamari> ehird: you need to go back to C class
01:05:22 <ehird> Sgeo: You need direct access to *everything*
01:05:33 * Sgeo doesn't quite see why..
01:05:37 <ehird> 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:18 <ehird> Nature's 4-day harmonious time cube allowed me to do it.
01:06:35 <ehird> People who say that the real pi cannot be a return value are educated stupid!
01:07:11 <pikhq> Base pi, of course.
01:07:16 <Sgeo> 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 <oklofok> lol, #awesome is being invaded by people, apparently related to a project called awesome :P
01:07:54 <pikhq> Sgeo: I can make *libc* without assembly.
01:08:17 <pikhq> Assuming that my syscall interface has a function entering the kernel at a specified address. . .
01:08:40 <GregorR> If I made a project called libjesus, I'll bet I could protest FreeNode and take over #jesus .
01:08:48 <Sgeo> Anyways, are people here going to test PSOX 1.0b1 when it comes out?
01:08:52 <ehird> Sgeo: libc is basically all in C
01:09:07 <ehird> 's the *C library*
01:09:09 <pikhq> Then, I need only do (kernel_entry)(syscall, args);
01:09:10 <calamari> GregorR: just make sure it's your project otherwise you'll only get ##jesus :(
01:09:20 <pikhq> ehird: It sometimes has inline assembly.
01:10:03 <calamari> hmmm... actually that means the current channel should be ## too
01:10:06 <pikhq> Specifically, asm("foo. . ." /* Load args to the syscall in registers.*/ "int $0x80" /* Enter the kernel. */);
01:11:23 <ehird> but once we get irc.eso-std.org ;)
01:12:00 <Sgeo> Does anyone in here besides myself even care about PSOX?
01:12:02 <ehird> # is a valid channel name!
01:12:03 <ehird> it works, it exists.
01:12:17 <oklofok> Sgeo: i mostly care about your mother, tbh
01:12:22 <ehird> Sgeo: More people did before you started whining about how nobody cares about it and bothering everyone about that fact :-D
01:13:02 <calamari> 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 <Sgeo> calamari, um.. oO log link?
01:13:44 <oklofok> calamari is one bitter bitch
01:14:08 <calamari> oklofok: people try to eat me, so I became bitter to dissuade them
01:14:10 <ehird> calamari: so true, so true
01:14:44 <ehird> 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 <oklofok> this is fun, i went to sleep at about 22.00 so that i could wake up early...
01:15:34 <ehird> [00:15] * Cannot join #christian (Channel is invite only).
01:15:37 <ehird> is that appropriate for freenode
01:16:06 <ehird> [00:15] * You have left channel #anus (requested by ChanServ: "GODDAMNED*WANKERS")
01:16:10 <ehird> i wanted to be in anus
01:16:38 <Sgeo> <calamari> I think I made a comment about it needing and/or/xor
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 <Sgeo> What else did you suggest?
01:18:53 * Sgeo pokes calamari
01:19:05 <ehird> Sgeo: that kind of incessant prodding is why people have been ignoring psox
01:19:10 <ehird> can't you be .. a little more patient?
01:19:55 <ehird> KjSDKLFjsdf;jsdjsdfsdfsdf
01:20:32 <Sgeo> Hm, a discussion about the LNUM/LBYTES format
01:21:04 <Sgeo> between myself and calamari
01:21:41 * oerjan pokes calamari with some salt and pepper, and olive oil
01:22:02 <Sgeo> http://bespin.org/~nef/logs/esoteric/08.02.17
01:23:35 * pikhq realises that it is possible to implement *hard links* using FAT.
01:24:03 <ehird> fat is not a REAL MAN
01:32:53 <calamari> pikhq: I want driectory hard links :P
01:33:27 <ehird> pikhq: what about a file system whose structure is a filesystem
01:33:28 <calamari> I use mount --bind for that now.. so never mind :)
01:33:30 <ehird> not an opaque amount of bits
01:33:33 <ehird> ditto for that one
01:33:37 <ehird> turtles, down, all the way
01:33:58 <calamari> ehird: need a base case to end the recursion
01:34:04 <ehird> calamari: nonsense
01:34:08 <ehird> just use an infinity machine
01:34:20 <oerjan> the empty system, of course. if it works for ZFC...
01:34:21 <ehird> the #1 preferred platform of choice for turtle-system designers & implementers
01:34:32 <ehird> Infinity machine: http://www.chiark.greenend.org.uk/~sgtatham/infinity.html
01:35:01 <oklofok> hmm, has anyone coded the empty os yet?
01:35:02 <ehird> 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 <oklofok> that would be ...well, awesome
01:35:36 <oerjan> oklofok: it was coded by Zen Buddhist monks in the early 9th century
01:36:08 <oerjan> they didn't need to invent hardware for it, since it was empty.
01:36:24 <ehird> oh, and if i ever decided i was pasting '@what infinity machine' to people too much after mentioning it,
01:36:27 <ehird> i'd do something like:
01:36:42 <ehird> '@counter infinity machine=@what infinity machine'
01:36:47 <ehird> where @counter msg=cmd
01:36:57 <ehird> means 'whenever i say something which contains msg, run cmd.'
01:37:01 <calamari> need to make an ipod shuffle os
01:37:14 <ehird> calamari: no uclinux support
01:37:21 <GregorR> 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 <calamari> ehird: yeah.. guess I need the compiler first don't I
01:38:30 <calamari> pikhq: linux boots slow on my ipod video.. at least make yours boot really fast :)
01:38:54 -!- Sgeo has joined.
01:38:59 <ehird> you know what a really good infinity machinie program would be?
01:39:07 <Sgeo> What did I miss?
01:39:11 <ehird> one that somehow interacted with a normal webserver machine
01:39:21 <ehird> it would accept programs
01:39:28 <ehird> check them for safety
01:39:31 <ehird> then send it off to the infinity machine
01:39:37 <ehird> which would run them
01:39:42 <ehird> and then send its computation result over the wire
01:39:45 <ehird> back to the browser
01:39:56 <ehird> also a web service with api bindings to most langauges
01:40:03 <ehird> infinite computing made easy, for everyone!
01:40:25 <ehird> 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:41:40 <ehird> GregorR: to be honest
01:41:45 <ehird> if you have a web server
01:41:48 <ehird> and an infinity machine
01:41:52 <ehird> it would be a few weeks project
01:42:07 <ehird> safety checking -- the infinity machine would probably have stuff for that anyway, see the article
01:42:30 <GregorR> My last statement was what we in the biz call "sarcasm"
01:42:34 <ehird> 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 <ehird> GregorR: Still. :p
01:43:30 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
01:44:06 <ehird> GregorR: Would be pretty useful.
01:44:07 -!- bsmntbombdood has joined.
01:44:14 <ehird> Especially since you'd only ever need a one function api.
01:44:27 <Sgeo> hi bsmntbombdood
01:44:32 <ehird> an optionally a 'cluster' thingy
01:44:40 <ehird> to specify a custom infinity machine
01:47:13 <ehird> procd handles sending messages to procs
01:47:16 <ehird> but it does this through a message
01:47:24 <ehird> > solve(CONUNDRUM);
01:48:36 <pikhq> Your kernel would need to handle the message-passing system.
01:48:59 <ehird> pikhq: But the kernel only manifests itself in the multiple processes it pretends to be.
01:50:05 -!- CakeProphet has quit ("haaaaaaaaaa").
01:50:06 <ehird> pikhq: Well, messaged would just essentially split up about 2 parts of procd for no reason and retain the same problem
01:50:22 <ehird> I guess I could have TWO primitives..
01:50:29 <ehird> That is, the send, and the async-get-response
01:50:37 <oklofok> who here linked the bogosort paper?
01:50:43 <ehird> pikhq: Of course when programming an app you shouldn't worry about any of this stuff
01:50:45 <pikhq> And optimise the fuck out of that.
01:50:48 <ehird> pikhq: it's low level, behind the scenes stuff
01:51:04 <ehird> #include <myos/internal/message.h>
01:51:08 <ehird> and they'll haev names like
01:51:24 <ehird> the trailing underscore means BEWARE
01:51:37 <ehird> but yeah, in most apps you'll just use everything like normal.
01:51:56 <ehird> except that if you want to use asynchronous IO you can use the stadard posix interfaces with one difference..
01:52:06 <ehird> everything will seem a lot snappier, because in the background, that's what its doing natively :)
01:54:03 <ehird> it will include a user-level version of that message passing stuff
01:54:15 <ehird> to make asynchronous server and client programming <3, even in C
01:54:20 <ehird> pikhq: awesome idea, or pwnsome idea?
01:54:33 <ehird> and ofc you could easily port the api to an inferior OS by emulating the ipc interface it uses :)
01:56:31 <ehird> pikhq: hmm, i think the main user-level interface will be this
01:56:51 <ehird> better post an example
02:00:28 -!- olsner has quit ("Leaving").
02:03:31 <ehird> http://pastebin.ca/935965 actually nice-looking event based programming thingy in c
02:04:28 <ehird> need a null terminator there
02:05:10 <ehird> pikhq: new - http://pastebin.ca/935970
02:06:00 <ehird> typedef struct {char *name; size_t ac; void *fp;} LWmessage_t;
02:06:07 <ehird> i wish i could give you a scary funcptr type
02:06:12 <ehird> but that's all that iwll work :)
02:07:38 <ehird> pikhq: I like my cheap interning trick though
02:12:58 <ehird> const *const is a valid type on c
02:14:59 <oerjan> defaults to int perhaps?
02:15:09 <oerjan> like short int = short
02:19:21 <pikhq> And const = const int.
02:30:43 <Sgeo> 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 <oklofok> i just realized the translation of "windows for workgroupsversion 3.11" on my old comp was wrong
03:01:25 <oklofok> also, i need a better keyboard
03:33:49 -!- Sgeo has quit ("Ex-Chat").
03:34:09 -!- Sgeo has joined.
03:41:51 <lament> wow, spacewar on PDP-1 actually looked really pretty.
03:41:52 <lament> http://en.wikipedia.org/wiki/Image:Spacewar%21-PDP-1-20070512.jpg
03:44:51 <pikhq> Well, of course. The PDP1 wasn't this piece of crap that we have on our desks. . .
03:45:10 <pikhq> Oh, you meant it actually *looked* pretty, not that its code was elegant.
03:56:02 <lament> compare with http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/KSpaceDuel1.1.png/800px-KSpaceDuel1.1.png
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: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 <slereah__> 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 <Xion> Carlos Castaneda rulezZ
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:10 <slereah__> Although it doesn't mention castenada
11:13:46 -!- Xion has left (?).
11:32:57 <oerjan> 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: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 <ais523> slereah__: INTERCAL's unary operators work by opping the number and the number rotated to the left
17:34:56 <ais523> 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 <lament> is there a programming language with macros that are easy to write?
18:46:04 <ais523> lament: depends on what you mean by "macros"
18:46:13 <ais523> and "easy to write", for that matter
18:46:47 <lament> well, i'm looking at scheme and CL macros...
18:46:52 <lament> and they just seem way too complicated
18:46:57 <lament> to actually use extensively
18:47:17 <lament> unlike scheme and lisp, which are nice languages, scheme and lisp macros are not nice languages.
18:47:49 <lament> i'd rather do my pattern matching and substitution with some other, better-suited tool.
18:47:50 <ais523> lament: you could use m4
18:47:58 <ais523> although it's not all that easy to write due to issues with nested quoting
18:48:11 <ais523> (it's a TC language based entirely on macros, and almost an esolang)
18:48:39 <lament> 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 <lament> i guess the real problem is that each macro definition is a compiler
18:49:58 <lament> and to write a lot of compilers you want a very powerful language
18:50:23 <lament> which syntax-rules doesn't strike me as :)
18:51:45 <ais523> ISTR there was an assembler which used Brainfuck as a macro language
18:51:52 <ais523> but I'm pretty sure it was an esolanger who wrote it
18:53:18 <lament> oh, i actually haven't looked at r6rs macros
18:54:49 <lament> (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:26 <AnMaster> /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 <AnMaster> /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:54 <AnMaster> ccbi/mini/funge.d: In function 'loadMiniFunge':
19:48:54 <AnMaster> ccbi/mini/funge.d:103: error: conversion to non-scalar type requested
19:49:16 <Deewiant> the former sounds like a tango problem
19:49:49 <AnMaster> Deewiant, I can't change gdc version
19:49:58 <Deewiant> I haven't tested tango 0.99.5, can't guarantee that will work
19:50:07 <AnMaster> Deewiant, what one have you used then?
19:50:17 <AnMaster> gcc (GCC) 4.1.2 20070214 ( (gdc 0.24, using dmd 1.020)) (Gentoo 4.1.2 p1.0.2)
19:50:23 <Deewiant> like it says on the page, tango 0.99.4
19:50:30 <Deewiant> there's a note about that on the page as well
19:50:44 <AnMaster> "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 <Deewiant> yeah, it looks like the same change has to be done in mini/funge.d
19:52:00 <AnMaster> Deewiant, and the tango thing? downgrading is not an option, I got other apps needing the latter version
19:52:39 <ais523> lament: good to hear it
19:52:44 <Deewiant> 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 <ais523> just out of interest, did you already know vi?
19:52:58 <Deewiant> AnMaster: or rather, the problem is that your version of GDC is too ancient for Tango
19:53:01 <lament> i predict i'll learn emacs for about 5 minutes, then stop
19:53:50 <ais523> 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 <AnMaster> Deewiant, I can't find 0.99.4 anywhere
19:54:17 <Deewiant> AnMaster: http://www.dsource.org/projects/tango/wiki/PreviousReleases
19:54:21 <lament> ais523: i know, but everything else seems really difficult
19:54:25 <ais523> 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 <ais523> lament: the docs give a misleading view of what it's like, in my mind
19:54:52 <ais523> because different people use different shortcuts
19:55:02 <lament> 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 <ais523> lament: type the first letter that you haven't written so far and hit tab again
19:55:26 <ais523> it's bolded in recent versions
19:55:46 <ais523> (if that isn't unique, then you type another letter and so on)
19:56:21 <lament> they're not completions sometimes
19:56:36 <lament> like when you want to switch to another buffer (C-x C-b)
19:56:45 <lament> you get a list of buffers, itself in another window
19:57:05 <ais523> lament: C-x C-b is different from C-x b
19:57:18 <ais523> one puts up the list, the other lets you tab-complete the name on the minibuffer line
19:57:27 <ais523> (unfortunately, I can never remember which is which)
19:57:39 <lament> i'd like both at once, of course
19:57:46 <lament> show a list of all buffers, and tab-complete the name
19:58:19 <ais523> lament: go to the minibuffer-entry version, then hit tab twice
19:58:27 <ais523> that puts up a list of things for everything that tab-completes
19:59:01 -!- atsampson has joined.
19:59:06 <AnMaster> Deewiant, that older tango fails to build
19:59:11 <AnMaster> 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:53 <Deewiant> or the latest SVN version of GDC
20:00:12 <AnMaster> Deewiant, then I'd rather skip ccbi, *shrugs*
20:00:31 <AnMaster> and this tango thing doesn't even want to install to a prefix
20:00:44 <Deewiant> I don't know about tango, join #d.tango and complain
20:00:56 <Deewiant> it works for me using DMD just fine
20:00:59 <AnMaster> Deewiant, I'm writing a conformat c one :)
20:01:23 <AnMaster> already GOOD up to k test, k is not yet implemented
20:02:14 <AnMaster> http://rafb.net/p/Y44uBK56.html
20:02:24 <AnMaster> started coding on it yesterday
20:03:01 <AnMaster> Deewiant, I have some issues with finding a sparse matrix library or something for C though
20:03:23 <AnMaster> currently I just allocate a rather large array and use an abstraction so it should be easy to replace with something sane later
20:05:31 <ais523> AnMaster: http://pastebin.ca/936934 is the changes I had to make to ccbi to get it to run under gdc
20:05:43 <ais523> (mostly on Deewiant's guidance)
20:07:21 <ais523> diff -r ccbi_src/fingerprints/rcfunge98/base.d ../ccbi_fixed/fingerprints/rcfunge98/base.d
20:07:31 <ais523> sorry, missed it off my copy&paste somehow
20:07:38 <Deewiant> ais523: I've since changed that code so it no longer uses tango.core.Array
20:07:56 <Deewiant> but hmm, I'm getting this tango error with DMD on Linux myself
20:08:12 <AnMaster> Deewiant, with the current tango? heh
20:08:42 <Deewiant> AnMaster: not sure which version it is, SVN HEAD from a few weeks back i think
20:09:04 <Deewiant> I think I know what could cause it but I'm not sure how to fix it
20:16:02 <AnMaster> Deewiant, should k work on z btw?
20:16:25 <AnMaster> but when looking at CCBI source it looks like it ignores z too?
20:16:35 <AnMaster> the specs aren't clear on that point
20:17:08 <Deewiant> well, it ignores z because it doesn't matter
20:17:16 <Deewiant> but it only reflects on space and ; IIRC
20:17:17 <AnMaster> it does when concurrent doesn't it?
20:17:37 <AnMaster> if (i == ' ' || i == ';' || i == 'z')
20:17:45 <AnMaster> looks like it doesn't reflect on either?
20:17:50 <Deewiant> AnMaster: you got that tango.core.Array problem with the latest tango (0.99.5) correct?
20:18:00 <AnMaster> Deewiant, indeed it was 0.99.5
20:18:03 <Deewiant> doesn't matter, the spec is so unclear
20:19:42 <Deewiant> I got a minimal sample which doesn't compile due to that error
20:20:01 <Deewiant> I'll see if it's fixable or a bug
20:25:07 <Deewiant> looks like it's an ages-old compiler bug which everybody hates but for some reason has never been fixed
20:25:26 <AnMaster> so what will you do, if it affects both gdb and dmd?
20:25:45 <Deewiant> the problem is that I'm calling "tango.text.Regex.find"
20:25:51 <AnMaster> send me a patch for ccbi when you fixed it
20:25:57 <Deewiant> but there's no function called 'find' in that module any moore
20:26:10 <AnMaster> so why don't it report that error instead?
20:26:22 -!- olsner has joined.
20:26:24 <Deewiant> tango.text.Regex privately imports tango.core.Array
20:26:42 <Deewiant> this should mean that trying to call regex.find would fail since there is no find
20:27:05 <Deewiant> 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 <Deewiant> and, of course, fails since the param types don't match
20:27:34 <Deewiant> reported it myself, about 20 months ago
20:27:40 -!- Corun has joined.
20:28:00 <Deewiant> 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:46 <Deewiant> AnMaster: there's a function called 'help' in ccbi.d
20:30:56 <Deewiant> replace its definition with the following
20:30:59 <Deewiant> static bool help(char[] s) { return (regex.Regex("^(--?|/)([?]|h(e?lp)?)$", "i").test(s)); }
20:31:26 <Deewiant> it compiles, but doesn't work :-P
20:31:49 * AnMaster is trying to get the darn k to work
20:31:59 <AnMaster> Deewiant, ccbi is "gpl 2 or later" right?
20:32:45 <AnMaster> I just need to read your code to understand how k should work
20:33:28 <AnMaster> the bit about moving if executing k did move it is complex
20:33:45 <Deewiant> and that's the main reason why I didn't implement nested k
20:33:45 <AnMaster> if (ip.x == x && ip.y == y && ip.dx == dx && ip.dy == dy)
20:34:03 <AnMaster> Deewiant, mine will reflect on nested k, and print a warning
20:34:22 <AnMaster> (with warnings enabled that is)
20:34:50 <Deewiant> mine just does something random :-)
20:35:22 <AnMaster> I try to make all undefined cases sane and also clean up the standard at the same time
20:35:28 <Deewiant> AnMaster: I pastebinned the nested k stuff last time, so you can have a look-see there too
20:35:29 <AnMaster> still waiting for answer on that though
20:35:44 <AnMaster> Deewiant, yes I did, and your code really makes it much clearer
20:35:52 <AnMaster> and I'm not going to do nested k
20:36:33 <ais523> 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 <Deewiant> 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:37:13 <AnMaster> ais523, then it's a problem of the programmer IMO
20:37:13 <ais523> not that 111#kkk is particularly useful, anyway
20:37:15 <Deewiant> 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 <Deewiant> ais523: at that point it's prudent to ask "what did you expect?" :-)
20:37:47 <AnMaster> 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 <AnMaster> ccbi/stdlib.d:238: function ccbi.stdlib.RawCoutFilter!(false).RawCoutFilter.write function write does not override any
20:37:47 <AnMaster> ccbi/stdlib.d:386: template instance ccbi.stdlib.RawCoutFilter!(false) error instantiating
20:38:35 <Deewiant> AnMaster: my function returns ulong while the library function returns uint or vice versa
20:39:01 <Deewiant> this is due to the fact that you're on x86_64
20:39:28 <AnMaster> Deewiant, don't you have some intptr_t or such for your pointers? :P
20:39:40 <AnMaster> 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:59 <Deewiant> AnMaster: but it appears the code uses uint :-P
20:40:06 <Deewiant> I just assumed it would be size_t
20:40:17 <Deewiant> AnMaster: just change the return type of write from size_t to uint
20:40:25 <AnMaster> Deewiant, where should I do so?
20:40:44 <Deewiant> AnMaster: ccbi/stdlib.d:238 as it says :-)
20:40:46 <AnMaster> Deewiant, btw rebuild failed to build until I did: ln -s . ccbi
20:41:05 <Deewiant> AnMaster: yeah, because I'm an idiot and packaged the code under ccbi_src directory instead of ccbi
20:41:10 <Deewiant> AnMaster: I noticed that myself :-)
20:42:06 <AnMaster> obj/ccbi.ccbi.o: In function `_Dmain':
20:42:06 <AnMaster> ccbi.d:(.text+0x711): undefined reference to `_D5tango4core9Exception24IllegalArgumentException7__ClassZ'
20:42:06 <AnMaster> ccbi.d:(.text+0x72c): undefined reference to `_D5tango4core9Exception24IllegalArgumentException5_ctorMFAaZC5tango4core9Exception24IllegalArgumentException'
20:42:43 <ais523> AnMaster: are you recursing into the source directories, and linking tango?
20:42:59 <GregorR> WTF? I click off of a D channel, and find D talk.
20:43:00 <ais523> I had that sort of error when I built, due to only linking files in the main src directory
20:43:03 <Deewiant> and it outputs a six-line command line when it tries to build?
20:43:09 <AnMaster> I installed tango following http://dsource.org/projects/tango/wiki/UnixInstallGdc
20:44:01 <AnMaster> now it says: ccbi.d(19): module instructions cannot read file 'ccbi/instructions.d'
20:44:14 <Deewiant> AnMaster: i.e. a huge "gcc tango/core/Exception.d" etc.
20:44:14 <AnMaster> oh wait it removed the symlink
20:44:51 <Deewiant> AnMaster: did you see the "Troubleshooting" section on that page?
20:44:56 <GregorR> May I ask: Since when do so many people in #esoteric use D?
20:45:05 <Deewiant> GregorR: only I do, and people can't get stuff to compile :-P
20:45:07 <ais523> GregorR: it's the language in which CCBI was written
20:45:24 * GregorR strokes his nonexistent beard.
20:45:37 <Deewiant> GregorR: tango + GDC 0.24 isn't a good combination
20:45:45 <AnMaster> /usr/bin/x86_64-pc-linux-gnu-gdmd
20:45:45 <AnMaster> /usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2/gdmd
20:45:45 <AnMaster> /usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2/x86_64-pc-linux-gnu-gdmd
20:46:03 <AnMaster> /usr/bin/gdmd is some gentoo specific wrapper
20:46:20 <Deewiant> AnMaster: probably the third but I'd check all to be sure
20:47:40 -!- oklofok has changed nick to oklopol.
20:49:44 <AnMaster> if that also fails I guess my gdc install got borked because of tango
20:49:59 <AnMaster> and I'm not going to recompile gcc and gdc
20:50:32 <Deewiant> the binaries are the same, after all
20:51:42 <AnMaster> 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 <AnMaster> ar: creating libtango-cc-tango.a
20:51:42 <AnMaster> ar: core/BitManip.o: No such file or directory
20:51:42 <AnMaster> gmake[1]: *** [libtango-cc-tango.a] Error 1
20:52:03 -!- oerjan has joined.
20:52:22 <AnMaster> look, it replaced libgphobos.a it seems
20:52:48 <AnMaster> it didn't even create a backup
20:52:48 <Deewiant> AnMaster: you can always compile lib/common/core/BitManip.d yourself
20:53:17 <Deewiant> AnMaster: "gdmd -c lib/common/core/BitManip.d" or whatever :-)
20:53:57 <AnMaster> but it cleans it out on a new build
20:55:33 <Deewiant> AnMaster: tell you what, see if http://iki.fi/deewiant/ccbi works for you
20:56:34 <AnMaster> tango.core.Exception.ArrayBoundsException@/u/opi/48/mniemenm/bin/../opt/dmd/import/tango/core/Array.d(2131): Array index out of bounds
20:56:47 <Deewiant> that's because I don't have 0.99.5
20:56:52 <Deewiant> and the trunk I do have is buggy :-P
20:57:08 <Deewiant> well, I guess not since it dies if it gets command line arguments :-)
20:57:12 <Deewiant> I'll get 0.99.5 and build a new one
20:57:16 <AnMaster> $ ./ccbi ~/bashfunge/trunk/mycology/mycology.b98
20:57:17 <AnMaster> tango.core.Exception.ArrayBoundsException@/u/opi/48/mniemenm/bin/../opt/dmd/import/tango/core/Array.d(2131): Array index out of bounds
21:02:07 <AnMaster> 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 <AnMaster> Unknown instruction at x=11 y=49: ' (39)
21:02:29 -!- BMeph has quit (Read error: 104 (Connection reset by peer)).
21:03:21 -!- sebbu2 has joined.
21:06:40 <ais523> AnMaster: what lang are you writing the implementation in?
21:06:55 <AnMaster> ais523, C, using several C99 features
21:06:59 <AnMaster> BAD: wraparound with non-cardinal delta doesn't work
21:07:49 <ais523> 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 <AnMaster> 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 <ais523> 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 <AnMaster> and then there is the stack stack thingy
21:09:31 <ais523> it's the whole ABSTAIN thing
21:09:43 <ais523> you just need a way to make things tickless (if threading), and to prevent commands running
21:09:51 <ais523> so you have a flag in your interp which makes all commands into NOPs
21:10:10 <ais523> then, every time you hit the playfield edge, you toggle the flag and change the IP direction
21:10:15 <AnMaster> like ipmCODE ipmSTRING and so on
21:10:28 <AnMaster> ais523, yes I know that version
21:11:24 <ais523> you only need to do it for non-cardinal directions
21:11:33 <AnMaster> how on earth to find if this is the edge or not when traveling non-cardinal!
21:11:41 <AnMaster> I can't see how I could find it
21:11:58 <Deewiant> AnMaster: err, referring to CCBI of course :-P
21:12:01 <AnMaster> Deewiant, wgetting same binary?
21:12:12 <Deewiant> appears to work on my end, at least :-)
21:12:52 <AnMaster> Deewiant, also where does one find docs on the official catseye extensions
21:13:05 <AnMaster> reverse engineering your code = not fun
21:13:07 <Deewiant> AnMaster: I believe I linked there last time
21:13:19 <Deewiant> AnMaster: same place as the funge-98 spec, move one directory up
21:13:36 <Deewiant> AnMaster: as in, http://catseye.tc/projects/funge98/
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 <AnMaster> 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 <AnMaster> store some sort of bounding box and reflect only when you hit it?
21:18:14 <AnMaster> err not reflect, but wrap I mean
21:18:38 <ais523> 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 <ais523> because anything that goes off the left or right edge will hit the top or bottom eventually
21:19:01 <ais523> unless it goes directly left or right
21:19:04 <Deewiant> AnMaster: what I do is keep track of min/max X and Y
21:19:26 <Deewiant> AnMaster: which isn't 100% accurate (c.f. the mycology tests on wrap at edge of file/line) but works
21:19:48 <AnMaster> Deewiant, ah, so a kind of bounding box then
21:19:54 <oerjan> AnMaster: check against each edge in turn and drop it down at the one it leaves first, i think
21:20:23 <Deewiant> I think GLfunge98 did something cool, but I can't remember for sure
21:20:24 <AnMaster> right, can't do that though until I get the final fungespace thing to work
21:20:41 <ais523> such as having some 'uninitialised' value on the playfield that magically turns into 32 when you try to read it
21:20:44 <AnMaster> Deewiant, it passes mycology at least
21:20:51 <Deewiant> AnMaster: alright, good enough :-)
21:21:12 <AnMaster> Deewiant, but it isn't 64-bit :(
21:21:23 <Deewiant> don't have a 64-bit machine, sorry
21:21:30 <Deewiant> compile it yourself if that's a problem ;-)
21:21:46 <AnMaster> Deewiant, you know the problems that cause
21:22:06 <Deewiant> AnMaster: AFAIK GDC's 64-bit support is a bit flaky anyway
21:22:30 <AnMaster> 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 <AnMaster> because current is just extended 800x2500 array, until I find some sparse matrix that work XD
21:23:38 <AnMaster> (oh and setting -1,-1 would still work, it wraps to positive value, so even if you jumped there, mycology would never know)
21:24:56 <AnMaster> Deewiant, err your y is not correct it seems, it leaves out some utf8 from env variables?
21:25:28 <Deewiant> the envvar support on linux is fairly untested
21:25:29 <AnMaster> LC_ALL=sv_SE.UTF8 one env variable contains a ö
21:25:44 <Deewiant> AnMaster: pipe it to a file and see what comes out at that pos
21:25:46 <AnMaster> Deewiant, you don't run a real OS normally?
21:25:56 <Deewiant> AnMaster: no, I like my computer games :-)
21:26:27 <Deewiant> AnMaster: just nothing? like "aäb" becomes "ab"?
21:26:32 * AnMaster notes CCBI is NOT conforming :P
21:28:26 <AnMaster> 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 <AnMaster> possibly in some cases to other values than what ccbi does, (though I will keep those I find sane)
21:29:23 <ais523> 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:58 <ais523> AnMaster: no, the lines needn't be consecutive
21:30:09 <ais523> I'm trying to verify that my infinite loop program is actually working
21:30:09 <AnMaster> ais523, ah like sort -n | uniq -d ?
21:30:46 <AnMaster> <greybot> awk '!seen[$0]++' # Remove second and subsequent instances of each input line, without having to sort them first.
21:31:08 <ais523> AnMaster: actually I don't
21:31:21 <AnMaster> ais523, I don't very well either, just the basics
21:31:25 <ais523> I know sed and perl, though
21:31:40 <AnMaster> but I'm sure you could do it in them
21:31:51 <AnMaster> 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 <ais523> although I could guess what it did anyway
21:32:58 <ais523> a useful thing to have around if you don't know awk
21:33:02 <ais523> because it compiles almost literally
21:33:09 <ais523> without making too much of a mess of the code
21:33:21 <Deewiant> AnMaster: export A=ä; and then running Mycology works just fine here
21:33:49 -!- slereah_ has joined.
21:34:06 <ais523> yes, my infinite loop works!
21:34:20 <ais523> #!/usr/bin/env underlambda
21:34:20 <ais523> (((x)\x)(((((z)y(z)x^)\z^)\y^)\x^)((y)(y)z^)\y\z)((x)x^)\x^|
21:34:21 <Deewiant> 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 <AnMaster> Deewiant, if I have time that is
21:34:41 <ais523> of course, it's possible to write that much more simply as (:^):^, but I wanted to do it Unlambda-style
21:35:03 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
21:35:13 <ais523> (what I've written there is almost literally ```sii``sii, except that to save space I lambdad ``sii in `xx)
21:35:20 <AnMaster> Deewiant, hm I wonder, a sandbox mode, that doesn't allow file, and restricts some extensions partly, would that be nice?
21:36:04 <AnMaster> Deewiant, for funge08 as a flag it can check with y to see if the interpreter is in that mode
21:36:05 <ais523> 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:17 <Deewiant> AnMaster: well, y already says whether files are supported
21:36:26 <Deewiant> AnMaster: so if the interpreter is in that mode it can just say so in y
21:36:28 <AnMaster> Deewiant, some extensions allow IO right?
21:36:44 <ais523> not all interps have to support all fingerprints anyway
21:36:45 <Deewiant> 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:59 <Deewiant> TURT, DIRF, FILE, some others maybe, yes.
21:37:09 <AnMaster> Deewiant, but some may have useful stuff that does work in a sandbox but other parts that don't?
21:37:30 <Deewiant> AnMaster: none of those do, and I think it's poor style to make a fingerprint which does
21:37:48 <Deewiant> AnMaster: of course "useful" is relative :-P
21:38:00 <Deewiant> AnMaster: but if the output doesn't work, the corresponding instruction just reflects
21:38:05 <Deewiant> so I don't think it's that bad
21:38:18 <Deewiant> a conforming script should just say "output failed" at that point and not die
21:38:30 <AnMaster> 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:47 <Deewiant> AnMaster: I can't test for every possible bug
21:39:27 <Deewiant> 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:40:12 <Deewiant> that'd set the IP's delta to (109,114) and leave some crap on the stack
21:40:18 <Deewiant> I can't test for that, either :-P
21:40:31 <ais523> well, you can, because they're pretty large numbers, but you probably shouldn't
21:40:31 <AnMaster> Deewiant, how can you write strings backwards in your head
21:40:50 <Deewiant> 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:55 <Deewiant> AnMaster: 1 year of writing Befunge :-D
21:41:28 <AnMaster> Deewiant, if mycology was easier to read :/
21:41:30 <Deewiant> but no, I usually had a program reverse long strings for me
21:41:55 <AnMaster> haha that actually makes sense in Swedish backwards
21:42:49 <AnMaster> ok now you are just crasy, using uncide to write upside down
21:42:52 <ais523> 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 <oerjan> so it's not the same as retvis?
21:43:11 <Deewiant> AnMaster: suggestion if you haven't done so already - implement a "trace mode" (or full-blown debugging)
21:43:14 <AnMaster> 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:26 <Deewiant> ais523: lɯʇɥ˙dılɟ/ɯoɔ˙pɐɟʌǝɹ˙ʍʍʍ//:dʇʇɥ
21:43:55 <ais523> AnMaster: you put the question mark at the wrong end of that word
21:43:59 <ais523> it's revfad upside-down
21:44:05 <Deewiant> AnMaster: yeah, that was my mistake really
21:44:14 <Deewiant> AnMaster: at the start I didn't expect it to become nearly as long as it did
21:44:20 <ais523> (my font managed it fine)
21:44:31 <Deewiant> AnMaster: the Befunge-93 area had to be squashed since it has to fit in 80x25
21:44:34 <AnMaster> Deewiant, heh, yes mine just does 38 basic tests
21:44:40 <Deewiant> AnMaster: after that I figured maybe 80x200 would fit the whole thing
21:44:52 <AnMaster> or you could have used several files
21:45:02 <Deewiant> I decided against that early on
21:45:05 <ais523> hmm... now we need a reversible esolang in which writing a string upside-down reverses what a function does
21:45:17 <Deewiant> because I wanted it to be easy to use
21:45:26 <ais523> that way you don't need all instructions to be self-inverse, but still have symmetry
21:45:27 <Deewiant> "foo mycology.b98" and bam, you know whether your interpreter works or not
21:45:48 <Deewiant> fungus is much more annoying than that - it tries to load parts of itself using y and i
21:45:49 <ais523> incidentally, the upside-down i and l are wrong
21:46:17 <ais523> Deewiant: at least it doesn't try to load parts of itself using compression and p
21:46:22 <Deewiant> so if y and/or i aren't supported properly you get all kinds of problems
21:46:34 <AnMaster> Deewiant, but, so does mycology, it tries to load the randomness thing
21:47:02 <AnMaster> Deewiant, where do you find fungus?
21:47:27 <Deewiant> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/fungus.php
21:47:53 <Deewiant> yeah, he's proud of it, a domain name which is valid befunge code :-)
21:48:07 <ais523> Deewiant: aren't all strings valid Befunge code?
21:48:15 <AnMaster> look, I bet there isn't any fight over that domain
21:48:44 <Deewiant> ais523: ...and does something meaningful and doesn't loop infinitely
21:49:25 <Deewiant> although I suppose if you run sed s/at/@/g you'll get many non-infinite-looping domain names
21:49:43 <Deewiant> but I guess the idea is that it spells out some code, not that it is code in itself :-)
21:56:40 <ais523> wow, there's a Befunge-in-INTERCAL there
21:56:57 <ais523> if it works, I'm going to ask for permission to add it to the C-INTERCAL distribution
21:57:24 <ais523> it hit an error when I first tried to run it, though
22:00:33 <ais523> Deewiant: mycology is unfortunately more than 80 chars wide
22:00:45 <ais523> is there an 80x25 version for use with Befunge-93 interpreters?
22:04:56 <AnMaster> ais523, the first 80x25 chars in mycology is 93 testsuite
22:05:03 <ais523> yes, I just realised that
22:05:17 <ais523> that's a nonconformance in the INTERCAL interp already, then
22:06:58 * oerjan is suddenly surprised there isn't a befunge debugger named penicillin
22:07:41 <AnMaster> oerjan, heh? most times you can output such in interpreters
22:07:42 <oerjan> or something like that
22:08:10 <oerjan> i mean i am surprised no one has used that name...
22:09:29 <ais523> oerjan: I don't see anything obvious about it
22:09:56 <ais523> in other news, interfunge passes Mycology-93
22:10:10 <oerjan> penicillin is made from a fungus...
22:12:00 <ais523> AnMaster: it seems J^4 wrote a Befunge interp in INTERCAL
22:12:23 <AnMaster> next you are going to tell me someone did that in brainfuck
22:12:26 <ais523> oerjan wrote an Unlambda interp in INTERCAL, though, so I'm not sure which is more insane
22:12:35 <AnMaster> and I'm just waiting for a befunge98 interpreter in befunge98
22:12:39 <ais523> and AnMaster: brainfuck is marginally easier to program in than INTERCAL, in most cases
22:12:59 <ais523> except for those cases where INTERCAL's more advanced features come in useful
22:13:23 <ais523> INTERCAL's probably better for really complex programs, but writing such in esolangs is normally inadvisable anyway
22:13:36 <ais523> AnMaster: threading and backtracking can be useful
22:13:47 <ais523> AnMaster: PLEASE COME FROM by itself is a syntax error
22:13:50 <AnMaster> ais523, isn't there some threaded brainfuck versions?
22:14:06 <AnMaster> ais523, look I don't know intercal! I just know a few words
22:14:10 <ais523> 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 <ais523> and yes, there's Brainfork
22:14:23 <ais523> but INTERCAL's threading model is more elegant IMO
22:14:41 <AnMaster> ais523, look, anything is more elegant than threading in esoteric languages IMO
22:14:59 <ais523> you can't get much more elegant than aiming two COME FROMs at the same line
22:15:23 <ais523> AnMaster: multithread and run both
22:15:47 <ais523> what did you expect it to do?
22:18:19 <ais523> it does that if multithreading is disabled
22:20:14 <ais523> BTW, the backtracking model is more general than Prolog's
22:40:39 <ais523> do you know what a continuation is?
22:40:47 <ais523> if you do, it's slightly easier to explain
22:41:13 <AnMaster> ais523, isn't that something like passing some code and it's context around?
22:41:24 <ais523> the context itself is the continuation
22:41:32 <ais523> you were describing Continuation Passing Style
22:41:33 <AnMaster> note: I'm an imperative and object orientated guy!
22:41:46 <ais523> backtracking is an imperativish version
22:42:02 <AnMaster> go on, I'll join in when I can
22:42:10 <ais523> 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 <ais523> so for instance, you could MAYBE assign a value to a variable
22:42:33 <AnMaster> right, no problem if (random() %1)
22:42:47 <AnMaster> should likley be uniform or close enough
22:42:51 <ais523> the assignment is done, but the software remembers the state when it was done
22:43:14 <ais523> 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 <AnMaster> ais523, I see, useful for debugging, but not much else?
22:43:33 <ais523> or you can GO AHEAD and forget the saved state just before the assignment
22:43:42 <ais523> AnMaster: it's useful not just for debugging
22:43:48 <ais523> for instance if you want to implement regexps
22:44:04 <AnMaster> yes, I'd use pcre, or for parser, bison/yacc/whatever
22:44:11 <ais523> for instance, you might not be sure what a particular symbol means without reading more context
22:44:25 <ais523> or whether a particular bit of a regexp matches here or later
22:44:36 <AnMaster> ais523, ah, evil lookaheads :P
22:44:37 <ais523> for instance, consider /ab/ matching "cdaefabg"
22:44:59 <ais523> instead of looking-ahead, you can MAYBE match the a of /ab/ to the first a in the string
22:45:18 <AnMaster> ais523, but that is likely to be slower?
22:45:20 <ais523> 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 <ais523> and backtracking is infamous for being slow
22:45:43 <AnMaster> then it's pointless *true C programmer*
22:45:45 <ais523> and also producing useless debug info in the case that none of the options match
22:46:00 <ais523> but sometimes it's the easiest option
22:46:07 <AnMaster> ais523, it isn't the best still
22:46:10 <ais523> (in that way it's sort of like recursion; slow but sometimes easiest)
22:46:42 <AnMaster> ais523, I still wouldn't do recursion if I could avoid it!
22:47:16 <AnMaster> 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 <AnMaster> because I won't excute looped k instructions in funge
22:47:40 <AnMaster> but I can hardly blame gcc for not being smart enough
22:48:18 <ais523> for an example, you can look at http://pastebin.ca/937153
22:48:30 <ais523> it's permute.i from the C-INTERCAL examples, and its documentation
22:49:41 <ais523> it's actually pretty easy to read for an INTERCAL program, which is 'not very'
22:50:20 <AnMaster> look, at least befunge got some kind of elegance!
22:53:42 <ais523> INTERCAL has its own kind of elegance
22:53:51 <ais523> there's a translation into a weird C/INTERCAL/Prolog mix lower down the page
22:54:05 <AnMaster> yes and that is equally hard to read
22:54:43 <ais523> the program, as written, is basically impossible to express in C
22:54:53 <ais523> (even though I compile into C)
22:55:01 <ais523> you have to write it really differently
22:55:08 * ais523 goes to paste the C it compiles into
22:55:56 <AnMaster> I guess a lot of goto could do it
22:56:18 <ais523> http://pastebin.ca/937166
22:56:22 <ais523> AnMaster: worse. setjmp
22:56:40 <ais523> and you have to save all the variables involved, too
22:56:55 <ais523> AnMaster: it's the INTERCAL compiler's name
22:57:08 <AnMaster> ick is how I feel over that code
22:57:08 <ais523> the ick_ is the name-mangle prefix it uses so as not to clash with other people's code
22:57:19 <ais523> that's only half of it
22:57:36 <ais523> because you have to link in libickmt too, which contains most of the heavy work for the backtracking
22:57:42 <AnMaster> wait a sec, how does rand differ from random
22:57:54 <ais523> AnMaster: it's standard C89, rather than POSIX
22:58:10 <AnMaster> 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 <ais523> and although there's no reason for it in either standard, random tends to be more random
22:58:28 <AnMaster> ais523, ah that's good, I use random()
22:58:48 <AnMaster> weird man srand works, but man 3 rand gives me an openssl man page
22:59:58 <AnMaster> ais523, what about drand48 then?
23:00:21 <slereah_> http://www.muppetlabs.com/~breadbox/intercal-man/blotch.gif
23:00:33 <ais523> slereah_: it doesn't actually mean anything
23:00:43 <ais523> it was listed in the original spec as being available for future expansion
23:01:06 <slereah_> But does it exist in an actual character set?
23:01:14 <ais523> you get it by overprinting a whole load of punctuation marks
23:01:25 <ais523> I think it's [^H]^H-^H# but I'm not sure
23:01:35 <slereah_> Punching the fuck out of the punch card?
23:01:51 <ais523> hey, at least two INTERCAL-72 operators were overpunches
23:02:05 <ais523> but they've since been added to Unicode
23:02:36 <ais523> the bookworm is the mathematical for-all symbol
23:02:48 <ais523> and the change symbol is a cent sign
23:02:52 <AnMaster> someone was stupid enough to do an esoteric language on punch cards!?
23:02:55 <ais523> it dates from the days of EBCDIC
23:03:02 <ais523> it was invented in 1972, after all
23:03:04 <slereah_> Well, it was all that was available
23:03:18 <AnMaster> slereah_, what about MULTICS thing?
23:03:22 <ais523> CLC-INTERCAL still accepts the "Hollerith" input format
23:03:42 <slereah_> 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:04:17 <AnMaster> http://en.wikipedia.org/wiki/Multics
23:04:39 <slereah_> I'm also not that computer savvy
23:05:05 <ais523> AnMaster: if you feel insane enough, read http://filebin.ca/vjsonz/unravel.c
23:05:15 <slereah_> The internet really let me down when it comes to punch cards.
23:05:37 <ais523> it's the multithreading/backtracking part of C-INTERCAL's runtime library
23:05:49 <ais523> that interacts with the compiled-from-INTERCAL program I pasted recently
23:06:23 <AnMaster> look you can do that *without setjmp
23:06:35 <ais523> yes, in theory you can do anything without setjmp
23:06:44 <ais523> in this case, though, the setjmp jumps out of the library and into the user program
23:06:46 <AnMaster> ais523, and even it's easy here now
23:07:00 <ais523> in most special cases it's easy
23:07:11 <ais523> but have you even seen what the general case looks like? It's horrific
23:08:02 <AnMaster> I don't want to read more of that file
23:08:38 <ais523> any budding open source programmer is invited to refactor if they feel they're up to the challenge
23:09:11 <AnMaster> I don't want to mess with INTERCAL ever in compiled form
23:09:52 <ais523> unravel.c manages to safely contain most of the really gnarly stuff, anyway
23:10:03 <ais523> the rest of the compiler is completely sane by comparison
23:10:14 <AnMaster> Deewiant, I find my interpreter faster up to the point where it fails mycology
23:10:47 <ais523> (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 <ais523> AnMaster: My client flags Deewiant as being away, so you're unlikely to get an answer immediately
23:11:37 <ais523> but then it flags you as beeing away too
23:13:24 <AnMaster> 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 <AnMaster> Deewiant, n29*y <-- shouldn't that return 1? because there is one item on the single stack, the top stack
23:17:00 <AnMaster> Deewiant, further, ccbi gets into an infinite loop or something on mycouser if I do this:
23:17:01 <AnMaster> Assuming Befunge-98 instructions work...
23:17:02 <AnMaster> Which base to read input in? 3
23:17:02 <AnMaster> Input a number in that base: 47
23:17:40 <AnMaster> Which base to read input in? 473
23:17:45 <AnMaster> didn't let me input anything :(
23:21:19 <ais523> wow: http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/tquine.php
23:21:30 <ais523> that's certainly a new twist on the notion of a quine
23:22:11 -!- RedDak has joined.
23:23:00 <olsner> wonderful domain name too
23:25:51 -!- ais523 has quit ("Bye!").
23:26:08 <slereah_> Found this in the vintage computer section : http://cgi.ebay.com/chinese-ABACUS-WITH-LEATHER-DRAGON-PHOENIX-WOOD_W0QQitemZ180222253443QQihZ008QQcategoryZ1247QQssPageNameZWDVWQQrdZ1QQcmdZViewItem
23:27:32 <olsner> heh, "vintage computer"
23:27:50 <olsner> Item location:??, ??, China
23:29:05 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php <-- heh
23:29:31 <AnMaster> 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").
00:05:18 -!- RedDak has quit (Remote closed the connection).
00:05:27 <lament> damn, the more i look at lisp, the better it seems
00:20:33 <lament> but i'm still pretty sure it sucks :)
00:27:04 -!- timotiis has quit ("leaving").
00:31:38 -!- Tritonio_ has joined.
00:39:35 -!- sebbu has quit ("@+").
00:40:46 -!- BMeph has joined.
01:24:14 -!- olsner has quit ("Leaving").
01:35:41 -!- calamari has joined.
02:24:51 -!- CakeProphet has joined.
02:26:38 <CakeProphet> like, not a tutorial, but something that has a lot of information I can look up quickly.
02:49:33 -!- Corun has quit (Read error: 110 (Connection timed out)).
03:02:57 -!- CakeProphet_ has joined.
03:19:22 -!- CakeProphet has quit (Read error: 110 (Connection timed out)).
03:31:01 -!- CakeProphet_ has quit ("haaaaaaaaaa").
04:02:31 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
04:03:08 -!- GregorR has joined.
04:15:23 * pikhq declares some of his music 'hell for basses'.
04:15:37 <pikhq> The *bass part* is written in the lower end of the treble clef. :(
05:37:26 -!- immibis has joined.
05:38:04 -!- immibis has left (?).
06:18:00 <lament> no bassist is going to like you for that.
06:19:32 <pikhq> lament: It's music that I have to sing.
06:19:41 <pikhq> I fucking hate it.
06:19:55 * pikhq wants to be *below* the bass clef, thanks.
06:20:12 <pikhq> I'll just convince the tenors to sing my part. :p
06:59:01 -!- calamari has quit ("Leaving").
07:14:24 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:26 -!- bsmntbombdood has quit.
09:00:04 -!- bsmntbombdood has joined.
09:27:19 -!- oerjan has joined.
10:11:06 <AnMaster> stack stacks in funge is really complex
10:27:21 <oklopol> pikhq: "your music", assumed you meant a composition of yours, but i now realize that might not be the case
10:27:44 <oklopol> if its not yours that way, i ofc don't care much for the score
10:28:13 <oklopol> although, i guess i still do a bit
10:37:47 <oklopol> guitar pro is one awesome program, it simply cannot play a song correct :D
10:44:20 -!- oklokok has joined.
10:44:36 <oklokok> used my morning well http://www.vjn.fi/oklopol/music/random/riff006.mid
10:45:35 <oklokok> that's just the midi guitar, it' kinda sucky
10:46:04 <faxathisia> It's the sort of similar to the sound as Ooze on megadrive
10:46:18 <oklokok> also, some parts i guess should have some synth, and some parts i haven't really thought through
10:46:47 <oklokok> because it's so fucking slow composing when you listen to it after every fucking note : P
10:47:58 <oklokok> faxathisia: i guess after that reaction i have to link you to some of my musics
10:48:52 <oklokok> http://www.mikseri.net/artists/?id=44508 <<< my old band
10:49:03 <oklokok> http://www.mikseri.net/artists/?id=62623 <<< my other current band
10:49:47 <oklokok> (the other one i don't have anything online for, and it's not really my band)
10:50:26 <oklokok> we have much better and weirder stuff nowadays, but haven't recorded yet
10:51:06 <oklokok> Syleily is not mine, and Wanna feel pain is only mine when the synth solo starts
10:51:20 <oklokok> which i play very badly, i used to suck quite bad
10:57:01 <oklokok> ...in case horses suck at that
10:57:08 <oklokok> not sure, never heard one sing
10:58:19 <oklokok> well, also http://www.vjn.fi/s/black.mp3 and http://www.vjn.fi/oklopol/music/etydes/all-as-midi.rar
10:58:30 <oklokok> listen to some of that if you have time
10:58:52 <oklokok> i can also upload you my hundreds of other gp songs if you want, but i think you're fine with those :P
10:59:35 <oklokok> usually do songs with that, because i tablatures are a lot nicer than the normal score notation
11:00:12 <oklokok> a matrix view is of course the best for composition, and i have some ascii notations i use, but i don't have any program that actually plays those, nowadays
11:00:31 <oklokok> should make one, just so lazy
11:05:15 <oklokok> actually i don't know what the *notation* is called, perhaps pikhq tells me
11:05:34 <oklokok> it's basically "note writing" in finnish
11:06:14 <oklokok> which is a quite idiotic, scores are only good for writing piano sheets, if that
11:06:39 -!- sebbu has joined.
11:11:08 <oklokok> i also have about a hundred riffs as a test of my newest notation, but you'd have to learn that
11:13:26 <oklokok> would be cool if i used even 50% of my time, i'd have enough stuff to fill the screen with links when someone comments my music :-)
11:13:43 <oklokok> unfortunately someone introduced me to the world of tv series
11:39:14 <oklokok> oerjan: verb verbing you verbing motherverber
11:42:57 <oerjan> Why can't pronoun all just verb adverb?
11:44:01 <oklokok> interjection exclamation mark i'm so adjective at pronoun
11:45:53 <oklokok> AnMaster: no need to verb adjective.
11:46:56 <AnMaster> to what? I can't figure out what you mean
11:47:32 <oklokok> oerjan: verb pronoun verb pronoun question mark
11:48:01 * AnMaster goes to verb on his noun interpreter
11:48:16 <oklokok> AnMaster: that might be for the vest.
11:48:35 <AnMaster> "vest"? A kind of clothing right?
11:49:11 <AnMaster> verb verb stackstacks of befunge!
11:49:26 <oklokok> what's adjective about them, really?
11:49:50 * oerjan calls a moratorium on generic grammar terms
11:50:01 <oklokok> how are they complex to do in c?
11:50:09 <AnMaster> can be either conformant funge, or C funge
11:50:28 <oklokok> you make a stack thingie, then make a stack of stacks.
11:50:48 <AnMaster> oklokok, yep, but then there is the complexities of { and } instructions
11:51:07 <AnMaster> with transfer of items in order between stacks and what not
11:51:12 <oklokok> umm, their behavior ais imperatively described there
11:51:21 <oklokok> you just do exactly what it says.
11:51:25 <AnMaster> and it isn't easy to implement
11:51:43 <AnMaster> not the way I made the stack structure
11:52:04 <AnMaster> using the variable sized structure to have an array of pointers to stacks at the end of the stack stack structure
11:52:06 <oklokok> make a function to move a certain amount of shit from the top of a stack to the top of another, and put a boolean flag there to indicate direction
11:52:26 <AnMaster> anyway I think I got it mostly now
11:52:46 <AnMaster> just need to do some magic to find storage offset
11:52:55 <oklokok> i don't know what that feature is, but i do know you don't have to use it, and it's trivial without it :P
11:55:31 <AnMaster> nah, but it means one less pointer redirection
11:56:34 <oklokok> well, if you care about stuff like that
12:00:08 <AnMaster> whoa, circular dependencies in headers sucks
12:00:46 * AnMaster adds a incomplete type to get around it.
12:20:42 <oklokok> Real = { Orig -> { int -> Orig;
12:20:43 <oklokok> + N -> Orig + (int N) } };
12:20:43 <oklokok> ((real 7) + 4) + (1 + (real 3))
12:23:29 <oklokok> 4 + 2.0 = 6, which might confuse some
12:27:47 <oerjan> Destroying mathematics as we know it
12:43:37 <Deewiant> AnMaster: only bases up to 36 are supported, I think it reflects if you give it something like that 473
12:43:57 <AnMaster> BAD: { transfers cells incorrectly
12:43:58 <AnMaster> 10 0 0 Stopping due to fear of corrupt stack stack
12:44:03 <AnMaster> Deewiant, I can't find what I do wrong
12:44:51 <AnMaster> I looked at how you do it, and I debugged output of stack before and after and it looks correct to me
12:44:54 <Deewiant> make a test proggy with just that 123456{ snippet (or whatever Mycology uses) and see the diffs
12:45:06 <Deewiant> maybe the stack stack is messed up
12:45:23 <AnMaster> Deewiant, I can't read mycology, it's too dense :(
12:46:19 <AnMaster> because isn't the value checked before y does any popping and pushing?
12:47:09 <Deewiant> note that values 10-14 are vectors
12:47:40 <Deewiant> yes, so it does y and then takes the 18th cell
12:47:48 <Deewiant> but values 10-14 contain 10 cells in themselves
12:48:03 <AnMaster> 18. size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip)
12:48:04 <AnMaster> Stack sizes are pushed as if they were measured before y began pushing elements onto
12:48:27 <AnMaster> Deewiant, ok that's stupid -_-
12:48:50 <Deewiant> and that's how it has to work in order to work as a pick instruction :-)
12:49:16 <AnMaster> Deewiant, but that breaks adding new pick entries in newer versions of the specs
12:49:37 <Deewiant> no it doesn't, if you add them at the end
12:49:58 <Deewiant> if you add them at the beginning it'd break anyway
12:50:03 <AnMaster> yes, you add them at the end indeed
12:50:10 <AnMaster> but that breaks pick instruction
12:50:18 <AnMaster> I mean, breaks y working as pick
12:50:41 <Deewiant> you have to run y first to get the size of the stack it pushes anyway
12:50:55 <Deewiant> since the length of y isn't predetermined
12:51:02 <Deewiant> consider command line args and envvars
12:51:15 <Deewiant> this is an esoteric language, it's supposed to be silly :-P
12:51:26 * AnMaster suggests a sane esoteric language
12:51:34 <Deewiant> not esoteric then, any more :-)
12:51:49 <Deewiant> btw, the mycology readme has a step-by-step explanation of what should happen with 101-{}
12:51:58 <AnMaster> yes it can be, anything with a 2D IP = esoteric
12:52:00 <Deewiant> maybe that'll help with your { woes
12:52:16 <AnMaster> Deewiant, it fails earlier than that
12:52:35 <AnMaster> BAD: { transfers cells incorrectly
12:52:36 <AnMaster> 10 0 0 Stopping due to fear of corrupt stack stack
12:52:38 <Deewiant> yeah, but if you say you can't see why that fails maybe you can see why that fails
12:52:42 <AnMaster> Deewiant, what does that 10 0 0 mean?
12:52:55 <Deewiant> probably something that shouldn't be there and is printed accidentally
12:53:01 <Deewiant> you know, corrupt stack stack and all :-P
12:53:35 <AnMaster> UNDEF: BASE fingerprint not loaded, won't check I.
12:53:39 <AnMaster> UNDEF: STRN fingerprint not loaded, wo<n't check I.
12:53:58 <AnMaster> are those how they should be output if those fingerprints are missing or?
12:54:18 <Deewiant> yeah, it just says your interpreter doesn't support BASE and STRN
12:54:20 <AnMaster> I mean, It's "I won't check" in English
12:54:26 <AnMaster> and then the < in the second message
12:54:36 <Deewiant> read it as "won't check the instruction 'I'" :-)
12:54:43 <Deewiant> I can't remember what the < is about
12:54:55 <Deewiant> in some interpreters it's output and in others not
12:55:01 <Deewiant> possibly to do with how you implement k
12:55:15 <AnMaster> Deewiant, I do k as you do mostly
12:55:55 <AnMaster> >;#"BAD: { transfers cells incorrectly"an< < < < < <<v
12:55:56 <AnMaster> v780>'_,#! #:<"GOOD: { transfers cells correctly"aw0w5w4w3w2w1<
12:56:05 <AnMaster> that is where the problem happens I guess
12:56:15 <Deewiant> if I replace the ( with r CCBI prints "won't" and not "wo<n't" so I think it's a problem with your interpreter and not mycouser.b98 :-)
12:56:21 <AnMaster> but when I check in gdb my stack looks like that
12:56:45 <Deewiant> find out which w causes the messup
12:56:55 <Deewiant> and then find out why the stack is messed up at that point
12:57:42 <AnMaster> ok, not easy to parse my trace output though
12:59:19 <Deewiant> so what was your stack at that point and why :-)
13:00:20 <AnMaster> 0=5 1=4 2=3 3=2 4=1 5=0 6=0 <-- that is how it looks when { is just done
13:01:00 <AnMaster> The { "Begin Block" instruction pops a cell it calls n, then pushes a new stack on the top of the
13:01:01 <AnMaster> stack stack, transfers n elements from the SOSS to the TOSS, then pushes the storage offset
13:01:01 <AnMaster> as a vector onto the SOSS, then sets the new storage offset to the location to be executed next
13:01:01 <AnMaster> by the IP (storageo f f set ← position + delta). It copies these elements as a block, so order is
13:01:02 <Deewiant> ", then pushes the storage offset as a vector onto the SOSS"
13:03:03 <AnMaster> BAD: { doesn't set storage offset correctly, or p doesn't use it <-- right, time to fix that
13:14:06 <AnMaster> Deewiant, p should push at (offset + requested position) right?
13:15:41 -!- oerjan has quit ("leaving").
13:18:39 <Deewiant> in retrospect, the best way to write Mycology would have been to, write after the Befunge-93 stuff, test {}pg and storage offsets, and then the code could be written modularly
13:19:27 <slereah_> Rampant illetrism sweeping the nation?
13:23:07 <AnMaster> Deewiant, your ccbi binary btw:
13:23:08 <AnMaster> UNDEF: Y says pow(2, -7) is 0.007812 (0.007813)
13:23:19 <Deewiant> AnMaster: that's FPSP probably?
13:23:44 <Deewiant> it's floats, what do you expect :-)
13:24:58 <Deewiant> looks like it's the same on windows btw
13:25:41 <Deewiant> so if that comes out as 0.0078124999999 it'll be 0.007812 which is probably the problem
13:25:54 <Deewiant> or then my CCBI output does truncation and not rounding
13:26:04 <Deewiant> I don't care, the answer is correct enough :-)
13:26:33 <Deewiant> it's not defined anywhere what should be done in that case
13:26:42 <Deewiant> have you looked at the RC/Funge-98 docs? they /suck/
13:27:07 <Deewiant> AnMaster: you complained about having to reverse engineer my code. I had to reverse engineer code that doesn't work. :-)
13:27:34 <Deewiant> eventually I decided to write the tests based on the spec only
13:27:49 <Deewiant> then I'd run RC/Funge there and more often than not it'd fail early
13:27:49 <AnMaster> I still can't get it to think that p does the right thing when it pushes at (offset + requested position)
13:27:56 <AnMaster> so something somewhere is wrong
13:28:24 <AnMaster> the storage offset is correctly set, I verified
13:29:08 <Deewiant> maybe you've got your y and x mixed up at some point
13:29:44 <AnMaster> well the StackPopVector is correct, or the code would fail when mycology tests x hm
13:30:08 <Deewiant> maybe you're adding the wrong storage offsets
13:30:34 <AnMaster> that is how you get the new vector right?
13:31:20 * AnMaster notes ccbi tend to reverse instead, and can't go backwards in one function call :P
13:31:33 <AnMaster> somehow, that feels like a small win there :)
13:31:47 <Deewiant> it's not like it'd be difficult to make a function that does that :-P
13:31:50 <AnMaster> void ipForward(int_fast64_t steps, instructionPointer * ip, fungeSpace *space)
13:31:50 <AnMaster> ip->position.x += ip->delta.x * steps;
13:31:50 <AnMaster> ip->position.y += ip->delta.y * steps;
13:31:51 <AnMaster> fungeSpaceWrapInPlace(space, &ip->position);
13:32:26 <AnMaster> Deewiant, nor is mine in most places
13:32:37 <AnMaster> Deewiant, look, your k is optimized in strange ways!
13:32:39 <Deewiant> in most cases I just went for the easiest-to-write code
13:32:49 <Deewiant> yeah, k was one I prematurely optimized :-)
13:33:04 <Deewiant> so that 9999***k> doesn't loop needlessly
13:33:20 <Deewiant> but I'm off to eat now, have fun with your debugging o)
13:43:16 <AnMaster> Deewiant, btw, on }, where do you get the storage offset from?
13:43:40 <AnMaster> do you always restore the previous offset or?
13:49:40 <Deewiant> corresponding } "End Block" instruction pops a cell off the stack that it calls n, then pops a vector off the SOSS which it assigns to the storage offset
13:50:01 <Deewiant> it's not necessarily the original offset although it usually is
13:55:42 * AnMaster wish mycology code wasn't so dense
13:56:13 <Deewiant> but I'm not going to do that, sorry :-)
13:56:41 <Deewiant> FWIW the code gets better later on, at least in my opinion
13:56:53 <Deewiant> the 'y' stuff is probably worst
13:57:20 <Deewiant> but the fingerprint stuff is almost sane
13:57:51 <Deewiant> there's some intentional obfuscation somewhere, though - just ask if you get totally confused :-)
13:58:04 <Deewiant> after all, it's Befunge, it's not supposed to be easy to read ;-)
13:58:29 <AnMaster> the storage offset is correctly calculated at least
13:59:04 <AnMaster> as in, the right x and y value is stored in ip->storageOffset
13:59:48 <Deewiant> you might want to try something simple like zzzzz{00g,'0,@ which, I think, should print 00
14:00:03 <AnMaster> the "set with offset" wraps things
14:04:59 <AnMaster> Deewiant, can't you get segfaults in D?
14:05:15 <Deewiant> since you usually don't use pointers
14:05:30 <Deewiant> arrays are built-in which helps a lot
14:05:47 <AnMaster> FUNGEDATATYPE entriesCopy[count + 1];
14:06:34 <AnMaster> Deewiant, and memory managment: not an issue, I use boehm-gc
14:07:17 <AnMaster> of course, realloc code to extend/contract stackstack pointer array to stacks is a bit hariy
14:07:30 <AnMaster> since it use the "dynamic arrays at end of struct" thingy
14:07:59 <AnMaster> typedef struct {// Top stack and current stack
14:07:59 <AnMaster> // Array of pointers to stacks
14:08:10 <AnMaster> err, messed up newlines in paste
14:08:40 <Deewiant> oh, you just use it to hold the stack size
14:08:55 <AnMaster> Deewiant, yep, as size and TOSS are the same for stack stack
14:09:04 <AnMaster> I contract the thing when I pop stack stack
14:09:20 <AnMaster> where I keep a size counter and a "top" counter
14:09:30 <AnMaster> and reallocates to add 10 in a bunch if more are needed
14:13:11 <AnMaster> stacks[0] and stacks[2] are valid, but stacks[1] = NULL
14:16:14 <AnMaster> GOOD: { transfers cells correctly
14:16:15 <AnMaster> GOOD: { sets storage offset correctly, and p uses it
14:16:29 * AnMaster can't see where it would do that
14:16:39 <Deewiant> but something tells me "normally" isn't quite right :-P
14:17:39 <AnMaster> aha, missing break in case lol
14:17:52 <AnMaster> so fell through to next, that was @
14:18:30 * AnMaster removes trace output to be able to see what mycology said
14:18:52 <Deewiant> I suggest making that a command-line switch :-)
14:19:11 <AnMaster> Deewiant, yes, right, when I implement proper command line parsing
14:19:28 <AnMaster> GOOD: } transfers cells correctly
14:19:35 <Deewiant> how about right now just test if args[2] is -t or something
14:32:19 -!- RedDak has joined.
14:54:02 <AnMaster> "If n is negative, |n| zeroes are pushed onto the SOSS."
14:54:10 <AnMaster> isn't that a typo for TOSS in that case?
14:54:36 <Deewiant> maybe it is but it says SOSS :-)
14:55:18 <Deewiant> doesn't that match with: "If the SOSS contains k elements, where k is less than n, the k elements are transferred as the top k elements and the remaining bottom (n-k) elements are filled in with zero-value cells."
14:56:43 <AnMaster> is there no matching GOOD for BAD: 101-{} doesn't leave stack top as 0 and next as 1 ?
14:56:53 <AnMaster> at least mine doesn't print anything for that test when I corrected it
14:57:18 <AnMaster> BAD: fedcba0{05-} doesn't leave 15 on stack
14:57:41 <Deewiant> I think I've only seen one other interpreter that does that
14:57:57 <Deewiant> and the top of the stack should be 15 after that, but it isn't
14:58:29 <AnMaster> so my handling of negative counts for } is bad in other words?
14:58:52 <AnMaster> If n is negative, |n| cells are popped off of the (original) SOSS.
14:58:57 <AnMaster> that means they are discarded?
14:59:09 <Deewiant> well that's what it says isn't it :-)
14:59:42 <AnMaster> GOOD: 1y and 5y do not disagree about =
14:59:42 <AnMaster> No reliable cross-platform method of testing: assume = works
14:59:48 <AnMaster> indeed, both says it doesn't exist
15:00:09 * AnMaster thinks that second message is wrong with y says = doesn't exist
15:00:21 <Deewiant> read it as "works as intended"
15:00:38 <AnMaster> Deewiant, btw, could I invent my own = system?
15:00:52 <AnMaster> that is an own operating paradigm?
15:00:54 <Deewiant> not really since there's no standard :-/
15:01:09 <AnMaster> Deewiant, but I could make my own operating paradigm right?
15:01:17 <Deewiant> "an implementation may support one of several standardized ways of interpreting the string, and which routine it uses can be determined by querying y"
15:01:23 <Deewiant> the standardized ways are given
15:01:27 <Deewiant> as long as it's one of them it's okay
15:01:42 <AnMaster> This value is included so the program can have a reasonable idea of what = will do. The
15:01:43 <AnMaster> values shown here are only the most basic set available at the time of publication. See the
15:01:43 <AnMaster> Registry for any late-breaking headway into further Operating Paradigms.
15:01:57 <AnMaster> so that means you could make a new one
15:02:03 <AnMaster> Deewiant, ah, so no libffi then :(
15:02:13 <AnMaster> because that's what I would want to do
15:02:16 <Deewiant> what if your interpreter uses 16 for what you do
15:02:22 <Deewiant> and another interpreter uses 16 for something else
15:02:32 <AnMaster> Deewiant, indeed, so we got to start a new registry
15:02:34 <Deewiant> since there's no central registry, that can't be controlled
15:02:50 <AnMaster> Deewiant, look, I want to use libffi to call C functions using it! :P
15:03:09 <AnMaster> just to be a pain in the **** for everyone else
15:03:21 <Deewiant> "Equivalent to interpretation by a specific shell or program "
15:03:47 <Deewiant> 3 refers to the command-line shell
15:04:14 <AnMaster> no, I'm not likely going to do libffi
15:04:44 <AnMaster> Deewiant, the push on other stack then pop back thing for y = really painful :(
15:05:27 <Deewiant> I just push all the things and then, at the end, check if some need to be popped
15:07:08 <AnMaster> if you got 2y, that means 3y will also end up on stack?
15:07:41 <AnMaster> then you need to shift items if you push onto real stack
15:07:48 <Deewiant> I think what I do is push all, then pop up to 2, remember that cell, pop the rest that were pushed, push the remembered one
15:08:15 <Deewiant> actually it's quite clean in the code
15:08:34 <Deewiant> as far as performance goes, it's not the best option though :-)
15:10:25 <AnMaster> got to love this "mutex" in concurrent befunge:
15:10:26 <AnMaster> <@Zaba> >#vt' 'o'l'l'e'H,,,,,,'>21p@
15:10:27 <AnMaster> <@Zaba> ><'!'d'l'r'o'w,,,,,, ^
15:10:58 <AnMaster> not that I will implement that I think
15:11:23 <Deewiant> you're making this too easy for yourself :-)
15:11:35 <Deewiant> might as well just implement Befunge-93 ;-)
15:11:38 <AnMaster> at least I want to finish everything that is required in funge98 before I start on optional things
15:14:39 <AnMaster> StackStackTransfer(FUNGEDATATYPE count, bool inOrder, fungeStack *TOSS, fungeStack *SOSS) <-- yay, that should be reusable
15:14:59 <AnMaster> Deewiant, btw what data type does ccbi use for the cells?
15:15:22 <AnMaster> hah, mine use 64-bit, and should be easy to make 128-bit
15:15:31 <Deewiant> so it depends on what the library defines that as
15:15:43 <AnMaster> Deewiant, ah mine is int_fast64_t heh
15:15:55 <AnMaster> but easy to change in a header
15:15:57 <Deewiant> AnMaster: so good luck compiling that on 32-bit? :-P
15:16:05 <AnMaster> Deewiant, oh? should work still
15:16:16 <AnMaster> 64-bit values does exist on 32-bit
15:16:38 <Deewiant> good luck /running/ on 32-bit ;-)
15:16:49 <AnMaster> Deewiant, it will run on 32-bit, just slower
15:16:55 <Deewiant> exactly, quite a bit slower :-P
15:17:15 <AnMaster> anyway just open src/global.h and redefine:
15:17:16 <AnMaster> #define FUNGEVECTORTYPE int_fast64_t
15:17:20 <AnMaster> #define FUNGEDATATYPE int_fast64_t
15:17:32 <Deewiant> yeah, just change alias int_fast32_t cell to alias long cell in CCBI, too :-)
15:17:53 <AnMaster> for example I had it as char when I debugged play field loading
15:19:04 <AnMaster> but upper case = defines normally, so changing it would mean a sed if I want to keep good coding style
15:19:34 <AnMaster> Deewiant, btw, following ccbi's style of using weird build systems: I use cmake
15:19:48 <AnMaster> oh and I use POSIX specific stuff
15:19:59 <AnMaster> so it will only run on real OS I bet
15:20:07 <Deewiant> rebuild/DSSS is pretty much standard for D
15:20:20 <AnMaster> D isn't terribly much standard though
15:20:27 <Deewiant> no, but I like using real languages ;-)
15:20:52 <AnMaster> what language is the D compiler itself written in?
15:21:15 <Deewiant> no, more likely that's in C++ as well :-P
15:21:30 <AnMaster> Deewiant, not the gcc one I think?
15:21:31 <Deewiant> but why the POSIX stuff, what do you need it for?
15:21:38 <Deewiant> I'm not sure about GCC actually
15:21:48 <AnMaster> Deewiant, simply because it's standard
15:22:13 <AnMaster> any OS not being POSIX.1-2001 isn't worth coding for IMO :P
15:22:33 <AnMaster> nothing really, just cases of easier to use / better functions
15:22:46 <AnMaster> for example, for some reason random() is often more random than rand()
15:22:53 <Deewiant> well, you do know that Linux and most BSDs aren't fully POSIX-compliant ;-)
15:22:58 <AnMaster> random is POSIX, rand is C89/99
15:23:09 <AnMaster> Deewiant, indeed, I test my app on both freebsd and linux
15:23:24 <Deewiant> I'd just use the mersenne twister if I were you
15:23:26 <AnMaster> Linux tux.lan 2.6.24-gentoo-r2 #1 Mon Feb 11 16:14:47 CET 2008 x86_64 AMD Sempron(tm) Processor 3300+ AuthenticAMD GNU/Linux
15:23:30 <Deewiant> for that example, for instance
15:24:15 <Deewiant> it's just that I don't see the advantage in locking out Windows, I don't think the POSIX-only stuff is /that/ good
15:24:20 <AnMaster> nothing in the funge standard says about what type or random
15:24:34 <Deewiant> nope, you could alias it to > if you want :-P
15:24:42 <Deewiant> although that'd infinite loop in mycorand.bf
15:24:47 <AnMaster> Deewiant, err no, that would be stupid
15:25:00 <AnMaster> Deewiant, no, but it doesn't say it has to be 100% uniform i what I mean
15:25:02 <Deewiant> better, you could iterate over >v<^ always in the same order :-)
15:25:41 <AnMaster> of course with % it may not be random
15:25:42 <Deewiant> why not rand() % 4 and support windows on top, then :-P
15:25:54 <faxathisia> unsigned char rnd = random() % 4; // OPTIMIZED
15:25:55 <AnMaster> Deewiant, oh I do call srandom(time(NULL)) before :P
15:26:11 <AnMaster> faxathisia, hah, but then gcc complains about a cast needed
15:26:13 <Deewiant> seems a bit pointless to lose windows support just for that ;-)
15:28:00 <AnMaster> -std=c99 -Wall -Wextra -Wformat=2 -pedantic -Wstrict-aliasing=2 -Wfloat-equal -Wwrite-strings -Wshadow -Wcast-align -Wcast-qual -Wbad-function-cast -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wundef -Wnested-externs -Wdeclaration-after-statement -Wmissing-include-dirs -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -W
15:29:23 -!- Tritonio_ has quit (Remote closed the connection).
15:31:07 <AnMaster> and stuff like __attribute__((nonnull,warn_unused_result)); (of course I #define away __attribute__ for non-gcc) to make sure I don't forget return values and so on
15:35:48 <AnMaster> BAD: u with a negative count transfers cells incorrectly
15:39:27 <AnMaster> Deewiant, BAD: after y the top cell is greater than 15
15:46:41 -!- RedDak has quit (Remote closed the connection).
15:46:45 <AnMaster> just how I indicate how to follow 08 draft *adds a compatibility mode to be selected with parameter*
15:50:04 <AnMaster> That the command-line arguments were: [ "/" null "jÿ" null ]
15:50:16 * AnMaster pushes two null atm until he fixed some things
15:50:44 <AnMaster> why does it not realize it is just a case of an empty list?
15:50:56 <AnMaster> after all, it is valid to not have command line arguments
15:51:05 <Deewiant> The first string is the name of the Funge source program being run.
15:51:16 <AnMaster> Deewiant, that could be hard coded into an array into the interpreter :P
15:51:18 <Deewiant> so it should always be mycology.b98
15:51:43 <Deewiant> it's not the interpreter name, it's the Funge program name
15:51:55 <AnMaster> Deewiant, or it may be a case of downloading, say a funge that can execute urls
15:52:15 <AnMaster> nothing says the funge program has to be loaded from a file does it?
15:52:41 <Deewiant> well, it talks about "Funge-98 source files" a lot :-)
15:52:45 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php
15:53:08 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php
15:53:09 <Deewiant> I haven't run those on Mycology to see if they work
15:53:22 <AnMaster> Deewiant, mycology would be too large
15:53:41 <Deewiant> you do realize that the first 80x25 chars are valid Befunge-93 :-)
15:53:45 <Deewiant> and test the whole Befunge-93 spec
15:54:06 <Deewiant> and that Befunge-93 interpreters should only load the first 80x25 chars anyway
15:54:09 <AnMaster> but I like to point out those programs load themself into the befunge93 space too
15:54:33 <AnMaster> Deewiant, btw what is this minifunge thing?
15:54:59 <Deewiant> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/dynafing.txt
15:55:15 <Deewiant> unfortunately I implemented RC/Funge-98's version and not that one
15:55:22 <Deewiant> but it shouldn't require many changes
15:55:29 <Deewiant> if someone wants me to implement that one instead :-P
16:02:02 * AnMaster wonders if it would be nice to make HRTI take advantage of HPET on linux when available
16:02:14 <AnMaster> en.wikipedia.org/wiki/High_Precision_Event_Timer in case you don't know what it is
16:02:28 <Deewiant> isn't HPET exposed in any of the standard C lib
16:02:46 <Deewiant> I mean, just in the form of a higher CLK_TCK or whatever
16:02:51 * AnMaster guess doing some stuff on /dev/hpet could work
16:03:09 <AnMaster> as only one of my computers got hpet
16:08:33 * AnMaster writes functions to push and pop C string to/from 0gnirts
16:13:29 -!- RedDak has joined.
16:57:29 -!- RedDak has quit (Remote closed the connection).
17:15:32 <AnMaster> #>:#_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y+8f:n_n:f8+y
17:16:15 <Deewiant> f8+y doesn't work then apparently
17:16:35 <Deewiant> I don't know, what does CCBI output there
17:17:44 <AnMaster> GOOD: : on empty stack makes stack size 2 according to y
17:17:54 <Deewiant> so it's trying to get the stack size
17:18:29 <AnMaster> Deewiant, why don't it print BAD or such then?
17:18:54 <Deewiant> I didn't expect that y would reflect after y having worked all the way up to there :-)
17:19:17 <AnMaster> Deewiant, maybe add that check? :)
17:19:21 <Deewiant> I can't check for reflection every time I try an instruction :-P
17:19:37 <AnMaster> Deewiant, you can, 98 doesn't have a size limit so it's easy
17:19:53 <Deewiant> except that much of the later code uses hard-coded y-coordinates
17:19:58 <Deewiant> so adding lines breaks the whole program
17:20:21 <AnMaster> just let it expand outwards to x?
17:20:24 <Deewiant> hence what I said earlier about testing {}pg first and then using {}
17:20:31 <Deewiant> that doesn't work either due to the tests on # edge jump
17:20:47 <Deewiant> the line there has to be the longest line in the file
17:20:56 <AnMaster> well just make that even longer?
17:20:59 <Deewiant> of course I could just make that one longer
17:21:07 <Deewiant> but then there's also the check for what y pushes for maxX/maxY
17:21:13 <Deewiant> which would also have to be changed
17:21:18 <Deewiant> and possibly something in the fingerprints as well :-P
17:21:49 <Deewiant> it looks like there's plenty of free space there though
17:21:52 <AnMaster> Deewiant, does mycology test nested { and } btw?
17:22:16 <AnMaster> Deewiant, you wrote it! you should know ;P *runs*
17:22:39 <Deewiant> it's over 100 KB of Befunge, I can't be sure :-P
17:23:22 * oklopol wants to write something in befunge
17:24:14 <oklopol> AnMaster: i'm not saying i don't have the skill
17:24:22 <oklopol> i'm saying god i wanna do it
17:25:20 <Deewiant> tested on windows and linux, might work on bsd if you can get it to compile
17:25:34 <AnMaster> oklokok, ccbi is coded in d though
17:25:38 <Deewiant> http://iki.fi/matti.niemenmaa/befunge/ccbi.html
17:25:46 <Deewiant> AnMaster: but fortunately, I provide a linux binary now :-)
17:25:49 <oklopol> i'm using windows then, prolly
17:25:51 <Deewiant> AnMaster: thanks for testing it ;-)
17:25:52 <pikhq> oklopol: RE: your question earlier. . . Think 'Eb above middle C'.
17:26:12 <AnMaster> oklopol, he got a linux binary as well yes
17:26:27 <pikhq> Deewiant: BSD can be binary-compatible with Linux.
17:26:33 <AnMaster> Deewiant, not linked from site though
17:26:59 <AnMaster> Deewiant, then your servers send something bad with cache headers?
17:27:01 <oklopol> pikhq: i can do octave over C
17:27:10 <Deewiant> AnMaster: or you don't see it. :-P
17:27:10 <oklopol> although i'm not sure what question you were answering :P
17:27:16 <Deewiant> AnMaster: I don't know, they're school servers
17:27:47 <oklopol> and octave below G below middle C
17:27:51 <AnMaster> Deewiant, the "befunge98 SVN r11" linked from your site, link is broken
17:28:01 <AnMaster> Deewiant, on test results page
17:28:10 <AnMaster> maybe do a "local source" thing like for rcfunge?
17:28:12 <oklopol> AnMaster: i prefer my windows machine
17:28:18 <Deewiant> it seems he's redesigned his site
17:28:25 <AnMaster> oklopol, sure, just install linux on it
17:28:43 <Deewiant> AnMaster: the only difference is a slash at the end >_<
17:28:44 <AnMaster> oklokok, to get a real OS I mean
17:28:58 <pikhq> oklopol: I ave a *low* range, not a high range. ;)
17:29:04 <pikhq> (I'm in high school)
17:29:06 <Deewiant> oklopol: design and testing is done on Windows XP, so it's more likely to work there anyway :-)
17:29:50 <AnMaster> oklokok, in the future compiling cfunge may be a simpler choice :)
17:30:22 <oklopol> pikhq: how low do you get?
17:30:29 -!- timotiis has joined.
17:30:45 <AnMaster> oklokok, cfunge can be set to use 64-bit stuff easily, in fact it is optimized for 64-bit ABI (I've read AMD64 ABI specs, so I optimize parameter order to pass as much as possible in the registers!)
17:30:51 <Deewiant> AnMaster: want to try iki.fi/deewiant/mycology.b98, it should have a test for that f8+y now
17:31:12 <AnMaster> Deewiant, I fixed my y for that, so can't test that
17:31:22 <pikhq> oklopol: At *least* to low C. . .
17:31:37 <oklopol> what are the names of the octaves?
17:31:38 <pikhq> C below bass clef.
17:31:53 <pikhq> I might have screwed that up.
17:31:59 * pikhq imagines scale, labelling notes. . .
17:32:13 <oklopol> like, two octaves down from that
17:32:46 <oklopol> i can do F quite easily too, but i'm a tenor really
17:33:03 <oklopol> as i'm not really a singer, i don't have a clear range like that
17:33:26 <oklopol> what are the ranges officially?
17:34:58 <AnMaster> Deewiant, anyway should nf8+y return 0 or 1?
17:35:02 <pikhq> Ah. The note I'm thinking of is called 'E2'. E below bass clef.
17:35:11 <pikhq> http://www.library.yale.edu/cataloging/music/vocalrg.htm
17:35:55 <AnMaster> BAD: \ on empty stack doesn't make stack size 2, says y
17:36:09 <pikhq> That range chart is a bit bad, though. . .I know all those parts have wider ranges.
17:36:16 <pikhq> Granted, not *much* wider.
17:36:21 <Deewiant> AnMaster: well, according to a Befunge program, it doesn't. :-)
17:36:35 <AnMaster> Deewiant, also BAD: i not implemented according to 1y - cannot test it <-- why is that "BAD"?
17:36:41 <AnMaster> it is fully valid to not have i and o
17:37:00 <AnMaster> Deewiant, the standard says so
17:37:14 <AnMaster> # Bit 1 (0x02): high if i is implemented.
17:37:14 <AnMaster> # Bit 2 (0x04): high if o is implemented.
17:37:19 <oklopol> i can do all those, but i think i prefer the highest
17:37:35 <pikhq> oklopol: My *comfortable* range is the bass clef. ;)
17:37:36 <AnMaster> "Also, any of the instructions t (concurrent execution,) = (execute,) i (input-file,) and o (output-file) may be unavailable in different interpreters for many reasons, and are routinely bound to (i.e. act just like) r as well. However, they may also act like r when they fail to execute. To test if they are actually supported, execute 1y and examine the cell it produces."
17:37:39 <Deewiant> AnMaster: but that doesn't mean that a fully conforming implementation doesn't have to implement them :-)
17:38:02 <AnMaster> so yes it is fully valid to not have those
17:38:14 <Deewiant> Did I say anything about '='? Was that UNDEF or nothing?
17:38:49 <AnMaster> BAD: i not implemented according to 1y - cannot test it
17:38:50 <AnMaster> BAD: can't test o without working i, might overwrite some existing file
17:39:03 <AnMaster> Deewiant, your test suite isn't conformant! :P:P
17:39:08 <Deewiant> hm, the second is kind of tricky
17:39:12 <Deewiant> AnMaster: I never claimed it was :-P
17:39:29 <oklopol> pikhq: you didn't answer the question of wether it was a composition of yours
17:39:32 <AnMaster> Deewiant, anyway, I don't implement either i or o
17:40:28 <AnMaster> Deewiant, so far: http://rafb.net/p/AA3KEd72.html
17:42:49 <pikhq> Just something I have to perform for my (fairly good) high school choir.
17:43:02 * pikhq damns the fourth movement of the Easter Cantata to hell.
17:45:13 <Deewiant> should say UNDEF at those two places now
17:46:41 <Deewiant> some of the programs are outdated, too
17:47:01 <Deewiant> it's mostly "on hold" for now, I'll update it all later
17:47:11 <AnMaster> Deewiant, add a change log entry on that page for your change?
17:47:33 <AnMaster> Deewiant, http://users.tkk.fi/~mniemenm/files/befunge/mycology/mycology.zip is the right thing to download I assume?
17:48:43 <Deewiant> to make sure people support it :-)
17:58:47 <AnMaster> Deewiant, what about systems with multiple chars for path separator? iirc such systems existed that had two chars
17:58:58 <AnMaster> but befunge won't work on those
17:59:00 <Deewiant> AnMaster: the standard specifies it's one cell
17:59:13 <AnMaster> Deewiant, so befunge breaks on such systems
17:59:21 <Deewiant> on such a system, the interpreter could push a reserved value
17:59:28 <Deewiant> which it translates to the path sep on output
18:12:11 <Deewiant> like, say, it could say that cell sizes are 7 bytes
18:12:28 <Deewiant> and then reserve all higher values for stuff like that
18:12:38 <AnMaster> Deewiant, what file in CCBI does wrapping?
18:15:26 <lament> for lisp or in general?
18:16:09 <lament> object system for common lisp
18:16:14 <lament> faxathisia: i just don't like (method object)
18:16:49 <lament> because it's namespace clutter
18:17:08 <lament> no, that's still namespace clutter
18:17:15 <lament> object.method() is not namespace clutter
18:17:23 <lament> there's no "method" in the global namespace
18:17:41 <lament> i understand the issues with multiple dispatch
18:18:47 <lament> that doesn't really help, you just clutter the package namespace instead of the global one
18:19:06 <lament> as opposed to not cluttering anything
18:19:12 <oklokok> what way do people usually do functions in befunge?
18:19:17 <faxathisia> I don't really know why you are saying 'clutter' when actually you are defining a method
18:19:53 <Deewiant> AnMaster: :-D, not everything 4-char is a Befunge fingerprint ;-)
18:19:54 <lament> faxathisia: because in clos, this method is in the global namespace, and in python/c/c++/java/c# it's local _to the object_
18:20:17 <lament> which is where it belongs
18:20:39 <lament> it's not just different, it's worse
18:20:42 <faxathisia> the change is better in this case, especially reading something like AMOP
18:20:46 <Deewiant> oklokok: they usually don't, I guess
18:20:52 <oklokok> pretty simple to do for n-dimensions with (n-1) dimensions used in a function
18:20:58 <oklokok> so that you use one direction as a mapping level
18:21:15 <oklokok> like, you have every second level be one that just redirects the turtle in the right slow
18:21:26 <oklokok> based on function coordinates pushed on the stack
18:21:28 <Deewiant> oklokok: one way is to reserve one line/column of Funge-Space for a return address stack
18:21:31 <lament> faxathisia: good management of namespaces is one of the nicest things a language can do for you
18:21:47 <lament> when you have 20000 symbols in your namespace, it's hard to keep track of stuff
18:22:00 <AnMaster> <Deewiant> AnMaster: :-D, not everything 4-char is a Befunge fingerprint ;-)
18:22:15 <oklokok> i'm fairly sure i can make callable functions with something like this, although you need to push a lot of stuff when you call a function
18:22:42 <oklokok> Deewiant: that sounds slow
18:22:50 <AnMaster> UNDEF: 1k # does nothing at k or jumps at k and doesn't move past #
18:22:53 <Deewiant> oklokok: Befunge isn't fast :-P
18:23:07 <AnMaster> Deewiant, can you explain that one to me, and what way is "best"
18:23:38 <oklokok> Deewiant: no reason to make slow programs, quite the opposite!
18:23:43 <Deewiant> AnMaster: this is the thing that was discussed between myself and, IIRC, Lee Houghton
18:23:53 <Deewiant> AnMaster: I changed it in february to be UNDEF
18:24:22 <Deewiant> AnMaster: in short, k followed by a space is very poorly specified
18:24:33 <Deewiant> AnMaster: read the spec however you will
18:24:38 <AnMaster> yes indeed, it should not execute the space
18:24:56 <Deewiant> but after that, there are at least 3 options
18:25:07 <Deewiant> 2) ignore it and do nothing for 1 tick
18:25:19 <Deewiant> 3) find the instruction after the space and exec that
18:25:41 <AnMaster> Deewiant, what one would you recommend?
18:26:03 <Deewiant> up to you really, based on the spec all can be justified
18:26:26 <Deewiant> "1k # does nothing at k" means 2
18:26:37 <Deewiant> "jumps at k and doesn't move past #" means that k doesn't move past the instruction it executes
18:26:37 <AnMaster> Deewiant, so it ignores the #?
18:26:46 <Deewiant> no, it means it ignores the space
18:26:51 <Deewiant> and then moves onto the # on the next tick
18:27:25 -!- jix has joined.
18:27:29 <AnMaster> err how can you know about tick for non-concurrent funge?
18:27:30 <Deewiant> or, in that latter case, that it executes # at k
18:27:41 <Deewiant> well for non-concurrent funge it doesn't make a difference
18:27:58 <Deewiant> I'm just saying "next tick" to clarify that it happens sequentially like that :-)
18:28:03 <AnMaster> Deewiant, my k function just calls return on space
18:28:13 <AnMaster> and reflects on 1) ", ; and nested k
18:28:26 <AnMaster> err not the , instruction that is
18:28:43 <AnMaster> Deewiant, because standard says " isn't allowed in k
18:29:09 <AnMaster> "The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;)"
18:29:43 <Deewiant> The instruction " "Toggle Stringmode" toggles a special mode
18:29:47 <AnMaster> Deewiant, so what should 2k" do?
18:30:20 <AnMaster> Deewiant, turn string mode on that is
18:30:23 <Deewiant> the only two markers are space and ;
18:30:40 <Deewiant> I'm sure I could find a use for it if I try hard enough :-)
18:30:41 <AnMaster> Deewiant, k" doesn't make any sense :(
18:30:56 <Deewiant> say you've got two-dimensional code
18:31:01 <Deewiant> you need to skip over some code
18:31:08 <Deewiant> you've got semicolons in the middle so you can't use ;
18:31:28 <Deewiant> you're trying to move east and the code at that point looks like k"asdf
18:31:37 <Deewiant> you don't have enough room to turn to the east
18:31:51 <Deewiant> before hitting that k, that is
18:31:58 <Deewiant> so you put 1 on the stack and turn right
18:32:09 <Deewiant> that's not what befunge is about :-P
18:32:31 <AnMaster> Deewiant, and you get a lot of crap on the stack right?
18:32:35 -!- ais523 has joined.
18:33:01 <Deewiant> or ask y for the current stack size and then use k$
18:33:01 <AnMaster> Deewiant, I would relocate the code to fit in a j instruction if needed
18:33:39 <Deewiant> if you can relocate like that, might as well not use j at all :-)
18:34:19 <Deewiant> but my point is, there can be a use for it
18:34:19 <AnMaster> I always write PIC code in befunge :P
18:34:22 <Deewiant> it's not /completely/ pointless
18:34:36 <Deewiant> to me that's somewhat self-defeating, might as well use brainfuck or whatever :-)
18:35:16 * AnMaster ponders a befungelint until he realizes it would be impossible to find what direction you enter a instruction without running it and seeing what happens in some cases
18:35:52 <AnMaster> Deewiant, anyway nasty thing that you check if ( that reflects pops things :P
18:36:05 * AnMaster could have managed further without that check
18:36:25 <Deewiant> an easy way to implement ( is just to make it pop a value then pop that many cells
18:36:52 <Deewiant> but you do realize that if you're that far you've done pretty much everything else :-)
18:36:55 <AnMaster> wait, so ( isn't popping a 0gnirts?
18:37:10 <AnMaster> Deewiant, well my y is still seriously broken
18:37:48 <AnMaster> http://rafb.net/p/OqbNQJ59.html
18:38:17 <AnMaster> also, my fungespace field is a mess, until I replace it with a sparse array
18:38:31 <AnMaster> a mess of 800x2500 cells heh ;P
18:38:56 <AnMaster> just to do some things for now until I wait for some idea for sparse array
18:39:13 <AnMaster> anyway the interface for fungespace is clean
18:39:13 <Deewiant> Befunge98 used an octree I think
18:39:19 <AnMaster> so easy to replace with something else
18:39:46 <AnMaster> Deewiant, look, I'm in what equals last year of high school, I don't know the computer science stuff yet! tell me what a octree is :)
18:40:14 <Deewiant> when I started with CCBI I was, too :-)
18:40:51 <Deewiant> can't you guess from the name - octree i.e. octal tree i.e. a tree where each node has eight children
18:41:10 <Deewiant> so basically, each funge-space cell has pointers to each immediate neighbour
18:42:05 <AnMaster> Deewiant, must be slow to traverse if you want to not just go to next cell
18:42:17 <AnMaster> but say, get cell at 0,5 while you are at 374,57
18:42:30 <AnMaster> Deewiant, how does ccbi do it?
18:42:37 <Deewiant> AnMaster: D has built-in hash tables :-)
18:42:53 <Deewiant> AnMaster: cell[cellidx][cellidx] space; or something
18:43:08 <AnMaster> well bash got sparse arrays hm
18:43:31 <AnMaster> so no point in looking at bash source
18:43:55 <Deewiant> don't know what but there're bound to be some :-)
18:44:46 <AnMaster> Deewiant, I found some for floating point, some with bad license, some that was just 1D arrays and some that lacked any comments in code and said "buy this book to get documentation"
18:45:07 <Deewiant> http://www.google.com/search?q=hash%20table%20library
18:45:22 <AnMaster> Deewiant, for C++ there are plenty, but not for C
18:45:22 <Deewiant> looks like a decent amount of results :-)
18:45:53 <Deewiant> the one referenced on the wikipedia page is also for C
18:46:09 <AnMaster> I looked at the ones listed there
18:46:44 <Deewiant> you have two options basically
18:46:53 <Deewiant> 1) what I do, have a hash table containing hash tables
18:47:15 <Deewiant> 2) use, as the key, something which contains 2 integers
18:47:40 <Deewiant> either a struct or just a 128-bit integer with the higher bits as the y-coordinate and the lower as the x-coordinate or whatever
18:47:59 <AnMaster> ok, that makes "SunriseDD" look good, assuming license works with GPL3, because it works with boehm-gc
18:51:02 <Deewiant> most use BEF or something instead of FUN
18:51:50 <AnMaster> Deewiant, does handprint have to be 4 chars?
18:52:08 <Deewiant> in your case it could be up to 8 chars
18:52:46 <Deewiant> in that case it could be anything
18:53:15 <Deewiant> because it doesn't matter whether other interpreters can represent it
18:53:45 <AnMaster> Deewiant, does mycology only test befunge or trefunge too?
18:53:59 <Deewiant> would be really hard to make it work for both befunge and trefunge
18:54:00 <AnMaster> and does it handle running under trefunges gracefully
18:54:08 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:54:17 <AnMaster> Deewiant, it should check size of vectors :)
18:54:32 <AnMaster> because if it does that, it can run under any funge > 2
18:54:38 <AnMaster> Deewiant, well I mean for funge98
18:54:45 <Deewiant> it'd have to be done for funge93 too
18:55:41 <Deewiant> but I guess you're right in that way, -93 didn't specify anything other than 2D
18:56:05 <Deewiant> but still, it'd be tricky for funge98 as well
18:56:14 <Deewiant> since it'd have to be done /every time/ a vector is pushed/popped
18:56:27 <Deewiant> unless you mean just branching and saying "not befunge" the first time
18:56:48 <AnMaster> you check it once, then do some self modifcation
18:56:56 <AnMaster> to change all p/g instructions
18:57:07 <Deewiant> there are a lot more instructions than just p and g that use vectors :-P
18:57:30 <Deewiant> once again, since you can't tell what direction an instruction is entered from
18:58:05 <AnMaster> you do y once, to find out whatfunge it is
18:58:15 <Deewiant> how would you programmatically modify anything that uses y to deal with arbitrary-sized vectors
18:58:20 <Deewiant> since the code would be very spread out
18:58:29 <AnMaster> then you go into self modification mode, and add the needed code around each place
18:58:39 <AnMaster> to change the mycology program itself
18:58:41 <Deewiant> how would you find 'the place'
18:58:56 <AnMaster> Deewiant, store it as incomplete vectors?
18:59:12 <AnMaster> and then add the extra 0 needed :)
18:59:21 <Deewiant> how would you store it like that
18:59:44 -!- slereah__ has joined.
18:59:46 <Deewiant> modify that to work under a dimensionality given on top of the stack :-)
18:59:51 <AnMaster> yes then you store say 53 or wherever it is at
19:00:25 <Deewiant> for every use of vectors, store the position somewhere? :-D
19:00:44 <AnMaster> Deewiant, yep, and then once you find out the dimension count, change those places
19:01:02 <AnMaster> pad the vectors to p that change them with 0
19:01:22 <Deewiant> it'd probably be easier to check the dimensionality separately at each place :-D
19:01:22 <AnMaster> Deewiant, look, it isn't impossible
19:01:32 <Deewiant> it's impossible programmatically
19:01:40 <Deewiant> you need to change the original code beforehand
19:01:53 <Deewiant> yes, because you need to store all those places
19:01:56 <AnMaster> just leave some spaces around that you can fill out
19:02:15 <AnMaster> to support a fixed set of n dimensions
19:02:55 <Deewiant> so first of all that limits you to a static number of dimensions
19:03:08 <Deewiant> and second, that's changing the original code
19:03:25 <AnMaster> simple you told someone here yourself how to
19:04:02 <Deewiant> there are instructions that do X, then pop a vector, then do Y
19:04:20 <Deewiant> you'd need a subroutine for each such instruction
19:04:50 <AnMaster> that you can use for p/g/whatever
19:05:21 <Deewiant> but still, this is all changing the original source
19:05:25 <AnMaster> Deewiant, also vector isn't hard, in that case, all you need is 0 in the extra dimensions right?
19:05:31 <Deewiant> what I mean is that you can't tractably do the following:
19:05:35 <AnMaster> so if stack is empty after vector
19:05:55 <Deewiant> write befunge code that loads mycology.b98 and modifies each vector use to work for any number of dimensions
19:06:13 <AnMaster> Deewiant, no I didn't say that
19:07:19 <Deewiant> that's what I was thinking when I said impossible
19:07:31 <Deewiant> of course, if you can rewrite the whole code, it's possible
19:07:54 <Deewiant> it's much easier for the interpreter to allow specifying dimensionality
19:08:06 <Deewiant> since nobody's going to write a Funge interpreter which doesn't execute Befunge ;-)
19:08:41 <AnMaster> Deewiant, err what about unefunge?
19:09:37 <AnMaster> also what about "extra dimensions on demand" style funge
19:10:21 <ais523> Deewiant: aren't all Befunge programs also legal Trefunge programs?
19:10:32 <ais523> (although they'll get the number of elements in a vector wrong)
19:10:35 <AnMaster> ais523, nop, because of vector size
19:10:56 <Deewiant> that should put 1 at the position (0,2)
19:11:10 <Deewiant> in trefunge, it'd put whatever was on the stack beforehand at the position (1,0,2)
19:11:35 <AnMaster> ais523, Deewiant: still legal, just won't do the same
19:11:36 <ais523> clearly, dimension-independent vectors are needed
19:11:37 <Deewiant> AnMaster: yes, of course. Always assume Befunge unless I say otherwise :-)
19:11:42 <ais523> so that we can have Hilbert-space-funge
19:11:56 <ais523> AnMaster: infinitely many dimensions
19:12:06 <Deewiant> AnMaster: university stuff ;-)
19:12:07 <AnMaster> ais523, yes, but how do you indicate end of vector
19:12:16 <ais523> only finitely many of which are allowed to be anything other than 0, so that it's possible to store coordinates in finite size
19:12:35 <AnMaster> Deewiant, first in vector: size of vector
19:13:10 <AnMaster> Deewiant, now that would need some substantial redesigning or a fingerprint of some kind
19:14:04 <ais523> AnMaster: you can specify vectors by giving a number of coordinates and listing the first few
19:14:16 <ais523> because as only finitely many can be non-zero, there must be some highest non-zero coordinate
19:14:27 <Deewiant> AnMaster: INDV/PNTR supports arbitrary-dimensional vectors
19:14:42 <Deewiant> at least some fingerprint did.
19:14:57 <ais523> it would be easy enough to have a fingerprint that supports G and P as arbitrary-dimensional g and p
19:14:59 <Deewiant> not in this way, I don't think, but in some way.
19:15:33 <ais523> does y return any vectors? I can't remember offhand
19:15:33 <AnMaster> or you couldn't jump into those dimensions
19:15:38 <Deewiant> oklokok: you were asking about functions: there's the SUBR fingerprint
19:16:11 <AnMaster> Deewiant, hm fingerprints got to fit in a cell?
19:16:45 <AnMaster> can I make fingerprints that would only work on 64-bit funges is the question
19:16:50 <Deewiant> AnMaster: JSTR is the fingerprint I was thinking of
19:17:10 <AnMaster> Deewiant, modified rcfunge right?
19:17:22 <AnMaster> btw, the rcfunge with SGNL didn't compile
19:17:46 <Deewiant> like said, POSIX is a bad thing ;-)
19:18:00 <Deewiant> I'm on cygwin so I think I removed SGNL and WIND
19:18:10 <Deewiant> or rather, I tested it on cygwin
19:18:13 <AnMaster> Deewiant, anyway WIND is just a crappy idea
19:18:29 <Deewiant> I agree, which is why I didn't implement it :-)
19:18:48 <Deewiant> I think using Funge for GUIs is just worthless :-P
19:18:52 <AnMaster> because those two would fit into 4 chars
19:19:03 <Deewiant> AnMaster: and yes, a fingerprint has to fit in a cell
19:19:11 <AnMaster> Deewiant, according to that principle, funge is worthless
19:19:15 <ais523> Deewiant: are you aware of Deltaplex
19:19:36 <ais523> it's a fungeoid designed for GUIs, graphics, etc.
19:19:41 <Deewiant> AnMaster: no, I just think GUI programming isn't Funge's forté ;-)
19:19:46 <ais523> it even has 3-D graphics commands and mouse support built in
19:19:50 <Deewiant> AnMaster: http://www.esolangs.org/wiki/Deltaplex
19:20:12 <AnMaster> Deewiant, then you should drop TURT too :P
19:20:14 * ais523 has the Esolang Firefox search widget
19:20:30 <Deewiant> AnMaster: nah, TURT isn't for GUIs, it's for drawing pictures
19:20:33 <AnMaster> drawing pictures isn't Funge's forté
19:20:53 <AnMaster> Deewiant, tell me what is Funge's forté?
19:21:20 <Deewiant> it is an /esoteric/ language after all
19:22:13 * ais523 was under the impression that Befunge was originally invented to be hard to compile
19:22:45 <AnMaster> I wouldn't even try to, even without anything like p
19:22:54 <ais523> it's probably harder to compile than Unlambda, which is itself traditionally hard to compile
19:22:55 <Deewiant> essentially impossible to compile for modern arches, unless you count embedding the interpreter into the executable
19:23:03 <Deewiant> since it relies on self-modifying code so much
19:23:09 <AnMaster> Deewiant, you know W^X/NX/PaX/misc/other/names
19:23:20 * ais523 is working on a language that Unlambda compiles to, and that can be compiled to C
19:23:31 <Deewiant> AnMaster: the data execution denial bit or whatever?
19:23:38 <AnMaster> No Execute thing, either pages are write or execute, but not both at same time indeed
19:23:44 <AnMaster> well that would break for funges
19:24:04 <Deewiant> yeah, that effectively disallows all self-modifying code I believe
19:24:15 <AnMaster> Deewiant, well JITs does work around it
19:24:54 * AnMaster ponders NX bit for funge, per-cell
19:25:12 <Deewiant> best make it possible to set an area in one instruction then
19:25:53 <AnMaster> also, following style of how hardware NX works, it shouldn't just reflect, but instead terminate current IP
19:26:13 <Deewiant> it's to protect against bugs, after all
19:26:51 <Deewiant> so you'd set the NX bit on code after executing it once, and then if it ever goes there again it'll fail gracefully
19:27:24 <Deewiant> you can use it for scratch space
19:27:53 <Deewiant> ais523: http://en.wikipedia.org/wiki/NX_bit
19:28:16 <AnMaster> Deewiant, we need a NoRead bit too of course
19:28:33 <ais523> INTERCAL has a setting that can be placed on a command to prevent it running more than once
19:28:35 <AnMaster> but I'm sure someone could make one
19:28:39 <ais523> (it becomes a NOP after it runs, but can be reset)
19:28:59 <AnMaster> Deewiant, also, what about vectored IO for funge? :D
19:29:04 <ais523> it's used for multithreading synchronisation, and also a convenient way to write an if statement
19:29:08 <Deewiant> AnMaster: a fingerprint that sets a mode, so that whenever an instruction is executed it becomes the given instruction
19:29:17 <Deewiant> like zM - after that, all executed instructions become zs after executed
19:29:38 <ais523> you'll end up inventing Malbolge at that rate
19:30:09 <AnMaster> anyone up for the task of writing a malbolge interpreter in befunge?
19:30:46 <Deewiant> how about a befunge/malbolge quine
19:31:10 <AnMaster> Deewiant, not going to try that
19:31:23 <AnMaster> writing a malbolge interpreter however, isn't as hard
19:31:36 <AnMaster> ... as writing any program in malbolge
19:31:37 <ais523> malbolge interps are quite easy, normally
19:31:38 <Deewiant> the point about malbolge isn't to write interpreters, it's to try and write programs
19:31:51 <AnMaster> Deewiant, it is about saneness
19:31:55 <ais523> although I think it might be impossible to write one in Befunge-93 without some sort of extra storage
19:31:58 <AnMaster> I'm not going to write in malbolge
19:32:25 <ais523> maybe someone should invent a 2D version of malbolge
19:32:36 <ais523> that combines the worst aspects of malbolge and befunge
19:32:40 <AnMaster> you can load files into befunge98
19:33:01 * ais523 agrees with Deewiant about -93's lack of storage, or indeed, TCness
19:33:01 <Deewiant> AnMaster: as he said, Befunge-93
19:33:28 <AnMaster> (not that I'm claiming to be sane myself in any way!)
19:33:34 <ais523> AnMaster: any Befunge-98 implementation should easily be able to fit 59049 10-trit words into the playfield memory
19:33:51 <Deewiant> yes, 'should'. Might not, though. :-)
19:34:08 <Deewiant> case in point: a few interpreters crashed on loading mycology
19:34:11 <ais523> and Malbolge itself is basically an evilly twisted version of assembler
19:34:37 <Deewiant> AnMaster: can't remember... befunge98 at least
19:34:39 <ais523> Deewiant: interfunge does that, but to be fair it's designed as a Befunge-93 implementation and doesn't like strings longer than 80 characters on the input
19:35:04 <AnMaster> ais523, it should discard the extra data
19:35:10 <Deewiant> AnMaster: basically here was a bug in his octree code and he 'fixed' it by enlarging the default size :-)
19:35:23 <ais523> AnMaster: CLC-INTERCAL requires you to know the length of a string before you can input it
19:35:43 <AnMaster> ais523, then you can't write a conforming interpreter in that language
19:35:53 <ais523> although interfunge is written in C-INTERCAL and therefore should be able to handle line-ends with extra code
19:36:12 <ais523> you also need to type two newlines at EOF because INTERCAL can't detect an EOF; it errors out instead
19:36:38 <AnMaster> ais523, well you would need to pre-process your code then
19:36:39 <ais523> although I have cunning plans to get around that which involve multithreading
19:36:59 <AnMaster> look, intercal is even more insane than befunge
19:37:10 <ais523> Befunge always struck me as relatively sane
19:37:18 <ais523> but then I have a nonstandard set of things to compare it to
19:37:46 <AnMaster> btw didn't someone from this channel prove that something was turing complete and win some kind of price for it?
19:37:54 <AnMaster> must have been a few months ago
19:38:29 <AnMaster> I looked at the proof pdf or whatever it was, and didn't understand it
19:38:38 <ais523> there isn't anything very difficult in there
19:38:42 <ais523> it just goes on and on and on
19:38:52 <ais523> that a particular Turing machine was Turing-complete
19:39:05 <ais523> although that comes to less in pounds
19:39:13 <AnMaster> that is quite a lot I think *coverts to SEK*
19:39:14 <Deewiant> ais523: is this on the 'Net somewhere?
19:39:23 <ais523> http://www.wolframprize.org/
19:39:32 <ais523> faxathisia: put it in the bank
19:40:14 <ais523> although I used a small amount of it to buy this laptop
19:40:16 <AnMaster> 25 000 U.S. dollars = 152 887.432 Swedish kronor
19:40:45 <ais523> or, in my case, just about cancel out my student loan
19:40:55 <Deewiant> of course, the dollar was much more valuable 6 months ago :-)
19:41:20 <Deewiant> or rather, good luck that he got the money then and not now
19:41:30 <Deewiant> assuming he did get the money back then, and not now :-P
19:42:19 <ais523> Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time
19:42:48 <ais523> it wasn't very efficient
19:42:52 <AnMaster> I'm sure mine isn't that effective
19:42:52 <Deewiant> I actually thought about that competition when I first saw it, but then I figured it'd be too tedious :-)
19:42:55 <ais523> at least not the way I programmed it
19:43:15 <Deewiant> probably wouldn't have bothered to finish it if I did start it
19:43:36 <ais523> AnMaster: the input program is ridiculously long and repetitive
19:43:37 <Deewiant> AnMaster: he's talking about wolfram's turing machine
19:43:53 <AnMaster> <ais523> Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time
19:43:53 <ais523> (in fact, infinitely long, but finitely many characters can run a program for any finite time)
19:44:10 <Deewiant> ais523: yes, where "some turing machine" is wolfram's 2,3 turing machine :-)
19:44:45 <AnMaster> ais523, wouldn't emulating P'' be the best option?
19:44:50 <Deewiant> ais523: but wasn't there something about the proof being flawed?
19:44:57 <ais523> AnMaster: I emulated cyclic tag systems
19:45:10 <ais523> and as for the argument about the proof, the original concern was based on a misconception
19:45:30 <ais523> although new concerns emerged as a result which basically demonstrated that nobody is entirely sure exactly what Turing-completeness is anyway
19:45:47 <AnMaster> ais523, err, indeed I'm not sure of that
19:45:55 <ais523> and although my proof is correct, it lead to an argument about whether what it demonstrated was useful or not
19:46:11 <AnMaster> ais523, as long as you got the money! ;)
19:46:12 <ais523> as in, whether the definition of TCness I used was appropriate and/or interesting
19:46:33 <ais523> but the argument died down suddenly in the middle when the list moderator went on holiday, and never resumed
19:46:45 <ais523> (that is, the argument, not the moderator)
19:46:58 <AnMaster> ais523, so well was it useful or not?
19:47:47 <ais523> anyone who actually followed through the entire proof - that is, me and at least one of the judges, and possibly other people - realises that I emulate all features of the cyclic tag system in the original Turing machine
19:47:57 <ais523> so it's definitely a valid emulation
19:48:10 <ais523> however, most mathematicians prefer to take a black-box approach to Turing-completeness
19:48:21 <ais523> which means that you need to be very careful with definitions
19:48:30 <ais523> and my proof hit the gray area that nobody was sure about
19:48:39 <ais523> in terms of a black-box approach
19:50:30 <AnMaster> what does black box mean in this case
19:50:54 <ais523> that you deduce whether something is TC by applying certain tests to an emulation
19:50:58 <ais523> rather than seeing how the emulation works
19:51:31 <ais523> I don't really aprove of the approach myself, but mathematicians like it because the other method is often hard to define rigorously
19:52:26 <AnMaster> Deewiant, wtf is the point of the fingerprint TOYS
19:52:44 <Deewiant> AnMaster: like it says, it's toys - random stuff
19:52:55 <Deewiant> btw, I'll take this moment to ask
19:52:59 <AnMaster> and most pointless, and with silly names
19:53:05 <ais523> (incidentally, a number of other esolangs came out of the proof. 1cnis came out indirectly, and I invented certain other languages which qualify as esolangs as stages in the proof, although system 5 is probably the only interesting one)
19:53:12 <AnMaster> Deewiant, ...where you can get my code?
19:53:16 <Deewiant> does anybody know what 'the result of a "butterfly" bit operation' is?!
19:53:27 <ais523> AnMaster: it's in tribute to INTERCAL character names
19:53:46 <ais523> you take the sum and the difference of two numbers, then multiply the differenceby a constant
19:53:56 <Deewiant> ais523: and what's the constant
19:53:58 <ais523> it's an operation in Fourier transforms
19:53:59 <Deewiant> B ('pair of shoes') pops two cells off the stack and pushes the result of a "butterfly" bit operation.
19:54:11 <ais523> hmm... maybe it's a different operation
19:54:24 <ais523> because you have to provide the constant in the butterfly operation I know about
19:54:29 <ais523> and besides, mine isn't bitwise
19:54:31 <AnMaster> Deewiant, what does CCBI do for that?
19:54:54 <Deewiant> which has a "/* Guess what this is meant to be... */" comment in the code :-P
19:54:58 <oklokok> umm, befunge actually doesn't have an operator that digs up n deep in the stack and pushes that on top?
19:55:01 <Deewiant> it's the only one that implements anything at all
19:55:09 <Deewiant> oklokok: nope. only the FRTH fingerprint has something like that
19:55:43 <Deewiant> AnMaster: it pushes the sum and then the difference of the values and then reflects
19:55:47 <AnMaster> oklokok, of course as it would make coding much easier, and we already used all ASCII chars below 127
19:55:53 <Deewiant> AnMaster: and outputs a warning if in warning mode, etc.
19:56:14 <Deewiant> mine doesn't reflect but otherwise does the same
19:56:17 <AnMaster> Deewiant, who wrote the TOYS thing?
19:56:29 <ais523> I'm guessing it reflects because the constant wasn't provided...?
19:56:39 <Deewiant> AnMaster: since it's part of the standard, probably chris pressey
19:56:49 <ais523> oklokok: Underlambda is going to have a very similar combinator
19:56:49 <AnMaster> Deewiant, then, why not ask him?
19:57:08 <Deewiant> AnMaster: he posted back in 2000 or so that he's 'not very interested in befunge' anymore or something like that :-)
19:57:26 <oklokok> ais523: i'm sure it has a use in underlambda
19:57:26 <Deewiant> AnMaster: I figured I'd take the route of implementing everything I can find currently
19:57:28 <AnMaster> Deewiant, aha, that explains why I got no answer on my license mail
19:57:38 <Deewiant> AnMaster: and then just leave it at that.
19:57:50 <oklokok> it's just befunge doesn't have many operators worth iterating alone.
19:57:57 <Deewiant> AnMaster: yeah, maybe he automatically filters everything with 'befunge' in it ;-)
19:58:30 <oklokok> pop makes sense in some cases
19:58:43 <Deewiant> but unfortunately using k, turned out to be a bad idea
19:58:48 <Deewiant> since interpreters implement k differently
19:59:04 <AnMaster> Deewiant, well thanks to mycology it won't any more
19:59:23 <Deewiant> AnMaster: but I still can't use it in mycology itself :-)
19:59:32 <Deewiant> and I probably won't be writing much more befunge :-D
19:59:47 -!- faxathisia has quit (Connection reset by peer).
19:59:48 <AnMaster> are you also no longer interested in the language
20:00:03 <Deewiant> I've written more befunge than all others on this planet put together :-D
20:00:23 <Deewiant> I was interested in implementing it and then writing that test suite, for fun
20:00:51 <AnMaster> Deewiant, however that guy with the crazy domain name comes close I think
20:00:55 <Deewiant> but yeah, I never felt like I'd /use/ Befunge for something
20:01:20 <ais523> Deewiant: I wrote a few Befunge programs as anarchy golf entries
20:01:26 <AnMaster> befunge would be nice for mission critical stuff, because it won't crash, it just reflects instead
20:01:27 <ais523> but I'm not very good at Befunge golfing
20:01:34 <AnMaster> so you can know your program won't end
20:01:38 <ais523> unfortunately it only supports Befunge-93
20:01:46 <Deewiant> Mycology is over 100K of Befunge
20:01:48 <ais523> AnMaster: it could get stuck in an infinite loop easily
20:01:57 <Deewiant> a quick look at J^4 suggests he's written around 30K, maybe
20:02:13 <Deewiant> if you count nonpublished then I go up to over 200K probably
20:02:27 <AnMaster> Deewiant, he likely written more, backspaced written more backspaced again
20:04:01 <Deewiant> the Befunge-93 section of Mycology has been fully rewritten 4 times, I believe
20:04:13 <Deewiant> the first time it was much more readable
20:04:19 <Deewiant> but it didn't come even close to fitting in 80x25
20:04:40 <Deewiant> it looked a bit like the befunge code you showed me you wrote :-)
20:04:42 <AnMaster> Deewiant, it isn't readable at all now
20:04:49 <Deewiant> yes, because it has to fit in 80x25
20:04:59 <AnMaster> and nor is the rest of the code -_-
20:05:03 <ais523> Deewiant: how much do you cross code over itself?
20:05:25 <AnMaster> ais523, way to much for Deewiant
20:05:26 -!- Hiato has joined.
20:05:33 <AnMaster> I avoid doing it when possible
20:05:57 <Deewiant> http://www.esolangs.org/wiki/SNUSP
20:06:01 <ais523> it's basically a cross between Befunge and Brainfuck
20:06:13 <ais523> but with procedures added in (in Modular SNUSP)
20:06:35 <ais523> making it really elegant to write constants
20:06:37 <Deewiant> AnMaster: err, brainfuck not befunge
20:06:58 <AnMaster> Deewiant, and brainfuck got [ and ]
20:07:10 <Deewiant> AnMaster: not befunge's ] and [ :-)
20:07:21 <ais523> SNUSP doesn't use either
20:07:30 <ais523> just ! as a trampoline
20:07:37 <ais523> and ? as a maybe-trampoline depending on the current tape element
20:07:59 <Deewiant> ais523: which I think is equivalent to !j
20:08:14 * ais523 tries to remember what j does
20:08:33 <Deewiant> jumps ahead a given number of cells
20:08:58 <ais523> in that case, yes it's equivalent, apart from only taking up one funge-space cell
20:11:00 <ais523> Modular SNUSP is the most interesting part of it, though, in my opinion
20:11:10 <ais523> especially the base-Fibonacci constants
20:11:19 <ais523> that work using recursive procedure calls
20:25:03 <AnMaster> BAD: ( should have reflected trying to load nonexistent fingerprint 0
20:25:10 <AnMaster> does it say anywhere it can't exist
20:25:16 <AnMaster> what if I make one with that number?
20:25:40 <ais523> AnMaster: then Deewiant will add it to Mycology and change the number of the nonexistent one
20:25:53 <ais523> now, an interp which had a fingerprint for /every/ 32-bit number might be interesting
20:26:01 <Deewiant> AnMaster: but actually, many interpreters define 0 as some sort of internal fingerprint
20:26:12 <AnMaster> Deewiant, so that could be a problem then
20:26:25 <AnMaster> anyway now mine reflects on any fingerprint
20:26:31 <ais523> doesn't the spec say that all fingerprints have to be registered?
20:26:33 <AnMaster> I haven't coded fingerprints yet
20:26:33 <Deewiant> AnMaster: it's part of the reason I chose that fingerprint :-)
20:27:18 -!- Hiato has left (?).
20:27:26 <AnMaster> Deewiant, http://rafb.net/p/SNzhKr58.html
20:27:37 <AnMaster> still a few BAD around y stuff though
20:29:38 <AnMaster> Deewiant, so still some stuff needed to be done
20:30:20 <AnMaster> Deewiant, no longer the < in mycouser
20:30:39 <AnMaster> Deewiant, still the horrible grammar though
20:30:45 <AnMaster> UNDEF: BASE fingerprint not loaded, won't check I.
20:30:56 <AnMaster> that's just not correct English
20:30:56 <Deewiant> I is the instruction that isn't checked
20:31:12 <AnMaster> it looks like it's horrible grammer
20:31:21 <Deewiant> since "I won't check" would be equally horrible
20:31:23 <AnMaster> adding quotes of some kind around would work
20:31:32 <Deewiant> but I'm really tight for space already
20:31:45 <AnMaster> Deewiant, it doesn't need to fit in 80x25 does it?
20:32:10 <Deewiant> since strictly speaking I guess it's valid for a befunge-93 to error out on seeing a file bigger than 80x25
20:32:31 <Deewiant> well, it's probably unspecified
20:32:41 <Deewiant> it only says "programs are 80x25" or something probably
20:33:18 * AnMaster notes: add support for stuff like command line parameters
20:33:29 <AnMaster> command line parameter parsing is easier to do in bash than C :/
20:33:43 <ais523> "Befunge-93 programs have a maximum size of 80x25 total commands and data bytes"
20:33:45 <Deewiant> since you're going posix, use getopt, right
20:33:57 <ais523> implying that any program that's larger isn't valid Befunge-93
20:33:59 <Deewiant> yeah, so strictly speaking a befunge-93 program /should/ error on seeing 80x25
20:34:26 * ais523 guesses that those dimensions are because they're the standard dimensions of characters on the screen in DOS
20:34:38 <AnMaster> Deewiant, getoptlong though :/
20:34:52 <Deewiant> AnMaster: beats me, haven't used getopt
20:35:02 * AnMaster checks gnulib for a getoptlong version
20:35:10 <Deewiant> I use the good old way of writing help strings manually and iterating over argv :-)
20:35:49 <Deewiant> well, in C it sucks a bit more
20:35:52 <AnMaster> if windows doesn't have getopt, it can <badword />
20:37:35 <ais523> C-INTERCAL uses getopt if it's available, but provides its own minimal-but-good-enough version for if it isn't
20:37:51 <ais523> and autoconf detects whether it's available or not and selects the right version
20:38:09 -!- oerjan has joined.
20:38:22 <ais523> AnMaster: it only uses autoconf, not the other autotools
20:43:12 <ais523> I even wrote some special INTERCAL-specific tests
20:43:33 <ais523> (one of them tested for the presence of undocumented behaviour in yacc that some of the pre-existing program depended on)
20:51:15 <ais523> Deewiant: I just noticed that Mycology uses the string 2+2 for testing the PERL fingerprint
20:51:34 <ais523> that string's a palindrome, so if 0gnirts communication fails by getting the string backwards, you won't notice
20:52:31 <ais523> 8/2 would be one way to solve that problem without modifying anything else
20:53:15 <ais523> it's unlikely to be a problem in practice
20:53:27 <ais523> but then, most of what Mycology tests is unlikely to be a problem in practice
20:53:44 <ais523> it's just that various interps fail at various different points
20:54:00 <ais523> multiple things each of which is unlikely to fail, together may be likely for /something/ to fail
20:56:00 <Deewiant> ais523: mind if I credit you with your realname on my website?
20:56:32 <ais523> although you may want to use my actual realname, not the one I use on IRC
20:56:40 <ais523> which is obviously not a real realname
20:56:50 <ais523> (it doesn't matter in here, but it does matter in some other channels)
20:58:04 <oerjan> hah, mr. This Is, that's just something you _say_
20:58:27 <ais523> another point: ccbi fails Mycology's tests for K in FPSP, at least on my computer, by giving 0 for ln(2)
20:58:41 <ais523> but it's sneakily marked as UNDEF: on the actual test due to issues with rounding
20:58:57 <Deewiant> it may be a case where single-point precision simply can't hold the actual value
20:59:02 <ais523> strangely the FPDP version is correct
20:59:15 <Deewiant> so it is more likely to be correct :-)
20:59:17 <ais523> and I'm sure that 0.693 can be held more accurately than 0 in single-precision floating point
20:59:48 <Deewiant> UNDEF: K says ln(2) is 0.693147 (0.693147)
21:00:03 <ais523> must be something at my end, then
21:00:23 <Deewiant> and also on a school linux comp
21:14:56 <Deewiant> Linux iruel.hut.fi 2.6.20-16-generic #2 SMP Thu Jun 7 20:19:32 UTC 2007 i686 GNU/Linux
21:15:03 <AnMaster> use SSE vector instructions for delta and such
21:15:26 <ais523> Linux dell 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux
21:15:35 <AnMaster> using gcc intrinsics of course
21:15:38 <Deewiant> AnMaster: well, you'd have to benchmark to see if they're actually faster
21:15:42 <ais523> but it's likely just a misconfiguration of gdc or tango or something at my end
21:15:46 <AnMaster> Deewiant, they probably aren't
21:16:09 <AnMaster> Deewiant, anyway it finishes mycology fast enough without using -O even so... heh
21:16:47 <AnMaster> Deewiant, how would ccbi do with no fingerprints?
21:16:56 <Deewiant> of course, you realize it's only executing a fifth or so of mycology :-)
21:17:15 <AnMaster> Deewiant, I'm aware of that, and it is compiled as 64-bit
21:17:35 <AnMaster> amd64 got more registers than x86
21:17:43 <AnMaster> about twice as many CPU registers iirc
21:17:56 <Deewiant> AnMaster: pipe output to /dev/null, how about then
21:18:19 <AnMaster> also, and this may be a disadgantage, my code is compiled as -fpic for some reason (blame cmake!)
21:18:56 <Deewiant> for CCBI on a school linux comp
21:19:17 <AnMaster> os[Linux 2.6.24-gentoo-r2 x86_64] distro[Gentoo Linux (stable)] cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz] mem[Physical : 1.5GB, 46.7% free] disk[Total : 92.82GB, 29.40% Free] video[nVidia Corporation G73 [GeForce 7600 GS]] sound[EMU10K1 - SB Live 5.1]
21:20:47 -!- GregorR has quit (Read error: 113 (No route to host)).
21:21:10 <Deewiant> these are apparently Intel Celeron 2.4 Ghz
21:22:49 <AnMaster> Deewiant, well a 64-bit version of ccbi would likely be faster
21:23:15 <Deewiant> AnMaster: yeah, but I doubt it'd make that big a difference
21:23:22 <Deewiant> or maybe it does, then, whatever
21:24:06 <ais523> Deewiant: -O2 tends to be much better than -O
21:24:17 <ais523> -O3 is only really an advantage over -O2 on embedded systems IME
21:24:27 <AnMaster> I was compiling in background another thing now
21:24:28 <Deewiant> depends on the system and the code in question
21:25:02 <Deewiant> I'm surprised that there'd be a 4x performance penalty for running 32-bit code
21:25:19 <AnMaster> Deewiant, depends on register usage
21:25:27 <Deewiant> I wonder if the linux ccbi one is compiled with optimizations :-)
21:25:38 <AnMaster> all these are average on 5 runs
21:25:54 <Deewiant> AnMaster: your numbers mean nothing to me :-P
21:26:17 <Deewiant> mainly due to the 32/64-bit schism
21:26:21 <Deewiant> and secondly, because I don't care much
21:26:39 <AnMaster> well I'd try with -m32 except I got no 32-bit boehm-gc installed :P
21:27:13 <Deewiant> yes, it seems that the ccbi binary has been compiled without optimizations
21:27:34 <AnMaster> Deewiant, even with -O0 mine was fast
21:27:48 <Deewiant> AnMaster: one big difference between the two is how we do instructions
21:27:55 <Deewiant> AnMaster: you probably have a big switch in a main loop, right?
21:28:14 <AnMaster> Deewiant, well not in main loop no but in a ExecuteInstruction function
21:28:29 <AnMaster> and I got a if case first for string mode
21:28:34 <Deewiant> I have hash tables containing function pointers
21:28:43 <Deewiant> which is immediately a huge performance penalty
21:28:48 <AnMaster> Deewiant, I plan doing that for extensions
21:29:13 <AnMaster> Deewiant, also I try to flattern out any structures
21:29:16 <Deewiant> aye, but especially with as good a compiler as GCC you're bound to get a huge performance boost over such
21:29:25 <AnMaster> struct whatever { fungevector foo; .... }
21:29:44 <AnMaster> struct whatever { fungevector * foo; .... }
21:30:10 <AnMaster> and there are two reasons for that I do so: less memory managment needed
21:30:50 <ais523> AnMaster: unless you need to make shallow copies of the objects inside
21:31:21 <AnMaster> typedef fungePosition fungeVector;
21:31:32 <AnMaster> the reason for that is self documenting code partly
21:31:50 <AnMaster> as in, I use the name vector when I mean a vector, and position when I mean a absolute position
21:31:58 <AnMaster> makes it easier to read the code
21:34:11 <Deewiant> AnMaster: there's a new CCBI binary up which may or may not be faster, but it's compiled with -O this time :-)
21:34:28 <Deewiant> iki.fi/deewiant/befunge/ccbi.html
21:34:41 <AnMaster> Deewiant, page fails in lynx :/
21:34:50 <AnMaster> and I don't want to start firefox
21:35:29 <Deewiant> Lynx Version 2.8.5rel.1 (04 Feb 2004)
21:35:55 <AnMaster> -rw-r--r-- 1 arvid arvid 263164 11 mar 2008 ccbi
21:35:55 <AnMaster> -rw-r--r-- 1 arvid arvid 1508 7 jan 17.46 license.txt
21:36:04 <AnMaster> you may want to set +x on binary in archive
21:36:22 <AnMaster> is what I recommend for linux binaries
21:36:28 <Deewiant> where such distinctions don't exist
21:36:38 <AnMaster> Deewiant, I think cygwin does +x flag
21:36:39 <Deewiant> no, I compiled it on a linux box
21:36:47 <Deewiant> but I use UPX to compress it on windows
21:36:54 <AnMaster> $ time ./ccbi ~/bashfunge/trunk/mycology/mycology.b98 > /dev/null
21:36:56 <ais523> that website seems to work fine for me in w3m
21:37:04 <ais523> although I haven't tried to download any of the binaries from it
21:37:04 <AnMaster> Deewiant, upx is bound to slow it down
21:37:10 <AnMaster> as it need to uncompress binary
21:37:11 <Deewiant> AnMaster: yeah, but it should be a small cost
21:37:22 <Deewiant> AnMaster: the original binary is 1.3 megabytes
21:37:27 <AnMaster> Deewiant, depends, it won't be if system enforce NX bit
21:37:30 <Deewiant> unoptimized it's 0.8 megabytes
21:37:39 <Deewiant> AnMaster: ah, that can be a problem
21:37:51 <AnMaster> Deewiant, in fact I suspect it will have to create a temp file to run on hardened systems
21:37:53 <Deewiant> AnMaster: if you have upx, you can decompress it in place
21:38:07 <Deewiant> AnMaster: portage probably does
21:38:15 <AnMaster> Deewiant, nor is it available for amd64 in a stable form
21:38:21 <AnMaster> Available versions: *1.25 ~2.02 ~3.00
21:38:54 <AnMaster> like for boehm-gc to get some stuff called "Extensible cords"
21:39:14 <Deewiant> if you want, try iki.fi/deewiant/ccbi2
21:39:19 <AnMaster> "Extensible cords are strings that may be destructively appended to. They allow fast construction of cords from characters that are being read from a stream."
21:40:26 <Deewiant> damn, that was a big difference
21:40:46 <Deewiant> and maybe the remaining second can be attributed to 32/64-bit differences
21:41:11 <AnMaster> Deewiant, it can't I tried mine as -m32
21:41:12 <Deewiant> if you want, "over half a second" instead
21:41:51 <Deewiant> if I could be bothered to get GDC running this might end up being a lot faster
21:42:18 <AnMaster> Deewiant, gdc is faster than dmd?
21:42:29 -!- RedDak has joined.
21:42:31 <AnMaster> Deewiant, anyway function pointers in hash map is slower
21:42:47 <AnMaster> Deewiant, a static array index by char would be faster
21:42:48 <Deewiant> it's much slower than whatever GCC compiles a switch to
21:43:16 <Deewiant> and a switch statement would be even faster :-)
21:43:28 <AnMaster> Deewiant, tried that? I guess something on the lines of instructions[127] would be all that was needed
21:43:58 <Deewiant> AnMaster: would have to have extra checking for unimplemented instructions like control chars
21:44:04 <Deewiant> and it'd have to be 255, of course
21:44:36 <Deewiant> and I might have to rewrite the way fingerprints are done, not sure
21:44:38 <AnMaster> put the r instruction in the rest of the slots
21:45:20 <AnMaster> if (opcode < 127) { use array here } else { reflect here }
21:45:27 <Deewiant> there's a fingerprint that allows rewriting instructions
21:45:40 * AnMaster sucks at off by one issues in arrays
21:45:40 <Deewiant> but it's implemented separately, doesn't modify the main instructions array
21:45:56 -!- olsner has joined.
21:46:04 <AnMaster> Deewiant, anyway fingerprints, yes you would need some way to layer them
21:46:19 <AnMaster> so for A-Z you would need something slightly different
21:46:20 <Deewiant> they're done separately though
21:46:26 <AnMaster> Deewiant, btw, want to see my switch case?
21:47:04 <AnMaster> http://rafb.net/p/Ry1n7736.html
21:47:47 <Deewiant> } while (fungeSpaceGet(fspace, &ip->position) == ' ');
21:48:14 <AnMaster> } while (fungeSpaceGet(fspace, &ip->position) == ' ');
21:48:33 <AnMaster> Deewiant, and so it does on pastebin in firefox I notice
21:48:51 <Deewiant> "show as plain text" looks smart
21:49:10 <AnMaster> Deewiant, non-plaintext looks ok in konq and firefox
21:49:50 <AnMaster> I may have a off by one issue with ;
21:49:59 <AnMaster> Deewiant, firefox whatever the stable is on gentoo
21:50:09 <AnMaster> [I] www-client/mozilla-firefox (2.0.0.12@2008-02-15): Firefox Web Browser
21:50:33 <AnMaster> } while (fungeSpaceGet(fspace, &ip->position) != ';');
21:50:39 <AnMaster> doesn't that have a off by one issue?
21:50:49 <AnMaster> as I forward at end of main loop once
21:51:08 <Deewiant> as you forward up to the ; there
21:51:47 <AnMaster> Deewiant, anyway bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge08
21:52:03 <AnMaster> haven't had time to look at problem
21:52:28 <AnMaster> the best distributed version control system IMO :D
21:52:38 * AnMaster ducks for git and mercurial dans
21:52:48 <AnMaster> Deewiant, mercurial isn't too bad
21:53:01 <Deewiant> I don't like git because it doesn't work on windows :-)
21:53:07 <Deewiant> or didn't, I guess it does now
21:53:09 <AnMaster> http://changelog.complete.org/posts/698-If-Version-Control-Systems-were-Airlines.html'
21:53:35 * AnMaster saw it posted in #friendly-coders recently
21:54:02 <AnMaster> slashdot, dig and such: I don't do them
21:54:19 <Deewiant> although in the case of digg, maybe a win ;-)
21:54:42 <AnMaster> I got better things to spend my time on
21:57:46 * AnMaster wonders how a license like http://www.sunrisetel.net/software/devtools/sunriseDD/LICENSE can be GPL compatible
21:58:30 <AnMaster> that library would otherwise provide the perfect hash table
21:58:57 <AnMaster> "The Sunrise Data Dictionary is a library for lock-free hash table storage of arbitrary data objects with built-in reference counting and guaranteed order iteration for the C programming language. It can be used with the Boehm garbage collector, participate in external reference counting systems or use its own built-in reference counting. It comes with a variety of built-in hash functions and allows t
21:58:57 <AnMaster> he use of runtime supplied hash functions via callback."
21:59:08 <AnMaster> and it says license is GPL2 compatible
22:00:04 * oerjan recalls GPL2 containing an "or any later version" clause
22:00:36 <AnMaster> yep you can do "gpl2" or "gpl2 or any later"
22:00:49 <AnMaster> but you don't need to do the later version bit
22:00:49 <oerjan> oh it's author's choice?
22:01:23 <ais523> oerjan: much GPL stuff is licensed with an or-later
22:01:43 <ais523> but there's no legal requirement to put that clause in if you don't want to
22:01:43 <AnMaster> but or-later is is the most common way
22:01:47 <ais523> GPLv3 also allows an 'or later, but only if such and such a person says so'
22:02:03 <AnMaster> ais523, ah nice didn't know that
22:02:45 <ais523> as in, you get to choose who says a license is a version of the GPL, in case you don't trust the FSF to keep the spirit of the license the same
22:03:18 <AnMaster> ais523, indeed I often wondered if GPL4 is where RMS will go mad
22:03:30 <AnMaster> he tried to in the early drafts of gpl3
22:03:55 <AnMaster> ais523, I can't see the "such and such person" clause in gpl3 document?
22:04:04 <ais523> search for the word 'proxy'
22:04:27 <AnMaster> what exact wording should I use in my files for that?
22:04:48 <ais523> not being a lawyer, or an expert on GPLv3
22:05:56 <ais523> I'd suggest using the same wording as the license itself
22:06:20 <ais523> as in, "<insert name here> is a proxy who can decide which future versions of the GNU General Public License can be used."
22:06:29 <ais523> but that's just a guess
22:14:16 <AnMaster> POSIX.1-2001 got some hash functions built in
22:14:37 <AnMaster> no idea about preformance though
22:14:50 <Deewiant> AnMaster: if you feel like more benchmarking, CCBI uses a static array for instructions now
22:15:43 <Deewiant> iki.fi/deewiant/ccbi2 as before
22:16:15 <Deewiant> might make some difference but probably not very much
22:16:40 <AnMaster> Deewiant, btw even that version wants executable stack
22:17:13 <Deewiant> might be something in the compiler runtime
22:17:17 <AnMaster> TYPE PAX STK/REL/PTL TEXTREL BIND SONAME FILE
22:17:17 <AnMaster> ET_EXEC PeMRxS RWX --- RW- - LAZY ccbi2
22:17:49 <Deewiant> I suppose there's no way of figuring out why
22:18:16 <AnMaster> you would need to look at your linker
22:18:28 <Deewiant> closed source, written in asm :-P
22:18:43 <AnMaster> TYPE PAX STK/REL/PTL TEXTREL BIND SONAME FILE
22:18:43 <AnMaster> ET_EXEC ---xe- RW- R-- RW- - LAZY cfunge08
22:19:17 <Deewiant> any performance difference between this version and the last?
22:20:44 <Deewiant> have a look at iki.fi/deewiant/asdf
22:20:44 <AnMaster> Deewiant, and PaX really doesn't like executable stack!
22:20:49 <Deewiant> does it claim to want executable stack
22:21:08 <Deewiant> AnMaster: it's hello world :-/
22:21:31 <Deewiant> AnMaster: how about this one, same file
22:21:48 <AnMaster> I got no idea why, but I can't paste output, pasting just broke it seems
22:22:31 <Deewiant> AnMaster: so what about that one
22:22:38 <AnMaster> Deewiant, current version of that file also wants X stack
22:22:44 <Deewiant> that's just an empty main function
22:22:49 <Deewiant> so it looks like it's the compiler's fault
22:22:55 <AnMaster> then blame the compiler for being crappy
22:23:09 <Deewiant> rather, written in a time when this wasn't an issue
22:23:12 <Deewiant> maybe there's something in the frontend
22:23:56 <Deewiant> and I'm on a school comp, can't be bothered to pull out my gentoo laptop
22:23:56 <AnMaster> and why I have no plans on getting a newer version
22:24:33 <AnMaster> Deewiant, still when I implement finger prints mine will be slower
22:24:49 <Deewiant> that's what I thought at first, as well ;-)
22:25:01 <AnMaster> Deewiant, you didn't do them all
22:25:17 <Deewiant> SGNL can't work on windows so it's out for not being portable
22:25:32 <AnMaster> Deewiant, and I think TURT is silly too
22:25:49 <AnMaster> is there any *stream IO* fingerprint
22:26:02 <AnMaster> that hardly would work on binary streams well
22:26:14 <Deewiant> which implements fopen/fread-instructions and such
22:26:29 <AnMaster> Deewiant, so just write a PNG/SVG writing routine in befunge? :P
22:27:07 <AnMaster> Deewiant, how do you create svg files btw?
22:27:50 <Deewiant> if all XML is crap to you, then yes :-P
22:28:20 * AnMaster is one of several developers on it
22:28:30 <Deewiant> AnMaster: I got somebody to compile a GDC version for me, iki.fi/deewiant/test4
22:28:34 <AnMaster> it uses S-Expressions for data files, and thanks to it I learnt to love S-Expressions
22:28:35 <Deewiant> see if that needs executable stack
22:29:24 * AnMaster wonder WTF is up with pasting in xorg
22:29:38 <AnMaster> yesterday middle mouse button paste into lyx died
22:29:50 <AnMaster> now it's emacs running my irc client
22:30:37 <AnMaster> LaTeX with WYSIWYM (what you see is what you meant)
22:30:58 <AnMaster> you just take care of the structure it does the formatting
22:31:52 <AnMaster> Deewiant, if you want to see my (still not allowed with copyright though!) funge08 specs I can DCC the generated pdf that looks awesom
22:32:02 <AnMaster> and allow you to give some input on my changes if you want
22:32:16 <Deewiant> AnMaster: one last one, iki.fi/deewiant/foo
22:32:29 <Deewiant> AnMaster: I don't really have time now
22:32:50 <AnMaster> Deewiant, no executable stack in that one, but unlike test4 it doesn't have sane PaX flags
22:33:17 <AnMaster> insane: as in PaX flags being PeMRxS
22:33:31 <Deewiant> like said it's all greek to me :-)
22:34:27 <AnMaster> Deewiant, because it basically means that PaX (hardened kernel thing for NX) would allow lots of things
22:34:46 <Deewiant> or rather, what are the differences to ---xe-
22:35:14 <AnMaster> Deewiant, I can't paste into irc client atm so...
22:35:33 <AnMaster> PAGEEXEC EMUTRMAP MPROTECT RANDMMAP RANDEXEC SEGMEXEC
22:36:10 <Deewiant> so it's got more protections enabled
22:38:05 <Deewiant> there's no way for you to disable PaX temporarily or anything, to see if CCBI runs faster?
22:38:19 <AnMaster> the x is bad, but you need compile and link with -fpic -fpie -pie to make that work
22:38:29 <AnMaster> Deewiant, not without recompiling kernel and rebooting
22:38:49 <AnMaster> Deewiant, I got a blender render running now
22:39:15 <Deewiant> meh, cancel it, this is more important >_<
22:39:27 <AnMaster> Deewiant, also another thing: I like my uptime
22:39:57 <AnMaster> currently at 19 due to power outage :(
22:40:06 <Deewiant> so it's not a big loss anyway ;-)
22:40:20 <AnMaster> and I don't want to disconnect from irc
22:40:42 <AnMaster> currently on 397 channels spread over 23 networks
22:41:32 <Deewiant> I see, that's why you don't have time for things like slashdot ;-)
22:42:39 <AnMaster> I'm ircoper on some smaller networks
22:49:15 -!- Deformative has joined.
22:49:55 -!- Deformative has left (?).
22:56:12 -!- ais523 has quit ("too tired to concentrate").
22:58:13 -!- RedDak has quit (Remote closed the connection).
23:07:23 <oklokok> http://www.vjn.fi/oklopol/befunge.txt
23:07:29 -!- Deformative has joined.
23:07:34 <oklokok> http://www.vjn.fi/oklopol/befunge.txt
23:07:49 <oklokok> god it took long to get intuition for that
23:08:29 <oerjan> now if i just understood it as well... :D
23:09:48 <oklokok> it's a simple copypaste solution
23:10:14 <oklokok> i'll make something real when i have time
23:13:45 <oklokok> i didn't even have time to obfuscate it
23:14:08 <oklokok> also, it's heavily commented :o
23:18:35 <oerjan> i noticed that, after a while. first i thought those were some strange commands...
23:36:10 <oklokok> might be fun to make something that executes english sentences
00:05:57 -!- BMeph has joined.
00:07:30 -!- RodgerTheGreat has joined.
00:07:47 -!- Corun has joined.
00:07:59 <RodgerTheGreat> I feel like I'm taking crazy pills, because I just *KNOW* there must be an easy way to do this:
00:08:27 <RodgerTheGreat> I want to take a 2d component vector and generate a unit vector representing the same angle. my approach is as follows:
00:09:40 <RodgerTheGreat> if (abs(vx) > abs(vy)) {max = vx;} else if (vy != 0) {max = vy;}
00:10:20 -!- timotiis has quit ("leaving").
00:10:25 <oklokok> i don't get how that does it
00:10:40 <oklokok> perhaps i'm misunderstanding you
00:10:54 <oklokok> the length of that will most definately not be one
00:11:07 <oklokok> because one of those will be 1, and the other nonzero
00:12:07 <oerjan> you're using the max (L^infinity) norm...
00:12:40 <RodgerTheGreat> 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 <RodgerTheGreat> I suppose a better way to phrase this question is "is the way I'm currently doing this astoundingly stupid?"
00:14:01 <oklokok> well, as oerjan said, it's not the cartesian unit vector
00:14:02 <oerjan> um what kind of length do you want to be 1 in the final vector?
00:14:09 <oklokok> so it's not stupid, it's wrong
00:14:13 -!- sebbu has quit ("@+").
00:14:27 <oklokok> or is cartesian the superset for n-norm?
00:14:32 <oklokok> i don't really know anything.
00:14:57 <oerjan> also even if you did want L^inf, (cartesian = L^2) you would want to divide on abs(max), not max
00:16:14 <oklokok> does this mean infinity is even? :D
00:16:26 <RodgerTheGreat> 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 <oklokok> (don't you need abs for odd exponent norms only)
00:16:58 <oklokok> (i'm not sure about anything, and i have my math matriculation exams tomorrow :DDDDDDDDDDD)
00:17:14 <oklokok> (i guess i should sleep, it's 1:16 or soemthing)
00:17:54 <oklokok> RodgerTheGreat: especially for 2d, you need the unit vector anyway for most things
00:18:14 <RodgerTheGreat> 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 <RodgerTheGreat> wouldn't my result be off by a constant multiple this way?
00:18:58 <oklokok> because you could just divide by that constant otherwise
00:19:12 <oklokok> and have a non-pythagorean unit vectorizer
00:19:15 <oerjan> er, your _original_ vector is off by a constant multiple
00:20:01 <oklokok> i thought constant meant... constant
00:20:10 <oerjan> and to get a unit vector you have to find that multiple (the length) and divide by it
00:20:43 <oklokok> good start, oerjan, now to confuse him with awesome math :-)
00:21:09 <RodgerTheGreat> my approach represents the correct angle, but is clearly longer than the unit vector
00:21:29 <oklokok> RodgerTheGreat: as was the original, ofc
00:21:52 <oerjan> if you only need a _canonical_ vector in the same direction, any length will be fine
00:22:18 <RodgerTheGreat> so what's computationally cheaper- the pythagorean theorem, or my if-then-else?
00:22:35 <oerjan> in fact it might be simpler to use L^1: abs vx + abs vy
00:22:38 <oklokok> RodgerTheGreat: yours, but i don't really see its point
00:23:00 <oklokok> RodgerTheGreat: in that case, i suggest Identity
00:23:30 <oklokok> RodgerTheGreat: what do you need this for?
00:23:50 <RodgerTheGreat> oklokok: I do calculations of this form in several places for a game I'm working on
00:24:13 <RodgerTheGreat> if you have a java compiler installed, I can show you the source
00:24:25 <RodgerTheGreat> oklokok: just for fun. I'm on vacation, so I'm entertaining myself
00:24:26 <oklokok> preferably tell me quickly, for i should go :P
00:24:29 -!- GregorR has joined.
00:25:06 <oklokok> RodgerTheGreat: i'd say just calculate the square root, you can get a nice approximation with a constant number of steps
00:25:07 <RodgerTheGreat> it's kinda a cancer simulation, although it's not biologically accurate at all
00:25:33 <oklokok> there are tricks for getting accuracy up to a one hundreth with just a few divisions
00:26:29 <oklokok> hmm, actually i don't have any recollection where i saw that
00:27:11 <RodgerTheGreat> 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 <oklokok> well, l^1 looks very *square*, in at least two meanings of that word
00:28:18 <oklokok> what do you use the unit vector for?
00:28:27 <oerjan> yeah it's the taxicab metric
00:29:04 <RodgerTheGreat> in one case, I'm positioning the nucleus of a moving cell based on its current velocity
00:29:33 <RodgerTheGreat> (although that's actually a poor example, because there I divide by the defined terminal velocity of the cell)
00:29:46 <oklokok> because the thingie will move on a square around the cell
00:29:57 <RodgerTheGreat> I just run into this type of calculation from time to time
00:30:10 <oerjan> the velocity is a vector - you don't need to turn it into a unit vector to add it to position
00:30:30 <oklokok> oerjan: i guess the cell can move at any speed?
00:30:40 <oklokok> RodgerTheGreat: just store the damn unit vector
00:30:45 <RodgerTheGreat> I store and manipulate vectors in unit format, not polar
00:30:49 <oklokok> you'll need it for everything anyway
00:31:09 <oerjan> i am talking cartesian format
00:31:12 <oklokok> polar isn't that useful for games
00:31:23 <oklokok> we're all talking cartesian
00:31:26 <oerjan> new_pos = old_pos + time_diff * velocity
00:31:48 <oklokok> RodgerTheGreat: if there's drawing / moving, cartesian is the way to go.
00:32:08 <RodgerTheGreat> I have a fairly good understanding of this stuff in an applied sense
00:33:05 <oklokok> oh, god, i really need to go
00:33:14 <oklokok> but have fun with your cells! ->
00:33:42 <RodgerTheGreat> 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.
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.
03:59:41 -!- CakeProphet has quit ("haaaaaaaaaa").
04:16:05 <calamari> pikhq: how's your os project going?
04:21:18 -!- immibis has joined.
04:26:26 <pikhq> calamari: Going decently.
04:26:30 <pikhq> 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 <AnMaster> 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 <AnMaster> Deewiant, also the ccbi from you, is broken it seems, it does not pass mycoterm
12:45:29 <AnMaster> "\E[H\E[2JC was called, the screen should have cleared."
12:45:55 <Deewiant> yeah, the curses stuff is messed up
12:45:59 <Deewiant> I don't know how it should be done
12:46:10 <Deewiant> or rather, it doesn't use curses
12:46:32 <Deewiant> they worked on cygwin, I think
12:48:24 <AnMaster> Deewiant, you should use terminfo
12:48:27 <Deewiant> AnMaster: btw, there's a GDC-compiled version of CCBI up at iki.fi/deewiant/ccbi
12:48:35 <Deewiant> I don't know how that stuff works
12:48:59 <Deewiant> I just copied RC/Funge's implementation
12:49:11 <AnMaster> curses will use terminfo databse
12:49:15 <Deewiant> yeah, that's probably the best option
12:49:29 <AnMaster> Deewiant, not sure about that, but it is the *easiest*
12:49:47 <AnMaster> there is some libtermcap if you want to do it yourself iirc, or maybe it was libterminfo
12:50:00 <AnMaster> anyway termcap is older name for same thing iirc
12:50:13 <Deewiant> 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 <AnMaster> Deewiant, you need special bindings?
12:50:43 <AnMaster> you can't just use a C header file like you can in C++?
12:50:45 <Deewiant> just define extern(C) function
12:50:58 <oerjan> terminfo is an improved system on termcap iirc
12:51:11 <Deewiant> AnMaster: anyhoo, what are the timings like for that GDC-compiled one
12:51:15 <AnMaster> I never messed with terminfo/termcap other than from bash anyway
12:51:18 <Deewiant> just to see if PaX makes that big a difference
12:51:24 <AnMaster> and in bash I just use the tput command
12:51:27 <oerjan> i don't think they are particularly backwards compatible
12:51:41 <AnMaster> Deewiant, iirc slightly less as I told you?
12:51:51 <Deewiant> AnMaster: you haven't run that one
12:52:52 <Deewiant> hmm, I can't use curses, right
12:53:04 -!- atsampson has quit (Read error: 104 (Connection reset by peer)).
12:53:14 <AnMaster> Deewiant, so about 0.1 second difference
12:53:17 <Deewiant> AnMaster: curses needs to init itself
12:53:24 <Deewiant> AnMaster: that was with GCC 4.1.2, -O3
12:53:25 -!- atsampson has joined.
12:53:31 <AnMaster> but PaX markings are good anyway, because it allows things to be more secure :)
12:53:36 <AnMaster> when running under a hardened kernel
12:53:56 <Deewiant> 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 <AnMaster> less risk for stuff like buffer overflows and such
12:54:19 <Deewiant> because TERM doesn't have any "initialize" instruction, but NCRS does
12:56:15 <AnMaster> but it doesn't clear the screen at the start or such
12:57:13 <AnMaster> ok, I guess tput doesn't do that part of ncurces
12:57:32 <Deewiant> hrm, you can't really do anything if you haven't done initscr
12:57:47 -!- oerjan has quit ("dnorf").
12:57:55 <AnMaster> well it just gets terminfo stuff and outputs capability
12:58:03 <Deewiant> "The initscr() function also causes the first refresh operation to clear the screen."
12:59:49 <AnMaster> /usr/include/ncursesw/term.h ?
13:00:38 <AnMaster> $ diff /usr/include/term.h /usr/include/ncursesw/term.h
13:00:38 <AnMaster> > #include <ncursesw/ncurses_dll.h>
13:01:28 <AnMaster> Deewiant, btw can a fingerprint be loaded several times?
13:01:40 <AnMaster> say 1) load fingerprint 2) load some other 3) load it again
13:01:47 <AnMaster> and for ccbi, would that call intscr() again
13:01:48 <Deewiant> or even just 1) load fingerprint 2) load it again
13:02:17 <AnMaster> Deewiant, it probably shouldn't
13:03:11 <Deewiant> so what should one do after endwin()?
13:03:32 <Deewiant> AnMaster: since initscr() is only called when the instruction I is called
13:03:38 <Deewiant> nothing happens when loading NCRS
13:05:07 * AnMaster notes having one malloc / cell is stupid, but, oh well
13:05:56 <AnMaster> it's still about twice as fast as ccbi even for apps without fingerprints.
13:06:27 <AnMaster> weird, now pasting started working in irc client again
13:06:44 <AnMaster> Deewiant, btw, does D use a garbage collector?
13:07:30 <AnMaster> not boehm then when using gdc?
13:07:44 <oklokok> Deewiant: what age are ya?
13:07:54 <AnMaster> considering boehm is used for the gcj thing iirg
13:08:21 <oklokok> Deewiant: math matriculation exams were just now, so i was just checking whether you happened to do that too
13:09:55 <oklokok> prolly not, programmers tend not to fail enough to be at high school at the age of 20
13:10:14 * oklokok hopes he's not insulting too many here
13:11:51 <oklokok> is this thue-day, unlambda-day or brainfuck-day?
13:12:06 <AnMaster> mycotmp0.tmp: DBase 3 data file (590422062 records)
13:12:13 <AnMaster> Deewiant, wtf did it write to mycotmp0.tmp
13:12:27 <AnMaster> oh? looks like part of a funge program
13:12:48 <AnMaster> Deewiant, also should mycotemp.tmp have a ending newline?
13:13:06 <Deewiant> I don't know, probably not if it doesn't have one and Mycology is happy :-P
13:13:08 <AnMaster> mycotmp0.tmp got an ending newline, mycotemp.tmp does not
13:13:19 <AnMaster> Deewiant, that it doesn't remove afterwards heh
13:13:27 <Deewiant> yeah, because it can't be done portably
13:16:35 <AnMaster> whoo down with 0.2 seconds thanks to some tricks :)
13:16:57 <AnMaster> (not really fair to compare, as it's a trick you can do on any binary)
13:18:15 <AnMaster> ok down with another 0.2 now, almost as fast as with static array for fungespace
13:19:24 <Deewiant> AnMaster: how do you do output, btw
13:20:03 <AnMaster> and I flush after each put char
13:20:18 <AnMaster> would make it faster to just flush at input or newline
13:20:35 <Deewiant> I need to have an if branch at each ',' because of the TRDS fingerprint
13:20:45 <Deewiant> that fingerprint really BURNS MY ASS
13:20:54 <AnMaster> Deewiant, oh? why? I don't understand what TRDS is really
13:20:57 <Deewiant> stupid fool had to write the spec for it and didn't implement it even half properly
13:21:10 <Deewiant> so you can go back in time, say, 200 ticks
13:21:16 <Deewiant> then modify funge-space there so stuff happens differently
13:21:57 <AnMaster> sounds like that think ais[0-9]+ (can't remember actual nick) talked about
13:22:39 <AnMaster> Deewiant, so I'm not going to implement TRDS then
13:23:10 <AnMaster> I will do null, but anyway first I'll get y correct
13:23:18 <Deewiant> I have 50-line comments in CCBI explaining some TRDS-related stuff
13:23:21 <AnMaster> and proper command line parsing
13:23:23 <Deewiant> and I'm still not sure I've got it right
13:23:45 <AnMaster> Deewiant, indeed, but I got a question
13:24:16 <AnMaster> you load "PRINT", then load NULL, then unload NULL
13:24:27 <AnMaster> should instructions now map to PRINT again
13:24:55 <AnMaster> so you need to keep some special instruction stack for each char to get loading right
13:25:19 <AnMaster> also, is it possible to do load PRNT, then QUUX then unload PRNT
13:25:35 <AnMaster> and what should happen in such cases
13:27:14 <AnMaster> Deewiant, I got no idea what would happen then
13:27:15 <Deewiant> if PRNT defines ABC and QUUX defines ABCDE
13:27:22 <Deewiant> then after that DE are bound to QUUX and ABC to PRNT
13:28:00 <Deewiant> go over it, draw a diagram or two if it helps
13:28:26 <AnMaster> 1) load PRNT 2) load QUUX 3) *UN*load PRNT
13:28:38 <AnMaster> you must have misunderstood what I meant?
13:28:43 <Deewiant> no, I believe I was quite correct
13:29:00 <Deewiant> QUUX defines A, B, C, D, and E
13:29:12 <Deewiant> A, B, C are bound to PRNT's funcs
13:29:24 <Deewiant> ABCDE are bound to QUUX's funcs
13:29:43 <Deewiant> so DE remain bound to QUUX's funcs
13:29:51 <AnMaster> so wait, it unloads ABC even though those are bound to something else?
13:30:01 <Deewiant> ABC become bound to PRNT's functions because that was what they were bound to before
13:30:50 <Deewiant> DE still have a stack of the form [PRNT, QUUX]
13:31:07 <Deewiant> because when unloading PRNT, you only popped from ABC.
13:31:13 <AnMaster> then the stack should end up as [<empty>, QUUX] possibly? and then getting compacted to be just [QUUX]?
13:32:07 <Deewiant> unload anything that defines A: []
13:32:10 <AnMaster> <Deewiant> unload PRNT: [PRNT] <-- that is where I'm not sure you are right
13:32:28 <Deewiant> when you unload PRNT, what happens is essentially:
13:32:34 <Deewiant> "aha, PRNT defines A, B, and C"
13:32:46 <Deewiant> "let's go pop 1 off the instruction stack from A, B, and C"
13:32:57 <Deewiant> it doesn't matter whether the instruction on top of the stack is the one defined by PRNT
13:33:16 <AnMaster> Deewiant, is that what the standard says?
13:33:17 <Deewiant> we could add a third fingerprint, FOOB
13:33:28 <Deewiant> so back at load QUUX: [PRNT, QUUX]
13:33:46 <Deewiant> and yes, that's what the spec says.
13:45:14 <AnMaster> Deewiant, but you can't unload a non-loaded fingerprint right?
13:45:43 <AnMaster> it should reflect then shouldn't it?
14:00:08 <Deewiant> meh, now I'm using term.h functions and it's still not working
14:04:34 -!- Corun has joined.
14:12:04 <Deewiant> man, this sux. I'm going to just comment out the TERM fingerprint on Posix.
14:17:17 <Deewiant> AnMaster: figure out how to make it work, I can't and won't bother.
14:17:19 <AnMaster> if I do TERM I will do it the right way
14:17:30 <AnMaster> but I got other issues to fix first
14:17:51 <AnMaster> I will research how tput does it
14:17:58 -!- timotiis has joined.
14:20:43 <AnMaster> Deewiant, if you want I'll wgetpaste tput's source
14:20:55 <AnMaster> http://rafb.net/p/v2UBD448.html
14:39:05 -!- whice has joined.
15:04:00 -!- RedDak has joined.
16:01:04 <AnMaster> Deewiant, yes now cfunge is definitly faster than ccbi even when I compile to 32-bit code
16:02:46 <Deewiant> 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 <Deewiant> because then each IP needs to keep a pointer to know what its funge-space is
16:03:14 <Deewiant> instead of all using the same global
16:06:14 <Deewiant> and that can't really be helped without removing mini-funge entirely :-/
16:26:05 <AnMaster> BAD: 0y pushes wrong stack size
16:27:04 <Deewiant> it called 0y and expected to find the correct stack size in the heap of stuff that y pushes
16:27:17 <Deewiant> I suspect that you push nothing for 0y
16:27:34 * AnMaster checks, I do push things for 0y
16:27:44 <Deewiant> then you might be pushing the new stack size instead of the old one
16:28:13 <AnMaster> ah very likely, I push the stack size at the point of pushing stack size
16:29:03 <AnMaster> <Deewiant> because then each IP needs to keep a pointer to know what its funge-space is
16:29:03 <AnMaster> <Deewiant> instead of all using the same global
16:29:18 * AnMaster does pass fspace around a lot, but that could be fixed
16:29:30 <Deewiant> I tested, having them all refer to the global fungespace instead of dereferencing a pointer speeds some stuff by about 30%
16:30:46 <AnMaster> Deewiant, anyway another thing that will slow down 32-bit code: normal calling convention passes arguments on the stack
16:30:59 <AnMaster> AMD64 ABI pushes quite a few in the registers
16:31:54 <AnMaster> and of course the function pointer thing for instructions doesn't allow them to be inlined
16:32:04 <Deewiant> yes, that's the biggest performance penalty
16:32:13 <Deewiant> practically everything goes through a pointer
16:32:13 <AnMaster> oh and y breaks all my abstractions for stackstack
16:32:39 <AnMaster> I need to code some way to access non-top stacks from the y code :(
16:33:15 <AnMaster> 1 vector containing the least point which contains a non-space cell, relative to the origin (env)
16:33:22 <AnMaster> is that relative to storage offset?
16:33:47 <AnMaster> Deewiant, what does ccbi do for it?
16:33:49 <Deewiant> but the storage offset at that point should be (0,0) anyway
16:33:56 <Deewiant> can't be bothered to check, and no, probably not
16:34:06 <AnMaster> but it is undefined in the standard?
16:34:24 <Deewiant> just check the spec yourself :-P
16:34:50 <AnMaster> That the time is 00 : 08 : 1128682830
16:35:04 <AnMaster> I wonder, why does passing a dummy value of 0 cause that
16:35:09 <AnMaster> Deewiant, I know, it's // TODO
16:36:51 <Deewiant> probably because the befunge expects 2 values there
16:37:01 <Deewiant> if you're pushing only one zero that is
16:37:13 <AnMaster> # 1 cell containing current ((year - 1900) * 256 * 256) + (month * 256) + (day of month) (env)
16:37:13 <AnMaster> # 1 cell containing current (hour * 256 * 256) + (minute * 256) + (second) (env)
16:37:48 <Deewiant> for the date it might have been
16:38:04 <AnMaster> yes right, but the time I don't get
16:38:33 <Deewiant> don't know, read the befunge to see what it does and figure it out :-P
16:39:09 <Deewiant> you give it incorrect values and it produces incorrect output :-P
16:40:53 <Deewiant> looks like the code that calculates it
16:43:56 <AnMaster> Deewiant, I stopped passing fungespace pointer around, no noticable speed difference
16:44:46 <AnMaster> still around 0.5 seconds both before and after (for debug version, I guess optimized build could make a difference
16:47:58 <AnMaster> and around 0.3 with debug info
16:59:25 <AnMaster> That the day of the month is -244
17:03:01 <AnMaster> That the environment variables are:
17:03:07 <AnMaster> it is valid to run with a clean env
17:03:16 <AnMaster> you can do it using env -i in front of the program
17:04:02 <AnMaster> I think mine does something strange on outputting \0
17:06:06 <AnMaster> Deewiant, another question: should time in y be local time or UTC=
17:06:50 <AnMaster> just time and gmtime needed then
17:07:02 <Deewiant> there's a fingerprint which allows both UTC and local
17:07:14 <AnMaster> (negative year problem, turns out the result of tm is already in years since 1900....)
17:14:02 <AnMaster> That the command-line arguments were: [ null "/home/arvid/bashfunge/trunk/mycology/mycology.b98" "./cfunge08" null ]
17:14:25 <Deewiant> ./cfunge08 isn't supposed to be there btw
17:15:20 <AnMaster> That the command-line arguments were: [ null "./cfunge08" "/home/arvid/bashfunge/trunk/mycology/mycology.b98" null ]
17:15:37 <AnMaster> Deewiant, with full path I assume?
17:15:50 <AnMaster> doing path splitting would be insane
17:16:13 <AnMaster> because it was called with full path
17:16:24 <Deewiant> with whatever it was called, I guess
17:16:43 <Deewiant> 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 <AnMaster> That the command-line arguments were: [ "/home/arvid/bashfunge/trunk/test/mycology.b98" null ]
17:16:53 <Deewiant> well, you've got too many nulls there :-P
17:17:17 <Deewiant> and I'm not going to figure out why
17:17:39 <Deewiant> AnMaster: if you run without an empty environment there won't be an ending null there
17:18:09 <AnMaster> actually, depending on how D pass stuff to main() that may make sense
17:18:36 <AnMaster> because, both these are valid main() prototypes in C:
17:18:40 <AnMaster> int main(int argc, char *argv[])
17:18:49 <AnMaster> int main(int argc, char *argv[], char*envp[])
17:18:56 <AnMaster> not sure of name for the latter
17:19:11 <Deewiant> I don't know what it is but it's not standard C :-P
17:19:43 <AnMaster> anyway possibly if they follow each other in memory that could mean some off by one error on the part of D
17:20:03 <Deewiant> because D doesn't use null-terminated strings
17:20:17 <Deewiant> D arrays are (length,pointer) pairs
17:20:22 <Deewiant> and main is int main(char[][] args)
17:20:45 <AnMaster> well popping and pushing 0gnirts are harder then
17:21:15 <AnMaster> for (ssize_t i = len; i >= 0; i--)
17:22:02 <Deewiant> ip.stack.push(cast(cell)*s--);
17:22:13 <Deewiant> AnMaster: you're missing the calculation of len, which is a call to strlen
17:22:24 <AnMaster> Deewiant, it is passed as a argument to the function
17:22:25 <Deewiant> that's mine, since you were obviously asking :-P
17:22:30 <AnMaster> to allow pushing several in one row
17:23:15 <AnMaster> Deewiant, and allows potential for cashing string length in case I push the same several times or such
17:23:32 <Deewiant> I only use pushStringz with fingerprints, though
17:24:10 <AnMaster> it uses some nice fast extensible strings things from boehm-gc
17:24:26 <Deewiant> mine just uses normal D strings :-P
17:24:32 <AnMaster> http://rafb.net/p/nZCGyC10.html
17:24:47 <Deewiant> but hey, if you feel like more benchmarking, http://users.tkk.fi/~mniemenm/files/befunge/interpreters/ccbi/ccbi_linux.zip
17:25:01 <AnMaster> Deewiant, what's new in that one?
17:25:16 <AnMaster> Deewiant, yes? what about it? nice thing from boehm-gc
17:25:19 <Deewiant> AnMaster: for one thing it has a --disable-fprints command line argument :-)
17:25:27 <Deewiant> AnMaster: what does it mean? looks like too many abbreviations in one :-P
17:25:42 <AnMaster> (/* Extensible cords are strings that may be destructively appended to. */
17:26:03 <AnMaster> * Cords are immutable character strings. A number of operations
17:26:03 <AnMaster> * on long cords are much more efficient than their strings.h counterpart.
17:26:32 <AnMaster> Deewiant, cord isn't an abbrev
17:26:46 <AnMaster> cord and string are both think long objects :P
17:26:56 <Deewiant> just wondering why it's called cord and not just string
17:27:04 <Deewiant> since, after all, "cords are [...] strings" :-P
17:27:30 <AnMaster> * The following are reasonable applications of cords. They would perform
17:27:30 <AnMaster> * unacceptably if C strings were used:
17:27:30 <AnMaster> * - A compiler that produces assembly language output by repeatedly
17:27:30 <AnMaster> * concatenating instructions onto a cord representing the output file.
17:27:44 <Deewiant> look like D strings to me, then
17:27:45 <AnMaster> it is such a case I do here, adding one char at a time
17:28:22 <AnMaster> typedef struct CORD_ec_struct {
17:28:54 <Deewiant> I really don't care how they're implemented
17:29:02 <Deewiant> they're convenient abstractions to avoid having to mess with strcat and co
17:29:26 <AnMaster> I think they wouldn't work without boehm
17:30:52 <Deewiant> so how does the new CCBI run for you
17:31:06 <Deewiant> mycology piped to dev/null takes 0.36 seconds on my laptop
17:35:10 <Deewiant> how about without fingerprints? :-)
17:35:33 <AnMaster> won't it fail then due to no popping?
17:36:26 <Deewiant> or ccbi --disable-fprints, same thing
17:38:46 <Deewiant> alright, you can do some profiling for me
17:39:05 <Deewiant> iki.fi/deewiant/ccbi, run it on mycology piped to dev/null and send me gmon.out :-)
17:39:28 <Deewiant> I can't be bothered to optimize any more
17:39:33 <Deewiant> unless there's an obvious bottleneck on your machine
17:39:49 <Deewiant> at this point, all I can do is remove features or make the code so fugly that it's not worth it
17:41:03 <Deewiant> thing is that there's nothing obviously slow that I can find
17:41:38 <Deewiant> it's just that some things are called 300 000 times - through function pointers, even
17:41:51 <Deewiant> 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:38 <AnMaster> Deewiant, I'm sure I can optimize hash function I use for mycology performance too
17:42:40 <Deewiant> I think GLFunge98 was already faster than CCBI, actually
17:42:49 <Deewiant> AnMaster: how've you implemented funge-space now?
17:42:49 <AnMaster> and even, my k isn't as optimized as yours is
17:43:06 <Deewiant> none of those extra-optimized k ones are called in mycology
17:43:13 <AnMaster> Deewiant, using a hash library, key is a position struct
17:43:16 <Deewiant> to have that switch case there
17:44:01 <Deewiant> 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 <Deewiant> AnMaster: it was quite a bit slower than my current hash table of hash tables -thing
17:44:12 <AnMaster> 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 <AnMaster> may mean some overhead but faster at load time
17:44:38 <Deewiant> CCBI's runtime on mycology is mostly load time
17:44:43 <Deewiant> at least on my computers, don't know about yours
17:44:51 <AnMaster> Deewiant, initial entries in hash table is set to slightly more than mycology needs
17:44:52 <Deewiant> maybe PaX isn't friendly to function pointers
17:45:04 <AnMaster> Deewiant, no clue, read about PaX on wikipedia
17:45:37 <AnMaster> Deewiant, that is I call hash creation with initial size set to slightly more chars than is in mycology
17:46:09 <Deewiant> D probably allocates in much smaller chunks internally
17:46:20 <Deewiant> well, I could argue that that's a huge waste of memory on most befunge programs
17:46:43 <Deewiant> everywhere where I have constants in CCBI, they're set to 'typical' values and not 'mycology' values :-P
17:46:45 <AnMaster> 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 <AnMaster> of course, most functions can pass all parameters in the registers here :)
17:48:08 <AnMaster> Deewiant, and I use gcc __attribute(())__ sometimes
17:48:19 <AnMaster> mostly because it allows me to get better warnings
17:48:34 <AnMaster> like __attribute__((warn_unused_result))
17:48:57 <AnMaster> some other both gives better warnings and better code, like nonnull
17:49:07 <AnMaster> and probably allows it to optimize better
17:49:45 <Deewiant> well, the DMD compiler frontend sucks, so any D-specific optimization is pretty much out of the window for my code
17:49:53 <Deewiant> any optimization that GCC does will be done at asm level
17:50:07 <Deewiant> any significant optimization, that is
17:50:25 <Deewiant> you have a huge advantage there
17:50:30 * AnMaster goes to mark some pure functions
17:50:30 <Deewiant> even though we use the same backend
17:51:05 <AnMaster> Deewiant, anyway if you use gdc you would get same backend
17:51:09 <Deewiant> of course, if you're performance tuning as much as you are, and writing in C, you will be faster :-P
17:51:13 <AnMaster> and should get about same level of optimization
17:51:16 <Deewiant> AnMaster: like I said, same backend
17:51:21 <Deewiant> but no, it's not the same level
17:51:31 <Deewiant> think about stuff like const, which I suppose you use somewhere
17:51:35 <Deewiant> or all those __attribute__ things
17:51:41 <Deewiant> they're completely lost when translated to asm
17:51:49 <AnMaster> Deewiant, hm now it is faster, down at 0.9 seconds for ccbi
17:52:06 <Deewiant> that blender render completed? ;-P
17:52:16 <AnMaster> Deewiant, nah, that finished around noon today
17:52:38 <AnMaster> Deewiant, anyway I do NOT use __attribute__ for gaining speed
17:53:00 <AnMaster> Deewiant, yes doesn't D have const?
17:53:00 <Deewiant> const is used for correctness of code
17:53:06 <Deewiant> AnMaster: not in the same way C does
17:53:14 <Deewiant> AnMaster: only for compile-time constants
17:53:16 <AnMaster> I'm using const when I can, for correct ness
17:53:33 <Deewiant> but of course it's a potentially big optimization help as well
17:53:50 <AnMaster> Deewiant, as is the C99 restrict keyword (that I'm not using, yet)
17:54:08 <AnMaster> though not sure about correctness for restrict
17:57:31 <AnMaster> Deewiant, also, no idea if you can use out parameters in D?
17:57:42 <AnMaster> void changemyparameter(char * foo);
17:57:48 <AnMaster> so it opterates on the thing in place
18:00:12 -!- jix has joined.
18:02:19 -!- jix has quit (Client Quit).
18:02:49 -!- jix has joined.
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 <AnMaster> Deewiant, by the way my debug build takes about 0.6 seconds at mycology
18:14:19 <Deewiant> AnMaster: got a copy of your binary? to see how fast it is here
18:34:55 <AnMaster> Deewiant, I think I know about ccbi's env -i problem
18:35:18 <Deewiant> with env -i, it's null null null null
18:35:18 <AnMaster> it would push \0\0 at the end of the environment right?
18:35:33 <AnMaster> and mycology fails to handle that
18:36:23 <AnMaster> Deewiant, if you were to redesign that bit, what would you suggest?
18:37:05 <Deewiant> I'd suggest losing 0gnirts and using gnirts<length> instead
18:37:19 <Deewiant> and then you can have nulls in strings
18:38:50 <AnMaster> BAD: : on empty stack doesn't make stack size 2, says y
18:38:50 <AnMaster> GOOD: \ on empty stack makes stack size 2 according to y
18:39:25 <AnMaster> do you get the stack size value differently?
18:39:29 <Deewiant> as usual, all I can say is trace it and find it
18:39:38 <Deewiant> I can't remember, probably f8+y or whatever
18:40:50 <AnMaster> Deewiant, you are not testing that size of stack works as it should btw
18:40:57 <AnMaster> it says one cell for each stack
18:41:04 <AnMaster> just saw my code just push for the top stack
18:41:51 <AnMaster> That the stack sizes are [ 57 ] from top to bottom
18:46:36 <AnMaster> Deewiant, what exactly does this one mean:
18:46:37 <AnMaster> UNDEF: the empty string wrapped around the edge of space contains 1 character(s) (hopefully spaces)
18:47:32 <AnMaster> Deewiant, btw I found a real bug in your code now
18:47:33 <AnMaster> That the command-line arguments were: [ "mycology.b98" ]
18:47:34 <AnMaster> That the environment variables are:
18:47:34 <AnMaster> =/home/arvid/bashfunge/trunk/std08/interpreters/ccbi/ccbi_linux/ccbi_linux/ccbi
18:47:49 <AnMaster> mine at least does the right thing on that :)
18:48:02 <AnMaster> That the command-line arguments were: [ "/home/arvid/bashfunge/trunk/mycology/mycology.b98" ]
18:48:02 <AnMaster> That the environment variables are:
18:48:13 <AnMaster> Deewiant, any idea about that?
18:49:05 <AnMaster> actually it does that in any case
18:49:11 <AnMaster> That the command-line arguments were: [ "mycology.b98" ]
18:49:11 <AnMaster> That the environment variables are:
18:49:11 <AnMaster> =/home/arvid/bashfunge/trunk/std08/interpreters/ccbi/ccbi_linux/ccbi_linux/ccbi
18:50:01 <Deewiant> That the environment variables are:
18:50:35 <AnMaster> env -i TERM=t ccbi mycology.b98
18:50:38 <Deewiant> it goes through extern char **environ for the environment variables
18:51:38 <AnMaster> env -i TERM=t ./ccbi mycology.b98
18:52:22 <Deewiant> using the exact same line, only TERM=t
18:52:59 <Deewiant> env -i TERM=t ./ccbi mycology.b98
18:53:25 <AnMaster> 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 <AnMaster> Deewiant, however mine produce another line your doesn't:
18:54:23 <AnMaster> maybe you mess up with space and _ ?
18:54:44 <AnMaster> or wait you do that one too, just differently sorted
18:54:53 <AnMaster> but mine doesn't do that empty variable name one
18:55:17 <AnMaster> Deewiant, your older ones does too
18:57:45 -!- olsner has joined.
18:58:07 <AnMaster> Deewiant, ok you are right, something is odd, I don't get it on my other amd64
18:59:54 <AnMaster> actually I do get it in another xterm, in some
19:01:35 <AnMaster> Deewiant, found out about: BAD: : on empty stack doesn't make stack size 2, says y
19:01:42 <AnMaster> Deewiant, reason is simple, very simple
19:02:04 <AnMaster> and my stack dumping had a off by one in one case
19:02:09 <Deewiant> I thought you said gdb claims it has 2 :-P
19:02:36 <AnMaster> however, would this difference affect any program?
19:02:54 <AnMaster> you will always get 0 from an empty stack
19:03:32 <Deewiant> the difference is what f8+y pushes :-)
19:03:42 <Deewiant> it's the only way of measuring it :-P
19:03:43 <AnMaster> so if you say do: n: you will always get the same result, for instructions except for what y says
19:04:10 <AnMaster> so, does it matter really? peak and push is logically faster than pop and push
19:04:38 <Deewiant> the spec says : is equivalent to pop and two pushes
19:04:43 <Deewiant> it might matter to some fingerprints
19:04:52 <AnMaster> so I'll do some #ifdef for FULLY conforming vs. some slight optimizations
19:05:34 <Deewiant> they use : to quickly get the stack size up to 2 for some freakish extension that they provide which cares about that :-P
19:06:06 <Deewiant> but the spec says what it says
19:06:15 <AnMaster> extensions still won't have access to the array I use for stack
19:07:07 <AnMaster> 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 <AnMaster> just moving top pointer downwards
19:09:44 <AnMaster> ah this should be faster unless stack actually is empty:
19:10:01 <AnMaster> still not as good as just peek and push but
19:11:22 <AnMaster> 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 <Deewiant> it's already the fastest from the sound of it
19:12:26 <AnMaster> heh, fastest with some fingerprints please :)
19:12:45 <AnMaster> 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 <AnMaster> it's all hidden under an abstraction
19:13:06 <Deewiant> that's how you should code everything, goes without saying
19:13:30 <AnMaster> stack, ip and fungespace are all quite hidden under abstractions
19:14:09 <AnMaster> Deewiant, http://rafb.net/p/Uk3wTE20.html
19:14:55 <Deewiant> you optimize too much, like said
19:15:04 <AnMaster> Deewiant, not really, look at memcpy
19:15:34 <Deewiant> yes, I am well aware of the fact that the STANDARD LIBRARY has to be well optimized
19:15:43 <Deewiant> but your program doesn't have to be fully micro-optimized :-P
19:22:15 -!- sebbu has joined.
19:26:50 <Deewiant> AnMaster: where do I get libcord
19:27:18 <Deewiant> doesn't come with latest stable boehm-gc
19:28:16 <Deewiant> AnMaster: latest stable in portage is 6.8
19:28:45 <AnMaster> 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:29:43 <AnMaster> Deewiant, I'm well aware of that my cmake checks are incomplete, and I plan to extend them
19:29:44 <Deewiant> I thought you said you don't run unstable packages :-P
19:30:18 <Deewiant> I already had to get unstable bzr as well :-P
19:30:34 <AnMaster> Deewiant, oh? yes I don't think there is a stable bzr in portage is there?
19:30:53 <AnMaster> Deewiant, that is so old and crappy
19:31:16 <AnMaster> Deewiant, 1.0 was released several months ago, like November or something like that
19:31:28 <AnMaster> 0.17, about a year ago at least I guess
19:31:47 <AnMaster> Deewiant, anyway you could have used 0.92 :P
19:31:56 <AnMaster> (why you would want that I don't know)
19:31:58 <Deewiant> AnMaster: 0.17 and 1.1 are the only two in portage
19:32:18 <Deewiant> AnMaster: on my machine, CCBI is faster than cfunge08 in bzr
19:32:28 <Deewiant> does cmake build with optimization?
19:33:28 <AnMaster> use arrow keys to select CMAKE_BUILD_TYPE
19:33:49 <AnMaster> Deewiant, you can do it with cmake, but I don't remember how!
19:34:28 <AnMaster> Deewiant, ok, second thing (if on 32-bit), open src/global.h
19:34:55 <AnMaster> and change FUNGEDATATYPE and FUNGEVECTORTYPE indeed
19:35:56 <Deewiant> 0.08 for cfunge08, 0.13 for CCBI
19:36:09 <AnMaster> you get better speed than I do, for both of them
19:36:39 -!- RedDak has quit (Read error: 110 (Connection timed out)).
19:36:56 -!- Dagide has joined.
19:37:30 <Deewiant> I can accept being 50% slower for using a language which is much more fun to code in :-)
19:37:45 <Deewiant> + for supporting all kinds of crap that cfunge08 doesn't ;-)
19:38:01 <AnMaster> Deewiant, I will add fingerprints
19:38:19 <AnMaster> but the core should be faster :D
19:38:22 <Deewiant> AnMaster: I get some warnings from compiling your code, mostly stuff like %ld being used to print
19:38:38 <AnMaster> Deewiant, ah, that's related to you changing FUNGEVECTORTYPE
19:38:49 <Deewiant> AnMaster: no, I got it even without changing them
19:38:49 -!- Corun has quit ("This computer has gone to sleep").
19:39:09 <Deewiant> AnMaster: warning: format '%ld' expects type 'long int', but argument has type 'int_fast64_t'
19:39:16 <Deewiant> AnMaster: or int_fast32_t, both result in warnings
19:39:26 <Deewiant> AnMaster: you should use inttypes.h
19:39:28 <AnMaster> Deewiant, err right, on x86 that should be long long gah
19:39:50 <Deewiant> AnMaster: no, you should use inttypes.h instead of %ld I mean
19:40:03 <Deewiant> AnMaster: inttypes.h has corresponding printf/scanf specifiers for stdint.h's integer types
19:40:37 <Deewiant> what you want is PRIdFAST64 instead of '%ld'
19:40:57 <AnMaster> Deewiant, well fast32_t is not really supported
19:41:13 <Deewiant> anything but hardcoded '%ld' :-)
19:41:14 <AnMaster> Deewiant, how slow was it with 64-bit btw?
19:41:23 <AnMaster> Deewiant, I agree I should fix that indeed
19:41:27 <Deewiant> AnMaster: 0.38, without optimizations and with 64-bit
19:41:35 <Deewiant> AnMaster: so about 2.5 times slower than CCBI
19:41:50 <AnMaster> Deewiant, about as fast as it gets on my cpu when mine is at it's best
19:42:05 <Deewiant> AnMaster: also, there are other warnings
19:42:16 <AnMaster> Deewiant, I'm aware of some yes
19:42:16 <Deewiant> yeah, my laptop's cpu is faster than my main computer's :-)
19:42:24 <AnMaster> /home/arvid/src/cfunge08/src/interpreter.c:422: warning: function might be possible candidate for attribute 'noreturn'
19:42:42 <Deewiant> AnMaster: comparison between signed and unsigned, cast discards qualifiers, unused params
19:42:46 <AnMaster> but it's third party and I haven't had time to look at it' code
19:43:04 <Deformative> I had a fun idea for an esoteric programming langue.
19:43:05 <Deewiant> AnMaster: support.c:118 has 'signed and unsigned type in conditional expression'
19:43:20 <AnMaster> Deewiant, I know about those yes, lib/*, the "noreturn", the one in support.c (it's a function from gnulib!)
19:43:33 <AnMaster> Deewiant, because getline isn't portable I used the gnulib one always
19:44:47 <Deformative> I will explain more later, I kinda wanna take a nap,
19:45:11 <AnMaster> Deewiant, oh and I found a bug in gdb today
19:45:23 <AnMaster> it can't print the extern **environ
19:46:08 <Deewiant> I don't use debuggers so I can't help you with that
19:47:11 <Deewiant> Deformative: I want to see a spec
19:47:12 <AnMaster> Deewiant, how do you fix bugs then?
19:47:25 <Deewiant> AnMaster: I find them and I fix them as normal. :-P
19:47:51 <Deformative> I will make up a spec in the next few days maybe.
19:47:52 <Deewiant> AnMaster: to find them - CCBI has its debugging mode which I found really handy
19:48:01 <Deewiant> AnMaster: if that wasn't enough, liberal printf sprinkling in the code helps
19:48:55 <Deformative> It is really weird at first, but the more you use it, it gets easier.
19:51:22 <Deewiant> I really should learn some factor
19:51:52 <Deewiant> well, to be honest, any concatenative language would be fine
19:52:31 <Deewiant> on my first try with Forth I got lost somewhere around loops and recursion
19:53:06 <Deewiant> need to try again at some point
19:53:22 <Deformative> But I did finish the book, I remember that much.
19:54:20 <AnMaster> <Deewiant> and the alternative stack
19:54:26 <AnMaster> well after befunge that's NOTHING
19:54:39 * AnMaster still thinks his stack stack code is uggly
19:54:41 <Deewiant> except that befunge isn't supposed to be easy
19:54:45 <Deformative> Forth has some real implementations and there has been real programs made in it.
19:55:41 <Deformative> A colored stack language has real potential, but I don't think that moore did it right with colorforth.
19:56:01 <AnMaster> 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 <AnMaster> or doing libffi to call C functions with it
19:57:51 <AnMaster> Deformative, err, then you load it as an image?
19:58:28 <Deformative> The editor puts apropriat char in plazced.'
19:59:17 <AnMaster> program source should work in mono color
19:59:22 <Deformative> Colorforth is the only colored language that I know of.
19:59:38 <Deformative> I like it because it results in less characters.
20:00:00 <AnMaster> like impossible to syntax highlight automatically
20:00:20 <AnMaster> Deformative, impossible for color blind, won't work on non-color terminals, and several more
20:00:48 <Deformative> You can make an editor put some char in place of the color.
20:02:05 <AnMaster> Deewiant, also would need a special editor
20:02:13 <AnMaster> wouldn't work in your standard editor
20:02:22 <AnMaster> vim/emacs/kate/kdevelop/whatever
20:02:45 <Deformative> Some color can be evaluate, another push to stack, another comment, and maybe another can be for labels or conditional compilation.
20:05:27 <AnMaster> Deewiant, how do you make ccbi print instructions as it executes them
20:06:01 <AnMaster> because I found an obscure program a friend made that works in ccbi but not in cfunge
20:06:10 <AnMaster> http://rafb.net/p/642T6v69.html
20:13:18 <Deewiant> AnMaster: it has nothing like that, only the debug mode
20:14:02 <Deewiant> the debug mode is better, just use that
20:15:16 <AnMaster> Deewiant, I can't set several breakpoints!??
20:15:31 <Deewiant> 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 <Deewiant> AnMaster: and then the 'cbreak' which breaks the next time it hits a given char
20:16:53 <AnMaster> Enter cell value to break on: j
20:17:19 <Deewiant> sorry, I was too lazy to implement ASCII translation
20:17:19 <AnMaster> oh it can't convert can it, right
20:17:30 <Deewiant> because you do need to support arbitrary values
20:17:42 <AnMaster> Undefined command 'cbreak j'. See 'help'.
20:17:58 <AnMaster> Breaking on every cell with value 106 (0x6a), character 'j'.
20:19:10 <Deewiant> ais523_non-admin: what's with the non-adminness
20:20:07 <ais523_non-admin> and I'm using it because I don't want to teach this client my Freenode password
20:20:44 <ais523_non-admin> the reason I'm using this account, incidentally, is to use some Windows software (under Wine, as it happens)
20:21:13 <ais523_non-admin> 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 <ais523_non-admin> but running on a non-root non-wheel account, it's hard to see what could happen
20:21:48 <ais523_non-admin> I can always just wipe out the account and start afresh, and the software has no memory of previous trial periods
20:22:12 <ais523_non-admin> (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:27 <ais523_non-admin> (shareware GPL was an ingenious idea but doesn't survive contact with people like me)
20:22:41 <ais523_non-admin> (and the GPL means it's legal to remove the trial-period restruction)
20:22:43 <GregorR> That makes less than zero sense.
20:23:30 <ais523_non-admin> 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 <GregorR> I admire the effort, but that's just sort of silly :P
20:24:07 <AnMaster> 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:10 <Deewiant> 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 <GregorR> 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 <AnMaster> Deewiant, may be interesting to test in mycology
20:24:17 <ais523_non-admin> 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:39 <Deewiant> AnMaster: it tests wrapping with # and x, I can't expect that you do j differently :-P
20:27:20 <Deewiant> AnMaster: for j, just save the delta, call x, move once, and reset the delta ;-)
20:27:40 <AnMaster> Deewiant, hmm, less elegant (and less performant :/)
20:28:04 <Deewiant> I'd argue it's more elegant, because that's essentially what x is
20:28:54 -!- Dagide has quit (Remote closed the connection).
20:28:57 <Deewiant> given that you have a working x of course :-P
20:29:59 -!- Judofyr has joined.
20:30:00 <AnMaster> Deewiant, the problem is how it wraps based on delta rather than jumps in j case
20:30:02 <Deewiant> one thing mycology doesn't test is wrapping both edges at once
20:30:13 <AnMaster> Deewiant, hm you mean double wrap?
20:30:22 <Deewiant> AnMaster: I mean wrap x and y at the same time
20:30:37 <AnMaster> it doesn't test wrapping x twice in one instruction either does it?
20:31:17 <AnMaster> 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:34 <Deewiant> and mine is just verbatim what the spec says :-P
20:31:59 <ais523_non-admin> 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 <AnMaster> Deewiant, so if your fails at x and y at the same time, you got to fix your twice
20:32:17 <Deewiant> ais523_non-admin: well, depends on how you think about it really
20:32:39 <ais523_non-admin> 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 <ais523_non-admin> so if the delta is larger than the playfield width, you just get stuck at the same point for all eternity
20:33:32 <Deewiant> hmm, with x that's probably right
20:34:29 <Deewiant> implementing j as I said above still works, though
20:34:38 <AnMaster> Deewiant, anyway I copied both your wrapping code and your j code now and I still don't get it right
20:34:40 <Deewiant> the wrap doesn't change your position and then you just move as normal
20:35:21 <AnMaster> you actually move with a while loop :(
20:35:56 <Deewiant> doing what I said above would be faster :-)
20:36:18 <Deewiant> but I'm not sure if it's the same
20:36:34 <AnMaster> Deewiant, but I need to calculate how the delta should look like with j then
20:36:38 <Deewiant> The j "Jump Forward" instruction pops a value off the stack, and jumps over that many spaces.
20:36:49 <AnMaster> wait it is current delta times jump in each dimension right?
20:37:04 <Deewiant> hmm, no, that is right, nevermind
20:37:14 <AnMaster> Deewiant, oh? it should only work on space instructions? :P
20:37:29 <Deewiant> AnMaster: "e.g. 2j789. would print 9 and leave an empty stack. "
20:37:49 <AnMaster> you could interpreter that sentence as it should only jump over spaces but not other instructions
20:38:03 <Deewiant> hence the example which clarifies it
20:38:36 -!- timotiis_ has joined.
20:38:53 <AnMaster> Deewiant, you won't need to same delta even I think
20:39:03 <AnMaster> but you would get new delta with:
20:39:07 <Deewiant> and yes, you do, if that's what you do
20:39:21 <AnMaster> then you could get old again using /
20:39:32 <Deewiant> well, sure, but the / slows it down :-P
20:40:22 <Deewiant> hmm, this is the culmination of beautiful code
20:40:38 <AnMaster> hm if I run a program more than once / second I get same randomness
20:40:47 <AnMaster> I guess time() isn't a good idea ;/
20:41:16 <Deewiant> mersenne twister for teh win \o
20:41:21 <AnMaster> <Deewiant> hmm, this is the culmination of beautiful code
20:41:21 <AnMaster> <Deewiant> void noOperation() {}
20:41:31 <AnMaster> you know, some languages complains about such
20:41:43 <AnMaster> it syntax errors on an empty function
20:42:00 <AnMaster> <Deewiant> mersenne twister for teh win \o <-- hm, does libc have that?
20:50:06 -!- timotiis has quit (Read error: 113 (No route to host)).
20:52:01 <ais523_non-admin> 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 <Deewiant> with the nice properties of being really fast, really random, and having a huge period
20:53:01 <AnMaster> srandom(tv.tv_sec % tv.tv_usec);
20:53:16 <AnMaster> at least it gives different results each time now
20:53:24 <AnMaster> anyone suggest a better way for srandom?
20:54:11 <AnMaster> ais523_non-admin, ok, however if you run them exactly one second after each other you get issues
20:54:35 <AnMaster> ais523_non-admin, probably not when multi tasking
20:54:35 <Deewiant> AnMaster: why is it an 'issue' that two different calls can result in the same randoms?
20:54:50 <Deewiant> AnMaster: since you're going posix anyway, just read from /dev/random like he said :-)
20:55:09 <Deewiant> cryptographically secure random seed right there
20:55:20 <ais523_non-admin> 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:56:13 <AnMaster> on both x86 and x86_64 it would be 4 bytes
20:56:26 <AnMaster> Deewiant, but it will slow me down on mycology :(
20:57:13 <Deewiant> AnMaster: on every initialization, CCBI populates the function pointer arrays for all instructions and fingerprints
20:57:14 <ais523_non-admin> AnMaster: you could just use open() and read() to save on stdio overhead
20:57:25 <AnMaster> ais523_non-admin, that is true
20:57:35 <Deewiant> AnMaster: in addition, it initializes the randomizer by finding the current clock time, and other things
20:57:40 <AnMaster> Deewiant, don't you have static arrays?
20:58:06 <Deewiant> AnMaster: yes, I do, but I haven't bothered to do it like that
20:58:26 <Deewiant> this way, the fingerprints can be removed simply by not compiling it in
20:58:31 <Deewiant> you don't have to modify any code
20:58:39 <Deewiant> just not pass the corresponding .d file on the command line
20:58:58 <AnMaster> Deewiant, true, I plan to do fingerprints using some array indeed
20:59:08 <Deewiant> ais523_non-admin: module constructors
21:00:47 <AnMaster> 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:01:01 <AnMaster> no idea if there will be a noticeable change
21:01:04 <Deewiant> well, sure, using better optimization flags will speed stuff up
21:01:08 <Deewiant> profile-guided optimization as well
21:01:22 <AnMaster> Deewiant, can't you do profiling with ccbi?
21:01:47 <Deewiant> nothing automated in the compiler for optimizing based on the resulting info, though
21:01:53 <Deewiant> except maybe GDC, I don't know
21:02:11 <Deewiant> 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:56 <ais523_non-admin> 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 <AnMaster> <ais523_non-admin> gcc uses profiling data for branch predicition IIRC
21:03:42 <AnMaster> when speed testing against ccbi
21:04:02 <AnMaster> ais523_non-admin, I use same that I speed test on
21:04:08 <ais523_non-admin> so in fact, you could have an optimised-for-Mycology conforming Funge-98 interp, for instance
21:04:12 <Deewiant> so you get a program that's ultra-tuned for Mycology
21:04:16 <Deewiant> but sucks for everything else :-P
21:04:42 <AnMaster> but well I can ultra-tune it for anything
21:05:03 <Deewiant> 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 <AnMaster> Deewiant, then don't compile it with profiling info
21:05:34 <ais523_non-admin> actually, any profiling info is likely to be better than no profiling info IMO
21:05:38 <Deewiant> AnMaster: exactly, that's what I'm telling you ;-)
21:05:46 <Deewiant> ais523_non-admin: you're probably right
21:05:54 <Deewiant> ais523_non-admin: but don't tell him that! ;-)
21:06:14 <AnMaster> you can compile it with any flags you want
21:06:29 <AnMaster> I don't make binaries for downloads for any program I write normally
21:06:50 <ais523_non-admin> 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 <AnMaster> ais523_non-admin, yes I know about that
21:07:17 <ais523_non-admin> even the Windows version of C-INTERCAL comes only in source form
21:07:30 <AnMaster> but info page notes that "programmers are notoriously bad at guessing how their programs will perform"
21:07:46 <ais523_non-admin> I maintain a separate autoconf script for it and two separate shell scripts for if you can't get make to work
21:08:13 <AnMaster> 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:09:09 <AnMaster> 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 <AnMaster> ais523_non-admin, what irritates me is that it seems impossible to combine profiling info from several different runs :(
21:11:07 <AnMaster> Deewiant, anyway even with -ggdb -O0 my interpreter is slightly faster than your with -O<whatever you used>
21:11:30 <Deewiant> AnMaster: yes, highly-optimized C beats lowly-optimized D.
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 <Deewiant> D is good for speed, if it's highly optimized.
21:11:48 <AnMaster> Deewiant, yep indeed, however I do think D (partly) got a nice syntax
21:12:08 <Deewiant> of course, given the same degree of optimization, C will be faster
21:12:09 <AnMaster> ais523_non-admin, yes but -O0 slows things down
21:12:16 <Deewiant> but the D will take 10% less time to write ;-)
21:12:28 <AnMaster> ais523_non-admin, and also technically loading the larger program will be slower
21:12:38 <ais523_non-admin> if it's only 10% better I'll stick to C for that sort of thing
21:12:40 <AnMaster> Deewiant, hum, I started at sunday and got this far
21:13:03 <Deewiant> AnMaster: you've been working on it 24/7 judging from your posting here :-D
21:13:16 <ais523_non-admin> 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 <AnMaster> Deewiant, I could have coded one in C# in about 1/3 of the time
21:13:24 <AnMaster> it would have been LOADS slower
21:13:43 <Deewiant> you could have done the same in D, and it wouldn't have been that much slower or larger ;-)
21:13:54 <AnMaster> ais523_non-admin, I'd use mono not .NET
21:14:03 <AnMaster> so not as non-portable as it could be
21:14:24 <Deewiant> I'd argue .NET is more portable than Posix-only C :-P
21:14:57 <AnMaster> Deewiant, no because mono doesn't work on all POSIX
21:15:06 <AnMaster> and even windows can do some POSIX I bet
21:15:19 <Deewiant> given the number of machines that use Windows, Windows-only code is arguably more portable than anything else ;-)
21:15:27 <AnMaster> ais523_non-admin, it doesn't have fork iirc?
21:15:32 <ais523_non-admin> but you have to download all sorts of weird expansions from Microsoft to get the full effect
21:16:03 * ais523_non-admin likes the definition of fork() on DJGPP (my POSIX-like compiler/environment for DOS)
21:17:10 <AnMaster> Deewiant, if you want a cfunge with a fixed j wrapping, run bzr pull
21:17:37 <AnMaster> ais523_non-admin, then no program will be able to run another one
21:17:50 <AnMaster> ais523_non-admin, wait a second, you made DJGPP!?
21:18:27 <AnMaster> I'll always been thinking that DJGPP = cygwin gone insane
21:19:40 <Deewiant> or is cygwin older than I think
21:19:45 <AnMaster> but did ais523_non-admin actually make it?
21:20:53 <Deewiant> I doubt it, if he's alex smith
21:21:40 <AnMaster> ais523_non-admin, err exec would replace current process
21:21:54 <ais523_non-admin> 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:53 <ais523_non-admin> and DJGPP is a maintained target for C-INTERCAL, so that it runs on DOS and Windows too
21:23:06 <AnMaster> 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:29 <AnMaster> those would not work under DJGPP
21:23:47 <AnMaster> ais523_non-admin, see man pages, but on linux, basically none iirc
21:24:16 -!- oerjan has joined.
21:24:16 <AnMaster> as it suspends parent until it has run exec
21:24:44 <AnMaster> ais523_non-admin, linux got "copy on write" pages or something like that for all forks however
21:24:57 <Deewiant> yes, which is why Windows is DOG SLOW for forking
21:25:04 <AnMaster> ais523_non-admin, vfork and setjmp are some of the few instructions that can return twice :)
21:25:04 <Deewiant> and multiple processes in general
21:25:29 <Deewiant> ridiculous that not even vista got the smart process model
21:26:08 <AnMaster> and I remember it was such a issue they merged several system services in xp into a single process
21:26:42 <AnMaster> Deewiant, windows wouldn't handle 156 processes would it?
21:26:51 <Deewiant> sure it could handle a billion processes
21:27:11 <Deewiant> creating a process just takes a second or two
21:27:11 <Deewiant> whereas on linux, it's more like a millisecond or two
21:27:11 <AnMaster> the only one that actually slows things down really, is virtual box when I run it
21:27:40 <AnMaster> mostly when I run windows under virtualbox
21:27:52 <AnMaster> for some reason linux and *bsd are nicer to the system
21:30:30 <AnMaster> ais523_non-admin, oh btw, I got everything between 78 and 156, depending on what user I run it under
21:32:05 <ais523_non-admin> but I thought the a meant it was irrelevant which user you were
21:32:25 <ais523_non-admin> or is it that on freebsd some users don't have permissions to determine the existence of other users' processes?
21:32:56 <ais523_non-admin> 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 <AnMaster> <ais523_non-admin> or is it that on freebsd some users don't have permissions to determine the existence of other users' processes?
22:00:01 <AnMaster> ais523_non-admin, as for $ and #
22:00:13 <AnMaster> I change other things instead :)
22:01:04 <AnMaster> ais523_non-admin, and you can do that on linux with some hardening kernel patchsets
22:01:38 <AnMaster> ais523_non-admin, and with the sysctl set on freebsd you can only see your own processes unless you are root
22:05:22 <AnMaster> ais523_non-admin, the 4 on freebsd as a user were: ssh, bash, ps and wc
22:07:26 <ais523_non-admin> 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 <ais523_non-admin> 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:45:10 <ais523_non-admin> 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 <ais523_non-admin> it would be horrendously inefficient and tricky to program, of course
22:45:55 <AnMaster> ais523_non-admin, and, also concurrency issues
22:46:24 <AnMaster> programs could end before they got read and so on
22:47:10 <AnMaster> not unless threads sleep for quite some time
22:47:18 <AnMaster> but sure, go ahead and design it
22:47:27 <AnMaster> 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").
00:04:12 -!- olsner has quit ("Leaving").
00:12:13 -!- timotiis_ has quit ("leaving").
00:14:20 * pikhq is a cruel bastard. . .
00:14:43 <pikhq> 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:15:09 <oerjan> shall i dare to ask what G is?
00:15:52 * oerjan was hoping for the gravitational constant
00:16:09 <pikhq> Sorry, but I like the up-arrow notation. :p
00:20:23 -!- ais523_non-admin has quit ("Bye!").
00:20:42 <oklokok> knuths arrays are basically the hyper operator?
00:21:14 <pikhq> oklokok: Pretty much.
00:21:19 <pikhq> Different notation for the same.
00:21:33 <oklokok> i invented the hyper oerator as a kid, thought it was a new idea until like last year :P
00:22:07 <pikhq> It's a fairly trivial concept to *grasp*.
00:22:09 <oklokok> i guess there's not much to invent
00:22:14 <pikhq> But a bit harder to use *usefully*. ;)
00:22:48 <oklokok> 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 <oklokok> but it seems it hasn't been done yet in a meaningful way
00:23:04 <pikhq> You were. . . Trying to extend hyper to the reals?
00:23:57 <pikhq> But, then, I'm only in high school. ;)
00:23:57 <oklokok> "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 <oklokok> well, this was when i was in elementary school
00:24:31 <oklokok> it's not like i was a super math genius or anything
00:24:43 <oklokok> i just have a lot of weird ideas
00:25:15 <pikhq> I'm only a *moderate* genius at math. ;p
00:25:37 <oklokok> i'm not practical enough for math
00:25:46 <oklokok> requires perfection, unlike say programming
00:26:37 * pikhq wonders what the derivative of ^{x}e is. . .
00:27:04 <pikhq> Or e\uparrow\uparrow x.
00:28:33 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
00:29:09 -!- Judofyr has joined.
00:29:55 <oklokok> well, x^f(x) really, then just extend that
00:30:32 <oklokok> hmm, i think i should wait until i'm *not* watching something
00:30:42 <oklokok> i'm not good at multitasking really
00:31:44 <oklokok> right, i misparsed you still
00:31:44 <pikhq> Not familiar with Knuth's up-arrow notation?
00:31:53 <pikhq> In it: e^x = e\uparrow x.
00:34:08 <oklokok> i think i got it, not derivable :P
00:34:44 <oklokok> e upup x where x = real doesn't exist, right?
00:34:49 <pikhq> Sure it is! It's a smooth curve and everything.
00:35:01 <pikhq> http://en.wikipedia.org/wiki/Image:Real-tetration.png
00:35:19 <oklokok> that's a matter of definition then, lessee
00:35:44 <pikhq> Just because it's not derivable in terms of elementry functions does *not* make it not derivable. ;p
00:36:03 <oklokok> it cannot be derivable if it does not have a definition for reals
00:36:12 <oklokok> it seems it does, but where is it?
00:36:49 <pikhq> What part of that says it's *not* defined on the reals?
00:38:07 <pikhq> That's e^{{1/2}^2}. :p
00:38:42 <oklokok> the fact you can possibly extend the array-notation definition using your intuition doesn't make it a real definition.
00:38:59 <oklokok> the array-notation only works for integers with the definition there
00:39:49 <pikhq> You're confusing e^^x and hyper(e, x, x). ;P
00:40:25 <oklokok> e^^x = e^e^...^e where e is there x times
00:40:41 <oklokok> if x isn't an integer, that makes no sense
00:40:42 <pikhq> Yes. What about that definition prevents e^^x from being defined on the reals?
00:41:30 <oklokok> you can definitely define it for reals, i'm just saying the page doesn't do that.
00:41:58 <oklokok> for instance, you can just define e^^x where x isn't an integer to be zero.
00:42:32 <oklokok> exponentiation does real exponents using the inverse operation
00:42:48 <oklokok> perhaps that could also be created for the array notation
00:43:32 <oklokok> i'm just saying i'm physically not seeing a definition for real arrow-exponent
00:43:47 <oklokok> have i been saying "array"?
00:43:49 <pikhq> Repeated multiplication doesn't define, say, e^0.5, yet it still exists as a real.
00:44:05 <oklokok> pikhq: as i said, defined via the inverse for reals
00:44:07 -!- BMeph has joined.
00:44:22 <oklokok> because you can use the inverse function for the denominator of the exponent.
00:44:48 <pikhq> Having trouble finding an *exact* definition, but it's *about* 1.5.
00:44:57 <oklokok> 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:24 <oklokok> you could define it in many ways
00:45:44 <pikhq> Likewise, you could define 1+1=50. I fail to see how that's relevant.
00:46:11 <oklokok> it's relevant in that if it doesn't have a definition, the derivative doesn't have a definition
00:46:18 <pikhq> That Wikipedia page says there's no commonly accepted solution to extended tetration to the reals.
00:46:59 <oklokok> 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 <oklokok> i'll look into that after this episode
00:47:23 <pikhq> Yeah, I think I like the super-logarithm solution.
00:48:03 <oklokok> exponentiation uses the other inverse :)
00:48:48 <pikhq> The problem being: the super-logarithm on the reals is not defined, either. XD
00:48:55 <oerjan> the only obvious equation to start with would seem to be e^^(x+1) = e^(e^^x)
00:49:25 <oklokok> oerjan: doesn't help, we still need e^x where x in [0..1]
00:51:16 <oerjan> there might be one solution that was particularly nice in some way
00:52:30 <pikhq> 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 <pikhq> (can't prove: Wikipedia claims it to be so)
00:54:52 <pikhq> Anyways, that provides a fairly *elegant* extension to the reals.
00:54:56 <pikhq> oerjan: You agree?
00:55:07 <oklokok> i do, that's what i suggested right away
00:55:25 <oklokok> is there a nice way to compute w?
00:55:48 <oklokok> i'm too lazy to google, sry :P
00:55:56 <pikhq> The Wikipedia page gives some C source code for W(x). ;)
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: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 <calamari> 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:40:01 <pikhq> But that's specifying the behavior of all of UNIX. . .
01:40:18 <calamari> I think there's a hidden spec out there
01:40:19 <pikhq> Just my collection of *man pages* would probably cover a thousand pages.
01:40:41 <calamari> "what's good enough to get gcc working with configure scripts?"
01:40:45 <pikhq> (info pages? Hell, that's probably got the POSIX spec in there two times over)
01:41:13 <calamari> probably a lot less strenuous a goal
01:41:51 <calamari> btw you mentioned that porting gcc over wasn't a big deal.. what's the process?
01:41:51 <pikhq> You need a shell, make, gcc, and libc.
01:42:32 <pikhq> 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 <pikhq> The 'port libc' part is the hard one.
01:43:53 * pikhq can't wait to one day do uname -a and get 'i686-pc-mykernel-newlib'
01:44:10 <calamari> oh so you're doing it for your regular pc?
01:44:23 <calamari> I was hoping this was some custom system you built out of parts or such
01:44:26 <pikhq> Although my *regular* PC is actually x86_64.
01:44:36 <pikhq> That makes it a bit harder.
01:44:42 <pikhq> You then have to retarget GCC.
01:45:04 <pikhq> But at least GCC just does RTL->assembly. . .
01:45:12 <pikhq> (for the architecture-specific stuff, that is)
01:45:55 <pikhq> I'm mostly saying 'Thank god GCC has all the frontends go to the same language.'
01:52:49 -!- Corun has quit (Read error: 110 (Connection timed out)).
02:07:36 <calamari> http://www.atmel.com/dyn/products/product_card.asp?part_id=3755
02:08:58 -!- oklokok has quit.
02:21:22 <Deformative> Anyone up for a seemingly np complete problem?
02:32:19 -!- Tritonio_ has joined.
02:39:38 -!- Sgeo has joined.
02:40:53 <pikhq> Deformative: Sure.
02:41:01 <pikhq> Just because its NP doesn't mean it can't be solved.
02:41:09 <pikhq> Just that it can't be solved efficiently. ;)
02:43:10 <Deformative> 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 <Deformative> 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:29 <pikhq> Sorting algorithm. Lower bound is O(n log n).
02:44:49 <pikhq> 'Some locations are duplicated'
02:44:53 <pikhq> Whaddya know. It's not.
02:45:20 <pikhq> Why would you need the minimum amount of movements?
02:45:40 <Deformative> It is a compiler that needs to generate optimal code.
02:46:08 <Deformative> Sorting does not need to remain in the same memory block.
02:46:22 <pikhq> 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 <pikhq> Which is usually a much easier problem.
02:46:59 <pikhq> 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:38 <pikhq> So, a more *useful* question is "How can I efficiently move things around like this: ..."
02:48:06 <pikhq> Why do you need that?
02:48:29 <pikhq> What you're asking for is the lower-bound of the efficiency of an algorithm that does that.
02:48:38 <pikhq> What you need is the algorithm itself.
02:49:15 <pikhq> Just like asking "How many steps does it take to sort a list?" is useless when you actually want to sort.
02:49:18 <Deformative> The algorithm does not need to re-arange, the algorithm generates code that will re-arrange.
02:50:17 <pikhq> Which is not that much different, algorithmically. . .
02:50:51 <pikhq> I still have no clue why you need to know the efficiency of such an algorithm, but not the algorithm itself.
02:50:53 <Deformative> Because you can bruteforce until you find the algorithm that has the least movements.
02:51:07 <pikhq> You're doing it wrong.
02:52:01 <pikhq> I suspect, though, that you could trivially adapt a sorting algorithm to that.
02:53:44 <Deformative> 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:55:14 <pikhq> 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:57:16 <cherez> And the only allowed operation of movement?
02:57:33 * pikhq is still tempted to say 'sorting algorithm'. . . XD
02:57:41 <Deformative> 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 <Deformative> So lets say foo( a b c d) calls bar(a a b d)
02:58:41 <cherez> Deformative: Is the only allowed operation is a[i] = a[j]?
02:58:46 <pikhq> Doing it wrong. . . Use the C calling convention on your system of choice, for crissake.
02:59:11 <Deformative> That would take the whole esoteric part out of it.
02:59:24 <cherez> Is this for tail recursion?
02:59:25 <Deformative> cherez: I am trying to generate optimal asm.
02:59:44 <pikhq> If I ever did PEBBLE->assembly, I'd use the C calling convention. . .
02:59:48 <Deformative> And movl is really the only call that should be needed.
02:59:56 <pikhq> That doesn't remove the esotericness of language. . .
03:00:05 <pikhq> It just makes your *compiler* purely insane.
03:00:14 <pikhq> Your implementation doesn't have to be esoteric. ;)
03:00:21 <Deformative> cherez: The language does not have return values.
03:00:26 <cherez> Well, if every operation must overwrite, it's only possible if it's the same output or no variables are dropped.
03:00:47 <pikhq> cherez: He allows temporary storage.
03:01:21 <pikhq> Well, the C calling convention won't work.
03:01:29 <cherez> So reordering the stack then jmp?
03:01:33 <Deformative> So c calling is hardly even feasible, and possibly the least optimal thing imaginable.
03:01:51 <Deformative> I need the compiler to generate perfect algorithms that reorder the stack.
03:02:18 <pikhq> Once again: you need the compiler to generate *good* algorithms that reorder the stack, not perfect ones.
03:02:49 <Deformative> So it should be able to find the perfect algorithm.
03:03:20 <pikhq> I think that you're going to have a max of however many arguments you have to each function. . .
03:03:50 -!- Tritonio_ has quit (Remote closed the connection).
03:04:10 <Deformative> The compiler needs to be able to figure that out.
03:04:43 <pikhq> But it's obvious that the compiled code is going to be doing that in O(1). . .
03:05:21 <pikhq> Genetic algorithm? Stable sorting algorithm?
03:05:54 <cherez> With O(n) temporary storage, I'd think this is probably O(n) or O(n^2).
03:06:33 <pikhq> Deformative: O(0) means that nothing happens at all. ;p
03:06:40 <pikhq> If anything at all is done, then it's O(1).
03:06:55 <cherez> A jmp is damn well something.
03:07:04 <cherez> You can try to convince your program counter otherwise.
03:07:13 <cherez> Well, I suppose it depends on the processor architecture.
03:07:16 <Deformative> jmp is not part of the translation algorithm.
03:07:37 <Deformative> The compiler does not generate any translation if it is not needed.
03:09:22 * pikhq tosses Deformative "The Art of Computer Programming"
03:09:28 <pikhq> Have fun; I'm sure you can figure it out.
03:10:12 <cherez> The hard part is showing a solution is optimal.
03:10:16 <Deformative> Because you are not trying to solve the problem exactly, you are trying to design the perfect solution given limitless time.
03:10:41 <cherez> I can think of quite a few ways to generate good algorithms, but I can't think how you could prove optimal.
03:11:38 <cherez> I can't think of a polynomial way that I can prove has minimum movl.
03:12:08 <Deformative> If you cannot even count them, how do you generate the code? :)
03:12:52 <cherez> Well, I can easily see how you could write an O(n) algorithm to produce O(n) movl.
03:13:05 <cherez> That's certainly countable.
03:13:21 <cherez> But I'm also certain there are more efficient ways.
03:13:50 <Deformative> Let me try to get some of my ideas into words.
03:14:02 <Deformative> First, make a list of indices no longer needed.
03:15:19 <Deformative> Next make a list of indices that are at the same place in beginning and result.
03:16:54 <Deformative> Then generate every possible combination to reach the result, and in each combination count the movls.
03:17:21 <Deformative> To generate the combinations, you need to check over every single index and see where they need to go.
03:17:55 <Deformative> Data can be moved to places where that data is no longer needed without any negative effects.
03:18:19 <Deformative> So that is constant in all of the possible combinations.
03:18:52 <cherez> That is roughly the NP algorithm I came up with.
03:19:18 <cherez> I'd say it's probably NP-Complete, but I'm not certain.
03:20:11 <Deformative> Yes, I just need to find an algorithm for generating all possible combinations.
03:20:33 <Deformative> 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 <pikhq> It also risks *never completing*.
03:21:06 <pikhq> NP-complete algorithms take quite a bit of time. ;)
03:22:47 <cherez> Make a queue of operation sets, put an empty set of instructions on it.
03:23:55 <cherez> 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 <cherez> Basically just enumerating the possible actions and executing them in sequence.
03:26:22 <pikhq> http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
03:27:53 <cherez> Actually, I think that might be polynomial.
03:28:36 <cherez> A huge polynomial, but polynomial all the same.
03:30:18 <cherez> No, that's nonpolynomial.
03:31:25 <Deformative> The generated apps should be ridiculously fast.
03:31:30 <cherez> Let's see, at each step there are O(n^2) branches, and there are at most O(n) steps.
03:32:51 <cherez> So O(n^(2n)) total branches.
03:33:01 <cherez> Thus as many vertices.
03:34:33 -!- adu has joined.
03:35:25 <Deformative> Well, I have exams tomorrow, so I should sleep.
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 <AnMaster> err, wtf, looks like *code* memory is corrupted, anyway the output makes no sense
12:09:51 <AnMaster> BAD: the top of the stack after y isn't equal to what 1y pushes
12:10:10 <Deewiant> and it expects the top 2 elements of the stack to be the same
12:12:23 <AnMaster> I'm trying to fix my y and I end up with heap or stack corruption :/
12:12:33 <Deewiant> isn't it fun to program in C ;-)
12:13:15 <AnMaster> ==12040== Conditional jump or move depends on uninitialised value(s)
12:13:15 <AnMaster> ==12040== at 0x40565E: ExecuteInstruction (interpreter.c:197)
12:13:15 <AnMaster> ==12040== by 0x405EBB: interpreterMainLoop (interpreter.c:440)
12:13:15 <AnMaster> ==12040== by 0x405FC7: interpreterRun (interpreter.c:472)
12:13:15 <AnMaster> ==12040== by 0x404C9D: main (main.c:121)
12:13:54 <Deewiant> yay for not initializing variables by default
12:15:02 -!- oerjan has quit ("leaving").
12:15:32 <AnMaster> Deewiant, well no that wasn't the issue
12:15:45 <AnMaster> it was an array index off by one issue
12:15:55 <Deewiant> yay for not having array bounds checks ;-)
12:16:17 <AnMaster> wrapped, and ended up with 71634721834 or something like that
12:16:23 <Deewiant> whatever you say, I can spin it into a pro-D anti-C argument if I try hard enough :-P
12:16:28 <AnMaster> (gdb) print tmp->top - request
12:16:41 <Deewiant> fortunately, I don't have to try very hard ;-)
12:17:16 <Deewiant> I'm convinced by now that the only significant difference is the function pointers versus switch-case
12:17:42 <Deewiant> consider the noOperation function that I showed yesterday :-P
12:17:50 <Deewiant> it's called through a function pointer every time z is hit
12:18:31 <Deewiant> and I suspect PaX does some sort of checking related to function pointers, which results in extra slowdown on your comp
12:18:39 <Deewiant> I think the code is cleaner this way
12:18:41 <AnMaster> Deewiant, I don't think it does
12:18:55 <Deewiant> AnMaster: I read some docs on PaX design and they mention something to that effect
12:19:03 <AnMaster> my gcc does stack smash protection though
12:21:53 <AnMaster> Deewiant, btw for ccbi mycology list command line arguments backwards
12:22:03 <AnMaster> is it supposed to do it that way?
12:22:24 <AnMaster> say ./ccbi mycology.b98 some other things
12:22:35 <AnMaster> That the command-line arguments were: [ "things" "other" "some" "mycology.b98" ]
12:23:00 <Deewiant> not sure whether that's a CCBI or Mycology issue ;-)
12:23:03 <AnMaster> while mine do: That the command-line arguments were: [ "mycology.b98" "some" "other" "things" ]
12:23:24 <AnMaster> Deewiant, so I want to know if I should push them in the other order or not
12:23:42 <AnMaster> I got no idea what one is correct on this thing
12:23:46 <Deewiant> well it's an interpretation issue I think
12:23:51 <Deewiant> The first string is the name of the Funge source program being run.
12:23:59 <Deewiant> does "first" here mean topmost or the one that was pushed first
12:25:00 <Deewiant> most of y is strictly speaking UNDEF
12:25:08 <AnMaster> maybe mycology should test it in "Here's how your interpreter deals with some possibilities unmentioned in the specification..." section?
12:25:41 <Deewiant> naw, because that's uncontrollable - would need the user to pass some command line args
12:25:51 <Deewiant> and to be frank there's a lot of "possibilities unmentioned in the specification"
12:26:01 <Deewiant> that was more like a roundup of stuff that is likely to crash/infinite loop your interpreter
12:26:19 <AnMaster> GOOD: y acts as pick instruction if given large enough argument
12:26:26 <Deewiant> or that was the original intention, anyway :-)
12:26:52 <AnMaster> Deewiant, currently my interpreter may be slightly slower, due to a non-optimized y instruction heh
12:27:00 <AnMaster> I actually create a second stack atm
12:28:14 <Deewiant> what do you push for team number btw :-P
12:28:30 <AnMaster> because I got no idea what to do there
12:29:03 <Deewiant> I think it's a remnant of Befunge-97 but I'm not sure
12:29:12 <AnMaster> -p, --disable-fprints Run as if no fingerprints were implemented.
12:29:14 <AnMaster> -p, --print-fprints List all supported (and knowingly unsupported)
12:29:22 <AnMaster> you got that messed up in ccbi --help
12:29:36 <Deewiant> you've still got the old version :-)
12:31:31 <AnMaster> yay (while maybe slower atm, don't know): all good or undef
12:38:09 <AnMaster> actually there is one thing left, but mycology doesn't test it
12:38:23 <AnMaster> that the size of stacks for y actually pushes a value for each stack
13:23:56 -!- faxathisia has joined.
13:37:28 <AnMaster> 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 <GregorR> Um ... on a 64-bit environment, shouldn't int_fast32_t == int_fast64_t?
13:38:44 <GregorR> 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 <AnMaster> 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:41:20 <AnMaster> with int32_t I get faster actually
13:41:30 <AnMaster> $ time ./cfunge08 mycology.b98 > /dev/null
13:42:45 <AnMaster> $ time ./ccbi --disable-fprints mycology.b98 > /dev/null
13:43:01 <AnMaster> of course the latter is the binary Deewiant provided
13:43:12 <AnMaster> as I can't compile ccbi successfully here
13:43:30 -!- Slereah has joined.
13:43:42 <AnMaster> 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 <GregorR> 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:57:08 <AnMaster> 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
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:36:17 * slereah_ received "From Frege to Gödel"
14:37:27 <slereah_> Heh. Begriffsschrift is funny looking.
14:38:48 <slereah_> Ah yes, "Building blocks of logic", by Schönfinkel.
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 <Deewiant> 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:31:32 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)).
16:31:57 <AnMaster> Deewiant, pushed fix (as well as make cmake nicer, to actually check for existence of boehm
16:32:23 -!- sekhmet has joined.
16:33:02 <Deewiant> 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 <AnMaster> Deewiant, what does that typo do?
16:35:14 <Deewiant> 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 <AnMaster> "a space just to the left of a <"
16:35:29 -!- slereah_ has joined.
16:35:37 <Deewiant> see how easy it is to make typos? ;-)
16:36:09 <AnMaster> anyway can't see anything about negative k in output?
16:36:31 <Deewiant> AnMaster: at the place where it's testing stuff unspecified, right before fingerprints
16:37:31 <AnMaster> Deewiant, you want to upload a fixed version
16:37:46 <Deewiant> just thought it'd be easier to tell you to fix it than to have you unzip it :-P
16:37:54 <AnMaster> now I got like 5 copies of mycology around in different places all different versions
16:40:05 <AnMaster> Deewiant, btw does the standard say if months should be 0-indexed or 1-indexed
16:40:40 <Deewiant> 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 <Deewiant> AnMaster: don't think so, but all the interpreters agree that they're 1-indexed ;-)
16:41:22 <AnMaster> Deewiant, ok I'll change that to only flush at newlines or something
16:41:42 <Deewiant> and IMHO that should be the default if unspecified anyway, only programmers use 0-indexed values
16:42:01 <AnMaster> Deewiant, well who would use befunge, except programmers?
16:42:25 <AnMaster> gmtime that I use to split the date up, uses 0-indexed month
16:43:18 <Deewiant> because it has a 1-indexed day
16:47:28 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
16:47:36 -!- slereah_ has joined.
16:51:28 <AnMaster> Deewiant, btw using 32-bit versions on 64-bit platforms make it *EVEN* faster ;P
16:57:06 <pikhq> Comparing what to what?
16:57:39 <AnMaster> 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:59 <Deewiant> AnMaster: are you talking about int_fast32_t versus int_fast64_t?
16:58:09 <pikhq> That makes sense, then. . . I think.
16:58:12 <AnMaster> Deewiant, int_fast64_t vs. int32_t in fact
16:58:21 <AnMaster> because int_fast32_t = 64-bit on amd64 it seems
16:58:25 <Deewiant> thought so, because int_fast32_t should be the same
16:58:43 <pikhq> Try it in assembly, though.
16:58:47 <AnMaster> anyway I'm making some ifdef for them
16:58:58 <AnMaster> pikhq, no way I'm going to write a befunge98 interpreter in asm
16:59:17 <pikhq> AnMaster: That's just to satisfy my curiosity about what the hell is making it faster.
16:59:36 <AnMaster> pikhq, try gcc -S to make it output asm
16:59:40 <pikhq> Reading a few chunks of assembly code doing the equivalent thing with its data types would help that.
16:59:55 <AnMaster> 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
17:00:27 <AnMaster> -ffast-math made it *slower* in fact
17:00:53 <pikhq> I'm not talking 'all of Befunge', just "mov %eax, $foo" vs. "mov %rax, $foo".
17:01:06 <pikhq> AnMaster: For the love of God, don't do -ffast-math.
17:01:08 <AnMaster> pikhq, very likely it is due to how I handle them
17:01:16 <pikhq> It's almost as bad as -funroll-loops.
17:01:19 <AnMaster> pikhq, I don't do any floating point maths at all
17:01:37 <AnMaster> pikhq, and I do optimizing with profile feedback
17:01:47 <AnMaster> and that *DOES* activate -funroll-loops, based on profile data
17:01:55 <pikhq> Just stick with -O2, for the love of God.
17:02:04 <AnMaster> pikhq, normal is -O0 -ggdb3 :P
17:02:19 <AnMaster> just working on beating Deewiant's CCBI :D
17:02:24 <pikhq> -O2 is the most optimization you can do sanely.
17:02:35 <AnMaster> pikhq, yes but I'm the author of cfunge
17:02:40 <AnMaster> so I know what I can do safely
17:02:41 <pikhq> Well, in that case, don't distribute those binaries without saying 'stupidly optimised', and carry on.
17:02:50 <pikhq> In that case, just carry on.
17:03:06 <pikhq> And beat everyone else that tries that without grokking his/her code.
17:03:08 <AnMaster> pikhq, of course I'm well aware of that things may break
17:03:25 <AnMaster> and indeed likely will if I'm not 100% sure of what I'm doing right now
17:03:33 <AnMaster> and verifying result with test suite
17:03:45 <AnMaster> 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 <pikhq> And I walked up hill both ways! In the snow!
17:03:58 <AnMaster> pikhq, nah, I let gcc or whatever do it
17:04:26 <AnMaster> having to clean out the lake you live in before you woke up?
17:04:33 <pikhq> 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 <pikhq> I'm in Colorado. What lakes?
17:04:44 * AnMaster remembers that mony python thing
17:05:20 <AnMaster> pikhq, I thought it was a reference to a Monty Python sketch (spelling?)
17:05:31 * pikhq returns to reality. . .
17:05:33 <AnMaster> anyway, no way I'm doing x86 asm
17:05:52 <pikhq> I think -ffast-math makes the floating point code go through the x86 FPU. . .
17:05:55 <AnMaster> 1) I'm on x86_64, 2) I only done some ams for PIC
17:06:09 <pikhq> The problem being that, by default, and floating point code goes through SSE2, which is faster.
17:06:47 <AnMaster> pikhq, thanks for that information
17:07:47 <pikhq> Well, that is, that's the default on x86_64, since every x86_64 chip does SSE and SSE2.
17:08:06 <AnMaster> pikhq, so I should do -mfpmath=sse then?
17:09:42 <pikhq> No, you shouldn't do either...
17:09:56 <pikhq> Since gcc is compiling for x86_64, it does SSE2.
17:10:20 <pikhq> That's the fastest you can guarantee your floating point code is running, unless you can assume SSE3.
17:10:32 <pikhq> In which case, just do -msse3.
17:11:23 <AnMaster> pikhq, I do have sse3 in my sempron in fact
17:11:42 <pikhq> If you're on Gentoo, add -msse3 to your CFLAGS and recompile your stuff. ;)
17:11:54 <pikhq> gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.2)
17:12:08 <AnMaster> gcc (GCC) 4.1.2 20070214 ( (gdc 0.24, using dmd 1.020)) (Gentoo 4.1.2 p1.0.2)
17:12:35 <pikhq> Yeah, GCC newer than 3.something uses -msse3.
17:14:04 <AnMaster> I wonder, should I use gcc __builtin__ stuff for vector addition
17:14:55 <AnMaster> real 0m0.107s <-- and that is with profile generation code heh not using the profile feedback
17:15:20 <AnMaster> real 0m0.104s using profile data
17:15:32 <AnMaster> oh and this is using the flush the way ccbi does it
17:15:58 <pikhq> Yeah, add -msse3 to your CFLAGs.
17:16:04 <pikhq> Should make your vector code faster.
17:16:11 <pikhq> (read: single operation. ;p)
17:16:44 <AnMaster> pikhq, well I actually do it like this now:
17:17:12 <AnMaster> ip->position.x += ip->delta.x * steps;
17:17:12 <AnMaster> ip->position.y += ip->delta.y * steps;
17:18:40 <AnMaster> pikhq, for the required part of mycology test suite
17:18:48 <AnMaster> average is still around 0.104 or so
17:20:48 <AnMaster> pikhq, btw this is using 32-bit data types
17:21:56 <pikhq> I bet caching is a bit harder with 64-bit data types or something. . .
17:21:58 <Deewiant> AnMaster: I'm just happy that I'm only about 25% slower given that I implement much more than you do :-)
17:22:19 <pikhq> Especially since you're on a Sempron.
17:22:20 <AnMaster> Deewiant, well that is with reflecting on fingerprints I assume
17:22:26 -!- slereah__ has joined.
17:22:26 <pikhq> Those usually have somewhat small caches.
17:22:39 <AnMaster> cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz w/ 128 KB L2 Cache]
17:23:03 <pikhq> My Sempron is a 2800+.
17:23:08 <Deewiant> 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:18 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
17:23:25 <Deewiant> 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 <AnMaster> Deewiant, not the way I plan to do it, if they are not enabled, do not check
17:23:44 <AnMaster> Deewiant, I know my hash table isn't very efficient
17:23:54 <AnMaster> and wrapping with cardinal could be made faster
17:24:09 <AnMaster> considering that I think mine still has potential
17:24:28 <Deewiant> I just use what's built-in to D, it's hardly optimal
17:24:32 <AnMaster> Deewiant, I'll do some gprof analysis later
17:25:06 <AnMaster> just I find gprof output exceedingly hard to parse
17:29:38 <Deewiant> you do realize there are frontends to gprof :-)
17:34:38 <AnMaster> 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 <AnMaster> instead of mapping each to reflect I got a better idea
17:38:17 <AnMaster> Deewiant, how does the last version perform for you now
17:38:36 <AnMaster> 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 <Deewiant> looks like it's about twice as fast as CCBI
17:49:40 <AnMaster> of course file IO would make it slower
17:50:32 <AnMaster> Deewiant, and I know the hash library I use is not very performant indeed
17:50:46 <AnMaster> and there is room for lots of optimizing in wrapping code
17:50:54 <Deewiant> AnMaster: it's probably more performant than the D internal one, which I know to be quite poor
17:51:25 <AnMaster> Deewiant, problem is, interally, the hash library mallocs once for each cell, to store some data
17:51:43 <AnMaster> if you compile with debug, you can see that from gdb, by doing: call GC_dump()
17:51:50 <AnMaster> A LOT of output of small allocations
17:54:06 <Deewiant> the D one probably does that too, although it might be smarter in that it allocates in blocks
17:56:01 <AnMaster> Deewiant, well the values I allocate in blocks, but the key data it does internally into small blocks
17:56:21 <AnMaster> I know a better hash library, but I think it may have license issues
17:57:28 <Deewiant> 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 <AnMaster> Deewiant, yes but isn't it BSD?
17:58:02 <Deewiant> yes, and what does the license say
17:58:15 <AnMaster> that means it is leegal to relicense it under GPL in fact, afaik?
17:58:17 <Deewiant> "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer."
17:58:34 <AnMaster> Deewiant, I'll change the comment if you want though
17:58:37 <Deewiant> 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 <AnMaster> Deewiant, it is the 3-clause BSD license?
17:59:43 <AnMaster> the one with the advertisement rule?
18:00:25 <Deewiant> AnMaster: just cat COPYING license.txt > COPYING :-P
18:00:39 <AnMaster> Deewiant, afraid there may be an issue with doing that
18:00:46 -!- sekhmet has quit ("Reconnecting").
18:01:05 <AnMaster> Deewiant, would be confusing and probably not ok according to either your license or GPL
18:01:17 <Deewiant> AnMaster: no, that's exactly how it's done
18:01:31 <AnMaster> Deewiant, show me some other software doing that
18:01:34 -!- sekhmet_ has changed nick to sekhmet.
18:01:42 <Deewiant> AnMaster: just say "cfunge08 uses some parts of stuff based on CCBI, which is licensed thus:"
18:01:45 <Deewiant> AnMaster: windows, for instance :-P
18:01:51 <Deewiant> AnMaster: it has parts of BSD's network stack
18:01:53 <AnMaster> Deewiant, well open source software doing it
18:02:31 <Deewiant> you want me to go through random src projects looking for something which uses multiple projects' code?
18:04:05 <Deewiant> AnMaster: http://www.j-dom.org/download/README for instance
18:04:12 <Deewiant> don't know what that is but it has it the way it should be
18:04:16 <Deewiant> "The Hypersonic SQL license means that we must include the following, which applies only
18:04:21 <AnMaster> Deewiant, just rewrote comment locally anyway before you mentioned it her
18:04:38 <AnMaster> // The weird stuff below, is, as described by CCBI:
18:04:39 <AnMaster> // Instruction executes *at* k
18:04:39 <AnMaster> // If the instruction k executes, changes delta or position, we are finished.
18:04:39 <AnMaster> // If it doesn't we should jump to *after* the instruction k executed.
18:04:45 <Deewiant> AnMaster: but you've still been reading my source and basing much of your stuff on it :-)
18:04:59 <AnMaster> Deewiant, yeah, true, and will even more for fingerprints
18:05:28 <AnMaster> Deewiant, problem is, it's hard to pinpoint where exactly is steeling your stuff
18:05:40 <AnMaster> a line or algorithm here and there
18:05:49 <Deewiant> AnMaster: so just say "some of this stuff, you don't need to care what"
18:09:55 -!- slereah_ has joined.
18:09:55 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
18:14:20 <AnMaster> Deewiant, pushed change. Hope you are now happy
18:16:18 <AnMaster> 606128 00000000 00000000 00000000 00000000 ................
18:16:18 <AnMaster> 606138 305e6000 00000000 0^`.....
18:17:16 <pikhq> And string constants.
18:17:29 <pikhq> s/constant/literal/
18:19:12 <AnMaster> 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 <AnMaster> in the optmized almost all lines are just register operations
18:19:48 <AnMaster> in the -O0 one, there is a lot of push and pop
18:27:05 <oklopol> does anyone compile befunge
18:27:40 <Deewiant> I found a reference to a "real" befunge compiler on google but the page is gone
18:28:06 <oklopol> it might be quite simple, but you need to do compilation at runtime too
18:28:34 <oklopol> do making a native compiler would basically require you to include something like gcc
18:28:44 <oklopol> in every runnable prog that is
18:32:20 <AnMaster> oklopol, JIT should be possible
18:33:24 <AnMaster> oklopol, indeed, do one if you want
18:33:32 <AnMaster> you would be even faster than mine :)
18:33:43 <AnMaster> of course you need to pass mycology as well
18:34:32 <Deewiant> "MCBC is an MS-DOS only Befunge-93 compiler"
18:34:34 <lament> there was ajti befunge compiler
18:34:58 <AnMaster> Deewiant, I doubt it supports p
18:35:33 <AnMaster> without p (or in 98, s as well) it would be doable
18:35:34 <Deewiant> AnMaster: all the pages which link to it say it's fine
18:35:43 <oklopol> AnMaster: for almost all programs, there will be no compilation at runtime.
18:35:47 <lament> oklopol: the wiki page actually talks about compilation
18:35:55 <oklopol> it's just programs that require it can always be writen
18:36:02 <lament> "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 <AnMaster> oklopol, I use p a lot in my code
18:36:23 <oklopol> AnMaster: do you change code at runtime?
18:36:27 <lament> i was going to write a befunge compiler like that
18:36:35 <Deewiant> that appears to be the only reference to betty, though :-/
18:36:43 <AnMaster> oklopol, yes in befunge I would
18:37:29 -!- faxathisia has joined.
18:38:25 <AnMaster> hm true just standalone interpreter/code bundler
18:38:33 <lament> with befunge you can do either threaded code or JIT
18:38:44 -!- ehird has joined.
18:38:53 <AnMaster> lament, threaded code would be same as interpreter?
18:39:00 <ehird> i just came up with awesome ideas for the underload compiler \o/
18:39:11 <lament> AnMaster: interpreter is a main loop that looks at individual instructions
18:39:26 <lament> AnMaster: threaded code is each instruction is a piece of executable code, that executes and then passes control to the next instruction
18:39:43 <ehird> AnMaster: not weird
18:40:00 <ehird> AnMaster: forths uses it
18:40:03 <ehird> the firs tforth, for example :)
18:40:07 <ehird> so it dates back to at least the 70s
18:40:15 <ehird> but not in the 'new and crazy' sense
18:40:19 <lament> it's the normal way to compile forth, and it's how my brainfuck to smetana compiler worked :)
18:40:21 <AnMaster> actually you don't need to compile befunge, you can just make a CPU that executes befunge
18:40:30 <ehird> AnMaster: why do you think forths are really, really damn fast?
18:40:35 <ehird> because of threaded code, mainly.
18:40:43 <ehird> (and the whole 'damn minimal semantics' thing)
18:40:52 <lament> forth is such a lovely language. i wish it were usable.
18:40:55 <AnMaster> http://www.forthfreak.net/index.cgi?BashForth
18:41:07 <ehird> AnMaster: gosh, I wonder
18:41:17 <ehird> lament: insert oblig. factor propaganda here
18:41:25 * ehird reads reddit too much, mind b0rken :(
18:41:38 <ehird> StringThreadedCode
18:41:56 <lament> ehird: http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=bigforth&lang2=gcc
18:41:59 <lament> ehird: i have looked just a little at factor, and it seems to be much less lovely
18:42:00 <ehird> you just basically store the code
18:42:13 <ehird> lament: well duhhhh
18:42:15 <ehird> i mean traditional forths
18:42:23 <ehird> and also never compare anything to gcc
18:42:31 <ehird> gcc has millions of people micro-optimizing it
18:42:35 <AnMaster> 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 <ehird> it will always win :)
18:42:39 <lament> bigforth is on optimized compiler
18:42:44 <ehird> you don't need that
18:42:47 <ehird> i mean traditional, old forth compilers
18:42:48 <lament> besides forth is really low-level
18:42:59 <lament> you should be able to hand-optimize
18:43:02 <Deewiant> AnMaster: all depends on what fingerprints you implement. :-)
18:43:06 <ehird> lament: not the point
18:43:08 <ehird> bad compiler choice.
18:43:22 <AnMaster> Deewiant, yes indeed, but I mean fingerprint mechanism in general
18:43:27 <ehird> i am talking about old, traditional forths
18:43:30 <ehird> they -are- blazing
18:43:34 <lament> ehird: you're saying biforth is worse than those?
18:43:50 <lament> and i'm not even gonna correct that typo
18:44:08 <ehird> lament: it doesn't even use threaded code
18:44:10 <ehird> from what i can see
18:44:48 <lament> bigforth website is amazing
18:44:56 <lament> it was created in 1997 and the design was never changed
18:45:03 <lament> so in that way, it's like Factor :)
18:45:11 <ehird> lament: factor had a redesign like a year ago
18:45:26 <lament> ehird: http://factorcode.org/slava/
18:45:56 <ehird> lament: oh, yes, that.
18:46:04 <ehird> (i am assuming you know that was created *recently* :p)
18:48:11 <ehird> translating functional stuff to a c-style syntax is amusing
18:48:15 <ehird> U[] map(U(T) func, T[] lst)
18:48:40 * AnMaster is still wondering about a befunge CPU
18:49:01 <ehird> AnMaster: not very interesting, really
18:49:08 <ehird> you'd need to translate it to 1d before execution
18:49:39 <AnMaster> it could represent memory as 2D
18:50:09 <AnMaster> you could make a custom computer architecture for it
18:50:53 <AnMaster> Deewiant, what is the point of the NULL fingerprint?
18:51:48 <Deewiant> AnMaster: easy unloading of whatever's currently loaded?
18:51:57 <ehird> behh, I have to write a b98 interp now
18:52:04 <ehird> Deewiant: is it painful or just tedious :(
18:52:04 <AnMaster> Deewiant, but whatever is currently loaded would be loaded under
18:52:17 <AnMaster> ehird, why do you want to write one? :/
18:52:17 <Deewiant> ehird: I found it quite fun, actually
18:52:22 <Deewiant> ehird: but some of the fingerprints were painful
18:52:25 <ehird> AnMaster: why do you?
18:52:29 <ehird> Deewiant: TIME TRAVEL!
18:52:32 <Deewiant> AnMaster: I mean load whatever, then unload NULL
18:52:35 <Deewiant> ehird: yeah, that one in particular.
18:52:43 <ehird> Deewiant: it'll be a fun day with \8, I guess. Or do you really need ncurses?
18:53:05 <Deewiant> only if you implement the NCRS fingerprint :-)
18:53:24 <AnMaster> ehird, and yes quite fun apart from three things 1) stack stacks 2) wrapping 3) y instruction
18:53:32 <ehird> Deewiant: hmm. doesn't that require interpreter support?
18:53:36 <AnMaster> fingerprints I'm working on atm
18:53:39 <ehird> Deewiant: like, you can't just ad-hoc add it
18:53:42 <ehird> you must design for it
18:53:54 <AnMaster> ehird, you could ad-hoc NCRS I think
18:54:09 <Deewiant> ehird: ncurses, or fingerprints
18:54:39 <ehird> -- also jeez, befunge 98 needs a gc?
18:54:44 <ehird> this'll be tons of fun ;)
18:54:50 <ehird> (of course I will write my own! :p)
18:54:56 <Deewiant> ehird: the interface is such that the befunge program starts up NCRS, so it can be added "ad-hoc"
18:55:01 <Deewiant> ehird: and no, you don't need GC
18:55:02 <AnMaster> ehird, however two things I can see would require redesign: time travel, and the hover mode stuff,
18:55:15 <AnMaster> ehird, why would you need a gc?
18:55:22 <AnMaster> it is just that a gc is so much easier
18:55:38 <Deewiant> AnMaster: remap instructions, like swap 5 and 4 for instance :-)
18:55:49 <AnMaster> Deewiant, ok won't do that one then
18:56:02 <Deewiant> AnMaster: but "redesign" is a bit overstating it, I think
18:56:10 <ehird> AnMaster: I thought you hated gc
18:56:16 <ehird> Deewiant: eh, that's not too hard
18:56:19 <ehird> just more indirection! ;)
18:56:19 <AnMaster> ehird, I hate it with GUI apps
18:56:26 <Deewiant> they just need adding data to the IP structure and some extra handling in all instruction execution
18:56:30 <ehird> AnMaster: change of heart
18:56:50 <AnMaster> ehird, or rather, I love it when it works, and hate it when it doesn't
18:57:19 <AnMaster> Deewiant, anyway anything requireing any exensive core change I won't do
18:57:39 <Deewiant> and "extensive" is a bit pushing it, as well :-)
18:57:50 <Deewiant> MODE is somewhat extensive for queue and insert mode
18:58:28 <AnMaster> and I will continue to do that for anything but A-Z
18:58:32 <Deewiant> AnMaster: basically it's "instruction = ip.mappings[instruction];"
18:58:45 <Deewiant> before you head in the switch-case
18:58:47 <ehird> Deewiant: how many fprints does ccbi implement?
18:58:52 <AnMaster> Deewiant, yes and that would make it slower :/
18:59:04 <Deewiant> ehird: all that I know of except WIND and SGNL
18:59:11 <ehird> Deewiant: what does TURT use?
18:59:12 <Deewiant> and TERM on non-Windows, unfortunately
18:59:36 <AnMaster> Deewiant, you said it in your readme
18:59:42 <ehird> Deewiant: oh sheesh
18:59:46 <Deewiant> AnMaster: crap indeed, it contradicts the spec
18:59:53 <Deewiant> ehird: I found it the easiest option actually
18:59:56 <ehird> mine will be EXTENSIVEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
19:00:06 <ehird> Deewiant: mine will do SDL, SVG, PNG, ... :D
19:00:26 <AnMaster> ehird, just FILE and let befunge program output those themself
19:00:38 <AnMaster> ehird, however do NOT change specs for TURT
19:00:45 <ehird> totallyfreakingawesomebefunge98 --fprint=TURT,--sdl
19:00:52 <ehird> AnMaster: ehm, why would i need to
19:00:56 <ehird> just a command line op as you see there :D
19:01:01 <ehird> of course --fprint will be a horrible hack
19:01:05 <AnMaster> ehird, allow the program to set output type?
19:01:09 <ehird> --fprint=NAME,FOO...
19:01:12 <ehird> replaces , with ' ' in FOO
19:01:17 <ehird> parses the options
19:01:22 <ehird> and sends them off to NAME finger print
19:01:27 <ehird> AnMaster: thank god
19:01:41 <ehird> AnMaster: that's ridiculous
19:01:45 <ehird> bsds implement it nowadays
19:01:56 <AnMaster> lament, hah not sure about that
19:02:03 <AnMaster> ehird, what language will you code yours in?
19:02:15 <ehird> AnMaster: writing one in python with numpy for fungespace at first
19:02:21 <ehird> micro-optimized, of course.
19:02:31 <ehird> i hope to have the ugliest sprawling mass of befunge interpreter that exists
19:02:34 <ehird> AnMaster: K&R represent!
19:02:46 <ehird> --fprint=TURT,--svg=foo.svg,--sdl # MULTIPLEXINGF
19:02:50 <AnMaster> ehird, offers some nice restrict keywords to ehird for further micro-optimizing
19:03:02 <ehird> AnMaster: __asm__ represent
19:03:11 <ehird> AnMaster: x86 represent
19:03:16 <AnMaster> ehird, if it doesn't work on amd64 as welll
19:03:23 <ehird> AnMaster: 286 represent
19:03:28 <AnMaster> ehird, look my current one can use 32-bit numbers if you want
19:03:39 <ehird> AnMaster: NIH represent
19:04:33 <AnMaster> Deewiant, anyway I'm wondering about a 128 bit integer mode, iirc there is some __int128 type of gcc?
19:05:06 <ehird> does the spec permit bignums?
19:05:20 <AnMaster> ehird, as long as you can say how many bytes it is
19:05:22 <ehird> so like all programs would break?
19:05:26 <Deewiant> but it is explicitly said that it's allowed
19:05:36 <ehird> Deewiant: will programs break, though
19:05:36 <AnMaster> ehird, well that's my plan as well
19:05:50 <ehird> extend the numbers
19:05:51 <Deewiant> pushing -1 would kinda suck for programs that test for a minimum size of 6, for instance :-)
19:05:52 <ehird> so you can say infinity
19:06:12 <ehird> Deewiant: but seriously -- do programs tend to assume infinite bitsize?
19:06:30 <AnMaster> ehird, they tend to assume 32-bit or better I think
19:06:33 <Deewiant> I guess most programs would be happy with 16-bit integers :-P
19:06:55 <AnMaster> Deewiant, not sure, you would need to store handprints and such in one
19:07:09 <Deewiant> ehird: I'm not sure what you mean by 'tend to', since there aren't that many written programs ;-)
19:07:11 <AnMaster> ehird, btw, the handprint CFUN is in use
19:08:01 <Deewiant> there's already been a fingerprint overlap, two different SOCKs
19:08:04 <AnMaster> ehird, in my funge08 specs that I'm working on I decided to allow trinary funge or in fact n-nary funges
19:08:24 <AnMaster> Deewiant, we really need a new register
19:08:29 <Deewiant> AnMaster: but fortunately the only difference is that one includes SCKE and the other doesn't
19:08:43 <ehird> AnMaster: mine was called cfunge before yours :
19:08:55 <ehird> i named it while tyou were just considering bash
19:09:01 <Deewiant> AnMaster: adds a few funcs, meant to be used in conjunction with SOCK
19:09:02 <ehird> so nyah, CFUN is miiine :D
19:09:10 <AnMaster> ehird, nop, I already had planes on cfunge back then
19:09:13 <Deewiant> meh, awfully creative names there :-P
19:09:19 <ehird> AnMaster: welp, sorry, i'd already had a directory up
19:09:21 <AnMaster> ehird, anyway mine is released
19:09:31 <AnMaster> ehird, and CFUN is my handprint
19:09:52 <ehird> no.. i had the directory tree and handprint before, just not released
19:10:05 <ehird> ('tough for me' -- I guess the befunge police are going to raid my house)
19:10:15 <ehird> handprints & fingerprints are broken anyway.
19:10:21 <ehird> they're centralized and overlaps are too easy.
19:10:30 <AnMaster> ehird, well just call your CBEF
19:10:33 <ehird> a URI would be nicer
19:10:37 <ehird> AnMaster: nooo, you do that :D
19:10:46 <ehird> http://elliotthird.org/b98/cfunge
19:10:51 <AnMaster> I plan to provide unefunge version
19:10:52 <Deewiant> AnMaster: I agree with ehird, the whole handprint/fingerprint mechanism is a bit messed up, shouldn't need centralization
19:10:57 <Deewiant> but I don't know if it can be solved well
19:11:00 <ehird> AnMaster: well, I am supporting N-dimensionals
19:11:07 <ehird> AnMaster: 404, gosh really
19:11:09 <ehird> that was an example URIprint
19:11:17 <AnMaster> ehird, yes that would be a good idea
19:11:36 <ehird> AnMaster: anyway, since i support any N dimensions, I have the right to CFUN
19:12:41 <ehird> Deewiant: URIprints might be a bit verbose though
19:13:14 <Deewiant> and they can overlap as well, just takes time
19:13:30 <ehird> Deewiant: no, that's not the point
19:13:42 <ehird> URIs specific purpose are unique, global identifiers
19:13:58 <ehird> what's better, sometimes they're URLs. then humans can utilize them -- like loading it via http
19:14:02 <Deewiant> yes, they should be that, but they aren't always :-P
19:14:14 <ehird> Deewiant: sure, but it is far better than the current system
19:14:26 <ehird> besides, the odds of clashing and then someone else doing a different ext --- it is just far too unlikely :)
19:14:40 <ehird> here is what would cause a clash
19:14:46 <ehird> - someone releases an ext under a uri
19:14:57 <ehird> - it is a very very common uri
19:15:00 <ehird> - someone else thinks it's good
19:15:05 <ehird> now I dunno about you but that seems HIGHLY unlikely
19:15:06 <AnMaster> ehird, good idea, one for my funge08 specs
19:15:12 <ehird> in the case where it's a URL:
19:15:18 <ehird> - someone has a URL probably on a domain
19:15:33 <ehird> - 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 <AnMaster> ehird, along with gnirtsn (string with size in front)
19:15:53 <ehird> - someone else gets it, also a befunger
19:15:53 <ehird> - they make another fprint
19:15:53 <ehird> - and release it under the same uRI
19:15:57 <ehird> both of those will basically never happen
19:16:02 <Deewiant> because, in 99% of cases, they will be URLs.
19:16:13 <ehird> the likelyhood of the above
19:16:37 <ehird> ccbi.d:319: Error: cannot implicitly convert expression ((helpRegex.test)(s)) of type int to bool
19:17:17 <Deewiant> 4.1 doesn't mean anything, which version of GDC is it :-)
19:17:44 <ehird> gdc (GCC) 4.1.3 20070831 (prerelease gdc 0.25, using dmd 1.021) (Ubuntu 0.25-4.1.2-16ubuntu1)
19:17:49 <Deewiant> could be too new a tango, actually
19:17:51 <ehird> Deewiant: it had some ncurses foobar but that doens't happen now
19:17:55 <ehird> the tango is the latest
19:18:15 <AnMaster> ehird, cfunge 0.1.0 released, just making a tar ball for it
19:18:16 <Deewiant> nope, test should return bool still
19:18:22 <ehird> AnMaster: tough. CFUN is mine
19:18:50 <ehird> AnMaster: because denying something i said on irc will cause the befunge police to come and get me? :)
19:19:03 <Deewiant> ehird: that's /all/ it says? if so, just put cast(bool) before it and hope it works :-P
19:19:50 <ehird> 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:20:12 <ehird> well then, now i am
19:20:20 <ehird> also, sorry for not being present 100% of the time
19:20:32 <ehird> it takes about 10 keypresses to tap over a string literal.
19:20:54 <ehird> AnMaster: release is made!12121
19:21:03 <ehird> 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 <Deewiant> what's with all the trolling :-P
19:21:51 <ehird> Deewiant: reactionary trolling
19:22:28 <ehird> 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 <ehird> 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 <Deewiant> timestamps or it didn't happen
19:22:58 -!- olsner has joined.
19:23:14 <Deewiant> except that the damn things can be falsified, d'oh
19:23:27 <ehird> 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 <AnMaster> http://rage.kuonet.org/~anmaster/cfunge/
19:24:10 <ehird> AnMaster: 'my heart has been ripped out and filled with dread. I think I will cry myself to sleep.'
19:24:15 <ehird> i am not sure what kind of response you are aiming for.
19:24:41 <AnMaster> ehird, that no one complained when I announced I would use CFUN
19:25:00 <ehird> AnMaster: because I wasn't here. does this kind of thing not process for you?
19:25:01 <AnMaster> Deewiant (iirc, or maybe ais<number here>, even said it was a good choice)
19:25:09 <ehird> i can hardly say it was in use when I wasn't there
19:25:17 <ehird> and expecting me to and using that as justification is ridiculous
19:25:44 <AnMaster> ehird, same is expecting me to believe you actually had selected than handprint before
19:25:58 <ehird> AnMaster: uh, yes i did
19:26:14 <ehird> (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 <AnMaster> expecting me to and using that as justification is ridiculous
19:26:36 <Deewiant> AnMaster: I grepped the logs, a quick check suggests he's said nothing of the kind
19:27:07 <ehird> Deewiant: that is correct.
19:27:25 <ehird> Deewiant: I do not see why I would mention it when the question of usage was not asked.
19:28:04 <AnMaster> mar 11 18:50:24 <Deewiant> CFUN eh
19:28:04 <AnMaster> mar 11 18:50:33 <AnMaster> Deewiant, er yes?
19:28:04 <AnMaster> mar 11 18:50:36 <AnMaster> is it in use?
19:28:04 <AnMaster> mar 11 18:50:47 <Deewiant> don't think so
19:28:04 <AnMaster> mar 11 18:51:02 <Deewiant> most use BEF or something instead of FUN
19:28:05 <AnMaster> mar 11 18:51:14 <AnMaster> FUN as in FUNGE
19:28:22 <Deewiant> yeah, I said I don't think it's in use
19:28:50 <Deewiant> you can't expect people to be watching IRC all the time
19:28:53 <AnMaster> ehird, you haven't announced the handprint before either btw
19:28:57 <ehird> [18:28] <Deewiant> you can't expect people to be watching IRC all the time
19:29:27 <ehird> and there is absolutely no way I can prove that I had CFUN before you, because that's physically impossible
19:29:44 <ehird> 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 <ehird> or.. decide that i must be lying
19:29:57 <ehird> for some crazy reason
19:30:02 <AnMaster> ehird, but you got a suggestion for other handprint
19:30:24 <AnMaster> and would still work with the name cfunge
19:30:35 <ehird> AnMaster: no it's not. you suggested CBEF
19:30:42 <ehird> it is an N-funge interpeter.
19:30:54 <AnMaster> ehird, and I don't like that much, because I will add more dimensions
19:30:59 <ehird> besides, CFUN is fine and I was using it prior to you.
19:31:09 <ehird> why should i have to change the fingerprint that I already used?
19:31:47 <Deewiant> 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 <ehird> Deewiant: well, no. it is probably somewhere on my harddrive
19:32:15 <AnMaster> Deewiant, but released *shrugs*
19:32:18 <ehird> still, the point is -- if I was there when he asked, I could have honestly answered 'yes. it's in use.'
19:32:32 <ehird> AnMaster: sticking a tarball on http is not a way to seal your ownership of something..
19:32:38 -!- jix has joined.
19:37:27 <Deewiant> and in any case, I'd say whoever releases something first is the one who can claim rights to the name
19:37:37 <Deewiant> but whatever, fight it out amongst yourselves :-P
19:37:45 <AnMaster> Deewiant, I'm not going to fight
19:38:11 <Deewiant> 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 <AnMaster> I don't simply care of ehird wants the name, he didn't announce it, nor release it, first
19:38:37 <ehird> 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 <ehird> You can argue with that if you'd like; fin
19:39:20 <AnMaster> ehird, anyway I'm also using the name cfunge for the interpreter, or cfunge08, both are valid names for it
19:40:24 <ehird> AnMaster: Why not use CF08?
19:40:39 <ehird> Since you're not implementing strict Funge-98, you indicate that it's your standard.
19:40:56 <AnMaster> ehird, maybe, I will implement strict 93, 98 and 08
19:41:08 <AnMaster> I already got some code in place for it
19:41:20 <ehird> AnMaster: well, the interpreter is called cfunge08 is it not?
19:41:24 <ehird> therefore, CF08 is a good fingerprint
19:41:39 <AnMaster> ehird, it is, but well <Deewiant> 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 <AnMaster> ehird, <Deewiant> and in any case, I'd say whoever releases something first is the one who can claim rights to the name
19:41:54 <AnMaster> you don't accept those arguments of Deewiant ?
19:42:45 <Deewiant> Deformative: got a spec written yet?
19:43:18 <ehird> AnMaster: so even sayiung that CF08 is a good handprint, you don't want to use it because..
19:43:30 <AnMaster> ehird, because I'm convinced of what Deewiant said
19:43:44 <AnMaster> ehird, CF98 would be good for your one in that logic
19:43:51 <ehird> AnMaster: hardly..
19:44:04 <ehird> because all currennt fingerprints are funge-98 ones
19:44:09 <ehird> so yours is the one that needs explicit clarification
19:44:13 <ehird> besides, mine isn't called cfunge98
19:44:15 <AnMaster> ehird, anyway 98 is the standard mode for me
19:44:16 <ehird> yours IS called cfunge08
19:45:46 <Deformative> Deewiant: http://deformative.hosting.arsfides.com/upload/files/1/spec.txt
19:46:53 <Deewiant> "ignored args" - ah, of course, I was wondering how that'd look otherwise :-)
19:59:02 <Deformative> Reordering the args is quite an interesting problem.
19:59:19 <Deformative> Discussed it for a long time yesterday if you have logs.
20:15:34 <ehird> # define UL_DISCARD foo = UL_stk->prev; free(UL_stk->top); free(UL_stk); UL_stk = foo;
20:15:40 <ehird> write that without the temp var'foo'
20:15:54 <ehird> impossible i think
20:17:16 <Deformative> ehird: Did you see the challenge from yesterday?
20:20:10 <Deewiant> ehird: if you're feeling lucky, just remove foo and then do UL_stk = UL_stk->prev at the end ;-)
20:20:33 <Deewiant> it'll probably work in most cases
20:20:39 <Deewiant> and crash the program in others ;-)
20:21:02 * ehird is rewriting the Underload2C prelude
20:26:25 -!- slereah__ has joined.
20:28:21 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
20:35:15 <slereah__> http://members.iif.hu/visontay/ponticulus/images/szovegek/begriffsschrift.jpg
20:35:34 <slereah__> For some reason, this notation was never used again, as far as I know!
20:39:31 <ehird> ' Please insert your fruit here.'
20:39:37 <ehird> that's what i'm putting in the prelude for the compiler to replace
20:39:57 <AnMaster> <Deewiant> it'll probably work in most cases
20:39:57 <AnMaster> <Deewiant> and crash the program in others ;-)
20:40:19 <AnMaster> Deewiant, it would crash in cases where the system mmap mallocs
20:40:35 <AnMaster> like both glibc (for larger objects) and openbsd (for all objects) does
20:41:09 <ehird> hmm, that IS one thing the world needs...
20:41:18 <ehird> symntax for template sin c commands
20:41:41 <ehird> AnMaster: 'templates'
20:41:45 <ehird> syntax for templates in c commands
20:41:50 <ehird> i.e. a widely accepted way to do it
20:41:56 <AnMaster> ehird, there are no templates in C afaik?
20:42:07 <ehird> AnMaster: not C++ templates you dummy
20:42:09 <ehird> /*$ foo */ means 'replace this comment with the value of foo'
20:42:30 <ehird> AnMaster: haahahahahaha
20:42:34 <ehird> I mean for interpolating from EXTERNAL sources.
20:42:40 <ehird> Like the underload compiler does its compiler
20:42:44 <ehird> then stuffs it into the prelude
20:42:46 <ehird> at the right place
20:42:53 <ehird> I could put /*$ blimps */ in the prelude
20:42:59 <ehird> Then, it would do something like:
20:43:12 <ehird> interpolate textOfPrelude [("blimps",compiledCode)]
20:43:23 <ehird> and then that marker would be transformed into the compiled blimps
20:43:50 <ehird> 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 <AnMaster> ehird, no, I just gave up trying to understand it
20:44:21 <ehird> interpolate textOfPrelude [("blimps",compiledCode)]
20:44:31 <ehird> textOfPrelude = "void foo() { /*$ blimps */ }"
20:44:31 <AnMaster> ehird, you replace text at a marker?
20:44:38 <ehird> compiledCode = "foobar"
20:44:46 <ehird> "void foo() { foobar }"
20:44:50 <ehird> so, just a regular template language
20:44:55 <ehird> BUT, it's in c comment syntax
20:45:03 <ehird> so its highlighted correctly
20:45:06 <ehird> and is still valid C etc
20:45:16 <ehird> AnMaster: it's just like how /** ... */ is accepted as docs
20:45:18 <ehird> and highlighted thus
20:45:30 <AnMaster> ehird, bah /** */ is for doxygen iirc?
20:45:35 <ehird> AnMaster: no, everything
20:45:42 <ehird> emacs highlights /** */ differently
20:45:53 <ehird> it could do something similar for interpolation stuff
20:46:00 <ehird> the only problem is, /*$ ... */ is ugly
20:46:10 <AnMaster> ehird, but I only seen it used for doxygen comments
20:46:17 <ehird> /*$ blimps $*/ could work I guess
20:46:25 <Deewiant> use /*/ ... */ and confuse people
20:46:49 <ehird> is highlighted differently by gcc
20:47:16 <ehird> faxathisia: the underload compiler
20:47:29 <ehird> all the compiled blimps need to be stuffed into the right place in the prelude
20:47:36 <AnMaster> ehird, yes but why does emacs highlight /*< >*/ differently?
20:47:37 <ehird> i'm just devising a nice way for templating in C
20:47:40 <ehird> AnMaster: I have no goddamn idea
20:47:44 <ehird> but it works out nicely
20:47:50 <ehird> I could be even more fancy,
20:47:51 <AnMaster> ehird, it is probably used for something else
20:47:57 <ehird> and let the templating language do the numbering
20:48:35 <ehird> /*< foreach blimps blimp >*/ case /*< blimp.num >*/: /*< blimp.code >*/ break;
20:49:04 <ehird> faxathisia: so it stays valid c.
20:49:09 <ehird> well my example isn't valid
20:49:14 <ehird> it SCANS as valid c
20:49:22 <ehird> and editors highlight it OK
20:49:36 <AnMaster> ehird, anyway the reason for /*< >*/ by emacs, is PROBABLY it is already used
20:49:42 <ehird> AnMaster: who cares
20:49:47 <AnMaster> ehird, I suggest you check so there won't be a collision at least
20:49:56 <AnMaster> ehird, then just use /** */ for it :P
20:50:03 <faxathisia> it's more likely a bug in the hilighting
20:50:29 <AnMaster> then I will report that to emacs ppl so they fix it for next version :D
20:51:07 <ehird> /*< foreach blimps as blimp: 'case $blimp.num: $blimp.code break;\n' >*/
20:51:15 <ehird> i should just embed lua in there
20:51:59 <AnMaster> ehird, my emacs highlight it the same way btw
20:52:47 <AnMaster> emacs-22 does it differently though
20:53:14 <AnMaster> ehird, err wait, emacs-23 does it differently to, had wrong major mode
20:53:30 <AnMaster> ehird, I think I know what it is
20:54:23 <ehird> /*< for i=0,blimpc do out("case ", i, ":\n", blimps[i], "\nbreak;") end >*/
20:55:14 <AnMaster> ehird, anyway (real world example):
20:55:16 <AnMaster> size_t i_items; /**< The current number of items in the table */
20:55:35 <AnMaster> ehird, so just as a warning < already got a meaning in start of comments
20:56:03 <AnMaster> ehird, yes, but I think I've seen /*< too
20:56:15 <AnMaster> and emacs highlights /** the same way as /*<
20:57:56 <Deformative> ehird: http://deformative.hosting.arsfides.com/upload/files/1/spec.txt Sorry it took so long, I sorta fell asleep.
20:58:09 <AnMaster> Deewiant, should fingerprints be local to ip in concurrent funge?
20:58:25 <AnMaster> Deewiant, and, should they inherit over t?
21:00:05 <ehird> 070100002c0000000000000000000000000000000000000000000000000000000000dd8fff010000dd8f27000000fb02ef07000000fb01ef070000000000bc8f8800040000bc012f65746300
21:00:15 <ehird> hex of a VAX program to rename /tmp to /etc
21:00:47 <Deewiant> AnMaster: actually, the latter is unspecified
21:31:23 <pikhq> Looks like you guys are re-inventing Objective C. :p
21:43:35 <pikhq> Objective C is implemented as a fairly thin templating system over C. ;)
21:44:03 <ehird> (Though, of course, Objective-C doesn't actually compile into C..)
21:44:25 <pikhq> You can implement Objective C with just a preprocessor into C.
21:44:32 <pikhq> (GCC used to do just that)
21:44:53 <ehird> pikhq: Same with anything.
21:45:36 <pikhq> Objective C is, interestingly, a strict superset of C. . .
21:45:43 <ehird> pikhq: Not interestingly -- sanely.
21:45:52 <ehird> Objective-C is really well designed like that.
21:46:42 <ehird> I'm actually working on a little language which is the marriage of C and functional stuff
21:46:58 <ehird> faxathisia: in mine that's: (x) => { return ++x; }
21:47:03 -!- oerjan has joined.
21:47:33 <faxathisia> does it compile to ML or something? :P
21:47:38 <ehird> int (int x) => { return ++x; }
21:48:06 <ehird> faxathisia: I managed to find a anice way to represent generic types
21:48:07 <pikhq> ehird: You could actually probably get GCC to handle anonymous functions with ease. . .
21:48:11 <ehird> Here's id :: a -> a:
21:48:14 <pikhq> Already, they support *scoped* functions. ;)
21:48:16 <ehird> T id(T a) { return a; }
21:48:25 <ehird> That is, UpperCase = generic type.
21:48:31 <ehird> Looks C-ish, which is a Good Thing.
21:48:42 <ehird> Also, I decided that for passing around functions, Declaration Is Usage failed miserably.
21:48:46 <pikhq> int main(){int foo(int *bar){++*bar;};int baz=0;foo(&baz);}
21:48:58 <pikhq> ^ Perfectly valid GNU C, does what you expect.
21:48:59 <ehird> U[] map(U (T), T[])
21:49:10 <ehird> U[] map(U (T) func, T[] lst) // with arg names
21:49:17 <ehird> not sure about that function type syntax yet
21:49:26 <pikhq> faxathisia: Or -std=gnu99.
21:49:28 <oerjan> yeah, really first class closures requires GC
21:49:45 <ehird> I have both 'void' and 'unit' :-)
21:49:52 <ehird> mostly you use 'void' - for IO-only functions etc
21:50:00 <ehird> unit is just there for.. mathematical nicety, I guess.
21:50:22 <ehird> Oh yeah, and algebriac data types in da house.
21:50:49 <ehird> data LL<a> { nil, cons(a, LL<a>) }
21:50:55 <ehird> that raises problems with generic types
21:51:00 <ehird> But I don't want to use 'a
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:21 <ehird> faxathisia: that's the new syntax for parametized types
21:51:26 <ehird> data LL a = Nil | Cons a (LL a)
21:51:29 <ehird> translated to haskell
21:51:35 <ehird> faxathisia: precedent in C-alikes: C++, Java
21:51:42 <ehird> it looks alright, anyway
21:52:20 <ehird> however, I do need to solve that generic thing
21:52:34 <ehird> data list_t<a> { nil, cons(a, list_t<a>) }
21:52:51 <ehird> data list_t<T> { nil, cons(a, list_t<T>) }
21:52:55 <ehird> data list_t<T> { nil, cons(T, list_t<T>) }
21:53:00 <ehird> that would produce
21:53:21 <ehird> list_t<T> cons(T, list_t<T>)
21:53:35 <ehird> faxathisia: I haven't figured out 'T a' vs 'T a()' yet.
21:53:44 <ehird> and the most elegant way to do it
21:53:59 <ehird> 'T a = b;' is short for 'T a() { return b; }'
21:54:08 <ehird> and zero-arg functions don't need () to call
21:54:39 <pikhq> GregorR: Convince him to stop.
21:54:45 <pikhq> Show him the ways of D.
21:54:56 <ehird> Heh, hardly. D is nothing like the thingy I'm making.
21:55:05 <ehird> And I've used D, thankyouverymuch. I didn't like it, really.
21:55:35 <faxathisia> also I beat a D coder in some contest using C...
21:55:44 <ehird> For a start, and completely unrelated to all the other, more significant problems --
21:55:47 <ehird> the syntax is awkward.
21:55:56 <ehird> 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 <ehird> pikhq: 'Tell him that D is so much better!' 'Hm, D, I should try that.'
21:57:10 <ehird> so many people like that :)
21:57:25 <pikhq> ehird: I was mostly joking, really.
21:57:40 <ehird> pikhq: Good. Well that was to GregorR anyway. :P
21:57:49 <pikhq> But, seriously, I should try D.
21:57:51 <ehird> faxathisia: any comments on T vs T()?
21:58:10 <pikhq> But something a bit more important.
21:58:16 <pikhq> I should make interrupts.
21:58:16 <ehird> faxathisia: heh, hardly.. :)
21:58:22 <ehird> faxathisia: dunno if I'll do continuations.
21:58:48 <ehird> (OCaml being the FP language that most resembles this one -- i.e. not pure, but not Lispy)
21:59:15 <ehird> faxathisia: Maybe I'll do it the dumb way (stack smashing)
21:59:25 <ehird> Also, the preprocessor is gone. # is still used though
21:59:34 <ehird> #import cont /* it would probably be this */
21:59:47 <faxathisia> well if anyone wants to use cpp they can do just that
21:59:47 <ehird> '#foo ...' at the start of a line means 'compiler directive foo: ...'
21:59:58 <ehird> which makes the distinction between code that will be compiled
22:00:08 <ehird> faxathisia: They should not -- this handles re-imports
22:00:15 <ehird> and you don't need to write a header file
22:00:19 <ehird> just: #export a b c d
22:00:35 <ehird> and when compiling it'll optionally generate an 'interface file' which gets installed
22:00:44 <ehird> which is like a header file, but far more compact
22:00:48 <ehird> and not valid code, of course
22:00:51 <ehird> and #import looks for them
22:01:18 <ehird> IF in $INCLUDEPATH (., <STUFF>, system dir), code file in $INCLUDEPATH
22:01:27 <ehird> & if the code file is not compiled it does it for you
22:01:33 <ehird> faxathisia: So yeah, down with cpp :p
22:02:07 <ehird> faxathisia: also, it would be 'T callcc(T (cont_t))'
22:02:24 <AnMaster> <pikhq> 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 <ehird> where cont_t = 'void (T)'
22:02:40 <ehird> T callcc(T (void (T)))
22:03:04 <ehird> faxathisia: Not a bad callcc signature I must say.
22:03:11 <ehird> In Haskell-style types that looks like
22:03:24 <ehird> callcc :: ((a -> ()) -> a) -> a
22:03:28 <ehird> which is far less easy to understand
22:03:35 <ehird> it's C-style but not C-ugly
22:03:47 <ehird> faxathisia: this will have support for declarative programming
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 <ehird> redrawerredrawers is a word
22:27:50 <oerjan> i find that slightly hard to believe
22:28:23 <oerjan> 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 <oklokok> ehird: parsed how exactly?
22:38:22 <ehird> oklokok: what parsed where what what and what and what
22:38:52 <oklokok> is that a noun meaning "those who draw that red, which describes those who draw red"
22:39:02 <oklokok> that word you said was a word
22:39:21 <ehird> oklokok: I don't know
22:39:23 <ehird> ubt it's in a word list
22:39:29 <ehird> and it can be typed on the left hand
22:39:35 <ehird> it is the REAL longest word that you can do that with
22:41:21 <oerjan> that abcdef -> bdeefa or whatever problem?
22:41:58 <oerjan> i also got a sense it might be easier than it looked at first
22:43:12 <Deformative> http://deformative.hosting.arsfides.com/upload/files/1/np.txt
22:46:16 <oklokok> actually the trivial solution is O(n^2)
22:47:18 <oklokok> 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:48:35 <Deformative> And that would _not_ make optimal solutions.
22:48:51 <faxathisia> You should read Shin-Cheng Mu and Silvija Seres approach to the edit distance problem and other combinatoric optimization problems
22:49:09 <oklokok> [21:42] <Deformative> 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> [21:43] <Deformative> 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 <oklokok> [21:43] <Deformative> You have access to extra space.
22:49:24 <oklokok> Deformative: minimum space as in O(1) spae
22:50:13 <Deformative> Well, I don't think you quite get the goal.
22:50:21 <Deformative> So uh, you should read the whole txt file.
22:50:30 <Deformative> Because no one really got it until the end.
22:50:37 <oklokok> i guess, just thought that was the complete description
22:51:36 <ehird> I like this ciphery thingy:
22:51:39 <Deformative> 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:47 <oklokok> what are the exact space and time? ordo bounds on the permutator and the algorithm creator?
22:51:49 <ehird> abcdefg -> acegfdb
22:52:07 <ehird> it makes most text look like line noise but *kind of* resembles the original text
22:53:56 <oklokok> Deformative: or is the goal to optimize for each? i'm fairly sure that cannot be done
22:54:16 <oklokok> the actual permutator must be *perfect*
22:55:35 <oklokok> it's still not clear to me, can the permutator access any amount of space? the task is trivial if it can
22:56:04 <oerjan> my intuition says it's O(n)
22:56:25 <oerjan> and with at most one extra temporary location used
22:56:45 <Deformative> You are writing a program that outputs a set of instructions.
22:56:51 <Deformative> The instructions it outputs must be perfect.
22:57:00 <oklokok> Deformative: yes, but what's *perfect*?
22:57:03 <Deformative> The instructions it output does one thing.
22:57:09 <oerjan> copy instructions, as few as possible, i take it
22:57:26 <oklokok> there will be exactly n moves with what i said right away
22:57:28 <oerjan> or does swap count as a single instruction?
22:57:46 <faxathisia> which is here http://citeseer.ist.psu.edu/468298.html
22:57:59 <oklokok> ofc not, you don't always have to do even that
22:58:44 <oerjan> 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 <oerjan> otherwise you can use any disappearing letter as scratch
23:00:03 <oerjan> ideally you want all copies to be a letter moved to its final location, if possible
23:00:10 <oklokok> i'm fairly sure it's not *np*, at least
23:00:59 <ehird> my encoding mehtod, if anyone didn't immediately get it
23:01:04 <Deformative> 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 <oerjan> when do you _have_ to move a letter other than to its final destination? when there is a permutation cycle
23:01:24 <ehird> enc a:b:xs -> [a]++enc xs++[b]
23:01:38 <oerjan> you must do this once for each cycle
23:01:40 <Deformative> You generate code that will move the letters.
23:01:46 <oerjan> Deformative: i mean copy
23:02:01 <slereah__> "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:22 <oerjan> Deformative: um generating code is trivially equivalent to finding out how to do it with copying
23:02:42 <Deformative> oerjan: The only time you need to move other than the final destination is a swap.
23:03:10 <Deformative> Unless I decide to use a register instead.
23:03:36 <oerjan> Deformative: yes. and i think you only need one swap per permutation cycle in the problem
23:03:52 <slereah__> faxathisia: I bought the fucking 650 pages specially for that article
23:04:00 <slereah__> Though the rest is pretty cool too.
23:04:25 <oerjan> although that might not be quite well-defined. hm.
23:04:47 <Deformative> This is quite confusing, but really not that complicated once I put it in code.
23:06:06 <slereah__> I was trying to see by hand what that function is doing
23:06:10 -!- adu has joined.
23:06:17 <slereah__> But I must be retarded, since I created a language for that.
23:06:18 <oklokok> 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 <oerjan> oklokok: um the call stack is irrelevant to the final generated copies?
23:07:25 <oklokok> oerjan: i meant the programs generated need a call stack
23:07:33 <oklokok> actually not, of course not
23:07:40 <oklokok> second order programming is confusing
23:08:34 <oklokok> how about infinite order programming where the result program is the fixed point?
23:09:21 <ehird> faxathisia: functions taking/returning functions that take/return functions
23:09:44 <ehird> N-order functions are functions taking/returning (N-1 order functions).
23:09:53 <lament> so like, Haskell for Dummies? :)
23:10:06 <faxathisia> sounds like common practice in haskell
23:10:22 <lament> faxathisia: i'm using lisp! this sucks.
23:10:40 <oerjan> 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 <adu> faxathisia: I like Fortress
23:11:13 <oerjan> but it's still vague in my mind
23:11:40 <adu> http://fortress.sunsource.net/
23:11:55 <adu> its like Fortran+OCaml+Mathematica
23:12:03 <oklokok> actually optimizers can be done with something like a fixed point of an infinite order program
23:12:16 <oklokok> faxathisia: i meant generating code
23:12:29 <oklokok> n-order code generates (n-1)-order code
23:13:45 <oklokok> hmm, wonder if i should actually explain something
23:13:55 <oklokok> say you write a program that does task T
23:14:07 <oklokok> if you write a program that writes a program to solve T
23:14:15 <adu> Is there anywhere that has short descriptions of programming languages?
23:14:30 <oerjan> 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 <faxathisia> I tell people, stop wastingt your time with that silly task you write the same program with different variables every weex
23:15:08 <faxathisia> 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 <faxathisia> as if this kind of task is impossible :P
23:15:33 <oerjan> so make that number of totally isolated cycles
23:15:57 <oklokok> in a good language, you can usually just do the metaprogramming in the same program
23:16:04 <oklokok> and just separate the conceptual levels
23:16:53 <adu> oerjan: what?
23:17:07 <adu> o descriptions
23:17:22 <faxathisia> you ever wrote your own macro system in lisp?
23:18:27 <ehird> Deewiant: you said a hash table is a good choice for fungespace
23:18:30 <oklokok> 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 <ehird> what about an N-dimensional sparse array? :D
23:18:56 <lament> faxathisia: are macroexpansion rules written in lisp?
23:19:00 <adu> FungeSpace doesn't resemble a hash table AT ALL
23:19:01 <slereah__> I like that Schönfinkel. He's got the eso spirit.
23:19:30 <adu> well it depends on what the indexing domain is
23:19:42 <adu> if anything FungeSpace could only be indexed by polynomial-like objects
23:19:58 <ehird> adu: CCBI uses a hash table.
23:20:01 <adu> because (1, 0) == (1, 0, 0)
23:20:12 <oklokok> adu, just omit zeroes in the end
23:20:20 <oklokok> also, funge uses a fixed dimensino
23:20:24 <adu> oklokok: but thats not how arrays work, thats how polynomials work
23:20:43 <oklokok> adu: i don't see your point
23:21:23 <ehird> Deewiant: away again? :p
23:21:31 <ehird> [22:21] [Away] Deewiant is away: Zzz.
23:21:36 <oklokok> 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 <ehird> adu: what about a sparse N-dimensional array
23:21:49 <ehird> does that sound like a good fungespace :)
23:22:07 <ehird> (I am supporting N-funge :D Just need to figure out how to represent N>2 in text, eh.)
23:22:12 <adu> 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:15 <oklokok> ehird: sparse array is a loose concept
23:22:22 <ehird> oklokok: your mom is sparse
23:22:26 <ehird> and a loose concept
23:23:12 <ehird> maybe I should use a Judy Array
23:23:17 <oklokok> adu: okay, a hashtable is bad for FungeSpace in case the implementer has no idea what dimensions are, true.
23:23:51 <ehird> http://judy.sourceforge.net/doc/JudyL_3x.htm
23:24:25 <adu> Polynomials: 1 + 0x == 1 + 0x + 0x^2 both mathematically, and in FungeSpace, so it is quite appropriate
23:25:05 <oklokok> adu: true, i never said it wasn't, i'm just saying it's very irrelevant
23:25:35 <ehird> adu: but yeah. sparse N-dimensinoal array == good fungespace?
23:25:44 <oklokok> well, i guess it was a good point polynomials are perfect indices for n-dimensional arrays
23:25:50 <adu> ehird: pretty much
23:26:21 <faxathisia> polynomials of degree <= n = tuples of length n
23:26:41 <oklokok> ehird: but isn't "sparse array" just a term specifying the problem, not a solution?
23:26:49 <ehird> oklokok: I think numpy has something for it. :|
23:26:58 <adu> but just as with arrays, there are mathematical constructs that limit the degree/length... o well
23:26:59 <ehird> And also when I do my C impl
23:27:04 <ehird> Judy arrays seem interesting: http://judy.sourceforge.net/doc/JudyL_3x.htm
23:27:54 <ehird> adu: any thoughts on judy arrays?
23:27:55 <faxathisia> It's a fundamental theorem in vector spaces
23:28:08 <adu> ehird: i'm reading
23:28:11 <faxathisia> (I just can't remember the name of it :S)
23:28:14 <oklokok> faxathisia: but i'm guessing you need to be doing it (mod something)
23:29:00 <faxathisia> http://www.mathreference.com/top-ban,rn.html
23:29:18 <oerjan> faxathisia: basis theorem perhaps?
23:30:00 <oerjan> although i may have made up that name on the spot
23:30:40 <adu> i think Glib hash tables are slightly more useful
23:30:42 <adu> http://library.gnome.org/devel/glib/stable/glib-Hash-Tables.html
23:30:56 <oklokok> oerjan vaguely knows everything
23:31:10 * oerjan vaguely knew oklokok would say that
23:31:52 <ehird> adu: fungespace consists of 0-255, right?
23:32:10 <adu> ya one byte per index
23:32:17 <oerjan> 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 <adu> although i think it is allowed to grow past 255 during computation, the 255 restriction is on source files iirc
23:33:29 <ehird> adu: up to what value?
23:33:34 <ehird> the general befunge 'word'?
23:33:59 <adu> "What size exactly is left up to the implementer. 32 bits is typical."
23:34:48 <oklokok> it's like two years since i coded in a language without bignums :<
23:34:51 <oerjan> 'alf a bit, and a trit hand a half
23:35:00 <oklokok> well, except java, but i don't count that as a language, or as programming
23:35:15 <oerjan> surely java has bignums... somewhere
23:35:18 <adu> oklokok: why do you say that?
23:35:42 <oklokok> oerjan: sure, but you can't overload operators, so they're not that fun to use
23:35:52 <adu> oklokok: amen
23:35:58 <oklokok> i'm less productive in it than i am in befunge
23:36:08 <oklokok> and i've written one befunge program, and about 200 java progs
23:36:32 <oklokok> well, naturally that was helluva overstatement, but considering what befunge is, it's too true.
23:36:43 <adu> both Java and C# would be so great if they were designed and developed by opensource ppl from the beginning
23:37:03 <oklokok> (the productivity thing was an overstatement, that is)
23:37:19 <AnMaster> <ehird> adu: fungespace consists of 0-255, right?
23:37:50 <adu> but alas the great giants have spoken, and now we must suffer or use C
23:38:10 <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
23:38:10 <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.
23:38:39 <ehird> and the spec is free
23:38:48 <ehird> and so is dmd/s frontend
23:38:51 <AnMaster> oklokok, the frontend yes, the backend no, but someone took the frontend and made it usable with gcc
23:38:53 <ehird> but the backend contains e.g. code form other sources
23:39:03 <ehird> oklokok: 'gdc yes'
23:39:14 <ehird> AnMaster: yep - that's gdc
23:39:20 <ehird> oklokok: but since ther eis a formal spec..
23:39:26 <ehird> and a free implementation
23:39:32 <ehird> the only non-free bit is the dmd backend.
23:39:42 <ehird> & it can't legally BE free atm
23:40:24 <AnMaster> <adu> although i think it is allowed to grow past 255 during computation, the 255 restriction is on source files iirc
23:41:15 <adu> I think we should reimplement all UNIX in D or Factor or Haskell
23:41:39 <ehird> you don't have to do any command line checking -- you know the file you get will be correct
23:42:11 -!- jix has quit ("CommandQ").
23:42:29 <AnMaster> ehird, no more crashes, because crashes are side effects, they wouldn't be allowed in haskell XD
23:43:04 <ehird> AnMaster: Well presumably you'd have the IO monad somewhere. :P
23:43:07 <AnMaster> anyway I'm getting fingerprints working in cfunge now
23:43:12 <ehird> But it is true that haskell should not crash.
23:43:20 <ehird> But when you get low-level..
23:43:35 <AnMaster> ehird, yet the most unstable irc bot I've seen, is one written in haskell, it is crashing a lot
23:43:58 <AnMaster> called lambdabot iirc, used in #friendly-coders
23:44:05 <oklokok> perhaps you should see oklobot
23:44:19 <oklokok> it's in C++, and it doesn't hide it!
23:44:28 <AnMaster> debugging wtf is going on with loading and unloading fingerprints in cfunge
23:44:35 <ehird> haha, lambdabot is great
23:44:38 <oklokok> AnMaster: lambdabot is great
23:44:40 <ehird> AnMaster: dude, lambdabot is really solid code
23:44:51 <faxathisia> lambdabot is probably the most useful bot in existence
23:44:59 <ehird> AnMaster: its Cale's fault
23:45:02 <ehird> he sucks at keeping it up
23:45:02 <AnMaster> ehird, ok, the one with the nick lambdabot however seems to crash a lot
23:45:24 <ehird> He also breaks random things. :)
23:45:36 <ehird> AnMaster: the nick 'lambdabot' on freenode host
23:46:15 <ehird> AnMaster: yea. blame cale
23:46:22 <oerjan> yeah lambdabot does crash :(
23:46:24 -!- adu has quit ("Computer went to sleep").
23:46:35 <ehird> AnMaster: THE NICK LAMBDABOT ON FREENODE'S HOST
23:46:49 <AnMaster> ehird, so the bot crashes because of the bot?
23:46:50 <oerjan> it did so long before cale took over recently though
23:47:03 <ehird> AnMaster: The bot crashes because of the guy who runs the instance that goes on freenode
23:47:32 <ehird> oerjan: still not really lambdabot code's fault in most cases ;)
23:47:36 <AnMaster> <AnMaster> and who is cale <ehird> AnMaster: THE NICK LAMBDABOT ON FREENODE'S HOST <-- sounded to me like the bot was cale
23:47:48 <AnMaster> instead of cale being the owner of the bot
00:00:00 -!- BMeph has joined.
00:01:13 <AnMaster> ehird, yay cfunge just got it's first fingerprint!
00:03:24 -!- olsner has quit ("Leaving").
00:09:32 <ehird> AnMaster: cfunge is mine
00:11:24 <lament> are you both writing befunge compilers?
00:13:02 <ehird> lament: not compilers
00:13:04 * oklokok is writing a befunge compiler, at least :P
00:13:08 <ehird> befunge-98 interpreters
00:13:21 <ehird> because we decided that one conforming interpreter was just not good enough
00:13:25 <ehird> undersaturated market
00:13:32 <lament> oklokok: in what language, to what language?
00:13:50 <ehird> AnMaster: i'll pay you moneys if you rename your interp
00:13:54 <ehird> nm renaming the inter
00:13:57 <oklokok> lament: are those options?
00:13:58 <ehird> just let me have CFUN
00:14:08 <ehird> i'll let you have CFNG
00:14:11 <lament> oklokok: what do you mean?
00:14:16 <oklokok> what do you mean threaded, threaded as in am i going to implement befunge threads?
00:14:33 <lament> what's your compilation strategy?
00:14:58 <lament> how are you making it different from just bundling an interpreter with initial source state?
00:15:18 <oklokok> 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:34 <lament> oh, so you're ignoring self-modifying code?
00:15:40 <lament> that's... pretty pointless :)
00:16:13 <lament> although i remember there was a guy who made a brainfuck interpreter that didn't do loops
00:16:26 <oklokok> that's ver very different, though
00:16:29 <ehird> only handles one level of nested loops
00:16:41 <oklokok> befunge is usable without self-modification
00:16:45 <ehird> AnMaster: if you use int_fastest32_t or whatever
00:16:51 <ehird> how do you make sure stuff doesn't exceed 32 bits? :|
00:17:10 <oklokok> actually i might even say it's better without it.
00:17:22 <lament> easier to compile, certainly :)
00:17:43 <oklokok> i haven't done a lot of befunge, just generally don't see many uses for self-modifications
00:17:49 <ehird> i.e. you do total stack removal
00:17:52 <ehird> if so, that's cool
00:17:58 <ehird> oklokok: befunge-93? if so that's not TC :(
00:18:10 <AnMaster> <ehird> AnMaster: i'll pay you moneys if you rename your interp
00:18:25 <oklokok> ehird: sure is, you can do "p"
00:19:11 <lament> ehird: befunge-93 is not tc without modification?
00:19:17 <ehird> lament: of course..
00:19:31 <oklokok> 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 <AnMaster> ehird, I even plan to rename it to just cfunge, as it isn't just one version
00:19:37 <ehird> AnMaster: you're sitting there whining 'RELEASE' every 2 seconds like putting a tarball on http:// is some magical ritual
00:19:41 <oklokok> so it's not like it's hard to add later
00:19:51 <oklokok> i'm just not planning it in this version, because i don't see how that's important
00:20:30 <ehird> Befunge-93 is NOT tc
00:20:40 <ehird> 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 <ehird> 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:42 <oerjan> MUNUS SIGSIGGA TAR BALLA YE...
00:21:19 <oklokok> ehird: anyway, even with the limitation that the stack cannot grow, it is tc with an infinite grid.
00:21:36 <lament> ehird: obviously i meant with an infinite grid
00:21:37 <oklokok> in case that was your point with the "<ehird> oklokok: befunge-93? if so that's not TC :(" thing
00:21:47 <lament> ehird: with the 80x25 grid, it's not TC with or without self-modification
00:21:52 -!- timotiis has quit ("leaving").
00:22:08 <oklokok> lament: except with bignums
00:22:28 <oklokok> (i make such useful points!)
00:22:37 <ehird> lament: Befunge-93 specifies 80x24.
00:22:49 <lament> oklokok: ehird has you beat :)
00:24:08 <ehird> oklokok: I decided to do something like yours
00:24:18 <ehird> using a dict and lambdas for the instruction table
00:24:22 <ehird> '+': lambda: '(%s+%s)' % take(2),
00:24:28 <ehird> take(N) is the magic
00:24:36 <ehird> it gives you a sequence of the N top elements of the stack
00:26:23 <oklokok> ehird: cool, i was thinking our tradition of stealing each others' ideas was over :P
00:26:36 <ehird> just like the good ol' days
00:27:23 <ehird> oklokok: take(N) will be pretty crazy when you can't remove a stack
00:27:28 <ehird> it'll include destructive function calls
00:27:52 <oklokok> i'm not sure how exactly you use that
00:28:15 <ehird> oklokok: in the compiler, take(N) will give you a list of strings, length N
00:28:26 <ehird> each string will be some python code that when evaluated, will give a stack element
00:28:30 <ehird> the stack element of this number:
00:28:39 <ehird> so, take(2) givse you: [top, top-1]
00:28:45 <ehird> where the elems are python strings of python expressions
00:28:54 <ehird> which, when evaluated, give you the top and second-top expressions relatively
00:29:18 <ehird> +'s take(2) will get it ["2","2"]
00:29:30 <ehird> then -'s take(2) will get it ["(2+2)","1"]
00:29:51 <ehird> oklokok: I am just doing 1-dimensional non-TC funge so I can prove I can eliminate a stack 99% of the time
00:30:07 <oklokok> ehird: the problem is really when you start having loops
00:30:27 <oklokok> rpn -> infix is fairly simple otherwise, seems yours just does that
00:30:51 <ehird> oklokok: oh, wait, yeah, it is equivilent to that
00:31:05 <oklokok> 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:32:40 <ehird> AnMaster: Challenge. If you cannot give my C-funge interpreter a good name, you must change yours.
00:34:04 <oklokok> sorry, AnMaster, i'm not helping :<
00:35:05 <lament> man, it's impressive how similar forth and lisp are
00:35:14 <lament> (reading the hyperspec, low-level reader details)
00:35:35 <oklokok> is it the same, but all sentences are reversed?
00:35:42 <ehird> lament: R5RS! R5RS!
00:35:51 <AnMaster> ehird, what is special with your one
00:36:05 <ehird> AnMaster: it supports N-funge for all N>1
00:36:10 <ehird> and is really fucking cool
00:36:15 <AnMaster> ehird, but I know two good handprints: R2D2 and C3PO
00:36:23 <lament> ehird: i'm not talking about scheme :)
00:36:25 <ehird> lament: Revised^5 Report on the Algorithmic Language Scheme
00:36:37 <ehird> Revised Revised Revised Revised Revised Report on the Algorithmic Language Scheme
00:36:43 <AnMaster> ehird, what do you think of those?
00:36:46 <ehird> lament: r6rs is bloated
00:36:53 <ehird> AnMaster: totally not as cool as cfunge
00:37:13 <AnMaster> ehird, anyway I won't change mine, that's final, but well what about NFUN?
00:37:21 <oklokok> AnMaster: call yours "an funge"
00:37:40 <oklokok> that would be a fun inside joke on a channel
00:37:50 <oklokok> not here, but at least i would laugh!
00:37:50 <lament> ehird: it's not bloated, it _has a standard library_
00:38:05 <ehird> AnMaster: I can call mine ehfunge if you call yours anfunge.
00:38:11 <ehird> Anfunge is a pretty cool name actually.
00:38:18 <ehird> If I were you I'd probably call mine that.
00:38:20 <lament> ehird, AnMaster: duel!
00:38:21 <AnMaster> ehird, what about youmomoafunge?
00:38:33 <ehird> AnMaster: don't you think anfunge is a cool name :| i do
00:38:36 <oklokok> okay, whoever's interp is faster wins the name?
00:39:06 <AnMaster> oklokok, currently mine is very fast, about twice as fast as CCBI or, on my system 3 times as fast
00:39:10 <ehird> oklokok: capitalization is hardly important :)
00:39:29 <oklokok> ehird: well, so is hardly your mother
00:39:42 <oerjan> ehird: you could use the same name, differently capitalized. :D
00:41:58 <faxathisia> unfunge since it will remain unfinished at this rate
00:42:10 <oerjan> Compiler for unbounded n grid, Ehird
00:42:28 <oerjan> or was that interpreter
00:43:17 <AnMaster> ehird, anyway I already registered this on freshmeat, so hard to change
00:43:46 * oklokok is trying to incorporate "your mother", "long kok" and "coming from" in the same pun
00:43:49 <ehird> AnMaster: not hard to reregister
00:44:09 <slereah__> My long kok is coming from your mother.
00:44:46 <oerjan> but it could be Ok-lounge
00:45:16 <AnMaster> ehird, anyway as I said it is kind of too late then :/
00:45:38 -!- olsner has joined.
00:45:48 <ehird> AnMaster: I said, no it's not
00:45:56 <ehird> AnMaster: re-registering is not hard.
00:48:59 <ehird> what is the befunge terminology for a word?
00:52:58 <AnMaster> ehird, also, sf.net project request
00:53:17 <ehird> AnMaster: don't use sourceforge.
00:53:35 <ehird> AnMaster: 1. sourceforge is ironically closed-source, and costs big moneys
00:53:43 <ehird> 2. its interface &co. are really inferior to alternatives
00:53:50 <ehird> 3. the requests take ages. wtf.
00:53:52 <AnMaster> ehird, it is the largest one still
00:54:09 <AnMaster> faxathisia, indeed, and a nice url for it
00:54:13 <ehird> AnMaster: oh, it's large. that means it's good. Obviously.
00:54:23 <AnMaster> ehird, yes high google ranking
00:55:20 * pikhq recommends the GNU Savannah
00:55:33 -!- Sgeo has joined.
00:55:41 <AnMaster> pikhq, I will do source code hosting myself
00:55:44 * ehird recommends google code
00:55:54 <AnMaster> and then only alternative would be sucky launchpad
00:56:04 <ehird> AnMaster: high google ranking? why do you care about that for a befunge interp
00:56:12 <ehird> you'll get more traffic from the esolang wiki
00:56:48 <pikhq> On a side note: PEBBLE is in DMoz. :)
00:58:35 <pikhq> 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 <AnMaster> pikhq, 1) what is PEBBLE and 2) what is DMoz?
00:59:40 <AnMaster> ehird, as for esolang wiki, already added there :)
00:59:56 <pikhq> http://pikhq.nonlogic.org/pebble.php
01:00:07 <AnMaster> official name is now cfunge without 08, as I'm implementing 93 and 98 as well
01:00:07 <pikhq> DMoz is the Open Directory Project.
01:00:20 <pikhq> Then why did you ask?
01:00:43 <Slereah> What was added to the fantasmesoteric wiki?
01:00:47 <ehird> pikhq: So he can retroactively claim he knows after being told.
01:01:19 <AnMaster> didn't remember what it was exactly
01:07:39 <oklokok> i didn't know about dmoz OR freshmeat
01:08:02 <oklokok> i'm not into popular culture
01:08:15 <pikhq> Hmm. If I'm on Freshmeat, too. . .
01:09:13 * oklokok did know about sourceforge!
01:09:21 <oklokok> not that i've ever used it
01:10:37 <oklokok> hmm... i probably have downloaded something from there
01:12:10 <AnMaster> and launchpad (as I actually use bzr)
01:16:23 -!- oerjan has quit ("Good night").
01:17:25 -!- Deformati has joined.
01:21:09 <faxathisia> I heard it was not read it myself though
01:21:54 <Slereah> I'm thinking of buying "Combinatory logic"
01:22:00 <Slereah> And there's no review on Amazon.
01:22:32 <Slereah> 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 <oklokok> [02:17:14] <Slereah> Are Haskell's book good?
01:32:42 <oklokok> [02:19:59] <faxathisia> I heard it was not read it myself though
01:32:52 <oklokok> took me quite a while to parse these
01:33:10 <oklokok> perhaps i'm a bit too tired
01:37:08 <oklokok> hmm, the powder has fossilized because i've been eating it with a spoon
01:37:17 <oklokok> 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:39:21 -!- Deformative has quit (Read error: 110 (Connection timed out)).
01:39:24 <oklokok> (i actually both misread and mistyped your nick's suffix)
01:41:06 -!- oklokok has changed nick to oklo.
01:41:57 <GregorR-L> Better than my previous GregorRead-Write (GregorR-W)
01:43:33 <ehird> GregorReally-Awesome
01:45:13 <oklo> slereah_: i'm willing to pay that, when can you come?
01:45:20 <oklo> is that for one night, or what?
01:46:07 <slereah_> Depends, do you have the work of Haskell Curry tatooed on your penis
01:46:22 <oklo> no, i just drew a smiley face on t
01:46:54 <oklo> that's actually true, quite coincidental you should ask that on the only day ever i have something written on it.
01:47:08 <ehird> THIS IS A HAPPY PENIS
01:47:45 <oklo> i feel so small and cute with this nick <3
01:47:53 <ehird> I want a small nick
01:48:53 <ehird> oklo: draw a penis on your penis
01:49:16 <slereah_> Draw the ASCII value of a smiley face on your penis
01:49:20 <oklo> "i have recursion on my penis" must the greatest pick-up line ever
01:49:25 <ehird> the ascii penis smiley
01:49:31 <oklo> it has both sexual predator AND geeky loser
01:49:47 <slereah_> What's the ASCII value for a penis? Is it the value of 8===D?
01:49:57 <ehird> we neeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed qdb.eso-std.org
01:50:05 <ehird> [00:49] <oklo> "i have recursion on my penis" must the greatest pick-up line ever
01:50:05 <ehird> [00:49] <oklo> it has both sexual predator AND geeky loser
01:50:21 <oklo> what are the first?
01:50:26 <ehird> oklo: what is the Big-O complexity of your penis?
01:50:54 <ehird> 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:51:28 <ehird> #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 <ehird> Seems like that idea flopped.
01:51:47 <ehird> #2 is this conversation.
01:52:06 <ehird> #3 is the discussion that we will have later about how meta this conversation is.
01:52:18 <ehird> And #4 is my 'I want a small nick/dick'.
01:52:21 <ehird> slereah_: Satisfied?
01:52:45 <slereah_> Well, I'm naked and we're discussing penis.
01:53:09 <ehird> slereah_: And thus quote #6 is born.
01:53:45 <slereah_> Why don't you just dump the logs on the qdb?
01:54:07 <ehird> not many false positives, you're rihgt
01:55:03 <slereah_> Still. $120 for a book, I hope it's made out of fucking gold.
01:56:05 <oklo> slereah_: are you reading this stuff just for fun?
01:56:17 <slereah_> I sure don't need it to do physics.
01:56:31 <slereah_> Problem with those books is, they're all referencing each others.
01:56:55 <slereah_> I tried to read the Principia Mathematica, and bam
01:57:09 <oklo> well, just perform a topological sort, book referencing graphs are always dags
01:57:54 <ehird> slereah_: Goedel won the PriMat battle!
01:58:05 <ehird> oklo: a mutually-referenced set of books would rock
01:58:38 <slereah_> Well, he only proved it incomplete, not false!
01:59:30 <ehird> slereah_: He defeated its war against recursive sets though
02:00:06 <slereah_> http://membres.lycos.fr/bewulf/Divers2/Set.jpg
02:03:26 <pikhq> 'Recursion: see recursion.'
02:03:37 <ehird> My funge may have to be in C++ for *convenience*. Yeah you heard that
02:03:40 <ehird> Reason: Boost's array libraries
02:04:05 <slereah_> "And by recursive, I of course mean defined by recursion."
02:04:06 <oklo> c++ has a nice name
02:04:18 <pikhq> Incr Tcl has a better one.
02:04:21 <ehird> pikhq: Yeah, please show me a nice sparse N-dimensional array for C. I would really be happy :(
02:04:32 <ehird> pikhq: And [incr Tcl] isn't exactly a speed demon.
02:04:51 <oklo> ehird: we are only discussing names here
02:04:55 <pikhq> I didn't say it was a good bit of code. . . I just said it had a better name.
02:05:06 <ehird> pikhq: Well plz halp :(
02:05:07 <pikhq> SNIT is a fairly speedy bit of code, though.
02:05:08 <oklo> like i have a better name than any of you
02:05:11 <pikhq> (SNIT's Not Incr Tcl.)
02:05:18 <ehird> Anyway, ADD ONE TO COBOL GIVING COBOL wins
02:05:22 <oklo> but i'm still not better than you as a coder
02:05:22 <ehird> BUT back to my question
02:05:44 <pikhq> ehird: Just a sec while I pull my N-dimensional array code out of my pocket.
02:05:49 <pikhq> Ooops, my pocket is imaginary.
02:05:51 <oklo> or better coded, whatever the analogy should be
02:06:10 <ehird> pikhq: Well, just point to me a resource for C.
02:06:19 <ehird> pikhq: Or at least feed me propaganda to convince me not to use C++ for it!
02:06:43 <ehird> I mean, I would use a nicer thing with a nicer thing for that, but ofc C++ will be blazes faster
02:07:08 <ehird> hmm, I think it's actually a sparse matrix I want
02:07:34 <ehird> http://www.boost.org/libs/numeric/ublas/doc/matrix_sparse.htm
02:07:39 <oklo> i once owned a guy in speed, python vs. c++
02:07:41 <oklo> i was the python
02:07:58 <oklo> i was like, lol you suck
02:08:16 <ehird> well yeah, so his code sux
02:08:39 <ehird> oklo: Know any algorithms for sparse N-dimensional arrays? :(
02:09:06 <oklo> what do you need?
02:09:09 <oklo> it's all about interface
02:09:55 <oklo> basically, you can just do a hashmapping
02:10:08 <oklo> you will need to access adjacent cells fast though
02:10:27 <oklo> so, perhaps also do some linked-listing between executable cells, ignoring whitespace
02:10:28 <ehird> oklo: exactly so a hashtable isn't nice
02:10:58 <oklo> well, i do python, nothing is hard
02:10:58 <ehird> AnMaster: can I use AnFunge
02:11:12 <ehird> oklo: how would you do a sparse Nd array then?
02:11:17 <oklo> like what i said
02:11:30 <ehird> 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:49 <AnMaster> ehird, hah sure I guess, I wouldn't care
02:11:57 <AnMaster> I don't name my software like that
02:12:17 <oklo> AnMaster: you *should* name your software like that
02:12:32 <oklo> it's awesome when people put parts of their nick in their software names
02:12:34 <ehird> I need a prefix/postfix/substring.
02:12:41 <ehird> Lio would work I guess
02:12:53 <AnMaster> oklo, comment taken on board, and will be thrown over as soon as we leave harbour
02:13:25 <oklo> AnMaster: funny, but mean!
02:13:32 <AnMaster> oklo, what? my Discworld quote?
02:14:14 * AnMaster is a Discworld geek (not fan, a geek)
02:14:25 <AnMaster> oklo, you read any of those books?
02:14:54 <AnMaster> ehird, err, it's emacs, not RMSmacs :P
02:15:17 <slereah_> But after reading them so many times!
02:15:19 <oklo> AnMaster: most likely not, because i have no idea what you are talking about
02:15:34 <AnMaster> slereah_, oh yes read and reread, Theif of Time is my favourite book
02:15:48 <AnMaster> oklo, a fantasy/satirical fantasy series of books
02:15:50 <ehird> oklo: or would you nest a hash table?
02:15:55 <AnMaster> <AnMaster> oklo, comment taken on board, and will be thrown over as soon as we leave harbour <oklo> AnMaster: funny, but mean!
02:16:09 <ehird> AnMaster: RMSmacs is the name for it when talking about it along with XEmacs
02:16:11 <AnMaster> oklo, it was a quote from "The last continent"
02:16:14 <oklo> ehird: nest a hashtable for each cell to get their neighbors?
02:16:26 <ehird> oklo: no for N dimensions
02:16:29 <ehird> AnMaster: nobody uses that
02:16:49 <AnMaster> ehird, actually I tried sxemacs, because a friend is a developer on it
02:16:59 <ehird> AnMaster: it sucks
02:17:03 <oklo> ehird: like hashtable for each dimension?
02:17:08 <AnMaster> ehird, as for µemacs: Torvalds use it
02:17:38 <ehird> and yeah i know torvalds uses it
02:17:45 <ehird> oklo: {x:{y:...}} or {(x,y):...}
02:17:51 <ehird> the latter is more N-d
02:18:19 <oklo> if befunge had infinite dimensions, and the "tree-structureness" of the FungeSpace was more easily accessible, i would most likely do that
02:19:01 <oklo> i'm not sure what my logic was for that.
02:19:03 <AnMaster> oklo, you would need some changes for that
02:19:27 <oklo> AnMaster: sure, you would need to change the operations.
02:19:45 <ehird> AnMaster: name my funngeeee
02:19:46 <AnMaster> like vectors as: <count>{x,y.z.å,ä,ö,...}
02:19:46 <oklo> it would be very different, and allow very different coding style
02:19:59 <AnMaster> ehird, no idea, what about nfunge?
02:20:44 <oklo> ehird: {x,y:...} and {x:{y:...}} are both good
02:21:03 <oklo> i just don't like the latter as much, because it's less symmetric, even though it should conceptually be symmetric
02:21:04 <AnMaster> oklo, for hash? I use vector as key
02:21:16 <oklo> AnMaster: so the first one
02:21:23 <AnMaster> slereah_, aleph-aleph-aleph-0?
02:22:20 -!- slereah_ has changed nick to Slereah.
02:22:22 <AnMaster> oklo, but my hash library should probably be ripped out and replaced
02:22:57 <ehird> my fungespace will be a hash table with F_word[F_dimen] as the key
02:23:02 <ehird> where F_ is my prefix, to be replaced
02:23:09 <oklo> ehird: the problem would be much more interesting if you needed to "find closest existing operation to point p" or something
02:23:18 <oklo> but you don't need really anything for befunge
02:23:19 <ehird> i need that done at runtime
02:23:23 <oklo> just direct addressing
02:23:50 <ehird> shoudl I implement my own hash table?
02:23:58 <ehird> wonder how I should hash the [N]
02:24:03 <AnMaster> ehird, I would suggest n-dimensions, that can grow at runtime
02:24:11 <AnMaster> so a redesign of vector system
02:24:25 <ehird> F_vector_of_dimensions
02:24:51 <oklo> lol, my code has been one line away from ready for like 2 hours
02:24:54 <AnMaster> ehird, however, note that mycology only runs in funges with vectors of size 2
02:25:36 <AnMaster> ehird, so you need some compatibility mode to test those things
02:25:41 <ehird> AnMaster: um hardly
02:25:46 <ehird> just run with '-N 2'
02:26:03 <ehird> and -N 938475 is memoryleakfunge
02:26:10 <ehird> AnMaster: that's optionparsingerrorfunge
02:26:16 <ehird> it has only one interesting program
02:26:22 <ehird> and there are no uninteresting programs
02:27:06 <Slereah> You can't have imaginry dimensions silly man.
02:27:16 <Slereah> How are you going to have a i-tuple!
02:27:39 <AnMaster> Slereah, at least it isn't pi-funge
02:27:45 <ehird> AnMaster: How should I represent N > 2 in source files?
02:27:48 <ehird> i.e. how should I parse them
02:27:54 <Slereah> You can do real dimensions.
02:28:04 <Slereah> You just need a set with aleph 1!
02:28:17 <AnMaster> ehird, hm I think trefunge uses a form feed
02:28:32 <ehird> AnMaster: is that standard?
02:28:49 <oklo> 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 <ehird> but i'd need infinite chars to handle infinite dimensions
02:28:53 <AnMaster> "In Trefunge-98, the Form Feed (12) character increments the z coordinate and resets the x and y coordinates to zero."
02:28:58 <AnMaster> ehird, from http://catseye.tc/projects/funge98/doc/funge98.html#Quickref
02:29:00 <ehird> AnMaster: wait, ^Z^Z is always invalid right?
02:29:07 <ehird> it just means that that dimension is empty
02:29:19 <ehird> I thought: ^Z incrs Z, ^Z^Z incrs <one up form Z>
02:29:23 <ehird> but that won't work
02:29:26 <ehird> since ^Z^Z is well defined
02:29:43 <AnMaster> 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:30:14 <AnMaster> ehird, what I suggest: custom format for those extra
02:30:15 <ehird> AnMaster: is there any unused funge character?
02:30:22 <oklo> ehird: you can only set values in positions with positive coordinates
02:30:28 <oklo> for all X, Y and X
02:30:33 <AnMaster> ehird, all from space to ~ are in use
02:30:56 <ehird> AnMaster: I will use (char)dimension(char)
02:30:57 <oklo> you cannot go up, but you cannot go left either.
02:31:01 <ehird> where dimension is decimal
02:31:04 <ehird> and shows how many to go up
02:31:22 <AnMaster> ehird, http://fluffy.ecs.soton.ac.uk/bequnge/examples/example5d.beq
02:31:40 <ehird> by which I mean the 4d quiv of Z -- the axis it adds
02:31:42 <ehird> and will up the axis that IT adds
02:31:44 <ehird> but you can still use (char)1(char) and ^Z to do lower ds
02:32:06 <AnMaster> ehird, a variant used by the very "wow"-effect opengl 105-dimension funge bequnge
02:32:06 <AnMaster> http://fluffy.ecs.soton.ac.uk/bequnge/screenshots.php
02:32:11 <AnMaster> ehird, fails mycology however :P
02:32:45 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
02:32:49 <AnMaster> ehird, http://fluffy.ecs.soton.ac.uk/bequnge/examples/example5d.beq ?
02:33:35 <ehird> I don't like that idea
02:33:38 <ehird> it's impure somehow
02:34:19 <ehird> AnMaster: or 29 group seperator
02:34:50 <AnMaster> say: {vertical tab, size of number describing size of numbers of dimension, dimension }
02:35:21 <AnMaster> because it may be hard to know how large the number would be
02:36:36 <ehird> vertical tab NUMBER veritacal tab
02:36:56 <AnMaster> ehird, how do you do vertical tab in emacs?
02:37:04 <ehird> AnMaster: hm \1 is start of heading
02:37:09 <ehird> maybe something like:
02:37:32 <ehird> I mean the ascii char 1
02:37:50 <AnMaster> ehird, wtf is the ascii char \1 btw?
02:37:57 <ehird> AnMaster: http://www.asciitable.com/
02:38:12 <ehird> AnMaster: the byte value of the char!!
02:38:16 <ehird> never used a programming language?!
02:38:20 <ehird> AnMaster: uh, who cares
02:38:25 <ehird> i'll interpret it as "start of header"
02:38:28 <ehird> and use it for headers
02:38:31 <ehird> at start of the file:
02:38:58 <ehird> those make no sense :)
02:39:11 <ehird> because there is ^Z
02:39:15 <AnMaster> "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 <AnMaster> 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:23 <ehird> increments the d-4
02:39:31 <ehird> so, at start of file
02:39:37 <ehird> \1, D, \n specifies the dimensions
02:39:53 <ehird> I will think about it
02:39:58 <ehird> Maybe actually something lightweight
02:40:04 <ehird> will sleep over it
02:40:05 <AnMaster> ehird, considering that was closed to how it was used :)
02:41:11 <oklo> lol, took me 3 hours to write my 59 line parser from befunge to a graph :D
02:41:33 <oklo> perhaps i should close irc.
02:42:18 <oklo> irc is a chat protocol
02:42:42 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net).
02:42:42 <ehird> AnMaster: eliminates the befunge-93 stack
02:42:47 <oklo> just parses befunge to a graph from nodes to nodes
02:42:54 <oklo> ehird: not yet.
02:43:16 <AnMaster> oklo, very interesting, how will you support p however?
02:43:21 <ehird> AnMaster: he won't
02:43:28 -!- ehird has quit ("Konversation terminated!").
02:43:44 <AnMaster> oklo, but it must run under NX
02:43:57 -!- lifthrasiir has joined.
02:43:58 <oklo> if p is used on a command, it will just not change the semantics of the code
02:44:17 <AnMaster> oklo, um, it is valid to use p to set a non-command
02:44:19 <oklo> basically, in this version you will just have a separate fungespace for storing data.
02:44:37 <oklo> (which in my opinion is much better, in practise)
02:44:38 <AnMaster> oklo, and also, invalid instructions should be allowed, and reflect at runtime
02:44:57 <AnMaster> oklo, so self modifying won't work?
02:45:14 <oklo> not yet, but it's just a matter of reparsing parts
02:45:32 <AnMaster> oklo, need to pass b93 part of mycology :)
02:45:46 <oklo> 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 <oklo> because parsing the whole program again would make no sense
02:46:12 <oklo> but i'll think of something,.
02:46:31 <oklo> mycology was your deewiant's test suite?
02:46:33 <oklo> or what was it
02:46:42 <AnMaster> oklo, it's the best test suite around yes
02:46:49 -!- Slereah has joined.
02:47:06 <AnMaster> oklo, and what did "my deewiant's" mean?
02:47:29 <AnMaster> oklo, just he is damn useful to ask questions
02:47:35 <oklo> i was gonna write you test suite, then realized it was deewiant's
02:47:51 <AnMaster> oklo, indeed, I can't write that complex code
02:48:09 * AnMaster wonders why cfunge now hangs at:
02:48:11 <AnMaster> Testing fingerprint ROMA... loaded.
02:48:33 <oklo> because you said "i would use self-modification in befunge", i assumed you haven't actually used it much
02:48:53 <oklo> because you would've either said "i use it" or "i don't use it, but it's CEWL" otherwise
02:49:08 <AnMaster> oklo, but I have used it slightly
02:49:20 <AnMaster> most I have written so far have been simplified test cases
02:49:32 <AnMaster> oklo, oh with concurrent funge it is very important
02:49:57 <oklo> can you help me get my brain started as to... why?
02:50:26 <AnMaster> so you could make the other ip wait for < to be removed
02:50:42 <oklo> okay, i should've seen that
02:50:54 <AnMaster> oklo, there are loads of other examples, even in non-concurrent funge
02:51:29 <oklo> 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 <oklo> mutexes should be compiled to something with flags.
02:51:52 <AnMaster> oklo, t instruction for concurrency is optional of course
02:52:07 <oklo> solving impossible problems is the best <3
02:53:16 <AnMaster> oklo, and of course for storing scratch data, p/s is very useful
02:53:36 <oklo> well, as i said that will ofc work already
02:53:52 <AnMaster> oklo, oh yes another thing: 'vs r
02:54:15 <AnMaster> push a v on stack, then set char after s to that, then reflect on r and hit the v
02:54:24 <AnMaster> the first time the v won't execute
02:54:33 <oklo> forgot what "'" is
02:54:45 <AnMaster> oklo, hehe, and s is set next char
02:55:00 <AnMaster> oklo, oh and don't forget sudden x
02:55:13 <oklo> hmm, stuff like that will be *very* hard to do without recompiling or interpreting, but i like a challenge
02:55:49 <oklo> meaning jump to some place in code?
02:55:52 <AnMaster> means suddely ip moves in a non-cardinal
02:56:16 <oklo> set absolute ip position?
02:56:31 <oklo> or what does "absolute vector" mean?
02:56:32 <AnMaster> oklo, not position, but say set delta for instruction pointer to say: x=+5,y-2
02:56:48 <oklo> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
02:57:06 <AnMaster> a 93 compiler is easy compared to 98
02:57:16 <oklo> okay, okay, i won't even aim at 98 then, at first.
02:57:32 <AnMaster> oklo, thats good, I did 93 first in cfunge too
02:57:39 <oklo> can you do random *jumps* in 93?
02:57:44 <oklo> because that's just as shitty.
02:57:48 <AnMaster> oklo, you can do random direction changes
02:58:13 <AnMaster> oklo, but you can't do longer jumps I think
02:58:21 <oklo> if you have a constant number of places to jump randomly, it's trivial
02:58:29 <AnMaster> oklo, there is # to jump over on of course
02:58:47 <oklo> if you have a constant number of places to jump randomly, it's trivial
02:58:53 <AnMaster> in 98 there is also things like: 5j, will jump forward 5 spaces
02:59:30 <AnMaster> but still you can't know where the stuff for j comes from
02:59:50 <AnMaster> like say randomly generated using some instructions with ?
03:00:03 <AnMaster> oklo, I got a random number generator somewhere let me look
03:00:21 <oklo> no need, it's fairly trivial :)
03:00:37 <AnMaster> http://rafb.net/p/6Trzmm34.html
03:00:53 <AnMaster> oklo, a friend made it as a test case for my broken j handling when wrapping
03:01:22 <AnMaster> oklo, due to use of j it isn't 93
03:01:33 <AnMaster> oklo, oh btw ; in 98 is "jump over" as in comment
03:02:07 <AnMaster> oklo, can think of some evil using with ; and p to put it there or remove the ;
03:02:28 <AnMaster> oklo, oh I seen programs that copies themself around fungespace btw
03:02:54 <AnMaster> copy from one place to the next and delete old copy and so on
03:03:16 <oklo> yeah... i'm beginning to see uses for self-modification...
03:03:30 <AnMaster> oklo, there are many in befunge
03:03:44 <AnMaster> funges was made to be almost impossible to compile
03:03:49 <oklo> basically i just didn't want to implement it, and decided it's useless.
03:03:59 <oklo> without giving much thought
03:04:48 <oklo> a befunge program looping by quining might be fun
03:04:52 <oklo> probably many exist
03:05:06 <AnMaster> oklo, some ideas: http://quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/#files
03:05:23 <AnMaster> oklo, there are a few quines there iirc
03:05:43 <AnMaster> Befunge-98 'TURT' fingerprint quine is my favourite, it draws itself :D
03:08:17 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
03:11:24 <AnMaster> oklo, as you can see, quite complex
03:11:50 <AnMaster> oklo, if you could manage those without reparsing, I would be impressed
03:12:02 <oklo> that will be one of my goals for life
03:13:27 <oklo> TODO before I die:
03:13:27 <oklo> - make a befunge compiler without an existing program that needs jit compilation
03:13:46 -!- slereah_ has joined.
03:14:03 <oklo> i'll add something easier there, so i won't feel like a loser on my deathbed
03:14:17 <oklo> TODO before I die:
03:14:17 <oklo> - make a befunge compiler without an existing program that needs jit compilation
03:15:07 <oklo> male searching for female
03:15:17 <oklo> age 19, location finland
03:16:11 <oklo> well, it was a joke, but who says everything on that list should be something i *want* to do.
03:16:45 <GregorR-L> 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:17:12 <oklo> GregorR: sure :D
03:17:30 <oklo> slereah_: yes, - slereah is the next line.
03:18:59 <oklo> "- kill someone"?
03:19:09 <AnMaster> oklo, so you given up on befunge compiler or?
03:19:13 <oklo> this list may not be such a great idea after all.
03:19:31 <oklo> it's just irc gets all my attention when i'm not in my coding mood.
03:19:39 <oklo> if something happens there
03:20:03 <oklo> AnMaster: well, i don't even have the possibility of jit in my current one
03:20:04 <AnMaster> oklo, basically it is impossible to design a befunge compiler that does NOT need jit
03:20:15 <AnMaster> sure for most common cases you can do reparsing/ijit
03:20:17 <oklo> it's self-modification i'm not implementing right away.
03:20:37 <AnMaster> or even some optimizing it to other ways
03:20:40 <oklo> AnMaster: ofc it isn't possible, but it is possible to do for programs that don't explicitly prevent it.
03:21:10 <AnMaster> oklo, indeed, if it doesn't execute the instruction, you don't need to reparse it
03:21:28 <oklo> 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 <AnMaster> oklo, wait, it may be possible for 93, just compile every 255 * 80 * 25 possible program in?
03:22:31 <oklo> but you were clse
03:22:58 <oklo> not much difference between 256^(80*25) and 255*(80*25)
03:23:00 <AnMaster> argh TI83+ says "out of range" on that one
03:23:38 <oklo> i would paste it but it's two pages.
03:24:37 <oklo> that's not that much
03:24:58 <oklo> :DDDDDDDDDDDDDDDDDDDDDD
03:25:17 <AnMaster> 19833 is what wc -c says, but well there are newlines in bc output
03:25:28 <oklo> just 4 times more digits
03:25:44 <AnMaster> 60446271881373363749686324996264600587316128857473138638394640922597\
03:25:44 <AnMaster> 35662354247400297810424791071242476818152196097844289638570097624044\
03:25:46 <oklo> (256^n)^(80*24) = 256^(n*80*24)
03:26:52 <oklo> i don't know bc, just wrote len(str((256**4)**(80*24))) in python
03:27:14 <oklo> >>> len(str((256**4)**(80*25)))
03:27:25 <slereah_> It be the length of the string defined by
03:27:45 <oklo> AnMaster: you can read that if you know C
03:27:51 <oklo> ** is exponentiation
03:28:00 <oklo> well, if you know *anything* really
03:28:16 <oklo> who does, it's just so goddamn nice to use <3
03:28:31 <slereah_> You don't even have to know how to program!
03:28:33 <AnMaster> oklo, and in C you would use snprintf to convert to string though XD
03:28:46 <slereah_> Hell, I barely can program and I wrote the Love Machine 9000 on it!
03:28:53 <oklo> AnMaster: i'd use itoa
03:29:53 <oklo> AnMaster: what languages do you use?
03:30:01 <oklo> i wish i was an asm dude
03:30:07 <oklo> but i just don't have the penis for that
03:30:18 <AnMaster> oklo, some misc other things like awk too
03:31:06 -!- calamari has joined.
03:31:07 <oklo> good, good, continue.
03:31:21 <oklo> "go to sleep"?
03:31:26 <AnMaster> oklo, try man bash and man awk
03:31:36 <oklo> i'm on vista now
03:32:41 <oklo> i'm a bit goofy today, sorry
03:33:22 -!- shinku has joined.
03:33:26 <oklo> someone do the imaginary pocket thing again!
03:33:32 <oklo> that was so much fun
03:33:36 <AnMaster> slereah_, just wondering how far it got
03:33:53 <slereah_> I think it was the "talking about it" phase.
03:34:22 <oklo> it has been discussed many times before slereah_ even existed
03:34:33 <oklo> unless slereah_ existed before me, dunno
03:34:56 <AnMaster> or what would the cool thing be
03:35:06 <oklo> something about kernel being written in brainfuck
03:35:21 <oklo> GregorR once said something like "i'll go write it ->", i've been waiting since
03:35:43 <oklo> because at that point, i considered GregorR a god
03:35:47 <AnMaster> slereah_, btw about python: http://xkcd.com/353/
03:36:03 <oklo> nowadays i know so many people better than me i don't deal out that many god positions
03:36:27 <AnMaster> slereah_, "sampled everything in the medicine cabinet" yes
03:36:37 <oklo> hmm, i have the graph, let's do something with it
03:37:18 <slereah_> The only thing I don't like that much about Python is the mandatory indentation.
03:37:25 <oklo> 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 <AnMaster> slereah_, that is the single thing I like about it
03:37:36 <slereah_> I like my end programs to look like goddamn cubes.
03:37:54 <slereah_> http://membres.lycos.fr/bewulf/Russell/TTT3.4.c
03:38:01 <oklo> from future import __braces__ in case someone hasn't seennit
03:38:32 <oklo> i never use that much shitespace.
03:38:43 <oklo> " && ", wtf is that about
03:39:05 <AnMaster> slereah_, that code is 1) unmaintainable 2) unreadable 3) a mess
03:39:14 <oklo> AnMaster: from __future__ import braces ofc
03:39:27 <slereah_> All characters are represented as integers.
03:39:52 <oklo> >>> from __future__ import braces
03:39:52 <oklo> SyntaxError: not a chance (<pyshell#4>, line 1)
03:40:39 <slereah_> Some guy had a programming assignment. The restrictino on that assignment were fucking stupid.
03:40:46 <AnMaster> oklo, interesting: SyntaxError: future feature makethiswork is not defined
03:41:27 <oklo> what's interesting about that?
03:41:37 <AnMaster> oklo, what does __future__ contain?
03:41:50 <oklo> stuff that will be standard in the future, i guess
03:41:56 <oklo> but i don't know anything, i just use it
03:42:17 <AnMaster> oklo, what thinks can you import from it
03:43:42 <oklo> AnMaster: don't remember any.
03:44:05 <oklo> i just use what i have :-)
03:46:04 <oklo> wtf, third time "today" i need a topological sort.
03:46:27 <oklo> "today" as in this period of being awake, there really should be a word for that
03:47:15 <oklo> i'm going to call that "perium" from period / peruneum
03:47:28 <oklo> the latter is just for fun
03:49:00 -!- GregorR-L has quit (Read error: 113 (No route to host)).
03:56:54 <oklo> 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:13 <lament> hint: you don't need any gotos
05:12:18 <oklo> i want to do this with while loops.
05:12:29 <oklo> and continues <3
05:12:41 <oklo> and boolean flags!
05:13:18 <oklo> right now, i'm writing small specs for the two intermediate languages i invented for this :D
05:22:16 <Sgeo> Well, G'night all
05:22:20 -!- Sgeo has quit ("Ex-Chat").
05:40:12 <oklo> http://www.vjn.fi/pb/p423454326.txt <<< see "Problem:"
05:40:55 <oklo> i know it's a confusing spec, i only like designing languages, not explaining them :P
05:41:06 <oklo> well, two confusing specs
05:41:23 <oklo> loopit is kinda pretty
05:43:04 <oklo> basically, this is the problem of compiling befunge to python, only removing the possibility of using something like interpretation or functions.
05:43:37 <oklo> i'll tackle that tomorrow, right now i need to take a walk or something ->
05:44:38 <oklo> 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 <oklo> 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 <oklo> or that i don't need gotos to compile befunge to python?
05:45:45 <oklo> i don't need them as an intermediate form?
05:46:13 <oklo> i'm not that explicitly doing so, i just happen to have the graph representing all possible ip movements.
05:46:24 <oklo> it's basically a program with gotos
05:46:57 <oklo> do you happen to know a trivial way to convert that to a bunch of whiles, ifs, breaks and continues?
05:47:16 <oklo> i have a verrrry complicated way :P
05:49:35 <oklo> lament: did you read my specs? :D
05:49:54 <oklo> they are like, hardcore
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 <lament> bah, scheme is annoying, it doesn't have slime
06:35:48 -!- BMeph has quit (Read error: 110 (Connection timed out)).
07:06:49 <lament> damn, my compiler looks less and less like a compiler and more and more like an interpreter.
07:16:58 -!- calamari has quit ("Leaving").
07:17:08 <lament> ooh, i got a _really_ stupid idea!
07:17:29 <lament> wow this will be retarded.
07:20:03 <lament> 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: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 <AnMaster> 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:14:21 <faxathisia> (wiki says it's an iterated exponential)
15:15:16 <faxathisia> http://upload.wikimedia.org/wikipedia/en/f/f5/Tetration_escape.gif
15:15:31 <oklo> don't they teach tetration in like the first grade
15:15:33 <AnMaster> anyway cfunge now does mycology (including the fingerprints it implement, just four of them) very fast, in average: real 0m0.096s
15:15:55 <AnMaster> 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 <AnMaster> 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 <oklo> it should be taught as young as possible, cuz it's so cool
15:16:16 <AnMaster> faxathisia, looks like a fractal?
15:16:43 <oklo> i like the crab in the middle
15:16:51 <AnMaster> not Mandelbrot though? some other one?
15:17:07 <oklo> and the centipede turtle in the right middle
15:17:12 <oklo> or is it centipurdle
15:17:46 -!- oklo has changed nick to oklofom.
15:18:04 <oklofom> i need to make a randomizer for my suffix
15:18:11 -!- oklofom has changed nick to oklofix.
15:18:42 <AnMaster> oklofix, code it in befunge :)
15:18:58 <oklofix> what was that tetration escape btw?
15:19:05 <oklofix> AnMaster: currently playing with thue
15:19:18 <AnMaster> oklofix, oh? gave up on compiler for befunge?
15:19:28 <oklofix> AnMaster: no, but i'm delaying it
15:19:57 <oklofix> AnMaster: http://www.vjn.fi/pb/p423454326.txt
15:20:38 <faxathisia> is there a proof you can't have a superturing computer?
15:20:42 <oklofix> lol something wrong with the Provider
15:20:50 <AnMaster> oklofix, ;; connection timed out; no servers could be reached
15:21:04 <AnMaster> faxathisia, hm? what would it do?
15:21:14 <AnMaster> faxathisia, being able to solve halting problem maybe?
15:21:24 <oklofix> AnMaster: happens rarely, but seems the page is down
15:21:32 <faxathisia> run some small class of programs not computable on a turing machine
15:21:55 <AnMaster> faxathisia, tell me if you find out :)
15:22:11 <AnMaster> faxathisia, but, would quantum computers be turing or superturing?
15:22:36 <faxathisia> just that you can write algorithms in new ways
15:22:47 <AnMaster> faxathisia, and can do some stuff very fast
15:22:47 <oklofix> AnMaster: pb.vjn.fi is better
15:23:17 <oklofix> i heard something about them possibly being superturing in some sense
15:23:20 <AnMaster> oklofix, I may make some program that puts pastes on my gopher server
15:23:47 <AnMaster> faxathisia, just run it to shock ppl on irc :P
15:24:10 <oklofix> the analogies are, loopit is a subset of python, jumpit is the graph form of befunge i'm trying to compile
15:24:56 <oklofix> are you suggesting the name for my next language?
15:25:03 <AnMaster> when it doesn't work it isn't jumpit or loopit, but damnit
15:25:44 <oklofix> the problem is, almost every program is legal in both those langs
15:26:01 <AnMaster> oh? the problem being "almost"?
15:26:25 <oklofix> i just specified a label cannot start with loop""
15:26:38 <oklofix> so "loop " would not be any clause.
15:26:46 <AnMaster> oklofix, and why is it a problem that "almost every program is legal in both those langs"?
15:26:48 <oklofix> because it's not a label, and it's not a loop clause
15:26:57 <AnMaster> is the problem 1) too many are or 2) there are those that aren't?
15:26:58 <oklofix> AnMaster: problem as in Damnit makes not much sense!
15:27:17 <oklofix> not a serious problem, the serious problem is the one on the last line of the paste
15:27:29 <AnMaster> oklofix, yes read that line, not sure I got it
15:27:34 <AnMaster> Compile Jumpit(M = "Output label", N = "Jump if random(0..1)<0.5") to Loopit with the same parameters.
15:27:49 <oklofix> the parametrization is just for fun :D
15:28:19 <AnMaster> you mean like: "label foo; if (random() % 2) goto foo;
15:28:23 <oklofix> 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:48 <oklofix> N is chosen to be a random choise so that you couldn't just always take the first argument of if
15:29:08 <oklofix> you cannot do that with that N
15:29:33 <AnMaster> or are you talking about something else?
15:29:44 <oklofix> do { foo; } while(random) would be foo; if foo
15:30:12 <AnMaster> oklofix, I don't get the problem, can you express it in C?
15:30:24 <oklofix> while(random) { foo; } bar; would be if bar; foo if foo; bar
15:30:36 <oklofix> *while(random) { foo; } bar; would be if bar; foo; if foo; bar
15:30:57 <oklofix> "if label" means "if ( condition given by N ) jump to label;"
15:31:24 <oklofix> "label" just marks a label, and has the side-effect given by M
15:31:47 <oklofix> you can make it tc for some choises of M and N, most likely, but that is not the point here
15:32:00 <oklofix> we are basically compiling gotos to loops.
15:32:13 <oklofix> at least i tried to create languages where that must be done
15:33:42 <oklofix> do { foo } while(random); in Loopit would be loop; \t foo; \t if *; \t\t continue; \t break
15:35:03 <oklofix> i need to go now, today is thue-day, i'll prolly tackle that problem next week
15:35:08 -!- jix has quit ("CommandQ").
15:35:41 <faxathisia> I can't figure out how to code this without using streams/lazy-lists :S
15:36:08 <faxathisia> Prolog interpreter in a procedural language
15:36:35 <AnMaster> prolog and scheme are both over my head :P
15:36:56 <faxathisia> scheme is just C but you put the bracket before the function name
16:22:40 <AnMaster> Deewiant, UNDEF: the empty string wrapped around the edge of space >' v>1> \v vv v\ >1>v > <v ^
16:22:53 <AnMaster> it works until that happens now
16:23:09 <AnMaster> and then an infinite loop with that message
16:24:59 <Deewiant> well then I guess your optimizations are focked :-P
16:25:07 <AnMaster> Deewiant, tell me what may cause that?
16:25:51 <Deewiant> it puts a " at the eastmost location and westmost location in space, on the same line of course
16:26:34 <Deewiant> if I had to guess, I'd say the westmost " isn't hit
16:26:46 <Deewiant> because it's at X coordinate -10 or so
16:27:16 <Deewiant> and yeah, that's probably what happens
16:27:24 <Deewiant> because then the next " is immediately followed by a r
16:35:09 <AnMaster> 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 <Deewiant> binary search on fingerprints? why?
16:35:50 <Deewiant> if you're given "NULL" then you know NULL is the one to load :-P
16:35:56 <AnMaster> static const ImplementedFingerprintEntry ImplementedFingerprints[] = {
16:35:57 <AnMaster> { .fprint = 0x4d4f4455, .loader = &FingerMODUload, .opcodes = "MRU" },
16:35:57 <AnMaster> { .fprint = 0x4e554c4c, .loader = &FingerNULLload, .opcodes = "ABCDEFGHIJKLMNOPQRSTUVXYZ" },
16:36:19 <AnMaster> as they are sorted it should be easy to find the right one
16:37:21 <AnMaster> Deewiant, anyway I notice no difference in speed with and without fingerprints, even though I use function pointers
16:37:47 <AnMaster> about 0.1 seconds in either case, no significant difference
16:38:02 <AnMaster> of course complex fingerprints will be slower
16:38:51 <AnMaster> Deewiant, src/fingerprints/manager.c :D
16:39:07 <Deewiant> the .opcodes is another optimization?
16:39:20 <AnMaster> not really, it is just a way to know what ones to pop
16:39:38 <Deewiant> I just loop from A-Z and check which ones aren't null :-P
16:40:02 <AnMaster> each extension doesn't export any array of them or such
16:40:35 <Deewiant> I use a global hash table of strings to arrays of function pointers
16:40:36 <AnMaster> see src/fingerprints/MODU/MODU.c for example (yes I based it on your code)
16:40:48 <AnMaster> Deewiant, I thought they were per-IP? hm?
16:41:02 <Deewiant> one global one which is used for loading/unloading
16:41:10 <Deewiant> and then IP just has 26 stacks
16:41:31 <AnMaster> Deewiant, yes but I thought fingerprints was local to the IP?
16:50:59 -!- Sgeo has joined.
16:51:39 <Sgeo> 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:52:26 <faxathisia> Sgeo, that's why I go on IRC.. almost everyone is smarter than me :D
16:55:06 -!- calamari has joined.
16:56:08 <calamari> hi Sgeo.. having fun with your project?
16:56:30 <Sgeo> Haven't touched it in a while, will work on it soon hopefully
17:05:06 -!- calamari has quit ("Leaving").
17:10:31 <AnMaster> Deewiant, I'm documenting my code now, to make it easier to understand :)
17:20:02 <AnMaster> Deewiant, a question: why is the null fingerprint called: null_.d and not just null.d?
17:20:13 <Deewiant> because null is a keyword, doesn't work
17:20:38 <AnMaster> well I could create a file called if.c and it would compile
17:20:50 <AnMaster> of course a variable called if wouldn't work
17:21:09 <Deewiant> yes, because C doesn't have a module system, the preprocessor handles includes and such
17:33:33 <AnMaster> Deewiant, don't claim you aren't a performance hunter too
17:33:50 <AnMaster> your MODU fingerprint does some nice hackish abs optimizing :P
17:34:12 <AnMaster> // http://graphics.stanford.edu/~seander/bithacks.html#IntegerAbs
17:34:12 <AnMaster> auto mask = y >> (typeof(y).sizeof*8 - 1);
17:42:33 <Deewiant> I was probably reading the page at the time :-)
17:48:04 <Deewiant> and hmm, that code is pretty stupid actually
17:54:01 -!- timotiis has joined.
17:54:13 <AnMaster> but I wonder if the gcc abs() builtin is better or not
17:54:55 <AnMaster> Deewiant, anyway is it really faster?
17:55:15 <Deewiant> I think that's what the gcc abs uses internally
17:55:30 <Deewiant> just not the DMD abs, which is probably why it's there :-P
17:55:41 <Deewiant> and no, the difference is probably negligible
17:55:51 <Deewiant> AnMaster: consider that that function is called only once in all of mycology
17:56:18 <AnMaster> so mycology isn't a good test for it
17:59:50 <lament> so compiling befunge in a non-stupid way is difficult.
18:00:38 -!- ais523 has joined.
18:02:47 <lament> that i should compile it in a stupid way instead
18:04:28 -!- Corun has quit ("Leaving").
18:09:29 <AnMaster> 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 <Deewiant> yes, benchmarking isn't easy :-)
18:09:52 <ais523> AnMaster: are you sure that abs isn't a macro in the header file?
18:10:10 <Deewiant> AnMaster: what I suggest is you just write two functions, one which uses that and one which does return abs(x)
18:10:18 <Deewiant> AnMaster: and compare the asm of what they result in with -O3
18:17:20 <AnMaster> http://rafb.net/p/TjTh3R65.html
18:19:17 <AnMaster> Deewiant, doother is your variant
18:19:40 <Deewiant> have a look at http://graphics.stanford.edu/~seander/bithacks.html#IntegerAbs and try both variants
18:21:18 <Deewiant> because from the asm, it looks like that's what GCC's using
18:21:34 <Deewiant> with an extra mov for some reason
18:21:36 <AnMaster> Deewiant, gcc abs is exactly the same as the patented one
18:21:55 <Deewiant> wonder why there's an extra mov
18:21:58 <AnMaster> Deewiant, eh both moves exist in both?
18:22:35 <AnMaster> and dopatent: mov sar xor sub mov
18:22:49 <Deewiant> yeah, so I'm wondering why doabs/dopatent has an extra mov
18:23:08 <AnMaster> Deewiant, may depend on system?
18:23:31 <AnMaster> Deewiant, http://rafb.net/p/l08WdB82.html
18:23:38 <Deewiant> looks like it needs the return value in EDI but it does the math in EAX
18:25:05 <Deewiant> 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:26:06 * AnMaster tries with 64-bit ints to see what happens then
18:26:09 <Deewiant> which is why, if using GCC, it doesn't really matter what you do ;-)
18:27:13 <AnMaster> Deewiant, with int64 they differ
18:27:39 <Deewiant> AnMaster: compiling for your architecture? is it using %rax and co?
18:27:42 <AnMaster> http://rafb.net/p/2znfY915.html
18:27:57 <AnMaster> Deewiant, I mean, donaive differs from abs then
18:28:56 <Deewiant> AnMaster: abs doesn't use 64-bit ints
18:29:32 <Deewiant> and it should look the same again
18:30:00 <Deewiant> gotta be careful with implicit conversions :-)
18:30:19 <AnMaster> yes -Wall or something would have told me, if I had used it
18:30:54 <AnMaster> 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 <ais523> I think it's an old April Fool's joke, but they managed to define a C++-equivalent esolang at the same time
19:53:59 <AnMaster> Deewiant, there? BAD: G gets like g
19:54:30 -!- ais523 has quit ("going home").
19:55:20 <Deewiant> I think the param order was flipped or something
19:55:37 <Deewiant> just google it, the ORTH specs are online
19:55:55 -!- oerjan has joined.
19:57:26 <AnMaster> Cannot test S reliably. If this line begins with "GOOD: ", it worked.
19:57:36 <AnMaster> Deewiant, so now newline after :)
19:59:23 <AnMaster> 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 <Deewiant> if you're teleported outside of space then you wrap back into normal space, no?
20:01:23 <AnMaster> Deewiant, depends, there are issues
20:01:55 <AnMaster> if say, delta is as after a ^, then you teleport sidways, so there is no program above or below
20:02:19 <AnMaster> Deewiant, in wrapping function yes
20:02:25 <Deewiant> if you want to be smart you can check for that and reflect
20:02:31 <AnMaster> at last that's what will happen for me
20:02:40 <Deewiant> but IMHO that's just like writing for (;;) {} :-P
20:03:02 <Sgeo> What's this about "GOOD: "? what langyage?
20:03:13 <AnMaster> Sgeo, test suite for befunge98
20:03:35 <AnMaster> http://rage.kuonet.org/~anmaster/cfunge/
20:03:40 <Deewiant> Sgeo: http://iki.fi/deewiant/befunge/mycology.html
20:03:45 <AnMaster> the mycology test suite: http://users.tkk.fi/~mniemenm/befunge/mycology.html
20:03:54 * Sgeo stole some concept from befunge98 for use in PSOX iirc
20:04:10 <Deewiant> AnMaster: like it says in the corner... "please use this permalink"
20:04:25 <AnMaster> isn't PSOX that network extensions stuff for brainfuck?
20:04:35 <Sgeo> network extensions and file stuff
20:04:40 <Sgeo> and other stuff can be added on easily
20:04:43 <AnMaster> someone said it was crappyly coded, ehird I think
20:04:49 -!- RedDak has joined.
20:04:49 <Deewiant> of course, in IRC, it probably doesn't matter unless you're browsing the logs months later or something.
20:04:59 <Sgeo> and it's not just for Brainfuck
20:05:46 <AnMaster> Deewiant, that's yet another url: "http://iki.fi/matti.niemenmaa/befunge/mycology.html"
20:06:29 <AnMaster> 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 <AnMaster> just to mess up with IMAP as in instruction remapping :D
20:08:40 <AnMaster> Deewiant, what do you think eh?
20:09:48 <AnMaster> Deewiant, one thing, about REFC:
20:09:50 <AnMaster> UNDEF: 12R34R56R pushed the scalars [ 0 1 2 ]
20:12:41 <AnMaster> $ time ./cfunge.opt ~/bashfunge/trunk/mycology/mycology.b98 > /dev/null
20:14:58 <Deewiant> AnMaster: you implemented REFC, you should know :-P
20:15:23 <AnMaster> Deewiant, yes but what it is trying to tell me?
20:15:34 <AnMaster> what series of numbers will returned or what?
20:15:54 <Deewiant> I think it may come up with a BAD if two or more are the same, i.e. [ 0 1 0 ] or somethingh
20:16:13 <Deewiant> but no, it really doesn't matter
20:18:49 -!- oklofix has quit.
20:18:52 <AnMaster> hm I think mine may return a different value if you try to reference it again
20:19:23 <AnMaster> Deewiant, is it supposed to be like that?
20:19:44 <AnMaster> Deewiant, yep, will return 1 and then 2, both 1 and 2 will however point to the same cell
20:21:09 <AnMaster> ok (potential memory leak though)
20:21:09 <Deewiant> REFC is a bit annoying though, because it's always a memory leak
20:21:09 <AnMaster> well if anyone complains I'll fix it :)
20:21:22 -!- ehird has joined.
20:21:23 <AnMaster> you can't even garbage collect it
20:21:25 <Deewiant> there's no defined way of removing old cells
20:21:52 <AnMaster> 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:05 <Deewiant> ehird: the REFC fingerprint sucks because no matter how it's used, it creates memory leaks.
20:22:08 <ehird> fungeh will be so superior
20:22:13 <ehird> Deewiant: refc=refcount?
20:22:36 <AnMaster> ehird, what handprint? FFUN? FUNH?
20:22:48 <ehird> <AnMaster>someone said it was crappyly coded, ehird I think
20:23:08 <ehird> it is pronounced 'fung-ehh'
20:23:13 <ehird> but without the ee
20:23:45 <AnMaster> ehird, anyway even if it is superior, I can make mine better
20:23:59 <ehird> AnMaster: i care so much
20:24:05 <ehird> anyhoo, what does REFC do?
20:24:19 <Deewiant> allows you to reference a pair of cells with one value
20:24:28 <Deewiant> so essentially what you do is you grow an array which contains pairs
20:24:41 <AnMaster> and you can't ever remove them
20:24:46 <Deewiant> and give indices to the befunge program, with which it can access the array
20:24:49 <AnMaster> there is no instruction for that
20:25:02 <Deewiant> and hence the array just grows and grows until the program end.
20:25:11 -!- RedDak has quit (Remote closed the connection).
20:25:12 <ehird> - FungeSpace is a hash table whose keys are vectors of length N where
20:25:12 <ehird> N is the dimension.
20:25:18 <ehird> i will really have to work out how to elegantly do that
20:25:37 <Deewiant> bignum-lengthed vectors? aleph-null-funge? :-P
20:26:04 <ehird> Deewiant: AnMaster: you guys just have to support a few dimensions you have it easy
20:26:10 <ehird> and Deewiant gets all that fancy auto-sizing D stuff too
20:26:21 <ehird> AnMaster: pretty much
20:26:21 <AnMaster> ehird, why not uint32_t for dimension count?
20:26:33 <ehird> AnMaster: 'cause BF_word is used for everything :)
20:26:36 <ehird> I might add BF_uword
20:26:38 <Deewiant> ehird: if you make things hard for yourself don't expect them to become magically easier :-P
20:26:41 <AnMaster> <ehird> and Deewiant gets all that fancy auto-sizing D stuff too <-- it's slower than the same done correctly in C :D
20:26:57 <ehird> but.. i don't think anyone will be using more than 256 dimensions
20:27:02 <ehird> and even that as just a one-prorgam toy
20:27:05 <ehird> like 'the biggest hello world ever'
20:27:05 <AnMaster> ehird, but cfunge is very fast when compiled with right options
20:27:10 <ehird> generated by a script
20:27:15 <oerjan> does this array fingerprint require the indices to be assigned in order? perhaps if you could make them strongly typed somehow...
20:27:35 <ehird> AnMaster: I suspect that the top one people will do 'real' stuff in is 4d
20:27:37 <Deewiant> 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 <ehird> and even that much less than 3d
20:28:06 <ehird> is unefunge even tc
20:28:33 <ehird> the Hunt the Wumpus-93
20:28:36 <ehird> does that work in 98 interps?
20:28:44 <ehird> oklopol: I figured out how to do self-modifing code
20:29:05 <ehird> 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 <AnMaster> ehird, even when not profiled for exactly that app
20:29:09 <ehird> oklopol: Also include a decompiler.
20:29:16 <ehird> oklopol: Then 'p' compiles then MOVs to the codespace
20:29:43 <Deewiant> AnMaster: does your makefile already automatically profile against mycology and recompile? :-P
20:29:43 <ehird> AnMaster: my makefile will be epic
20:29:48 <ehird> you can choose which fingerprints you want
20:30:04 <ehird> ehird@ehird-desktop:~$ bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge
20:30:04 <ehird> bzr: ERROR: Unknown branch format: 'Bazaar pack repository format 1 (needs bzr 0.92)\n'
20:30:04 <AnMaster> ehird, err, bad idea about that compile at p, you can use p to put a value into scratch space
20:30:14 <AnMaster> ehird, what version do you have?
20:30:16 <Deewiant> ehird: yes, needs bzr 0.92 or newer :-)
20:30:18 <ehird> AnMaster: it will be decompiled when you 'g' it
20:30:26 <ehird> ehird@ehird-desktop:~$ bzr --version
20:30:26 <ehird> Bazaar (bzr) 0.90.0
20:30:30 <ehird> that's the ewwbuntu version
20:30:34 <ehird> if that's too old, feeking hell
20:30:39 <AnMaster> ehird, point is, it may not be a valid instruction, so you can't compile it
20:30:42 <ehird> canonical hate their own product :p
20:30:46 <ehird> AnMaster: uhh so you compile it to a nop
20:31:00 <Deewiant> AnMaster: you can always compile it to reverse at compilation time
20:31:29 <AnMaster> you reverse on errors in befunge
20:31:37 <ehird> AnMaster: yeah sure
20:31:39 <ehird> AnMaster: compile it to that.
20:31:43 <oerjan> 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 <ehird> AnMaster: if you put it in scratch space you'll never execute it anyway
20:31:51 <AnMaster> ehird, http://rafb.net/p/vcgFCm27.html
20:31:53 <ehird> so, add oklopol's stack elimination
20:32:18 <AnMaster> ehird, there are one major incompatiblity between 93 and 98, how to handle multiple spaces in strings
20:32:29 <ehird> AnMaster: that thing screws up a bit
20:32:37 <AnMaster> ehird, 93 does it the normal way, 98 however, does it like xml
20:32:38 <Deewiant> that's the only two, unless I forget something.
20:32:50 <AnMaster> Deewiant, indeed, possibly wrapping over edges too
20:33:00 <ehird> Deewiant: how does ccbi handle wumpus
20:33:07 <Deewiant> well, okay, the actual big difference is that -93 is 80x25 always. :-P
20:33:11 <Deewiant> ehird: beats me, haven't tried
20:33:21 <Deewiant> ehird: if cfunge works than CCBI probably does ;-)
20:33:22 <AnMaster> ehird, iirc: well but loads about 0.1 seconds slower than cfunge does it ;)
20:33:40 <Deewiant> oh noes, teh slowness!!!!oneoneoneeleven1/9
20:33:53 <ehird> AnMaster: you think wumpus.b is bad?
20:34:05 <AnMaster> it's mainly interactive, so speed doesn't show up like in mycology
20:34:06 <ehird> if so, you've obviously never written a brainfuck implementation...
20:34:16 <ehird> LostKng.b takes ~3 seconds to start up on a naive c impl
20:34:19 <AnMaster> ehird, if you remember I wrote bashfuck
20:34:27 <ehird> you can get it down to less than 0.2 though iirc
20:34:28 <AnMaster> took 5 minutes to load LostKng.b
20:34:48 <ehird> I am fascinated by stack&tape removal
20:35:09 <ehird> if LostKng's tape could be removed to a large degree, and constant folding performed, along with the regular optimizations
20:35:09 <AnMaster> I actually added a pre-compile mode that stored information about matching [ and ]
20:35:13 <ehird> I think it could be compiled to really really fast c
20:35:30 <AnMaster> Deewiant, btw if you want to see bashfuck, bzr branch http://rage.kuonet.org/~anmaster/bzr/bashfuck
20:35:42 <Deewiant> 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:36:23 <lament> damn, the most annoying instruction in befunge-93 is "
20:36:29 <Deewiant> you've been coding cfunge with speed constantly in mind, CCBI was just "let's see if this is fun" :-P
20:36:36 <AnMaster> Deewiant, and well my incomplete bashfunge was very slow
20:36:39 <Deewiant> still, it's been remarkably easy to optimize.
20:36:50 <Deewiant> the latest CCBI runs in less than 0.2 seconds on mycology here.
20:36:54 <AnMaster> Deewiant, but true, ccbi is quite fast too, compared to what bashfunge was
20:37:00 <ehird> " -> stringmode=1-stringmode;
20:37:04 <ehird> then in the mainloop
20:37:12 <ehird> if (stringmode) {push(chr);}else{...}
20:37:22 <ehird> we need to bring back c's =-
20:37:24 <AnMaster> Deewiant, "UNDEF: # across left edge hits easternmost cell on line" took like 20 seconds in bashfunge from the line before
20:37:40 <AnMaster> Deewiant, also it failed when it got to x, I gave up there
20:37:50 <lament> ehird: the most annoing for the retarded compiler i'm trying to write, not for a c interpreter
20:37:59 <AnMaster> Deewiant, but until that point it managed mycology
20:38:05 <ehird> just getc until a "
20:38:11 <ehird> then compile it into psuh instructions
20:38:36 <AnMaster> Deewiant, anyway the "ask user" think for / and % by zero, that's just weird
20:38:53 <Deewiant> AnMaster: it's an esoteric language, what did you expect :-P
20:39:05 <ehird> AnMaster: it's amusing
20:39:58 <ehird> AnMaster: i might use __asm__ for this
20:40:02 <AnMaster> 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:07 <ehird> fungeh kinda sucks for a name
20:40:20 <ehird> AnMaster: catch the signal
20:40:25 <AnMaster> ehird, not really, reminds me of inspircd slogan
20:40:35 <AnMaster> ehird, that's slower on other platforms
20:40:46 <ehird> AnMaster: #ifdef __PPC__
20:40:55 <ehird> Deewiant: #include "fungy/fungespace.h"
20:41:10 <oerjan> 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 <AnMaster> how do you spell it normally? material arts
20:41:39 <AnMaster> so just change the second word to funge?
20:41:53 <ehird> oerjan: vertical strnigs too
20:41:57 <AnMaster> oerjan, not only that, but vertical too
20:42:09 <lament> oerjan: yes, although my compiler is too stupid to compile lines.
20:42:10 <AnMaster> Deewiant, whoa, did you google for it? :P
20:42:30 <oerjan> i consider "line" as the geometric concept here ;)
20:42:38 <ehird> AnMaster: nobody follows them
20:42:52 <ehird> æßðððððððłe¶³€½ŧ¶←ħŋnðŋe¶ŧ¢þøsð→e€½}]đjÆ°±J§Ð⅛&⅛£Ðı→
20:42:56 <AnMaster> oerjan, lament: for funge98 you can have strings from other places, using x instruction
20:43:11 <lament> i don't care much about funge98
20:43:18 <lament> it seems overcomplicated
20:43:22 <AnMaster> lament, well 93 isn't turing complete
20:43:29 <Deewiant> AnMaster: eh? I don't think the IRC specs limit nicks to ascii
20:44:00 <AnMaster> Deewiant, charset for channels and nicks are limited to a-zA-Z and {}[] iirc
20:44:10 <Deewiant> RFC 2812: "No specific character set is specified."
20:44:17 <ehird> Deewiant: ignore the irc rfcs
20:44:29 <ehird> lament: it is quite overcomplicated, but not superflously
20:44:39 <ehird> lament: it's got more juicy topology theory
20:44:57 <ehird> lament: also trefunge
20:45:03 <AnMaster> Deewiant, http://tools.ietf.org/html/rfc1459
20:45:04 <ehird> Deewiant: used lightly
20:45:15 <ehird> 'stuff that looks like mild topology theory from a long distance'
20:45:22 <AnMaster> Deewiant, yes I wondered about having a mode with user specified wrapping
20:45:23 <lament> AnMaster: turing-completeness is overrated
20:45:25 <ehird> but it LOOKS pointy-hat, so :D
20:45:30 <Deewiant> AnMaster: RFC 1419: "No specific character set is specified." ;-P
20:45:53 <AnMaster> Because of IRC's scandanavian origin, the characters {}| are
20:45:53 <AnMaster> considered to be the lower case equivalents of the characters []\,
20:45:53 <AnMaster> respectively. This is a critical issue when determining the
20:45:53 <Deewiant> ehird: I mean the term "topology theory", no such thing in my experience
20:45:56 <ehird> AnMaster: of course
20:46:04 <ehird> Deewiant: it sounds pointy-hat
20:46:06 <AnMaster> but I know historical background for it
20:46:14 <Deewiant> AnMaster: I don't know how that's scandinavian but whatever :-P
20:46:32 <AnMaster> Deewiant, ehird, back before 8bit charsets, they used to write åäö as those chars
20:47:16 <ehird> AnMaster: the swedish charset used the ASCII values of []\ for those
20:47:27 <ehird> so iirc you couldn't type []\{}| in the swedish charset
20:47:41 <ehird> i think everyone here is
20:47:50 <Deewiant> then why do you know stuff about 7-bit charsets??! :-P
20:47:59 <AnMaster> ehird, where are you from btw? (as in what country?)
20:48:37 <Deewiant> google suggests hexham, england
20:49:22 <AnMaster> 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:45 <Deewiant> before it hits the main function:
20:50:02 <Deewiant> module constructor run for each fingerprint
20:50:18 <AnMaster> Deewiant, remember I use a GC too, initialized on very first line of main()
20:50:37 <AnMaster> command line arguments are parsed in main() using getopt
20:50:47 <Sgeo> I'm on EFNet, a private network, wikkedwire, and DarkMyst
20:50:48 <AnMaster> constructs I don't have though
20:51:01 <Sgeo> This is the only one that won't allow SgeoServ
20:51:09 <ehird> AnMaster: I am from england
20:51:13 <ehird> We have rain and mud
20:51:22 <AnMaster> ehird, hehe, I know where UK is
20:51:23 <Sgeo> AnMaster, but only FreeNode does, it seems
20:51:30 <ehird> AnMaster: uk!=england
20:51:33 <AnMaster> Sgeo, nop, lot of other networks too
20:51:41 <AnMaster> ehird, indeed, it's a part of uk
20:51:47 <Sgeo> Not EFNet, not Sine, not Wikkedwire, and not DarkMyst
20:51:57 <Deewiant> AnMaster: I mean stuff done by the D runtime
20:52:08 <Sgeo> AnMaster, ehird, this? http://qntm.org/?uk
20:52:12 <AnMaster> Sgeo, apart from efnet (that doesn't have services), I have never heard of those networks
20:52:13 <Deewiant> AnMaster: converts int argc, char**argv to char[][] args, stuff like that.
20:52:19 <Deewiant> AnMaster: mostly it's the module constructors which take time.
20:52:55 <AnMaster> Deewiant, anyway it is hardly noticeable
20:52:56 <Deewiant> AnMaster: allocates a bunch of hash tables with pointers to functions.
20:53:03 <Deewiant> and then possibly I/O is slower.
20:53:15 <AnMaster> Deewiant, well I do allocate a hash table too, after main(), before I load program
20:53:20 <ehird> ehird@ehird-desktop:~$ bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge
20:53:21 <ehird> bzr: ERROR: Unknown branch format: 'Bazaar pack repository format 1 (needs bzr 0.92)\n'
20:53:23 <ehird> i just FSCKING UPGRADED
20:53:28 <Deewiant> if I'd want to test, I'd take Mycology and insert a line containing "@" right at the beginning.
20:53:32 <ehird> AnMaster: downgrade your repository
20:53:42 <Deewiant> AnMaster: also, because of TRDS I need to make a copy of the entire funge-space.
20:53:56 <AnMaster> Deewiant, aha I see, so you need two fspace
20:54:02 <ehird> AnMaster: use a vcs which doesn't enjoy breaking compatibility fully every 0.02 versions and being slow
20:54:09 <Deewiant> AnMaster: yep, one is the currently running one and one is the original.
20:54:18 <Deewiant> AnMaster: with --disable-fprints the copy might not be done though, I'm not sure.
20:54:27 <AnMaster> ehird, just get last release? :/
20:54:41 <AnMaster> ehird, maybe the one mirrored by lauchpad works better
20:54:49 * Sgeo hosts PSOX on Assembla
20:55:02 <AnMaster> ehird, they may downgrade format i their mirror
20:55:26 <AnMaster> ehird, try bzr branch http://bazaar.launchpad.net/~anmaster/cfunge/main cfunge
20:55:46 <ehird> Sgeo: i love how you suggest bzr->svn
20:55:55 <ehird> that's the only direction which is even worse
20:56:01 <ehird> cvs is not that bad :)
20:56:08 <ehird> ehird@ehird-desktop:~$ bzr branch http://bazaar.launchpad.net/~anmaster/cfunge/main cfunge
20:56:08 <ehird> bzr: ERROR: Unknown branch format: 'Bazaar pack repository format 1 (needs bzr 0.92)\n'
20:56:11 <AnMaster> ehird, not very last version, there, they mirror every 4 hours or so
20:56:20 <AnMaster> ehird, ok, go complain in #ubuntu?
20:56:25 <ehird> launchpad ship all their repositories in a format that nobody using their official OS and their official repositories can use
20:56:49 <AnMaster> ehird, well try #launchpad and #ubuntu
20:57:07 <Deewiant> yes, and gentoo provides bzr 0.17 if you recall
20:57:27 <Deewiant> so ubuntu has it better, and even theirs is too old :-P
20:57:49 <AnMaster> 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:14 <ehird> AnMaster: you know one thing c++ got right was its scoped pointer stuff
20:58:24 <AnMaster> ehird, and no way I'm doing c++
20:58:29 <ehird> far more convenient than free()
20:58:37 <ehird> unfortunately, there's the rest of c++
20:59:21 <ehird> AnMaster: but even if you wanted something not to last the scope of a function
20:59:26 <ehird> you can just do the bare { ... } trick
20:59:40 <AnMaster> ehird, indeed I do that for non-pointers sometimes here
20:59:51 <ehird> basically I think C++'s lifetime&memory stuff is right, but the rest of it is sadly tremendously misguided
21:00:49 * Sgeo should probably learn C(?:\+\+)? sometime
21:01:00 <AnMaster> ehird, anyway ask in #ubuntu or #launchpad about bzr version issues
21:01:12 <AnMaster> ehird, can't you just select an unstable version for that single package?
21:01:38 <AnMaster> it's very easy to mix and match in gentoo
21:02:02 <AnMaster> Sgeo, that makes no sense if it is PCRE?
21:02:14 <AnMaster> or is it some other regex dialect?
21:02:24 <Sgeo> PCRE? I'm using the RE syntax that python uses
21:02:45 <AnMaster> Sgeo, PCRE = perl compatible regex
21:02:50 <ehird> AnMaster: no such thing as 'unstable ubuntu'
21:02:55 <ehird> the bleeding edge distro
21:02:58 <Sgeo> http://docs.python.org/lib/re-syntax.html
21:03:13 <Sgeo> 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 <Deewiant> AnMaster: it's a PCRE extension
21:03:37 <AnMaster> Deewiant, ok maybe, I use perl regex style with PCRE library normally
21:03:55 <ehird> fungy is a kinda sucky name
21:03:58 <Sgeo> I guess it doesn't make a diff as to whether or not it's grouping, so C(\+\+)?
21:04:10 <Deewiant> if you use just grep's normal regex or posix regex, it won't accept it
21:04:12 <AnMaster> ehird, what about "kung funge"?
21:04:15 -!- oklokok has joined.
21:04:20 <Sgeo> I should learn C(\+\+)?
21:04:50 <Sgeo> Why C as opposed to C++?
21:04:56 <ehird> AnMaster: please don't tell Sgeo to learn C/C++
21:05:09 <lament> everybody should know C...
21:05:10 <Sgeo> Here comes the insults
21:05:13 <ehird> AnMaster: i don't want to have to deal with the horror :(
21:05:19 <ehird> Sgeo: you're quick on the uptake ;)
21:05:30 <ehird> 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 <AnMaster> 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 <AnMaster> today I write rather okish code (I hope)
21:06:40 <ehird> AnMaster: Sounds like Knuth
21:06:45 <ehird> TeX uses no dynamic memory allocation
21:06:55 <ehird> It has its own memory management routines based on static arrays
21:07:14 <AnMaster> ehird, no, I didn't even do memory management
21:07:17 -!- RedDak has joined.
21:07:22 <ehird> (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 <AnMaster> ehird, but that's interesting why does TeX do it that way
21:07:37 <ehird> (Also, it is always translated to dumb C before being compiled nowadays.)
21:07:38 <ehird> AnMaster: portability
21:07:45 <ehird> knuthtex was, after all, written in the 70s
21:08:00 <AnMaster> ehird, err wait a sec, modern TeX doesn't do it that way do they?
21:08:00 <ehird> doing that was the only way to get stability
21:08:03 <ehird> you couldn't trust your system
21:08:15 <ehird> AnMaster: Well TexLive and XeTeX and all are written in C (iirc) in a modern fashion
21:08:21 <ehird> But knuthtex rawx0r my b0x0r
21:08:35 <AnMaster> ehird, I still use tetex not texlive though
21:08:45 <ehird> I use XeTeX. Mac OS X represent!
21:08:49 * AnMaster waits for it to become stable on gentoo before switching
21:08:53 <ehird> Plus its font support is amazin'.
21:09:36 <AnMaster> ehird, well you still do it as \inf, or do you put a unicode infinite symbol in the latex file?
21:09:49 <ehird> AnMaster: i think \inf just translates to the latter
21:10:02 <Sgeo> ehird, do you think my code is horrendous?
21:10:13 <ehird> Sgeo: how will you react if i say yes
21:10:27 <Sgeo> I'd ask you to point out what exactly is bad about it
21:10:37 <ehird> Sgeo: i guess you've never looked at it
21:11:10 <Sgeo> Can you tell me what I could have done better?
21:11:38 <oklokok> Sgeo: ehird just told me the other day, that my oklotalk interp *made no sense*!
21:11:49 <oklokok> granted, it didn't, but i mean don't feel bad, he does that! :D
21:12:12 <ehird> Sgeo: learnt python
21:12:58 <Sgeo> um, you're saying I did some unpythonic things in my code? Can you point them out?
21:13:23 <AnMaster> Deewiant, btw, can't you use profiling data in D?
21:13:35 <ehird> Sgeo: it looks horrendous
21:13:38 <AnMaster> Deewiant, and also, -fwhole-program?
21:14:18 <AnMaster> ehird, I think Sgeo want you to give some specific examples
21:14:43 <Sgeo> http://trac2.assembla.com/psox/browser/trunk
21:14:49 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/impl
21:15:21 <ehird> $blimps:{b|case $b.id$:$\n$ $b.code$$\n$ break\;};seperator="\n"}$ <-- epic
21:15:52 <ehird> AnMaster: StringTemplate
21:15:54 <ehird> and that's not python
21:16:04 <ehird> AnMaster: stringtemplate
21:16:18 <ehird> AnMaster cannot use google
21:16:44 <Sgeo> ehird, examples?
21:16:47 <AnMaster> ehird, look I tried to search with veronica on gopher and it didn't find it, what more did you expect?
21:17:50 <AnMaster> Sgeo, <ehird> $blimps:{b|case $b.id$:$\n$ $b.code$$\n$ break\;};seperator="\n"}$ <-- epic
21:18:09 <ehird> that is unrelated to sgeo
21:18:19 <ehird> why is everyone trying to link it to sgeo
21:18:38 <AnMaster> ehird, you said his code was horrible, we asked for example, you posted that
21:18:52 <oklokok> AnMaster: what country do you live int?
21:20:08 <Sgeo> ehird, examples?
21:20:43 <oklokok> "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 <oklokok> it may be it wasn you and that it wasn't this morning, but that's beside the point
21:21:56 <AnMaster> why didn't you contact them when it was happening?
21:23:41 <oklokok> AnMaster: i tried contacting the guy responsible for contacting them ;)
21:24:47 <oklokok> also, we don't really have that many visitors, and i can wait a few hours.
21:24:57 <ehird> AnMaster: what is your fungespace?
21:25:14 <AnMaster> ehird, yep that's how I do it atm
21:25:20 <AnMaster> but it's hidden behind an abstraction
21:25:29 <AnMaster> so can be replaced with something else if needed
21:25:31 <Sgeo> ehird, no examples?
21:26:17 <AnMaster> ehird, I already got an alternative 80x25 static array version (probably broken atm as it's unmaintaned
21:29:04 <ehird> AnMaster: make your boehm less versionful
21:29:21 <AnMaster> ehird, indeed I know the issue, I plan to include the part I want
21:29:22 <ehird> Version: 1:6.8-1ubuntu2
21:29:37 <AnMaster> as it got issues installing it on freebsd too
21:29:44 <AnMaster> and thats a platform I care about
21:29:51 <AnMaster> so somehow, I plan to bundle parts of it
21:30:21 <ehird> AnMaster: have you heard my WEB GARBAGE COLLECTION idea yet?
21:30:43 <AnMaster> ehird, you got 64-bit? I can send you a static binary if you do
21:31:41 <ehird> AnMaster: -m32 or something
21:31:49 <ehird> AnMaster: also, this is the idea
21:31:56 <AnMaster> ehird, I don't have boehm installed in 32-bit version
21:31:56 <ehird> if you have a short urlservice and want to expire links eventually
21:32:06 <ehird> you go through every page on the internet
21:32:16 <ehird> and set the mark flag on every link you find to one of your links
21:32:22 <ehird> then you delete all the unmarked ones.
21:33:06 <AnMaster> oh a garbage collector for internet?
21:34:18 <ehird> AnMaster: for a short url service
21:34:42 <ehird> AnMaster: sometimes i wonder if you're intentionally dnse
21:34:45 <ehird> it's called a JOKE
21:35:00 <AnMaster> ehird, "intentionally dnse" <-- nop, but intentionally dense, yes
21:36:09 <AnMaster> ehird, anyway I'm working on a 32-bit binary for it
21:37:25 <ehird> hmmmm why do all webservers suck
21:39:48 <ehird> the config gets all sprawling
21:39:56 <ehird> and its fastcgi 'lets try and spawn it myself' sucks
21:39:59 <ehird> because itnever works
21:40:01 <ehird> an dyou have to do it manually
21:40:17 <ehird> AnMaster: latest release 2002. That's not a problem, though -- it's so rock solid. But it only supports cgi.
21:40:22 <AnMaster> ehird, I blame ubuntu, fcgi "lets try and spawn it myself" works perfectly here
21:40:41 <AnMaster> ehird, err, thttpd doesn't do cgi does it?
21:40:43 <ehird> AnMaster: It's a known problem
21:40:46 <ehird> and yes thttpd does cgi
21:40:57 <ehird> AnMaster: besides i mainly use os x
21:40:59 <ehird> also a problem there
21:41:07 <AnMaster> ehird, I have used lighty on freebsd with fcgi spawning without problems
21:41:23 <ehird> i wonder if php can run as scgi
21:41:33 <ehird> scgi&cherokee is the exact setup that nobody uses
21:41:37 <ehird> and thus i should use it for eso-std.org
21:41:38 <AnMaster> ehird, I use trac.fgci and php-fgci
21:41:57 <ehird> fcgi is kinda overcomplicated and stuff
21:42:01 <ehird> the scgi spec is just a few screenfuls
21:42:59 <AnMaster> ehird, ok I'm building a 32-bit boehm for you now
21:43:46 <ehird> AnMaster: http://python.ca/scgi/protocol.txt
21:45:36 <ehird> AnMaster: i hope that eso-std.org will be a mishmash of mostly python and some php
21:45:39 <ehird> and hopefully all running on scgi
21:46:11 <ehird> AnMaster: including the most immediately useful to #esoteric things -- the pastebin and the QDB
21:46:18 <ehird> the qdb will probably be the first thing going live
21:46:34 <ehird> since i'm an elitist, i'll probably hack up my own qdb
21:47:15 <ehird> 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 <AnMaster> ehird, http://rage.kuonet.org/~anmaster/cfunge/cfunge_r65_static_32_64.tar.bz2
21:55:17 <AnMaster> one 32-bit and one 64-bit binary
21:55:31 <AnMaster> 32-bit is -march=pentium3 -mtune=k8
22:00:32 <AnMaster> of course you would get best result optimizing for your arch
22:05:26 <ehird> Linux ehird-desktop 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux
22:05:29 <ehird> there's optimizations tuffs
22:06:24 <AnMaster> ehird, grep -E '(vendor|model|flags)' /proc/cpuinfo
22:07:13 <AnMaster> ehird, anyway here even the 32-bit one is real 0m0.096s
22:08:29 <ehird> vendor_id : AuthenticAMD
22:08:29 <ehird> model name : AMD Sempron(tm) Processor 3100+
22:08:29 <ehird> 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:31 <AnMaster> ehird, of course I recommend building and profiling your own
22:08:33 <ehird> i know this box suxx0r
22:09:26 <AnMaster> ehird, ah, could be much better then, --march=athlon-xp -msse2 I think
22:10:02 <AnMaster> ehird, but I can't do the profiling bit really, it's individual based on your system
22:12:38 <AnMaster> ehird, btw this is what I use: http://rafb.net/p/AeLEvc11.html
22:12:42 <ehird> AnMaster: think of a funny name for the eso-std.org qdb's software.
22:13:23 -!- Corun has joined.
22:22:54 <AnMaster> ehird, no I can't think of one
22:24:11 <ehird> i mgiht call it 'busy'
22:24:34 <Sgeo> How do I make my code readable?
22:42:47 -!- RedDak has quit (Remote closed the connection).
22:42:57 <oerjan> yeah he's bribed us all to refer you to him
22:43:04 <oerjan> whoops, did i say that?
22:45:08 <ehird> who's alive and gives a rat's ass about the qdb?
22:45:35 <AnMaster> huh it seems GCC 4.1 and later have an undocumented -O4 mode
22:45:58 <Slereah> You can do whatever you want with it.
22:46:19 <ehird> oklokok: /oklopol maybe i guess#
22:46:25 * AnMaster notes it shaves another 0.08 seconds off runtime for mycology without breaking stuff
22:51:16 <oerjan> the ratsass quote database has a certain ring to it
22:51:39 <oerjan> although it might be taken
22:54:02 <ehird> oerjan: better than 'busy'
22:54:22 <ehird> slogan: 'gives a rats ass about your quotes'
22:54:52 <ehird> oerjan: i am thinking of user stuff
22:54:59 <ehird> oerjan: i am not sure whether users are really needed
22:55:46 <ehird> oerjan: i mean, what can you display about a quote submitter
22:55:59 <ehird> and if you store submitter *name* optionally, you can still do that, really
22:57:25 <ehird> oerjan: and you don't care. presumably.
23:00:35 <AnMaster> ehird, how goes your turky bomb interpreter?
23:01:37 <ehird> oerjan: well, evidently you're not now :P
23:01:53 <oerjan> although i must admit i don't care terribly about the details
23:08:11 <ehird> oerjan: start caring! ;)
23:09:00 <ehird> Slereah: okay, you then :P
23:10:16 <AnMaster> Slereah, D: ? it's a variant of D?
23:10:52 <ehird> Slereah: OH COME ON <_<
23:12:44 <ehird> 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 <ehird> that affects the user experience
23:12:56 <ehird> so you must be interested
23:13:39 <Slereah> Well, I usually don't care about the name of the submitter.
23:14:03 <Slereah> And user contributing is a good idea
23:14:04 <ehird> Slereah: OPINION NOTED
23:14:11 <ehird> when user contributing
23:14:13 <faxathisia> 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:31 <ehird> 'user submitting' how you seem to mean it is just the standard 'submit' page
23:14:34 <ehird> which is just a text box
23:14:40 <ehird> and a last of tags
23:14:45 <ehird> and maybe a note fiel
23:14:46 <Slereah> It's not like we risk much trolling
23:14:54 <Sgeo> Are we making custom qdb software? :(
23:14:55 <ehird> Slereah: quite true
23:14:58 <ehird> Sgeo: yes, yes we are
23:15:19 <ehird> because there's none written in python
23:15:25 <ehird> & eso-std.org is going to run on python
23:15:39 -!- ais523 has joined.
23:15:44 <Sgeo> It can't be a hybrid site
23:16:02 <ehird> Sgeo: i don't want it to be :P
23:16:08 <ehird> faxathisia: convenient.
23:16:24 <AnMaster> ehird, if it's python you can get Sgeo to help
23:16:29 <ehird> 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:36 <faxathisia> spot the bug http://rafb.net/p/aLPQ0C26.txt :(
23:16:50 <ehird> ais523: quote data base
23:17:04 <ehird> since #esoteric is far too nsfw to keep off the web a lot of the time
23:17:13 <AnMaster> or maybe make a SCGI extension
23:17:29 <AnMaster> faxathisia, nah, fast c based interpreter for befunge :D
23:17:45 <Sgeo> I really should work on b1 at some point
23:17:52 <AnMaster> FILE, DATA and SCGI, the first extension already exist
23:17:59 <ehird> rash just has a text field :)
23:17:59 <AnMaster> the second would be sqlite interface
23:18:05 <ehird> will tags on quotes really be useful?
23:18:12 <ehird> but i'd like the 'note' field
23:18:16 <ehird> just for, well, adding a note
23:18:26 <ehird> also i hope to make all the timestamp removal etc. automatic
23:18:30 <ehird> unless explicitly disabled
23:19:12 <ais523> ehird: http://pastebin.ca/943024 http://pastebin.ca/943026
23:19:22 <ais523> (where I'm at with Underlambda ATM)
23:19:50 <ehird> ais523: my god, you are a perlist
23:20:17 <ais523> ...but the spec's based on rewrite rules..
23:20:18 <ehird> you use the ($$) stuff
23:20:30 <ehird> ais523: i was thinking more things like $"
23:20:46 <ais523> ehird: the sort of thing that confuses pastebin.ca's syntax higlighting
23:21:08 <faxathisia> never seen a good perl syntax hilighter
23:21:18 <ehird> bash.org etc seem to score 'up' and 'down' differently
23:21:21 <ais523> faxathisia: Kate's is pretty good
23:21:22 <ehird> instead of one combined score
23:21:35 <ehird> seems kinda overcomplicated to me
23:21:41 <ehird> but maybe it makes stuff more balanced
23:21:56 <ais523> AnMaster: the idea is that an implementation can implement more or less of the spec
23:22:04 <ais523> the lower-numbered tiers are the ones it's more important to implement natively
23:22:19 <ais523> 1 and 1a are TC and Brainfuck-complete, respectively, so you can compile anything into those in theory
23:22:41 <ais523> but the stuff in tier 2 requires bundling an interp with the program to compile into Tier 1, practically speaking
23:22:51 <ais523> the stuff in tier 3 requires you to use reflection on the data structures
23:22:56 <ais523> tier 5 requires a preprocessor
23:23:16 <ais523> and tier 4 contains serious optimisations without which the language is unusable
23:23:31 <ais523> (e.g. it allows an interpreter to make addition O(1) rather than O(n))
23:23:43 <ehird> i think the qdb may be the first unicode aware one
23:23:51 <AnMaster> ais523, can you stick tier 4 on tier 2?
23:24:01 <ais523> what do you mean by that?
23:24:06 <AnMaster> or does it need tier 3 as well then?
23:24:11 <ais523> it's possible to compile a tier 4 program into a tier 2 program, quite easily in fact
23:24:21 <ais523> some of the tiers need some lower-numbered ones, but they're mostly independent
23:24:28 <ehird> possibly last qdb question:
23:24:30 <ehird> do we need approval?
23:24:34 <ais523> I suspect I'll use < and > a lot later on because they're pretty useful
23:24:45 <ais523> ehird: it's a publically logged channel, you could always link to the logs
23:24:49 <ais523> if you couldn't get approval
23:25:14 <AnMaster> ehird, one question: why do we need a qdb?
23:25:23 <ais523> AnMaster: everyone needs a qdb
23:25:26 <ais523> they just don't know it yet
23:25:35 -!- Corun has quit ("Leaving").
23:26:04 <ehird> ais523: approval as in 'admin approves all quotes'
23:26:20 <ehird> AnMaster: because too many ridiculous things are said here. obviously. :)
23:26:38 <ais523> ehird: either manual approval, or just do it wiki-style by deleting quotes that are voted down too much
23:28:32 <ehird> ais523: i think manual approval
23:28:39 <ehird> + maybe later a report button
23:28:51 <ehird> basically, when an admin is logged in, each quote will have a delete button
23:28:56 <ehird> and there'll also be two extra pages
23:29:01 <ehird> 'awaiting approval'
23:29:08 <ehird> which will contain loads of quotes, and a 'yep' and 'nope'
23:29:13 <ehird> and a 'reports page' which will be the same
23:31:14 <ais523> 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 <ais523> because you can embed lambda calculus in it
23:31:38 <ais523> (the rules with / are basically rewrite rules for translating lambdas into tier 1)
23:32:32 <ais523> (it took me ages to get them working)
23:34:15 <ehird> all the models are done
23:34:20 <ehird> apart from reports, which can come later
23:41:26 -!- algol has joined.
23:42:02 -!- algol has quit (Client Quit).
23:42:21 <ehird> naming a quote system ratsass after one line someone said in irc is probably not a good idea
23:43:46 <lament> stupid infinite stack of zeros in befunge
23:44:19 <ais523> lament: I was wondering about whether to use an infinite stack of ones in Underlambda
23:44:24 <ehird> lament: are you doing stack elimination? that's coooool
23:44:38 <ais523> but I decided to only implement them for the > instruction
23:44:50 <lament> ehird: the infinite zeros thing is annoying
23:44:57 <ais523> because the number of stack elements is otherwise too useful to discard like that
23:46:05 <ais523> 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 <ais523> 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 <ais523> (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 <ehird> ais523: make x/0 return a new type
23:50:19 <ehird> the DivideZero type
23:50:24 <ehird> with x as its internal data
23:50:26 * lament hates cpressey for the infinite zeros thing
23:50:51 <ehird> +1 would result in a special object saying that its that dividezero+1
23:50:55 <lament> how am i supposed to efficiently compile befunge when it has to check the stack every time!
23:51:00 <ehird> equality would work too
23:51:04 <ehird> and printing would too
23:51:25 <ehird> lament: you think that wasn't intentional
23:51:49 <lament> it's only a minor annoyance, it doesn't actually make it much harder to compile, just more annoying
23:51:55 <lament> it's p that makes it hard to compile :)
23:53:06 <AnMaster> lament, there are befunge programs that copy themself around fungespace
23:53:17 <AnMaster> and delete the old copies of themselves
23:56:21 <ais523> ehird: the exceptional conditions for maths operations in Underlambda are based on what has the most uses for other purposes
23:56:34 <ais523> so subtraction saturates at 0 so it can be used as greater-than
23:59:00 <ehird> ais523: butvbut :(#
23:59:23 <ehird> i want my divzero type
23:59:47 <ais523> ehird: it isn't typed anyway, numbers are just Church numerals
00:00:18 <ais523> 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 <ais523> (and all data are functions)
00:00:58 <ehird> ais523: underlambda->c compiler: dibs on it
00:01:13 <ais523> ehird: it's specifically designed to be compilable
00:01:21 <ais523> and also so that Unlambda can be compiled into it
00:01:27 <ais523> thus allowing an Unlambda -> C compiler
00:01:40 <ais523> if you can handle the C command, you're well on your way to writing the compiler
00:02:00 <ais523> (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:40 <ehird> include landarins J
00:04:51 <ehird> ais523: hard to explakin
00:05:31 <ais523> 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 <ais523> 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 <ais523> it would be great if it could implement J too, whatever it is
00:07:09 <ehird> ais523: does it have variables?
00:07:25 <ais523> but there are various ways to simulate them
00:07:57 <ais523> 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 <ais523> although I haven't put [],. in the spec yet
00:10:23 <ais523> the stack is good to use for temporary variables
00:10:27 <ais523> and you can use lambdas as well
00:11:00 <ais523> 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 <ais523> and I might make each of them a STASH like in INTERCAL so you could have scoping
00:11:23 <ais523> if I do that, it would probably go in Tier 3
00:22:12 <ehird> ais523: I feel like spceifying a minimal concatenative language based on rewrites.
00:23:09 <ehird> What about one with no [...]?
00:23:18 <ehird> The only way to get a quotation is 'dei'
00:23:31 <ehird> which [...]s the last execution step
00:23:37 <ehird> but of course you have to execute it first
00:23:39 <ehird> making stuff tricky
00:24:10 -!- BMeph has joined.
00:24:25 <ais523> [...] is what makes a language concatenative, generally speaking
00:24:34 <ais523> although I suppose you might just about be able to create one without it
00:24:39 <ehird> ais523: well, what i mean is
00:24:47 <ais523> but it would probably end up just being lambda calculus or something like that
00:24:49 <ehird> but since 'foo' executes first...
00:25:02 <ehird> 2 dup dei => 2 2 [dup]
00:25:08 <ehird> so you'd have to do
00:25:16 <ehird> 2 dup dei swap drop => 2 [dup]
00:28:42 <ais523> ehird: so dei's like ' in Underlambda, but its argument gets evaluated anyway?
00:28:56 <ais523> hmm... manipulating deis would be fun
00:29:00 <ehird> ais523: pretty much
00:29:06 <ais523> 2 dei dei swap drop => [dei]
00:29:09 <ehird> basically, it's like this:
00:29:18 <ehird> after each word is executed, you save it in the 'last' variable
00:29:28 <ehird> 'dei' just pushes a quotation of the last word
00:29:34 <ehird> you'd also have 'compose' of course
00:29:38 <ais523> ehird: there'd be no way to get [quit]
00:29:48 <ehird> ais523: but of course
00:30:06 <ehird> 2 dei dup dei compose drop drop => [2 dup]
00:30:09 <ais523> being able to write (Q) (or 'Q) is needed for Underlambda to be able to do call/cc
00:30:21 <ehird> ais523: meh, i'm thinking about it in a purely functional manner right now
00:30:35 <ais523> Q and A are sort of opposites in Underlambda
00:30:42 <ais523> Q deletes the program, A deletes the stack
00:30:44 <ehird> ais523: like my idea though? :D
00:30:51 <ais523> ehird: it's interesting
00:31:03 <ais523> not sure it'll lead to a very usable language, but somehow I don't think that was your aim
00:31:19 <Deformative> What language has [...]? I thought I came up with that all on my own.
00:33:06 <ehird> ais523: dips rewrite rule is simple :D
00:33:27 <ais523> dip is _ in Underlambda
00:33:39 <ais523> but I haven't written it into the spec yet, or the reference interp, so it only exists in my head
00:34:06 <ais523> you can implement _ as ~a*^
00:34:59 <ais523> so what's simpler? _ => ~a*^ or (x)(y)_ => y(x)
00:35:24 <ais523> (are the X and Y the wrong way around in your rewrite rule, actually?)
00:36:45 <ais523> 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 <ehird> ais523: wrote a spec for my thing
00:37:43 <ehird> ais523: also, have user-definable synta
00:37:57 <ais523> ehird: that's pretty much what that rule would do
00:37:59 <ehird> http://pastebin.ca/943111
00:38:08 <ehird> i am going to work on a factorial
00:38:21 <ehird> [X] dei => http://en.wikipedia.org/wiki/Special:Search?go=Go&search=X
00:38:29 <ehird> [X] dei => [ [X] ]
00:38:36 <ehird> you can't do that literally
00:38:50 <ehird> so i need a special 'curry;
00:38:55 <ais523> are you implementing wrap?
00:39:31 <ehird> ais523: http://pastebin.ca/943115
00:39:40 <ais523> ehird: it looks like you're implementing negative numbers. Stop it.
00:40:03 <ais523> Negative numbers don't exist except in reversible languages, because you can't do something a negative number of times
00:40:16 <ehird> ais523: but they're just atoms
00:40:20 <ehird> and there's no "do n times" thingy
00:40:39 <ais523> ehird: in Underlambda the number n is the function that transforms a function into that function composed with itself n times
00:40:43 <ehird> ais523: not in this.
00:40:49 <ehird> ais523: anyway, hm, recursion is hard with this language
00:40:51 <ehird> maybe impossible..
00:40:57 <ehird> since you have to do it to dei it
00:40:57 <ais523> ehird: but then you have more than one data type
00:41:04 <ais523> ehird: what about implementing sii?
00:41:05 * ehird adds a 'while' to simplify things
00:41:08 <ehird> ais523: ooh, good idea
00:41:42 <ehird> what would that do
00:41:54 <ais523> it's :^ in Underlambda/Underload
00:42:11 <ehird> ais523: maybe I should do Y
00:42:52 <ehird> ais523: dup drop dei => [drop]
00:43:10 <ais523> ehird: all reversible combinators can be deid easily
00:43:48 <ehird> but i'm having trouble dei'ing [1 - swap sii]
00:43:52 <ais523> for certain values of reversible
00:43:54 <ehird> i'm trying to implement this
00:44:04 <ehird> : make0 dup 0 = [drop] [1 - make0] if ;
00:44:07 <ais523> for instance, a 'invert order of stack' combinator would be hard to dei
00:44:19 <ais523> because your [invertstack] would end up on the /bottom/ of the stack
00:45:03 <ehird> ais523: invertstack dei dup dip
00:45:08 <ehird> you'd need another dip
00:45:42 <ais523> 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 <ehird> ais523: any ideas on my make0 btw?
00:46:04 <ehird> you have to write the function, remove the recursion, dei the whole thing, then sii it i guess
00:46:07 <ais523> no, I'm trying to concentrate on something else in RL
00:46:12 <ehird> but i'm stuck on writing the function :)
00:46:24 <ehird> ais523: think this is TC?
00:46:44 <ais523> ehird: it's probably TC but probably hard to write programs in
00:46:55 <ehird> ais523: probably tc? really?
00:46:59 <ehird> i wouldn't think s
00:47:00 <ais523> if you can implement s, k, and apply, you're done, after all
00:50:53 <ais523> 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 <ais523> hmm... it's possible to get [wrap], [drop], [dup], [swap], [i], and [compose] easily enough
00:51:55 <ais523> so all you have to do is get some TC Underload program
00:52:23 <ais523> 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 <ais523> then just dei each of the combinators, and you're done
00:52:58 <ais523> would be [dup] [i] compose wrap [dup] compose [i] compose
00:53:25 <ais523> and [dup] and [i] are both easy to dei onto the stack
00:53:34 <ais523> so the language is TC, I've just informally proved it
00:54:18 <ais523> 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 <ehird> ais523: interesting
01:02:57 <ais523> ehird: http://pastebin.ca/943140
01:03:21 <ais523> 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:33 <ais523> see, I told you it was TC
01:04:46 <ehird> ais523: I think that could be regexpable actually
01:04:54 <ais523> (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 <ais523> ehird: using recursive regexen (like Python and Perl5.10 have), yes
01:05:36 -!- ais523 has quit ("it's past midnight").
01:12:19 -!- oerjan has quit ("Good night").
01:59:49 <ehird> well, bye everyone for today
01:59:54 <ehird> 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 <GregorR-L> Fastest way to get the integral square root of an integer with no FPU?
02:51:55 -!- Tritonio_ has joined.
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:30 <oklokok> not sure it works yet, just tried some simple examples
05:11:49 <oklokok> `````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:25:35 -!- GregorR-L has quit ("Leaving").
05:40:20 <oklokok> http://www.vjn.fi/oklopol/thue.txt
05:40:50 <oklokok> i'm fairly sure that's all i'm ever going to do with thue without code generation :D
05:42:01 <oklokok> perhaps i should do that brainfuck self interp
06:00:42 <pikhq> http://video.google.com/videoplay?docid=-7974828993993586658
06:03:02 * pikhq performed that earlier today (not that recording, though)
06:07:19 <Sgeo> oklokok, in PSOX?
06:07:33 <Sgeo> anyways, g'night
06:07:38 <Sgeo> 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 <AnMaster> Deewiant, what is this from strn.d about: static assert (cell.sizeof == 4 && cell.min < 0, "Need more than 11 chars here");
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 <Deewiant> AnMaster: it probably (I don't have the code here, at school) uses a static buffer of 11 chars
11:14:27 <Deewiant> AnMaster: which means that if you have a 64-bit int, for instance, it won't fit.
11:15:52 -!- faxathisia has left (?).
11:16:32 <AnMaster> 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:26:51 -!- oklokok has quit (Remote closed the connection).
11:37:34 -!- oklokok has joined.
11:42:50 <AnMaster> Deewiant, I admit, doing it in D is simpler: That the size of the stack stack is 0
11:42:51 <AnMaster> BAD: should be at least 1, assuming 1
11:42:51 <AnMaster> That the stack sizes are [ 41 ] from top to bottom
11:42:51 <AnMaster> That the command-line arguments were: [ "▒" "/mycology/mycology.b98" ]
11:43:39 <AnMaster> 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 <AnMaster> 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 <AnMaster> after that y output is more or less garbled for cfunge, until environment variables
12:45:46 <ais523> AnMaster: is it possible that you're pushing the wrong number of elements onto the stack?
12:46:16 <ais523> 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 <AnMaster> ais523, I dumped stack from both ccbi and cfunge, they match in size for elements
12:46:35 <AnMaster> up to, and past the section we are discussing
12:46:38 <ais523> are any of the elements themselves a count of elements?
12:47:30 <AnMaster> 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:47 <AnMaster> 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 <AnMaster> 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:50:27 <ais523> 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 <AnMaster> ais523, err, I didn't do that, I use cmake, and I ran make
12:51:20 <ais523> OK, that makes it substantiatlly harder to get things wrong
12:51:37 <AnMaster> and now it refuse to fail for the moment
12:51:55 <AnMaster> 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 <AnMaster> or memtest or whatever it is called
12:52:20 <ais523> it's the default on valgrind, anyway
12:52:31 <AnMaster> ais523, no I mean on computer memory
12:52:48 <ais523> I think your memory is very unlikely to be the problem
12:52:55 <AnMaster> ais523, and I did do valgrind on the failing binary before, it reported nothing
12:53:03 -!- Hiato has left (?).
12:53:07 <AnMaster> some memory leaks yes, because I had to build without garbage collector
12:54:49 <AnMaster> 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 <AnMaster> That the command-line arguments were: [ "<non-ascii stuff here>" "mycology/mycology.b98" ]
12:56:05 <ais523> AnMaster: most likely the stack somehow got out of sync
12:56:46 <AnMaster> as it first failed at time value, *tries to make it push same time value as before to see what happens*
12:57:11 <ais523> hmm... maybe it's a current-time-dependent error, that would explain why it suddenly started working
12:57:11 <AnMaster> ais523, hah, when I push old time value it fails
12:57:17 <AnMaster> StackPush((FUNGEDATATYPE)668196, pushStack);
12:57:27 <ais523> what type is FUNGEDATATYPE?
12:57:45 <AnMaster> ais523, int_fast64_t, depending on compile time options
12:58:00 <AnMaster> StackPush((FUNGEDATATYPE)(curTime.tm_year * 256 * 256 + (curTime.tm_mon + 1) * 256 + curTime.tm_mday), pushStack);
12:58:25 <AnMaster> 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:59:05 <AnMaster> actually gcc got __int128_t if you want to try
12:59:29 <AnMaster> ais523, anyway it can be set to use int32_t or int_fast64_t
13:00:18 <AnMaster> 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:03:28 <AnMaster> ok... this doesn't make any sese
13:03:57 <ais523> what data type is curTime.tm_hour?
13:04:07 <ais523> is it possibly overflowing before you cast it to FUNGEDATATYPE?
13:04:19 <ais523> no, can't be in this case
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 <AnMaster> ais523, well man gmtime says it's int
13:05:46 <ais523> so it's not an overflow, at least not there...
13:06:16 <ais523> ~$ printf %x\\n $((668196))
13:06:29 <ais523> AnMaster: you converted in the wrong direction
13:06:54 <AnMaster> ais523, but 668196 is value I printed using %d
13:07:00 <ais523> I don't see anything particularly unusuable about that bit pattern
13:07:22 <ais523> (I was wondering if it ended with lots of 0s or something)
13:09:39 <AnMaster> ais523, how do you find out the hours, minutes and seconds from 668196
13:10:13 <ais523> minute = (668196 / 256) % 256
13:10:21 <ais523> second = (668196) % 356
13:11:01 <AnMaster> yep that matches when I dumped stack I think
13:11:01 <ais523> or you could just look at the hex output; the hour is 0xa, the minute is 0x32, the second is 0x24
13:11:33 <ais523> hmm... does ccbi have the same problem when run at that precise time?
13:11:36 <AnMaster> or actually 11:50:36 because I found out hour was off by one
13:11:40 <ais523> if so it's likely a bug in Mycology
13:12:20 <AnMaster> I run some time dependant stuff that would scream is I set clock back, and I can't compile ccbi myself
13:12:43 <ais523> so checking will be hard, then
13:13:19 <AnMaster> 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:32 <AnMaster> hard code the value of 10:50:36
13:14:18 <AnMaster> ais523, now it correctly says:
13:17:08 -!- olsner has joined.
13:24:29 <AnMaster> ais523, btw I'm happy there isn't any way to get phase of moon in befunge XD
13:24:39 <AnMaster> (unless you calculate it from date)
13:24:50 <ais523> AnMaster: there should be a fingerprint for that
13:24:53 <ais523> also the date of Easter
13:25:25 <AnMaster> 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 <AnMaster> 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 <ais523> maybe also convert between calendars of different cultures
13:27:39 <ais523> do the Western zodiac as well in that case
13:27:50 <ais523> oh, and also convert to sidereal and Darian just in case
13:27:50 <AnMaster> such a fingerprint would get extremely complex
13:28:00 <AnMaster> ais523, what about Discordian dates?
13:28:23 <ais523> just do as many calendary things as you can until you run out of capital letters
13:28:26 <AnMaster> you know there is some unix program for that called ddate
13:29:02 <AnMaster> ais523, nah, it could be C for convert, that pops type of calender to convert from, type to convert to and date
13:29:34 <AnMaster> 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 <AnMaster> sys-apps/util-linux (/usr/bin/ddate)
13:30:39 <ais523> 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 <ais523> at least tsort makes some kind of sense
13:31:21 <AnMaster> ais523, well no ddate on my freebsd :)
13:31:58 <AnMaster> factor: `42233453345345233256' is too large :/
13:48:13 <ais523> $ factor 9223372036854775807
13:48:13 <ais523> 9223372036854775807: 7 7 73 127 337 92737 649657
13:48:13 <ais523> $ factor 9223372036854775806
13:48:13 <ais523> 9223372036854775806: 2 3 715827883 2147483647
13:48:34 <ais523> so it can handle signed 64-bit ints
13:48:48 <ais523> at least in the implementation I have here
13:48:54 <ais523> still no idea why it's in coreutils, though
14:26:10 <AnMaster> 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 <ais523> (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:57:06 <AnMaster> and quite a few "possibly lost"
14:57:14 <AnMaster> meaning, pointer to somewhere inside object
14:57:29 <AnMaster> reason is that I allocate data cells for fungespace in chunks of 512 cells
14:57:57 <AnMaster> 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 <AnMaster> 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 <AnMaster> Deewiant, AAAAAAAAAAAAAAAAARGH! at rcfugne fingerprint docs, and I fail to understand wtf you are doing in subr.d
16:23:46 <Deewiant> AnMaster: fixed the bug with mycology's time output
16:24:20 <Deewiant> a 'a' instead of a '9' lead to the leading zero
16:24:24 <Deewiant> and then there was a misalignment
16:24:29 <Deewiant> should have hit a space but it hit a 'y'
16:25:38 <Deewiant> the call stack is initialized to 8, yes. but it can grow.
16:25:59 <AnMaster> Deewiant, why not create a normal temp stack?
16:26:20 <Deewiant> it needs to be persistent, no?
16:26:21 <AnMaster> err don't you have some stack class?
16:26:34 <AnMaster> Deewiant, it does? anyway is it local to ip or not?
16:26:40 <Deewiant> the D stdlibs don't have any containers like in C++
16:26:46 <Deewiant> not at the time of writing, anyway
16:27:27 <Deewiant> but anyhoo, sure I've got the stack class
16:27:35 <AnMaster> Deewiant, but anyway should it be local to ip, and, what do you mean persistent?
16:27:51 <Deewiant> 'cause this one doesn't pop zero when it's empty, for instance.
16:28:04 <Deewiant> I don't know, I can't remember what the fingerprint does.
16:28:43 <Deewiant> hmm, maybe it should be local to IP.
16:28:44 <AnMaster> see ret, the return address is on the main stack, no?
16:29:02 <AnMaster> so call stack should be local to function?
16:29:33 <Deewiant> to function? to IP, certainly, I think.
16:29:46 <Deewiant> although strictly speaking these are all UNDEF when it comes to multiple IPs.
16:30:01 <Deewiant> since RC/Funge-98's docs suck and it doesn't implement concurrency.
16:30:22 <AnMaster> 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:31:09 <Deewiant> and then it moves n cells from IP's stack to the callstack
16:32:03 <Deewiant> it pops n, then it puts the ret address, then it puts them back again.
16:32:31 <Deewiant> so it's just an optimization to avoid needless heap activity.
16:33:07 <Deewiant> AnMaster: you know 'register'?
16:33:17 <Deewiant> auto is basically the opposite
16:33:25 <Deewiant> but auto is also the default for all variables
16:33:45 <Deewiant> maybe in the old days you wanted to be explicit about auto vs. register or something
16:33:51 <AnMaster> that's the opposite of register
16:33:59 <AnMaster> auto would be default middle value
16:34:01 <Deewiant> I'm using the term 'opposite' loosely
16:34:09 <Deewiant> register -> put it in register
16:34:21 <Deewiant> volatile -> always read the value from wherever it came from
16:34:36 <AnMaster> therefore register is opposite of volatile
16:35:07 <Deewiant> I'd say none of these are opposites of each other, strictly speaking
16:35:16 <Deewiant> but anyway, that's 'auto' for ya.
16:38:51 * SimonRC wonders what is up with ddate's man-page
16:39:29 <SimonRC> actually, "auto" variables are those with automatic allocation
16:40:06 <SimonRC> but for some reason, my less thinks that the ddate manpage has ~6500 lines just befor the "EXAMPLES" subtitle.
16:41:54 <AnMaster> #\884***+1#<;#_ -! #_ bb*01- x>".dedaol">:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_$a,Testing fingerprint SUBR... loaded.
16:41:54 <AnMaster> 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx
16:43:04 <AnMaster> printing each instruction as it runs, at trace level 3, (at 4 it would print like: x=165 y=210: x (120) )
16:47:20 <AnMaster> Deewiant, help, what could cause that error on SUBR loading? :(
16:47:33 <AnMaster> >0" tnirpregnif gnitseT">:#,_00p410p310p210p110p>:;^p1p00:+1g00:;# _ " ...",,,, 41g:!#^_>31g:!#^_>21g:!#^_>11g 00g #^(22p33pv>".dedaol">:#,_$a, 0655**- \ ef* - x
16:48:01 <Deewiant> because that's the standard fingerprint loading routine
16:48:09 <AnMaster> Deewiant, yes, and it works for other fingerprints
16:48:23 <Deewiant> at the end, it hits an x and jumps to (15, y) where the y-coordinate is pushed at the fingerprint
16:48:41 <AnMaster> Testing fingerprint SUBR... loaded.
16:48:41 <AnMaster> Testing fingerprint SUBR... loaded.
16:49:32 <AnMaster> why would it load it twice wtf
16:49:44 <Deewiant> something's going wrong in that first x I guess
16:50:13 <AnMaster> 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 <Deewiant> what's that '5' after the first x
16:51:28 <Deewiant> 2008-03-15 17:41:54 ( AnMaster) 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx
16:52:23 * AnMaster traces in gdb to be able to catch the output
16:52:42 <AnMaster> because even without optimizing it takes just a fraction of a second to fill the scrollback with x
16:52:58 <SimonRC> how about teeing the output?
16:54:56 <AnMaster> Deewiant, http://rafb.net/p/mz4t6B40.html
16:55:58 <AnMaster> Deewiant, yes, looks like something jumped way too far
16:56:19 <Deewiant> looks like your math goes wrong somewhere
16:56:46 <Deewiant> it's your program, you debug it :-P
17:01:19 <AnMaster> Deewiant, ok J is broken, if I make J reflect i do get BAD but it doesn't lock up
17:02:02 <AnMaster> aha, missing a setting of delta in J I think
17:02:25 <Deewiant> J? I thought that died before getting to J
17:02:47 <SimonRC> What is this SUBR fingerprint?
17:02:54 <AnMaster> Deewiant, but J didn't set delta, you may want to test for that
17:03:14 <SimonRC> I thought '98 already did those
17:07:01 <AnMaster> Deewiant, pull to get my SUBR, not yet optimal
17:07:15 -!- Corun has quit ("This computer has gone to sleep").
17:07:44 <AnMaster> Deewiant, still around 0.075 seconds here for it :D
17:08:40 <SimonRC> I must have been confused by j in combination with u and {}
17:08:55 <AnMaster> SimonRC, those are different indeed
17:09:19 <AnMaster> but really, SUBR is quite possible to emulate using befunge
17:09:34 <AnMaster> Deewiant do that in mycology really
17:10:12 <Deewiant> sure, you just have to manually push the return address
17:10:23 <Deewiant> I make things easier by hard-coding the return x-coordinate as 15
17:12:06 * SimonRC considers a C->Befunge compiler
17:13:30 <SimonRC> actually a Forth might work quite well
17:14:32 <AnMaster> oh wait, C->befunge would be nice
17:14:47 <AnMaster> because then I could run cfunge under cfunge
17:15:02 <AnMaster> SimonRC, note that cfunge is very much C99, so would be quite a bit of work
17:15:13 <SimonRC> Aren't there enough befunge terps out there already?
17:15:26 <AnMaster> SimonRC, very few standard conforming ones
17:15:37 <AnMaster> CCBI and mine are all standard conforming ones I know
17:16:53 <AnMaster> SimonRC, http://users.tkk.fi/~mniemenm/befunge/mycology-comparison.html
17:17:28 <AnMaster> Deewiant, btw for mycology fix of date, you didn't update webpage it seems?
17:23:53 <Deewiant> can't be bothered to put it all there
17:24:06 <Deewiant> because they're mostly of the type "fixed typo" like that one.
17:26:16 * Sgeo is dead tiredbored
17:26:38 <AnMaster> SimonRC, anyway cfunge: http://rage.kuonet.org/~anmaster/cfunge/
17:43:02 <AnMaster> Deewiant, it is weird that my interpreter seems to get no slower for each fingerprint I add
17:43:20 <AnMaster> it is basically same speed, around 0.78 seconds in super-optimized mode
17:43:39 <AnMaster> 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:57 <ais523> I found it on Keymaker's website
17:44:06 <ais523> not sure if it's on esolangs
17:44:14 <AnMaster> ais523, how much do you win for that?
17:44:35 <ais523> but it was an interesting task, because Keymaker thought it was just a finite-state machine
17:44:54 <ais523> http://koti.mbnet.fi/yiap/splinter/splinter.html
17:46:00 <AnMaster> ais523, contact him/her about it?
17:46:15 <ais523> I may do at some point
17:46:53 * ais523 pastes their pushdown automaton to Splinter compiler
17:47:24 <AnMaster> Deewiant, is adding concurrency hard?
17:47:47 <ais523> http://pastebin.ca/943809
17:48:09 <Deewiant> AnMaster: dunno... potentially
17:48:19 <Deewiant> AnMaster: if you've just copied all my algorithms then probably not ;-P
17:48:30 <AnMaster> Deewiant, I have designed with concurrency in mind
17:48:49 <AnMaster> using ip->stack instead of some global stack stack variable
17:48:59 <AnMaster> err actually the latter I do but it's quite hidden
17:49:08 <ais523> 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 <AnMaster> 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:20 <AnMaster> Deewiant, the reason being I thought D was so different I wouldn't understand it, heh
17:51:47 <ais523> 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 <AnMaster> ais523, the whole program looks like a > heh
17:52:43 <AnMaster> ais523, that pastebin link, it may not exist forever
17:53:00 <ais523> AnMaster: it's meant to, but I still have the original file, just nowhere more permanent to put it
17:53:15 <ais523> there are a few pastebin links on Esolang for before things can be moved to a proper home
17:53:31 <ais523> and because pastebin.ca keeps things around forever, it's likely to last longer than many esolang sites
17:55:11 <ais523> when ehird's website is up, that would likely be a better place
17:58:46 <AnMaster> ais523, well I got launchpad to mirror cfunge and sf.net for download hosting
17:59:07 <ais523> it's more of a serious project than a proof-of-concept compiler, though
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 <AnMaster> Deewiant, btw about concurrent IP, would you do it as a linked list?
19:02:22 <AnMaster> considering this with inserting and removing IPs it seems like the best way
19:02:42 <Deewiant> I did that once, it ended up slower than arrays
19:03:23 <AnMaster> Deewiant, true not good for CPU cache
19:03:34 <Deewiant> aye, memory locality is likely the reason
19:04:19 <AnMaster> Deewiant, but adding a new one, or deleting an old one becomes O(n) with array, right?
19:06:34 <AnMaster> Deewiant, what file is IP *list* in?
19:06:36 <Deewiant> it's O(1) + memory allocation costs
19:07:11 <AnMaster> 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 <AnMaster> unless you use some hash map for it?
19:07:32 <Deewiant> allocate new array which is 1 bigger
19:07:38 <AnMaster> "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 <Deewiant> copy old_array[0..i] to the beginning
19:08:03 <Deewiant> copy old_array[i+1..end] to the end of the new array
19:08:16 <AnMaster> Deewiant, ok true, yes I get that bit, but that isn't O(1)
19:08:40 <AnMaster> it's something like O(n) for number of elements in array
19:08:48 <Deewiant> the memory allocation costs make it O(n) in practice
19:09:02 <AnMaster> Deewiant, yes and you can't copy all in one go
19:09:04 <Deewiant> but the copying can basically be done by sharing
19:09:18 <Deewiant> or hmm, actually only half of it can be done by sharing. darn, so it becomes O(n/2)
19:09:50 <AnMaster> err? *thinks* O(n/2) == O(n)??
19:10:18 <Deewiant> if you know the definition it makes sense
19:10:21 <AnMaster> Deewiant, that would only be true if n is treated as infinite
19:10:33 <AnMaster> mathematically speaking I mean
19:11:12 <Deewiant> the notation is a bit crap, but it makes it easier to talk about stuff
19:11:35 <AnMaster> 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 <Deewiant> for instance, it's not really "f = O(n)", it's "f ∈ O(n)"
19:12:39 <AnMaster> what does those means? they aren't same as mode
19:12:41 -!- ais523 has quit ("might be back soon, might not be").
19:13:13 <Deewiant> then there's the one or two for TRDS.
19:13:46 <AnMaster> 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:08 -!- sebbu has quit (Read error: 110 (Connection timed out)).
19:14:17 <AnMaster> Deewiant, err all of those are for TRDS?
19:14:29 <Deewiant> as you say, they wouldn't be necessary if it weren't for TRDS.
19:14:31 <AnMaster> oh god sounds like a real mess (yes it is)
19:19:20 <AnMaster> (sorry, considering ccbi's code, you *DO* think)
19:19:54 <Deewiant> I'm not sure they're necessary even now. depends on how the states get set.
19:20:34 <Sgeo> A spam email that sends to a malicious IP belongs to ucsd.edu
19:20:40 <AnMaster> or some D interal to make it sparse?
19:20:43 <Deewiant> no, C style arrays are static. :-)
19:20:55 <Sgeo> Do I forward the email to the technical contact, or should I send to abuse@ucsd.edu ?
19:21:03 <AnMaster> Deewiant, so it's a sparse array=
19:21:11 -!- ehird has joined.
19:21:15 <Deewiant> it's essentially a struct __someinternalname { whatever_the_type_is *data; size_t length; }
19:21:38 <ehird> it sounds interestermating
19:21:49 <ehird> and it's not like that
19:21:52 <ehird> the actual thingy is:
19:22:02 <ehird> struct __foo { size_t length; void *data; }
19:22:14 <ehird> but that is, of course, post-compilation
19:22:14 * Sgeo pokes urgently
19:22:15 <AnMaster> yes makes sense to store length first
19:22:22 <ehird> also i found a silly little thing
19:22:28 <ehird> imagine this structure for a string
19:22:33 <ehird> struct { size_t length; char first; }
19:22:36 <AnMaster> means less indirectly addressing to access first element of a struct
19:22:37 <ehird> you get to the data by:
19:22:45 <ehird> i think that would work
19:23:10 <ehird> the __foo includes size_t allocated; too
19:23:20 <Deewiant> AnMaster: it makes no difference whether you're accessing address FOO or FOO+x. that's implemented at the hardware level.
19:23:40 <AnMaster> Deewiant, yes at hardware level it (used to at least) make a difference
19:23:43 <Deewiant> ehird: that's for the GC, not in the struct itself, I don't think.
19:23:51 <AnMaster> Deewiant, in how many cycles the access took that is
19:23:53 <ehird> Deewiant: no, i mean how much it has been allocated
19:23:58 <ehird> not always == length.
19:24:10 <ehird> btw, how to allocate my structure thingy: malloc(sizeof(string_t) + (sz ? sz-1 : 0))
19:24:59 <AnMaster> 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 <AnMaster> ie, you execute counting downwards
19:25:14 <AnMaster> should make the first split faster
19:25:15 <Deewiant> ehird: yes, I know what you meant.
19:25:29 <Deewiant> it looks like it's defined as void** data actually.
19:25:37 <AnMaster> ehird, is that a struct that can grow at the end?
19:25:38 <ehird> Deewiant: that would make sense
19:25:46 <ehird> then the replacable array ref is obj*
19:26:00 <ehird> AnMaster: but transforms into a char*
19:26:03 <AnMaster> ehird, if it is, see how I do stackstacks in my code
19:26:18 * AnMaster use C99 flexible struct members
19:26:25 <ehird> AnMaster: the cool thing about it is that you don't need two pointers
19:26:33 <ehird> if one is always going to be in one place -- the struct -- it's pointless
19:26:39 <ehird> so just have one that can pretend to be both :D
19:26:47 <AnMaster> size_t size; /**< This is number of elements in stacks. */
19:26:47 <AnMaster> size_t current; /**< Top stack and current stack */
19:26:47 <AnMaster> fungeStack * stacks[]; /**< Array of pointers to stacks */
19:27:01 <AnMaster> stackStack = cf_realloc(*me, sizeof(fungeStackStack) + ((*me)->size + 1) * sizeof(fungeStack*));
19:27:36 <AnMaster> initial alloc is just: stackStack = cf_malloc(sizeof(fungeStackStack) + sizeof(fungeStack*));
19:27:44 <ehird> AnMaster: i like c89
19:27:52 <AnMaster> ehird, well that's your choice
19:27:54 <ehird> but i think there is a place for a langugae like c99
19:28:01 <ehird> just not as the latest c :)
19:29:18 <ehird> AnMaster: http://pastebin.ca/943924
19:29:42 <AnMaster> ehird, god, are you doing C99 feature in C89
19:30:02 -!- ais523 has joined.
19:30:04 <AnMaster> ehird, you know, the original gopher client had something like that
19:30:27 <ais523> AnMaster: you got the timing on that message so precise you beat the welcome message from ChanServ
19:30:40 <ehird> ais523: same happened when i came in
19:30:48 <AnMaster> ais523, err? it was 2 seconds later
19:30:50 <ais523> maybe Chanserv is just being slow today
19:30:51 <ehird> 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 <ehird> that's just a structure which is allocated past its size and the rest is used as char *
19:31:25 <ehird> ais523: I am splitting my dei language into two
19:31:27 <ehird> littledei and bigdei
19:31:32 <ehird> littledei will be the minimum to do your rewrites
19:31:35 <ehird> and bigdei will have IO
19:31:41 <ehird> but you can redirect input and output to 'sinks' to it will work
19:31:50 <ehird> and you can catch signals so [quit] is possible
19:31:53 <AnMaster> 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:32:00 <ais523> so very very slightly worse than O(n)
19:32:12 <ehird> AnMaster: no, not really
19:32:24 <AnMaster> ehird, it works the same *shrugs*
19:32:26 <ehird> ais523: link to your rewrites again?
19:32:28 <ehird> AnMaster: so does two pointers
19:32:42 <AnMaster> ehird, no, that is one more level of indirection
19:33:50 <ehird> which is turing complete
19:33:54 <AnMaster> * 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:34:27 <ais523> AnMaster: it's apparently one of the algorithms for solving the [[Minimal Spanning Tree]] problem
19:34:36 <ais523> mentioned in some of the pages around there
19:34:45 <ais523> none of them said explicitly what the algorithm was, though
19:35:09 <ehird> ais523: hmm, i need a special value to put at the start of the program
19:35:25 <ais523> ehird: that's the most obvious option
19:35:28 <AnMaster> ehird, is this TURKY BOMB, your funge or what?
19:35:41 <ais523> AnMaster: it's a concatenative language without the [] operator
19:36:15 * ais523 is still trying to find the link
19:36:30 <ais523> http://pastebin.ca/943140
19:36:58 <ais523> it's how to translate programs written in terms of [] into programs written in terms of dei
19:37:11 <ehird> which is, of course, scary :)
19:37:25 <ais523> (assuming the semantics for i dei are to evaluate TOS, then push [i]; that isn't clear from the spec)
19:37:51 <ais523> ehird: did you see my proof that Splinter was a PDA that I linked in #esoteric earlier today?
19:38:16 <ehird> which ais523 will now find and give a link, maybe ;)
19:38:17 <ais523> SimonRC: ehird's most recent spec was http://pastebin.ca/943115
19:38:25 <ais523> ehird: way to cross messages...
19:38:36 <ehird> and no, ais523, I didn't
19:38:47 <ehird> SimonRC: basically, `X dei` is `X [X]`
19:38:50 <ehird> but before X is executed
19:38:55 <ehird> `dup dei` => `dup [dup]`
19:39:02 <ehird> so the top element of the stack is duplicated, then [dup] is pushed
19:39:10 <SimonRC> "Firefox can't find the server at www.pastebin.ca." !
19:39:22 <ais523> SimonRC: there isn't a www at the start of the name
19:39:27 <ehird> http://pastebin.ca/943935
19:39:38 <ehird> the smallest dei that is turing complete, as far as I know
19:39:40 <ehird> also, more formally specified
19:39:55 <ehird> I will now do the noble thing and write an interpreter using s///
19:40:04 <ehird> ais523: before I start, what's the "and redo" trick? it looks useful
19:40:12 <SimonRC> well firefox is putting it there
19:40:21 <ais523> ehird: it jumps back to the start of the {} block you're in
19:40:30 <ais523> if the command succeded
19:40:48 <ais523> when combined with s/// it gives you Thutu-style replacements: start the block again if you make a change
19:41:11 <ais523> SimonRC: can you ping pastebin.ca?
19:41:23 <ehird> ais523: hm damn i don't think i can implement this
19:41:42 <ehird> can't do that with regexps
19:41:46 <ais523> ehird: learn to write recursive regexps
19:41:54 <ais523> the syntax was improved a lot for Perl 5.10
19:42:12 <ais523> but the 5.005 syntax is to declare a part of a regexp with $variable=qr/regexp/
19:42:23 <ais523> and to access it with (?{{$variable}})
19:42:24 <ehird> ais523: i have 5.10
19:42:36 <ais523> in that case, (?R) will do the entire regexp
19:42:47 <ais523> as in, it recurses the whole thing
19:43:01 <ais523> there's also syntax to recurse into one group which I've forgotten right now, but is very simple
19:43:12 <ais523> SimonRC: can you access other websites?
19:43:15 <ehird> ais523: hmm, how does kate highlight: 'whatever / 25 ; # / ; die "this dies!";'
19:43:20 <ehird> cperl-mode highlights it as divide+Comment
19:44:18 <ais523> Kate interprets it as divide+comment
19:44:32 <SimonRC> "Ping request could not find host pastebin.ca. Please check the name and try again."
19:44:37 <ehird> ais523: my $q = /(\[(?:(?:R)|[^ ]+)+\])/;
19:45:16 <ais523> 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 <ais523> sorry, not reserved word, built in function
19:45:38 <ehird> ais523: hmm, I want $q to match 'foo [bar baz]' in [foo [bar baz]]
19:46:07 <ehird> /\[((?:(?:R)|[^ ]+)+)\]/
19:46:09 <ehird> think that's right
19:47:25 <ais523> SimonRC: can you navigate to http://208.68.18.97/
19:47:38 <ais523> that's how you write pastebin.ca as numbers, according to ping
19:47:48 <ais523> (i.e. by IP rather than by domain name)
19:48:13 <ais523> ehird: you want to put \[ and \] inside your character class [^ ]
19:48:40 <ais523> SimonRC: that's strange, it seems like bits of the internet are inaccessible to you for some reason
19:49:03 <Sgeo> What does "(qmail 11842 invoked from network)" mean?
19:49:06 <ehird> ok now i need to know how to debug this :p
19:49:19 <Sgeo> what does it mean?
19:49:34 <Sgeo> In a Received: header in some spam
19:49:35 <ais523> ehird: putting a print; just inside your block that you're redoing into is generally useful for debugging, I find
19:49:41 <Sgeo> Received: (qmail 11842 invoked from network); Mon, 10 Mar 2008 11:30:46 +0530
19:49:47 <ehird> ais523: oh and i want *
19:50:02 <SimonRC> well, it is just giving the PID of the qmail process that invoked it
19:50:07 <ais523> ehird: only the outer +
19:50:17 <SimonRC> I mean the PID of the one that processed it
19:50:20 <ais523> or you could have zero-character combinators, HOMESPRING-style
19:50:20 <ehird> ehird@ehird-desktop:~$ echo 'i'|perl minidei.pl
19:50:46 <ais523> ehird: are you using $_ for your s///s?
19:50:53 <Sgeo> Received: from unknown (HELO forki) (28.116.40.228)
19:51:10 <Sgeo> Is that Received: line reliable, even with the Received: with the qmail above it?
19:51:15 <ehird> ais523: http://pastebin.ca/943947
19:51:28 <ehird> Sgeo: qmail is a program
19:51:43 <Sgeo> What is it doing in the header like that?
19:51:51 <ehird> Sgeo: advertising itself to the world
19:51:56 <ehird> what it is saying is:
19:52:09 <Sgeo> And could that line be used to fake wahtever's below it?
19:52:12 <ehird> '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 <ehird> And you can always fake every part of an email.
19:52:33 <ais523> ehird: you need to write my $q = qr/\[((?:(?:R)|[^ \[\]]+)*)\]/; and so on (note the extra qr)
19:52:44 <ehird> ais523: okies. why?
19:52:48 <Sgeo> Received: from 210.211.190.168.bb-static.vsnl.net.in ([210.211.190.168])
19:52:48 <ais523> so that the regexp is evaluated when it's included, rather than when you declare it
19:52:48 <Sgeo> by mx.google.com with SMTP id 13si12968233fks.8.2008.03.09.23.02.19;
19:52:48 <Sgeo> Sun, 09 Mar 2008 23:02:24 -0700 (PDT)
19:52:49 <ehird> SimonRC: most that matter :)
19:53:01 <SimonRC> at some point the email must have finished passing through untrusted computers
19:53:03 <ais523> it's like writing '(list) rather than (list) in Lisp
19:53:12 <ehird> ais523: still the same
19:53:27 <SimonRC> and almost any trusted computer will tell you if it detects it is being given bogus headers
19:53:41 <SimonRC> like, computers that lie about who they are
19:53:52 <ais523> is 0 all the output you're getting?
19:54:09 <ais523> or is there other output first?
19:54:17 <Sgeo> The only line that looks like it might have been used for forging earlier stuff is the qmail one
19:54:50 <ehird> i guess that is wrong
19:55:13 * ais523 feels stupid for not noticing that
19:55:57 <ehird> ehird@ehird-desktop:~$ echo 'wrap'|perl minidei.pl
19:56:14 <ehird> i didn't implement it
19:57:05 <ehird> ais523: i think $e is broken
19:57:18 <ehird> $e should match the whole [..]
19:57:34 <ais523> and $w needs to exclude square brackets
19:57:38 <ehird> ais523: wait a second..
19:57:43 <ehird> the only time $e will be used is for dei
19:57:49 <ehird> since otherwise all we have are quotations
19:57:56 <ehird> since the words to the left have been executed
19:58:12 <ehird> dei only needs to match on words!!
19:58:31 <ais523> but your implementation of i is wrong
19:58:40 <ais523> it needs to remove the outermost set of square brackets
19:58:47 <ehird> ais523: it does. [..] does
19:59:07 <ehird> ehird@ehird-desktop:~$ echo 'dup dei i'|perl minidei.pl
19:59:09 <ais523> because the [] are /inside/ the () in $q. That's clever
19:59:16 <ehird> ais523: yep. and sorry for the flood
19:59:20 <ehird> everything looks so much smaller in the terminal window
19:59:25 <SimonRC> why is there a "dei" instruction?
19:59:37 <ais523> SimonRC: because [] isn't allowed in input programs
19:59:38 <ehird> SimonRC: because there's no [..] instruction
19:59:42 <ais523> so you have to do everything with dei
19:59:44 <ehird> which i should fix, actually
19:59:52 <ehird> technically the spec allows [...] in the program just as a word
19:59:57 <ehird> but i'll just die if i find [..]
19:59:57 <ais523> it's ehird being deliberately difficult
20:00:01 <ais523> which is the nature of esolangs, after all
20:00:04 <ehird> ais523: that is one way of saying it
20:00:50 <ehird> ais523: can i use <> multiple times?
20:01:02 <ais523> you get one line each time you do
20:01:13 <ais523> if you set $/=undef you get one file each time you do instead
20:01:23 <ehird> what's the easiest way to just slurp all of stdin?
20:01:28 <ais523> (that is, one file from the command line, and stdin when they run out)
20:01:33 <ehird> command line OR stdin
20:01:42 <ais523> ehird: $/=undef; $something=<>
20:01:55 <ais523> that gives you the first file on the cmdline, or stdin if there weren't any
20:02:31 <ais523> although if you're aiming for encapsulation saying local $/=undef will localise the change on <>'s effect to the entire program
20:02:54 <ais523> the golfing variant of this is $/=$]
20:03:04 <ehird> [] found in input at minidei.pl line 3, <> chunk 1.
20:03:05 <SimonRC> huh? "localise the change ... to the entire program"?
20:03:06 <ais523> it sets the line separator to the Perl version number, which is unlikely to be in the input
20:03:11 <ehird> i love how perl puts useufl crap at the end of your message
20:03:40 <ais523> SimonRC: if you were using multiple program files, which is how Perl does object-orientation, or you were writing a module
20:03:50 <ais523> 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 <ehird> Sgeo: Presumably, a program that could do that could just find abuse itself.
20:04:49 <ehird> ais523: http://pastebin.ca/943963 minideiii! It works.
20:05:05 <ehird> It's public domain because it's so trivial that I couldn't bring myself to even MIT it
20:05:19 <ehird> that is also my first perl program beyond 'hello world', really
20:05:26 <ehird> it's far too readable, i guess
20:05:39 <ais523> ehird: I write like that too
20:05:51 <ais523> although I suspect the reason the program looks like that is that you were copying my style
20:06:14 <Sgeo> Well, the email listed as the Registrant in the whois for vsnl.net.in doesn't exist
20:06:26 <ehird> ais523: yeah, i probably was..
20:07:24 <ehird> need to fix up whitespace
20:08:12 <ais523> 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 <ais523> and otherwise treats it as a division
20:08:35 <ais523> ehird: I was trying even functions which don't normally take regexps as arguments, like log
20:08:39 <ehird> ais523: http://pastebin.ca/943970
20:08:44 <ehird> made it do deis in steps
20:09:05 <pikhq> You know what this channel needs?
20:09:10 <pikhq> A more fleshed-out topic.
20:09:12 <SimonRC> I wonders if pastebin.ca have a reguler customer discount scheme...
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 <ehird> ais523: 'drop dei dup i' is a program worth trying
20:10:13 <ehird> i love how you can see it expand the is out D:
20:10:22 <ehird> pikhq: Would the qdb count? :p
20:10:45 <ais523> ehird: I get similar joy watching similar things in Underlambda
20:10:55 <ais523> which is implemented and debugged the same way ATM
20:11:12 <pikhq> #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 <ais523> it's great to see it collapse a whole line of lambdas
20:11:18 <pikhq> ehird: Does it work?
20:11:34 <pikhq> We can add it once it works.
20:11:41 <Sgeo> How can "no reply" exist in tracepath?
20:11:48 <pikhq> Meanwhile, if that's a sufficient topic, then I'm changing to it.
20:11:50 <Sgeo> 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 <ehird> pikhq: I like our topic
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 <ehird> ais523: Hmm, I'm going to implement your flattener and use it to write an infinite loop
20:12:30 <ehird> (:^):^ -> [dup i] dup i
20:12:34 <ehird> i can do that manually
20:12:48 <Sgeo> Seems like this spammer just sent from their computer directly to Google's computer..
20:12:59 <Sgeo> Received: from itlxx ([92.81.128.73])
20:12:59 <Sgeo> by mx.google.com with SMTP id g1si18349881muf.5.2008.03.15.03.37.47;
20:12:59 <Sgeo> Sat, 15 Mar 2008 03:37:48 -0700 (PDT)
20:13:04 <ais523> 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 <Sgeo> No Received:'s after that
20:13:15 <ehird> dup dei swap drop dup swap dei i dei swap drop compose dup i
20:13:29 <ehird> that doesn't wooooork
20:13:31 <Sgeo> So did they just connect to mx.google.com or wahtever?
20:13:36 <ehird> ais523: wanna post a new spec so i can retest?
20:14:08 <ais523> ehird: it's the same, just with the rule for [i] changed to [i] => wrap i dei
20:14:21 <SimonRC> ehird: how do you get arbitrary stuff inside brackets?
20:14:33 <Sgeo> Actually, what is mx.google.com ?
20:14:35 <ehird> SimonRC: http://pastebin.ca/943140
20:14:43 <ehird> SimonRC: that's all the underload functions, sans S
20:14:46 <SimonRC> ehird: no good, pastebin is still fail for me
20:14:50 <ehird> so, that's all you NEED to get in brackets
20:14:58 <ehird> and by 'coincidence' ;) that's all there is in the spec
20:15:04 <ehird> SimonRC: MAIL exchange
20:15:08 <SimonRC> named after MX DNS records, I assume
20:15:18 <SimonRC> um, yeah, I meant to type Mail
20:15:34 <ais523> SimonRC: http://rafb.net/p/e3X6O830.html is the same as what ehird just linked
20:15:40 <ais523> I just repasted it elsewhere so you could see it
20:15:59 <Sgeo> So how does one connect directly to gmail's server?
20:16:51 <ehird> Sgeo: Just how your mail client does it.
20:17:02 <ehird> ais523: Hmm. How does that handle, e.g. [X [wrap]]?
20:17:04 <Sgeo> I think I meant server-to-server
20:17:05 <ehird> that is, when the second isn't a word
20:17:08 <ehird> The same way, I'd bet
20:17:10 <Sgeo> Because I think that's what the spammer did
20:17:24 <ais523> ehird: it splits it into [X] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=wrap compose
20:17:53 <ais523> SimonRC: my client expands [[ ]] into links to Wikipedia
20:17:58 <ais523> which is sometimes useful, and sometimes not useful
20:18:17 <ais523> I'll write it as (X) ((wrap)) compose to prevent that happening
20:20:10 <Sgeo> How do I get the mx record for gmail.com?
20:21:10 <ehird> ehird@ehird-desktop:~$ echo '[dup i] dup i' | perl flatten.pl
20:21:28 <ehird> it goes into a huuuge compose chain
20:21:31 <ehird> ais523: maybe your order is wrong
20:21:39 <ehird> [] [] compose dup i
20:21:39 <ehird> [] [] compose compose dup i
20:21:49 <Sgeo> with the host command? oh
20:22:08 <ais523> ehird: are you making sure that the [] splitter insists both halves are positive-length
20:22:16 <ais523> you may be accidentally using * rather than +
20:22:17 <Sgeo> host is easier to read
20:22:21 <Sgeo> But I should learn the dig stuff
20:22:51 <ehird> ais523: http://pastebin.ca/943984
20:22:54 <ehird> newest version of both scripts
20:23:55 <ais523> ehird: you need capture parens around the $w in the [$w $w] rule
20:24:44 <ehird> ais523: now it thinks it should be:
20:24:45 <ehird> [dup]]]]]]]]] [[[[[[[[[i] compose compose compose compose compose compose compose compose compose dup i
20:25:09 <ais523> ehird: you still haven't banned [ and ] in $w
20:25:41 <Sgeo> why isn't it working?
20:25:49 <Sgeo> sgeo@ubuntu:~$ telnet gmail-smtp-in.l.google.com 25
20:25:49 <Sgeo> Trying 72.14.205.27...
20:26:01 <ehird> ais523: Well now it converts
20:26:04 <ehird> but runs in finite time
20:26:13 <ais523> ehird: what does it convert to?
20:26:13 <ehird> Sgeo: you didn't say HELO
20:26:19 <ehird> dup dei swap drop wrap i dei compose dup i
20:26:32 <Sgeo> sgeo@ubuntu:~$ telnet alt1.gmail-smtp-in.l.google.com 25
20:26:32 <Sgeo> Trying 72.14.221.27...
20:26:32 <ais523> that looks right to me?
20:26:42 <ehird> dup [dup] swap drop wrap i [i] compose dup i
20:26:43 <ais523> (I don't have 5.10 installed over here)
20:26:46 <ehird> so let's run through that
20:26:54 <ehird> [] dup [dup] swap drop wrap i [i] compose dup i
20:26:58 <ehird> [] [] [dup] swap drop wrap i [i] compose dup i
20:26:59 <Sgeo> and how do I make sure the proper line endings are being used?
20:27:02 <ehird> [] [dup] [] drop wrap i [i] compose dup i
20:27:06 <ehird> [] [dup] wrap i [i] compose dup i
20:27:10 <ehird> [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i
20:27:15 <ehird> [] [dup] [i] compose dup i
20:27:30 <ehird> [] [dup i] [dup i] i
20:27:40 <ehird> it is minidei.pl's fault
20:27:49 <ehird> [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i
20:28:20 <ehird> ais523: Think I got it
20:28:24 <ehird> $q doesn't handle nested
20:28:33 <ehird> Does (?R) make a group?
20:28:56 <ehird> that's what it sees
20:28:59 <ais523> ehird: I'm not too sure about the new recursion syntax
20:28:59 <ehird> so, I need to fix $q
20:29:07 <ais523> seeing as I can't use it over here, I never learnt it
20:29:09 <ehird> Sequence (?R...) not recognized in regex; marked by <-- HERE in m/\[((?:(?R <-- HERE )|[^ \[\]]+)*)\]/ at minidei.pl line 9.
20:29:15 <ehird> ais523: (?:R) is just matching R.
20:29:22 <ehird> This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
20:29:34 <ais523> it's ugly, but it works
20:29:59 <ehird> Sequence (??:...) not recognized in regex; marked by <-- HERE in m/(?:(??: <-- HERE {})|[^ \[\]]+)*/ at flatten.pl line 7, <> chunk 1.
20:30:24 <ehird> now it dies at [] [dup i] dup i
20:30:40 <ehird> there's no reason for that to fail
20:30:51 <ehird> my $q = qr/\[((?:(??{$q})|[^ \[\]]+)*)\]/;
20:31:59 <Sgeo> sgeo@ubuntu:~$ telnet alt1.gmail-smtp-in.l.google.com 25
20:31:59 <Sgeo> Trying 72.14.221.114...
20:31:59 <Sgeo> HELO [24.191.104.202]
20:32:14 <ehird> ais523: hmm yours is kinda b0rken
20:32:18 <ehird> ehird@ehird-desktop:~$ echo '[[[dup [i] dup]]]' | perl flatten.pl
20:32:18 <ehird> [[[dup wrap i dei dup]]]
20:32:19 <ehird> and it stops there
20:32:24 <ehird> SO, in conclusion:
20:33:43 <ehird> ais523: Does (??{x}) make a group?
20:35:07 <ehird> ais523: ok, so it's not that
20:35:09 <ais523> ehird: does $q allow spaces between items in a group?
20:35:15 <ehird> ais523: HEY wait a second..
20:35:19 <ais523> I can't see where you explicitly allow them
20:35:32 <ehird> qr// + (??{$me}) == ?
20:35:46 <ais523> I've done it many times before
20:36:02 <ehird> ais523: ok minidei works now
20:36:08 <ehird> my $q = qr/(?:(??{$q})|[^\[\]]+)*/;
20:36:10 <ehird> doesn't work, for flatten
20:36:19 <ehird> maybe because of my missing out of \[\]
20:36:46 <ais523> ehird: you want my $q = qr/(?:(??{$q}) *|[^ \[\]]+ *)*/
20:37:00 <ais523> so that you can have spaces between bracketed groups, and between words
20:37:06 <ehird> ais523: If you look, it can
20:37:09 <ais523> actually, that's equivalent, ignore me
20:37:16 <ehird> I don't disallow spaces in the group any more
20:37:43 <ais523> ehird: I noticed, but for some reason thought it prevented you putting spaces between two [] groups. It doesn't though
20:38:00 <ais523> and yes, you need [] around the (??{$q})
20:38:16 <ehird> my $q = qr/\[(?:(??{$q})|[^\[\]]+)*\]/;
20:38:27 <ehird> stops at: [[dup wrap i dei dup]] wrap
20:38:31 <ehird> that's from minidei.pl
20:38:35 <ais523> y $q = qr/(?:\[(??{$q})\]|[^\[\]]+)*/;
20:38:43 <ehird> because I fixed $e too
20:38:48 <ehird> my $e = qr/$w|($q)/;
20:39:09 <ehird> i.e. more than two elements
20:39:12 <ehird> because you just have $w $w
20:39:17 <ehird> so, it never matches in the first place
20:39:24 <ais523> ehird: one of them is meant to be able to match multiple elements
20:39:30 <ehird> i need to ignore the rest of the block thingy..
20:39:41 <ehird> s/\[$w $w\]/[$1] [$2] compose/ and redo;
20:39:43 <ehird> that's the problem
20:39:57 <ais523> so change the second one to ( $w)+
20:40:19 <ehird> ais523: third one. actually.
20:40:42 <ais523> I mean s/\[$w( $w)+\]/[$1] [$2] compose/
20:40:47 <ais523> although that has minor whitespace problems
20:41:00 <ehird> dup dei swap drop dup] compose compose] wrap
20:41:05 <ehird> I know a solution though..
20:41:16 <ehird> s/\[$w((?: $w)+)\]/[$1] [$2] compose/ and redo;
20:41:19 <ehird> that doesn't work either
20:41:49 <ehird> (GROUP)+ is like ((?:GROUP)+)
20:42:05 <ais523> but the ((?:GROUP)+) is what I meant
20:42:36 <ehird> [[dup wrap i dei dup]] wrap
20:42:36 <ehird> [[dup] wrap i dei dup] compose] wrap
20:42:39 <ehird> that is the broken transition
20:42:52 <ehird> s/\[$w((?: $w)+)\]/[$1] [$2 compose/ and redo;
20:43:10 <ehird> ais523: don't ask me..
20:43:11 <ais523> how did the closing ] get into $2
20:43:22 <ais523> ehird: are you banning ] in $w?
20:43:28 <ais523> that's the only explanation
20:43:57 <ais523> ehird: paste what you have so far?
20:44:41 <ehird> http://pastebin.ca/944013
20:44:44 <ehird> commented out version doesn't work
20:44:55 <ehird> i'll paste the new minidei.pl once flatten.pl works
20:46:07 <ehird> ais523: also, yours can't dei-ify []
20:46:12 <ehird> -- which will be very hard indeed
20:46:24 <ais523> ehird: deify [dup drop]
20:46:30 <ais523> which means exactly the same thing
20:47:12 <ehird> ais523: 'nother bug
20:47:14 <ehird> ehird@ehird-desktop:~$ echo '[dei i]' | perl flatten.pl
20:47:47 <ehird> [i i i i i i i i i i i]
20:47:48 <ehird> [i] i i i i i i i i i i compose
20:47:48 <ehird> wrap i dei i i i i i i i i i i compose
20:48:19 <ais523> ehird: the flattener wasn't designed to handle dei
20:48:39 <ais523> and the square-brackets quickfix obviously didn't work, we'll have to find out what the problem actually was
20:49:34 <ehird> ais523: was it not? okay :P
20:49:45 <ehird> but [i i i i i ii i ] is definately broken
20:50:41 <ais523> and I'm pretty sure it's for the same reason as the square-bracket mismatch is
20:53:03 <ehird> ais523: i'm truly not sure
20:54:26 <ais523> ehird: the [$w $w] rule isn't allowing nested []s
20:54:31 <ais523> it needs to for the flattener to work
20:54:42 <ais523> but that doesn't sort out the [i i i i i i i i] problem
20:56:55 <ehird> ais523: so.. $e $e
20:57:23 <ehird> ais523: and, it does solve the i i i i i problem
20:57:31 <ehird> it does: wrap i dei [] compose
20:57:43 <ehird> [i i i i i i i i i i i]
20:58:23 <ehird> [i i i i i i i i i i i]
20:58:27 <ehird> it isn't being captured right
20:59:33 <ais523> personally, I never put capture brackets in the qr// quotes, because it makes things too confusing to follow on occasion
21:00:41 <ehird> s/\[\[((?: ?$e)*)\]\]/[$1] wrap/ and redo;
21:04:41 * Sgeo blinks at the existance http://museum/
21:05:28 <ehird> Sgeo: congrats, you discovered firefox's auto search
21:05:37 <Sgeo> ehird, um, that's not autosearch
21:05:40 <ais523> Sgeo: that's a bad URL, so it's either autosearch or a local DNS entry
21:05:56 <Sgeo> ais523, are you saying that you didn't try it?
21:05:59 <ais523> there are some local DNS entries at my university which can only be accessed from there and have invalid URLs
21:06:12 <ais523> Sgeo: I did, I just get 'Unknown host'
21:06:34 <Sgeo> ehird, I said http://museum/ not anything else
21:06:43 <ehird> Sgeo: firefox sees http://foo
21:06:47 <ehird> and turns it into http://www.foo.com
21:07:23 <tejeez> museum actually points to 195.7.77.17
21:07:56 <Sgeo> what tejeez said
21:08:08 <Sgeo> ehird, try it in links2 or something
21:08:34 <ais523> Sgeo: fails for me in both Konqueror and w3m
21:08:43 <ehird> ehird@ehird-desktop:~$ ping museum
21:08:43 <ehird> ping: unknown host museum
21:08:49 <ais523> maybe it's one of the national DNSes?
21:08:57 <Sgeo> sgeo@ubuntu:~$ ping museum
21:08:58 <Sgeo> PING museum (195.7.77.17) 56(84) bytes of data.
21:08:59 <ehird> ais523: museum is a tld
21:09:05 <ehird> Sgeo: uhh, what does the page say
21:09:08 <ais523> ISTR one of them allows people to register invalid URLs
21:09:47 <ehird> ais523: that's cool
21:10:05 <ais523> can't remember which one, though, and the resulting URLs aren't portable to other DNSes
21:10:14 <ais523> so you can only access them in a limited geographical region
21:10:43 <Sgeo> `dig @4.2.2.1 museum`
21:10:46 <Sgeo> Note the A record
21:11:02 <ais523> Sgeo: if there isn't an AAAA record it'll become obsolete soon
21:11:25 <ehird> I am going to piss someone off:
21:11:31 <ehird> Brian D Foy. Brian D Foy. Brian D Foy. Brian D Foy. Brian D Foy.
21:11:35 <Sgeo> ais523, why doesn't google have an AAAA record?
21:11:37 <ehird> you cannot silence me, Brian D Foy!
21:11:47 <ais523> Sgeo: ipv6.google.com does
21:11:50 <ehird> Sgeo: ipv6.gooogle.com
21:11:55 <ehird> ais523: they said that in 1995
21:11:57 <ais523> they put it up recently
21:12:13 <Sgeo> So, A will become obsolete when IPv4 does?
21:12:18 * Sgeo won't hold his breath
21:12:20 <ehird> ais523: I meant, 'obsolete soon'
21:12:25 <ehird> And for one -- Sgeo is totally right.
21:13:01 <ehird> there is probably people in here younger than ipv6
21:13:19 <ehird> and since ipv4 was going to be 'obsolete soon' as soon as ipv6 was discussed...
21:13:29 <ehird> .. we've been waiting a long time :p
21:13:35 * Sgeo wonders if http://museum./ works better
21:13:51 <ehird> compared to ipv6 arc was quite zippy
21:13:51 <ais523> ehird: IETF went and turned off IPv4 access from their conference to see what would happen
21:14:04 <ehird> ais523: that means nothing
21:14:11 <ehird> that just means the ietf are fooling themselvse about ipv6
21:14:20 <ais523> ehird: it means that ipv6 is becoming usable
21:14:26 <ais523> it's the default on Vista, by the way
21:14:27 <AnMaster> 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 <Sgeo> <kyevan> I had to tell it to actually look at museum.
21:14:44 <AnMaster> Deewiant, because I think k + t will break *horribly* here
21:14:57 <Deewiant> AnMaster: spawns 4 threads which all start execution at k
21:15:13 <Sgeo> tejeez, about.museum doesn't have the same kind of "that's ALLOWED?" as museum or museum.
21:15:19 <AnMaster> Deewiant, yes they will all follow the same path? right?
21:15:27 <ehird> ais523: have you seen this: http://www.livejournal.com/doc/server/bml.index.html?
21:15:30 <ehird> it's horribly 1996
21:15:33 <Deewiant> AnMaster: aye, since they're all just reversed from the original
21:15:37 <ais523> w3m works for http://museum./ for me
21:15:41 <AnMaster> Deewiant, I suspect order may get messed up heh
21:15:57 <AnMaster> Deewiant, ie, thinks *will* break here for that
21:16:04 <ehird> ais523: look at the examples
21:16:20 <tejeez> Sgeo: yeah, but it shows if the used dns server allows .museum domains
21:16:22 <Deewiant> AnMaster: why's that? all are just prepended
21:16:31 <ehird> ais523: they tried to make it look more modern
21:16:31 <ehird> try: http://bradfitz.com/bml/
21:16:36 <Sgeo> tejeez, shouldn't they all allow it?
21:16:44 <AnMaster> Deewiant, appended to end in fact, and traversed backwards
21:17:06 <AnMaster> Deewiant, I'll test both models to see what one is fastest at mycology :)
21:17:18 <Deewiant> AnMaster: appending to end is faster
21:17:29 <AnMaster> Deewiant, yep, that's what will happen first time
21:17:32 <ehird> ais523: one of the gems: 'H1=>{D}<P><FONT SIZE=+1><B>%DATA%</B></FONT>'
21:17:44 <AnMaster> Deewiant, but if original IP spawns again... then it would be slower
21:18:00 <ais523> ehird: it looks like obfuscated HTML
21:18:01 <AnMaster> ie if all splits happen from main thread, or if all happens from each new child
21:18:18 <ehird> ais523: well, that is html
21:18:21 <ehird> ais523: with template crap around it
21:18:41 <ais523> MediaWiki markup probably does much the same thing and looks much better than that
21:18:43 <AnMaster> 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 <ehird> the html is also amusingly 1996
21:18:52 <ehird> ais523: it was developed for livejournal
21:18:55 <ehird> & lj still uses it.
21:18:55 <AnMaster> Deewiant, that persists during the entire program
21:19:05 <ehird> ais523: in fact, the architechture of lj is very simple..
21:19:11 <ehird> ais523: there are lots of perl files
21:19:12 <ais523> ehird: wouldn't that been it was full of <blink> tags, frames, and weird JavaScript designed to look flashy?
21:19:17 <ehird> ais523: but the actual webpages are php-style bml
21:19:21 <ehird> ais523: with embedded perl
21:19:25 <Deewiant> AnMaster: not sure, it might have mattered for some fingerprint or something
21:19:30 <ehird> the site may look modern nowadays
21:19:32 <ehird> but it's just a skin..
21:19:42 <AnMaster> Deewiant, yes but what one do CCBI do? standard doesn't say anything about it
21:20:02 <Deewiant> AnMaster: I think with CCBI they're 64-bit and unique... but I'm not sure
21:20:29 <ehird> ais523: oh, and the livejournal software requires ROOT ACCESS to set up
21:20:33 <ehird> ais523: it's almost as fiddly as slashcode
21:20:38 <AnMaster> Deewiant, err, 64-bit? I thought data typed used was 32-bit, so if you spawned 2^31 you would get issues?
21:20:53 <ehird> ais523: you know I have no idea
21:20:55 <ehird> ais523: but it does, officially
21:20:59 <AnMaster> Deewiant, as y couldn't return it in a single data cell
21:21:13 <Deewiant> AnMaster: beats me, okay? look at the source. :-P
21:21:35 <ehird> ais523: it's really crazy
21:22:09 <ehird> http://code.sixapart.com/trac/livejournal/browser/trunk
21:22:16 <AnMaster> Deewiant, btw what does ! mean in D? as in new Stack!(Semantics);
21:22:23 <ehird> there is a directory named 't'
21:22:29 <ehird> AnMaster: Stack!(foo) -> Stack<foo>
21:22:37 <ehird> or whatever you wish to call em
21:22:52 <AnMaster> ehird, I've used generics in C# yes so I know what they are
21:23:06 <AnMaster> just used foo<bar,quux> syntax there
21:23:14 <ehird> ais523: whoaaa.... livejournal uses INLINE C!
21:23:15 <ehird> http://code.sixapart.com/trac/livejournal/browser/trunk/src/utf8.pl
21:23:41 <ais523> ehird: C's a compiled language usually, so I'm not sure if that even makes sense
21:24:14 <ehird> ais523: it compiles it out from a string
21:24:20 <ehird> i'm suprised you don't know of it
21:24:29 <ehird> but ... yeah. in a blog software?!
21:24:45 * ais523 's mouse just came apart
21:25:05 <ehird> ais523: btw, heres the big glob of bml http://code.sixapart.com/trac/livejournal/browser/trunk/htdocs
21:25:05 <ais523> but I've snapped it back together; the battery cover keeps coming off
21:25:05 <AnMaster> ehird, wait, does it compile it once in a temp dir or what?
21:25:06 <ehird> AnMaster: pretty much
21:25:08 <ehird> AnMaster: it's clever
21:25:09 <AnMaster> ehird, ie, how does it work, does it fork() to run the code?
21:25:16 <ehird> http://search.cpan.org/~ingy/Inline-0.44/C/C.pod
21:25:24 <ehird> http://search.cpan.org/~ingy/Inline-0.44/C/C.pod
21:26:07 <ehird> AnMaster: that's documentation
21:26:18 <ehird> (And now on People Who Comment Before Clicking Links..)
21:26:34 <AnMaster> ehird, I clicked, but dns server is slow today
21:26:52 <oklofok> [22:24:04] <AnMaster> ehird, I can't read perl :(
21:26:52 <oklofok> [22:24:46] <ehird> AnMaster: that's documentation
21:27:23 <ehird> oklofok: that'll be on the qdb :p
21:32:33 <ehird> ais523: umm, crap, i'm starting to want to code stuff in perl
21:32:37 <ehird> ais523: WTF did you do to me
21:32:54 <ais523> ehird: maybe that should be in the qdb too
21:33:05 <ehird> ais523: ironically the thing i'm wanting to code in perl is the qdb.
21:33:22 <ais523> Perl is good for some things, bad for others
21:33:38 <ais523> it's my first choice for anything rewriting-related, unless Thutu would be a resonable choice
21:33:51 <ehird> ais523: of course, i'm not being silly and reusing perl webdev stuff
21:33:53 -!- RedDak has joined.
21:34:03 <ehird> the most i'll use is CGI/CGI::Fast and some DB stuff
21:34:07 <ehird> oh, and a template engine
21:34:12 <Sgeo> Is it just me, or is the Internet rather centralized?
21:34:39 <ehird> ais523: hmm, does perl have anything built on DBI so i don't have to use SQL?
21:34:40 <Sgeo> I mean, there are root servers, and there also has to be some organization assigning IP addresses at the top
21:34:43 <ehird> python has stuff like:
21:34:51 <ehird> db.select("users", name="foo")
21:35:01 <ehird> and you get a hash back
21:35:12 <ehird> there's also ORMs but i'm not sure about any of perl's oo systems
21:35:46 <Sgeo> Doesn't IANA basically control IP addresses and domain names?
21:44:27 <ais523> AnMaster: within the program, or did you just forkbomb your computer?
21:44:40 <AnMaster> ais523, within the interpreter
21:48:00 <ehird> ais523: eso-std.org should use shell scripts.
21:48:18 <ehird> oh god... cgi.sh library :D
21:48:45 <ehird> forces your script to take parameters like ?a;b;c because sh doesn't have hashes :)
21:49:56 <ais523> ehird: not that surprising, really
21:50:02 <ais523> although they could emulate them
21:50:17 <ais523> anything that has eval and allows arbitrary variable names that can escape the eval can emulate hashes ;)
21:51:25 <ehird> ais523: i meant, it would be hilarious to have a module like that
21:51:34 <ais523> oh, you mean it doesn't exist yet?
21:51:44 <ehird> stores in $GET__sdfs98dfu98su4knjfd
21:52:00 <ehird> usage: $(hash GET foo)
21:52:17 <ais523> ehird: hashing using an actual cryptographic hash function strikes me as a neat mix of concepts
21:52:28 <ehird> header () { echo -n "$1: $2\r\n" }
21:52:41 <ehird> the reason i said it is because you can trivially get an md5 from the shell
21:52:58 <ais523> ehird: why not just header () { echo "$1: $2\r" }
21:53:06 <ais523> that saves the need to use -n, which is nonportable
21:53:27 <ehird> i need to write cgi.sh now
21:54:02 <ais523> ehird: your projects seem to require writing other projects in order to be able to start
21:54:15 <ais523> it would be nice to get something up and running on eso-std.org sometime soon
21:54:23 <ais523> a pastebin would have been useful, for instance
21:54:32 <oklofok> uh, i love java, reading a file to a string is like 6 lines <3
21:54:50 <ehird> ais523: well, the pastebin is going to be Really Advanced(TM) ;)
21:54:53 <ehird> And I like reinventing the wheel.
21:55:03 <ehird> However, hopefully i only need to get the wheel right *once*. :p
21:55:21 <ehird> md5 () { echo "$1" | md5sum | sed 's/ .*//' }
21:56:11 <ais523> that won't distinguish between $1=--help and $1=the help text for GNU echo, if that's what's being used
21:56:50 <ehird> md5sum outputs: "sum -"
21:56:59 <ehird> $ echo "foo" | md5sum
21:56:59 <ehird> d3b07384d113edec49eaa6238ad5ff00 -
21:57:05 <ais523> I mean they're the same text, so they'll hash to the same thing
21:57:24 <ehird> ais523: show me what you mean
21:57:24 <ais523> not that this matters at all, but echo "x$1" would avoid that problem
21:57:30 <ehird> '--help' is not equal to 'the help text'
21:57:40 <ehird> ais523: better fix:
21:57:49 <ehird> but ... everyone uses the shell builtin
21:57:51 <ehird> i mean seriously :)
21:58:01 <ais523> echo will actually echo -- if you give it as an argument
21:58:37 * ais523 seems to remember a system (was it SunOS?) on which echo was deprecated in favour of printf
21:59:18 <ais523> maybe because it's command-line parameter processing was so inconsistent
22:00:02 <ehird> ais523: case/esac is portable, rihgt?
22:00:28 <ais523> after all, nobody would use that syntax otherwise ;-)
22:02:14 <ehird> _hash_"$1"_$(md5 "$2")="$3"
22:02:30 <ais523> ehird: why do you keep putting $1, etc., in double quotes?
22:02:32 <AnMaster> Deewiant, I broke it so hard when adding concurrency it even fails mycology/sanity.bf when compiling with -DCONCURRENT_FUNGE *debugs*
22:02:36 <ehird> ais523: hmm. good point
22:02:42 <ehird> i keep thinking about it in terms of rewrites
22:02:52 <ais523> because if they contain embedded spaces you're going to be in trouble anyway
22:03:16 <AnMaster> Deewiant, I got no clue why it only prints sanity up to 7 atm
22:04:59 <ehird> ais523: hmm i actually need no hashtable initialization
22:05:09 <ehird> ais523: since it's purely virtual and there is no 'hashtable object'
22:07:17 <ehird> eval "echo \$"$(echo _hash_$2_$(cgi_md5 "$3"))
22:07:20 <ehird> i'm sure that could be prettier
22:08:05 <ehird> eval "echo $"_hash_$2_$(cgi_md5 "$3")
22:08:08 <ehird> that's the nicest i can get it
22:08:31 <ehird> ...why am I wasting my time on this?
22:08:44 * ais523 asked you that a while ago
22:12:43 <AnMaster> ehird, I'm adding concurrency to cfunge
22:14:33 <ais523> AnMaster: your problem is clearly insufficient setjmp
22:14:53 <ais523> because C-INTERCAL's threading works fine, at least on the programs that people have managed to think up so far
22:15:25 <AnMaster> really, it seems I get some memory corruption somewhere or something, because something totally unrelated breaks
22:15:38 <ais523> 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 <AnMaster> not changed, yet it breaks by concurrency
22:15:54 <AnMaster> and well. it isn't actually threading after all
22:16:04 <AnMaster> just looping instruction pointers
22:16:12 <ais523> likewise on C-INTERCAL
22:16:14 <AnMaster> it's not looked I threaded the interpreter itself
22:16:25 <ais523> but that has several complications the way I've done it
22:16:34 <ais523> because a simple straightforward INTERCAL interpreter is no fun
22:16:44 <AnMaster> ais523, it even breaks on single threads now :/
22:16:56 <ais523> what about 0 or a negative number of threads?
22:17:22 <AnMaster> that bit works, the issue is elsewhere
22:20:20 -!- RedDak has quit (Remote closed the connection).
22:23:10 <ehird> ais523: so as it turns out trying to glue peices of software together to make a semi-framework isn't pretty
22:23:18 <ehird> and actually using stuff is pretty
22:30:21 <ehird> i'm shocked that nobody else is suprised.
22:37:30 * AnMaster ponders the irony of having a stack allocated on the heap
22:41:08 <AnMaster> oh found it, I referenced once too many times
22:42:59 -!- oerjan has joined.
22:44:52 <AnMaster> Assuming that instructions without any particular concurrency-related behaviour, such as ^>v<#, take one tick.
22:44:52 <AnMaster> 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 <AnMaster> GGGGGGOGOGOGOGOGOGOOGOOGOOGOOGOOGOODGOODGOODGOODGOODGOODGO:ODGO:ODGO:ODGO:ODGO
22:45:01 <AnMaster> Deewiant, that's good I assume? :D
22:47:21 <ehird> BABABABDBDBABABBDBBABBDBABDDD
22:49:03 <AnMaster> ehird, found it, ip didn't move correctly after split
22:49:11 <AnMaster> so it split and split and split and so on
22:49:25 <AnMaster> one thread stayed on t spawning new threads all the time
22:49:49 <AnMaster> cfunge: /home/arvid/src/cfunge08/src/stack.c:89: StackPush: Assertion `stack != ((void *)0)' failed.
22:50:47 <AnMaster> it goes on to execute after thread finished :/
22:51:20 <ehird> ais523: how come perl manages to all look the same
22:51:28 <ehird> especially when all I've learnt about it I've learnt from your pastes <.<
22:51:38 <ehird> low barrier to entry i guess
22:51:58 <ais523> ehird: because people are so unused to seeing anything that looks like perl, except maybe shell-script
22:52:26 <ais523> 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 <AnMaster> ais523, now you are just being weird :P
22:53:12 <Slereah> I'm no racist, but all Malbolge programs look alike to me
22:53:27 <AnMaster> ais523, but indeed most perl looks like line noise
22:53:30 <ehird> ais523: well hey, a quote management system as my second perl app may be... a little ambitious
22:54:02 <AnMaster> ehird, or do it in perl but use Inline::C
22:54:27 <ehird> AnMaster: I was doing it in python, the first two times
22:54:37 <ehird> First with a DIY framework, then with Spyce
22:54:47 <ehird> I was going to try Pylons, web.py &co but cba because I don't like frameworks like that
22:54:50 <ehird> AnMaster: You betcha
22:55:02 <ehird> AnMaster: Can I say 'please die in a fire' here? :<
22:55:12 <ehird> twisted for a web app is the most awful idea i've heard of
22:55:27 <AnMaster> ehird, I thought there was twisted HTTP or something?
22:55:38 <AnMaster> or is twisted for writing http servers?
22:57:07 <AnMaster> or just use an existing software
22:58:16 <ehird> and I just told you I tried Python *twice*
22:58:26 <ehird> and twisted.web does exist, but eek.
22:58:34 <ehird> and using an existing software is so not cool ;)
22:59:50 <ais523> is that a fingerprint? I thought it was SOCK
23:00:15 <AnMaster> ais523, not an existing one no
23:00:40 <AnMaster> but why not an HTTP server framework for befunge?
23:01:22 <ais523> there was a CGI script written in INTERCAL, after all
23:01:28 * ais523 wonders if it's still online
23:01:38 <AnMaster> ais523, some nice ideas btw: BOOP = Befunge Object Object Orientated Programming Extension
23:03:12 <ehird> ais523: Hmm, why is OOP in perl ugly as hell
23:03:16 <ehird> sooo much boilerplate
23:03:23 <ais523> ehird: I don't like Perl OOP either
23:03:40 <ehird> ais523: Though this looks interesting
23:03:41 <ehird> http://search.cpan.org/~stevan/Moose-0.40/lib/Moose.pm
23:03:57 <ais523> ehird: http://www.muppetlabs.com/~breadbox/intercal/ins/insstart.html
23:05:40 <ehird> ais523: when I saw the intercal spec
23:05:47 <ehird> it was so extensive that i thought it would be pretty substantial
23:05:56 <ehird> but it really has very little stuff..
23:05:58 <ehird> just fancy syntax.
23:06:04 <ais523> ehird: have you seen my improved spec?
23:06:12 <ais523> It's linked from http://intercal.freeshell.org
23:06:22 <ais523> support for things like multithreading, operand overloading, and so on
23:06:31 <ais523> CLC-INTERCAL, linked from the same site, has even more
23:06:43 <ais523> its spec is simply a delta from INTERCAL-72 and yet still fills several pages
23:08:01 <ais523> INTERCAL has come along a long way from the old days
23:08:13 <ais523> (I challenge anyone to understand WHILE at the first attempt, for instance)
23:12:32 <ais523> yarg, that INTERCAL CGI script stores information in the /names/ of elements
23:12:45 <ais523> <INPUT NAME="MOFIKGAEECIaAAAAAQBBBBBcaCCCCcQDDDDeaSUEEeaSUFFeQWSUGgacUUHgaSYYUiQSWUU" MAXLENGTH=6 SIZE=7><P>
23:13:54 <ehird> 'use RatsAss;' is a vaguely disturbing line
23:13:59 <ehird> ais523: yes, but even the basic stuff
23:16:43 <ehird> ahh, how i love the fact that html 4.01 lets me omit <head>/<body> and other cruft
23:17:06 <ehird> <!-- dtd here --><html><title>hello</title><link rel="stylesheet" href="foo" type="text/css">...</html>
23:17:51 <ais523> ehird: there are two schools of thought about HTML
23:18:04 <ais523> one goes on to create XHTML, where a single typo blanks your page
23:18:10 <ais523> the other goes on to create HTML 5
23:18:26 <ais523> which has a DOCTYPE line of <!DOCTYPE HTML>
23:18:36 <ais523> is it ! or ?, actually, I can never remember
23:18:45 <AnMaster> ais523, it is way easier to code an XHTML interpreter than a HTML one
23:18:53 <ais523> but the point is it's the minimum number of characters needed to trip browser's compliance switches
23:19:04 <ais523> AnMaster: I actually favour XHTML over HTML
23:19:42 <ehird> ais523: not really
23:19:47 <ehird> xhtml is step in the wrong direction
23:19:50 <ehird> yes, it's more formal -- good
23:19:54 <ehird> but it retains *cruft*
23:20:01 <ais523> see, ehird, you belong to the /other/ school of thought
23:20:09 <ehird> ais523: I used to be an XHTML weenie.
23:20:17 <AnMaster> ais523, how was http://intercal.freeshell.org/ick-0.27/index.htm generated I wonder
23:20:39 <ais523> but with custom modifications
23:20:44 <ehird> (also, you SHOULD serve xhtml as application/xml+xhtml, but IE dies on this)
23:20:44 <ais523> try hovering the URLs, for instance
23:20:50 <ais523> they're 8.3 format for DOS-compatibility
23:20:54 <AnMaster> ais523, yeah doesn't look that the ones on gnu.org
23:21:02 <ais523> and I'm using my own stylesheet
23:21:17 <ais523> also, there's some custom hacking of the TOC and some of the headings
23:21:30 <ais523> but I'm the current maintainer
23:21:43 <AnMaster> ais523, what is the weird filenames for
23:22:09 <ais523> for DOS compatibility, of course
23:22:22 <AnMaster> ais523, ok.... why DOS compatibility?
23:22:29 <AnMaster> why on earth would anyone care about that?
23:22:37 <ehird> AnMaster: c-intercal supports DOS.
23:22:40 <ais523> because INTERCAL is compatible with a whole load of outdated technologies
23:22:47 <ais523> DJGPP is one of the maintained targets for C-INTERCAL
23:22:56 <ais523> which (apart from cygwin) is the only way to run it on Windows
23:23:02 <ehird> ais523: I know at least one person who uses dos as his main system
23:23:08 <ehird> know in a loose sense - internetknow
23:23:14 <AnMaster> ais523, oh and what is the difference between CLC-INTERCAL and C-INTERCAL
23:23:21 <AnMaster> ais523, what one is the "newest"
23:23:27 <ais523> AnMaster: they're two different implementations
23:23:36 <ais523> in terms of when it was created
23:23:42 <ais523> but they're both actively maintained
23:23:44 <ehird> ais523: uuurgh, I want a StrictWarningsIronFist
23:23:50 <ehird> give it a package, it makes them all strict&warnings
23:23:55 <AnMaster> ais523, who maintains CLC then?
23:23:55 <ehird> so i don't have to type it all the goddamn time
23:24:31 <ais523> AnMaster: Claudio Calvelli
23:24:42 <AnMaster> ehird, -Wall -ansi -pedantic -Wextra -Werror
23:24:55 <AnMaster> ais523, not here in this channel?
23:25:07 <AnMaster> ais523, also are CLC and your one compatible?
23:25:09 <ais523> I don't think I've ever seen him here
23:25:14 <ais523> AnMaster: to some extent
23:25:21 <ais523> each has features the other doesn't implement
23:25:32 <ais523> but the ones that are implemented in both are mostly compatible
23:25:35 <oerjan> ais523: is CLC an abbreviation for his name?
23:25:38 <ais523> the C-INTERCAL manual has a portability list
23:25:41 <ais523> oerjan: not sure, but probably
23:26:07 <ais523> and I comment on what each of the common commands does in each implementation
23:26:34 <ais523> there were two INTERCAL-72 implementations that used different syntaxes (the Princeton and Atari implementations)
23:26:42 <ais523> then C-INTERCAL, J-INTERCAL and CLC-INTERCAL
23:26:59 <ais523> J-INTERCAL hasn't been updated in a while, and is just INTERCAL-72+COME FROM by label
23:27:00 <ehird> <h1>Software error:</h1>
23:27:00 <ehird> <pre>Quot.pm did not return a true value at index.cgi line 10.
23:27:06 <ehird> I have to put a true value at the end of my module? :|
23:27:41 <ais523> a Perl module traditionally ends 1;
23:27:56 <ehird> also, I find the fact that I have to put @EXPORT etc in BEGIN disturbing
23:29:52 <ehird> use vars(@EXPORT);
23:29:52 <ehird> @EXPORT = qw(quot);
23:29:57 <ehird> faaar too verbose :D
23:50:51 -!- sebbu2 has changed nick to sebbu.
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 <Deformative> 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:09:23 * Sgeo has learned a LOT about DNS today
02:11:03 <oklofok> today, i pood, ate and coded java
02:11:19 <oklofok> (you figure out the parse tree.)
02:11:35 <Deformative> I assume coding java and pooing are a single process.
02:12:24 <Deformative> Eh, that doesn't make as much sense as it did in my head.
02:13:01 <oklofok> sometimes i take the comp with me to the toilet.
02:14:01 <Deformative> Well I was trying to make a simile between eating poo and coding java.
02:17:50 <oklofok> i've made that multiple times
02:18:29 <Deformative> Except the words came out in senseless babble.
02:18:53 <Deformative> I guess that is the result of spending too much time writing a language spec.
02:19:16 <Deformative> My typing system is turning into a clone of C.
02:19:57 <Deformative> The only additional type I expect is a closure.
02:20:58 <Deformative> But every other aspect of the language is in no way similar to C.
02:25:04 <oklofok> do you considered it esoteric?
02:25:34 <oklofok> eso- is something you add when something is esoteric, -licious is just something you add when something is hot and steamy
02:25:49 <oklofok> the latter can also be a nop, depends on the situation
02:30:50 <Deformative> I am trying to decide if I should even implement closures.
02:31:24 <Deformative> And it isn't that much work to just create a function.
02:38:44 <oklofok> umm, closure = function copies surrounding namespace?
02:38:47 <Sgeo> The US Government uses ZoneEdit?
02:39:46 <oklofok> Deformative: and that is slow because?
02:40:11 <Deformative> You need to stick all the local variables on the heap somewhere.
02:40:14 <oklofok> you just compile that into giving the params explicitly instead of taking them from the surroundings.
02:40:46 <Deformative> Yeah, but you need to malloc every single time you pass a closure.
02:40:57 <Deformative> And in my language they could EASILY become overused.
02:42:25 <Deformative> The user would likely end up creating a closure for the true and false of every single if statement.
02:44:26 <Deformative> Plus it would massively uglify the syntax.
02:45:05 -!- Tritonio_ has quit (Remote closed the connection).
02:45:36 <Deformative> I am also trying to decide to have anonymous functions or not.
02:50:38 <oklofok> anonymous functions are sex
02:50:48 <oklofok> you have them, and people will like you
02:54:43 <Deformative> Should I use <> or [] for function definitions?
02:54:59 <Deformative> I think <> so that i could use [] for arrays.
02:55:35 <Deformative> Even thought vice versa looks better, [] for arrays will conform with all other languages.
03:04:04 <oklofok> <-- --> for oklotalk, -- for most
03:04:49 <oklofok> -- is from haskell, <-- --> is my own invention based on haskell + nopol, but it is also a html comment perhaps
03:05:00 <oklofok> not sure, i've never used comments in my html :)
03:07:18 <Deformative> Well I cannot use <> that is function definition.
03:07:45 <Deformative> I guess I could use /* */ but it is so difficult to type.
03:10:29 <Deformative> Heh, if I could make everything with more than 2 lines of indentation commented.
03:10:37 <Deformative> Because there will never be more than one.
03:13:44 <oklofok> make one indentation comment
03:19:16 <Deformative> Not enough characters on the keyboard, seriously.
03:33:27 <oklofok> that's why they invented tokens
03:53:07 <pikhq> Hmm. ~comments~ would logically be not comments. :p
03:56:05 <lament> "...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 <lament> "...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 <lament> (somebody wants to put colorForth on OLPC)
04:03:59 <lament> it's perhaps the most insane page i've ever seen. http://colorforthray.info/
04:20:42 <RodgerTheGreat> I'm having difficulty understanding why colors are necessary or useful in FORTH.
04:23:29 <RodgerTheGreat> and lament- if that's the most insane page you've ever seen, you should investigate http://www.timecube.com/
05:04:33 <pikhq> That reminds me. . .
05:04:46 <pikhq> cherez: Going to do more of your dramatic readings of Time Cube?
05:06:25 <pikhq> Wow. The Time Cube stuff has even gotten worse recently. . .
05:07:14 <pikhq> The craziness goes up to eleven now.
05:09:11 <Sgeo> the TimeCube page gets updated?
05:10:18 <Sgeo> "Believer is far more EVIL than a False God, for Google
05:10:19 <Sgeo> cut back my Site from 34,000,000 to 4,000,000 in 1 night
05:10:19 <Sgeo> for the above Statement. 1 Day1God exists only as Evil.
05:10:19 <Sgeo> I thought Google was free of such evil bias, predjudice
05:10:19 <Sgeo> and shenanigans that block real truth from being known.
05:10:19 <Sgeo> Once before, Google cut back my site from 89,000,000 to
05:10:21 <Sgeo> 34,000,000 in a single act for something I said, that/s Evil"
05:10:30 <Sgeo> WTF is that supposed to MEAN?
05:10:41 <pikhq> He's now discussing +0- antipodes. . .
05:11:18 <pikhq> http://uncyclopedia.org/wiki/Slime_Cube :D
05:11:39 <pikhq> BTW, a slime cube with a bunch of potions in it? *Dangerous*.
05:19:23 <RodgerTheGreat> I always figured it would digest any potions spilled within, but that could be interesting...
05:20:05 <pikhq> Potions activating at random.
05:24:04 <RodgerTheGreat> knowing my campaigns, a couple random potions are instant, bottled hilarity
05:26:33 <pikhq> Do I *want* to know what that does?
05:26:58 <RodgerTheGreat> a particularly deranged alchemist made most of my players fear potions with odd, misspelled labels like the plague
05:52:45 * pikhq needs to know more of this campaign
05:53:35 <RodgerTheGreat> I ran my D&D games very fast and loose, and there was a lot of comedy and running gags
05:54:25 <RodgerTheGreat> "Melf" was a dangerously inept wizard/alchemist/probably pothead that made the craziest shit
05:55:23 <RodgerTheGreat> 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 <RodgerTheGreat> 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 <RodgerTheGreat> 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 <RodgerTheGreat> 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 <RodgerTheGreat> Fortunately one player, thinking quickly, beat himself in the face with a rock until he was ugly enough for the townspeople to recognize
06:04:56 <RodgerTheGreat> 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:08:13 <pikhq> Of course, you need a few Decks of Everything.
06:08:33 <pikhq> I forget the name of that again. . .
06:08:48 <pikhq> Deck of Many Things.
06:10:21 * pikhq goes off, sticks of Bag of Holding in a Bag of Holding.
06:10:57 <pikhq> Speaking of which. . .
06:11:05 <pikhq> RodgerTheGreat: You should have given out a bag of devouring.
06:12:09 <RodgerTheGreat> One of my players sewed a bag of devouring into his pocket, hilariously slaying several pickpockets
06:13:07 <RodgerTheGreat> 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 <pikhq> Fun to mess with magic objects.
06:14:41 <RodgerTheGreat> 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:10 <RodgerTheGreat> After a year or two I never needed the books at all unless somebody had to roll up a character
06:15:26 <pikhq> Hmm. What's the funniest one you can think of?
06:16:00 <RodgerTheGreat> 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 <RodgerTheGreat> but you can't just sling those around willy nilly, because they're supposedly unique
06:16:36 <pikhq> Didn't come up much in campaigns I've played. ;)
06:17:14 <RodgerTheGreat> I made loads of Vorpal quarterstaffs and intelligent +2 hafling skiprocks and goofy stuff like that
06:20:19 <RodgerTheGreat> hell, I could run an adventure over skype for old times sake someday if you can get a decent group together
06:22:15 <pikhq> I might have a copy of 2nd around here, though.
06:22:20 <RodgerTheGreat> good, good. Would you be up for trying 1st edition sometime?
06:23:00 <pikhq> Sure, I'd be up for trying it.
06:23:01 <RodgerTheGreat> 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 <pikhq> I lack rulebooks, though.
06:23:35 <RodgerTheGreat> I can scan a couple pieces, explain the rest and preroll characters for people
06:23:49 <RodgerTheGreat> I even have a table of pregenerated characters for this purpose
06:24:12 <RodgerTheGreat> Everyone will probably get 2 characters because they'll die like flies
06:25:08 <RodgerTheGreat> 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:26:21 <pikhq> I wanna try that trick with the bag of devouring, though. . .
06:26:33 <pikhq> Something more unique would be nice, though.
06:26:36 <RodgerTheGreat> 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:38 <RodgerTheGreat> 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:28:34 <RodgerTheGreat> I think the damage was like 2d10+5+ 1d4 CHA damage if you ate it.
06:30:29 * pikhq discovers an online copy of the d20 ruleset. w00ts.
06:30:51 <RodgerTheGreat> (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 <pikhq> A Cloak of Poisonousness. . .
06:31:31 <pikhq> That could actually be used as a deadly weapon.
06:31:36 <RodgerTheGreat> did I mention that aside from encyclopedic knowledge of D&D I know about 6 other rulesets as well?
06:31:51 <pikhq> (put it on. Unless you succeed a fortitude check of 28, you die.)
06:32:45 <RodgerTheGreat> 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 <RodgerTheGreat> 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:28 <RodgerTheGreat> 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:36:00 <pikhq> 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 <pikhq> The DM stuck a rubber chicken and some miniatures on the table and said 'There. You're fighting that.'
06:37:29 <pikhq> 'I summon a giant bee.'
06:37:41 <RodgerTheGreat> 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 <RodgerTheGreat> follow those principles and you can have a grand time doing *anything*
06:38:18 <pikhq> 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 <pikhq> (3 20s in a row, for example.)
06:39:49 <RodgerTheGreat> 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 <pikhq> "I rolled a 20. Thrice." "That. . . Can't die. . ."
06:41:11 <RodgerTheGreat> 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 <pikhq> "Fine. It dies. You see it again, behind you."
06:42:07 <RodgerTheGreat> "I hide and make the sounds of a babbling brook to throw the owlbears off my trail" (critical failure) "BAAAASSS! BAAASSS!"
06:44:24 <RodgerTheGreat> 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 <pikhq> http://rodger.nonlogic.org/comics/Comic019.png Brilliant.
06:45:27 <RodgerTheGreat> "halt who goes there" "Flashbang, gnomish smith of great renown. Up for a game of chance? I have *shiny* things..."
06:47:50 <pikhq> http://rodger.nonlogic.org/comics/Comic011.png Sorry, but I won.
06:47:53 <pikhq> I'll have to in a bit.
06:48:35 <pikhq> I think The Game just became more positive.
06:49:30 <RodgerTheGreat> 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 <RodgerTheGreat> "A STRANGE GAME; THE ONLY WINNING MOVE IS NOT TO PLAY. *klick*"
06:50:57 <pikhq> Because he must be executed.
06:51:10 <pikhq> Nice 'weekly' schedule, no?
06:53:05 <RodgerTheGreat> I gather you're starting to take my point of view on the matter
06:53:28 <pikhq> It was one thing when he didn't update during the flu and moving. . .
06:53:40 <RodgerTheGreat> "If you do a strip for a living, MOTHERFUCKING TREAT YOUR RELEASE SCHEDULE AS MORE THAN A VAGUE SUGGESTION"
06:53:46 <pikhq> But god dammit, it's halfway through March, and we've had one update in the past two weeks.
06:55:00 <RodgerTheGreat> 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 <pikhq> http://rodger.nonlogic.org/comics/Comic001.png
06:55:53 <pikhq> I'll need to stick that one on my wall or something.
07:00:22 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
07:07:31 -!- calamari has quit ("Leaving").
07:14:42 <RodgerTheGreat> feel free to download the source and fiddle. It's all WTFPLed
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:21:33 <AnMaster> it's mentioned in some befunge fingerprint specs I'm trying to implement, but I got no idea what it is
13:26:16 <AnMaster> C ('bracelet') pops three vectors off the stack and performs a low-order copy of Funge-Space.
13:30:49 <Deewiant> IIRC the way I interpreted that is start from the end, not the beginning, or vice versa
13:31:00 <Deewiant> i.e. go from top left to bottom right versus bottom right to top left
14:04:16 <AnMaster> 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:11:16 <Deewiant> AnMaster: if I recall correctly, !Befunge does it the same way - or at least tries to, the mycology test fails
14:12:02 <AnMaster> Deewiant, you need to update that chart, try my last version, it got concurrency
14:12:16 <AnMaster> Deewiant, pretty fast still with my super-optimize script
14:12:29 <AnMaster> no idea if you *want* to see it
14:13:09 <AnMaster> Deewiant, http://rafb.net/p/ipoHrq23.html
14:13:18 <AnMaster> need to be run from top checkout dir
14:13:25 <AnMaster> ie, out of tree builds = not supported
14:14:12 <AnMaster> Deewiant, also skipping GC = saves about 0.01 seconds or so
14:14:26 * AnMaster is down around 0.077 here so :D
14:15:20 <AnMaster> Deewiant, anyway what do you think? try adding your own -march and such in CHOSTFLAGS
14:15:35 <AnMaster> I want to know how well it performs with that
14:15:47 <AnMaster> Deewiant, yes but I want to see how fast I can get it!
14:16:04 <Deewiant> you haven't compared startup times yet? i.e. just replace the first char of mycology with @
14:16:06 <AnMaster> Deewiant, oh and you may want to add -DCONCURRENT_FUNGE to DEFINES variable
14:16:17 <AnMaster> 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:18:03 <AnMaster> Deewiant, hrrm, looks like loading takes most of the time
14:18:40 <Deewiant> the program is completely IO bound and you're optimizing CPU usage like crazy :-)
14:19:06 <AnMaster> 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:41 <Deewiant> if a program spends 90% of its time doing IO it's IO bound alright ;-)
14:20:00 <AnMaster> Deewiant, because in CCBI the difference is much larger
14:20:28 <AnMaster> real 0m0.188s for ./ccbi --disable-fprints ~/src/cfunge08/mycology/mycology.b98 > /dev/null
14:20:35 <Deewiant> and keep in mind that CCBI is always doing IO during mycology as well :-)
14:21:29 <AnMaster> 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 <AnMaster> Deewiant, no, not the very last, will download last
14:22:06 <AnMaster> this one had the typo in --help
14:22:11 <Deewiant> 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 <AnMaster> Deewiant, for what is left yes
14:22:43 <Deewiant> I don't know, optimizing such just seems like so much overkill :-)
14:22:53 <Deewiant> I'd go optimize bashfunge instead
14:23:12 <AnMaster> Deewiant, bah, it would fail at doing x
14:23:57 <AnMaster> Deewiant, the last ccbi zip file from your site is slower
14:24:00 <AnMaster> $ time ./ccbi --disable-fprints ~/src/cfunge08/mycology/mycology.b98 > /dev/null
14:24:14 -!- timotiis has joined.
14:24:29 <Deewiant> I don't know, it's about 50% faster for me :-)
14:24:42 <Deewiant> hence we see that optimizations are once again a bit... dubious
14:24:49 <AnMaster> Deewiant, I downloaded the last ccbi_linux.zip
14:24:55 <AnMaster> Deewiant, not if you do profiling!
14:25:17 <Deewiant> that took the time for funge-space access down by 30% or so
14:25:41 <AnMaster> Deewiant, yes indeed, changing to not pass fspace pointer around helped for me too
14:25:56 <AnMaster> and it wouldn't be needed without TRDS I suspect
14:26:51 <AnMaster> 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:27:21 <Deewiant> of course, what I don't do is profile-guided optimization. :-P
14:28:25 <AnMaster> 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 <AnMaster> Deewiant, what I'm thinking about is doing some optimizing of initial allocation size
14:28:58 <AnMaster> to select maybe 1.25 * program size
14:29:15 <AnMaster> instead of hard coded defaults
14:34:34 -!- oerjan has joined.
14:54:57 <AnMaster> Deewiant, it looks, according to gprof, like the bottle neck is inserting into hash table
14:55:43 <Deewiant> or admit you're at the limit :-P
14:56:06 <AnMaster> Deewiant, nah, current hash library I selected because it was 1) lgpl 2) small 3) easy to use
14:56:34 <AnMaster> I've seen better that are 1) custom GPL compatible 2) large 3) harder to use
14:57:04 <AnMaster> http://www.sunrisetel.net/software/devtools/sunrise-data-dictionary.shtml <-- going to investigate that one
14:57:30 <AnMaster> Deewiant, anyway I can speed up current hash library a bit
14:57:41 <AnMaster> by hard coding it to handle FUNGEDATATYPE
14:57:51 <AnMaster> instead of handling pointers to data
14:58:37 <Deewiant> 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 <AnMaster> 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 <AnMaster> Deewiant, it's just a matter of seeing "how far can I take this"
14:59:28 <AnMaster> Deewiant, it looks like most code in mycology only executes once, right?
15:01:25 <AnMaster> Deewiant, looks like gprof works sub-optimally on binaries with much inlining hrrm
15:05:17 <AnMaster> Deewiant, without inlineing I see it is "search_in_bucket" private function of hash table that is slowest
15:10:05 <Deewiant> here a GC function is the one that takes most time
15:10:23 <Deewiant> AnMaster: what style of GC is the boehm one? generational, mark-and-sweep, what?
15:12:04 <AnMaster> Deewiant, anyway that was a build without GC I tried to check what was going on in hash
15:12:21 <Deewiant> looks like it does some generational collection as well
15:12:34 <AnMaster> the search_in_bucket takes 80% of the time of running when mycology starts with a @
15:12:48 <AnMaster> and it already looks quite optimized
15:13:19 <Deewiant> here gc.mark takes 30%, followed by input, followed by hashing, followed by input, followed by gc.fullCollect, followed by gc_calloc
15:13:39 -!- slereah_ has joined.
15:13:45 <AnMaster> Deewiant, anyway I did LEAK_MODE to check without gc
15:13:51 <Deewiant> AnMaster: D always initializes all variables
15:14:03 <Deewiant> might cause slowdown somewhere with arrays, can't be bothered to find where
15:14:06 <AnMaster> Deewiant, aha, well I think boehm does too
15:14:54 <Deewiant> the difference is that where you do int[40] x; D also does memset(&x, 0, 40 * int.sizeof); or something :-)
15:14:54 <AnMaster> at least you can safely do: #define calloc(x,y) GC_MALLOC(x) * (y))
15:15:19 <Deewiant> but I don't really use static arrays much anyway
15:15:34 <AnMaster> static arrays would not be initialized would they?
15:15:46 <AnMaster> nor ones allocated on the stack, right?
15:15:56 <Deewiant> everything is initialized to something.
15:16:22 <Deewiant> C initializes nothing implicitly.
15:16:56 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
15:16:59 <AnMaster> Deewiant, that still doesn't explain why an array on stack ended up as { 0, 0, 0, 0 } without initializing heh
15:17:20 -!- oklofok has quit (No route to host).
15:17:41 <AnMaster> 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 <AnMaster> aha, gcc does a __builtin__ for memcmp, explains why that instruction took so much
15:21:19 <AnMaster> Deewiant, btw kprof is very nice
15:22:03 <AnMaster> Deewiant, and it turns out according to it, the real problem isn't loading when running without @, but getting from hash
15:23:58 <AnMaster> Deewiant, of the 0.8 seconds to run without the @, about 0.4 is spent searching in hash
15:24:28 <AnMaster> 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 <AnMaster> 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:18:14 <Deformative> Should I have whitespace separate type and var name the way C does?
16:18:42 <Deformative> That is the only relevant whitespace in my whole language if I do.
16:19:49 <SimonRC> Deformative: how about a colon
16:20:03 <Deformative> Uhm, there is no other languages that have the same syntax as the one I am designing.
16:20:24 <SimonRC> "var : type" is a common syntax for variable types
16:20:51 <marshmallows> sigh, I still have no idea what the language looks like.....
16:21:07 <SimonRC> It is the formal one, as well as the one found in Haskell, Pascal, ML-likes, etc
16:21:36 <marshmallows> I don't think any of those languages does that..
16:22:08 <marshmallows> haskell uses ::, Pascal uses whitespace (sort of like C), and ML don't have explicit type annotation....?
16:22:31 <Deformative> functionName<..., type arg, type arg> continuation(..., arg, arg)
16:22:36 <SimonRC> things like "global foo : int"
16:22:46 <Deformative> That is the current syntax, and I don't really like it.
16:23:16 <marshmallows> ok yeah get rid of the <> and do it like pascal
16:24:12 <SimonRC> 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 <Deformative> 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 <SimonRC> why not use -> for array indexing?
16:32:12 <SimonRC> or >>, or !!, or !, or } or some other symbol
16:32:24 <SimonRC> All of those are from actual languages
16:32:47 <Deformative> They are ugly, heh. And i am using {} for structures/
16:33:09 <SimonRC> }, or maybe it is {, is in J and K
16:33:35 <Deewiant> I was thinking of esoteric languages and almost hit the mark ;-)
16:34:09 <SimonRC> !! and ! are or course from Haskell, and I forget where -> is from
16:37:55 <Deformative> So yeah, <> looks somewhat ugly, but I think I will use it.
16:43:24 <SimonRC> -> and --> as indexing operators are out of Inform
16:43:42 <SimonRC> -> is byte indexing and --> is word indexing
16:45:17 <Deewiant> there's plain brackets, table(idx), too
16:51:51 <AnMaster> Deewiant, I think I'm close to the limit of speed with current design yes
16:52:02 <AnMaster> so I'll concentrate on features instead
16:52:36 <AnMaster> 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 <AnMaster> Deewiant, btw, anyone made some sort of coverage analysis for befunge?
16:53:11 <Deewiant> all time is basically dominated for hash table + GC
16:53:50 <AnMaster> 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 <Deewiant> I could do that right now by just compiling with -cov and running :-P
16:54:34 <AnMaster> Deewiant, I plan to use gcov on my source to see how much of it mycology actually tests
16:54:48 <SimonRC> Deformative: the same syntax for function calls and array indexing is fine.
16:54:54 <AnMaster> Deewiant, but I mean actual coverage on the befunge program itself
16:55:16 <AnMaster> Deewiant, as in see how much of mycology is executed in CCBI for example
16:55:22 <Deewiant> AnMaster: you mean not count how many times # is called, but how many times a particular # is called
16:55:47 -!- Tritonio_ has joined.
16:55:50 <Deewiant> basically easy to do by running your trace mode, for instance
16:55:53 <SimonRC> After all, an array is just a function from the index to a mutable cell
16:55:56 <Deewiant> and then just use a program which counts that
16:57:12 <Deewiant> AnMaster: have you run the Fungus Befunge IDE?
16:57:41 <Deewiant> AnMaster: it has a cool "show path that IP travelled" kind of feature
16:57:55 <Deewiant> it draws lines on top of the befunge program to show where the IP went
16:58:06 <AnMaster> by the way it seems CRC32 hash is faster than one-at-a-time hash, hm....
16:58:19 <SimonRC> can it draw lines over all the boundaries that the IP didn't cross?
16:58:24 <AnMaster> Deewiant, very nice, except for mycology fingerprints it would look like a mess
16:58:27 <SimonRC> that is more comprehensible
16:58:29 <AnMaster> as you use common loading code
16:58:30 <Deewiant> 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:47 <Deewiant> the same line is just drawn a bunch of times
16:58:59 <Deewiant> since it's always entered from the same direction etc.
16:59:11 <AnMaster> Deewiant, well yes should be useful for coverage analysis
16:59:23 <AnMaster> however, how does it show the line over say: #v r
16:59:55 <Deewiant> I guess I could upload a screenie of what it does with the parts of Mycology that it can handle
16:59:58 <SimonRC> 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 <AnMaster> Deewiant, hm fungus site gone?
17:00:03 <Deewiant> it doesn't look /that/ great but it's handy
17:00:18 <AnMaster> Deewiant, and only a windows binary on your site :(
17:00:20 <Deewiant> AnMaster: yeah, only the web archive page exists
17:00:26 <Deewiant> and only a windows binary was ever releaased
17:00:40 <Deewiant> like I say, The only closed-source Befunge interpreter I’ve come across.
17:01:01 <AnMaster> Deewiant, upload screenshot somewhere, say omploader or such a picture pastebin
17:01:08 -!- Corun has joined.
17:02:18 <AnMaster> Deewiant, anyway when do you plan to update your mycology results page?
17:03:39 <AnMaster> Deewiant, you used some script to generate that table?
17:04:34 <AnMaster> ah, was going to ask you to send them over so I can have a look, but if it is haskell forget it
17:05:08 <Deewiant> http://users.tkk.fi/~mniemenm/fungus_running.png and http://users.tkk.fi/~mniemenm/fungus_end.png
17:05:14 <AnMaster> 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 <Deewiant> like said, it's nothing special
17:05:34 <AnMaster> Deewiant, oh, I was hoping for some opengl stuff with arrows and such
17:05:57 <Deewiant> hence why I was thinking of some kind of standard-ish protocol
17:06:23 <AnMaster> Deewiant, yes if you make one I'll be sure to implement it
17:06:39 <AnMaster> Deewiant, something over unix sockets maybe?
17:06:42 <Deewiant> 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:07:05 <Deewiant> doesn't matter really, but ideally text-based
17:07:13 <AnMaster> Deewiant, I'd prefer a more compact and easier to parse for a program format
17:07:22 <Deewiant> well, of course not literally like that
17:08:07 <AnMaster> IP=5;MODE=STR;POSX=5;POSY=7;DELTAX ....
17:08:29 <Deewiant> which is why something like pos={5,7} would be better
17:08:53 <SimonRC> fscanf(sock, "%d %d %d %d %d %d %d %d", &id, &mode, etc etc etc
17:09:13 <AnMaster> Deewiant, but please make it easy to parse with scanf or such, and single line for each to parse
17:09:17 <Deewiant> the trick is how to handle stuff like mode and fingerprints, and what kind of all info is needed
17:09:45 <SimonRC> maybe indent following lines with whitespace?
17:09:52 <AnMaster> Deewiant, for mode you could do some string constants, say CODE,STR for the two standard ones, and some more
17:10:07 <AnMaster> Deewiant, support for transmitting TRDS info would NOT be needed
17:10:17 <Deewiant> I was just about to say what about TRDS :-D
17:10:20 <SimonRC> so you have an ID, pos, delta, and other fixed stuff, then an indented list of properties
17:10:31 <AnMaster> Deewiant, it's horrible, and quite pointless
17:10:37 <Deewiant> it seems like we're rapidly moving towards JSON/sexps ;-)
17:11:01 * AnMaster is a emacs user and is used to elisp
17:11:10 <AnMaster> so I feel at home with S-Expressions
17:11:16 <Deewiant> TRDS would be pretty easy to support actually
17:11:33 <AnMaster> Deewiant, I even wrote some code in C# to seralize .NET classes to S-Expressions
17:11:37 <Deewiant> all that happens is all the IPs suddenly move to a different place
17:11:43 <AnMaster> or rather I wrote a substantial part of that code
17:11:58 <AnMaster> the actual parser and tokenizer someone else coded
17:12:09 <SimonRC> TODO: prolog in befunge via TRDS
17:12:27 <AnMaster> SimonRC, ERR_TRDS_TOO_STUPID_NOT_SUPPORTED
17:12:34 <SimonRC> actually TRDS allows IPs to meet their younger selves
17:12:51 <AnMaster> I don't get what TRDS stands for
17:12:54 <SimonRC> AnMaster: no, very mnuemonic
17:12:58 <Deewiant> http://en.wikipedia.org/wiki/TARDIS
17:13:18 <AnMaster> Deewiant, ah, never watched that TV series
17:23:43 <Deewiant> SimonRC: in the RC/Funge-98 readme
17:25:17 <AnMaster> Deewiant, I find it odd some even fail at sainty.bf
17:25:37 <AnMaster> http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/!Befunge.txt
17:25:53 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
17:26:00 <Deewiant> AnMaster: "*** Exited normally"
17:26:08 -!- Slereah has joined.
17:26:12 <AnMaster> Deewiant, ah so it shows that at the end?
17:26:24 <Deewiant> as you can see right there :-P
17:26:32 <Deewiant> you can always compare to the expected
17:26:47 <AnMaster> err but why is CCBI marked good, output doesn't match
17:26:55 <AnMaster> http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/CCBI.txt
17:27:13 <AnMaster> Deewiant, ah for me it is "enable warnings by -W"
17:27:49 <Deewiant> that's why it says for !Befunge "irremovable exit code output" - it can't be removed
17:28:00 <AnMaster> 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 <Deewiant> yeah, apparently firefox or the web server don't like txt files that contain null bytes
17:28:53 <Deewiant> or not null bytes, but control characters
17:29:43 <AnMaster> Deewiant, "# < jumps over <" in http://users.tkk.fi/~mniemenm/befunge/mycology-output/befunge93/BeQunge.txt why did that cause END?
17:29:50 <AnMaster> or did it crash just after that?
17:30:37 <Deewiant> and even if there were, I wouldn't bother to find out
17:31:02 <AnMaster> Deewiant, ah but for !Befunge you would bother to check I suspect? ;P
17:31:20 <Deewiant> as in, mycology quits afterward
17:31:32 <Deewiant> AnMaster: yeah, if the interpreter is interesting in its own right, sure
17:31:39 <Deewiant> but if it's just another crap implementation then no :-P
17:31:46 <AnMaster> "BAD: 3k< takes more than two ticks" <-- hm is there no matching GOOD for that one?
17:32:30 * SimonRC realises something important about befunge...
17:32:39 <AnMaster> that it is a bloated language?
17:32:46 <SimonRC> You can't add new operators that look like the built-in ones
17:33:10 <AnMaster> SimonRC, indeed, all chars between ASCII 32 and 127 are in use
17:33:24 <SimonRC> In things like C, most stuff is in functions, and your functions look like the builtins
17:33:35 <AnMaster> Deewiant, sure? isn't 127 == ~?
17:34:10 <AnMaster> so what control char is 127 then?
17:34:19 <Slereah> On my ASCII chart, it's some sort of house shape
17:34:25 <SimonRC> it is often typed as Ctrl-?
17:34:45 <AnMaster> Deewiant, btw, the limit on chars in input is a bit odd for befunge
17:35:03 <SimonRC> it is one of the two common bindings for backspadem, the other being ^H (BS)
17:35:09 <AnMaster> "(and greater than 255 on systems where characters are stored in multiple bytes; but no greater
17:35:28 <AnMaster> Deewiant, does that mean I have to handle chars greater than 255? Ie, handle utf8
17:35:35 <AnMaster> currently I read files in assuming 8 bit chars
17:35:44 <Deewiant> I originally read that so that you do
17:35:53 <Deewiant> and made the mistake of assuming UTF-8 on input
17:36:02 <SimonRC> hmm, on systems where there is a difference, are befunge files text or binary?
17:36:03 <Deewiant> but note that it talks about /systems/ where characters are stored in multiple bytes
17:36:12 <Deewiant> not about text encodings or anything like that
17:36:14 <AnMaster> Deewiant, what such systems exist?
17:36:18 <SimonRC> it makes a difference if you have (e.g.) Chinese strings as UTF-8
17:36:46 <Deewiant> if you read further it's clear what is meant
17:36:48 <Deewiant> 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 <AnMaster> 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 <Deewiant> so if you get 0xeb 0xbb 0xbf on input you're not to read it as char #65534
17:37:53 <AnMaster> Deewiant, however that will depend on if you travel > or < or other direction
17:37:57 <Deewiant> AnMaster: yes, just plain reading/writing in basic ways works if done correctly.
17:38:15 <Deewiant> AnMaster: just as getting GOOD or DOOG depends on which dir you're moving in. :-)
17:38:33 <Deewiant> yes, if you assume your editor's display is correct in that sense
17:38:35 <AnMaster> and if you do say "ö" you would get different results depending on what way you travel
17:38:48 <AnMaster> and it would be a PITA to write in reverse
17:39:55 <AnMaster> Deewiant, however it would break say, ip going down over line later on it
17:39:57 <Deewiant> or, if you've got the luxury of a working j or x
17:40:09 <SimonRC> personally, I would store each unicode code point in one cell
17:40:18 <Deewiant> AnMaster: like said, if you think your editor display is correct then you're mistaken.
17:40:45 <AnMaster> <Deewiant> or, if you've got the luxury of a working j or x <-- yes but what is wrong with ; ?
17:40:49 <Deewiant> SimonRC: yeah, such a mode could easily be implemented, but it'd depend on interpreter support.
17:40:57 <Deewiant> AnMaster: if you've got more ;s
17:41:05 <Deewiant> ; astusaddrfasdfasdfa ;#"ö";# < asdfsadfasd a;
17:41:20 <AnMaster> Deewiant, I almost only use ; for comments
17:41:40 <Deewiant> the few places where I comment I just put it next to the code :-)
17:41:41 <SimonRC> how do # and space interact?
17:41:48 <AnMaster> btw, does mycology test wrapping within ; mode?
17:41:51 <Deewiant> SimonRC: we just talked about it above, # jumps over space
17:42:00 <AnMaster> SimonRC, jump over, ie, doing nothing either way
17:42:10 <Deewiant> SimonRC: many interpreters get that wrong and instead jump over the next instruction after spaces
17:42:24 <Deewiant> AnMaster: probably not explicitly, but it uses it
17:54:04 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
17:54:26 -!- RedDak has joined.
18:02:27 <AnMaster> SimonRC, it was just because I was in a discussion so it would seem odd if I just left
18:02:34 <AnMaster> otherwise I wouldn't mention it :P
18:11:29 -!- RedDak has quit (Remote closed the connection).
18:17:41 <AnMaster> 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 <AnMaster> Deewiant, 1) I pushed width and breath not absolute max point
18:18:14 <AnMaster> and least point in mycology at that point is -1,-1
18:18:27 <AnMaster> result: my error did not show up in mycology
18:19:21 <Deewiant> well, if I make the least point -1,-2 somebody will have an off by one and off by two error ;-)
18:19:41 <AnMaster> Deewiant, better check once, write to a new negative value and check again
18:19:50 -!- slereah_ has joined.
18:19:59 <Deewiant> yeah, right, you fit that in there :-P
18:20:01 <AnMaster> 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:25 <AnMaster> ie, brain thinks in 1-indexed, computer doesn't
18:20:38 <AnMaster> off by two or so is not as common
18:20:52 <AnMaster> Deewiant, as for fitting in: I prefer PIC befunge
18:21:21 <Deewiant> but I started it out like that and hence it became that
18:21:28 <Deewiant> but I'm not going to rewrite it either :-P
18:21:47 <AnMaster> actually is it harder to write PIC in befunge than absolute code?
18:21:50 <Deewiant> like I said, test {}gp first and then use {} to keep stuff PIC
18:22:05 <AnMaster> maybe some fingerprint to help that?
18:22:05 <Deewiant> but if you have a working { and }, not much
18:22:20 <Deewiant> no need, { and } make it as easy as can be
18:22:22 <AnMaster> SUBR is actually worse for PIC
18:23:25 <AnMaster> yeah, but I would prefer a mode for finding such functions that was position independent
18:23:45 <AnMaster> maybe register function entry point, and then jump to that name or something?
18:24:23 <AnMaster> actually there is one thing I'd like to add in a fingerprint, just because it would so totally NOT fit with funge
18:25:13 <AnMaster> Deewiant, hm but REFC got a problem: you can't know what it returns
18:25:27 <AnMaster> so if you could register something under a given index
18:25:40 <AnMaster> because then you could hard code what entries to look up
18:25:58 <AnMaster> Deewiant, oh you mean REFC = registers?
18:26:07 <AnMaster> or REFC = register entry points?
18:26:19 <Deewiant> REFC = variables, which is essentially equivalent to registers
18:27:58 <AnMaster> 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 <AnMaster> just to make it feel like registers :)
18:28:41 <AnMaster> as befunge is a stack based language it would feel so totally wrong :D
18:30:17 <SimonRC> is there a goot way to do a goto in befunge?
18:30:35 <AnMaster> SimonRC, x, relative addressing to
18:30:45 <AnMaster> or there is J from SUBR fingerprint
18:30:54 <AnMaster> that is jump to absolute coordinates
18:31:16 <AnMaster> so you got to reset delta after you jump
18:31:25 <SimonRC> just about to say that myself
18:31:59 <AnMaster> SimonRC, however, for "jump and go east", if you can depend on SUBR fingerprint, then I'd recommend J
18:32:14 <AnMaster> avoid depending on fingerprints if you can IMO
18:32:43 <SimonRC> darn, Forth rather relies on address = 1 cell
18:32:46 <Deewiant> which is like x, but it moves once and doesn't change the delta
18:32:54 -!- oerjan has quit ("leaving").
18:33:09 <AnMaster> actually it does, but then it changes it back again (in my implementation, or it breaks at wrapping)
18:33:32 <Deewiant> only the semantics matter, not how it's implemented :-)
18:33:36 <AnMaster> as I don't want to do like CCBI and run "one forward" 9999 or whatever times
18:34:06 <AnMaster> optimizing CPU as I can't optimize hash more yet
18:34:24 <AnMaster> Deewiant, btw cachegrind looks nice
18:34:52 <AnMaster> looks for cache miss situations
18:35:05 <AnMaster> not using it is because it's output is hard to parse
18:35:11 <AnMaster> maybe when everything else is doen
18:35:25 <Deewiant> there are frontends for cachegrind as well, you know :-)
18:35:28 <AnMaster> I do run valgrind and mudflap every now and then
18:35:37 <AnMaster> Deewiant, yep, kachegrind or something like that
18:35:45 <AnMaster> or maybe they actually left the c in for once
18:36:49 <AnMaster> Deewiant, btw ever tried mudflap?
18:37:03 <AnMaster> very nice pointer debugging thing, if you enabled the mudflap useflag for gcc
18:37:06 <Deewiant> haven't programmed that much in C/C++
18:37:18 <AnMaster> http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging
18:37:46 <AnMaster> Deewiant, quite nice, at some things better than valgrind, at other things valgrind is better
18:38:07 <AnMaster> oh and I've seen boehm-gc in leak check mode catch leaks neither of those two catched
18:39:23 <AnMaster> 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 <AnMaster> but likely to be slower as I would need to invalidate cache at p and so on
18:39:57 <AnMaster> another thing, concurrency, ; takes 0 ticks right?
18:40:09 <AnMaster> but how long does this take: ; blah blah;;blah blah;
18:40:30 <Deewiant> ;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;$ takes one tick
18:42:01 <AnMaster> 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:27 <Deewiant> I'm not that interested in brainfuck, it's too simple :-)
18:42:41 <AnMaster> Deewiant, so what other esoteric languages are you interested in?
18:42:58 <Deewiant> I don't know, I've been looking for something cool but haven't found anything that special
18:43:07 <Deewiant> Rail or whatever it was called looked nice
18:44:15 <Deewiant> haven't done anything with anything other than befunge, really
18:44:15 <AnMaster> so what was the problem with it?
18:44:40 <AnMaster> Deewiant, a rail -> befunge converter maybe?
18:45:04 <Deewiant> maybe I've just had enough of esoterica for now ;-)
18:45:42 <AnMaster> Deewiant, one thing you could do, change wrapping to allow user defined topologies, ie, load klein-funge file into CCBI
18:45:56 <AnMaster> but could be a nice experiment
18:46:18 <Deewiant> since the wrapping function can be arbitrary
18:46:57 <AnMaster> something that can be JIT compiled or so
18:47:15 <AnMaster> or compiled to a *.so/*.dll even
18:47:15 <Deewiant> would need to implement a whole language there
18:47:39 <AnMaster> actually you could just dlopen a file, with a few basic functions
18:47:39 <Deewiant> might as well leave it to the dynamic language people
18:48:03 <Deewiant> except that that doesn't work on windows
18:48:12 <AnMaster> Deewiant, there are *.ddl on windows
18:48:28 <AnMaster> don't remember functions names for windows though
18:48:33 <Deewiant> but it would require writing a lot of code to make it work
18:48:55 <AnMaster> something like LoadLibraryExWeDidn'tGetAPIRightFirstTimeSoHereIsAnExtendedOne
18:48:55 <Deewiant> it's trickier in D than in C, with the garbage collection and all that
18:49:07 <Deewiant> might be easier if only loading C code
18:49:25 * AnMaster finds all the *Ex API functions of Windows sad
18:49:35 <AnMaster> they can't even get their APIs right first time sigh
18:50:56 <Deewiant> there's stuff like tmpfile in the C/POSIX APIs as well :-)
18:51:18 <AnMaster> oh yes tmpfile/tempfile/mktemp/mkstemp
18:51:39 <AnMaster> Deewiant, but hardly as common
18:51:46 <Deewiant> 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 <Deewiant> but yes, I admit, the design of windows could have been much better from the start.
18:52:28 <AnMaster> Deewiant, indeed, but windows got more *Ex functions than POSIX got updated functions
18:53:45 <Deewiant> the windows stuff also supports a lot more stuff
18:53:54 <Deewiant> not saying that it's a good thing to have all that built in
18:54:09 <AnMaster> windowing routines belongs in X API
18:54:25 <Deewiant> from what I've heard the X API is absolutely horrid
18:54:53 <AnMaster> Deewiant, very likely, xlib is
18:54:59 <Deewiant> http://en.wikipedia.org/wiki/X11#Limitations_and_criticisms_of_X
18:55:00 <AnMaster> I think that new xlib replacement is better
18:55:51 <Deewiant> yeah, isn't that like a big *Ex for all of X? ;-)
18:58:48 <Deformative> 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 <AnMaster> Deformative, so use motif or QT or something
19:00:03 <pikhq> The X API is sheer insanity.
19:00:16 <Deformative> Motif and qt still use the 11th protocol revision.
19:00:29 <AnMaster> Deformative, is there any 12th?
19:00:34 <pikhq> Deformative: *Everyone* uses X11.
19:00:39 <pikhq> There's not an X12.
19:00:49 <pikhq> (although X.org is tossing around ideas for it, actually)
19:00:59 <Deformative> Not really considering it, but they have a wiki with ideas about it.
19:01:01 <AnMaster> hope they make the new API sane
19:01:10 -!- RedDak has joined.
19:01:32 <AnMaster> really nice and sane, and provide backward compatiblity in some external library
19:01:52 <Deformative> 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 <pikhq> Deformative: No, the API is the problem.
19:02:39 <pikhq> It is *fucking insane*.
19:02:42 <Deformative> You can wrap this protocol in an api to make it tolerable, but it still would suck internally.
19:02:46 <pikhq> It makes Win32 look reasonable.
19:03:42 <AnMaster> Deformative, nop, you could replace it with a 12th protocol revision
19:06:24 <Deformative> 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 <Deformative> And I don't have a clue how they could fix the hell that is the icccm.
19:09:34 <Deformative> I don't know, maybe they could make a lib to handle that or such.
19:10:31 <pikhq> So, basically, "If the entirety of X11 were removed, then the API would become sane".
19:10:44 <Deewiant> AnMaster: what the ICCCM specifies
19:11:26 <AnMaster> 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:49 <Deewiant> AnMaster: sure, useful, but it's one hell of a limitation
19:12:20 <AnMaster> 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 <pikhq> Perhaps just an *alpha channel*? ;)
19:12:45 <AnMaster> pikhq, even they are 8-bit these days
19:12:53 <pikhq> AnMaster: Well aware.
19:15:44 <Deformative> 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:38 <AnMaster> I like the standard X11 cursor
19:16:46 <AnMaster> I wouldn't trade it for anything
19:17:03 <AnMaster> Deewiant, hm? so the standard cursor is 3-color?
19:17:23 <marshmallows> only the bit's that arent the cursor are trasparent
19:17:34 <AnMaster> Deformative, transparent and black as far as I can se?
19:18:32 <AnMaster> however, wouldn't the cursor be a rectangular bitmap?
19:19:16 <marshmallows> I don't think that's relevant to how many colors it's made o
19:19:34 <marshmallows> in that case you could probably even say it's 256 colors
19:21:47 <Deformative> I remember i always needed to use the xcursor extension in order to get > 2 colors.
19:22:01 <Deformative> If I remember correctly xrender could be used as well.
19:25:03 <Deformative> Hmm, you may be able to have 2 colors + a mask
19:33:37 <AnMaster> Deewiant, there? why are some of the GOOD BAD boxes on the result page for the mycology tests not links?
19:34:07 <Deewiant> because there's no point in linking to anything, they're the expected output
19:34:19 <AnMaster> Deewiant, still some GOOD are links?
19:34:20 <Deewiant> it does say that right above the table you know :-)
19:34:27 <Deewiant> because they have something UNDEF
19:43:56 -!- Corun has quit ("back later, with pizza").
19:44:04 <SimonRC> I recall there is a supposed X replacement called Y
19:44:10 <SimonRC> It was on /. a few years back
19:47:16 -!- RodgerTheGreat has quit.
19:49:11 -!- RodgerTheGreat has joined.
20:13:47 -!- Sgeo has joined.
20:19:12 <AnMaster> 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:25:40 -!- RedDak has quit (Remote closed the connection).
20:30:20 -!- oklofok has quit (Connection timed out).
20:39:06 -!- oklofok has joined.
21:01:08 <AnMaster> 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 <AnMaster> printf seems to only do base 8 10 and 16
21:03:34 <AnMaster> marshmallows, so how should one do it, it is for an befunge fingerprint
21:03:43 <AnMaster> some kind of loop on the value?
21:04:03 <AnMaster> or what is the best way to get arbitrary base in C?
21:04:12 <AnMaster> is there some "standard algorithm"?
21:04:40 <marshmallows> void binary(int number) { if(number > 0) binary(number >> 1);
21:05:09 <pikhq> Gotta do it by hand.
21:05:14 <AnMaster> marshmallows, need a look for a number larger than say 1 ;P
21:05:16 <marshmallows> s/number & 1 ? '1' : '0'/number["0123456789"]/
21:05:44 * AnMaster ponders how to convert to a while loop
21:06:17 <AnMaster> marshmallows, recursion mean function can't be inlined
21:06:59 <AnMaster> marshmallows, look I'm aiming to make the fastest befunge interpreter out
21:08:21 <marshmallows> not ultra optimizing a proc that only works on numbers < 65536
21:08:25 <AnMaster> marshmallows, an recursion is not a good algorithm
21:08:34 <AnMaster> marshmallows, err, it only does that?
21:09:09 <AnMaster> marshmallows, fingerprints names have to fit into four ASCII chars
21:09:20 <AnMaster> but that doesn't affect the fingerprint routines themself
21:10:15 <AnMaster> xFFFF=65535 <-- yes but range is [A-Z0-9], or maybe even [A-Z0-9a-z], not [0-F]
21:10:36 <AnMaster> 2^32 - 1 I think is the number of possible fingerprints that can exist
21:11:27 <AnMaster> marshmallows, but that doesn't limit what the fingerprints can do
21:11:30 <marshmallows> anyway you should stop thinking recursion is inefficient that's like poison
21:11:49 <marshmallows> (and yes I know C does not define TCO who cares)
21:12:25 * Sgeo finds what looks like an IPv6 propaganda comic
21:13:01 <Sgeo> "The adventures of Team ARIN"
21:13:02 <Sgeo> http://www.arin.net/education/comic/index.html
21:13:43 <AnMaster> Sgeo, that's weird, like very weird
21:14:15 <AnMaster> it sounds almost as bad as that "sorcefource" thing or of microsoft
21:14:37 <Sgeo> At least I'm learning from this comic
21:16:39 <AnMaster> 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:58 <marshmallows> s/number & 1 ? '1' : '0'/number["0123456789ABCDEF"]/...then
21:18:41 <Sgeo> "Thank goodness I was able to ZING your hardware and stop your packets from moving and messing up the Internet!"
21:23:00 <pikhq> marshmallows: "01223456789ABCDEF"[number] looks cleaner to me. . .
21:23:24 <marshmallows> I prefer it the other way, it's your code do you watn
21:54:22 -!- slereah__ has joined.
21:58:28 -!- Sgeo has quit ("Ex-Chat").
21:58:45 -!- Sgeo has joined.
21:59:43 <pikhq> Of course, we all know the real way is "mov eax, [hex_string + number]".
22:06:23 <AnMaster> pikhq, doesn't handle 64-bit values
22:06:52 <AnMaster> %rax maybe on amd64, on 32-bit no idea
22:07:11 <AnMaster> assuming bases above. say 2^32
22:08:18 <lament> RodgerTheGreat: i know about timecube, but colorforthray.info is possibly more insane
22:08:42 <lament> AnMaster: timecube.com
22:08:43 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
22:09:10 <lament> the owner of colorforthray is actually on freenode.
22:12:11 <AnMaster> slereah__, err, lets see that can be simplified to -1x = 2, means x = 2/(-1) x =-1
22:12:48 <AnMaster> slereah__, how is it stupid an evil?
22:16:03 -!- slereah_ has joined.
22:16:46 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
22:24:16 <SimonRC> lament: I will have to read that site
22:24:58 <SimonRC> but maybe only in the way unlambda is great
22:28:25 <slereah_> In the way that it is totally awesome?
22:28:45 -!- Tritonio_ has quit (Remote closed the connection).
22:30:01 <slereah_> It's pretty much the best known functional esoteric language!
22:30:06 <slereah_> Well, then again, that's still not very known
22:30:33 <Deformative> I am trying to figure out if the language I am designing is "functional" or not.
22:32:43 <SimonRC> are there first-class function-like things?
22:32:58 <pikhq> Is lambda a keyword?
22:33:22 <Deformative> And I could have closures, but I do not think I will.
22:33:39 <Deformative> Functions typically need to return a value.
22:34:03 * pikhq nods... In a purely functional language, of course. . .
22:34:14 <AnMaster> I just got a nice idea from a language due to a typo I made in C:
22:34:33 <AnMaster> ie, a language where stuff can return several values
22:35:19 <pikhq> (technically, those are no longer functions, but rather *relations*. . . :p)
22:35:22 <AnMaster> 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 <AnMaster> but instead could return any number of values
22:35:37 <Deformative> marshmallows: main<...>add(..., print, 3, 4)
22:36:02 <lament> SimonRC: read it, it's fucked up.
22:36:05 <pikhq> AnMaster: Ignore, please.
22:37:03 <AnMaster> wonder how assignment syntax from such a function should look
22:37:19 <AnMaster> foo,bar,quux = somefunction(); ?
22:37:20 <oklofok> 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 <oklofok> don't wanna be a killjoy, but if it's the latter, it's not that crazy :P
22:37:51 <AnMaster> oklofok, well not sure, you can return several values, any given amount of values
22:38:10 <AnMaster> oh and variable amount of returns
22:38:23 <Deformative> marshmallows: http://pastebin.ca/945366 That is a snippet of the old spec.
22:38:30 <AnMaster> oklofok, so: int ... myfunc();
22:38:37 <Deformative> That is before anonymous functions and before the syntax changed.
22:38:37 <AnMaster> would return n number of integers
22:38:59 -!- oerjan has joined.
22:39:42 <AnMaster> oklofok, like variable argument count in C, but instead variable return arguments
22:40:00 <pikhq> AnMaster: You could have some very interesting calling conventions with that. . .
22:40:01 <AnMaster> oklofok, would be a procedural language I think
22:40:26 <AnMaster> pikhq, oh yes, at least when you do variable both ways
22:40:36 <Deformative> marshmallows: Because, there are no return values.
22:40:45 <AnMaster> pikhq, double ... floor(double ...)
22:40:46 <pikhq> 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 <AnMaster> pikhq, err not eax, would rather be rax right?
22:41:16 <pikhq> On AMD64, it would be rax.
22:41:21 <marshmallows> I don't understand the code enough to decide, sorry
22:41:42 <pikhq> But most people don't have OSes that enable long mode, so the rax register won't exist for those people. ;)
22:41:52 <Deformative> marshmallows: Basically, it has continuations only, no return values.
22:41:54 <AnMaster> pikhq, anyway I could not code this heh, anyway I don't know ASM
22:42:01 <AnMaster> pikhq, however an interpreter should work
22:42:10 <Deformative> So you pass a function to execute next to every function.
22:42:10 <AnMaster> and I probably won't code this, just a crazy idea
22:42:16 <pikhq> It'd be trivial to code up given a simple C compiler, actually. . .
22:42:33 <Deformative> I use the word "function" but I do not believe they can be called functions.
22:42:41 <pikhq> Getting it to handle the syntax would be the pain.
22:42:57 <pikhq> But the actual *semantics*? Trivial.
22:43:07 <AnMaster> 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:44:12 <pikhq> 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:42 * pikhq should look up cdecl again
22:44:52 <AnMaster> pikhq, amd64 calling convention doesn't do that, it returns floating point in SSE registers iirc
22:45:00 <Deformative> AnMaster: What is the point? Why not just return a structure?
22:45:10 <AnMaster> Deformative, it could be interesting
22:45:29 <AnMaster> and if you make this language has, first class functions
22:45:35 <AnMaster> then it could be really interesting
22:45:40 <pikhq> AnMaster: The amd64 calling convention is different from the x86 calling convention.
22:45:46 <oklofok> could you curry return values
22:46:36 <Deformative> AnMaster: Are you talking about my language or your's?
22:46:59 <AnMaster> I probably won't implement it, or write a spec for it
22:47:03 <Deformative> What is the point of multiple return values?
22:47:04 <pikhq> (x86's convention stores all arguments on the stack. x86_64 stores the first 6 arguments or so in registers.)
22:47:08 <AnMaster> Deformative, would be cheating
22:47:31 <AnMaster> Deformative, why not ask yourself: what is the point of any esoteric language then
22:47:43 <Deformative> marshmallows: Still trying to understand my code or should I leave?
22:47:55 <oklofok> AnMaster: the prob is, what's the essential difference between returning multiple values and an n-tuple
22:48:43 <AnMaster> 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 <oklofok> i prefer to know what you mean :)
22:49:12 <pikhq> Hmm. Well, you *could* define the calling convention so that it's equivalent to a C program returning a struct. . .
22:49:31 <oklofok> pikhq: stop being so hardware, i'm a pythonist nowadays! :D
22:49:38 <AnMaster> 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 <pikhq> oklofok: When discussing something C-esque, then you've got to be hardware. :p
22:50:43 <AnMaster> oklopol, so I ended up with: extern bool bool input_getint(FUNGEDATATYPE * value, int base);
22:51:04 <AnMaster> 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 <AnMaster> that could be written as bool FUNGEDATATYPE input_getint(int base);
22:51:35 <calamari> wish I knew more about circuit design
22:52:02 <AnMaster> pikhq, also this should be supported: bool ... int ... somefunction(), that is several sets of varreturns
22:52:09 <pikhq> AnMaster: Could be even worse, though.
22:52:18 <pikhq> extern bool static bool input_getint(...);
22:52:33 <oklopol> starting to sound fun again! now support regexes
22:52:35 <AnMaster> pikhq, oh why static in front of the second bool, what would that mean?
22:52:54 <pikhq> That it would return different values depending upon the linakge.
22:53:01 <pikhq> s/linakge/linkage/
22:53:21 <AnMaster> how, if I may ask, would the return statement look?
22:53:36 <AnMaster> or would it be implemented as some sort of co-routine?
22:53:43 <pikhq> extern bool static bool linked_p() {return 0, 1;}
22:54:42 <AnMaster> pikhq, but for say extern bool ... static bool ... int ... then?
22:54:44 <pikhq> No *idea* how you'd make that calling convention work, though.
22:55:10 <pikhq> Except *maybe* by making the linker understand this language's conventions?
22:55:12 <pikhq> AnMaster: No clue.
22:55:26 <AnMaster> and what about oklopol's regexes?
22:55:49 <pikhq> return(0,1,0,0,1)(1,0,1,1,0)(5,6,7,8,9,10);
22:56:04 <AnMaster> pikhq, ok and assignment from this function?
22:56:28 <AnMaster> say /* what here*/ = linked_p()
22:56:38 <pikhq> bool foo,bool bar, bool baz, int qux, int quux = this_insane_function();
22:56:55 <pikhq> Well, for linked_p, it'd be easy.
22:57:00 <pikhq> bool foo = linked_p();
22:57:07 <AnMaster> pikhq, err I mean for the "extern bool ... static bool ... int ..." one
22:57:11 <pikhq> It returns 1 value; that value is different based upon linkage.
22:57:54 <AnMaster> or discard values not fitting into number of return variables?
22:58:11 <AnMaster> and I still think oklopol's regex for return value looks cool
23:01:03 <oklopol> (oklotalk does regex-like pattern matching, you can set an assert on lambdas to return a certain type pattern)
23:01:21 <oklopol> (all this done in such an unclean fashion you'll want to cry <3)
23:01:32 <AnMaster> oklopol, mine at least is quite clean idea
23:01:42 <AnMaster> with all the pointer hell of C too
23:03:00 <pikhq> Window's calling convention does not allow variadic functions.
23:03:26 <AnMaster> btw what do you call "varadic return"?
23:03:35 <pikhq> The more I know about Windows, the more I hate it.
23:04:37 <AnMaster> pikhq, windows "falls back" to cdecl for varadic functions I think
23:08:02 * Sgeo becomes obsessed with ViolaWWW
23:08:21 <Sgeo> AnMaster, old web browser, from before Mosaic
23:08:32 <Sgeo> http://www.xcf.berkeley.edu/~wei/viola/violaCentral.html
23:08:42 <AnMaster> make it be able to show xhml pages
23:09:04 <AnMaster> even tried adding garbage collector but didn't get that work finished
23:09:17 <Sgeo> seems like ViolaWWW had AJAX-like features way before everyone else oO
23:09:19 <AnMaster> if you got bzr 0.92 or later installed, you could check it out from *looks for url*
23:10:16 <AnMaster> Sgeo, yes... "http://www.xcf.berkeley.edu/~wei/viola/vw/inset_chess.v" <-- wow
23:10:57 <Sgeo> Think ".js for ViolaWWW"
23:10:59 <AnMaster> marshmallows, viola script it seems
23:11:08 <Sgeo> WAAAAAAAAAY before JS ofc
23:11:45 <marshmallows> http://www.xcf.berkeley.edu/~wei/viola/vw/chessDemo.html
23:12:05 <AnMaster> it's for some really old browser
23:12:14 <AnMaster> of course it doesn't work in modern ones
23:12:38 <Sgeo> AJAX(like) in 1994! http://www.xcf.berkeley.edu/~wei/viola/vw/monitor2.v
23:12:40 <AnMaster> Sgeo, it looks very weird, parts of it look like C code
23:13:01 <AnMaster> yes C code with some \latexstyle commands in it
23:14:30 <Sgeo> If the Viola code was adopted for the WWW, how much more advanced would we be right now?
23:15:02 <Sgeo> (I mean, if we made that decision way back when, not saying we should do that now)
23:16:26 <Sgeo> marshmallows, where do you see that?
23:16:33 <marshmallows> <Sgeo> If the Viola code was adopted for the WWW, how much more advanced would we be right now?
23:18:42 * Sgeo wonders if he can download ViolaWWW from somewhere and play with it
23:20:40 <Sgeo> "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 <Sgeo> 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 <AnMaster> /usr/include/gentoo-multilib/amd64/ctype.h:#define __isctype(c, type) \
23:20:52 <AnMaster> /usr/include/gentoo-multilib/amd64/ctype.h- ((*__ctype_b_loc ())[(int) (c)] & (unsigned short int) type)
23:21:01 <AnMaster> that is how isalpha and such are done it seems
23:21:22 <Sgeo> I don't see how stopping one object on a page from interacting with others on the page improves security
23:23:12 <AnMaster> bank login object should not be reachable from either simple game object, nor trojan object
23:24:07 <marshmallows> does not give you proof that it's not reachable though
23:26:52 <AnMaster> marshmallows, true but other security features exist I assume
23:26:57 * Sgeo wonders if there are people who fans of ViolaWWW
23:27:14 <AnMaster> I just wanted to get it to work and try it
23:27:34 <AnMaster> then I noted how much faster than, say, firefox it was
23:28:53 <Sgeo> Historical Web Browsers
23:28:58 <Sgeo> http://www.livinginternet.com/w/wi_browse.htm
23:29:56 <AnMaster> Sgeo, btw I also forked original gopher client
23:32:47 * Sgeo just wants to download VioletWWW right now
00:29:50 <AnMaster> 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 <Deformative> Should I allow "define" ? It opens up room for side effects.
00:33:01 <Deformative> Without "define" side effects are much harder to create.
00:34:21 <Deformative> I am thinking of only allowing const globals.
00:38:21 <lament> are you writing a scheme?
00:38:56 <Deformative> Just thinking about taking features from scheme.
00:41:36 <lament> in scheme, define is hardly responsible for side effects
00:42:34 <Deformative> Without define there is no room for side effects anywhere.
00:44:13 <Deformative> (define x 3) (+ x x) (define x 4) (+ x x) The define has a side effect, it causes a different result.
00:46:07 <lament> you don't know what "side effects" mean.
00:48:07 <lament> 16:42 <Deformative> 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:31 <marshmallows> apparently non-termination can be considered an effect
00:49:07 <Deformative> Define cause side effects, so I cannot decide to implement it or not.
00:49:21 <oerjan> the Recursion monad :)
00:49:39 <Deformative> lament: Touche regarding my previous statement.
00:49:58 <oerjan> data Rec a = Now a | Later (Rec a)
00:49:58 <Sgeo> All books are 3 characters. Check syntax and try again
00:51:31 <pikhq> So, Rec is now or later?
00:52:00 <oerjan> non-termination is then indicated by Later (Later (Later ( ... :)
00:52:16 <SimonRC> have you heard of sturctural recursion
00:52:29 <SimonRC> (or the other thing I can't remember the name of)
00:52:45 <oerjan> (which is what this Rec should be)
00:52:52 <lament> in scheme, only top-level defines are sideeffecting
00:52:53 <SimonRC> it means you can't call yourself in general, but must use a specific combinator
00:53:19 <lament> wait, that's not true is it
00:53:55 <oerjan> lament: i think define is equivalent to set! whenever a define of the same variable is in the same scope
00:54:08 <lament> 1:=> (define (foo) (begin (define x 2) (display x) (define x 54) (display x)))
00:54:12 <lament> 5454#<output_port:stdout>
00:54:15 <SimonRC> 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 <lament> oerjan: no, apparently it's only top-level.
00:54:31 <SimonRC> you can do most stuff, but not (e.g.) Ackermann's
00:55:05 <lament> i didn't even realize scheme behaved this way. This is most odd.
00:55:09 <marshmallows> define is the same as set! on the top level if the variable is bound
00:55:26 <oerjan> and not otherwise? i see.
00:55:33 <lament> marshmallows: you have to admit my example doesn't output what you expect it to output.
00:56:15 <oerjan> probably to make toplevel interactive mode not require any (less?) special treatment?
00:56:40 <oerjan> since in an interactive interpreter you definitely want to allow redefinitions
00:56:52 <lament> actually that's bigloo
00:57:01 <lament> and PLT simply doesn't allow me to execute that statement
00:57:08 <lament> "define: not allowed in an expression context in: (define x 54)"
00:57:13 <oerjan> SimonRC: primitive recursion
00:57:58 <lament> no, it doesn't matter what you use
00:58:12 <lament> "Definitions may occur at the beginning of a <body> (that is, the body of a lambda, let, let*, letrec, let-syntax, or letrec-syntax expression)"
00:58:20 <lament> the key phrase being "at the beginning"
01:00:15 <lament> scheme is annoyingly complicated for being supposedly so simple
01:00:17 <lament> but it's good complexity
01:01:14 <lament> there's a special case for allowing definitions inside a begin when that begin is your first statement
01:01:24 <lament> ie (begin (begin (define x 2)) (display x)) ==> "2"
01:01:40 <lament> so the begins get "folded"
01:03:41 <lament> (begin (begin (define x 1) (display x)) (define x 2) (display x)) ==> "12" ; look, i'm redefining stuff!
01:04:30 <lament> (i don't actually get it, why is that allowed?)
01:07:12 -!- jix has joined.
01:08:05 <lament> the begins don't just get folded, they also get folded with the top level
01:08:16 <lament> so the definitions inside a begin on top level are top-level definitions
01:08:40 <lament> > (begin (define x 1) (display x) (define x 2) (display x))
01:08:49 <lament> but trying to put that in a function is an error
01:08:54 <lament> because you're no longer on top level
01:09:53 <lament> 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:44:08 <Sgeo> 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:07:39 -!- sebbu has quit ("@+").
02:37:13 -!- Corun has joined.
02:39:59 -!- Corun has left (?).
02:40:10 <slereah_> Well, what's the criteria for random quality?
02:40:54 <oerjan> 10% Nobel prize quality, 10% Plan 9 from outer space. Fill in the intermediates yourself
02:41:16 <RodgerTheGreat> something that sparks my interest and that I can build from.
02:41:35 <oerjan> that sparks _my_ interest
02:41:55 <oerjan> and it could tie up all the other suggestions
02:42:43 <RodgerTheGreat> 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 <oerjan> genetically engineered dragons used as chimney sweepers
02:59:19 <slereah_> See RodgerTheGreat? It's a story that just write itself!
02:59:46 -!- calamari has quit ("Leaving").
02:59:56 -!- calamari has joined.
03:23:11 <Sgeo> '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 <Sgeo> ~http://www.w3.org/TR/html5/
03:23:52 <Sgeo> http://www.w3.org/TR/html5/
03:24:24 <Sgeo> Yes, let's also put in a spec "Conforming programs SHOULD try to make 1+1=3"
03:25:39 <oerjan> that's a strawman: it is probably only impossible for _some_ input documents
04:07:37 <RodgerTheGreat> a small tidbit of things to come: http://www.nonlogic.org/dump/images/1205723239-preview.png
04:17:43 <oerjan> Which reminds me, in case any of you haven't noticed, that Casey and Andy has resumed.
04:22:07 <RodgerTheGreat> and as a bonus, some character designs: http://www.nonlogic.org/dump/images/1205724112-chars.png
04:24:13 -!- adu has joined.
04:35:33 <RodgerTheGreat> 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 <oerjan> continuations are good. i hear delimited ones are even better.
04:37:36 <adu> continuations?
04:38:07 <adu> I recently realized how to implement a tail-call on ppc
04:38:56 <adu> oerjan: whats a delimited continuation?
04:48:07 <oerjan> oh i'm a bit vague on that
04:55:24 <oerjan> 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 <oerjan> and then you can do some kind of manipulation of what happens once you reach that point
04:57:26 <oerjan> combined with the usual use and even reentering of the continuation
05:04:27 <adu> i think we have different ideas about what a continuation is
05:05:03 <marshmallows> what aspect of programming languages should I write about?
05:05:09 <adu> xslt is so lame
05:05:41 <adu> marshmallows: I think you should write about genaric datastructures and how they relate to binding environments
05:05:54 <adu> for example
05:06:19 <adu> a genaric "list of integer" would have only elements that are of type integer
05:06:41 <adu> what for? school?
05:07:28 <adu> then write about the most common 101 datatypes used in the industry today
05:09:49 <adu> i would imagine the top 10 would be (int, string, bool, vector, list, float, hash-table, enum, exception, and possibly queues)
05:10:41 <adu> marshmallows: why are you asking if you don't want my ideas?
05:11:50 <adu> marshmallows: what do you want to write about?
05:12:48 <adu> then maybe the wisest option is not to write anything
05:13:12 <adu> 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 <SimonRC> RodgerTheGreat: the comic looks good so far
15:16:12 <SimonRC> but the blond guy's hair changes colour
15:17:37 <SimonRC> alas using the standard technique of making everything capital letters prevents the full effect of something being called "the Apparatus"
15:17:48 <SimonRC> (i.e. the capital A gets lost)
16:04:30 -!- jix has joined.
16:23:18 -!- oerjan has joined.
16:58:24 -!- Sgeo has joined.
17:06:47 <AnMaster> (hm, could you make an esolang of it?)
17:12:10 <oerjan> http://www.nonlogic.org/dump/images/1205723239-preview.png
17:12:37 <oerjan> (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 <ehird> marshmallows = new?
17:26:47 <ehird> [16:26] [Whois] marshmallows is an operator on channels: #ALGOL
17:27:03 <ehird> evidently; an agent of evil
17:28:20 * oerjan has discovered marshmallows's secret, with the help of the mighty Logs
17:28:49 <ehird> data Rec a = Now a | Later (Rec a)
17:28:50 <Sgeo> All books are 3 characters. Check syntax and try again
17:30:09 <ehird> lament: your scheme is broken, by the way
17:30:22 <ehird> #;1> (define (foo) (begin (define x 2) (display x) (define x 54) (display x)))
17:30:40 <ehird> bigloo is not a scheme interpreter
17:30:43 <ehird> not a conforming one at least
17:31:17 <ehird> lament: however, remove (begin ...) and replace with ...
17:31:22 <ehird> it's implicit in lambda-bodys
17:31:28 <ehird> and your example becomes standard
17:31:59 <ehird> <RodgerTheGreat>thought provoking, original and interesting.
17:32:08 * ehird kicks self repeatedly as punishment
17:32:50 <ehird> oerjan: saying that :D
17:32:51 <ehird> <Sgeo>'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 <ehird> that's perfectly reasonable
17:33:02 <ehird> ensuring validity is perfectly fine
17:33:14 <ehird> the only time it would break is pretty much when a deliberately malicious script was there
17:35:38 <ehird> <Deformative>I am trying to decide if I should even implement closures.02:30:50
17:35:38 <ehird> <Deformative>They are so slow.
17:35:47 <ehird> closures are slow, let's go writing micro-optimized languages
17:36:50 <ehird> Deformative: "comment..."
17:36:54 <ehird> that's what smalltalk does
17:36:58 <ehird> and uses '...' for string
17:56:55 <marshmallows> should I use haskell or scheme to write a WAM in?
18:05:38 <ehird> http://uncyclopedia.org/wiki/An_article_that_contains_nothing_but_a_cut-down_version_of_itself_that_does_not_contain_itself
18:05:43 <ehird> lament: your scheme apparently
18:05:48 <lament> (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 <lament> in general the scheme community is weird in that they hate stuff that's clearly good
18:06:18 <ehird> lament: because it ISN'T a scheme implementation
18:06:37 <ehird> so obviously not 'clearly good'
18:06:42 <lament> what do you mean it isn't? they say it's "mostly compliant"
18:06:52 <lament> which is as good as most things
18:07:18 <ehird> lament: the reason your example gets that output is because bigloo is broken.
18:07:22 <ehird> bigloo is also broken in countless other ways.
18:07:27 <ehird> ergo, bigloo is not clearly good
18:09:10 <lament> is gcc broken because it supports single-line comments in C?
18:09:41 <ehird> lament: look, bigloo is broken
18:09:58 <ehird> 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 <lament> how's saying it's broken without justification any better than saying it's clearly good without justification?
18:10:42 <lament> When i said "clearly good", i mostly referred to r6rs, by the way :)
18:10:54 <lament> which is an unrelated issue
18:11:22 <lament> it doesn't even matter if it's great or not so great
18:11:30 <lament> the amount of hate #scheme generates towards it is just unbelievable
18:12:17 <lament> marshmallows: why do you say that?
18:19:46 <marshmallows> I can't produce a rational argument, I simply feel that way
18:19:54 <marshmallows> This is funny though http://www.utdallas.edu/~ramakrishnan/Projects/GC_for_C/index.htm
18:20:00 <ehird> gc for c is not funny...
18:20:08 <ehird> well, that page is
18:20:15 <ehird> but boehm's gc, for instance, is a good idea for real use
18:20:21 <ehird> marshmallows: boehm. it is great.
18:20:26 <ehird> well tested, robust, very widely used..
18:20:32 <ehird> just don't fuzz about with pointers too much ;)
18:20:34 <lament> PLEASE DON’T USE THE CONTENTS OF THIS PAGE FOR PLAGIARISM
18:21:08 <lament> is that embedded INTERCAL code?
18:21:15 <ehird> <<Inclusion of the Header Files used in the project an the reason for their inclusion follows>>
18:21:21 <ehird> 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:32 <ehird> also it has excessive whitespace and each stdlib include file is extensively documented
18:21:54 <ehird> This header file is included inorder to enable us to do string operations
18:21:54 <ehird> #include <string.h>
18:22:25 <ehird> lament: their malloc printf's when it can't allocate
18:22:27 <ehird> if(gc_ptr == NULL)
18:22:27 <ehird> printf("\nYour Request cannot be satisfied even after Garbage Collection \n");
18:22:40 <ehird> and on incorrect calls, prompts the user
18:22:41 <ehird> printf("\nGC_ERROR 1 : The argument for the GC_malloc function should always be positive");
18:22:41 <ehird> printf("\nDo u want to exit or continue without allocation (y/n ) : ");
18:22:41 <ehird> scanf(" %c",&gc_continue);
18:23:24 <ehird> lament: you could use that for the befunge 'ask on div 0' thing
18:59:44 -!- oerjan has quit ("leaving").
19:13:15 -!- ehird`ii has joined.
19:13:43 <ehird`ii> echo>foo sending to irc is a weird feeling
19:14:46 <ehird`ii> very amusing little thing.. gotta play with this some more
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:49 <AnMaster> <ehird`ii> now... how do I quit?\!?
20:01:13 -!- ehird_ has quit (Read error: 104 (Connection reset by peer)).
20:04:28 <AnMaster> 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 <Sgeo> 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 <ehird_> Sgeo: do you want a medal? :P
20:13:29 <ehird_> 'You are dreaming. Do a reality check!' <-- no. I am not
20:13:43 <ehird_> I do not use a computer in my dreams, because that would be sad. :D
20:14:07 * Sgeo doesn't either
20:14:23 * ais523 doesn't remember having used a computer in dreams
20:14:25 <Sgeo> (Strangely enough, because I'm on the computer ALL THE TIME irl)
20:14:32 <Sgeo> But apparently some people do
20:14:34 <ais523> but I often think about programming whilst trying to fall asleep
20:14:45 <ehird_> i'm heavy in lucid dreams
20:14:46 <Deewiant> 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 <AnMaster> ehird_, what was "<ehird`ii> very amusing little thing.. gotta play with this some more" about?
20:14:59 <ehird_> 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 <ehird_> AnMaster: a file-system based FIFO irc client
20:15:17 <ehird_> AnMaster: you cat to 'in' files and tail -f 'out' files
20:15:20 <AnMaster> Deewiant, yes because I just replaced the stack array pointer will a null pointer anyway XD
20:15:22 <ehird_> and it has a directory tree
20:15:27 <ehird_> of server/entity/in,out
20:15:44 <Sgeo> ehird_, coolness
20:15:50 <ais523> does anyone here have code for a very simple IRC client, so that it could be translated into an esolang?
20:15:52 <Deewiant> ais523: running out of memory when pushing a value on the on stack
20:15:59 <ehird_> AnMaster: http://www.suckless.org/wiki/tools/irc/irc_it
20:16:04 <ehird_> AnMaster: from the people who brought you wmii&dwm
20:16:10 <AnMaster> ehird_, tried zsh irc? or was it zirc?
20:16:23 <ehird_> http://www.suckless.org/wiki/tools/irc/simple_irc_client
20:16:26 <ehird_> isn't that convenient? ;)
20:16:34 <ehird_> ais523: <250 lines of c
20:16:55 <AnMaster> ehird_, anyway there is an irc client in *pure* zsh, no external commands called
20:17:04 <AnMaster> and you can work in your shell at the same time
20:17:10 <AnMaster> it kind of hooks into the shell
20:17:32 <ehird_> ais523: be warned, sic isn't very nice to use
20:17:34 <AnMaster> ehird_, nah you didn't, I remember it was someone on #gentoo-amd64 who did
20:17:41 <ehird_> ais523: it's bitchx-style - multiplexes everything into one stream
20:17:42 <ais523> ehird_: I don't care particularly
20:17:44 <ehird_> so you get mixed up channels
20:17:46 <ais523> it's the proof of concept, really
20:18:00 <ais523> and you can always just start two clients for two channels and use them with different nicks
20:18:07 <AnMaster> ais523, what language? befunge?
20:18:19 <ehird_> ais523: uhh, intercal has sockets?
20:18:27 <ehird_> you cannot use netcat: you need stdin for user input
20:19:03 <Sgeo> INTERCAL + PSOX has sockets!@
20:19:14 <ais523> because I just found out that CLC-INTERCAL added generalised networking support
20:19:14 <ais523> (previously, networking could only be used to steal data from other INTERCAL programs)
20:19:29 <ehird_> especially since the overhead to using psox from intercal would be painful
20:19:34 <ais523> I would have done it like that if it weren't for the networking library already present
20:19:38 <ehird_> (ditto in just about every non-brainfuck language. don't fool yourself :))
20:19:43 <ais523> and ehird_: you could localise the overhead in a subroutine pretty easily
20:19:51 <ehird_> AnMaster: psox is basically brainfuck-centric.
20:19:57 <ehird_> Sgeo just says it isn't for marketing potential
20:20:16 <ais523> at least in C-INTERCAL; CLC-INTERCAL would be harder because some ASCII characters are easier to produce than others
20:20:25 <ais523> (because it uses Baudot as its character set)
20:20:26 <ehird_> AnMaster: try and use it, then see :)
20:20:35 <lament> brainfuck-centric sounds boring
20:20:40 <ehird_> ais523: hmm, is C-intercal modular/extensible/foobarbaz?
20:20:45 <ehird_> ais523: I might write a SOCKET foobar.
20:20:49 <Sgeo> It was designed mostly from the point of view of using Brainfuck, but it doesn't actually force you to use Brainfuck
20:21:03 <ais523> although I'm writing an FFI for it at the moment, which would make it even more extensible
20:21:12 <ehird_> AnMaster: pretty much :D
20:21:21 <ais523> AnMaster: generally we just use library files which you literally copy into a program's source code
20:21:37 <ais523> they're all kept with the distribution to avoid line number clashes
20:21:42 <ais523> (it's sort of like CPAN, but lower tech)
20:21:53 <AnMaster> ais523, couldn't be done for networking I think? would need some interpreter level support
20:21:59 <Sgeo> There is a loopback mechanism making it usable (but not easily) in languages that take in lines and not individual characters
20:22:03 <ais523> AnMaster: CLC-INTERCAL has that
20:22:26 <ais523> you just need to write a specially crafted line with the line number 666
20:22:49 <ehird_> AnMaster: it's INTERCAL, what did you expect
20:22:50 <ais523> 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:23:07 <ehird_> ais523: I just realised we've exausted all possible Unlambda/Underload/Overload/etc names
20:23:16 -!- olsner has joined.
20:23:30 <ehird_> ais523: I guess overlambda would be a 15-tier system
20:23:36 <ehird_> ais523: with things like an ffi at the very bottom
20:23:38 <Sgeo> Underlambda exists?
20:23:43 <ais523> ehird_: Underlambda is just a cross between Unlambda/Underload
20:23:44 <AnMaster> ais523, did you say line number reserved for compiler, errrrrrrrr?
20:23:45 <ehird_> Sgeo: ais523's new language
20:23:49 <ais523> I'm working on the spec at the moment
20:23:52 <ehird_> so that tier-1 is a glorified ffi with tcness
20:23:56 <ais523> AnMaster: lines 1000-1999 are for the syslib
20:24:09 <AnMaster> ais523, so your program must be shorter than 1000 lines?
20:24:16 <ehird_> AnMaster: you can use 2000-..
20:24:18 <ais523> AnMaster: no, 2000-65535 are fine
20:24:25 <ais523> and not every line needs a number anyway
20:24:35 <ais523> AnMaster: your line numbers needn't be in order
20:24:45 <AnMaster> oh line as in 10 PRINT HELLO GOTO 10
20:25:02 <ais523> but the numbers needn't be in order
20:25:04 <ehird_> ais523: hmm, is there a C-INTERCAL grammar that isn't yacc/lex anywhere?
20:25:22 <ais523> ehird_: you can deduce it from the C-INTERCAL manual
20:25:29 <ais523> or there's an IACC grammar in CLC-INTERCAL
20:25:43 <ehird_> 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:51 <ehird_> that would be syntax-highlighting sorted
20:26:31 <ais523> ehird_: I'd planned that sort of thing already
20:26:43 <ais523> you should see the grammar, though, it takes lexical tie-ins to a whole new level
20:26:52 <ehird_> ais523: maybe it should dump it as an INTERCAL program which constructs the data structure
20:27:14 <ais523> ehird_: you say such things in jest. Have you ever looked at CLC-INTERCAL?
20:27:18 <ais523> it's full of that sort of thing
20:27:55 <ais523> C-INTERCAL compiles to a non-esolang, therefore has to be saner
20:27:58 <ehird_> http://www-cs-faculty.stanford.edu/~knuth/programs/tpk.i
20:28:01 <ehird_> that gives me an ideaaaaaa
20:28:02 <ais523> but CLC-INTERCAL compiles to custom bytecode
20:28:16 <ehird_> There's already one in redcode, so..
20:28:58 <ehird_> The Art of Computer Programming!
20:28:58 <ais523> I've bacronymed it into "The Art Of Computer Programming", but am not sure whether I am right
20:29:14 <ehird_> You know, Knuth's '70-Aleph0 work
20:29:18 <AnMaster> ehird_, well since it is kuth, why not do TeX in intercal?
20:29:27 <ehird_> AnMaster: ehh, taocp is in blocks
20:29:31 <ehird_> you can translate one algo at a time
20:29:37 <ehird_> http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web <-- tex82
20:29:47 <AnMaster> ehird_, I mean a tex processor/interpreter/whatever in intercal
20:29:48 <ehird_> & is actually in an HTML document
20:29:54 <ehird_> AnMaster: hideously complex.
20:30:14 <ais523> ehird_: INTERCAL-72 acts block-structured and imperative, because all languages were back then
20:30:22 <ais523> so it's not too hard to translate that sort of code
20:30:31 <ais523> luckily, CLC-INTERCAL sorted out the problem by banning NEXT
20:30:41 <ais523> and even in C-INTERCAL I consider using it for subroutines to be bad form
20:30:46 <ehird_> AnMaster: you can do TAOCP one at a time
20:31:07 <ehird_> AnMaster: http://impomatic.blogspot.com/
20:31:10 <ehird_> that'st he redcode one
20:31:20 <AnMaster> ehird_, I just said coding a a program in intercal that can process TeX
20:31:56 <ehird_> AnMaster: do you know how complex tex is?
20:32:00 <ehird_> and how quite primitive intercal is?
20:32:04 <ehird_> well, it has loads of stuff
20:32:07 <ais523> ehird_: INTERCAL isn't primitive
20:32:11 <ehird_> ais523: I meant it like..
20:32:17 <ais523> it just looks that way from a read through the INTERCAL-72 manual
20:32:17 <ehird_> primitive as in very repetitive
20:32:20 <ehird_> to do even basic stuff
20:32:23 <ais523> read a more modern manual, you'll get the hang of it
20:32:30 <ehird_> since although it has many instructions, they do not do much useful
20:32:49 <ehird_> AnMaster: 'implement tex' is like saying 'implement c'
20:32:55 <ehird_> except a little less horrific
20:32:56 <AnMaster> err that http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web, got weird stuff in it
20:33:04 <ehird_> AnMaster: it's html...
20:33:16 <ehird_> and copy it into a .web file
20:33:21 <ais523> have you not seen a backtracking, or multithreaded, or class-oriented, or overloading and enslaving-using INTERCAL program?
20:33:25 <ais523> or are you stuck in 1972?
20:33:36 <ehird_> ais523: i'm trying to say that the basic operations like text transforming
20:33:45 <ais523> AnMaster: like pointers, but in reverse
20:34:01 <ais523> it's a CLC-INTERCAL concept that's kind of hard to explain and that I don't understand properly
20:34:02 <AnMaster> in reverse... not sure I get what you mean?
20:34:10 <ais523> AnMaster: neither do I
20:34:22 <ehird_> AnMaster: anyway, those chars are things like ≠
20:34:27 <ehird_> (=/= if you can't see it)
20:34:28 <AnMaster> ais523, so what are they, you maintain a intercal implementation right?
20:34:34 <ais523> AnMaster: I don't implement them
20:34:50 <ehird_> AnMaster: save tex.web as an html document damnit
20:35:09 <ais523> it's the only INTERCAL implementation I know that actually handles the type system properly
20:35:24 <AnMaster> ehird_, isn't it rather silly that it is on the internet as text/plain
20:35:34 <ais523> 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 <lament> tex.web proves that you can write good software with any tools
20:36:50 <ehird_> AnMaster: knuth's webserver is bugged, so what
20:37:13 <ehird_> 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 <ehird_> http://www.classnamer.com/
20:37:48 <ais523> they use text/css, which in all commonly-used browsers does what text/plain ought to do
20:37:53 <lament> marshmallows: http://tug.org/texlive/devsrc/Build/source/texk/web2c/tex.web
20:37:55 <ehird_> marshmallows: source to tex, circa 82
20:38:01 <ehird_> lament: no, that's more recent
20:38:22 <lament> because WEB is a literate programming system
20:38:25 <ehird_> marshmallows: who cares
20:38:28 <ehird_> lament: no, it's in a <pre>
20:38:38 <ehird_> is that knuth wanted to put tex.web on his website
20:38:42 <ehird_> so he wrote an html document wrapping it
20:38:49 <ais523> lament: with an extra ! at the start of the program, TECO becomes a literate programming language
20:38:49 <ehird_> but he uploaded as tex.web
20:38:55 <ehird_> and his webserver serves not-.html as text/plain
20:39:09 <ehird_> marshmallows: it's Knuth's TeX typesetting system, as it was in 1982
20:39:15 <lament> ais523: i'm not sure why i would be interested in TECO :)
20:39:27 <ais523> lament: it's a classic esolang
20:39:29 <ehird_> ais523: I want to learn teco. :(
20:39:34 <ais523> although it wasn't intended as such originally
20:39:45 <ais523> IMO it's up there with BancSTAR
20:39:50 <lament> i don't think things like that qualify as esolangs
20:40:10 <ais523> BancSTAR is clearly an esolang, despite the fact that it was intended as a serious language
20:40:13 <lament> its code looks like noise
20:40:17 <ehird_> I want a language that is pure-literate
20:40:18 <lament> but so does binary code
20:40:18 <ais523> it's like Network Headache
20:40:27 <ais523> lament: TECO is binary, more or less
20:40:34 <ehird_> what about nested literate
20:40:36 <ais523> all the characters in the character set, including the control codes, have meanings
20:40:38 <lament> ais523: right. that doesn't make it an esolang.
20:40:42 <ehird_> comment<code<comment<code>>>
20:40:53 <lament> ais523: it's not being unreadable that makes something an esolang
20:40:54 <ais523> ehird_: TECO isn't !comment!code!comment!code!
20:40:56 <ehird_> comment>code>comment>code<<<
20:41:07 <ais523> but it amounts to that because the chances of the bits between the !s having any meaning is very low
20:41:17 <ehird_> This procedure does X, then does Y:
20:41:33 <ehird_> >X{y:int >our temp var< ...}$<
20:45:53 -!- tola has joined.
20:49:34 <ehird_> ais523: perl global variable initialized to false
20:50:18 <ais523> it's the version number, which is not false, and therefore true
20:50:40 <ais523> unless you happen to be using Perl version 0, which doesn't exist
20:51:17 <ehird_> ais523: multiple statements in one expression?
20:51:27 <ais523> do{statement;statement;}
20:51:33 <ais523> the last statement gives the value of the expression
20:51:53 <ais523> oh, and those braces don't count as braces for any purpose but for delimiting the do
20:52:02 <ais523> they can't be redo'ne, for instance
20:52:09 <ais523> but you can put a real pair of braces inside them if you like
20:54:09 * slereah__ received this : http://membres.lycos.fr/bewulf/Russell/Ada2.jpg
20:55:04 <ehird_> ais523: http://pastebin.ca/946562 this would be the ugliest perl ever if it actually worked
20:55:18 <ais523> ehird_: you've never seen ugly Perl, obviously
20:55:51 <ais523> uh... you can't /assign/ to the version number
20:56:30 <ais523> if you never use <> again, you could instead use $/ as a default-true global
20:56:40 <SimonRC> "RecursiveLolcatMonitor" hehehe
20:56:47 <ais523> I /think/ newline is true
20:57:14 <ais523> no, newline is apparently false
20:57:16 <ehird_> ais523: i have to escape $/ in a regexp obviously
20:58:02 <ais523> OK, then use $. which is the number of times you've called <> so far
20:58:11 <ais523> it'll be 1 by that point in the program, and you're allowed to assign to it
20:58:38 <ehird_> ais523: wtf use does that var have
20:58:54 <ais523> ehird_: writing line numbers in the margin of documents
20:58:58 <ais523> and translating sed into perl
20:59:04 <ehird_> ais523: here is my error
20:59:07 <ehird_> Bareword found where operator expected at lit.pl line 4, near "s/[^@]*/print $.?"$0":"<PRE>$0</PRE"
20:59:10 <SimonRC> there are no Visitors, Listeners, Iterators, etc though :-(
20:59:19 <ais523> ehird_: the bareword is PRE
20:59:26 <ais523> because you forgot to escape the / in </PRE>
20:59:40 <ais523> be kind on yourself and use a different delimiter than / for the regexp
20:59:40 <ehird_> ais523: and $0 isn't interpolated, damn
20:59:55 <ais523> you can write s%[^@]*%print... for instance
21:00:01 <ais523> what did you expect $0 to be?
21:01:16 <ehird_> E>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>1<PRE>0</PRE>
21:01:18 <ehird_> that's what it does now
21:01:25 <ehird_> s%[^@]*%print $.?$&:"<PRE>$&</PRE>";$.=!$.%e and redo;
21:03:37 <ais523> ehird_: isn't that what it's meant to do?
21:03:56 <ehird_> it's meant to return the whole match
21:04:09 <ais523> oh, it's because s%%e will insert the result of the expression into the original string
21:04:28 <ais523> put ;"" at the end of the expression
21:04:33 <ais523> so you have no replacement
21:04:39 <ehird_> E><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><PRE></PRE><P
21:05:09 <ehird_> $& is my replacement, somehow..
21:05:47 <ehird_> ais523: in s/foo/.../, performed on 'foo', group 0 = 'foo'
21:06:36 <ais523> although I can't remember when it's assigned to
21:06:44 <ais523> just do things the easy way, using parens and $1
21:06:58 <ais523> $& is really inefficient, anyway
21:07:15 <ais523> it slows down all the regexps in your program if you even mention it once
21:07:24 <ehird_> still does the same thing oddly
21:07:38 <ais523> ehird_: you're using * not +
21:07:41 <ais523> so you can make a zero match
21:07:45 <ais523> and you don't mean that
21:07:58 <ehird_> <HTML><TITLE>Literate program</TITLE><PRE>helloworldabcdef
21:08:05 <ais523> or you'll keep matching no chars at the start of the string...
21:10:05 <ehird_> ais523: really, i just want to eval some code when i see some stuff
21:10:09 <ehird_> then remove that stuff from the document
21:10:24 <ais523> use /eg, rather than looping
21:10:40 <ais523> then you don't start from the start every time
21:10:51 <ehird_> ais523: but then my @ replacement doesn't work
21:11:06 <ehird_> since the rules have to be done one after another, in a 'try this, or this, or this' fashion
21:11:14 <ehird_> then advance how much it consumed
21:11:59 <ais523> ehird_: you aren't replacing the @s
21:12:05 <ais523> just the characters between them
21:12:14 <ehird_> s/@/$.=!$.;""/e and redo;
21:13:11 <ehird_> <HTML><TITLE>Literate program</TITLE>helloworldabcdef
21:16:11 <ehird_> my $.=!$. in my replacement doesn't work
21:16:38 <ais523> 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 <ehird_> ais523: http://collabedit.com/display?id=ae50449cf0ae8339cc7a28cf546ff29c cute. i'm going to put my code here as an experiment
21:18:33 <ais523> ehird_: I'm too busy with other things right now to help, really
21:18:42 <ais523> if you ask again on Thursday I'll be a lot freer
21:27:17 <ehird_> "Object-oriented programming is an exceptionally bad idea which could only have originated in California." -Djikstra, apparently
21:30:34 <AnMaster> Deewiant, should the interpreter abort() on any out of memory conditions or just on stack one?
21:31:23 <Deewiant> AnMaster: I think you'll find that your interpreter will abort() by itself if it runs out of memory ;-)
21:31:27 <AnMaster> 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 <Deewiant> AnMaster: for { and } it should be r
21:31:53 <AnMaster> Deewiant, I tried with ulimit -v, it didn't abort, it caused GC to print lots of warnings
21:32:33 <Deewiant> right, C doesn't have exceptions. :-P
21:32:53 <AnMaster> I forgot to check some return values of mallocs for NULL indeed
21:34:32 <ehird_> AnMaster: linux will kill a process -- any process -- if it runs out of memory
21:34:41 <ehird_> write a 4-line malloc wrapper that abort()s on NULL.
21:34:55 <AnMaster> ehird_, well that slows things down ;P *runs*
21:36:02 <AnMaster> ehird_, and I would need one for calloc, and one for GC_MALLOC_ATOMIC and so on
21:38:21 <AnMaster> I dumped a trace from mycology, one instruction for each line:
21:38:51 <AnMaster> processing 125363 befunge instructions in 0.08 second, amazing what modern computers can do really
21:39:46 <AnMaster> and most of that is IO reading file in
21:40:08 <ehird_> AnMaster: never use calloc()
21:40:13 <ehird_> calloc is a sign of lazy programming
21:40:14 -!- mib_ko3mgv8a has joined.
21:40:18 <ehird_> plus, it's slow, which matters to you so much
21:40:31 <AnMaster> ehird_, hm? slower than malloc + memset to fill with 0 after?
21:40:46 <ehird_> AnMaster: that in itself is pretty slow
21:40:59 <AnMaster> ehird_, needed that in that place hrrm
21:41:13 <ehird_> AnMaster: fix that place
21:41:48 <AnMaster> anyway my tests shows than around 0.06 seconds = loading file, the rest two = run program
21:42:02 <AnMaster> most time is spent in hash code in both cases
21:42:55 <SimonRC> well, for a start, funge-space must be initialised to 0
21:43:17 <AnMaster> 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 <ehird_> SimonRC: you can't initialize ALL Of fungespace.
21:43:20 <SimonRC> um, yes, that was what I meant
21:43:29 <ehird_> SimonRC: you just use a default value on a hash table
21:43:37 <AnMaster> SimonRC, of course it isn't, default value == ' '
21:43:51 <AnMaster> so if no cell exist it returns space
21:43:57 <SimonRC> there is a Unefunge already
21:43:58 <ehird_> it's like befunge, but abusing tons of unicode
21:44:03 <ehird_> SimonRC: unifunge, dmanit
21:45:14 <SimonRC> well, you are obviously using a few hundred real instructions for each virtual one
21:45:16 <AnMaster> still pretty fast compared to bashfunge that was at most in the khz range
21:46:12 <ehird_> AnMaster: write an asmfunge
21:46:35 <SimonRC> (ping-pong has a custom charset)
21:46:50 <AnMaster> actually a faster hash library would help
21:47:05 <AnMaster> most time is spent in searching hash table
21:47:41 <ehird_> AnMaster: you are using a perfect hash table, right?
21:48:18 <AnMaster> 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:28 <ehird_> you have a finite set of keys.
21:48:32 <ehird_> ergo: http://www.gnu.org/software/gperf/
21:49:02 -!- ehird_ has changed nick to ehird.
21:49:21 <AnMaster> ehird, anyway I don't know what my hash will contain, it could be any befunge program
21:49:34 <ehird> AnMaster: you should learn about hash tables..
21:49:40 <ehird> 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 <AnMaster> ehird, yes I should learn about them
21:50:00 <ehird> AnMaster: basically:
21:50:10 <AnMaster> ehird, keys will be structs like { .x = ..., .y = ... }
21:50:11 <ehird> if you have a finite set of keys and you know exactly what keys are possible,
21:50:29 <ehird> SimonRC: Please tell AnMaster his fungespace has a warped, terrible design.
21:50:51 <AnMaster> ehird, but I got an abstraction so easy to change
21:50:55 <ehird> 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 <ehird> you might have to throw out your abstraction for efficiency
21:52:01 <AnMaster> ehird, hm it is just a case of get/set functions and load file and wrap
21:52:28 <SimonRC> actually the most efficient representation for funge-space is a hard problem
21:52:45 <AnMaster> SimonRC, well it is a 2D array that need to be sparse
21:53:05 <AnMaster> oh and negative values are valid
21:53:11 <SimonRC> often the middle is very dense, so an array would be good
21:53:58 <SimonRC> 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:21 <SimonRC> some kind of trie would suck for the common case...
21:54:27 <AnMaster> SimonRC, valid ranges here are, depending on compile time options, either int32_t or int64_t
21:54:49 <SimonRC> and you will want to exploit high code locality
21:54:56 <ehird> 'mv *.pl *.py' should work :(
21:55:00 <ehird> clever *-globbing.
21:55:09 <SimonRC> ehird: how would that work?
21:55:14 <ehird> SimonRC: move all .pl to .py
21:55:22 <SimonRC> there is usually a "rename" utility
21:55:23 <AnMaster> ehird, it would need to be integrated into the shell
21:55:23 <ehird> SimonRC: the * is taken as the 'common part'
21:55:32 <ehird> AnMaster: not if the shell was clever with * globbing
21:55:43 <ehird> if you consider * to be a special variable-alike
21:55:48 <SimonRC> ehird: um, then the shell would need to know about cp
21:55:54 <AnMaster> ehird, try rename like SimonRC said
21:56:10 <ehird> SimonRC: it would work for 'foo *.pl *.py'
21:56:14 <ehird> it would just redefine what * means
21:56:23 <AnMaster> ehird, why not write such a shell?
21:56:42 <AnMaster> ehird, also how would it call it? call the function x times?
21:56:54 <ehird> AnMaster: not sure yet
21:56:55 <AnMaster> use the right tool for the job
21:57:19 <ehird> 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:36 <AnMaster> for file in *.pl; do mv "$file" "$(basename "$file" .pl).py"; done
21:57:49 <AnMaster> so don't complain if that does the wrong thing
21:57:57 <AnMaster> you could get rid of basename calll
21:58:06 <AnMaster> using parameter expansion iirc
21:58:22 <AnMaster> left as an exercise to the reader ;P
21:59:30 <ehird> AnMaster: that's haskell with the right functions
21:59:40 <ehird> list-monad + IO i think
22:00:46 <marshmallows> perl has lots of good quoting .. I wish more langs had
22:02:05 <marshmallows> you can add regex functions to any language, but you have to use strings :/
22:06:09 <AnMaster> 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 <ehird> AnMaster: your data set is (x,y)..
22:06:50 <ehird> AnMaster: yes yes whatever
22:07:02 <ehird> AnMaster: Just use gperf for each data range you offer (32 and 64)
22:07:10 <ehird> and use one or the other hash depending on the choice
22:16:14 <AnMaster> 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:17:13 <AnMaster> I don't have disk space for a file with 2 * 2^64 lines
22:20:45 <SimonRC> 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 <AnMaster> SimonRC, good idea, but considering mycology, most sections aren't executed several times
22:22:55 <SimonRC> well there will be little speed penalty
22:23:23 <AnMaster> SimonRC, JIT would mean compile to machine code?
22:23:32 <AnMaster> you know that fails on lots of OS
22:23:40 <ais523> <ehird> 'mv *.pl *.py' should work :(
22:23:53 <ais523> ehird: 'ren *.pl *.py' does work in DOS
22:23:58 <ais523> and does what you wanted
22:24:03 <ais523> because the shell does no globbing at all
22:24:06 <AnMaster> SimonRC, memory pages are either writable or executable but not both
22:24:17 <SimonRC> that is because DOS relies on the program to do globbing
22:24:23 <AnMaster> SimonRC, important security feature of modern systems
22:24:34 <SimonRC> AnMaster: so how to JVMs do JITting?
22:24:42 <ais523> AnMaster: but self-modifying code is often useful!
22:24:58 <AnMaster> SimonRC, they mark themself as needing writable stack/whatever
22:25:13 <AnMaster> however it is complex to do that
22:25:47 <AnMaster> SimonRC, also compile to machine code, well what arch
22:26:07 <AnMaster> I want portable code, and I use all of those arches myself
22:26:15 <AnMaster> note that I'm not good at asm either
22:26:28 <ais523> AnMaster: then just use a portable asm
22:26:34 <SimonRC> wait, you want me to do something 1000 JMV and .NET engineers can't and produce a protable JITter?
22:26:52 <ais523> (C-- would be the 'serious' choice)
22:27:09 <AnMaster> ais523, that would mean a compiler at runtime?
22:27:23 <ais523> it just assembles into a range of different architectures
22:27:26 <ais523> it's a programming language
22:27:38 <AnMaster> ais523, right, but how would that work for JIT?
22:27:57 <SimonRC> how to compile code not at runtime when the code is written at runtime?
22:28:04 <ais523> http://www.cminusminus.org/
22:28:12 <ais523> hmm... for JIT you'd probably have to precompile some example asm
22:28:26 <ais523> and then use the results of that as your asm for the target system
22:30:34 <AnMaster> "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:31:47 <ais523> AnMaster: they probably need a portable asm for some reason
22:32:00 <ais523> C-- is used by ghc as well, according to Wikipedia
22:32:20 <AnMaster> anyway it doesn't make sense for a JIT as far as I can see
22:32:32 <ehird> who said something
22:33:05 <ais523> ehird: me, AnMaster, SimonRC
22:34:37 <ehird> 'M$' is pretty immature
22:34:54 <ehird> AnMaster: simon peyter jones -- Haskeller and one of the founders of GHC, the main haskell compiler -- is on MS research
22:35:11 -!- oerjan has joined.
22:35:18 <ais523> ehird: that would explain why ghc uses C-- and Microsoft funds it
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 <ais523> 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 <lament> microsoft is, first of all, Big
22:36:55 <ehird> lament: and has Various Noodly Appendages
22:36:59 <AnMaster> ehird, see what I said about gperf
22:37:12 <AnMaster> ehird, care to explain my questions?
22:37:59 <AnMaster> ais523, their marketing is evil
22:38:09 <AnMaster> ais523, just one word: "sourcefource"
22:38:14 <ais523> it even fooled their own employees
22:38:37 <ehird> 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 <ais523> (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 <ehird> but I have seen this stereotype around in a very literal form :)
22:39:27 <AnMaster> I know there are good ppl at MS
22:39:44 <ehird> AnMaster: evil is such a funny term
22:39:46 <SimonRC> well, it does nasty things
22:39:51 <ais523> except I would have highlighted the word 'company'
22:40:03 <SimonRC> but only to the extent that many companies would in that situation
22:40:45 <ehird> AnMaster: outsourcing, eh?
22:40:47 <SimonRC> and its software is comstimes dreadful
22:41:04 <AnMaster> ehird, yes I would define evil as the microsoft company
22:41:13 <AnMaster> <AnMaster> 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:36 <ehird> AnMaster: the hash function for a range is the identity function.
22:41:44 <ehird> assuming its result can fit in that range that is
22:42:54 <AnMaster> "# 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:44:25 <ais523> AnMaster: not all computers have a lot of memory
22:44:45 <ais523> although ehird laughed at the Emacs documentation for saying things like 'if you don't have a mouse'
22:44:48 <AnMaster> ais523, true, yet I fail to see how gperf, after reading the docs, can do this
22:45:40 <ais523> 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:17 <SimonRC> what are vim's advantages over emacs?
22:47:55 <ehird> SimonRC: smaller keystrokes feel like they do more
22:48:00 <ehird> i.e. more of a wizard
22:48:14 <ehird> + its range-thingy system is cool
22:48:20 <SimonRC> apparently test show that it isn't much faster though
22:48:34 <SimonRC> because you have to tink more
22:48:48 <ehird> SimonRC: most experienced vim users won't think about most of the keystrokes, I think..
22:48:50 <SimonRC> you can press arrow keys much faster than type complex movement commands
22:49:30 -!- oklofok has quit (No route to host).
22:52:09 <ais523> ehird: I just noticed the command line of my IRC client: konversation -caption Konversation --icon=konversation
22:52:17 <ais523> surely that's a bit more repetitive than would be needed?
22:53:28 <ais523> no, not M->, that's end-of-document
22:53:47 <ehird> as in the arrow key
22:54:03 <ehird> i would have said f, but SimonRC said 'you can press ARROW KEYS ..'
22:54:51 <SimonRC> for speed purposes, vim has arrow keys
22:55:08 <SimonRC> they are just as fast as arrows to type
22:55:18 <SimonRC> though switching modes will slow you down
22:55:19 <ehird> SimonRC: vi was invented before arrow keys
22:55:31 <ehird> also, its easier to switch modes with hjkl because your hands are closer
22:55:38 <ehird> you have to move your hands to the arrow keys.
22:55:51 <ehird> plus at least one person -- me -- finds the layout of the arrow keys uncomfortable to use
22:55:55 <SimonRC> and literally, as the i key is right next to them
22:58:16 <ehird> SimonRC: soo... there's a couple advantages for you
22:58:25 <ehird> oh, and vim integrates with the unix way
22:58:41 <ehird> you have probably seen the recent thing about using vi(m) for a hex editor
22:58:49 <ehird> :!xxd -r -> and back
22:59:05 <ais523> it's M-x hexl-mode in Emacs
22:59:13 <ehird> ais523: yes, but that's not the point
22:59:19 <ehird> the point is that 'xxd' can know nothing about vi(m)
22:59:21 <ehird> and still function fine
22:59:40 <ais523> there's probably a way to do that in Emacs somewhere too
22:59:52 <ais523> it's probably hardly ever used, though, because Emacs purists tend to resist using any non-Emacs programs
23:00:04 <ais523> 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 <ehird> ais523: I am just demonstrating the vi philosophy
23:00:35 <ehird> I personally think the philosophy of filters etc. is a lot nicer than emacs'
23:00:37 <ais523> I approve of the vi philosophy
23:00:46 <ehird> and i would use vim if lisp&haskell weren't painful with it
23:00:54 <ais523> vi and emacs are good for different things
23:01:14 <ais523> emacs is very good with programming languages, for instance, but less good for conffiles and still less good for formatted text
23:01:43 <ais523> 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 <ehird> ais523: i would say that vi is very good for programming languages too
23:02:24 <ehird> we just need a modern vi
23:02:48 <ais523> 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 <ais523> 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 <ais523> that sort of thing doesn't fit well in vi
23:03:24 <ehird> ais523: you underestimate modern vim
23:03:37 <ehird> ais523: but, yes that issue needs some thinking
23:03:37 <ais523> but IMO making vi more like emacs defeats the point of vi
23:04:03 <ehird> we need a third option
23:04:22 <ehird> now, obviously linking the top and the bottom won't work
23:04:31 <ehird> 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 <ehird> and maybe come up with something decent
23:04:39 <ehird> ais523: may be so! ;)
23:04:52 <ais523> ??? would be a great name for a program
23:05:00 <ais523> you'd have to type it as \?\?\? in most shells
23:05:07 <ais523> and you couldn't run it at all in Windows
23:05:15 <ais523> (because it's an invalid filename in NTFS)
23:05:39 <SimonRC> I created a file called .url once somehow
23:06:02 <ais523> /usr/bin/ld: dmd: No such file: File format not recognized
23:06:02 <ais523> collect2: ld returned 1 exit status
23:06:07 <SimonRC> windows wouldn't let me name other files similar things
23:06:28 * ais523 was curious to see what would happen
23:07:05 <ais523> 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 <ais523> 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 <ehird> ais523: better - ***
23:08:09 <ehird> bash: Root.pm: command not found
23:08:13 <ehird> you get fun error messages!
23:08:29 <ais523> ah, capital R makes it come first alphabetically
23:08:52 <ais523> 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 <ais523> because the filenames encode the priority in ASCIIbetical order using numbers
23:09:13 <SimonRC> echo "#!/bin/sh\nsudo rm -rf *" > ~ehird/\ \ \ \ \ .sh
23:09:15 * SimonRC goes (impending NFS downtime)
23:09:24 <ehird> ais523: can you make cpan sane? :/
23:09:33 <ehird> like, NOT ask me about every single thing
23:09:34 <ais523> SimonRC: you forgot to chmod it +x
23:09:42 <ais523> ehird: I haven't seen how CPAN is implemented
23:09:44 <ehird> and NOT spew out 9 pages of output that reads like a conversation with a child
23:09:47 <ais523> but have only had trouble with it myself
23:10:01 <ais523> (that was the time I tried, and failed, to install Perligata)
23:10:12 <ehird> '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:24 <ehird> ==> Auto-install the 67 mandatory module(s) from CPAN? [y]
23:10:28 <ehird> after a list of 67 modules
23:10:31 <ehird> with detailed version info
23:10:38 <ais523> ehird: apt-get does that too
23:10:43 <ehird> ais523: one per line.
23:10:55 <ehird> ais523: did i mention it listed all the files in the package i'm installing?
23:10:58 <ehird> close to 1000 of them
23:11:04 <ehird> including all the tests.
23:11:39 <ais523> 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 <ehird> ais523: I think it's called /dev/null
23:12:47 <ais523> no, that wouldn't filter out anything
23:12:50 <ehird> cpan () { yes | cpan $* > /dev/null 2>&1 }
23:13:12 <ais523> /dev/dotstar might be more useful
23:13:32 <ais523> but you'd have to create that device somehow
23:13:40 <ehird> ais523: see my function
23:13:49 <ehird> also, there should be a mkdev:
23:13:57 <ehird> mkdev /dev/foo '...'
23:14:11 <ehird> mkdev /dev/foo perl -e "print 'ima /dev;\n'"
23:14:15 <ehird> cat /dev/foo => ima /dev
23:14:27 <ehird> mkdev /dev/rot13 rot13
23:14:37 <ehird> echo "hi" >/dev/rot13; cat /dev/rot13 =>
23:15:25 -!- oklofok has joined.
23:15:47 <ais523> there might be some way to rig one of those up out of mknod and some custom kernel modules
23:16:02 <ais523> but I don't feel like trying right now
23:18:51 <ehird> ais523: acme:: is fun
23:19:02 <ais523> ehird: seen Acme::Bleach?
23:19:10 <ais523> it predates Whitespace
23:20:20 <ais523> marshmallows: INTERCAL has that feature
23:20:27 <ehird> ais523: many times
23:20:51 <ehird> maybe(PROB) { foo } # foo is executed, probability PROB
23:21:00 <ehird> maybe { foo } # foo is executed, with a random probability
23:21:06 <ais523> ehird: but that isn't what MAYBE does in INTERCAL!
23:21:10 <ehird> it should abuse ranges
23:21:15 <ehird> maybe(1..0) { one out of ten times }
23:21:21 <ehird> maybe { ... } then picks a random range, of course. ;)
23:21:58 <ais523> an INTERCAL-named version would be double_oh_seven(PROB) { foo }
23:23:03 <ais523> although emulating INTERCAL MAYBE would be great
23:23:17 <ais523> maybe { ... } (store a continuation on a continuation stack, then execute ...)
23:23:29 <ais523> go_ahead; (pop a continuation from the continuation stack)
23:23:44 <ehird> ais523: you can apparently do continuations in perl
23:23:47 <ehird> Jifty does it apparently
23:24:01 <ais523> 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 <ais523> (popping a continuation discards it)
23:24:22 <ais523> there's the INTERCAL backtracking model in a nutshell
23:24:52 <ais523> marshmallows: I have a very unfinished Prolog-to-INTERCAL compiler somewhere
23:24:57 <ais523> I don't see any technical reason why not
23:25:12 <ais523> INTERCAL has all the features needed to easily implement Prolog
23:26:48 <ais523> 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 <ais523> mostly because INTERCAL doesn't support as many data types natively as Prolog does
23:28:00 <ais523> but also because it isn't properly transitive like Prolog unification is
23:29:05 <ehird> marshmallows: really? that's an odd and unique opinion
23:29:23 <ehird> nobody has ever thought that before :)
23:30:33 <ais523> many of the Acme:: modules appear to have no documentation
23:30:42 <ais523> 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 <ehird> http://search.cpan.org/~rjbs/Acme-Lingua-EN-Inflect-Modern-0.003/lib/Acme/Lingua/EN/Inflect/Modern.pm
23:31:50 <ais523> 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 <ehird> ais523: http://search.cpan.org/src/GMCCAR/Acme-ManekiNeko-0.02/ManekiNeko.pm
23:34:10 <ehird> haha: `use less 'memory';`
23:34:13 <ehird> http://search.cpan.org/src/ADAMK/Acme-BadExample-1.00/lib/Acme/BadExample.pm
23:35:22 <ais523> found in a BUGS section: "Any use of this module should be considered a bug."
23:35:37 <ais523> CPAN Acme:: could have a whole qdb to itself
23:35:40 <ais523> probably does, for that matter
23:35:48 <ehird> ais523: what we need is a qdb-spawning site
23:35:58 <ehird> you enter a name, click a button, and whooomp a qdb
23:36:12 <ehird> and it could have All Time Tops For All QDBs
23:36:21 <ais523> wow, Acme:: has a lot of esolangs in it
23:36:39 -!- tola has left (?).
23:36:58 <ehird> ais523: I vow to get BadExample running!
23:37:51 * ais523 still wants to write revcat
23:37:59 <ais523> a program that detects what's connected to its stdout and stdin
23:38:05 <ais523> and then copies its /output/ to its /input/
23:38:29 <ais523> last I tried, though, I couldn't figure out how to do it
23:38:55 <ais523> 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 <RodgerTheGreat> I think someone was trying to talk to me, but whatever it was is past my scroll buffer
23:41:34 <ais523> RodgerTheGreat: nobody's mentioned your nick in the last 2 days in #esoteric
23:41:46 <ais523> at least, not while I was here at the time (I checked my personal logs)
23:42:04 <ais523> checking clog's or cmeme's are likely to produce better results
23:43:18 <oerjan> er i mentioned your nick
23:43:43 <oerjan> but only to point out that i thought you were responsible for the recent comic link
23:44:22 <oerjan> the mad science Apparatus one :)
23:44:58 <RodgerTheGreat> this http://www.nonlogic.org/dump/images/1205723239-preview.png
23:51:47 <ehird> ais523: revcat is impossible
23:51:58 <ais523> ehird: it's possible in some cases
23:52:11 <ais523> e.g. yes | revcat | less doesn't make a whole lot of sense
23:52:46 <ais523> 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 <ehird> ais523: well, th pipe case is impossible
23:55:27 <ehird> since shells manage that internally
23:55:42 <ehird> the most introspection you could do is 'a process is ripping out my insides'
23:56:22 <ais523> couldn't you get all revcat processes to check the process table to see which processes were other revcats?
23:56:34 <ais523> and then send test data to see which order they were connected in?
00:17:09 <ais523> wow, Acme::Everything is a clever idea
00:17:19 <ais523> it autoloads any module in CPAN when the appropriate function is called
00:17:25 <ais523> sort of like Emacs does automatically
00:17:43 <ais523> sorry, methods, not functoins
00:17:49 <ais523> s/functoins/functions/
00:18:41 <ehird> ais523: that should be Acme::Auto
00:18:46 <ehird> Acme::Everything should load EVERYTHING
00:19:13 <ais523> it would be easy enough, just get a list of all CPAN modules and programatically convert those into use statements
00:19:26 <ais523> hmm... should it also import everything that can be imported from all of them>
00:24:18 <ehird> ais523: it should do everything
00:24:28 <ehird> such that you could not pollute the namespace any more short of writing your own code
00:24:41 <ais523> 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 <ehird> ais523: fix the clashes. :D
00:28:01 <ehird> ais523: http://search.cpan.org/~stig/Acme-MemorableExit-0.28/lib/Acme/MemorableExit.pm
00:29:24 <ehird> ais523: did you know you can do tail-recursion in python?
00:29:39 <ais523> ehird: I didn't know that, but it seems a reasonable feature to have
00:29:44 <ais523> after all, Perl can tail-recures
00:29:45 <ehird> ais523: not natively
00:29:47 <ehird> but through a Cunning Hack
00:29:56 <ais523> you write goto &subroutine;
00:29:59 <ais523> rather than calling it
00:31:19 <ehird> ais523: http://rafb.net/p/lvmYvk62.html
00:31:44 <ehird> very clever little hack
00:32:10 <ais523> changing recursion to iteration using exceptions
00:33:08 <ehird> ais523: and as the example shows, it handles mututal tail recursion
00:41:16 <ais523> Acme::HaltingProblem's BUGS: "This code does not correctly deal with the case where the machine does not halt."
00:43:47 <ehird> 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:58 <ehird> http://search.cpan.org/src/NWCLARK/Acme-Meta-0.02/Meta.pm
00:45:26 <oerjan> all this halting problem stuff is clearly getting us into a closed time loop
00:46:37 <ehird> http://search.cpan.org/~ambs/Acme-Lisp-0.02/lib/Acme/Lisp.pm this should not be in CPAN.
00:46:42 <ehird> it is, frankly, crap.
00:47:05 <ais523> Acme::Pythonic is quite a clever idea, though
00:47:23 <ais523> now all I need is a Python module to grant me {} and semicolon
00:48:10 <ehird> as one of python's coding
00:48:14 <ehird> which is used for utf-8 etc
00:48:22 <ehird> ais523: python already gives you ;
00:48:34 <ehird> http://timhatch.com/projects/pybraces/
00:48:40 <ais523> does it let me write two commands on a line?
00:50:14 <ehird> ais523: python already does that
00:50:30 <ais523> that is actually really useful
00:51:18 <ehird> ais523: perl is actually making stuff fun again
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:59 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1205814038-preview2.png
05:21:20 <RodgerTheGreat> doing these in full color is really, really time consuming.
05:23:34 <RodgerTheGreat> 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:49 <pikhq> It works well with the feel of this comic.
05:24:05 <pikhq> Sorry, but it's damned well worth it.
05:24:29 <pikhq> It's like the difference between a hacked together shell-script and a full REPL.
05:25:26 <RodgerTheGreat> note that the digital workflow makes it really, really easy to tweak dialogue, which I adore.
05:28:06 <RodgerTheGreat> 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 <RodgerTheGreat> and just for trivia, the original versions of these are all drawn at about 3000x1000
05:35:00 -!- Sgeo has quit ("Ex-Chat").
05:36:25 -!- digital_me has quit ("leaving").
05:37:54 <RodgerTheGreat> and apparently these guys are offering me a summer internship: https://www.jnl.com/index.jsp
05:38:57 <RodgerTheGreat> better than nothing, I suppose. IBM and MS haven't responded to my applications. :(
05:39:45 <pikhq> These guys are offering me an internship: http://www.tufts.edu/
05:41:05 <pikhq> I know the head sys-admin there. . .
05:41:08 <pikhq> Makes it pretty easy. :p
05:43:56 <pikhq> So, yeah: I'll be paid to dick around on various *nixen.
05:45:13 <RodgerTheGreat> I'd *much* rather do dev work than IT, which is one of the benefits of my offer
05:45:37 <pikhq> I don't really *mind* IT stuff that much.
05:45:55 <pikhq> But it'd be nice to be doing dev stuff. . .
05:46:26 <RodgerTheGreat> 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:47 <pikhq> I *am* landing this internship out of high school. ;)
05:47:13 <pikhq> Especially since I'm going to college right afterwards. . .
05:47:26 <pikhq> But I would not want to do IT stuff as a career.
05:47:28 <RodgerTheGreat> 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:23 <pikhq> 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 <pikhq> It's a good first job and all, but honestly, it'd be much nicer to be paid doing interesting development.
05:48:41 <RodgerTheGreat> heh. well, I know a couple people who made that decision.
05:48:50 <pikhq> (kernel development or something?)
05:49:32 <RodgerTheGreat> 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 <pikhq> Yeah, doing compilers would be nice, too.
05:50:02 <pikhq> A bit of stuff on the grunt-work side, but not a bad thing to do at all.
05:51:30 <RodgerTheGreat> one factoid before I go about my steampunk adventure... there's a reason he's called "Mister Thompson".
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 <AnMaster> 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 <AnMaster> by the way the # at x=8, y=122 is executed 11333 times in mycology
12:36:47 <AnMaster> next is : at x=7, y=122 with a total of 5709 times
12:46:58 -!- Slereah has joined.
12:48:20 <Deewiant> AnMaster: that's the bit that prints out the environment variables
12:53:31 <AnMaster> well that explains it, gentoo seems to like setting a lot of env variables
12:53:50 <Deewiant> and that suggests that the total strlen of your envvars is around 5709 :-P
12:54:57 <AnMaster> Deewiant, well gentoo loves setting env variables that users don't need, I agree with that
12:55:06 <AnMaster> 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:17 <AnMaster> why set it in user env I wonder
12:55:33 <Deewiant> possibly to make it easier for portage apps like eix
12:56:06 <AnMaster> 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 <AnMaster> like my pygopherd ebuild does XD
12:59:34 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
13:06:31 <AnMaster> Deewiant, it seems that most time in mycology is spend on printing env variables here hehe
13:07:42 <AnMaster> it is in fact quite a bit faster, about 0.01 seconds(!) with just printing a subset
13:07:51 <Deewiant> well sure, >:#,_ isn't exactly fast
13:08:28 <Deewiant> that's the problem with zero-terminated strings - if it was gnirts<length> instead 0gnirts you could do k, instead
13:08:56 <AnMaster> Deewiant, yep, I have nothing against using gnirts<length>
13:09:09 <AnMaster> it makes allocating string less of a pain too
13:09:57 <Deewiant> 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:38 <Deewiant> it's an esolang after all, can't be too easy
13:11:46 <AnMaster> 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 <AnMaster> ie, is interface well documented
13:12:48 <Deewiant> 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 <AnMaster> <Deewiant> one can always look at the already implemented ones, it's fairly simple unless you've obfuscated something :-P
13:21:51 <AnMaster> * Disconnected (Connection reset by peer). <-- what did I miss?
13:29:17 <AnMaster> faxathisia, what bot or person captures those logs?
13:49:50 -!- sebbu has joined.
15:19:29 -!- sebbu has quit ("bye").
15:40:43 <AnMaster> wtf should o do if the width or height of the area to write is negative?
15:41:11 <Deewiant> I think I thought about doing mirrored output but decided to just reflect
15:41:30 <Deewiant> // could do something tricky here like mirror and flip the area copied
15:41:30 <Deewiant> // or just do a normal copy from (ox-dx, oy-dy) to (ox, oy)
15:41:30 <Deewiant> // but it's more likely it's an error
15:42:53 -!- jix has joined.
15:45:37 <AnMaster> Deewiant, "Also, note k will never, ever actually execute instruction #32, space, or ;."
15:45:47 <AnMaster> how does #32 differ from space?
15:46:08 <Deewiant> or read it as "instruction #32, i.e. space, or ;."
15:48:33 <AnMaster> "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 <Deewiant> it explains in the next paragraph
15:50:10 <AnMaster> Deewiant, but would you consider MODE, or IMAP feral?
15:51:21 <AnMaster> after all it forces me to link with -lm
15:51:46 <AnMaster> actually I already do for BASE, because of log()
15:51:47 <Deewiant> not my fault floating point math is considered so arcane on linux
15:53:15 <AnMaster> Deewiant, for FPDP, how do you store them on stack, after all double > 32 bits iirc?
15:53:46 <AnMaster> "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 <AnMaster> Deewiant, so how on earth does CCBI does it, it got 32-bit cells right?
15:54:26 <Deewiant> union { double x; struct { cellidx a, b; } }
15:54:43 <AnMaster> Deewiant, right and that would make no sense with larger cell sizes
15:55:21 * AnMaster ponders adding a 128-bit mode just for fun, would be slow
15:57:09 <AnMaster> what is the difference between SOCK and SCKE btw, they seem to both do sockets?
15:57:50 <Deewiant> SCKE is two instructions added to SOCK
15:58:22 <Deewiant> certainly nothing that complicated ;-)
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:54:30 -!- Sgeo has joined.
16:56:03 -!- sebbu has joined.
17:06:50 -!- timotiis has joined.
17:20:26 -!- stefo has joined.
17:22:15 -!- oerjan has joined.
17:38:51 <AnMaster> Deewiant, question about DIRF: what should happen if it tries to remove a directory that isn't empty?
17:40:00 -!- stefo has quit (Remote closed the connection).
17:40:05 <AnMaster> the docs for it are so bad, rcfunge...
17:42:02 <Deewiant> one thing you can do is run rcfunge and see what it does
17:43:29 <AnMaster> Deewiant, another issue, general one, what should stuff do, in general, on a zero-length 0gnirts?
17:43:52 <Deewiant> well if they pop a 0gnirts then all they'll get is a 0
17:43:57 <Deewiant> so it's as though dealing with ""
17:44:34 <Deewiant> because "" is exactly a terminating null and nothing else.
17:44:37 <AnMaster> but DIRF should likely reflect on that
17:44:46 * AnMaster do not wish to know what rmdir("") would do
17:47:37 <AnMaster> another issue, what permissions should be set on a created directory using DIRF?
17:47:43 <Deewiant> run it under some kind of chroot if you're scared :-P
17:47:59 <Deewiant> since unspecified, I'd say don't mess with em
17:48:12 <Deewiant> if there are no defaults, pick some.
17:48:30 <AnMaster> int mkdir(const char *pathname, mode_t mode);
17:48:52 <Deewiant> so what does "mkdir foo" in the shell do
17:49:12 <Deewiant> but it certainly does have defaults
17:49:13 <AnMaster> set file mode (as in chmod), not a=rwx - umask
17:49:31 <Deewiant> yes, I can read man pages myself, thank you very much. :-P
17:49:46 -!- timotiis_ has joined.
17:50:14 <AnMaster> Deewiant, useful for temp dir creation you know
17:57:06 <AnMaster> yay, first fingerprint that compiled correctly at first try and passed test suite at first try as well
17:58:02 <RodgerTheGreat> 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 <AnMaster> RodgerTheGreat, it would be completely esoteric
17:58:29 <RodgerTheGreat> 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 <AnMaster> javascript got way too bad performance
17:58:54 <Deewiant> java's a better idea for something like that
17:59:04 <Deewiant> almost as widely available and much better performance
17:59:13 <RodgerTheGreat> Deewiant: indeed. For some things Java's speed is comparable to C++
17:59:13 <AnMaster> likely a native compiled app on a i486 would beat a javascript on a p4
17:59:42 <AnMaster> RodgerTheGreat, if it is number crunching I'd suggest FORTRAN
18:01:12 -!- timotiis has quit (Read error: 113 (No route to host)).
18:01:52 -!- timotiis_ has changed nick to timotiis.
18:08:29 <AnMaster> <Deewiant> 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 <AnMaster> 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 <AnMaster> btw now I got a script that generate template files for fingerprints
19:27:34 -!- ais523 has left (?).
19:30:09 <AnMaster> SimonRC, ie a .c file with empty functions but with right name to add a fingerprint to cfunge
19:31:17 <AnMaster> SimonRC, anyway tell me what the befunge program above does
19:32:12 <SimonRC> it's a hello world, of course
19:32:28 <SimonRC> but a good test of parallelism
19:33:35 <AnMaster> SimonRC, not fragile if interpreter follow standard
19:33:51 <AnMaster> SimonRC, impressive that you could decode it the way it was interleaved
19:34:12 * AnMaster still have problems reading backwards in befunge
19:34:33 <SimonRC> it's an obvious thing to say
19:35:42 <AnMaster> unlike this version below it is "lock free" XD:
19:35:50 <AnMaster> #vtf2*2+"olleH">:#,_'>11p><a,0q
19:40:13 * Sgeo should learn Befunge at some point..
19:41:10 <AnMaster> Slereah, I assume he know it as iirc Sgeo wrote PSOX
19:41:28 <Slereah> And yet, I have heard things.
19:41:45 <AnMaster> btw, not very original example:
19:41:47 <AnMaster> "AMOR"4#v(MCM\-+LXXX+++IV\-++.)a,@
19:41:50 * Sgeo is no good with Brainfuck. Also, PSOX isn't meant to be Brainfuck specific
19:51:08 <pikhq> PSOX is meant for any Esolang.
19:51:24 <pikhq> You could fairly reasonably get ORK or Glass to handle PSOX.
19:51:33 <pikhq> (even easier there; they do objects and strings. ;p)
19:53:37 <Sgeo> Not so great for Taxi though, it expects input to come in line-by-line
19:53:49 <Sgeo> THe loopback function means it's POSSIBLE, but it's not easy
19:58:19 -!- ais523 has joined.
20:07:17 <SimonRC> AnMaster: there is a bug in that "locked" befunge
20:07:33 <AnMaster> SimonRC, it works correctly under cfunge and ccbi here
20:07:38 <SimonRC> the first line should end with q, not @
20:07:50 <AnMaster> SimonRC, err, doesn't matter actually
20:08:00 <SimonRC> otehrwise the first line doesn't quite finish
20:08:12 <SimonRC> but that will make only a little difference to the program behaviour
20:08:48 <SimonRC> there isn't enough time for the newline to be output
20:09:14 <AnMaster> SimonRC, as far as I can calculate it should finish
20:09:17 <SimonRC> I had my @ and q semantics backwards
20:09:21 <AnMaster> if it doesn't the interpreter is broken
20:09:38 <AnMaster> SimonRC, you are making some interpreter/compiler for befunge too?
20:09:58 <SimonRC> I am contemplating Forth -> Befunge
20:10:07 <SimonRC> Forth is a language that flexes on the other side
20:10:22 <SimonRC> i.e. it flexes to fit your platform as well as flexing to fit your solution
20:10:40 <SimonRC> oops, meant platform and *problem*
20:11:09 <SimonRC> I don't know whether to make addresses be 1 or two cells in that case though
20:11:25 <SimonRC> all sane forths have 1-cell addresses
20:11:41 <SimonRC> but the sheer size of funge-space makes that tricky
20:13:35 <AnMaster> Deewiant, ever tried http://catseye.tc/projects/befunge93/eg/life.bf in ccbi?
20:13:49 <AnMaster> with optimized cfunge you hardly have time to see it
20:14:04 <AnMaster> with debug cfunge it is still faster than your ccbi binary
20:14:22 <AnMaster> SimonRC, -O3 -NDEBUG -profile-use
20:14:36 <AnMaster> and profile data was generated on mycology
20:15:04 <SimonRC> the interpreter is optimised, rather than it optimising the befunge
20:15:56 <AnMaster> 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 <AnMaster> ie loading is around 0.065 and total is around 0.076
20:16:48 <AnMaster> so about 0.01 second run time, most of which is hash table look up to get next instruction in fungespace
20:17:08 <SimonRC> maybe you could cache the neighbours of each cell?
20:17:14 <AnMaster> in that time it executes 125363 instructions
20:17:26 <AnMaster> SimonRC, the way mycology runs it wouldn't help much
20:17:35 <SimonRC> yea, but it would help on life I bet
20:17:38 <AnMaster> but what about making the interpreter threaded and do some kind of prefetch?
20:18:27 <AnMaster> so one thread fetches instructions and another executes them
20:18:35 <AnMaster> SimonRC, no idea, too tired really ;P
20:18:43 <AnMaster> was thinking of CPU with pipeline
20:18:50 <SimonRC> they would need to switch every befung instruction
20:19:28 <AnMaster> maybe do some cache line thing? ie, cache lines into static arrays in some way
20:19:54 <AnMaster> SimonRC, anyway I still beat CCBI by a LOT
20:20:02 <AnMaster> it is very slow on game of life
20:23:48 * SimonRC wonders how non-nested ( ) work in F98
20:24:20 <SimonRC> AFAICT, weird shit happens
20:24:52 <SimonRC> yes, it does, according to the spec
20:35:46 -!- oerjan has quit ("Bus").
20:38:35 -!- olsner has joined.
20:40:14 <SimonRC> 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:55 <AnMaster> and if you pop one that isn't loaded, but others are, you will pop one from each of those it defines
20:41:35 <AnMaster> so if we got FOOO (provides A B and C) and BAAR (provides B C and D)
20:41:36 <SimonRC> 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:42:02 <AnMaster> how A, B and C are from FOOO and D from BAAR
20:42:08 <SimonRC> so unloading something makes parts of it available where they previously weren't
20:42:29 <AnMaster> SimonRC, called esoteric language for a reason
20:42:54 <AnMaster> SimonRC, but way easier to implement
20:43:34 <AnMaster> SimonRC, "NULL" unloading can be used to pop all stack once
20:44:01 <SimonRC> at least the stack effects are reasonably sane
20:44:16 <AnMaster> SimonRC, yes that is what I said
20:44:23 <AnMaster> <AnMaster> now A, B and C are from FOOO and D from BAAR
20:44:48 <SimonRC> I mean the main stack effects
20:45:07 <SimonRC> ( pushes the fingerprint in a different form
20:45:23 <AnMaster> ( and ) does not affect normal stack
20:45:52 <AnMaster> they pop stuff, and ( pushes the loaded fingerprint back
21:04:16 -!- ehird has joined.
21:04:39 <ehird> foo bar baz bang quux zed
21:05:30 <Slereah> eki eki eki eki p'tang zoo pang!
21:09:18 -!- Tritonio_ has joined.
21:13:58 <ehird> ting tang walla walla bing bang
21:17:54 <AnMaster> ehird, new development snapshot at http://rage.kuonet.org/~anmaster/cfunge/snapshots/cfunge_r95.tar.bz2
21:24:56 <ehird> hmm. Quantum TriINTERCAL? :D
21:26:08 <AnMaster> ehird, if I get my 08 standard finished then yes y got stuff for that
21:28:17 <ais523> ehird: it isn't really quantum
21:28:24 <ais523> just multithreaded a different way from C-INTERCAL
21:30:41 <ehird> ais523: arc 2 was released recently, with the source code to the reddit clone
21:30:43 <ehird> it is hilariously bad
21:30:51 <ehird> i don't know why anyone would care about that
21:31:02 <ais523> AnMaster: look at CLC-INTERCAL's docs
21:31:06 <ehird> it's one 1767 line file, the css is inlined into a string,
21:31:11 <ehird> url-ignore* '("internetisseriousbusiness")
21:31:11 <ehird> comment-ignore* '("http://internetisseriousbusiness"
21:31:11 <ehird> "http://www.internetisseriousbusiness")
21:31:28 <ais523> http://intercal.freshell.org (making it clickable)
21:35:59 <ais523> http://intercal.freeshell.org
21:36:05 <ehird> ais523: could you implement twoducks ala timetravel in b98?
21:36:21 <AnMaster> ehird, you know how painful timetravel is?
21:36:26 <ais523> you would be attempting an iterative method if you did that
21:36:30 <ais523> but it might not converge
21:36:40 <ais523> AnMaster: an esolang based around time travel
21:36:50 <ais523> it can solve the halting problem, and is therefore uncomputable
21:37:23 <ais523> (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 <ais523> (although it strikes me that it is probably possible to write a /conforming/ HOMESPRING implementation in TwoDucks)
21:38:28 <AnMaster> "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 <AnMaster> so not possible to make one heh
21:38:48 <ehird> http://esolangs.org/wiki/Talk:TwoDucks
21:38:56 <ais523> it's possible to make an interp that emulates some TwoDucks programs some of the time
21:39:37 <ais523> hmm... time travel is a monad, isn't it
21:39:47 <ais523> only one where the chain is accessible and modifiable
21:41:10 <ehird> ais523: or rather, Cont
21:41:13 <ehird> Cont is the time-travel monad
21:41:23 <ehird> this is why, given IOT, you can implement TwoDucks
21:41:31 <ehird> TwoDucks = IOT Cont
21:41:37 <ais523> rather than the "Everything is self-consistent"ness of TwoDucks
21:41:46 <ehird> it uses the time of the program
21:42:03 <ais523> Cont time travel: go back in time, kill your own father, you continue without a father but the future is changed
21:42:18 <ais523> TwoDucks time travel: go back in time, you can't kill your own father because it would cause a contradiction
21:42:41 <ehird> ais523: twoducks just specifies things to be paradoxes
21:42:47 <ehird> not that you can't continue as Cont
21:43:27 <ais523> TwoDucks can invert any function
21:43:33 <ais523> I don't see how you can do that with Cont
21:46:19 <ehird> 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 <ais523> Haskell needs something like MultiMonad(IO Cont)
22:07:39 <ais523> which can combine several monads together
22:18:08 <ehird> that's transformers
22:18:14 <ehird> it's impossible to do it generically
22:18:21 <ehird> just as it is impossible to give a Monad instance for everything
22:23:20 <ais523> I specifically wanted it without a transformer
22:38:20 <ais523> 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 <ehird> ais523: but is impossible
22:52:32 * SimonRC admires TDWTF's forum's tag cloud
22:52:40 <SimonRC> not one useful tag amonst them
22:54:08 <SimonRC> # 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:55:58 -!- slereah__ has joined.
22:55:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
23:00:36 <lament> damn, i don't get haskell's type system at all
23:00:42 <lament> what's the difference between types and values?
23:03:49 -!- oerjan has joined.
23:04:49 <lament> oerjan: what's the difference between types and values, in haskell?
23:05:28 <lament> Why do we need values at all? Can't we just simplify the syntax and do everything just with types?
23:05:33 <oerjan> since haskell is not a dependently typed language, they are completely disjoint
23:05:53 <oerjan> a value has a type, a type has a kind
23:06:23 <oerjan> iir/uc there are systems called pure type systems which do just that
23:06:44 <lament> data Color = Red | Green | Blue
23:06:45 <Sgeo> All books are 3 characters. Check syntax and try again
23:07:04 <oerjan> however there is a technical problem. you want all values that are used as types to be terminating
23:07:20 <lament> data Red; data Green; data Blue; class Color a; instance Color Red; instance Color Green; instance Color Blue
23:07:21 <Sgeo> All books are 3 characters. Check syntax and try again
23:07:34 <oerjan> 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 <Sgeo> I should rename the file so it won't autoload
23:08:10 <lament> in the first example, Red, Green, Blue are values
23:08:15 <lament> in the second, they're types
23:08:48 <oerjan> 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 <lament> 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 <lament> but the distinction seems unnatural
23:09:13 * Sgeo unloads the bot
23:09:39 -!- Tritonio_ has quit ("Bye...").
23:10:50 <lament> oerjan: from a description of pure type systems, my concerns seem justified
23:10:56 <lament> "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 <lament> so haskell has too much syntax
23:11:14 <lament> because it's not powerful enough :)
23:11:33 <oerjan> actually much of haskell's weirdness may be in order to support type inference
23:12:00 <SimonRC> haskell's complexity is mostly superficial
23:12:09 <oerjan> which requires separating some things just in order to give the compiler enough hooks
23:12:35 <ehird> lament: it's ugly because you can write a compiler for it
23:12:38 <SimonRC> the superficial complexity is suppsosed to make it beautiful
23:12:57 <lament> SimonRC: it doesn't. People keep extending the type system with more and more extensions.
23:13:03 <oerjan> haskell is made by grafting things onto the hindley/damas/milner type system, which has complete type inference
23:13:19 <SimonRC> lament: but they are usually nice generalisations
23:13:23 <lament> oerjan: is HM the most general type system with complete inference?
23:13:33 <SimonRC> and they aren't all put on at once
23:13:37 <SimonRC> some contradict one another
23:13:53 <SimonRC> and a typical compiler will only have a slight extension of '98
23:13:55 <lament> hard to imagine what else it could have
23:13:57 <oerjan> adding almost anything makes it undecidable
23:13:58 <ehird> SimonRC: hardly :)
23:14:13 <ehird> Haskell-fghc-exts is a whole new language, practically
23:14:15 <lament> oerjan: so type classes make it undecidable?
23:14:26 <ehird> oerjan: not recursive types, i presume :)
23:14:27 <SimonRC> no, type classes are decideable
23:14:29 <ehird> lament: no. ALMOST anything
23:14:42 <SimonRC> unless you turn on undecideable typeclasses
23:15:13 <oerjan> lament: type classes have strange limitations though in order to keep it decidable
23:16:22 <lament> it's kinda funny - turing-completeness is so easy to achieve by accident, and here you're desperately trying to avoid it
23:16:59 <lament> i need to learn a pure type language
23:17:06 <lament> to get some perspective
23:17:32 <oerjan> 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:18:05 <lament> it's like playing nomic
23:18:25 <lament> add more and more extensions until somebody successfully makes it undecidable without everybody noticing
23:20:38 <oerjan> (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 <oerjan> you can use it to make arbitrary coercions
23:22:59 <oerjan> (exploit is on ghc bug trac)
23:25:14 <ehird> unsafePerformIO is more fun to make coerce with :-)
23:25:31 <oerjan> well yeah but that is intended to be unsafe
23:26:04 <oerjan> it is not getting prettier i guess
23:26:11 <SimonRC> unsafePerformIO can have type (forall a. IO a) -> forall a. a
23:26:23 * lament reads thesis about pure type systems
23:26:36 <oerjan> or actually type families may be considered an improvement in some ways
23:27:25 <SimonRC> 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 <lament> SimonRC: does it have types as a separate concept from values?
23:29:51 <lament> so much stuff to learn.
23:32:21 -!- pikhq has quit ("Rebooting stuff.").
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:48:19 <lament> from what happens with haskell
23:48:34 <lament> it almost seems like people are trying to solve the halting problem
23:48:44 <lament> ie. they want an all-powerful type system
23:49:36 <lament> on one hand it's impossible, on the other hand people do want it
23:50:50 <lament> 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 <lament> You still have a type-checked program if compilation does end.
23:56:25 <ehird> lament: large projects take ages to compile
23:56:30 <ehird> how could you tell the difference?
23:57:31 <ehird> besides, compilation that never ends is not the route to sturdy software with well-defined properties that you can test
23:58:09 <lament> but the alternative is increasingly dirty hacks
23:58:23 <lament> when you have a non-TC system, you can always extend it to be more powerful
23:58:30 <lament> and people will continue doing this
23:58:40 <lament> because they want a more powerful type system
23:58:49 <lament> thus adding more and more hacks to the language
23:59:05 <ehird> lament: solution - dynamic typing
23:59:53 <olsner> probably better to start with a TC but clean type system, then add limits (such as max. recursion depth) to get guaranteed termination
00:00:01 <SimonRC> how closely is the Halting problem related to Incompleteness?
00:00:31 <oerjan> well there is an implication at least one way i think
00:00:46 <SimonRC> 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 <oerjan> halting problem implies incompleteness
00:01:16 <SimonRC> that would proove that a program halts IFF it is possible with the given proof system
00:01:19 <oerjan> because a complete system could ask the question of whether a program halts
00:01:42 <oerjan> it could lie and say it halts even if it doesn't
00:02:10 <oerjan> because the halting time could be a non-standard integer, which doesn't actually exist
00:04:24 <oerjan> every logical system with infinite models has even larger ones, and an element of an extension is called non-standard
00:04:59 <oerjan> there is non-standard analysis which uses this to add infinitesimal reals
00:06:09 <oerjan> 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 <oerjan> 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 <SimonRC> kewl: http://www.crabfu.com/steamtoys/r2s2/
00:14:23 -!- BMeph has joined.
00:15:35 <oerjan> i just like to say things i don't know what mean :D
00:28:43 <SimonRC> WRU = "Who Are You?", from the teleprinter code
00:29:08 <SimonRC> some day someone who knows about teleprinters is just going to understand that one straight away
00:33:57 <oerjan> ic. now i just have to understand _why_ you would say "Who Are You?"
00:34:45 <oerjan> since i didn't see anyone unknown entering...
00:39:29 <olsner> 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 <SimonRC> 23:14:23 -!- BMeph [n=chatzill@adsl-76-212-192-106.dsl.sndg02.sbcglobal.net] has joined #esoteric
00:49:41 <oerjan> oh maybe BMeph hasn't been here before?
00:49:49 <oerjan> welcome to #esoteric :)
00:50:31 <BMeph> Hello - I channel hop a lot, so don''t mind me. :)
00:50:53 <oerjan> seen you in #haskell before
00:51:13 <oerjan> i don't - those are the only channels i'm in
00:51:37 <oerjan> and i can barely keep up with that sometimes :D
00:51:43 <ehird> BMeph has been here for yonks..
00:52:11 <ehird> i am generally in #esoteric, #ESO, and various channels for my lingua franca of the month
00:52:22 <BMeph> Yeah - as soon as I started fiddling w/ FALSE, I started popping up in #eso more. :)
00:53:46 <ehird> right now, it's Perl
00:59:02 -!- ais523 has quit ("Konversation terminated!").
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 <lament> we need a language with a good type system
03:17:36 <lament> do any esolangs have good type systems?
03:23:27 * oerjan considered something wicked with monads once. hardly got anywhere.
03:24:03 <oerjan> liMonadE = unlambda with monads
03:24:27 <Deformative> I think static typing is superior, so "good typing system" likely has a different meaning to me.
03:24:58 <lament> oerjan: monads are not good to have as a built-in feature of the type system
03:25:14 <lament> at least that part haskell got right :)
03:25:35 <lament> Deformative: turing-complete
03:25:51 <oerjan> ah but this was not a _sane_ monad system
03:26:39 <lament> is a type a boolean function on all possible values, or is it a way to generate new values?
03:27:30 <lament> i guess in haskell it's clearly the latter
03:28:57 <lament> to the programmer, it's the latter, but to the typechecker, it's more like the former...
03:32:24 <lament> 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 <pikhq> lament: Define all types in terms of Lisp code. :p
04:13:54 -!- adu has joined.
04:36:29 <lament> pikhq: that's what i'm saying!
04:42:25 -!- adu has quit ("Computer went to sleep").
05:08:09 -!- adu has joined.
05:26:07 -!- shinku has quit.
05:45:51 <RodgerTheGreat> new panels: http://www.nonlogic.org/dump/images/1205901932-preview3.png
05:49:02 <RodgerTheGreat> rather simple stuff today because I'm feeling really tired
05:54:10 -!- Sgeo has quit (Remote closed the connection).
05:56:41 <oerjan> heh, "All the prototypes had exploded at this point" :D
06:03:21 <RodgerTheGreat> incidentally, I think that last panel could make a nifty desktop: http://www.nonlogic.org/dump/images/1205902974-desk9.png
06:05:21 <oerjan> which reminds me, new xkcd and girl genius
06:06:18 <RodgerTheGreat> you really should- it's every bit as good as Phil's other work.
06:15:15 <RodgerTheGreat> 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:37:22 <RodgerTheGreat> moar dis? http://www.nonlogic.org/dump/images/1205901932-preview3.png
13:37:27 <SimonRC> and the hair colour in the second panel is still non-matching
13:39:45 <RodgerTheGreat> there will be at least 3 new panels by tonight, though
13:40:16 <AnMaster> has anyone written a brainfuck interpreter in befunge?
13:43:25 <Deewiant> http://www.geocities.com/nthern/esolangs/brainfuck.bf.txt, but befunge-93, and requires bignum-sized cells
13:45:19 <AnMaster> right, I guess BIGNUM would make befunge93 turing complete?
13:46:15 <AnMaster> Deewiant, also wtf is "Befunge97"?
13:46:25 <Deewiant> it's befunge-97, what about it
13:46:34 <AnMaster> Deewiant, where is it's specs?
13:47:14 <AnMaster> so how did it differ from befunge98?
13:47:21 <Deewiant> 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 <AnMaster> http://catseye.tc/projects/befunge93/eg/pi2.bf
13:48:12 <AnMaster> says it is written in befunge97 in the file
13:48:18 <Deewiant> it had some kind of header block
13:48:39 <Deewiant> yeah, in terms of instructions it seems to be pretty similar to -98
13:49:06 <Deewiant> ah, here we go, "befunge-97 directives" - lines starting with =
13:49:22 <Deewiant> http://www.nntp.perl.org/group/perl.perl6.internals/2004/10/msg26541.html
13:49:44 <Deewiant> like said there's no spec, the best I can do is random googling
13:49:58 <Deewiant> there was also a befunge-96 by the way
13:50:08 <Deewiant> I know practically nothing about that
13:50:47 <AnMaster> Deewiant, why on a perl6 list of some kind I wonder...
13:51:01 <Deewiant> 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 <Deewiant> AnMaster: looks like interpreter development, beats me
13:51:45 <AnMaster> anyway I'm soon ready for a new release I think
13:52:00 <AnMaster> just trying to make make install work correctly, and maybe add a man page
13:52:08 <Deewiant> 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:35 <AnMaster> Deewiant, I know about those, mentioned in befunge98 specs, one of the latter apendixes
13:53:04 <Deewiant> Other Funges, such as Honefunges (hex-net topology) and Kleinefunges (Klein-bottles) are certainly possible.
13:53:18 <Deewiant> so how about implementing one or both? ;-)
13:53:41 <AnMaster> Deewiant, nah, that's for CCBI ;P
13:54:12 <Deewiant> it'd probably run too slow, I think you should do it ;-)
13:54:51 <AnMaster> Deewiant, ever tried http://catseye.tc/projects/befunge93/eg/life.bf
13:55:16 <AnMaster> Deewiant, just with ccbi it is rather slow :P
13:55:41 <Deewiant> I can't be bothered to go scouting around for hash table libraries and garbage collectors
13:55:51 <AnMaster> Deewiant, so that show IO isn't everything ;P
13:56:21 <AnMaster> but indeed, I could probably speed mine up with a better hash library
13:56:59 <Deewiant> most of the time is probably spent in page faults and the like
13:58:11 <AnMaster> 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:26 <AnMaster> and since I got 1.5 GB I can't see why it would page fault a lot
13:58:31 <Deewiant> the fact is that the program doesn't fit in your L2 cache :-P
13:58:37 <AnMaster> it wouldn't be swapped out on disk
13:58:49 <AnMaster> Deewiant, but that isn't same as page fault still, right?
14:00:26 <Deewiant> it seems that CCBI generates 3854 page faults here
14:00:30 <AnMaster> Deewiant, does mycology wrap a lot? except when testing wrapping I mean
14:00:33 <Deewiant> or rather, generated as I just ran it.
14:00:44 <AnMaster> oh? how do you check how many page faults are generated?
14:00:47 <Deewiant> but of course that doesn't mean that it's swapped out to disk.
14:02:10 <AnMaster> yes but the program quits so fast when mycology ends.
14:02:23 <Deewiant> so pipe it into a file or something.
14:02:53 <Deewiant> what would you want with the cfunge output? :-P
14:03:21 <AnMaster> nothing, but point is, how do you check number of page faults at the point just before cfunge exits?
14:03:42 <Deewiant> ps's update frequency is too slow?
14:03:53 <AnMaster> ps is a one time command, and cfunge is too fast
14:04:03 <Deewiant> oh yeah, getting confused with 'top'.
14:04:17 <AnMaster> and even top updates once / second or so iirc
14:04:31 <AnMaster> cfunge finishes mycology in 0.078 seconds here
14:04:38 <Deewiant> one simple option: add getchar() just before your return from main.
14:05:05 <AnMaster> Deewiant, actually I don't return from main, I use exit() but I see what you mean
14:06:57 <Deewiant> or compile with profiling. :-P
14:07:45 <AnMaster> open("/home/arvid/local/emacs-cvs/lib/libcord.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
14:07:45 <AnMaster> open("/usr/lib64/libcord.so.1", O_RDONLY) = 3
14:09:31 <Deewiant> it goes through your LD_LIBRARY_PATH or whatever the envvar is
14:09:37 <AnMaster> not that I would gain a lot from unsetting LD_LIBRARY_PATH indeed
14:09:59 <AnMaster> Deewiant, I know that but I wonder, how much could one save in 0.0000000whatever seconds on unsetting it ;D
14:20:58 <AnMaster> weird, weird, under valgrind I enter an infinite loop after DIRF test, but under gdb or "freestanding" it works
14:23:30 <AnMaster> 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 <AnMaster> Deewiant, a question: is memory mapped IO faster than stream IO?
15:12:37 <Deewiant> 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:59 <CakeProphet> when you execute it... it outputs '("Love", "is", False)'
15:14:16 <AnMaster> CakeProphet, rewrite it in befunge?
15:14:52 <CakeProphet> ....you couldn't do that. Not with English... words.
15:15:03 <CakeProphet> unless you just use comments for everything... but that's gay.
15:16:04 -!- oklopol has quit (Connection timed out).
15:17:45 <Deewiant> CakeProphet: how about writing it in Shakespeare
15:18:11 <AnMaster> Deewiant, ever tried running the mycology readme in ccbi?
15:18:37 <AnMaster> Deewiant, at least in cfunge it prints a lot of "10"
15:18:44 <Deewiant> in general, running on plaintext isn't necessarily a smart idea :-P
15:18:52 <AnMaster> Deewiant, sand box mode of course
15:19:23 <Deewiant> if you still haven't implemented o I guess it's fine
15:19:43 <AnMaster> Deewiant, indeed I haven't yet
15:19:56 <AnMaster> Deewiant, and in sandbox mode it wouldn't be allowed
15:20:29 <Deewiant> unless you're very unlucky with something like "FRID" 4 (0'/R) but... how likely is that
15:20:36 <AnMaster> http://rafb.net/p/yZ3yEP70.html
15:20:56 <Deewiant> I meant, without sandbox mode and o
15:20:57 <AnMaster> Deewiant, well Frid is Swedish for peace so :D
15:22:16 <AnMaster> Deewiant, by the way what should ( and ) do when the count parameter is invalid/silly, ie, say, -23 for fingerprint length
15:22:47 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
15:23:00 <AnMaster> currently mine checks it is reasonable range for what the interpreter support (1-8 items from the stack), otherwise reflects
15:23:14 <Deewiant> maybe I should test that in Mycology :-P
15:23:22 <AnMaster> Deewiant, so what should it do?
15:23:30 <Deewiant> it should pop the requested number
15:23:40 <AnMaster> Deewiant, well you can't pop -2 items
15:23:47 <Deewiant> no, negative is messed up of course
15:24:03 <AnMaster> Deewiant, and above 8 wouldn't work considering how fingerprints are done
15:24:18 <Deewiant> it's just a matter of wrapping the ints around correctly.
15:24:39 <AnMaster> Deewiant, yes right you mean when the cell overflows?
15:25:04 <Deewiant> sure, but what if it first checks with y that the cell size is exactly 4
15:25:17 <AnMaster> Deewiant, and if it isn't it can't test it ;P
15:25:26 <AnMaster> + such a check would take a lot of time
15:25:32 <Deewiant> I suppose it's possible to generate such strings
15:25:44 <Deewiant> no it wouldn't, just find a 16-character string and use that
15:26:10 <Deewiant> and if done correctly it could be easy to add more strings depending on y's value
15:26:28 <AnMaster> 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:28:46 -!- oklofok has joined.
15:29:21 <Deewiant> an easy way to test would be just something like 8aaa**k1aaa**;v(;# <;8wna"DOOG">:#,_
15:30:18 <Deewiant> just check if it popped 10000 values or not
15:31:28 <Deewiant> that was the point - make sure it doesn't converge to a valid fingerprint
15:31:42 <Deewiant> and then just check for the pops
15:32:16 <AnMaster> Deewiant, it could be a valid fingerprint
15:33:02 <AnMaster> so if you got bignums all fingerprint names are valid in length
15:33:08 <Deewiant> in which case, replace one of the constants in the value tried
15:33:17 <Deewiant> i.e. instead of aaa** use baa**
15:33:28 <AnMaster> Deewiant, so you could implement that one too ;P
15:33:31 <Deewiant> and say, "hmm, looks like you loaded this fingerprint, that wasn't supposed to happen"
15:33:55 <Deewiant> AnMaster: yes, but fortunately we have loops, so we can loop through 222->fff
15:34:26 <AnMaster> and theoretically an interpreter could implement them all
15:34:40 <AnMaster> btw now I made mine just warn about it (assuming warnings are turned on)
15:34:56 <Deewiant> in that case, na"UOY WERCS">:#,_ and move on
15:36:07 <AnMaster> Deewiant, but what should happen at negative count I wonder
15:36:41 <AnMaster> Deewiant, however mycology fails to test the case of length == 0
15:36:54 <AnMaster> mine didn't before it does now
15:37:12 <AnMaster> instead it entered a infinite loop due to while (i--) thing
15:37:37 <AnMaster> as i was int64_t or something like that
15:37:43 <Deewiant> and testing for negatives didn't catch that?
15:38:09 <AnMaster> Deewiant, there is a subtle difference between: 1) i < 0 and 2) i<=0
15:38:24 <Deewiant> it's called your brain - learn it, use it, it's your friend :-P
15:38:36 <AnMaster> but IMO mycology should test it
15:39:02 <Deewiant> seriously, if you have if (i < 0) followed immediately by while (--i) then I blame you :-P
15:39:20 <AnMaster> indeed it is what I'd call a bug
15:40:05 <Deewiant> and besides, ( with 0 /is/ tested.
15:40:27 <Deewiant> because while (i--) does nothing if i is zero.
15:40:49 <Deewiant> the original tests for ( and ) popping correctly are both done with a zero count.
15:44:12 <AnMaster> but why did checking for 0 fix the bug in that other program then...
15:46:52 -!- CakeProphet has quit ("haaaaaaaaaa").
15:53:03 <AnMaster> anyway while threading in mycology worked perfectly, my program managed to segfault on a simple threaded hello world before
15:53:59 <AnMaster> 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:12 <vixey> Are there any esolangs based on π-calculus?
16:12:56 <oklofok> there are real languages based on it, though
16:13:02 <Deewiant> http://www.esolangs.org/wiki/Pict
16:13:28 <Deewiant> it says it's not 'intentionally esoteric', though :-P
16:14:48 <oklofok> hmm, it seems joy is functional, i must be confusing names again
16:44:24 -!- Tritonio_ has joined.
17:11:39 -!- jix has joined.
17:36:26 -!- Sgeo has joined.
18:07:20 <lament> factor is a functional forth
18:07:56 <lament> joy is "concatenative"
18:09:19 <lament> i thought concatenative had something to do with lists
18:26:55 <AnMaster> size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip)
18:27:06 <AnMaster> that one, should TOSS be at top or should BOSS?
18:27:20 <Deewiant> the way I read "from a to b" is that a is at the top
18:29:45 <AnMaster> GOOD: y acts as pick instruction if given large enough argument
18:30:25 <AnMaster> oh wait, flying isn't one from MODE
18:30:31 <Deewiant> an IP is flying if its delta isn't (1,0) (0,1) (-1,0) (0,-1)
18:30:48 <AnMaster> Deewiant, right, hard to keep flying and hovering and what not apart :P
18:52:05 <AnMaster> Deewiant, anyway I need some test case for y returing multiple stack sizes correctly :/ guess I code to code that myself
18:53:57 <Deewiant> replace 9 with the correct index of the stack sizes in y
18:54:09 <Deewiant> that probably doesn't work but it's a start :-P
19:05:50 <AnMaster> Deewiant, in any case, ccbi and cfunge give different results
19:06:37 <AnMaster> as one goes up the other one down at the second w
19:06:54 <Deewiant> it should either be equal or not
19:07:07 <AnMaster> as far as I can find out, we want cell 23, right?
19:07:08 <Deewiant> the point being, test whether the stack size is equal to the expected.
19:07:44 <AnMaster> 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 <Deewiant> just write your own code if that was so hard :-P
19:08:11 <Deewiant> that was meant to help you, not confuse you >_<
19:08:27 <Deewiant> AnMaster: the point was, get all the correct values with only one call to y.
19:08:40 <Deewiant> pop the required number of cells to get to what we want.
19:08:53 <Deewiant> check that the stack stack size is correct, since it's first.
19:09:07 <Deewiant> store the two stack sizes somewhere.
19:09:25 <Deewiant> that's probably not necessary now that I think about it >_<
19:09:54 <Deewiant> I was thinking something about how it pushes the old stack size versus the new and wrote something overcomplicated
19:10:03 <Deewiant> but yeah, the pg stuff is unnecessary.
19:10:21 <AnMaster> <Deewiant> (it /is/ first isn't it?) <-- that I got no idea about
19:10:39 <AnMaster> 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:11:00 <AnMaster> "size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip)"
19:11:17 <AnMaster> that would mean TOSS at bottom then?
19:13:04 <Deewiant> makes sense in a way, then you can do Xk$ where X is the index of the stack size you want
19:13:22 <AnMaster> Deewiant, looks to me like this is a... UNDEF ;)
19:13:31 <AnMaster> or "NOT VERY DEF" at least heh
19:14:00 -!- sebbu has joined.
19:14:01 <Deewiant> IMO, if every interpreter does it one way then that way is probably right
19:14:14 <Deewiant> so finish the test code already :-P
19:14:30 <AnMaster> anyway with a single stack it is the 23rd cell
19:15:44 <AnMaster> that means f7+k$ to leave it at top, hrrm
19:16:00 <AnMaster> the top one, whatever it is that is
19:18:30 <Deewiant> since it uses 'k' it prints one extra value due to the way some interpreters implement 'k'
19:19:13 <Deewiant> so it prints <ignore> <stack stack size> <stack size> <stack size> or <stack stack size> <stack size> <stack size> <ignore>
19:19:14 <AnMaster> 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 <Deewiant> CCBI prints 2 3 5 as does !Befunge
19:20:27 <AnMaster> Deewiant, looks like k popped one to few?
19:20:49 <Deewiant> AnMaster: no, it popped the correct amount
19:21:01 <Deewiant> if it popped the incorrect amount it'd be 2 5 3 <something>
19:21:04 <AnMaster> oh so why leave time value in there?
19:21:13 <Deewiant> because some interpreters pop the incorrect amount
19:21:19 <Deewiant> and then we'd only get the latter two values from them.
19:21:55 <Deewiant> first char of command line argument?
19:23:51 <AnMaster> Deewiant, well is the k of those other ones broken or not?
19:24:17 <Deewiant> since given 321 2k$ they return an empty stack
19:24:32 <AnMaster> Deewiant, well in the test case for my interpreter I don't need to care about that
19:24:35 <Deewiant> since they don't skip over the argument
19:24:54 <Deewiant> AnMaster: whatever, I just wrote the generic code so I can quickly test it against all interpreters
19:25:15 <Deewiant> and modifying it to be nongeneric is trivial so do whatever you want
19:25:41 -!- Corun has joined.
19:26:10 <AnMaster> Deewiant, well I plan to add unit testing
19:26:27 <AnMaster> ctest that comes with cmake look interesting
19:26:34 <Deewiant> I didn't bother, I just wrote mycology :-P
19:26:58 <Deewiant> there are a few unit tests in CCBI but nothing major
19:27:01 <AnMaster> 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:28:11 <AnMaster> Deewiant, actually you would need three stacks to test it correctly, hrm
19:28:23 <AnMaster> as I store top stack before I start pushing things in y
19:28:36 <Deewiant> why? do you expect 1 3 2 instead of 1 2 3 or 3 2 1? :-P
19:28:42 <AnMaster> so I push size of topstack before, then in a loop all but top stack
19:28:59 <AnMaster> StackPush(TOSSSize, pushStack);
19:28:59 <AnMaster> for (ssize_t i = ip->stackstack->current - 1; i >= 0; i--)
19:28:59 <AnMaster> StackPush(ip->stackstack->stacks[i]->top, pushStack);
19:29:29 <AnMaster> Deewiant, or gcc complains that i will always be >= 0
19:29:33 -!- Corun has quit (Client Quit).
19:29:48 <Deewiant> ptrdiff_t is the standard 'signed size_t'
19:30:22 <Deewiant> and also, switching to signed is not the solution to that problem :-P
19:30:37 <Deewiant> sorry, ISO/IEC 9899:1999 doesn't contain ssize_t
19:30:52 <Deewiant> AnMaster: your code isn't standard :-P
19:31:09 <AnMaster> Deewiant, It is POSIX probably
19:31:10 <Deewiant> but anyhoo, the way to write that loop is
19:31:18 <Deewiant> for (size_t i = ...; i-- > 0;)
19:32:09 <AnMaster> ssize_t exists in man 0p for sys/types.h
19:32:42 <AnMaster> Deewiant, look someone said even windows was POSIX
19:33:03 <Deewiant> whatever, I'm not having this argument again :-P
19:33:13 <Deewiant> in any case, ssize_t or ptrdiff_t or whatever is not a solution
19:33:22 <AnMaster> Deewiant, I'm trying to avoid gnu extensions, I rely on C99 and POSIX 1003.1-2001
19:34:15 <AnMaster> Deewiant, anyway would that loop push things in the correct order?
19:34:30 <Deewiant> I don't know, depends on how your stacks are laid out
19:34:56 <AnMaster> Deewiant, well it looks correct but problem is, it does the top stack separatly
19:35:13 <AnMaster> so I'd need 3 stacks to check *changes*
19:35:36 <Deewiant> it's trivial to make it 123 stacks if you want :-P
19:37:00 -!- tkr has joined.
19:37:28 <AnMaster> $ ./ccbi ~/src/cfunge08/tests/sysinfo-multi-stack-sizes.b98
19:37:29 <AnMaster> $ ./cfunge tests/sysinfo-multi-stack-sizes.b98
19:38:45 -!- oerjan has joined.
19:39:01 <AnMaster> $ ./ccbi ~/src/cfunge08/tests/sysinfo-multi-stack-sizes.b98
19:40:24 <AnMaster> $ ./cfunge tests/sysinfo-multi-stack-sizes.b98
19:48:30 <AnMaster> Deewiant, btw I actually think TOSS should be at the bottom, opposite of how ccbi does it
19:49:11 <AnMaster> Deewiant, so what do you think this should print: 120{1230{aaaaaa0y2a*1+k$....a,@
19:49:27 <AnMaster> assuming interpreter got k right
19:50:18 -!- Slereah has joined.
20:00:32 <AnMaster> 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 <Deewiant> AnMaster: I tried 3 random interpreters including FBBI and they all do it the way CCBI does it
20:13:33 <AnMaster> Deewiant, but what do you think the standard says about it?
20:13:55 <Deewiant> I think it can be interpreted either way, like many other things
20:14:35 <AnMaster> well I'll add both versions, in #ifdef
20:14:43 <Deewiant> since it's not written formally
20:15:04 <AnMaster> you mean not some IEEE standard, indeed
20:15:06 <Deewiant> it's written in english, and like all natural languages it's inherently ambiguous
20:15:20 <AnMaster> Deewiant, C99 standard is also in English
20:15:44 <Deewiant> there's no forth-like "$ (a b -- a)" notation or anything
20:15:53 <Deewiant> AnMaster: and it's also ambiguous in some cases :-P
20:16:05 <AnMaster> Deewiant, not as much as funge98 is
20:16:16 <AnMaster> and C99 standard is way larger
20:16:31 <Deewiant> 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 <Deewiant> whereas the funge-98 spec reads like an essay or something
20:17:12 <AnMaster> so funge08 should read more like a real standard
20:17:24 <AnMaster> 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 <AnMaster> 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:43:54 <AnMaster> 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 <AnMaster> Slereah, can't remember what one iota is
21:45:06 <Slereah> 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 <Slereah> Iota is the compressed unlambda.
21:45:45 <Slereah> Although it's *ii in actual iota
21:48:14 <AnMaster> Deewiant, nice, with the binary from that snapshot?
21:48:22 <AnMaster> even though I use -march=pentium2 when building it, I think my 32-bit glibc may be built with -march=k8 -m32
21:48:32 <AnMaster> so I got no idea if it will actually work on non-amd64 cpus
21:48:37 <Deewiant> I just did bzr pull, cmake, make
21:48:51 <AnMaster> Deewiant, right, but even then I wonder about binary on older systems too
21:49:16 <Deewiant> ideally don't use -march of any kind
21:50:27 <AnMaster> Deewiant, and I built low-march (i686) for static boehm-gc, but well static glibc is harder
21:51:08 <Deewiant> you can just dynamically link :-P
21:51:19 <oerjan> Slereah: Iota looks expanded not compressed to me ;)
21:52:02 <AnMaster> Deewiant, that causes issues as you can understand, I link statically to avoid those issues
21:52:18 <AnMaster> but I guess some mix could work
21:52:30 <Deewiant> with something as commonplace as glibc it should be fine
21:52:55 <Deewiant> but yes, ideally static link everything
22:01:00 <Slereah> Would a language without loops or conditional jumps but able to add code to itself be TC?
22:04:23 <Deewiant> you can't get far without conditionals...
22:04:27 <AnMaster> Deewiant, I made a script to build all possible 4 variants
22:05:52 <oerjan> Slereah: i think there is such a language on the wiki
22:07:23 <oerjan> http://esoteric.voxelperfect.net/wiki/SMITH
22:09:10 <AnMaster> www.esolangs.org == esoteric.voxelperfect.net
22:40:25 -!- jix has joined.
23:16:46 <AnMaster> 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.
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:21 -!- Sgeo has quit ("Ex-Chat").
05:28:32 <RodgerTheGreat> 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 <pikhq> RodgerTheGreat: I'll save those for later; need to see a bit more of the story to get a *good* question going. ;p
05:30:22 <RodgerTheGreat> and don't hold out on me for absurd lengths of time or it'll expire
05:31:53 <pikhq> 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 <oklofok> 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 <AnMaster> 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 <AnMaster> would have to provide split, mutex and/or semaphore, some atomic "compare and exchange cell" and a few such things
12:04:12 <AnMaster> would not be a tame extension of course
12:06:46 <Deewiant> most certainly do /not/ tie it to pthread
12:06:52 <Deewiant> or it'll be like SGNL, and remain unimplemented.
12:07:03 <AnMaster> Deewiant, well yes more generic
12:07:14 <AnMaster> but probably would be pthread in my implementation
12:07:35 <AnMaster> Deewiant, of course I know nothing of threading API under windows so I would ask for your input on it
12:08:30 <Deewiant> the point is, just define it higher-level
12:08:54 <AnMaster> along with SCK6 and a few more I got
12:09:17 <AnMaster> unless SOCK can already do ipv6
12:09:28 * AnMaster growls at rcfunge specs about that
12:09:36 <Deewiant> not sure, can't remember the specs too well
12:10:00 <AnMaster> indeed I'll see what I can do when I get to that point
12:11:31 <AnMaster> Deewiant, and then there is the nightmare idea of a full featured FFI as some fingerprint ;)
12:12:05 <Deewiant> when you've got working implementation + hopefully some docs I'll see :-P
12:12:07 <AnMaster> but just to prove that I'm mad I may do it
12:12:47 <AnMaster> Deewiant, anyway I probably couldn't do it
12:13:32 <AnMaster> Deewiant, that would allow using gtk you know ;)
12:13:51 <AnMaster> 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:23:47 -!- sebbu has joined.
13:25:59 -!- ais523 has left (?).
13:29:11 -!- ais523 has joined.
13:29:38 <ais523> I'm currently joined to #esoteric using telnet
13:29:59 <ais523> This is being done entirely by typing raw commands
13:30:14 <ais523_> (whereas I'm on a real IRC client so I can see the results)
13:30:42 <ais523> I'm trying to get an idea of how IRC works so I can write my own client
13:31:04 <ais523> The main problem was actually connecting in the first place without timing out; you have to type pretty quickly
13:31:48 <AnMaster> ais523, and well irc is a rather easy protocol
13:31:50 <oklofok> luckily, freenode basically never pings
13:32:22 <AnMaster> ais523, basically you have too look at how ircds does things, for example consider the 005 ISUPPORT numeric
13:32:30 <AnMaster> not in any standard that I know of
13:32:32 <oklofok> i once had a bunch of bots here as ghosts like a day
13:32:50 <AnMaster> ais523, yet parsing it is very useful tells you what modes are supported and so on
13:33:05 <AnMaster> oklofok, indeed freenode does TCP timeout only I think
13:41:52 <ais523_> [CTCP] Received CTCP-PING reply from ais523: 105 seconds.
13:41:58 <ais523_> wow, that took me a while to figure out
13:42:54 <ais523> my main problem is not being able to actually see the control-As which often fly around
13:45:02 <ais523_> so it's just another sort of ctcp...
13:45:34 <ais523_> wow, I never realised that /ctcp #esoteric VERSION even made sense before today
13:46:12 <ais523_> oklofok: you got that the wrong way round
13:46:16 <ais523_> [CTCP] Received Version request from oklofok to channel #esoteric.
13:46:43 <ais523_> you must have written /ctcp ais523_ #esoteric VERSION
13:46:58 <ais523_> your client added my nick to the request, so it only went to me
13:47:08 <ais523_> you have to use #esoteric as the nick to send to
13:47:21 <oklofok> the server adds all users on this channel in the messages it sens
13:47:29 <AnMaster> <ais523_> [CTCP] Received CTCP-PING reply from ais523: 105 seconds.
13:47:58 <oklofok> ais523: doing that to a channel == doing it to each user separately
13:48:15 <ais523_> [CTCP] Received CTCP-PING reply from ais523: -76 seconds.
13:48:26 <AnMaster> ais523, to reply you do a NOTICE
13:48:56 <AnMaster> ie, NOTICE ais523 :\1VERSION telnet\1
13:49:19 <ais523> and also how to lie to Konversation about how recently I'd been pinged
13:49:28 <AnMaster> ais523, also a CTCP can be embedded in a normal line
13:49:29 <ais523> thus the negative ping time
13:49:34 <AnMaster> most clients doesn't handle it
13:49:49 <AnMaster> like normal message with a CTCP at the end, or even in the middle
13:50:24 <ais523> this message has a <CTCP>ACTION test<CTCP> CTCP in the middle
13:50:27 <AnMaster> ais523, however I know some ppl trying to clean up this mess and create a new standard
13:50:39 <AnMaster> ais523, indeed erc fails at it, and so does xchat
13:50:52 <ais523> apparently so does Konversation
13:51:13 <ais523> grr... it's hard typing when someone else dumps a comment in the middle of your line
13:51:21 <AnMaster> ais523, http://www.irchelp.org/irchelp/rfc/ctcpspec.html
13:52:38 <ais523> well, this client can almost handle it, but it's a little low-tech
13:52:39 <AnMaster> ais523, this may interest you:
13:53:44 <AnMaster> ais523, also: http://www.alien.net.au/irc/irc2numerics.html
13:56:02 <AnMaster> ais523, oh and test it on different ircds, for example inspircd and unrealircd as well as freenode's hyperion
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:04:42 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/befc3.php
14:09:36 <ais523> 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 <AnMaster> ais523, err, as I said above, freenode doesn't care about PING
14:10:17 <AnMaster> so even if you don't do PONG it won't drop you as long as you are active
14:10:36 <ais523_> it is /sending/ the PINGs, though
14:11:04 <AnMaster> it doesn't care about PONG though
14:11:20 <ais523> I think it sends them only to inactive users
14:11:31 <ais523> and allows any sort of reply as a response
14:11:46 <AnMaster> ais523, maybe, but other ircds doesn't act like that
14:12:06 <AnMaster> do it the right way in your client
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:58 -!- ais523_ has quit (Nick collision from services.).
14:39:32 -!- ais523_ has joined.
14:39:38 -!- jix has joined.
14:40:11 <ais523_> it isn't Talk Like A Pirate Day already, is it?
14:40:31 <Corun> No, no. I'm always like this. :-)
14:41:32 <ais523_> hmm... a properly esoteric IRC client would have options to swap nicknames with someone else
14:42:05 <ais523_> 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 <AnMaster> ais523_, in what language btw?
14:42:20 <ais523_> I'm currently writing this using telnet
14:42:33 <ais523_> but I intend to write an INTERCAL IRC client at some point
14:42:33 <AnMaster> ais523_, so you mean CTCP SWAPNICK or something like that
14:42:42 <AnMaster> I'd definitly suggest a CTCP for it
14:42:58 <ais523_> and then both clients coordinate the required nickname changes
14:43:25 <AnMaster> ais523_, one would have to change to a temp nick name first
14:43:33 <oklofok> ais523: i love the swap idea
14:43:48 <oklofok> perhaps my first unlambda project should be an irc client
14:44:20 <oklofok> 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 <AnMaster> 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 <oklofok> large as in, something you can actually call a program
14:44:50 <ais523_> I only want a simple one, really
14:44:51 <oklofok> i've just theoretically pondered how you'd use features of different languages
14:44:53 <AnMaster> ais523_, oh and multiple channels
14:44:59 <oklofok> to get modularity and such
14:45:00 <AnMaster> ais523_, consider NAMESX extension
14:45:05 <ais523_> it would be kind-of hard to write anything copmlex in INTERCAL
14:45:25 <AnMaster> ais523_, see description at http://www.inspircd.org/wiki/NAMESX_Module
14:45:50 <AnMaster> UHNAMES avoids un-needed who requests
14:45:59 <AnMaster> by returning hostmask in /names
14:46:09 <AnMaster> far from all ircds support it, but still very useful
14:46:30 <AnMaster> http://www.inspircd.org/wiki/Modules/uhnames
14:46:32 -!- ais523_ has quit (SendQ exceeded).
14:46:54 <AnMaster> yes rate limiting is important
14:47:01 <ais523> I accidentally sent a NAMES command to every channel on freenode
14:47:07 <ais523> so it was more a ReceiveQ exceeded
14:47:31 -!- vixey` has joined.
14:47:33 <ais523> and yes, I am laughing out loud at this point and getting some funny looks as a result
14:47:40 <AnMaster> ais523, and how to every channel on freenode?
14:47:45 <ais523> NAMES with no argument
14:47:54 <AnMaster> ais523, sure that checks every channel!?
14:48:13 <AnMaster> because it doesn't on other ircds
14:48:13 <ais523> well, I got several screenfulls before I was killed for the reverse flood
14:48:20 <ais523> maybe it's every non-secret channel, or something
14:48:33 <AnMaster> ais523, even then most ircds doesn't do that
14:48:49 <AnMaster> >> :quark.kuonet-ng.org 366 AnMaster * :End of /NAMES list.
14:49:12 <AnMaster> and as I'm oper on it, I can see every channe
14:49:35 <ais523> "If no <channel> 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 <ais523> so presumably it's just a case of most IRC clients not being crazy enough to implement what the RFC suggets
14:49:58 <AnMaster> ais523, ah another case of most ircds not following things because it is so stupid
14:50:13 <AnMaster> to make sure I just sent a raw command
14:51:22 <oklofok> ais523: you probably get even weirder looks if people actually see what you're laughing at
14:51:42 <ais523> wow, I'm still laughing out loud
14:51:51 <ais523> this is probably a record for me laughing at computer stuff
14:52:21 <ais523> 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 <ais523> all the specs were in the wrong places and the wrong units
14:52:47 <AnMaster> ais523, if your client lacks a /raw or /quote or some other command for it. you won't be popular
14:53:03 <ais523> AnMaster: it isn't meant to be a popular client
14:53:06 <ais523> but /raw is easy enough
14:53:22 <AnMaster> ais523, suggestion: name commands like intercal does it
14:53:59 <AnMaster> not that I can think up such names
14:55:12 <Deewiant> ais523: some client/network combination does/did do that
14:55:30 <Deewiant> I remember falling off a network for typing /who
14:55:35 -!- vixey has quit (Read error: 110 (Connection timed out)).
14:56:24 <ais523> 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 <AnMaster> Deewiant, some ircds will buffer such
14:56:41 <ais523> unless someone decided to suddenly delete all the channels
14:57:02 <AnMaster> * stitch.chatspike.net InspIRCd-1.1.10+HerefordHopExtraDry BGHRSWdinorswx CGIJKLMNOQRSTVabcefghijklmnopqrstuvz IJLabefghjkloqv
14:57:03 <AnMaster> * 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 <AnMaster> * 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 <AnMaster> * USERIP WATCH=32 SECURELIST SAFELIST NAMESX SSL=*:6668 :are supported by this server
14:57:21 <AnMaster> ais523, you will need to parse 005 for features
14:57:34 <AnMaster> yes it can span multiple lines
14:57:47 <ais523> to start with I might not try to parse numerics at all
14:58:09 <ais523> I have to start somewhere
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 <ais523> 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 <ais523> so you could create an IRC account in a more user-friendly way
15:20:01 <ais523> (I know that some servers don't support nickname-registering, in some cases deliberately, but many do)
15:21:53 <ais523> hmm... it's pretty hard to do an IRC client without some way to select()
15:22:14 <ais523> 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 <ais523> although then I'll have to implement network connections in it
15:22:40 <ais523> and multiple filehandles, like CLC-INTERCAL has
15:23:06 <ais523> 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 <ais523> or using an external program as a wrapper around the IRC client itself
15:24:49 <ais523> 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 <ais523> 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 <AnMaster> Deewiant, you are wrong about !Befunge having "irremovable exit code output"
15:26:35 <AnMaster> Deewiant, try --quiet option it removes it
15:26:48 <AnMaster> <ais523> 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:27:04 <AnMaster> just provide some way to execute "on connect commands"
15:27:07 <ais523> at least the more commonly-used ones
15:27:24 <AnMaster> ais523, because there are so many different service type, far from all being called nickserv
15:27:40 <ais523> that's why you'd need a database in the client
15:27:40 <AnMaster> for example /msg userserv login <username> <password>
15:27:53 <AnMaster> ais523, that is why you need to be able to load on-connect commands from a file
15:28:09 <AnMaster> as I often also need to set specific modes
15:28:12 <ais523> that would require the user to know what the right commnds were
15:29:05 <AnMaster> ais523, way better, and, anyone using a intercal based program is very likely computer literate.
15:29:18 <ais523> yes, but not necessarily IRC literate
15:29:45 <ais523> 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:33 <AnMaster> ais523, anyway a single service package may offer different ways depending on configuration
15:30:50 <AnMaster> for example atheme services that I use, can be configured to be either account or nick based
15:32:18 <ais523> 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 <ais523> and then I'll expand it from there
15:33:17 <ais523> responding to PING commands, also, because it won't work on some servers otherwise
15:37:56 * ais523 doesn't understand the appeal
15:38:11 <ais523> but then I don't understand a lot of Internet culture
15:39:36 <ais523> you mean you say o out of nowhere for no apparent reason every now and then?
15:39:57 <ais523> but then, I'm connected to IRC using telnet, so I can talk
15:41:23 <oklofok> i also say "okofolor" and "ofokol" quite often
15:41:42 <oklofok> curiously, these have never been my nicks.
15:41:54 <oklofok> 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 <ais523> hmm... an esoteric IRC client should have the ability to change its version string
15:42:47 <ais523> 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 <ais523> or maybe place version information that changes each time; for instance, have the subsubsubrevision number increase continuously over time
15:44:06 <AnMaster> <ais523> hmm... an esoteric IRC client should have the ability to change its version string
15:44:17 <AnMaster> in xchat for example it is a /set
15:44:33 <AnMaster> in erc I think it is something in your .emacs
15:44:35 <ais523> oklofok: do those words mean anything, or do you just say them for fun?
15:44:58 <ais523> I just like the feel of being able to reply anything you like to CTCPs that you get in telnet
15:45:08 <ais523> it's a liberating experience
15:45:29 <ais523> AnMaster, you sent me three at once!
15:45:42 <okofolor> ais523: they don't mean anything
15:45:53 <AnMaster> ais523, same as old unix finger heh
15:46:16 -!- jix has quit ("This computer has gone to sleep").
15:46:36 <AnMaster> ais523, hah forgot VERSION first time
15:47:11 <AnMaster> CLIENTINFO not CLIENTINGO, is supposed to list supported CTCPs I think
15:47:15 <AnMaster> * Ping reply from ais523: 30.32 second(s)
15:47:45 <ais523> grr, I should have changed the timestamp by more
15:47:59 <ais523> copying the timestamp back literally doesn't strike me as a very interesting thing to do
15:48:00 <AnMaster> ais523, far from all clients implement more than VERSION/TIME/PING
15:48:34 <ais523> AnMaster, is that better?
15:48:42 <AnMaster> * Ping reply from ais523: 18446744063813.62 second(s)
15:48:50 <ais523> I sent you a second reply to the ping dated further in the future
15:49:06 <ais523> unfortunately, your client seems to use unsigned arithmetic for pings
15:49:21 <ais523> on Konversation I was able to get negative ping times
15:49:40 <ais523> it doesn't have to be, but in practice it normally is
15:49:57 <AnMaster> you know this convo looks odd to those not seeing all of it
15:50:46 <AnMaster> err that was sent to #esoteric
15:50:55 <AnMaster> and was a notice not a ctcp at all I think
15:51:05 <ais523> it was a notice to #esoteric
15:51:07 <AnMaster> but why a "CTCP conversation"?
15:51:11 <ais523> that's what I was trying to do
15:51:21 <AnMaster> http://www.irchelp.org/irchelp/rfc/ctcpspec.html
15:51:25 <ais523> we had a conversation with invalid CTCPs, just for fun
15:51:39 <ais523> and they came up as errors on our IRC clients
15:52:01 <ais523> I've never had a PING conversation before, though, not even sure if that's possible with most clients
15:52:13 <AnMaster> This is used to get information about where to get a copy of the
15:52:13 <AnMaster> client. The request in a "privmsg" is simply
15:52:23 <AnMaster> "and the reply is zero or more CTCP replies of the form"
15:53:03 <AnMaster> "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:24 <ais523> you said 'zero or more', so that one's easy to respond to
15:53:36 <AnMaster> ais523, and very few clients implement it
15:53:47 <ais523> I don't think there is any source code to me, though
15:54:15 <ais523> I could look up the source code to telnet, I suppose
15:54:37 <ais523> I wonder if any closed-source IRC clients implement SOURCE?
15:55:15 <Deewiant> 2008-03-20 16:54:57 [freenode] CTCP ERRMSG reply from clog: unknown CTCP: SOURCE
15:55:43 <AnMaster> Deewiant, oh btw, did you see the note about !Befunge above
15:56:02 <AnMaster> Deewiant, so you need to update all of those soon
15:56:20 <AnMaster> Deewiant, current cfunge should be included though it doesn't yet do all fingerprints
15:56:41 <Deewiant> I'd rather postpone it as much as possible :-P
15:56:55 <ais523> write a befunge script to update it
15:56:56 <AnMaster> Deewiant, oh and I got a weird infinite look in TOYS with !Befunge if I used --concurrent
15:57:03 <AnMaster> Deewiant, did not match your output
15:57:03 <Deewiant> some parts have to be done manually
15:57:23 <AnMaster> Deewiant, ./BefungeLyt --quiet --concurrent --98 --d=*,* --cellsize=32 ~/src/cfunge08/mycology/mycology.b98
15:57:38 <AnMaster> in TOYS it start outputting stuff like:
15:57:40 <AnMaster> NNNNNNNNNNNDFFFFFFFFF:00000002 rffflc
15:57:41 -!- Deformative has quit (SendQ exceeded).
15:58:04 <ais523> 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:13 <Deewiant> because they might explain differences to my output
15:58:19 <ais523> with a PONG, obviously, but I'm not sure what the argument should be
15:58:32 <Deewiant> ais523: the argument that the server sent
15:58:52 <Deewiant> AnMaster: and did you apply the patches from the page
15:58:56 <ais523> I'm not sure, because PING foo gives the name of the server
15:59:14 <ais523> but I'm not entirely sure whether the PONG should give the name of the server or of the client
15:59:21 <Deewiant> you PONG with exactly what the server gives you
15:59:37 <Deewiant> some output from my bot running in this screen :-P
15:59:55 <Deewiant> and it seems to be up just fine
16:00:08 <ais523> OK, that makes sense; I pinged freenode and got the same string back
16:03:02 <ais523> hmm... cmeme didn't even bother to respond to my CTCP ping
16:03:33 <ais523> it probably doesn't respond to CTCPs at all
16:15:27 <AnMaster> <Deewiant> AnMaster: and did you apply the patches from the page
16:15:40 <AnMaster> Deewiant, after converting them to LF
16:15:52 <AnMaster> Deewiant, as you linked to lower case names
16:16:23 <AnMaster> thanks mod_dir_index or whatever it is called under apache
16:16:31 <AnMaster> Deewiant, wtf does "firk" mean?
16:17:01 <AnMaster> No definitions were found for firk.
16:18:40 <Deewiant> odd that google doesn't know it
16:18:43 <Deewiant> http://dictionary.reference.com/browse/Firk
16:18:52 <AnMaster> Deewiant, found it in urban dict btw
16:18:53 <Deewiant> but that's not the meaning I use it for, of course :-P
16:19:16 <AnMaster> urban dict says: "something not very smart"
16:19:16 <Deewiant> aye, but it's a real word as well
16:20:02 <AnMaster> Deewiant, I prefer the webster definition ;)
16:20:43 <Deewiant> AnMaster: fixed the patch links, cheers
16:20:56 <AnMaster> Deewiant, try klinkchecker some time btw
16:22:22 <AnMaster> according to klinkstatus "http://web.archive.org/web/20070322234225/http://www.teepop.net/fungus/" fails
16:22:56 <Deewiant> because it works fine here :-P
16:23:26 <Deewiant> http://web.archive.org/web/*/http://www.teepop.net/fungus/
16:23:51 <AnMaster> http://dev.tokigun.net/esolang/program_en.php fails too, times out
16:24:16 <AnMaster> Deewiant, from web archive: "Failed Connection.
16:24:16 <AnMaster> 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 <AnMaster> See the FAQs for more info and help, or contact us."
16:24:39 <AnMaster> Deewiant, http://dev.tokigun.net/esolang/program_en.php too?
16:24:40 <Deewiant> although pyfunge does seem to be down.
16:25:00 <AnMaster> Deewiant, dns fails for pyfunge
16:25:18 <Deewiant> google has a cache from 2 weeks ago
16:27:22 <Deewiant> how's the download link for you, http://pandora.sapzil.info/dev/pyfunge/pyfunge-0.2-beta2-snapshot-20041227.zip
16:28:04 <AnMaster> Deewiant, don't really care about pyfunge
16:28:26 <Deewiant> so I guess you don't have a copy of that zip either
16:30:57 <AnMaster> Turtle: RISC OS Draw file data
16:31:03 <AnMaster> Deewiant, how on earth do you view it?
16:31:54 <Deewiant> the only programs I found were for RISC OS or the Amiga, IIRC
16:32:06 <Deewiant> there might have been one with some form of *nix support
16:32:14 <Deewiant> but I couldn't get it to work on cygwin, at least
16:32:30 <AnMaster> Deewiant, so you couldn't verify that TURT worked then?
16:33:16 <AnMaster> http://quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/tquine.php
16:33:21 <Deewiant> the only TURT file I've seen is from CCBI :-P
16:33:23 <AnMaster> mentions some "Oak Draw" for windows
16:34:17 <AnMaster> and likely to pollute the windows registry even more
16:34:30 <Deewiant> no, I think that's unlikely :-P
16:34:56 <ais523> it /can/ get worse, the Windows registry is bad but is capable of getting almost unlimitedly worse
16:35:08 <Deewiant> but the installer seems to have died
16:35:17 <Deewiant> no window but the process is running
16:35:22 <Deewiant> and it doesn't seem to be doing anything
16:36:23 <Deewiant> unsurprisingly there's no info on the net about running oak draw on windows xp >_<
16:37:05 <ais523> 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 <Deewiant> the source that creates the file is C, not Befunge
16:38:24 <ais523> oh, of course, but reading that source should imply details about the format
16:38:27 <AnMaster> still you could reverse engineer it
16:38:44 <Deewiant> or simplest would be to change the source to output something more commonplace
16:38:52 <ais523> and it seems unlikely that people would pick a very complex format for a file to be output by a Befunge interp
16:39:04 <Deewiant> ah, here we go, running in win95 compatibility mode worked
16:39:13 <AnMaster> ais523, well Deewiant selected svg
16:39:19 <AnMaster> and did it without any library
16:39:29 <Deewiant> heh, it wants to install in "C:\Program Files" even though such a dir doesn't exist
16:39:36 <Deewiant> AnMaster: yes, because I thought it'd be simplest
16:39:43 <AnMaster> Deewiant, indeed most old windows app do
16:40:10 <Deewiant> or, as it is here, D:\Programs
16:40:21 <AnMaster> Deewiant, I never got it c:\Program but c:\Documents and Settings
16:40:29 <Deewiant> it's in the %ProgramFiles% envvar...
16:40:36 <AnMaster> why just use a localized name for one of them
16:40:48 <AnMaster> why not c:\Användare och Inställningar
16:41:10 <Deewiant> the latter is much harder to change BTW
16:41:16 <ais523> C:\Documents and settings is really hard to type into a shell
16:41:18 <Deewiant> almost broke my Windows trying, and ended up failing
16:41:27 <AnMaster> Deewiant, btw do you come from the Swedish or Finnish speaking part of Finland?
16:41:43 <ais523> and is even more difficult with cmd.exe than it is on POSIXy shells
16:41:53 <Deewiant> C:\D<tab> works fine in cmd.exe
16:42:37 <ais523> /home is a lot better, and Windows Vista picked a similar solution (C:\Users)
16:42:55 <AnMaster> Deewiant, oh? does it looks right?
16:43:22 <Deewiant> but then this program is really weird
16:43:39 <Deewiant> could be it's just displaying it wrong
16:44:32 <Deewiant> but it does look like there's one square
16:44:36 <Deewiant> and it's in the lower left corner
16:45:55 -!- ais523 has quit ("bye!").
16:49:41 -!- Corun has quit (Read error: 110 (Connection timed out)).
16:54:28 <okofolor> nothing! can't a guy o here anymore without being asked for a reason :O
16:54:44 <okofolor> i'm not sure that's ever been possible
16:54:50 -!- RodgerTheGreat has joined.
16:55:18 <AnMaster> okofolor, well what did it mean?
17:26:10 <AnMaster> huh, why does BASE give null bytes in output
17:26:14 <AnMaster> UNDEF: N outputs 40 in base 16 as ^@28 $
17:43:01 -!- jix has joined.
18:12:32 -!- Sgeo has joined.
18:35:58 -!- timotiis has joined.
18:44:58 <Deewiant> AnMaster: btw, you talk about that magic undocumented -O4 mode
18:45:05 <Deewiant> AnMaster: have a look at http://gcc.gnu.org/viewcvs/trunk/gcc/opts.c?view=markup
18:45:19 <Deewiant> AnMaster: 3 or greater are all the same
18:45:36 <AnMaster> Deewiant, odd, I talked to a gcc developer that said otherwise
18:45:51 <Deewiant> maybe he was just messing with you :-P
18:46:05 <AnMaster> Deewiant, and I notice a speed difference in some cases
18:46:54 <AnMaster> looks like it set optimize to any level?
18:47:10 <Deewiant> so you can give it -O9 if you want
18:47:16 <AnMaster> so it doesn't actually handle the values of -O there
18:47:28 <AnMaster> it will set optimize == 9 or whatever
18:47:56 <Deewiant> but it only cares about >= 1, >= 2, >= 3, and nonzero
18:48:22 <AnMaster> where is the variable optimize declared?
18:49:09 <AnMaster> Deewiant, anyway something could check for 4 or higher elsewhere
18:50:34 <AnMaster> anyway *goes back trying to make i instruction work*
18:56:02 <jix> 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 <jix> and/or use profiling but i have no experience with that
18:59:49 -!- ais523 has joined.
19:00:13 <AnMaster> jix, I do use profile guided optimizing already
19:00:33 <AnMaster> currently working at -O0 -ggdb3 though :)
19:01:22 <ais523> -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 <okofolor> jix: i too made an ski interp in thue
19:13:12 -!- okofolor has changed nick to oklopol.
19:13:37 <oklopol> it was quite simple, although took like 2 hours for me
19:16:40 <Deewiant> AnMaster: alright, so I grepped the whole GCC source. :-)
19:16:53 <Deewiant> AnMaster: a couple of instances of 3, none of 4 or higher.
19:17:59 <AnMaster> Deewiant, that does not explain why cfunge is about 20 ms faster in average using -O4 than -O3 though
19:18:12 <Deewiant> AnMaster: is there a difference between the binaries?
19:18:44 <Deewiant> compile all the files individually with -O3 and -O4 and look at the asm
19:19:01 <AnMaster> Deewiant, I will when I got i working correctly
19:19:26 <ais523> you could just use diff to compare the asm
19:21:42 <ais523> 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 <AnMaster> BAD: writing to mycotmp0.tmp with o failed
19:21:55 <AnMaster> Deewiant, currently my y says i is implemented and o isn't
19:22:14 <AnMaster> y claims all of the following:
19:22:14 <AnMaster> That buffered I/O is being used
19:22:14 <AnMaster> That the number of bytes per cell is 8
19:22:38 <ais523> there are legitimate reasons to allow i but not o, e.g. an interp running on a read-only file system
19:23:02 <AnMaster> ais523, and in this case "because I haven't started work on o yet"
19:23:09 <ais523> 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 <ais523> AnMaster: Stop sending messages while I'm halfway through typing mine, it's really confusing!
19:24:08 <ais523> (this is of course why I was asking about the save-position-and-scroll codes)
19:24:16 <ais523> but I like using telnet...
19:24:40 <ais523> curses doesn't have INTERCAL bindings ATM
19:24:53 <ais523> although using curses might be a decent way to do it in Befunge
19:25:15 <ais523> hardcoding VT100 strings fits better into the INTERCAL philosophy
19:26:53 <AnMaster> Deewiant, the line that says "Hope the following isn't overwritten"
19:26:53 <ais523> 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 <ais523> it would be a library included with the distribution, just like the other libraries
19:26:54 <ais523> after all, curses doesn't require capabilities that INTERCAL can't manage, it's just writing out various binary to the terminal
19:27:05 <AnMaster> Deewiant, it is looping in overwritten
19:27:38 * AnMaster writes a dump funge space routine
19:27:47 <ais523> AnMaster: so you've accidentally implemented shred?
19:28:14 <ais523> AnMaster: a utility for repeatedly overwriting files to try to prevent them being undeleted
19:29:20 <Deewiant> AnMaster: that comment is to the left of the space where mycorand.bf should be loaded
19:29:47 <Deewiant> the Hope the following isn't overwritten,v +55<<<<<
19:29:47 <Deewiant> or we hit an @ and exit >" redro eht ni detareneg erew snoitcer
19:29:53 <AnMaster> Deewiant, so would an off by one error cause that to happen?
19:29:55 <Deewiant> er, where'd that 'the' come from
19:30:00 <Deewiant> Hope the following isn't overwritten,v +55<<<<<
19:30:01 <Deewiant> or we hit an @ and exit >" redro eht ni detareneg erew snoitcer
19:30:22 <Deewiant> AnMaster: I'm failing to see how you'd get that far, all the way to the w :-P
19:30:46 <AnMaster> since it is in between the two r
19:30:55 <AnMaster> tix=0 tid=0 x=93 y=126: w (119)
19:30:56 <AnMaster> tix=0 tid=0 x=92 y=126: e (101)
19:30:56 <AnMaster> tix=0 tid=0 x=91 y=126: r (114)
19:30:56 <AnMaster> tix=0 tid=0 x=92 y=126: e (101)
19:30:56 <AnMaster> tix=0 tid=0 x=93 y=126: w (119)
19:30:57 <ais523> are you sure it's that w?
19:31:45 <AnMaster> Deewiant, nop, my load routine is
19:31:59 <ais523> what does s do? I've forgotten
19:32:09 <Deewiant> I figured you'd use the same routine as to load the main space
19:32:44 <AnMaster> Deewiant, I didn't use the same as the main one only can load at 0,0
19:32:47 <Deewiant> "a"sb skips over the b and changes it to an a
19:32:53 <ais523> 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 <Deewiant> AnMaster: so write a generic one and call that from main with the params 0,0
19:33:15 <AnMaster> Deewiant, that is what I'm doing
19:36:53 <jix> oklopol: i made one?
19:37:45 <jix> "19:13:07 <okofolor> jix: i too made an ski interp in thue"
19:38:17 <oklopol> i think so, although may have been several months
19:38:19 <AnMaster> Deewiant, err, bug no longer happens
19:38:25 <ais523> oklopol: how did you deal with the nesting of things like arguments to k?
19:38:30 <jix> oklopol: it might be
19:38:40 <jix> oklopol: you are right
19:38:43 <jix> at least i worked on one
19:38:48 <AnMaster> Deewiant, will do valgrind after I fixed "BAD: i should have pushed (60, 119) as Va"
19:38:52 <oklopol> just convert everything to textual substitution.
19:39:14 <oklopol> it's easy to "go past a nesting"
19:39:18 <jix> but i have no idea whether mine is finished
19:39:20 <AnMaster> Deewiant, should space be ignored in text mode only or in binary too?
19:39:25 <ais523> oklopol: I thought of that, but dealing with things like `k`k`ki is not that easy
19:39:26 <oklopol> and "copy a nesting to a marked"
19:39:46 <oklopol> you can read it, well, probably can't, but i'll link anyway
19:39:49 <AnMaster> Deewiant, aha, not ignoring space was what caused the problem
19:39:52 <oklopol> www.vjn.fi/oklopol/thue.txt i think
19:39:53 <ais523> ah, a copy command would do it
19:40:11 <oklopol> also i have some my-interpreter-spesific stuff there
19:40:21 <oklopol> comments + it can't handle empty substitutions
19:40:37 -!- Sgeo_ has joined.
19:40:43 <oklopol> well, just the first is specific to the interp
19:41:02 <oklopol> -- evaluating a k means skipping one expression, then removing an expression
19:41:18 <oklopol> ki-interp took like 5 minutes
19:42:06 <jix> i have two non working versions ^^
19:42:14 <Deewiant> AnMaster: never overwrite anything with spaces
19:42:35 <AnMaster> Deewiant, anyway that was what caused the problem
19:42:47 <oklopol> jix: then i think i was faster
19:42:56 <oklopol> you said it took you an hour
19:42:59 <AnMaster> BAD: i should have pushed (90, 16) as Vb
19:43:07 <AnMaster> Deewiant, you should show what value was pushed instead
19:43:14 <oklopol> then you said "hmm... it's not working fully yet" or something
19:43:19 <oklopol> i haven't heard from you since
19:43:34 <Deewiant> 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 <jix> i stopped working on it that day...
19:44:11 <AnMaster> Deewiant, yes of course I got a debugger
19:44:39 <oklopol> jix: how did you do it, i mean what was your strategy?
19:44:52 <jix> i don't remember
19:44:58 <jix> and i have no comments in my source
19:45:01 <oklopol> i was thinking making a macro language or something for thue
19:45:01 <jix> and it isn't working
19:45:25 <jix> thue basic ^^
19:45:49 <jix> nargh i have to many projects right now
19:45:57 <jix> can't start to work on such a thing even tho i find it it interesting
19:46:10 <jix> 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 <oklopol> i have about 50 projects in my todo list
19:47:25 <oklopol> that's the problem with being a human, so many ideas, so slow typing speed
19:47:52 <jix> making a todo list would be one point on my todo list if i had one
19:47:59 <jix> well it wouldn't be then...
19:48:18 -!- ais523 has joined.
19:48:34 <ais523> my Internet connection dropped
19:48:53 <oklopol> [20:46:22] <oklopol> i have about 50 projects in my todo list
19:48:53 <oklopol> [20:47:10] <oklopol> that's the problem with being a human, so many ideas, so slow typing speed
19:48:53 <oklopol> [20:47:38] <jix> making a todo list would be one point on my todo list if i had one
19:48:53 <oklopol> [20:47:45] <jix> well it wouldn't be then...
19:49:12 <ais523> oklopol: I was using telnet, but it was my Internet connection (not just IRC) that dropped, so no client would have saved me
19:50:54 <AnMaster> Deewiant, what is the "| C K M V | " stuff about
19:51:36 <AnMaster> "We'll be moving the 3x3 area starting at the 1"
19:52:21 <Deewiant> 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 <AnMaster> Deewiant, nah, I just use ; around all my comments
19:52:48 <AnMaster> "v<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
19:53:44 <Deewiant> of course it's not necessary to fill the whole line
19:53:56 <Deewiant> you never know what kind of bugs you'll run into
19:54:13 <Deewiant> just like in the first x tests
19:54:33 <AnMaster> ^^^^^^<^^^^^^^#^^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>"sllec fo rebmun gnorw eht drawkcab spmuj j-40 :DAB"1 ^ ee
19:54:50 <Deewiant> no, j just happens to be there
19:55:17 <Deewiant> you'll note the arrows go to an x error message
19:55:39 <AnMaster> around that place why are there a column of chars like "ll"
19:55:55 <Deewiant> it's just a string running in the vertical direction
19:56:54 * AnMaster tries to figure out string direction
19:56:59 <AnMaster> that mean string starts at top?
19:57:30 <AnMaster> oh it's the "skip/hit easternmost"
19:57:41 <Deewiant> why not, saves a bunch of space
19:58:01 <Deewiant> AnMaster: the original reason was that at first I didn't differ between file/line
19:58:11 <Deewiant> I noticed it later and had already written 50+ lines down
19:58:12 <AnMaster> Deewiant, but true, now I only need to maximize my console for the gdb output from call FungeSpaceDump()
19:58:25 <Deewiant> so I needed to fit the line testing in the same place
19:58:36 <ais523> oklopol: what was that link to your Thue ski again?
19:58:38 <Deewiant> so I figured that since there will be two fairly long strings I might as well put them vertically
19:58:54 <ais523> I spent the intervening time learning how to write an HTTP GET over telnet
19:58:58 <Deewiant> I've told you before, AnMaster :-P
19:59:09 <Deewiant> PIC code would have been a good idea but I was young and foolish
19:59:09 <AnMaster> Deewiant, the code there looks not too position dependant for jumps?
19:59:33 <ais523> but telnet isn't very good in terms of backscroll
19:59:34 <Deewiant> no, but there's a bunch of p and g going on there
19:59:46 <AnMaster> Deewiant, err what is >"i sutats nruter eht fI .q htiw tiuq ot gniyrT"a doing near the top?
20:00:07 <Deewiant> I can only find that on line 768, at least :-P
20:00:22 <AnMaster> missed that was the end of the previous funge space dump
20:00:25 <Deewiant> confused up and down? Befunge'll do that to ya. ;-)
20:00:40 <AnMaster> >"i sutats nruter eht fI .q htiw tiuq ot gniyrT"a".enod yllacitcarp si etius tset 89-egnufeB ygolocyM ehT"a>:#,_f#^q
20:01:00 <AnMaster> hard to see that in the messy dump
20:02:29 <AnMaster> ok pushed i instruction, o not yet done
20:06:17 <AnMaster> Deewiant, btw you don't list these changes to mycology anywhere? I can't find a change log in mycology either
20:07:09 <ais523> heh, Slashdot puts random Futurama quotes in an HTTP header
20:07:21 <Deewiant> AnMaster: nah, can't be bothered to list these minor changes.
20:07:51 <AnMaster> ais523, looked with http live heardes
20:08:07 <ais523> it was in an X-Leela header for me
20:08:20 <AnMaster> X-Bender: Boy, were we suckers!
20:08:23 <ais523> maybe it only shows up if it detects telnet as your user agent
20:09:25 <AnMaster> "X-Bender: Lick my frozen, metal ass!"
20:09:34 <ais523> wow, Slashdot's HTTP output has a lot of vertical whitespace
20:09:36 <AnMaster> ais523, where did you say those were from?
20:10:02 <ais523> Futurama, based on the character names and the sort of quotes that are there
20:10:45 <ais523> if you really don't know, you can look it up on Wikipedia
20:13:04 <Deewiant> ... or browse the Intertubes. :-P
20:14:22 <ais523> if you didn't guess, I'm currently websurfing using telnet and less
20:16:37 <ais523> 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:46 <ais523> an INTERCAL program's already been written, which basically just grabs a URL and dumps the web page there to stdout
20:17:52 <AnMaster> ais523, a full browser in intercal with AJAX and all
20:17:54 <ais523> like wget, but with less style
20:18:17 <ais523> it's an interesting idea, but I'd hate to write an ECMAscript interp in INTERCAL
20:18:30 <ais523> or even an HTML renderer, for that matter
20:19:06 <AnMaster> ais523, try to make it a google summer of code project *runs*
20:19:27 <ais523> generally speaking, I don't like to embark on projects that are far too difficult, or just inappropriate
20:19:41 <ais523> An INTERCAL IRC client is maybe possible, an INTERCAL web browser is just stupid
20:20:12 <AnMaster> Deewiant, should o truncate and write or append?
20:21:30 <oklopol> not stupid, the word you're looking for is fucking awesome shit
20:21:53 <Deewiant> web browsers are ludicrously difficult to write anyway
20:21:54 <AnMaster> ais523, you said ffi for intercal?
20:21:54 <Sgeo_> All books are 3 characters. Check syntax and try again
20:22:15 <ais523> I haven't written it yet, but I have plans
20:22:20 <AnMaster> ais523, I have been thinking about doing one for befunge
20:22:34 <ais523> which allow you to embed NEXT, COME FROM, RESUME, etc. in C programs
20:22:40 <ais523> and link them to INTERCAL programs
20:22:46 <AnMaster> ais523, so I would like to know more about how it would work, would it use libffi?
20:22:50 <ais523> 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 <AnMaster> ais523, ah, not ffi at runtime then=
20:23:07 <ais523> I was planning to just link the programs together at compile time
20:23:23 * Sgeo_ renames the biblebot script
20:23:25 <AnMaster> ais523, aww not helpful for me then
20:23:34 <ais523> they swapped the words 'tetration' and 'reals'
20:24:12 <ais523> it's what comes next in the sequence addition, multiplication, exponentiation
20:24:52 <oklopol> i swapped "brainfuck" and "tetration", and changed "in" to "with"
20:25:10 <AnMaster> Deewiant, so what is "tetration"...
20:25:11 <oklopol> that sequence thing was right ofc
20:25:17 <oklopol> AnMaster: what ais523 said
20:25:23 <ais523> I was comparing the topic to the last-but-two, from memory
20:31:31 -!- Judofyr has joined.
20:31:35 <ais523> maybe it would be easier to write an IRC client as two programs
20:31:42 <ais523> one which handled input from the user
20:31:52 <AnMaster> Deewiant, I don't get what the flag for o should do
20:31:54 <ais523> and the other which handled messages from the IRC server
20:32:19 <Deewiant> AnMaster: what part don't you get
20:32:26 <ais523> then you wouldn't need a select-equivalent
20:32:26 <Deewiant> "any spaces before each EOL, and any EOLs before the EOF, are not written out. "
20:32:35 -!- Hiato has joined.
20:32:39 <AnMaster> Deewiant, ah right, found it now
20:32:41 <Deewiant> EOL means end of line, EOF means end of file
20:32:42 <AnMaster> Deewiant, didn't see that part
20:32:56 <AnMaster> Deewiant, C standards are easier to read :P
20:34:09 <AnMaster> "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 <AnMaster> mycology doesn't test it is relative storage offset
20:34:37 <AnMaster> Deewiant, suggestion: test it?
20:36:14 <Deewiant> oh, wait there was something on the stack, need to add a 0 first
20:36:21 <Deewiant> oh, darn now the whole row is shifted 2 chahrs
20:36:28 <Deewiant> firk, no space anywhere in the next 5 rows
20:36:36 <Deewiant> gotta use x somewhere to jump to a temporary location
20:36:37 <AnMaster> Deewiant, right right, add a mycology 2 test suite?
20:36:56 <Deewiant> but I'm not in the mood for it :-P
20:36:56 <AnMaster> Deewiant, or test out of order?
20:37:14 <Deewiant> I'd prefer to keep it in somewhat smart an order - test an instruction and move on
20:37:24 <Deewiant> 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:44:04 -!- ais523 has quit ("going home").
20:44:15 -!- Hiato has quit ("Leaving.").
20:48:12 <AnMaster> Deewiant, odd is it really correct that flag meanings are inverted between i and o?
20:49:02 <Deewiant> all depends on how you think of what the flag means... after all it's not the same flag
20:49:28 <AnMaster> Deewiant, do mycology test both kinds of output?
20:49:42 <Deewiant> mycology quite verbosely says that it doesn't
20:50:52 <AnMaster> Deewiant, it could output it for later manual verification
20:56:27 <AnMaster> Opening mycotmp0.tmp... failed.
20:56:27 <AnMaster> Trying to write to it with o...
20:56:27 <AnMaster> UNDEF: writing to mycotmp0.tmp with o failed
20:56:52 <AnMaster> if it says o is implemented it should probably be BAD
20:56:52 <Deewiant> hey, you said it shouldn't be BAD :-P
20:56:52 <AnMaster> but UNDEF when y says o is not implemented
20:56:56 <AnMaster> Deewiant, I said: depending on y value
20:57:11 <Deewiant> the developer knows whether o should work
20:57:23 <Deewiant> besides, it could mean a read-only file system
20:57:36 <AnMaster> now, tell me the truth and say as it is: you can't fit it in
20:57:58 <Deewiant> I just can't be bothered to write it
20:58:03 <Deewiant> but there's plenty of room there :-P
20:59:04 <AnMaster> Deewiant, when did you write mycology and ccbi? I mean the main stuff
20:59:43 <AnMaster> currently all you do to mycology is bug fixes after all
20:59:57 <Deewiant> beginning of 2006 for non-fingerprint stuff, I think
21:01:24 <Deewiant> 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 <Deewiant> no, I think most of mycology happened after that
21:02:42 <Deewiant> or maybe I did have the core already then
21:03:00 <Deewiant> fingerprints were definitely late 2006 - mid 2007 though
21:03:51 <AnMaster> #@>. 1#@vv"@.4"@#<.>$#v5#.< #>3.#@$ .^@^ 0@# 4.2<v.6_5.@>7.
21:04:34 <AnMaster> they went to stderr, instead, thanks code copying from dump function
21:05:35 <AnMaster> anyway text file mode looks painful
21:05:45 <Deewiant> aye, unless you implement it the lazy way
21:06:51 <AnMaster> Deewiant, do mycology test binary input?
21:07:17 <Deewiant> 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 <Deewiant> instead of testing in the middle as well
21:07:54 <AnMaster> Deewiant, even then, how do I find where it ends
21:07:59 <Deewiant> AnMaster: mycology does say what it tests in most cases :-P
21:08:01 <AnMaster> ie, where is there only whitespace left
21:08:25 <Deewiant> well, how do you know when your IP needs to wrap
21:09:00 <AnMaster> Deewiant, yes but in text mode it says o should not print trailing whitespaces
21:10:11 <AnMaster> for (FUNGEVECTORTYPE y = offset->y; y < maxy; y++) {
21:10:11 <AnMaster> for (FUNGEVECTORTYPE x = offset->x; x < maxx; x++) {
21:10:11 <AnMaster> value = fungeSpaceGet(& (fungePosition) { .x = x, .y = y });
21:10:29 <Deewiant> ah, of course you can't do that :-)
21:10:32 <AnMaster> how can I know when I reached "trailing whitespaces"
21:10:45 <Deewiant> you need to take a copy and go through it
21:10:51 <Deewiant> I never even considered outputting directly :-D
21:11:34 <Deewiant> I don't know, never occurred to me
21:11:46 <AnMaster> Deewiant, it works fine for binary mode this
21:13:01 <AnMaster> Deewiant, I will correct it either "later" or "when mycology tests it"
21:13:34 <Deewiant> hmm, my binary output would be different
21:14:14 <AnMaster> Deewiant, not according to diff
21:14:21 <Deewiant> given (10000,10000) to (10010,10010) yours would output 10x10 spaces?
21:14:58 <AnMaster> Deewiant, err, I compared mycotmp0.tmp from ccbi and cfunge
21:14:58 <Deewiant> mine would output only 10 line breaks
21:15:02 <AnMaster> Deewiant, not sure what you mean
21:15:16 <Deewiant> AnMaster: as in, what happens when outside the space boundaries
21:15:26 <AnMaster> Deewiant, well that is an UNDEF I bet
21:15:27 <Deewiant> mine doesn't output anything in that case
21:15:45 <Deewiant> otherwise I'd say "you're wrong" and not "we differ" ;-)
21:16:06 <AnMaster> 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 <Deewiant> you keep forgetting that funge is an esolang :-)
21:18:16 <AnMaster> if (*filename == '\0' || size.x < 1 || size.y < 1) {
21:18:28 <AnMaster> or does it break some standard?
21:19:04 <Deewiant> *filename == '\0' is defined since that can't be opened, of course
21:20:37 <AnMaster> Deewiant, I notice you don't keep vectors as structs in ccbi
21:21:22 <AnMaster> well, I wonder about the design decision behind it
21:21:33 <AnMaster> I got a struct fungevector after all
21:22:18 <AnMaster> not really, but IMO cleaner code
21:22:30 <AnMaster> but I asked about your design decision
21:28:08 -!- Corun has quit ("This computer has gone to sleep").
21:33:06 <AnMaster> Deewiant, BAD: ran out of temporary file names, can't test o
21:33:37 <Deewiant> yes, it's BAD, because it means mycology could test something but can't because of the environment
21:33:45 <Deewiant> and hence you don't know whether it's GOOD/BAD/UNDEF/what
21:34:15 <AnMaster> several of the IO ones should be ERR on fail instead of GOOD/BAD/UNDEF
21:34:48 <AnMaster> error due to environment that may indicate for example a read only FS
21:35:40 <AnMaster> and where that is not due to an optional feature
21:36:09 <AnMaster> 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:37 <AnMaster> Trying to quit with q. If the return status is 15, consider it GOOD...
21:39:49 <AnMaster> __mf_violation: [0, 0, 0, 0, 0]
21:49:51 <AnMaster> Deewiant, pushed added o instruction.
21:51:40 <slereah__> Full of move to register and stuff.
21:52:38 <slereah__> I must make a bracketless brainfuck!
21:53:14 <AnMaster> slereah__, I think that is kind of what SMITH is
21:53:43 <slereah__> Yes. But I do not like how it looks.
21:54:01 <slereah__> I have this terrible phobia of assembly
21:55:39 <AnMaster> 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:57:05 <AnMaster> or anyone else for that matter
21:57:24 <AnMaster> you know about compare and exchange? or locks?
21:57:39 <AnMaster> ah you don't know about multi threading?
21:57:50 <AnMaster> because the second CPU couldn't do it safely
21:58:01 <AnMaster> so are they in same computational class?
21:58:40 <oklopol> slereah__: would you be more comfortable with a mathematical model of an assembly?
21:58:55 <AnMaster> oklopol, ah you here? can you understand my question?
21:59:12 <oklopol> 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 <oklopol> i know how much you love that obscure math
21:59:38 -!- oerjan has joined.
21:59:43 <oklopol> AnMaster: i may be able to understand it, but i will have to read a few lines up to see it
21:59:45 <slereah__> The truth is, I mostly just like working on a tape.
21:59:50 <AnMaster> 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
22:00:09 <AnMaster> slereah__, I prefer a 2D array :)
22:00:36 <oklopol> AnMaster: no, i don't get that
22:00:46 <slereah__> But infinite in all direction grid is hard to do without problems
22:00:49 <oklopol> although i'm fairly sure i could answer you right away if i understood it
22:01:04 <AnMaster> oklopol, ok you know about compare and exchange or locks, like mutexes?
22:01:15 <slereah__> The Love Machine 9000 last version has something like that
22:01:23 <AnMaster> oklopol, needed for two threads to be able to access same data
22:01:32 <slereah__> http://membres.lycos.fr/bewulf/Russell/Hello2.png
22:01:34 <AnMaster> oklopol, and on a multi cpu system very important
22:02:23 <AnMaster> 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:03:58 <oklopol> no, i don't know exactly what mutexes are
22:04:12 <AnMaster> 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 <oklopol> slereah__: how is it hard to make an infinite-in-every-direction array?
22:04:26 <AnMaster> oklopol, mutex = a lock on memory so a single thread at a time can access it
22:04:46 <slereah__> oklopol: Mostly, it's bothersome to print a section of it
22:05:06 <oklopol> AnMaster: okay then i guessed right
22:05:07 <slereah__> For instance : http://membres.lycos.fr/bewulf/Russell/Hello.png
22:05:16 <slereah__> The first line is for some reason printed too much
22:05:30 <AnMaster> oklopol, therefore a system without atomic memory operation can not do the same stuff as one with them
22:05:46 <AnMaster> oklopol, are those two systems in the same computational class?
22:05:51 <oklopol> depends on the definition of "being able to do something"
22:06:04 <oklopol> both can do anything computable within their memory limit
22:06:18 <lament> slereah__: what's in the bottom right corner of that pic?
22:06:23 <oklopol> we aren't talking "computational class" type abilities here
22:06:37 <AnMaster> oklopol, two threads on a dual cpu system being able to transfer data between them using a queue
22:06:38 <oklopol> just features allowed for the programmer, and speed
22:06:51 <AnMaster> oklopol, so one thread on each cpu
22:07:29 <AnMaster> 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:59 <oklopol> that has nothing to do with computational class of course
22:08:10 <AnMaster> oklopol, ok what class or whatever has it got to do with?
22:08:19 <oklopol> features allowed for the programmer, and speed.
22:08:29 <oklopol> from a theoretical perspective
22:08:48 <oklopol> if you wanna be more physical, it's basically just the ability to do... well, do exactly what you said.
22:09:06 <oklopol> you gain nothing from multithreading when it comes to computation.
22:09:08 <AnMaster> oklopol, yet something can be turing-complete without being brainfuck-complete, so is that another case of "features allowed for the programmer"?
22:09:20 <oklopol> except the fact the physical world lets you do things faster
22:09:33 <oklopol> well, that's another way to put it
22:09:46 <AnMaster> oklopol, so being IO complete? :D
22:09:52 <oklopol> well, they are not exactly that...
22:10:12 <slereah__> I'm afraid just a "add the current cell at the end of the code" won't cut it
22:10:28 <oklopol> but... just as having a printer doesn't make you more powerful computationally, neither does threading, nor mutexes
22:11:03 <oklopol> also you can simulate the lock by having some sort of atomic boolean flags, i'm sure.
22:11:20 <oklopol> where atomic means fast enough to read not to need a lock themself
22:11:38 <slereah__> What would be a good idea for a extend-the-code-instruction?
22:11:40 <AnMaster> oklopol, could you define the concept better?
22:11:45 <slereah__> Copypasting n instructions at the end?
22:12:27 <AnMaster> <oklopol> 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 <oklopol> 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:42 <oklopol> the only thing you cannot have is the actual physical processes.
22:12:57 <oklopol> the actual whatever queue sharing you were talking about
22:13:26 <oklopol> weren't you originally saying something about not being able to share a queue between processes?
22:17:58 <oklopol> well, can't you just have a lock to indicate which one can access the queue at given time?
22:18:29 <AnMaster> 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 <AnMaster> so a lock could not be acquired(sp?) atomically either
22:19:11 <oklopol> does that mean the memories are distinct?
22:19:22 <AnMaster> oklopol, no of course they share same ram
22:19:31 <AnMaster> just no way to prevent them from clobbering each other
22:19:44 <oklopol> there cannot be safe accesses to the ram?
22:20:01 <AnMaster> oklopol, not if they try to access the same part of the ram no
22:20:21 <AnMaster> if you write the programs that run on each cpu to access different parts, I guess it would work
22:20:45 <oklopol> well, you need to able to read / write *something* safely, or just be synchronized
22:20:46 <AnMaster> 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 <AnMaster> but you couldn't communicate between the cpus
22:23:09 -!- okofolor has joined.
22:24:08 <AnMaster> <oklopol> well, you need to able to read / write *something* safely, or just be synchronized
22:24:08 <AnMaster> <AnMaster> say, making sure one cpu keep in the top 4 MB and the other in the lower 4 MB or whater
22:24:08 <AnMaster> * oklopol has quit (Read error: 104 (Connection reset by peer))
22:24:08 <AnMaster> <AnMaster> but you couldn't communicate between the cpus
22:25:10 <okofolor> if you have *one* boolean flag, or the processors are synchronized, you can communicate anyway you want
22:25:26 <okofolor> one safe boolean flag, or perfect synchronization
22:26:49 <okofolor> but indeed, if you can't have a bit of information both can access safely, there is no way to have communication
22:27:20 <okofolor> i'm assuming you know what i mean by the sync thing, because you aren't asking.
22:27:44 <AnMaster> I assume you mean instructions will take same amount of time
22:27:50 <AnMaster> so they can know where each other is
22:27:58 <AnMaster> like is done in concurrent befunge
22:28:20 <AnMaster> but of course, instructions may or may not take longer
22:28:44 <AnMaster> oh and random access time random access ram ;)
22:28:45 <okofolor> all you have to know is how long they *took*
22:29:01 <okofolor> also, they need to be *within some limit*
22:29:12 <slereah__> I was trying to use the BF constants from esolang, then I forgot I didn't have brackets anymore
22:29:26 <okofolor> if the access time can be *anything*, then you cannot have safe sharing.
22:29:47 <AnMaster> okofolor, within say 2^32 years
22:30:02 <okofolor> 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:29 <okofolor> 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 <AnMaster> okofolor, it is however safe to write another byte of data on this mad system
22:31:01 <okofolor> they can exchange certain bytes?
22:31:18 <okofolor> "it is however safe to write another byte of data on this mad system"
22:31:21 <AnMaster> but I meant, one cpu can write at 0x122 and the other at 0x123
22:31:36 <okofolor> well, i'm referring to any given cell of course
22:31:51 <AnMaster> you don't need to keep "within another memory page"
22:32:16 <okofolor> we can just consider one single memory cell
22:32:24 <okofolor> it is simple to see you cannot share even that
22:32:55 <okofolor> no use taking the whole memory into account, because none of its cells can be shared due to that.
22:33:06 <AnMaster> 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:42 <okofolor> well, we can just consider all failures failures
22:33:46 -!- okofolor has changed nick to oklopol.
22:33:54 <AnMaster> indeed, just trying to make it more interesting
22:34:05 <AnMaster> so this system is not IO complete?
22:34:09 <oklopol> well, that is only interesting when we start calculating probabilities.
22:35:03 <AnMaster> 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:19 <oklopol> 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 <oklopol> okay, now how probable is it for a read-read to fail?
22:35:52 <slereah__> Well, I now have Bracketfuck. I hope the x instruction is enough for TCness
22:36:27 <slereah__> I'm not giving you a link to my computer :o
22:36:50 <oklopol> 252-1-82-215 <<< this your ip?
22:38:02 <AnMaster> <oklopol> okay, now how probable is it for a read-read to fail?
22:38:10 <AnMaster> very likely if they hit at the same time
22:38:20 <AnMaster> result would be that too little current was generated
22:38:26 <AnMaster> so it would register value as a 0
22:38:58 <AnMaster> but again random access time random access memory (RATRAM) would make it hard to time that
22:39:04 <oerjan> *maybe* if they had well synchronized clocks it might still be able to do something safely.
22:39:13 <AnMaster> so you couldn't say use that to make a cell the same value
22:39:18 <oklopol> slereah__: b in move-head is just for confusing?
22:39:36 * oerjan declares this completely impossible
22:39:45 <slereah__> oklopol: I like my programs to be compacts like cement blocks
22:40:00 <slereah__> Movehead is just a way of making the tape infinite
22:40:04 <oklopol> oerjan: yes, but we are considering probabilities here
22:40:12 <oklopol> although they don't look that promising...
22:40:32 <oklopol> seems this machine is designed to kill people who like threading.
22:40:38 <oerjan> you cannot even use probabilities to repeat until you are sure
22:41:16 <oklopol> oerjan: does that make it not interesting to consider the probabilities?
22:41:48 <AnMaster> oklopol, so this system is not safe for general use I understannd?
22:42:14 <oklopol> slereah__: x just adds a command in the end of the prog?
22:43:34 <oklopol> slereah__: you can add at most one character each time you do an operation, and each operation uses a character
22:43:50 <oklopol> this means the only infinite program is one that only executes x.
22:44:01 <oklopol> and something else in the beginning, ofc
22:44:23 <oklopol> YABC does something like that
22:44:50 <oklopol> similar, although you have goto, you have to build your jumps with +'s and -'s
22:45:20 <AnMaster> you know, how comes funge seems sane compared to such systems?
22:45:40 <slereah__> Copypasting two chars at the end of the code
22:46:00 <oklopol> hmm, harder to declare non-tc at least.
22:46:35 <slereah__> I guess it would be easier if I just used a language that handled strings
22:46:35 <oerjan> i doubt that you can set up which cells to copy with just one command
22:47:21 <oklopol> 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:41 <slereah__> About a language in which you can declare any sort of data structure or something
22:48:26 <slereah__> The structure 0 was the program itself
22:48:38 <oklopol> you can *do stuff with them*, nevermind then.
22:54:19 * Judofyr feels proud; has just written a JavaScript-only site: http://yr.judofyr.net
22:59:46 <AnMaster> Judofyr, I see "JavaScript required", and then a menu on the side
22:59:55 <AnMaster> please make it work without javascript
23:00:04 <Judofyr> It's a mashup with Google Maps
23:00:20 <AnMaster> Judofyr, make it work without javascript or it is crap, sorry
23:00:39 <Judofyr> It's a mashup! If want to use, enable JavaScript!
23:00:49 <Judofyr> I can't make it work without JavaScript
23:00:54 <AnMaster> Judofyr, even when I enabled javascript it showed same message
23:01:09 <Judofyr> it's not completely done, yet..
23:01:40 <AnMaster> Judofyr, works in konqueror though
23:02:25 <AnMaster> Judofyr, it just asks "where or what is this"
23:02:37 <AnMaster> and when I enter the name of the city it just locks up
23:03:12 <Judofyr> what you write there doesn't matter :P
23:03:44 <AnMaster> Judofyr, oh and well METAR tell me lot more
23:03:52 <AnMaster> ESOE 202150Z AUTO 13010KT 9999 SCT052 M02/M06 Q0991
23:04:21 <oklopol> YES JUDOFYR YOU SUCK STOP DOING WHAT YOU'RE DOING AND LET THE PROS DO IT LOL
23:04:23 <AnMaster> like wind, dewpoint, visibility, sky conditions, pressure
23:04:56 <Judofyr> I have access to some more variables, but I don't know if I got it for the whole world :P
23:05:10 <Judofyr> it works very well with Norway
23:05:43 <Judofyr> not in the mashup, but the raw-data I receive
23:05:55 <AnMaster> Judofyr, what do you get for Örebro then?
23:06:30 <Judofyr> http://api.yr.no/weatherapi/locationforecast/1.4/?lat=LAT;lon=LON
23:06:47 <Judofyr> just replace LAT and LON with the latitude and longitude
23:07:05 <Judofyr> (should be in the URL: #Örebro,LAT,LON)
23:07:22 <Judofyr> here's the "documentation": http://api.yr.no/weatherapi/locationforecast/1.4/documentation
23:08:01 -!- Corun has joined.
23:09:55 <AnMaster> Judofyr, can't be arsed to mess with that
23:12:12 <Judofyr> 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 <Judofyr> then you'll redirect to a raw XML :)
23:13:24 <AnMaster> Judofyr, "javascript: protocol not supported"
23:14:01 <AnMaster> Judofyr, in firefox it does nothing at all instead
23:14:02 <Judofyr> why can't they all work identically :P
23:15:21 <Judofyr> AnMaster: here is the XML for Örebro: http://api.yr.no/weatherapi/locationforecast/1.4/?lat=59.273755;lon=15.2075395
23:16:31 <Judofyr> I thought I found a place where it wasn't so much, but I don't know
23:16:39 <Judofyr> it might have the same details for all places...
23:17:23 <Judofyr> maybe I should add wind (direction & speed), fog, clouds and pressure too :P
23:18:09 <Judofyr> 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 <AnMaster> Judofyr, oh and other variables
23:24:07 <Judofyr> yeah, but that's a little tricky
23:24:23 <Judofyr> I'm showing the data AT a time
23:24:49 <AnMaster> Judofyr, ok show current rain value
23:25:12 <AnMaster> Judofyr, basically show everything METAR would
23:25:27 <AnMaster> what is the ICAO code for Oslo airport?
23:26:01 <AnMaster> Judofyr, http://rafb.net/p/WhxZZk11.html
23:26:04 <Judofyr> if it's that three-letter digit
23:26:10 <AnMaster> Judofyr, sorry ICAO are 4 letter
23:26:37 <AnMaster> Judofyr, first char would be E for Northen europe, then some char for norway
23:26:45 <AnMaster> then two chars for actual airport
23:26:57 <Judofyr> http://en.wikipedia.org/wiki/Oslo_Airport%2C_Gardermoen
23:26:59 <AnMaster> ENGM 202213Z 08006KT 050V120 7000 -SN FEW010 SCT017 BKN040 M03/M04 Q0986 TEMPO 2000 SN BR VV008
23:26:59 <AnMaster> UNUSED: TEMPO 2000 SN BR VV008
23:27:32 <AnMaster> Judofyr, here is same data in a non-flying geek format: http://rafb.net/p/tafC0e26.html
23:27:53 <AnMaster> Judofyr, I'm a flightsim fan myself yeah
23:28:04 <AnMaster> but I admit I can't fully read the METAR line
23:28:31 <AnMaster> FEW010 = few clouds at 1000 ft
23:28:56 <AnMaster> M03/M04 = temperature -03 C, and dewpoint -04 C
23:29:12 <Judofyr> 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 <AnMaster> 08006KT is wind speed I think and 050V120 is wind direction
23:29:25 <Judofyr> but, more data = better :)
23:29:55 <AnMaster> I think "TEMPO" is some kind of "temporary changes excepted in soon future"
23:30:35 <AnMaster> Rel. Humidity is calculated from pressure, dew point and temperature iirc
23:31:43 <AnMaster> anything after TEMP0 I don't understand
23:32:37 <AnMaster> Judofyr, oh wait, VV008 bit is, I think, vertical visibility
23:32:43 <AnMaster> predicted in this case since it is after TEMPO
23:33:39 <AnMaster> 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 <Judofyr> AnMaster: I'll see what I can do :P Thanks for the feedback. I'm going to bed now :)
23:44:25 -!- sebbu has quit ("@+").
23:46:31 <slereah__> I think I have a bettar idea for the x.
23:46:42 <slereah__> Maybe adding the cells until it runs into a 0 cell*
23:51:50 <AnMaster> slereah__, 0-terminated cell adding?
23:52:20 <slereah__> As I always say, around stacks, never relax.
23:52:36 <AnMaster> slereah__, befunge uses stacks, it works great
23:52:45 <AnMaster> much easier than brainfuck IMO
23:54:14 <AnMaster> easier to think in than tape at least
23:54:22 <oklopol> slereah__: try programming something in a stacky language
23:54:24 <AnMaster> C is way more stack based than tape based
23:54:43 <oklopol> you can pretty much get the same thinking going as you get with functional programming
23:54:43 <AnMaster> oklopol, befunge is recommended stacky language IMO
23:54:57 <oklopol> AnMaster: well, umm, no :P
23:55:16 <oklopol> AnMaster: you cannot have nested structures or functions in the stack
23:55:21 <oklopol> so it's basically a retarded tape
23:55:48 <AnMaster> err you can have anything you want on stack
23:55:56 <AnMaster> you could have references to cells
23:56:10 <oklopol> you can have any serialized structure
23:56:22 <oklopol> that is very different when it actually comes to *programming*
23:56:25 <AnMaster> of course befunge is bloated and so on, but that was a design goal
23:56:42 <oklopol> computationally, serialization means nothing
23:56:53 <oklopol> but in a language without functions/macros, it means fucking everything.
23:57:11 <oklopol> befunge is fun, but i don't think it's the best language for getting used to stacks
23:57:14 <AnMaster> oklopol, befunge got that "RBUS"4(
23:57:34 <oklopol> hmm, what does that mean? :\
23:57:41 <AnMaster> oklopol, load SUBR fingerprint
23:58:39 <AnMaster> oklopol, very simple minded ones
23:58:49 <AnMaster> but handles a call stack, kind of
23:58:57 <AnMaster> call stack is mixed with normal stack of course
23:59:10 <oklopol> slereah__: i'd recommend false
23:59:22 <AnMaster> oklopol, oh and don't forget { and }
23:59:49 <AnMaster> slereah__, most esoteric languages are
00:00:09 <oklopol> slereah__: obfuscation is something you do to code, you don't usually call languages that
00:00:21 <oklopol> but false does nested functions, and suchamathing.
00:00:36 <oklopol> i have no idea what you mean by obfuscation here
00:00:54 <slereah__> I'll just read up False on the wiki
00:00:58 <oklopol> that it looks like line noise? ofc it does, if you want it to
00:01:10 <oklopol> i'll have to read too, ages since i did
00:01:16 -!- GreaseMonkey has joined.
00:01:20 <AnMaster> <oklopol> slereah__: obfuscation is something you do to code, you don't usually call languages that
00:01:50 <AnMaster> <oklopol> that it looks like line noise? ofc it does, if you want it to <-- oh we are talking about perl?
00:01:54 <oklopol> malbolge might be an obfuscated language
00:02:04 <oklopol> perl has an entry in esolang wiki, i think :)
00:02:26 <slereah__> Although the follow up has not arrived!
00:02:34 <SimonRC> Is there a good one for J or K?
00:03:23 <slereah__> Making substitution rules in Schönfinkel's combinator is hard.
00:03:47 <slereah__> It seems it's hard to replace variables when there aren't variables anymore :o
00:05:05 <lament> heh, what is that perl program? It just prints 30.
00:06:16 <lament> i don't know if it works or not, but it prints 30
00:06:35 <lament> plenty of stuff which prints 30 doesn't work.
00:07:18 <slereah__> Does Linux have a Perl interpreter?
00:07:34 <slereah__> I just typed that in the console shell, and it's doing nothing :o
00:08:14 <slereah__> slereah@Vixem:~$ perl -wlne'END{print$n}eof&&$n++;/<title>([^<]+)/i&&$n--' *
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: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: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: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:24:42 <oerjan> hm no, still incomprehensible in proper unicode
00:25:37 <oerjan> lament: sounds like Erdos's big 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:20 <oklopol> this is why we always simultaneously copyright the way in which to interpret the number
00:32:03 <oklopol> you can have an infinite number of numbers representing a certain book
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: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: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: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:58 <oklopol> i should make something fun too
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:45:14 <vixey`> http://paste.lisp.org/display/57253,6/raw
00:45:47 * vixey` failed at coding a WAM a couple times.. :(
00:48:00 <vixey`> that's the typical VM people compile Prolog, the first Prolog compiler was VAM based
00:48:08 <vixey`> VAM is a vastly different beast
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:34 <AnMaster> vixey`, there is one for ncurses
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: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:35:11 -!- timotiis has quit ("leaving").
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: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: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: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: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:40:17 -!- Corun has quit ("This computer has gone to sleep").
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:49:15 <Judofyr> you asks for data -> server fetches from api.yr.no -> server sends them to you -> you receive them
14:49:32 <oklopol> Judofyr: the speech bubble goes under the "weather everywhere" title
14:49:55 <oklopol> not that nice for us scandinavians
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: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: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: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: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: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: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: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: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: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: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: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: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:33 <Hiato> thus, we can assign a10 to 65 through the following
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: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: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: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: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: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: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: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: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 <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: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:38 <ais523> because #pragma can do anything as long as the implementation documents it
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: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: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:38:38 <ais523> ehird was talking about it a lot, but I'm not sure whether they used it
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: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: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: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: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: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:44 -!- thutubot has quit (Remote closed the connection).
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: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: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: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:15:09 <ais523> recursive regexps need a proper sort of replace ability
20:15:57 <oklopol> recursive here means you can do x = (.*); y = x|a x c? and such?
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: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: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: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: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 <ais523> whereas \1 means the text matched by group 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:50 <ais523> I'm not entirely sure what happens if you put \1 inside group 1 itslef
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:25:02 <ais523> it's equivalent to (|<(|<$2>$2)>(|<$3>$3))
20:25:34 <ais523> now, one of Cyclexa's features is that it's possible to match antitext
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:48 <oklopol> can you do something like "don't match this at all"
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: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: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: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: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: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: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: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: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 <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:42:26 <oklopol> In some cases, a single Cyclexa expression can completely
20:42:26 <oklopol> translate one language to another, although this is unusual.
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:16 <oklopol> that doesn't mean you can do any translation, necessarily
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: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: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: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: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:18 <ais523> that's basically a monad that you've defined there
20:48:27 <ais523> just with an explicit monad chain
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 <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: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: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!
21:00:17 <oklopol> i should make a turing-complete Tree using a new construct called "seed"
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: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: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:56 <oklopol> errrrrrrr i mean, how that *program* works
21:05:01 <oklopol> http://esoteric.voxelperfect.net/wiki/Tree
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:33:41 -!- boily has joined.
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 <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: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: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:22 <ais523> oklopol: what a pointless task
21:50:58 <ais523> oh, and if adding to the acccumulator gave a value above 4294967295, it saturated at that value
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:22 -!- boily has quit ("WeeChat 0.2.6").
21:59:50 -!- Tritonio_ has joined.
22:16:32 -!- oerjan has joined.
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:19:14 <ais523> I can't think of any sensible way to write an IRC client without the ability to select()
22:19:34 <ais523> there's a method involving three processes and two usernames, but it isn't sensible
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: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: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: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: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:53 <AnMaster> envbot is very advanced, and has the potential of getting to the same level as, say, supybot
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:35:07 <AnMaster> err, wait that just does one fd
22:35:29 <ais523> polling isn't really much use if you don't have the syscall for that either
22:37:44 <AnMaster> ais523, what about doing async IO?
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: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: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: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:32 <AnMaster> developed by linux kernel people originally
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:22 <oerjan> but it was the wrong case anyhow
22:53:35 <oklopol> AnMalster sounds like "an molester"
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: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:43 <oerjan> nah, none of them have the right black metal look
22:58:59 * AnMaster someone left two dots here, they look like they would fit you oerjan
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: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:02:29 <oklopol> i would gladly fund phisters
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: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:41 <Judofyr> oklopol: I'm very sorry, but I can't make the header go under the box :(
23:06:51 <ais523> oklopol: you'll have to change your nick to oklorofl some time if you continue reasoning like that
23:07:19 <Judofyr> ais523: http://yr.judofyr.net
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:10:21 <oklopol> they said "hi", what a nice channel :)))
23:10:40 <oerjan> oklopol: there is this tv guy in norway who added "Vrsgod 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: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:13:47 <oerjan> yeah i think there is some limit on how often you can change your name
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: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:22 * marshmallows wants to merge all the procedural channels in one.. all the functional into one..
23:16:08 <oklopol> #haskell is quite different from #scheme...
23:16:24 <ais523> and likewise C++ is quite different from Java
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: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: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:37 <oklopol> the one that could actually check its own halting if implemented perfectly?
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:44 <oklopol> define constraints in terms of other constraints
23:28:50 <oklopol> i guess would be more appropriate
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: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:34 <oklopol> i guess you can just make tree constraints and use the parse trees of algebraic expressions
23:32:36 * ais523 tries to remember what MAXIMA is
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:59 <ais523> that's easy enough to deduce without that rule using completing-the-square
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: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:18 <ais523> look at the list of esolangs I've created, for instance, or that any of the regulars here have created
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: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: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:39:01 <oklopol> in thue, the way i program, is basically to simulate something like a a turing machine
23:39:23 * Slereah never had the courage to read up Thue
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:40:04 <oklopol> hmm... weird kolmogorov thing no one understands, are there esolangs based on it?
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:34 <ais523> there are langs like Flip, BackFlip, and Black
23:41:13 <Quendus> ok, that should be enough to distract me from matrices :>
23:41:20 <Slereah> Like the dysfunctional languages :D
23:42:02 <oklopol> no one mentioned stack based langs?
23:42:24 <oklopol> also destructor-based languages, they are a bit hit
23:42:30 <ais523> well, I mentioned Underload
23:42:43 <oerjan> well yeah if they weren't just vaporware i guess :)
23:42:50 <ais523> there's also Sceql, a queue-based lang
23:42:55 <oklopol> then there's nopular programming
23:43:09 <oklopol> where no program does absolutely anything.
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: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: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: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: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: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: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:52:43 <Slereah> A variation of the one the tag system is based on.
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: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:57:04 <oklopol> fun game for everyone except the poor bastard who happens to be 'it'
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: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:52 -!- ais523 has quit ("bye!").
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:05:07 <oklopol> perhaps that should've been clear
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: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:10:54 <oklopol> 11131221133112132113212221
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:49 <oklopol> that's so trivial algorithmically it shouldn't take time at all
00:13:23 <oklopol> probably better not to time me this time :)
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: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: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:33 <oerjan> oh you meant the haskell?
00:18:48 <oklopol> but marshmallows kinda beat you to it with a cooler solution
00:19:10 <oklopol> or not, was just just for my lambda?
00:19:40 <oklopol> because i don't think that's correct
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:24 <oklopol> was doing my oklotalks very intensely
00:22:26 <oerjan> that part actually is slightly related to my PhD
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: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: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: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: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:31:22 <oerjan> actually there probably is some simplification going on, since it doesn't have degree 92...
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: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: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: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: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:18 <Slereah> Axiom of choice -> axiom of choice
00:37:26 <Slereah> Then axiom of choice is true
00:37:45 * oerjan puts a big F on Slereah's logic exam
00:38:29 * oerjan hides the F under his bed
00:39:18 <oklopol> oerjan: or just give it to me
00:39:29 <oerjan> but you already got an 'l'
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: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:11 <oklopol> anyway, i actually would like the f.
00:42:30 -!- oklopol has changed nick to oklofok.
00:42:47 <oklofok> funny, i actually need to pee now.
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: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: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:58 <oerjan> we present: the ERWIN language
00:55:11 <oerjan> (shades of Irregular Webcomic, and Schrodinger)
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: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?
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:04:10 <olsner> I CAN HAS CAPSLOCK TOO?
01:04:36 <oklofok> olsner: i tend to comment my own speech quite often.
01:05:23 <oklofok> i rarely have irl conversations
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:08:13 <oklofok> doesn't the concept of excrete also include poo?
01:08:19 <olsner> excrete != excrement, I hope
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:09:18 <oklofok> i was talking about excrement, isn't that what do do s
01:10:07 <oklofok> der lehrer hat gesagt das, dass das "dass, das", das das kind gesagt hast, recht ist
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: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: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 <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: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: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:30 <oklofok> "i wish... it's Whitespace!"
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:17:26 <oklofok> marshmallows: did it get inside you?
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:18:00 <oerjan> oklofok: only dog years though
01:18:03 <oklofok> i've never believed in traumas
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:22:26 <olsner> * oklofok regresses to an 'it'
01:23:23 <oklofok> i used to date this chick who called herself that, it became something of a pet name
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:24:12 * oerjan somehow doubts it will become a pet name though
01:24:46 <olsner> implicit quoting, heh, perl does that
01:24:49 <oklofok> actually she used both "i" and "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: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:27:04 <olsner> finland has a president
01:27:12 <oklofok> (president does really nothing here)
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:29:36 <oklofok> i'm fairly separated from the society, except for a few friends
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: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:36 <olsner> and the PHB actually comes of as having a clue
01:34:21 <oklofok> we are clearly not wanted here, o-guys, #o-club (LNFAJ)
01:34:46 <oklofok> link not for actually joining, my new
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: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: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: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:39:17 <Slereah> But written in a usual way, i mean
01:39:35 <Slereah> Unlike the bugs that Penrose uses
01:39:44 <SimonRC> except they are higher-dimensional matrices
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: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:54:29 <Slereah> Unlike the nancies in social science, people can't even begin to guess at all those symbols!
01:57:13 <lament> haskell's type system IS turing-complete after all. I didn't realize.
01:57:45 <lament> they're discussing this in #haskell. GHC extensions are turing-complete.
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: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: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: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
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: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:07:33 <olsner> wow, I only had to read a few paragraphs more to get to the really exciting part
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:14:35 <olsner> well, /me goes to sleep
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: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> #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:01:21 -!- marshmallows has left (?).
19:01:27 -!- marshmallows has joined.
19:04:56 <ehird> but that is bizzare
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:14:04 <marshmallows> but #declarative #procedural #functional .... all empty
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: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:29:01 <lament> oz seems interesting but dead
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:41 <slereah_> Brainfuck's ESO standard was 2008
19:32:51 <marshmallows> If I drink enough coffee will I have a good idea
19:33:23 <ehird> lament: urban m?ller never released a brainfuck distro post 93
19:33:35 -!- shinkuzin has joined.
19:34:07 <slereah_> Program the Andrei Machine 9000
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:59:02 -!- Judofyr has joined.
23:47:18 -!- BMeph has quit (Connection timed out).
00:08:02 <marshmallows> trying to come up with an idea........................................
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: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: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:41 <oklofok> post-composes a lambda expression
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: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: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:15 <ehird> note that it will try every amb in scope
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: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 <marshmallows> I wrote a (stream based) Prolog in scheme the other day
01:25:14 * ehird writes amb with it
01:26:04 <ehird> marshmallows: no, using a typedef
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:27:00 <ehird> #define amb(...) _amb(amb_dummy, __VA_ARGS__)
01:27:00 -!- timotiis has quit ("leaving").
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:10 <ehird> first arg == arg count
01:29:06 <ehird> marshmallows: but you're right
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: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:18 <ehird> marshmallows: that can't jump across stack frames.
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: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:40 <ehird> or make them provide a procedure to call on malloc fail
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: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> You SUCK! Go to HELL!
01:53:35 <ehird> marshmallows: take a look at my code?
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:38 <ehird> cc amb.c cont.c -o amb
01:57:09 <ehird> no idea why that's happening
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:48 <ehird> still happens though
01:59:45 <ehird> it's gcont that's the problem
01:59:49 <ehird> gcont is sometimes NULL
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:01:07 <ehird> marshmallows: most of that shizz is from the article
02:01:09 <ehird> i just cleaned up the code
02:02:29 <ehird> marshmallows: the stack grows downwards
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:10:07 <ehird> marshmallows: google it
02:10:14 <ehird> basically it's a function that can return multiple times
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: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 <ehird> marshmallows: interestingly when i make his integer(m,n) function just integer() and unbounded (from 0) the factor program crashes
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: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: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:57 <ehird> marshmallows: no. name clashes.
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: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: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: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: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: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: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: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: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: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.
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:44 <AnMaster> from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)".
02:01:02 -!- GreaseMonkey has joined.
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: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: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: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: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: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:44 <oerjan> make up your mind, function or pointer? :D
18:31:32 <asiekierka> I was thinking of an esoteric language that uses only 2 commands:
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: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: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: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:34:16 <asiekierka> It will be created exclusively for the GameBoy Advance
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:31 <asiekierka> i'll make my language have 3 commands, "long", "ding" and
18:37:07 <Slereah> It should output this : 8===D
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:26 <AnMaster> lament, their bots are annoying, often several at once
18:58:13 <asiekierka> which is the best esoteric language with a small amount of commands?
18:59:36 <marshmallows> not really esoteric but 'lambda' is pretty good
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: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: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: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: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:43 <oklofok> i mean, quantitively popular
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:12:53 <olsner> *but*, is there a monad tutorial in befunge?
19:13:07 <Slereah> Monads don't exist and never will!
19:15:31 <oklofok> AnMaster: you and Deewiant talk about befunge 24/7, don't try to deny that
19:16:11 <AnMaster> Slereah, yes rube looks interesting
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:19 <oklofok> perhaps they deserve a languages based on them
19:18:49 -!- timotiis_ has joined.
19:19:19 <olsner> permutative programming?
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:21:23 <olsner> maybe the program permutes after each step?
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.
00:15:34 -!- peterecus has joined.
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: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: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: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: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:53 <adu> and in Haskell (x) always means "sections" but 'x' could mean move x forward before evaluation
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:23:18 <marshmallows> sub perl { and $php; have =~ s/good/quoting/; facilities() };
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:32 <adu> well its multi-line
05:25:49 <adu> 0 0 1 ;; 1 0 0
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: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:34 <adu> never used it, only been reading the wiki
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:31:37 <adu> lament: are you related to DDC?
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: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: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:56 <lament> let(, let[, let{, lambda and define
05:39:01 <adu> (.) (:) () [] {}
05:39:14 <adu> everything else is a function
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: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: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:50 <adu> I'm aware of typeable
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 <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: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: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.
13:09:14 <asiekierka> what about an esoteric language "Penper"?
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: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: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: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: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:33 <vixey> Curry seems no better than Prolog with Haskell syntax
21:29:56 <oklofok> they say it's almost a superset of haskell though.
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.
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).
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:20:11 <oklofok> is it DON'T READ THIS THING I PASTED IT WILL BE A WASTE OF TIME cry?
01:24:01 <oklofok> i shall read i then, after my sleepz
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:19:11 -!- GreaseMonkey has joined.
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)).
09:01:38 -!- adu has quit ("Computer went to sleep").
09:44:21 -!- olsner has quit ("Leaving").
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:53:10 -!- vixey` has quit (Read error: 104 (Connection reset by peer)).
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: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: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: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:35 <olsner> eh, so you said at the same time
21:28:59 <slereah_> The problem is that the meaning of a string depends on what's before it.
21:33:21 <oklopol> isn't jot's notation just the unlambda notation
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:45 <oklopol> i was assuming it's the combinator from iota, but here just represented with binary
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
23:23:10 -!- RedDak has quit (Remote closed the connection).
23:28:03 -!- jix has quit ("CommandQ").
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:26:37 -!- timotiis has quit ("leaving").
00:46:00 * slereah_ tries to whip up a Jot interpreter.
00:53:21 <slereah_> I can get rid of most of the checking in Lazy Bird to build it
01:36:56 <slereah_> the advertised "non-terminating program" terminates.
01:40:25 <slereah_> Wait, is 100 actually supposed to be i
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: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: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: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:55:28 -!- Tritonio_ has joined.
15:06:57 <AnMaster> Deewiant, yes work is slow on cfunge atm
15:07:33 <Deewiant> you worried that I'm secretly rewriting CCBI in Fortran to speed it up? ;-P
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: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:10:18 <AnMaster> I think it was installed by maxima
15:11:25 <Deewiant> might be debugging stuff or something
15:12:31 <Deewiant> that's the program it compiles by default
15:13:45 <AnMaster> *** - (NOT "unbound variable") must evaluate to a non-NIL value.
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: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: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:17:15 <Deewiant> of course it is, it's auto-generated from a much higher level language :-)
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:21:06 <AnMaster> it does a lot of wrapping *looks at code*?
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:28:14 <AnMaster> Deewiant, how long does CCBI take?
15:29:32 <Deewiant> about 9.7 seconds on windows here
15:30:14 <AnMaster> cfunge does take about 2 seconds on it :)
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: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:23 <Deewiant> which, in itself, suggests to me that the result will be complicated, let alone in befunge :-P
15:36:24 <AnMaster> yeah befunge doesn't fit for functional programming
15:38:02 <AnMaster> for example it doesn't use a-f
15:44:52 <SimonRC> I think more inlining would help cut down the x usage
15:48:01 <AnMaster> SimonRC, x isn't such a large problem
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:39 <SimonRC> you could partition space into 32*32 blocks
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: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: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:15 <okopol> oklotalk's continuation system == the J operator xD
16:09:25 <okopol> okay, i've invented another old invention
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: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:14 <AnMaster> SimonRC, and it is possible even without threads
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:47 <AnMaster> <SimonRC> with threads, it is possible for an IP to end up trying to traverse a completely empty line
16:13:59 <AnMaster> logically it should be an infinite loop
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:16:27 <SimonRC> ah, I just remembered that you can wrap to get the last few instructions to die
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:42 <slereah__> Are you a Space Marine or a Mario brother?
17:42:54 <AnMaster> slereah__, what is a space marine?
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:45:04 <AnMaster> "nondeterministically yields the one" <-- the one what?
17:45:12 <AnMaster> marshmallows, I got no clue what it is about
17:46:13 <slereah__> And we all know what happened when they tried to make a movie out of it!
17:46:47 <slereah__> Well, not succeeded, but the movie did came out
17:47:05 <slereah__> http://www.gamesetwatch.com/mariomovie2.jpg
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: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:39 <ehird> int foo = amb(1,2,3); if (foo < 2) { amb(); }
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:20 <ehird> marshmallows: your code free()s an argument, that's bad style
17:50:29 <ehird> AnMaster: well, foo is not 1
17:50:47 <ehird> basically, amb() means 'one of your previous amb()s were wrong, pick another'
17:50:57 <marshmallows> my code is wrong, thanks for pointing that out
17:51:07 <ehird> marshmallows: my pasted one was a LOT simpler..
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 <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:30 <ehird> AnMaster: it's a theoretical construct.
17:52:42 <ehird> not useful in practice, really, though i think you can implement prolog with just a few more things
17:52:55 <ehird> AnMaster: ambigious
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: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: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: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: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:08:25 <ehird> libstacksmash is a much nicer name than libcallstack
18:08:30 <ehird> libcstack might be more correct
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: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: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: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: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: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).
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: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
07:12:09 -!- codechAos has quit (Client Quit).
07:19:59 -!- poiuy_qwert has quit.
07:36:12 <adu> hi marshmallows
07:37:07 <adu> how are you
07:37:46 <adu> marshmallows: are you an obscurantist?
07:38:34 <adu> http://www.merriam-webster.com/dictionary/obscurantism
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: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: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: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)).
09:03:41 -!- adu has quit (Remote closed the connection).
09:24:29 -!- GreaseMonkey has quit ("im tierd").
10:32:40 <AnMaster> is there any prolog *compiler* btw?
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: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: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:35 <lament> and will probably happen eventually
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:42:01 <ehird> if it's shorter-than-description you're after
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:25 <ehird> I ought to write something like that
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: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:18 <lament> sisc just seems... clean
20:26:25 <Slereah> Serious instruction set? :o
20:26:56 <ehird> Second Interpreter of Scheme Code
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:23 <marshmallows> I didn't bother to do it but it seemed useful earlier
21:23:31 <ehird> marshmallows: Improving it now
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: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:47 <ehird> i don't need \n after the comment line
21:29:24 <ehird> /* will always fail in shell?
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: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: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: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: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: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: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> 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
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.
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:39 <ehird> i'm working on an embedding in scheme now
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:29 <marshmallows> ehirid: Have you seen Reasoned Schemer by the way?
00:22:09 <ehird> read little schemer though
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:26:26 -!- bsmntbombdood has quit ("leaving").
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: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: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> (~ (mortal X) (human X))
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:39 <ehird> (mortal 'socrates) => (), #t actually
00:30:52 <ehird> (mortal 'X) => (socrates john), #t
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:15 <ehird> i.e. the multiple X thing is just an artifact of the repl
00:33:28 <ehird> marshmallows: Isn't that just:
00:33:36 <ehird> (mortal 'X) (fail)
00:34:55 <ehird> marshmallows: well, i still need a truth value, surely
00:35:07 <ehird> ((X . socrates)), #t, #<procedure redo>
00:36:20 <ehird> marshmallows: well, the repl
00:36:24 <ehird> it says 'yes' or 'no'
00:36:40 <ehird> thank you, swi prolog.
00:36:44 <ehird> it would probably give:
00:38:37 <ehird> marshmallows: I meant in your return desuture
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:44 <ehird> (human 'ehird) ;=> ?
00:42:49 <lament> heh, somebody was recently asking in scheme about some algorithm he had, where everything was ugly and optimized
00:43:05 <ehird> marshmallows: sounds like CL
00:43:24 <ehird> lament: i can't wait for scheme with loads of !x and #a#
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:55 <ehird> Scheme: Now just like Haskell, but with a pretty lame type system! It's about 30% fast, too.
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:30 <lament> i think vectors are horrendously ugly, at least if you actually use them.
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:19 <ehird> marshmallows: Since your thing is a cons, not a list
00:46:35 <ehird> Well, you don't haev that.
00:46:39 <ehird> You have (list . func)
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: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:37 <ehird> marshmallows: and aha, but what you haev there is:
00:49:45 <ehird> face it, you don't have a list
00:49:49 <ehird> #f shoudl be your termination
00:50:12 <ehird> and () is the empty LIST
00:50:15 <ehird> not the empty STREAM
00:51:05 <marshmallows> <stream(a)> ::= (a . <stream(a)>) | #f -- this makes no sense!
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: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: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: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:50 <ehird> ;; backtracks : (continuation)
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: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 <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: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: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: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: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:08:20 <ehird> (define (amb . args)
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:28 <ehird> would that really be nicer with scattered !s?
01:08:51 -!- Deformative has joined.
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: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:43 <marshmallows> (undefine call/cc call-with-current-continuation)
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:14:32 <ehird> marshmallows: dunno
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: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: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: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: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: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:50 <ehird> Do you want commands at the REPL too?
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: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:50 <ehird> marshmallows: (~ ...) is my defining
01:25:58 <ehird> don't use an object system
01:26:02 <ehird> Chicken has really nice ones
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:27:05 <ehird> marshmallows: No.. it uses its internal evaluation engine
01:27:19 <ehird> (~ (mortal X) (human X))
01:27:23 <ehird> that wouldn't work with yours
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:24 <ehird> which does fold over the body
01:29:32 <ehird> marshmallows: what is 'no' in scheme
01:29:39 <ehird> I mean actually (human 'ehird)
01:29:53 <ehird> (mortal 'X) ;=> (((X . socrates)) . #<redo>)
01:30:06 <ehird> marshmallows: You quoted that mortal example before.
01:30:12 <ehird> The human one is supposedly similar.
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:34:45 <ehird> marshmallows: also, mine will support definition at the prompt
01:35:02 <marshmallows> > (prove (consult "test.spl") ((make-term-converter) '(human (ehird))))
01:36:06 <marshmallows> do you want my entire code to look at ? (353 lines)
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: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:33 <ehird> cut just means 'no backtracking before me, beyond this point'
01:47:43 <ehird> (define (cut) (set! backtracks '())
01:48:37 <ehird> marshmallows: right?
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:59 <ehird> marshmallows: it's amb's cut
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:55:21 <ehird> my question was simple, an implementation one
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: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:51 <marshmallows> It's very interesting how Prolog handles binding actually
02:01:44 <Slereah> Is there a tarpit based on logical languages?
02:01:54 <Slereah> Like using the Schönfinkel stroke.
02:03:49 <ehird> marshmallows: what is []
02:03:53 <Slereah> In PN, |x ab = for allx (a | b)
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: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: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:56:25 -!- marshmallows has quit ("Leaving").
10:57:57 <AnMaster> Deewiant, can't test as I fixed my D now
10:59:31 <GregorR> It was a P, had to stretch and re-block the curve.
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: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:25 <AnMaster> Deewiant, what does auto does in D?
11:20:54 <AnMaster> áa=BAD: V doesn't move correctly
11:20:54 <AnMaster> áa=GOOD: overlapping copy with C works
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: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:42 <AnMaster> shouldn't those ^ and v be the other way around?
11:36:19 <AnMaster> Deewiant, any idea what cause those áa= btw?
11:38:16 <AnMaster> point is, I made it just call the function used for normal |
11:38:57 <AnMaster> sound like a bug elsewhere as the same code is used in both cases
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:22 <Deewiant> looking at the code for testing T
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:40 <AnMaster> I guess mycology didn't like that I did the simple ones first, instead of "in order of testing"
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: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: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:02:25 <Deewiant> AnMaster: hg clone http://tar.us.to:8000/
12:02:44 <AnMaster> destination directory: tar.us.to:8000
12:02:58 <AnMaster> Deewiant, seems like nothing happens?
12:04:18 <Deewiant> I think the hostname doesn't work, I only just updated DNS :-)
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:06:04 <Deewiant> now you should have a new mycology there, see if that works
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 000p01-00W goes through
12:06:55 <AnMaster> somehow, I don't think that count as GOOD?
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:27 <AnMaster> now that is a reason why I selected bzr :)
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:24:07 -!- okopol has quit (Read error: 113 (No route to host)).
12:59:50 <AnMaster> GOOD:GOOD: 000p000W goes seog W000p000 :DOOG 000p000W goes through
12:59:50 <AnMaster> ³?@BAD 000p01-00W goes through
12:59:58 <AnMaster> all but W is now complete on TOYS
13:00:29 <AnMaster> doing nothing should be quite basic thing shouldn't it?
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: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:52 * AnMaster wonders why it print some control codes there
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:41:42 <AnMaster> Deewiant, http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf is the pdf version, it is just a draft
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: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: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: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:31 <Deewiant> and if/when they differ go back to see where the differing value(s) came from
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: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: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: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:58 <Deewiant> because if you don't need it it's pointless
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: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:13:08 <Deewiant> in general, in that situation, the user will do whatever they're asked anyway
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: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: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:27 <Deewiant> or just TRACETOGGLE or something
15:16:31 <AnMaster> or maybe, as I indented other ways of tracing
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: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:48 <AnMaster> one trace each time k runs the instruction?
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: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: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:09 <Deewiant> and the debugger can draw that
15:27:25 <Deewiant> it shouldn't be the way that interpreter says "executed p" and then debugger executes p locally
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:50 <Deewiant> and then debugger can draw a at (0,0)
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:33 <Deewiant> how does this position stuff work
15:29:50 <Deewiant> "this is the position to monitor"
15:30:16 <AnMaster> Deewiant, yes? not sure I got your question?
15:31:15 <AnMaster> but range may indeed be a good idea I guess
15:31:30 <Deewiant> so you can say "anything with y-coordinate > 100"
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:35 <Deewiant> well, even internally to the machine
15:32:42 <Deewiant> the interpreter will probably go at least a few instructions forward
15:33:00 <AnMaster> in even the best case at least one instruction forward the way I plan to implement it
15:33:34 <AnMaster> moved well, that trace would show
15:34:35 * AnMaster is copying this down into a text file
15:36:07 <Deewiant> for stack stack: push stack, pop stack, at least
15:37:09 <Deewiant> tracing or events for when stack is changed
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: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:53 <AnMaster> and then turn on the notification
15:48:09 <Deewiant> you don't necessarily need the initial state
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: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:39 <Deewiant> and then get no traffic until the interpreter's at the breakpoint.
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: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:38 <Deewiant> but isn't that rather an issue with the SSH daemon killing the connection
15:53:08 <Deewiant> but I do think it'd make more sense if it were
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: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: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: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:29 <ehird> it is kinda weird though, most raw-feeling socket stuff has a lot of bunk behind it in tcp
15:57:33 <ehird> it's really quite comfy
15:57:42 <ehird> IRC is an old dead machine
15:57:47 <ehird> ping/pong is pretty much useless
15:57:55 <AnMaster> ehird, however ssh keepalive then
15:57:56 <ehird> & annoying to have to code into stuff
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: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
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 <ehird> however, protocol-agnostic programs are... uncommon :)
16:00:32 <AnMaster> ehird, well I need this to run over two kind of sockets
16:01:46 <ehird> AnMaster: you should really give git a try
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:13 <ehird> AnMaster: presumably not recently
16:02:18 <ehird> yes, until recently, it was painful
16:03:02 <ehird> AnMaster: a litle bit. but you obviously didn't try it very well
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: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: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: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: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: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: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: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:33 <AnMaster> last I checked it didn't handle that
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: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:59 <ehird> i've always been a mouse fan, though. it's just that a lot of apps are designed suckily for one
16:18:32 <AnMaster> I prefer working with my hand on the keyboard
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: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:56 <AnMaster> yes of course I know where I will type
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:36 <Deewiant> my fingers are where they need to be, not on some default location :-P
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:43 <ehird> i quite like textmate on os x
16:25:58 -!- marshmallows has joined.
16:26:34 <AnMaster> the problem is when finding out you used both for same file
16:26:37 <ehird> AnMaster: hmm, just tried xml'ing in kate
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: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: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: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: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: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:36:47 <ehird> change the indent settings
16:37:04 <ehird> kate has ALWAYS indented xml
16:37:06 <ehird> its a config options
16:37:18 <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:23 <ehird> change indent mode to 'c style'
16:37:30 <AnMaster> ehird, there is no such thing here
16:37:36 <ehird> AnMaster: settings
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: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:09 <AnMaster> but KDE one is actually really high quality
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: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: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: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: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: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: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:55 <ehird> so a lot of smart going to waste
16:50:09 <ehird> you can have recursive regexps and some other stuff
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: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:47 <ehird> olsner: except that those functions will be actively used in the code for: 1. efficient programs 2. OS-level code
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:29:24 <ehird> is SISC's startup unbearably slow for anyone else?
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: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:42:49 <AnMaster> Deewiant, the code in that area is very confusing
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:32 <AnMaster> it is code running through the string
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:51:50 <AnMaster> <small>well depends on how you define smalltalker</small>
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: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:20 <ehird> objc is smalltalk+c
18:04:25 <ehird> [...] = smalltalk-land!
18:04:30 <ehird> and some bits with @ and - (abc)
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: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: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: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: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:46 <AnMaster> tix=0 tid=1 x=140 y=163: f (102)
19:09:58 <AnMaster> (gdb) call StackDump(ip->stack)
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:49 <Deewiant> your y isn't working as a pick instruction correctly
19:11:06 <AnMaster> "GOOD: y acts as pick instruction if given large enough argument"
19:11:16 <Deewiant> you can't ever be sure the stack is really empty
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: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:09 <Deewiant> I'll make it check for 2 and then 0
19:12:20 <Deewiant> ideally it'd check for 2 and then empty, but that's basically impossible
19:12:49 <Deewiant> from which 2 is meant to be piciked
19:13:03 <AnMaster> ok, y as pick should not pop any item right?
19:13:19 <Deewiant> according to the spec surely it should :-P
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: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: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:26 <AnMaster> is that correct then for the case of y going pick?
19:16:48 <Deewiant> just pull the myco and test it
19:17:58 <AnMaster> Deewiant, however, should y clear stack in other cases too?
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:47 -!- poiuy_qwert has joined.
19:18:52 <AnMaster> don't seem to be like it pushed the first 1 did it?
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:22 <AnMaster> but where does it say it should clear the stack?
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:31 <AnMaster> Deewiant, what do you mean 0y doesn't work?
19:21:49 <Deewiant> it gives the wrong stack size.
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:58 <AnMaster> and is actually more useful to me to debug the interpreter itself but to debug a script it is less useful
19:24:22 <Deewiant> hmm, this may actually be a CCBI bug
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: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: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:33:04 <Deewiant> and of course Mycology as well
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: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:31 <Deewiant> and then does pop(size - oldSize);
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> StackPush(ip->stack->entries[ip->stack->top - (request - tmp->top)], ip->stack);
19:34:54 <AnMaster> request is the thing y popped of the main stack
19:35:07 <AnMaster> Deewiant, it is the top stack item yes
19:35:28 <AnMaster> Deewiant, top->size however is the actual stack size, as it doesn't realloc to smaller stack
19:35:46 <Deewiant> I don't think I expose the "actual size" myself :-)
19:36:04 <Deewiant> if size > arg, if oldSize <= size
19:36:52 -!- otesanek has joined.
19:40:07 <Deewiant> AnMaster: you might still have it wrong, though :-P
19:40:25 -!- poiuy_qwert has quit.
19:41:12 <AnMaster> BAD: y doesn't act as pick instruction if given large enough argument
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:45:49 <AnMaster> Deewiant, ok pushed fixed cfunge :)
19:46:08 <AnMaster> GOOD: 000p100W waits indefinitelyGOOGOOD: X works
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: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:33 <AnMaster> Deewiant, problem is I don't know what direction to grep for it in
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:55 <Deewiant> and if you still can't find it, use another part of the error message
19:47:59 <AnMaster> it could be upwards or downwards
19:48:07 <AnMaster> someone need to invent a fungegrep
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:55:51 <AnMaster> Deewiant, the problem is that it is concurrent
19:56:00 <AnMaster> so bloody hard to make sense of
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: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:08:15 <AnMaster> Deewiant, is it reverses and tries to execute again on next tick?
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:59 <AnMaster> or does W use something not tested before?
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:37 <AnMaster> it is where the through string is messed up I think
20:14:41 -!- oerjan has joined.
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: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: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:46 <AnMaster> I was reading on the wrong line
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> " 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: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> 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: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:22:10 <Deewiant> you don't need mycology for that other than running through it with gdb
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: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:05 <Deewiant> trust me, writing code for testing 2 threads was bad enough
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: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:26:28 <AnMaster> that means one of two files really, interpreter.c or ip.c
20:35:43 <AnMaster> just needed to set a NeedMove to false
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:39 <Deewiant> no more than 2 are alive at once
20:36:55 <AnMaster> also the new IP must be index 0 in the array
20:37:19 <AnMaster> 1) the remaining ip must now have index 0 before, the killed one index 1
20:37:34 <AnMaster> only then does the bug show up and is fixed this way
20:37:46 <AnMaster> I don't know if it will break in other cases
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: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:55:22 <AnMaster> ==16089== Conditional jump or move depends on uninitialised value(s)
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:03 <Deewiant> uh? shouldn't that conditional be entered always?
20:57:33 <ehird> sill scheme interpreter name: Isch Creme
20:58:01 <AnMaster> Deewiant, ==16254== ERROR SUMMARY: 0 errors from 0 contexts
20:58:10 <Deewiant> AnMaster: that needs more 'z', prints 3: G4O:O DG here :-)
20:58:29 <AnMaster> <Deewiant> AnMaster: that needs more 'z', prints 3: G4O:O DG here :-)
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:58 <AnMaster> Deewiant, that is what happens here
21:01:15 <AnMaster> oh wait this is a slightly different version
21:01:40 <AnMaster> Deewiant, ok, the first two splits are ok
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:12:34 <AnMaster> the upper split can be removed
21:15:20 -!- Corun has joined.
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:27 <AnMaster> 2) ip 1 just goes on doing z or whatever
21:24:03 <AnMaster> result is that suddenly we got two ip entries but array length of 3
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: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:43 <ehird> oklopol: thats O(1) space
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:37 <oklopol> what do people usually do to get rid of the recursion stack?
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: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: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: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:34:35 <olsner> I would have attempted an analysis if it wasn't written in python
23:34:45 <oklopol> what language do you want?
23:34:58 -!- Deformative has quit (Remote closed the connection).
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:37:04 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
23:37:36 <oklopol> the problem with C is, i actually need bignums.
23:37:39 <AnMaster> -std=c99 -pedantic -Wall -Wextra -Werror
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:54 <oklopol> i think the biggest problem will be to get a C compiler to work
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: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:53 <ehird> cygwin is yer friend
23:42:50 <AnMaster> olsner, don't forget the *need* for valgrind
23:43:13 <olsner> AnMaster: well, if you're on windows you can just compile, test and pray
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: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: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:24 <pikhq> (did they even use RTL then?)
23:48:25 <ehird> pikhq: if you write a backend, it will compile!
23:48:53 <AnMaster> pikhq, used in some products by Lego
23:54:46 -!- Deformati has quit (Remote closed the connection).
23:58:15 -!- Deformative has joined.
00:00:04 <ehird> so, who here is made out of chicken
00:04:56 <ehird> and I am playing with squeak
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: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:21 <AnMaster> but interpreter should still not segfault on it
01:00:27 <AnMaster> that is the thing I like to point out
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:13:48 -!- RodgerTheGreat has joined.
01:16:34 <RodgerTheGreat> I just returned from the NMU programming competition- great fun
01:17:06 <RodgerTheGreat> my team did pretty well- 4th place out of about 20 teams
01:17:33 <RodgerTheGreat> we all got T-shirts and free food, so I'll chalk it up as a win. :)
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: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:40 <ehird> RodgerTheGreat: You don't wanna know.
01:30:48 <ehird> However, I'll tell you anyway.
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:47:55 <pikhq> Getting a laptop to run Gentoo.
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:50:56 <ehird> vixey: Delphi? APL?
01:51:18 <ehird> RodgerTheGreat: Actually I was suggesting languages I expect vixey would not in fact code in.
01:51:35 <ehird> I doubt your two were in the same vein, but I agree! :)
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:20 <ehird> (And there is silence!)
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:06:25 <RodgerTheGreat> hey, it's fiction, but thought-provoking fiction nonetheless
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: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: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: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:17:07 <ehird> that was a joke, RodgerTheGreat
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: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: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:47 <ehird> vixey: except that the parrot is legitimately scary ;)
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: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: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: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
03:00:47 <ehird> RodgerTheGreat: same guy who did the faq & wrote that original story
03:04:02 <ehird> RodgerTheGreat: it references geb
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:34 <vixey> how is the nomic stuff going (if it is)?
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:22:05 <Deewiant> AnMaster: already been reported in november
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: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:42 <AnMaster> Deewiant, where is your current binary?
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:07:58 <Deewiant> doesn't do it here with y, at least
12:09:14 <Deewiant> yep, only the DMD-compiled binary does it
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:22 <Deewiant> singe GDC doesn't respect the D calling convention
12:29:17 <AnMaster> odd, maybe my hg checkout is outdated?
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:33:56 <AnMaster> hm... it seems fungus detect a difference that myco doesn't
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:41:08 <Deewiant> AnMaster: the J thing was a myco bug
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: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:24 <Deewiant> kind of like #ifdef but better
13:01:36 <AnMaster> "static if (needBegX) {" depends on from where it is called
13:01:45 <AnMaster> so that means two versions will be output?
13:09:05 <AnMaster> Deewiant, what I don't understand is the way ccbi loads the fspace module in fungus
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: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:56 <Deewiant> the display is just messed up because of the NL
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:19:52 -!- timotiis_ has changed nick to timotiis.
16:21:20 -!- wildhalcyon has joined.
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: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: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: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:23 <ehird> wildhalcyon: it depends
16:37:28 <ehird> the original BLIT has it to be pretty much immediate
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: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: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:33:04 * ais523 has been implementing INTERCAL all week
17:33:16 <ais523> hmm... I nearly typed @ical{} rather than INTERCAL then
17:33:26 <ais523> I maintain C-INTERCAL, an INTERCAL-to-C compiler
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 <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: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: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: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: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:02:22 <ais523> slereah_: what is madness?
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: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:42 <ehird> as far as the 'what if files are missing'
18:10:44 <ehird> make it check the web
18:10:48 <ais523> ehird: the dependencies don't follow a pattern
18:10:53 <ehird> no single point of failure
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:47 <ehird> grab the dependencies from the p2p
18:13:55 <ehird> just load a perl file from the web and eval()
18:13:58 <ehird> one line build system
18:14:26 <ais523> and I do not have Internet access ususally when building C-INTERCAL
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: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: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: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: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: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: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: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: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: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:21 <RodgerTheGreat> the back says "programming enrichment activity test subject"
19:06:52 <ehird> RodgerTheGreat: was there cake, and was it delicious
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: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: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:58 <Sukoshi`> I hear the MS development tools are free these days.
19:08:58 <ehird> so it'll be @remember
19:09:08 <ehird> but.. how does it know how many lines to quote?
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:14 <ehird> you swipe over the lines you want, type 'qdb.eso-std.org/submit'
19:11:17 <ais523> my mouse can't send emails by itself
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 <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:13:00 <ehird> ais523: we're like soulmates!
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:12 <ais523> and that was back for Windows 95
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:40 * ais523 used to do Windows development back sufficiently long ago that they usually targeted Windows 3.1
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 <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:23 <ehird> (call/cc (lambda (k) ;; k is a procedure. when called with X, this call/cc returns X
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: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: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: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: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:27 <ais523> the latest version is self-extending
19:28:27 <ehird> ais523: but look at that c code
19:31:54 <ehird> ais523: makecontext/setcontext may be proper continuations in c
19:32:57 -!- ihope_ has joined.
19:33:34 <ehird> char func1_stack[16384];
19:41:54 <ehird> ais523: challenge - once doing the continuations, implement prolog in it
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: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: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:59:26 -!- sekhmet has joined.
19:59:47 * ais523 is on leguin at the moment, which is in Sweden
20:12:55 <ehird> i really DO want a list of languages with continuations
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:40 <ais523> I'm actually implementing them in INTERCAL itself, just to show that it's possible
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: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: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: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: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: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: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: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:14 <ehird> then you just have to return 2 levels down
20:33:31 <ehird> ais523: what's the syntax for intercal procedure calls?
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: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: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:37:11 <ehird> while 1: show_msg('Hello, world!'); show_msg('Goodbye, world!')
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:14 <ehird> ais523: maybe there should be a string library
20:49:15 <ehird> that lets you do that
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
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:21:31 -!- ais523 has quit (""Going home"").
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:38:56 <pikhq> There may or may not be a deadline extension for Google Summer of Code applications.
21:43:25 <olsner> "may or may not"? what's the use of having that information?
21:43:48 <pikhq> It's just irritating as fuck.
21:44:03 <pikhq> The deadline, BTW, is tomorrow.
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:39:10 <wildhalcyon> http://www.osdev.org/phpBB2/viewtopic.php?t=16641&sid=fc48cb502be44b2cb268e10886963cb7
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: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: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: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: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").
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: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: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:27:34 <vixey> **which have an actual implementation
03:27:59 <oklopol> oklotalk has an implementation!
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> http://rafb.net/p/dT236x14.txt
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:40:20 <lament> your scheme is very simple :)
04:40:29 <lament> and you kinda need to parse stuff
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
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: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:51:32 <Deewiant> that's the way it has to be done
10:51:49 <Deewiant> i.e. first output "UNDEF: cFP outputs"
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:26:31 -!- jix has joined.
14:46:44 -!- ais523 has joined.
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:56:07 <AnMaster> maybe a comma before never mind would help with grammer ;)
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:15:23 <ais523> but that's not really a problem
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: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: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: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 <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: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:59 <ais523> AnMaster: you can store them in globals
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: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:27:13 <AnMaster> ais523, wait, I *may* do VLA in one place
15:27:45 <AnMaster> ais523, oh yes, but can be worked around quite easily
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: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: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: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: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:26 <AnMaster> http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf
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: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: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:26 <ais523> 1/4 of the time, on average
15:35:50 <AnMaster> ais523, not sure how you plan the integration thing?
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: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: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: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:40 <ais523> just like I had to invent some new syntax for the C to INTERCAL link
15:39:01 <ais523> besides, I could always invent some sort of specifically-fooling-Mycology loader problem
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: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: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: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:41:08 <AnMaster> though interpreter.c contains mor
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:21 <AnMaster> what is it highlightning it as
15:43:38 -!- ehird has joined.
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: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:29 <ehird> this is the lame computer
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: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: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: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:15 <ais523> I don't own a web server
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: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: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:13 <ehird> ais523: more or less
15:57:17 <ehird> it will come into conflicts ofc
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: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: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: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: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: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: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:43 <ehird> It is called the Evil Mangler.
16:00:49 <ehird> ais523: No, it's custom
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:35 <ehird> There's even GHC code which uses monads without using the Monad typeclass because it wasn't invented yet
16:01:53 <ehird> ais523: Those continuations are really concise, btw. Impressive.
16:02:03 <ehird> INTERCAL: Flexible, and concise1
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: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: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:06:11 <AnMaster> fingerprints will fail and everything will come crashing down
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:07:04 <ehird> darcs is out of the qusetion
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:38 <ehird> i think you could get it to
16:07:40 <ehird> through some posix stuffs
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: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: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:58 <ehird> AnMaster: but the generated c code won't work ..
16:10:05 <ehird> AnMaster: Uhm, he doesn't develop solely on DOS
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:29 <AnMaster> you mean, depends on endianness?
16:10:42 <ehird> darcs WILL work, probably
16:11:00 <AnMaster> is this about unreal mode hack thing?
16:11:09 <ais523> it makes I/O incredibly slow
16:11:09 <ehird> AnMaster: it should make ghc work
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:15 <AnMaster> struct { int32_t high; int32_t low; } i;
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:33 <ais523> but I'm not sure if that's a bug in go32 or NTVDM
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: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: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:54 <AnMaster> ehird, can you push to a usb memory with darcs?
16:16:04 <ehird> AnMaster: push == 'cp .darcs'
16:16:14 <ais523> I seriously doubt it would be a problem
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: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:17 <ais523> even a directory name, but that's normally hidden from the user
16:17:18 <ehird> _darcs is a directory
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:08 <ais523> marshmallows: I did already, or did you want something else?
16:20:23 <AnMaster> ais523, I only test cfunge on gentoo linux and freebsd, because that is all I got
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: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:14 <ais523> different handprint, you mean
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: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:26 <AnMaster> ais523, maybe you want to provide some hard coded specific ones in the range ASCII 127-255, unlike fingerprints
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:39 <ais523> INTERCAL uses various characters above 127 anyway
16:24:42 <ais523> at least in some character sets
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: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: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:27:22 <AnMaster> I generally do the instructions from A-Z heh
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: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: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:23 <ais523> OK, lets use printable characters for now
16:31:30 <ais523> you write an INTERCAL program, and a Befunge program
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: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:48 <ehird> try to analyze which bits don't utilize non-deterministic things
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: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: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:18 <AnMaster> Your search - "gopher considered harmful" - did not match any documents.
16:42:26 <AnMaster> therefore gopher is better than http
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:31 <ais523> AnMaster: it's normally called operand overloading
16:43:44 <ais523> AnMaster: that's operator overloading
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: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:58 <ais523> although unification in Prolog is vaguely similar
16:44:58 <ehird> -F and no -F are different
16:45:07 <ehird> <magic>echo "Hello, world!"
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:46 <ais523> AnMaster: end of a shell heredoc
16:45:47 <ehird> AnMaster: it generates:
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: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:55 <ehird> AnMaster: bash sucks, suprise
16:46:58 <ehird> zsh &co don't do that
16:47:24 <ais523> AnMaster: DOS implements pipes using tempfiles between the commands
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: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: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:30 <AnMaster> ais523, because one thing I pondered is a fingerprint for "true" concurrency
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: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: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: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:59 <AnMaster> ais523, take a look at the TOYS fingerprint
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: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: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
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: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 <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:48 <ehird> but it won't fully close
17:02:03 <ais523> ehird: I understand why 'book', just not why 'dixiecup'
17:02:21 <ehird> http://www.ideafinder.com/history/inventions/dixiecup.htm
17:02:32 <ehird> made to look like a flimsy plastic cup
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: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: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:19 <ehird> Besides, debian do stuff to their packages.
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:14:04 <ais523> ehird: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=459577 (look at the email timestamps)
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: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:59 <ehird> Gosh, patch is such an arcane format
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: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:18 <ais523> ehird: there is a man page
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:03 <ehird> that must get tedious
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: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:26 <ais523> ehird: ick doesn't accept files on stdin
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: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> 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: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 <ais523> so unless you find some way to reuse them, the whole thing will ground to a halt
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: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: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: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: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:45:03 <ehird> AnMaster: CONT fingerprint for cfunge please
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: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: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: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:47:03 <ehird> well, a continuation is a copy of that call stack
17:47:10 <ehird> and then you can resume the continuatoin
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:47 <ehird> continuations are useful besides
17:47:50 <ehird> e.g. seaside web framework
17:47:59 <ehird> ofc the Copy Whole Stack method is inefficient
17:48:01 <ehird> but easy to implement
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: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:39 <ehird> AnMaster: your C call stack
17:48:42 <ehird> copy the c call stack
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:49:01 <ehird> int *stack = &xyzzy-1;
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: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:51:02 <ehird> R -- Takes a continuation and a value off the stack, and returns to the continuation passing the value.
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:46 <ehird> if i store a continuation somewhere
17:51:49 <ehird> then i can use R as many times as i awnt
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: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: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:53 <AnMaster> ais523, though, Befunge-93 with BIGNUM would be turning complete too I think?
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:53 <ehird> a new funge98 impl
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: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:08 <Deewiant> AnMaster: I mean, I'm stubborn enough to have probably done it anyway :-P
18:00:14 <ehird> and you cannot send values back
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:53 <ais523> Deewiant: ehird means that continuations don't reset the input stream
18:00:57 <Deewiant> or are you talking about something else
18:01:11 <ehird> Deewiant: it rewinds stdout
18:01:21 <Deewiant> you mean, if there's a getchar() or putchar() somewhere
18:01:46 <ehird> but it would remove it from the screen
18:01:55 <ehird> it SHOULD rerun it
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:37 <ehird> you just defecated on my ~/
18:02:38 <Deewiant> but it would do file input and output
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: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:51 <AnMaster> ehird, what exact tar ball is it you have an issue with?
18:05:34 <AnMaster> because I can't see any tar file I made got that problem
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: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:36 <ehird> and use exit codes and stuff
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:52 <AnMaster> ~/src/cfunge/trunk is where I keep cfunge
18:15:02 <ehird> AnMaster: i create directories all the time
18:15:15 <ehird> so i thought your tarball did it
18:15:29 <AnMaster> I see, you didn't look for a "cfunge" there?
18:16:02 <ehird> ais523: you cast printf calls to void
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: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:20:05 <ehird> the $ instructions
18:20:17 <AnMaster> yeah that is why I don't use splint
18:20:28 <AnMaster> it's a good idea but not properly implemented
18:20:32 <ehird> ais523: the template c file
18:20:47 <ais523> the substitutions are done in a massive switch near the bottom of perpet.c
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: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:55 <ehird> http://golf.shinh.org/reveal.rb?nop/irori/1204644403&hs
18:23:11 <ehird> it seperates the things taht require verbosity and those that don't
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:28 <ehird> e.g. Ada and Erlang fails
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:09 <ais523> I was busy reading Perl documentation at the time, and got confused
18:24:21 <ehird> haskell lets you do patterns on the LHS apparently
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: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: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:44 <ehird> that normally takes a while
18:32:51 <ais523> ehird: the binary, alnum, symbol is mine, BTW
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:45 <ehird> even the one i used to generate
18:37:47 <ais523> ehird: even C times out for me
18:37:56 <ehird> maybe a bad example
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:39:13 <ehird> ais523: maybe storing as an array of chars would work better
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:34 <ehird> operate on an array of chars
18:40:45 <ais523> ehird: then you'd hit the memory limit
18:41:06 <ehird> then do arithmetic on that
18:41:09 <ehird> and just puts() when required
18:42:33 <AnMaster> how long is timeout on that site?
18:42:37 <ehird> AnMaster: don't ask me!!
18:43:15 <AnMaster> ehird, then it got a sucky CPU
18:43:36 <ehird> AnMaster: like 1.5 seconds
18:43:42 <ehird> and its run under limits
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: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 <ehird> writing a client-side continuation wiki will be hilarious
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: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: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 <ehird> why does that timeout for the system challenge?
18:48:51 <ehird> it works on the second
18:49:12 <ais523> ehird: timeouts depend on how many entries there are
18:49:33 <ais523> but I don't think that's the problem here
18:49:40 <ehird> i really want test scripts
18:49:44 <ehird> i'd write one in bash:
18:49:58 <ehird> and expect a number for the output
18:51:41 <ehird> http://golf.shinh.org/p.rb?Encoder+decoder I love this encoding method
18:51:47 <ehird> its just so obvious
18:52:44 <ehird> ,>,,,,,[-<->],[-]+[->,+]<[<]<[>>[.[-]>[>]<[.[-]]<[<]>]]>>[.>>]<<<[.<<] wow
18:53:02 <ehird> ais523: but yeah, underlambda continuations?
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: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: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: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: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: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:58 <SimonRC> it throws away some of the input it needs
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:56 <ehird> ais523: remember that BLIT story I linked?
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:38 <ais523> that's what /whois is for, right?
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:09:09 <ehird> did it involve parrots?
19:09:32 <SimonRC> that is mentionned here: http://en.wikipedia.org/wiki/Motif_of_harmful_sensation
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:54 <ehird> SimonRC: i know of it
19:10:06 <ehird> denshi something porygon, I believe
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: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: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: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:50 <SimonRC> with a the kid sitting 1m away
19:14:52 <ehird> SimonRC: i guess so
19:15:01 <ehird> you give too much credit to little kids
19:15:08 <SimonRC> when they are naturally epileptic
19:15:35 <lament> that logo is embarassingly bad
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: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:56 <lament> now that i look at it, it does look exactly like lisa simpson performing fellatio.
19:20:05 <lament> amazing that i haven't noticed it before
19:20:13 <SimonRC> jesus christ that is bad to look at
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: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:23:03 <ehird> i love the jump from 'The site linked to ebaumsworld' to 'anonymous did it'
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: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:27:52 <lament> it's a statue that's standing on the beach downtown
19:29:35 <ehird> ais523: is there an underlambda that works Right Now and you can write stuff in?
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: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:32:06 <AnMaster> well I just came up with a name
19:32:14 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
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:46 <ehird> ais523: that is redundant
19:34:56 <ehird> you said 'if' not 'iff'
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: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: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: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:52 <ehird> (hello)S outputs (hello)
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:30 <ais523> ehird: that's why it's a work in process
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: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: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: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:48:10 <ehird> ais523: to duplicate the continuation
19:48:16 <ehird> otherwise, once we ^^, the program becomes '^^'
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: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: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: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:17:08 <SimonRC> through lack of inspiration, I decided to re-write the team whiteboard upside-down
20:24:14 <ehird> AnMaster: april fools day
20:24:26 <AnMaster> ehird, that is several hours left
20:24:34 <ehird> its not even april 1st yet..
20:24:54 <ehird> SimonRC did it for TOMORROW
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: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:52 <olsner> april's fools would be to make your roommate *believe* you've burned all her possessions
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:31:06 -!- cherez has joined.
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: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: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:52 <olsner> kind of unfunny waste of someone's time, yeah
20:34:00 <SimonRC> I could swap people's monitors though
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:26 <ehird> claer off the desktop
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:56 <SimonRC> haven't6 got the equipment
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:24 <ehird> http://www.flickr.com/photos/w00kie/7234920/in/set-180637/
20:35:32 <ehird> that, but without the menus etc
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: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:45:39 <ehird> http://www.flickr.com/photos/w00kie/11033741/in/set-180637/
20:48:21 -!- wildhalcyon has joined.
20:48:23 <ehird> (trick: the sleeve is the only thing outside the pic)
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:30 <ehird> so it seems like there's TWO empty screens
20:55:36 <ehird> actually, wait, no
20:55:39 <ehird> one screen looks to the wall
20:55:42 <ehird> the other one sees the other screen
20:58:17 <wildhalcyon> So, ehird, I took what you said yesterday and spent some time looking at my project.
21:00:16 <wildhalcyon> No, I thought about how I might tweak it to make it more... real world applicable.
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: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:33:01 <SimonRC> I thought it might give you ideas
21:34:12 <lament> also, smalltalk IS the messiah.
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:24 <lament> the syntax is a very small part of smalltalk.
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: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: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:34 <ehird> wildhalcyon: you sound like everyone who has never 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: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:40:04 <GregorR> Smalltalk's syntax is simple and elegant.
21:40:22 <lament> heh : http://www.esug.org/whyusesmalltalktoteachoop/smalltalksyntaxonapostcard/
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:36 <ehird> Squeak renders ^ as up-arrow
21:42:46 <SimonRC> _ was originally left-arrow, to go with ^ as up-arrow
21:43:34 <ehird> byebye 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: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: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: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: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: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: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: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 <lament> because a stack is a very unnatural abstraction
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: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: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: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:27 <ehird> 'Shuffle word and definition cookbook'
22:20:29 <ehird> that's 'reference'
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: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: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:28 <ehird> because that's not typical code
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:24:13 <ehird> lament: Slava Pestov is certainly not japanese..
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: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: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: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: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: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:38:47 <ehird> lament: neither does leaving again
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:35:00 -!- ihope has joined.
23:48:32 -!- timotiis has quit ("leaving").
23:54:58 -!- wildhalcyon has joined.